在BB10 Cascades Beta2上,我们可以通过qDebug()方法在c++代码中将调试信息输出到控制台,在QML中则可以通过console.log()方法将调试信息发送到控制台。
不过,在BB10 Cascades Beta3上,我们会发现qDebug()信息和console.log()信息都不再出现在控制台上,给调试带来很大麻烦。
发生以上问题的原因是在BB10 Cascades Beta3上qDebug()和console.log()所输出的信息都被发送给了slog2工具,需要通过slog2工具才能查看这些信息。
具体方法如下:
1 在BB10 Cascades环境中, 选择“ windows ->show View -> other”
2 找到并选择“ Target Navigator “视图
3 在新打开的“Target Navigator” 视图中找到你调试的设备,点击右键,选择“Launch SSH session”
4 在新出现的“Terminal”视图中可以看见开发环境连接到了调试设备的控制台上,通过 slog2info 命令可以查看调试消息。
5. 如果希望调试消息动态更新,就是用slog2info -w 命令
首先看一个示例XML文件: <?xml version="1.0"?> <project default="init" name="Project"> <description> A simple project introducing the use of descriptive tags in Ant build files. </description> <!-- XML comments can also be used --> <target name="init" description="Initialize Argon database"> <!-- perform initialization steps here --> </target> </project>
可以看出,XML 注释可以使用在整个生成文件中以提高清晰性。而且,Ant 定义了它自己的description 元素和 description 属性,它们可用于提供更结构化的注释。
Ant属性:
Ant 中的属性类似编程语言中的变量,它们都具有名称和值。然而与通常的变量不同,一经设置,Ant 中的属性就不可更改;它们是不可变的,就像 Java 语言中的 String 对象。 这起初看来似乎很有限制性,但这样是为了遵循 Ant 的简单原则: 毕竟,它是一个生成工具,而不是一种编程语言。如果尝试给某个现有属性赋予一个新的值,这不会被看作是一个错误,但是该属性仍然会保留其现有值
定义与使用属性:
<property name="metal“ value="beryllium"/>
为了在生成文件的其他部分引用这个属性,使用以下语法:
${metal}
例如,为了使用这样一个值,它是另一个属性的值的组成部分,将标签写成下面这样
<property name="metal-database" value="${metal}.db"/>
location属性:
属性经常用于引用文件系统上的文件或目录,但是对于使用不同路径分隔符(例如,/ 与 \)的平台来说,这样可能在跨越不同平台时导致问题。Ant 的 location 属性专门设计用于以平台无关的方式包含文件系统路径。像下面这样使用 location 来代替value:
<property name="database-file" location="archive/databases/${metal}.db"/>
用于 location 属性的路径分隔字符将被转换为当前平台的正确格式;而且由于文件名是相对的,它被认为是相对于项目的基目录。我们同样可以容易地写为下面这样:
<property name="database-file" location="archive\databases\${metal}.db"/>
这个标签的两个版本都会在不同的平台具有相同的行为.
定义依赖关系:
生成一个项目一般需要许多步骤 —— 例如首先要编译源代码,然后将它打包为 Java 归档文件
(Java Archive File,JAR)。这其中许多步骤都具有清楚定义的顺序 —— 例如,在编译器从源代码生成类文件之前,您不能打包类文件。与顺序指定 target 所不同的是,Ant 采用一种更灵活的方法来定义 依赖关系 。每个目标的定义依据的是在它能够执行之前必须完成的其他所有目标。这是使用 target 元素的 depends 属性来实现的
<target name="init"/>
<target name="preprocess" depends="init"/>
<target name="compile" depends="init,preprocess"/>
<target name="package" depends="compile"/>
这种方法允许您执行项目任何阶段的生成过程;Ant 会首先执行已定义的先决阶段。在上面的例子中,如果让 Ant 完成 compile 步骤,它将判断出需要首先执行 init 和preprocess 这两个目标。init 目标不依赖其他任何目标,因此它将首先被执行。然后 Ant 检查 preprocesstarget,发现它依赖 init 目标;由于已经执行了后者,Ant 不会再次执行它,因而开始执行 preprocess 目标。最后可以执行 compile 任务本身。
注意目标出现在生成文件中的顺序并不重要:执行顺序是由depends 属性唯一确定的。
封装格式和编码的关系,就是和酒与酒瓶的关系差不多,而播放器就是开酒器。为了可以喝更好的酒,最好先了解酒是什么酒,酒瓶是什么酒瓶,怎么使用开酒器开酒瓶。
码率或者可以比喻做酒的原料。对于同一个酒瓶和做同一种酒的情况下,如果原料太少,又要要求用酒把酒瓶灌满,此时只好兑水了,酒的品质就会变差了。然而,如果原料太多,又会造成原料浪费。所以要做好酒,我们就需要充足的原料。同样道理,压制一个视频,充足的码率是非常需要的。如果码率过高,画质提升不上去的同时还使视频体积过大。如果码率不足,视频容易出各种各样的问题,导致压崩。当然,码率不是画质的唯一指标,压制的时候的各种参数设置,各种滤镜也是非常重要的。如果码率给得足够高,理论上各编码的画质是一样的,不过体积完全不一样。
发展史:
什么是封装格式
封装格式的辨认很简单,大多数情况下,拓展名就是封装格式的名字。比如一个文件“金刚狼.avi”,那它就是属于avi的封装格式,“钢之炼金术师.Mkv”,那它就属于mkv封装格式, “喜羊羊与灰太狼.rmvb”就是rmvb封装格式。简而言之,视频文件后缀名就是封装格式的名字。不过wmv和rmvb就比较特殊,后面编码器部分再说。
封装格式就是酒瓶。酒瓶就不影响酒的口感,同样,封装格式一样不影响视频画质。它只负责把内部的视频轨和音频轨集成在一起,只起到一个文件夹(或者压缩包)的作用,并没有对视频轨和音频轨造成影响。
几种主流媒体格式情况:
1、AVI(Audio Video Interleave):
比较早的AVI是Microsoft开发的。其含义是Audio Video Interactive,就是把视频和音频编码混合在一起存储。
AVI也是最长寿的格式,已存在10余年了,虽然发布过改版(V2.0于1996年发布),但已显老态。AVI格式上限制比较多,只能有一个视频轨道和一个音频轨道(现在有非标准插件可加入最多两个音频轨道),还可以有一些附加轨道,如文字等。AVI格式不提供任何控制功能。扩展名:avi
总结:只能封装一条视频和一条音频,不能封装字幕,没有流媒体功能(就是不能使用它进行在线播放的意思)
2、WMV(Windows Media Video)是微软公司开发的一组数字视频编解码格式的通称,ASF(Advanced Systems Format)是其封装格式。 ASF封装的WMV档具有“数字版权保护”功能。扩展名:wmv/asf、wmvhd 其音频编码采用WMA,视频编码采用WMV,需要版权支持且机顶盒支持的不多。
VC-1是最后一个被承认的高清编码格式(其他是H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264)
VC-1虽然没有H.264好,但是有微软做后台,不能小视,也即我们通常所说的DVDrip格式
Divx收费,Xvid免费开源,并且比Divx有所加强,Xvid压缩率约是Divx的2倍3、MPEG格式:MPEG(Moving Picture Experts Group),是一个国际标准化组织(ISO)认可的媒体封装形式,受到大部份机器的支持。其存储方式多样,可以适应不同的应用环境。MPEG-4档的档容器格式在Part 1(mux)、14(asp)、15(avc)等中规定。MPEG的控制功能丰富,可以有多个视频(即角度)、音轨、字幕(位图字幕)等等。
MPEG的一个简化版本3GP还广泛的用于准3G手机上。扩展名:dat(用于VCD)、vob、mpg/mpeg、 3gp/3g2(用于手机)等
MPEG1是最早出现的,VCD这个具体的格式最早是从日本来的并遵从MPEG1规格
MPEG2:其代表是DVD。一般为480P(640*480)。DVD当时都符合这个标准。
Xvid 和H.264同属于MPEG4,MPEG-2还可能称作MPEG2-HD,MPEG2-TS,其实在ITU-T的命名规范中被称之为H.262
H.264有两个名称,一个是沿用ITU-T组织的H.26x名称,叫“H.264”,另一个则是“MPEG-4AVC(MPEG4第10部分)”,AVC意为高级视频编码。
H264的数据压缩率比当前DVD系统中使用的MPEG-2高2-3倍,比MPEG-4高1.5-2倍。
x264编码,是H.264编码的一个开源分支,它符合H.264标准,其功能在于编码(encoding),而不作为解码器(decoder)使用,264编码最大的特点在于注重实用,它在不明显降低编码性能的前提下,努力降低编码的计算复杂度,X264对于H.264编码中的一些复杂编码特性做了折衷处理,其压缩视频体积小于Xvid(MPEG4)编码视频
mp4格式是H.264编码指定使用的标准封装格式,3GP是MP4格式的一种简化版本,减少了储存空间和较低的频宽需求,让手机上有限的储存空间可以使用
4、Matroska是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个Matroska Media档内。它也是其中一种开放源代码的多媒体封装格式。Matroska同时还可以提供非常好的交互功能,而且比MPEG的方便、强大。扩展名:mkv
5、Real Video或者称Real Media(RM)档是由RealNetworks开发的一种档容器。它通常只能容纳Real Video和Real Audio编码的媒体。该档带有一定的交互功能,允许编写脚本以控制播放。RM,尤其是可变比特率的RMVB格式,体积很小,非常受到网络下载者的欢迎。扩展名:rm/rmvb
视频编码有RealVideo G2(早期)( RV40, RV50, RV60 )、RealVideo 8/9/10(RM8, RM9, RM10)
音频编码有RealAudio cook/sipro(早期)、RealAudio AAC/AACPlus等,实际上h264早就把RM挤出历史的舞台。
和avi差不多,但它们都有流媒体功能,区别是rmvb支持可变码率,rm不可变码率,即恒码率。
6、QuickTime File Format是由苹果公司开发的容器。1998年2月11日,国际标准组织(ISO)认可QuickTime文件格式作为MPEG-4标准的基础。QT可存储的内容相当丰富,除了视频、音频以外还可支持图片、文字(文本字幕)等。扩展名:mov、qt
7、Ogg Media是一个完全开放性的多媒体系统计划,OGM(Ogg Media File)是其容器格式。OGM可以支持多视频、音频、字幕(文本字幕)等多种轨道。扩展名:ogg
8、MOD格式是JVC生产的硬盘摄录机所采用的存储格式名称
9、MKV:和mp4差不多,但有流媒体功能,可以使用它进行在线播放,还可以使用它封装rv(rm/rmvb)编码呢!
另外:
视频封装格式是MP4,MKV,或者其它,它们都是:视频流,音频流,字幕完全用自己独立的轨道,并且可以是外挂字幕。
字幕后缀名为str,ass,ssa等。这些字幕有自己的特效,什么时候以怎样的形式出现哪些文字,都是由写好的代码控制的。