2009年9月17日星期四

罗伊·纽伯格的一天清单

对于愿意长期持有的投资者来说,最重要的莫过于健康与长寿了。罗伊·纽伯格,今年106岁,这位1903年出生的世纪老人,同时也是横跨了1929年和1987年大恐慌的著名的投资者,早在年轻时就十分清楚这一点。有人问及纽伯格长寿的秘诀,他的回答是,经常从事"一种几乎快被汽车灭绝的运动"——散步。按纽伯格的说法,他与他的父亲只相处了12年。当他父亲在世时,经常引用本杰明·富兰克林的格言教导他:早睡早起身体好。纽伯格年轻时就觉得这句话很有道理,现在他觉得更有道理了。
纽伯格先生从不睡懒觉,每天早上5:30-6:00之间起床,起床后马上做一些适度的锻炼,然后再冲一个澡。接着打开美国有线电视新闻网(CNN)看早间新闻,掌握昨晚发生的新闻动态。
先生会在7:00准时吃饭,吃饭时设法读完三份报纸:《纽约时报》、《华尔街日报》以及《投资者商报》。如果未能读完,那么后两份报纸就会被带到办公室去读。通常他会留下《纽约时报》回来再读,其中周二的科学版会送给他的司机,因为这位司机懂得许多关于科学的东西。
在7:50-8:00之间——最迟到8:00,先生就到中央公园与朋友们一起散步。中央公园比第五大街风小,适合散步。当先生80岁的时候,还能走很长的一段路。即使先生90多岁的时候,他还跟许多人一起散步。经常与先生一起散步的有投资顾问艾尔·费恩曼,老朋友阿贝·康纳——先生认为他是一个很好的人,真正的知识分子,成功的商人。他们一直散步到8:30左右,然后各自去自己的办公室上班。8:45,到达办公室,先生就打开电脑,准备好面对新一天的挑战。
每周三次——周一、周三和周五,下午17:00-17:45,先生就在外面跟私人教练做运动,在那45分钟里,先生做42节运动。有些一节会超过1分钟,而有些则不到1分钟。这项运动要花费45美元,刚好1分钟1美元,但是先生认为很值得。这是每个人都能做的简单运动:
1、靠着椅子,一条腿提起,弯腰,踢腿。重复10次,再换另一条腿。
2、从椅子上站立坐下20次。
3、身体平躺在沙发上,双手抱膝至胸部24次。
4、举1-2公斤重的东西。
这四节练习与其他38节练习可以站着做,也可以躺着做,或者坐在椅子上做。
先生特别强调,他要努力提高腿部力量,以便能走得快点,走得远点。这也难怪,人的衰老往往从腿部开始。
现在,让我们对照一下,我们是否像先生那样有规律的生活,有规律的运动。如果没有,便要注意了。如果有,那么值得祝贺。但是,仅有这两项是不够的。亚当·史密斯,《超级金钱》和《金钱游戏》的作者,曾记录到纽伯格先生一次出席某老年医学会协会年会的情形。这个年会是研究人如何衰老以及怎样衰老的。当时先生已经93岁,却依然在工作,并且乐此不疲。当先生被邀发言时,先生说运动很重要,他讲年轻时打网球,现在每周三次运动,经常散步。在场的科学家们点头称是。"我依旧对股市很感兴趣,"他说,"当你93岁的时候,网球打不动了,但是股市还在,你还可以炒股。"下面的听众热血沸腾。但最重要的是,"我依旧有好奇心,我想知道事情为何会发生,所以我依然热爱每一天,因为我想看下一步会发生什么,我知道我会学到新东西。"看起来要健康、长寿,还是保持良好的心态最重要。
——借此真诚祝愿所有的投资者都能像罗伊·纽伯格先生那样健康、长寿!

采用H.264编码视频的参数设定

作为一个网络视频的生产者,人们是通过你生产的视频的质量来对你做鉴定的。因此,很多视频生产者都在考虑将视频从古老的On2 VP编码转换为H.264编码。H.264提供了比VP6更好的画质,并且AAC音频编码提供了比与VP6相匹配的MP3编码方式更好的音质。从Adobe Flash Player 9 Update 3版本开始,你可以播放H.264/AAC格式的视频文件了。截止到2008年9月,在与互联网连接的个人电脑上,可以兼容H.264/AAC的播放器的普及率已经超过了89%。难怪这些生产者热衷于转换编码方式了。


这篇文章首先讨论了这种转换涉及到的问题,包括可能需要支付费用来获得使用权。 然后我罗列了大多数编码程序提供的,H.264特定的编码参数。 最后,我将教会你如何使用Adobe Media Encoder CS4和Adobe Flash Media Encoding Server 3.5来生产H.264视频。


要求



为了能运行大多数文章中的示例,你需要以下软件:



Adobe Media Encoder CS4

获取信息



Flash Media Encoding Server 3.5


试用


购买



预备知识

流媒体视频编码的基本知识


关于作者



Jan Ozer是一个视频生产制作者,顾问,StreamingMedia.com的作家,数码内容者,以及一个EventDV,Jan多次在StreamingMedia.com上讨论和流媒体相关的话题,并在数字媒体学院教授相关课程。你可以在Jan的个人网站,blog,或者streaminglearningcenter.com找到更多与这篇文章类似的文章。


概念介绍



首先,我要做一些H.264视频相关概念的介绍。



什么是H.264标准?



H.264是一种视频压缩的标准,称为MPEG-4 Part 10,或者MPEG-4 AVC(为“高级编码”)。它是由ITU-T视频编码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)联合颁布的标准。



与H.264相匹配的音频格式是AAC(高级音频编码),基于 MPEG-4标准第三部分制定, H.264和AAC在技术上都是MPEG-4编码的——尽管我们使用他们各自的专属名称来准确的区分他们——但在字节流上却同样的遵循MPEG-4规范第14部分的要求。



根据第14部分的要求,MPEG-4文件分别以H.264编码和AAC编码包含视频和音频,使用.mp4扩展名,仅包含音频的使用.m4a扩展名,仅包含视频的,使用m4v扩展名。 不同的厂商可以采用一系列不同的扩展名来针对各自专属的播放器做区分,例如Apple采用了.m4p作为FairPlay Digital Rights Management的文件扩展名,使用.m4r作为iphone铃声文件的扩展名。 移动电话使用.3gp和.3g2扩展名,尽管我不准备在这篇文章里讨论移动电话。



像MPEG-2一样,H.264使用三种帧,意味着每个图片组(GOP)都是由I-,B-,和P-帧组成的,I-帧用于基于DCT的压缩的数码视频,而B-帧和P-帧则作为备用帧来增强压缩比。 我将在后面的部分详细的进行描述。



像大多数视频编码标准一样,H.264实际上只标准化了“中央解码器部分,每个符合标准的解码器在被给定了一个被按照标准编码了的流时,都会解释出相似的输出,” 这段话引用自《IEEE 视频技术的电路和系统执行标准》 的H.264/AVC视频编码标准概况部分。基本上这意味着,并不存在已经符合H.264标准的编码器。实际上,H.264的编码厂商可以利用一系列不同的技术来完善视频的品质,只要产出的码流能够在目标播放器上播放就哦了。这就是为什么同样是实现H.264编码接口,在各种各样的工具中的表现差距是如此之大的原因。



那是否会有技术使用费的问题呢?


如果你在2010年12月31日之后使用H.264做视频流编码,也许你就要有义务支付相关的使用费用了。 但是,迄今为止,这都是不确定的。 以下是一些有关收取使用费日期的说法。




简单的说,H.264是由一群现在被称为MPEG Licensing Suthoring,或者简称为MPEG-LA的专利持有人开发的。在AVC/H.264许可期限内,你可以在MPEG-LA的网站上下载到,有三种类型视频生产项目是要付使用费的。



如果你属于前两种类型,并通过按次计费或者捐献来分发视频,你应该已经欠了MPEG-LA使用费了。第三种类型,无疑是最大的群体,就是免费的互联网传播,这种情况,直到2010年12月31日之前都是不需要花钱的。(源自:AVC/H.264许可协议)在那之后,“使用费将不会多于在同等时间内收看免费电视应付的费用的经济等值物”。




根据他们网站的描述,MPEG-LA必须在到期之前至少一年透露许可条款,或者说不晚于2009年12月31日。到那时,我们只好不幸地为那些使用了H.264编码的视频支付使用费,并且是很大程度上的费用了。关于更多H.264相关的使用费的信息,请阅读我在StreamingMedia.com发表的另外一篇文章,《未来是如此光明:H.264年回顾》



H.264和Flash Player



正如我前面说到的,Adobe早在2007年的Flash Player 9 Update3就添加了对H.264播放的支持。 目的很明显,就是最大限度的支持包含了H.264编码的文件,Flash Player可以播放.mp4,.m4v,.m4a,.mov,.3gp文件,像同Flash Player 9一起发布的新的扩展名一样,H.264文件使用.flv扩展名(见表1)





表1. H.264文件使用.flv扩展名



我将在下一节详细描述概况和级别。 目前看来,我们知道了Flash Player不受级别限制的支持基本的,主要的,高级的,和高级10的H.264属性。 因此,当你为Flash Player生产H.264视频时,你可以自由的选择编码工具中支持的那些典型的最高级的属性。 在音频方面,Flash Player可以播放 AAC主要,AAC低复杂度,和AAC SBR(高频频带复制技术),或者称为高效AAC,简称HE-AAC



生产H.264视频



你可以看到,你几乎已经完全灵活的掌握了关于属性和扩展名的使用方面的信息,那么在你更深入的挖掘细节内容之前,还有什么是你需要了解的呢? 确实是有几样事情需要了解的。



首先,不像VP6仅仅适用于On2,有很多不同的对h.264编码支持,包括Adobe在Adobe Media Encoder和Adobe Flash Media Encoding Server中使用的编码方式,我比较了各个厂商的工具采用h.264编码生产出的视频的质量,事实证明Adobe的主流编码效果是最好的。



总的来说,其他的编码工具虽然在整体质量上有所提升,但是仍然有些工具是例外的。 所以如果你使用其他厂商的工具生产了一个视频却没有达到你所期望的质量,可以试试用Adobe的工具。



其次,一些较旧的编码工具不提供直接输出到F4V格式。 如果你使用的编码工具不支持f4v格式,那么最好的解决方法就是制作成MPEG - 4兼容的流媒体文件,然后以.mp4扩展名来发布。



我将以此为背景,描述最常见的H.264编码参数。



H.264编码参数



虽然H.264的编解码器来自不同的供应商,但是他们都使用同样的编码技术以及相似的比较有代表性的编码参数。 在这里,我讨论的是最常见的h.264编码选项。



了解概况和级别





图1. 编码技术纵览(来自:Wikipedia)



正如你猜想的,越高级别的编码方式使用的编码算法就越先进,并且因此会生产出质量更好的文件。 为了凸显这种差异,我使用同样的源文件并设置了同样的编码参数。 左边的文件采用Main方式,而右面的使用Baseline. 在图1中的表格里我们可以很容易查出,Main方式是支持B-切片技术的(也叫做B-帧),并且也支持高质量CABAC编码,我将在文章的后面部分做详细讲解 正如你所看到的,这样做有助于Main方式实现比Baseline更高质量的视频。





图2.使用Main方式编码的视频(左边)比使用Baseline方式编码的视频(右边)质量要好得多。



所以,Main以及High方式比Baseline产出的视频质量更高;我们有什么收获呢? 收获就是,因为你使用了更加先进的编码技术,这个文件变得更加难解压,并且也许在老一点的电脑上播放的会很缓慢,并且不平滑。



这个观察说明一个目前H.264编码参数的典型的需要权衡的问题,较高的文件质量带来的问题是文件很难被解压,另一方面,使用高质量的参数编码,会花费更多的时间。在某些罕见情况下,你决定在流中包含B-帧编码,等同于同时触发了两个问题,增加了解码难度和编码时间。



回到方式上来:在高的标准下,可以编码方式将看成是厂商和视频生产者共同遵守的适应点。手机生产商A需要生产一款能够播放h.264视频的手机,但同时需要控制成本,发热量和尺寸。 于是,狡诈的首席工程师通过搜索,发现了功能足以播放用Baseline层级方式生产出的h.264视频的最佳处理器。 如果你是一个被找来要为这样一款设备生产视频的视频制作人员,你会知道如果你采用Baseline方式编码,这个视频将是可以被正常播放的。



因此,当生产h.264视频时,通常我们会使用目标播放平台所能支持的最高层级的方法来生产视频,因为这样可以在任何给定的码率下提供最好的视频质量。 如果生产用于移动设备的视频,那么这就特指的是Baseline方式了,不过还是查看一下设备的相关文档确认为佳。 如果是生产用于工作在Window或者Macintosh操作系统的电脑上的Flash player的视频,那么指得就是High方式了。



这听起来又明了又好,但是要明白一点:虽然使用Baseline方式编码可以确保在你的移动设备上平滑的播放,但是使用High方式生产在电脑上播放的视频文件并不能提供这样的保证。 因为High模式下生产的h.264视频,最高支持像素分辨率可以达到4096 x 2048,码率可以达到720Mbps。 只有很少的桌面电脑是可以进行完整帧频的播放的,更少的是在以每秒30帧的帧频进行播放流。



因此,为生产移动设备使用的视频全在于你使用什么方式,而生产电脑使用的视频则全在于你怎样进行视频属性配置。这里,关键点是在于,是以VP6,还是Windows Media的计算方式解码。只要你用其他两种编码器以同样的分辨率和同样的码率生成h.264视频,在同一类型的电脑上播放都是没有问题的。(关于H.264,VP6和VC-1更详细的比较统计,请阅读StreamingMedia.com 上我的另外一篇文章《Hi-Def视频产品解码的真相》)



一般情况下,这意味着,只要你以640 × 480的分辨率和较低的码率生成SD视频,应该可以在2003年之后生产的电脑上很好的播放 如果你以720p或者更高的分辨率生产,产出的流将不能在这些电脑中的任何一台上平滑的播放。 你应该为这些观看者提供一个SD流来替代过高参数的流。



关于H.264的标准呢? 如果生产用于移动设备的有限的屏幕分辨率和带宽的视频,你应该选择正确标准,这也是厂商应该指定的标准。 然而,由于Flash Player可以处理任何一种支持的标准下,任意一种方法生产的视频,所以在你为Flash Player生产在个人电脑上播放的视频时无需有任何担心。



平均信息量编码



当你选择了Main或者High方式,一些编码工具将给你两个关于平均信息量编码模式的选项。(见图3)



  • CAVLC :基于上下文的自适应可变长编码

  • CABAC :基于上下文的自适应二进制算术编码



这两个选项中,CAVLC是低质量的,易于解码的选项,CABAC是高质量的,难于解码的选项。





图3 . 对平均信息量编码的选择: CABAC和CAVLC



虽然结果是取决于源文件质量的,但通常来说CABAC被认为比CAVLC效率高5%-15%。 这意味着,CABAC应该在码率低5-15%,的情况下,提供同等的,或者更高的视频质量。 在我自己做的测试中,CABAC产出的视频质量要明显的好于CAVLC,虽然只是在高清晰视频编码测试中,采用非常低的码率的情况下。 如图4显示,左边的是用CABAC 生产的720p文件,右面的是用CAVLC产出的文件,同样都是800k码率。 图4显示出,16:9的720p视频被抽取了一些帧 现在800 kbps码率的画面质量是相当低了;相比之下,YouTube采用2m码率进行h.264编码,几乎是这里的2.5倍。





图4 . 采用CABAC 编码的720p文件(左边), CAVLC编码(右边)



虽然任何一个的画面质量都不是值得称赞的,但是左边的画面上的芭蕾舞演员的面部和其他细节明显地要清晰一些。 结论就是,CABAC会提供更加的画面质量,无论是多么细微的差异。 现在问题变成是,这样做究竟会给解码和播放增加多少难度呢?



答案是,不会很大。我在我的办公室里用两台运算能力都不是很强的多核cup电脑进行测试,一台是使用酷睿2处理器的惠普笔记本电脑,另一台是基于个人电脑配置的苹果台式机。 正如你在表格2里面看到的,CABAC文件,在惠普的笔记本上增加了不到1%的CPU负载,在苹果机上增加了不到2%的负载。 鉴于更佳的视频质量和细小的CPU负载差异,我建议,只要CABAC是可用的我都会选用它。







I, P和B帧



这是一个常见的前言知识画面,帧与帧之间的切换的变化是很小的,编码的质量要高于动态的,运动式的视频。那是因为H.264像所有高质量的运动编码方式一样,目的是充分利用视频帧与帧之间的冗余帧。越高的帧冗余,将带来给定码率下越高的质量。



为了利用这种冗余, H.264流包含了三种类型的帧(见图5)



  • I-帧:也成为关键帧,I-帧完全自我指涉的,并且不使用任何其他帧的信息。它在三种帧中占最大的比例,并且具有最高的质量,但是压缩效率是最低的。

  • P -帧:P -帧是所谓的“预示”帧。当创建了一个P-帧时,编码器可以向后查看I-帧或者P-帧中冗余的图片信息。P-帧比I-帧效率高,但是没有B-帧的效率高。

  • B-帧:B-帧是双向预测帧,从图五你可以看到,这意味着当我们创建B-帧,编码器可以同时向前和向后查找冗余的图片信息。这使得B-帧在三种帧中具备最佳的效率。注意,B-帧在使用Baseline方式生产视频的时候是不可用的。






图5.H.264编码流中的 I,P,和B-帧



现在你知道了每种类型的帧的功能,我将会告诉你如何更优化的使用它们。



使用I-帧工作



尽管I-帧的压缩效率是最低的,但是它们同时也提供了两种不可取代的功能。首先,所有的h.264视频文件的播放都开始于I-帧,因为它是唯一在编码期间不依赖于其他帧的帧类型。



由于几乎所有的视频流都可以进行交互式的播放,当观看者在视频不同的片段之间推动滑块时,你应该在视频中包含规则的I-帧来确保灵活的播放控制。 这在使用Flash Media Server发布的流,以及使用分布渐进式下载发布的流中,是可行的。 虽然这没有什么所谓的魔法数字,我通常每隔10秒使用一个I-帧,意味着在生产每秒播放30帧的视频时,每隔300帧有一个I-帧。(24fps和15fps分别为每隔240帧,和每隔150帧一个I-帧)



I-帧的另外一个功能是帮助在场景切换时重置画面质量 试想,从一个场景到另外一个切换时图像急剧变化。 如果新场景的第一个帧是一个I-帧,这是最好的状况了,对于随之而来的P-帧和B-帧能查找到冗余的信息来说,这是一个绝佳的起始点。 因为这个原因,许多编码工具都提供了一个特性叫做“场景变化监测”或者“自然关键帧”,你应该永远都开始这些功能。



图6显示了在Flash Media Encoding Server中I-帧的相关控制 你可以看到场景变化检测是默认被启用的,并且视频编码序列的大小为300,即300帧。 如果这样说的话可能理解起来会更简单:“I-帧,间隔”,不过,这已经足够显而易见了。





图6.Flash Media Encoding Server中 I-帧相关控制



IDR 帧



具体说来,视频编码序列指的是“图片组”,或者简称为GOP,它是组成H.264流的组成部分,每个H.264流都是由很多个静态的GOP组成的。每个GOP都是由一个I-帧开始的,并包含了所有的帧,但是并不包含下一个I-帧。通过选择视频编码序列为300,你是在告诉Flash Media Encoding Server创建一个包含300帧的GOP,或者基本等同于说每隔300帧一个I-帧。



我在向你进一步描述B-图片的数量设置时,同时也就已经在向你描述平均信息量编码模式了;但是我想解释的是最小IDR间隔,和IDR频率。 首先我要定义IDR帧的意义。简单的说,H.264规格使用两种类型的I-帧:普通I-帧和IDR帧。对于IDR帧来说,在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I-帧来说,位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧。



从随机存取的视频流中,播放器永远可以从一个IDR帧播放,因为在它之后没有任何帧引用之前的帧。 但是,不能在一个没有IDR帧的视频中从任意点开始播放,因为后面的帧总是会引用前面的帧。



由于在你的视频中插入关键帧是使互动播放成为可能的一个关键原因,我使用了默认的设置值1,这使得每一个关键帧都成为了一个IDR帧。 如果你设置这个值为0,只有第一个I-帧会成为IDR帧,这使得文件不能支持随机访问。 设置这个值为2会使得每一个第二位置的I-帧变成IDR帧,当设置为3时使得每一个第三位置的I-帧变成IDR帧。 再说一次,我只使用默认的设置值1.



最小的 IDR间隔定义了一组图片中的最小帧数量。 虽然你已经设置了视频编码序列为300,你也选择了开启场景切换监测,使得编码器在场景切换时插入一个I帧。在一个非常动感的包含一连串动态变化的MTV中,这将会导致非常频繁的I帧出现,这可能会降低整个视频的质量。对于这种类型的视频,你可以尝试将最小IDR间隔增加到30-60帧,现在看看这个是不是提高了视频质量吧。 但是,对于大多数影片,默认的间隔1提供给编码器频繁插入I-帧的必要的灵活性,高度活跃的部分,例如开启或关闭logo. 出于这个原因,我也在默认的控制设置中将这个值设置为1。



使用B-帧工作



B-帧是效率最高的帧,因为他们可以同时进行双向的冗余帧搜索。虽然不同的编码器之间的控制和控制命名不同,但是最常见的B帧相关空是是简单的B-帧数量设置,或者像图片6中所示的“B-图片”。注意图片6中的数字实际上指得是I-帧和P-帧之间的连续帧。



使用在图6中所示的值2,你将会创建一组这样的图片组:IBBPBBPBBPBB ... 就这样一直排列300帧。如果B-图片的数量设置为3,编码器将会在每一个I-帧个P-帧之间插入三个B-帧。 虽然没有神奇的数字,我通常使用两个顺序的B-帧。



插入多少个B-帧可以提高你视频的质量呢?图7说明了这个问题。作为背景,这是一系列高运动率的滑板动作的结尾帧,同时也包含很重要的细节描写,特别是在栅栏后面的选手。 这种结合了高运动率和高细节描绘的情况是不多见的,使得对这进行编码变得非常难。 正如你看到的图片,采用B-帧保存的文件明显比不使用B-帧保存的文件细节表现要好。 总之,B-帧确实提高了质量。





图7.使用(左)和不使用(右)B-帧编码的文件对比



在解码方面有什么性能上的损失么?我做了一个跨平台的电池测试,尤其针对那些老化的,低性能的电脑,测量在播放使用Baseline方式生产的视频(不采用B-帧),以及使用High方式生产的视频(采用B-帧)是的CPU负载量。我看到最大的差距是10%,这并不足以动摇我建议你,除了在为移动设备生产视频时使用Baseline方式,其他的时候就都使用High方式进行编码吧。



高级B-帧选项



在图8中显示了Adobe Flash Media Encoding Server包含的对B-帧和P-帧的相关控制。 B-帧自适应设置允许编码器覆盖已经编码过的B-图片数量以提高质量,例如,当它监测到场景变化或者最后而来的帧是I-帧时。 我总是启用此设置。





图8 .其他B帧相关的选项



参考B-图片,让编码器使用B帧作为P帧的引用帧,当开始锥形B-帧编码时,编码器使用B-帧作为其他B帧的引用帧。 我通常不开启这个选项,因为质量的差别是微不足道的,这些选项可能会使视频在某些环境下的播放变得不稳定。



参考帧数量,是编码器在编码时可以搜索的冗余帧的数量,它会影响编码时间和解码难度;在使用B-帧和P-帧进行编码时,如果你将这个值设置为10,编码器将会一直搜索冗余帧信息直到第10个帧上,这增加了搜索时间。 此外,如果编码器在10帧之内发现了冗余资源,每一帧都必须在解码和回放时被存放在内存中,从而提高了解码的难度。



直观的说,对于大多数视频,绝大多数的冗余资源在离帧最近的位置被编码。 这就是说,只要设置这个值超过4或者5,就会增加编码时间,同时带来的价值并不大。 我通常使用的值是4.



最后,虽然不是与B帧相关的技术,考虑到每张图片的切片数量,可以是1,2,或者4,以设置为4为例,编码器将每一帧划分为4个区域,并且只在其他帧指定的区域内搜索冗余信息。这可以加速在多核处理器电脑上的编码速度,因为编码器可以指定不同的内核作为指定的编码区域。然而,由于冗余信息可能已经转移到了帧之间的不同区域----平移或倾斜移动----多切片编码可能会丢失一些信息,因而降低视频的整体质量。



与此相反,默认值1的情况下,编码器将每一个帧作为一个完整的区域,并整体的搜寻潜在的引用帧。 因为这样做并不利于多核CPU分担这个任务,所以这种设置导致的结果是很慢,但同时也是视频质量最高的。 除非你真的那么着急,否则我建议你将这个值设置为默认值1.



其他编码参数



一旦你越过了I-和B-帧的相关控制,H.264提供了一系列额外的编码参数,我将在稍后进行讲述。 目前的这些设置,我估计还有90-95%的选项会影响h.264视频质量。 而我们本节讨论的设置,仅仅能改变其中的5%,这意味着大多数用户可以接受默认的值并且没有注意到其中的任何差别。 不过,如果你想要尝试探求H.264的终极质量,你可以使用如图9所示的控制设置。





图9.Flash Media Encoding Server提供的其他H.264编码参数



首先是搜索形状,它可以是16 × 16或8 × 8 。 后者( 8 × 8 )是高品质的选择,而编码时间较长。 接下来的三个“快速”选项允许您在允许的质量损耗范围内进行高速编码。 本人通常禁用这些选项。



在单帧中再次分派位数据的自适应量化模式和先进的量化强度设置,使用三个选择标准中的一个:亮度,对比度,或复杂性。我只会在实验时使用这些设置,这使得视频区域中有明显的块状显示。不幸的是,这个操作的内容相当的书面化,这使得它无法提供一般的关于使用价值的技术咨询意见。



无论是码率失真的优化,还是Hadamard变换设置都可以提高视频质量,但是编码时间会变得更长,我通常两者都选。 最后,亚像素运动估算模式定义了搜索冗余资源的粒度:1/4像素代表最高的品质,但却是最慢的编码,全像素代表最快的但是质量最低的编码。 在我的低急躁环境下,我总是用1、4



理论应用到工作中去



现在您已经知道了H.265是如何工作的了,下面,我将简单的演示如何使用Adobe提供的工具制作H.264视频。



Adobe Media Encoder



这是Creative Suite 4中的一个引人注目的增强Flash视频编码的工具。现在有个独立操作和批处理编码功能。因此,您可以通过格式弹出菜单中选择不同格式存取H.264编码。如果是为Flash Player生成编码,那么您应该选择FLV或F4V选项,这将会为 Flash Player 生成VP6和 H.264滤镜。



特别的,您选择一个预设(preset )的编码,这个编码器使用了一个格式,也可以是其他格式。或者,您可以在格式选项卡上选择您的编码,如选择:FLV for VP6或F4V for H.264(见图10)。





图10.选择编码 VP6(FLV选项)或H.264(F4V选项)



Adobe Media Encoder中,最简单的工作方式是选择一个预设编码,它们有相同的大小或比目标分辨率达。这将确保合适的配置和正确的级别选择。



所有的预设都是在Adobe Premiere Pro 的默认配置文件中的,不是高级的。(All presets accessible through Adobe Premiere Pro default to the Main Profile, rather than High.)虽然任何质量上的差异可能是微小的,我们一般在进行编码之前将这个设定为高质量(见图11)。除了这一点,我唯一修改的一点是高级设置(Advanced Setting)中的 Set Key Frame Distance选项,我总是选中它,并且设定它的值为300。





图11.在Adobe Media Encoder中选择H.264编码参数



Flash Media Encoding Server



Flash Media Encoding Server的可控性要比Adobe Media Encoder要广阔的多,但是你还是要以同样的方式开始:选择您的容器格式和预设(见图12)。





图12. 在 Flash Media Encoding Server选择一个容器格式和预设



Flash Media Server 和 Flash Player 都可以播放流文件或回访任何H.264文件,实际上可以是任何格式,所以F4V或MP4容器都可以。如果你想使一个文件在 QuickTime Player 和 Flash Player里都能播放,你可以选择MP4;否则,使用F4V。选择一个预设,它使用与目标相同的或比目标更高的分辨率,以确保使用了合适的配置和级别。



图13 是H.264在Flash Media Encoding Server 中相关的参数。左边是预设的默认值。右边是我的设定值。红色的星号是预设的建议值,但是并不是必要的。





图13.修改H.264编码参数:默认值(左边),建议值(右边)



正如我之前讨论的,我将扩展GOP尺寸为300,并使用合适的 B-frame设定以提供最大灵活性的编码器。将参考帧从2提高到4可能略微提高编码时的质量和编码的复杂性,同时禁用快速内部(fast inter)和内部决策(intra decisions)可能再次提高质量,也增加了一些编码时间。



总的来说,我的建议值应该产生最优的质量,虽然这超出了编码时间。如果吞吐量是关键,那么我将做出以下改变:



  • 使用参考帧(reference frames)的默认值2。

  • 打开所有“fast”的编码选项

  • 使用16 × 16的搜索模式(Search shape)

  • 设定运动估算子像素模式(Motion estimation subpixel mode)为全像素(Full pixel)

  • 如果你的机器是多核的,您可以使用2个或4个时间片(slice)



如果您这样做,那么你可以比较一下两种参数的选则,看看是否快速编码参数会产生质量上的显著不同。



在音频方面,我将使用默认值,且只改变目标比特率和适合我目标的通道。H.264编码参数我也使用了默认值,比如时间戳和序列结束码,这些在Flash Media Encoding Server 中都提供。就是这样了,下面开始编码一些视频吧。



接下来做什么



再去了解些这篇文章中提及的文章,下面是我给出的参考:


中国IC公司第一紧缺的人才

-------木桶首先要能装水,再是能装多少水
KT人才公司总经理 胡运旺
在本人8年的IC人才猎头服务中,接触了上万IC行业的朋友,在交流中,谈得最多一个词是:Delay(延期)!某些环节细小的失误甚至失误都不能算的衔接问题,导致了产品一次又一次的delay。IC设计delay,生产运营delay,系统方案delay,市场推广delay,delay再delay!在接连不断的
delay中,各种资源白白浪费了,竞争对手起来了,目标客户跑掉了,市场丢失了!最后,公司的钱也没有了,可VC们不Delay却直接消失了!
这种大错没有小错不断到底是为什么呢?为什么会产生如此多的delay现象呢?
我认为,多数IC企业缺少一个串线的人!在芯片制造行业中,不同的工艺工序有上百种,因此设置了"串线工程师"的岗位(也叫工艺整合)。而在一个IC设计企业,同样也需要这样一个串线的人,叫产品线负责人(产品线经理),负责从IC市场需求开始,到IC的产品定义、算法设计、架构设计、前端设计、IC验证、模拟设计、版图/后端设计、流片、封装、测试、方案硬件与系统软件设计、市场、销售、FAE,甚至包括产品退出市场等完整过程的协调管理,即让IC从0到
1再到0的一个完全的协调人。这个协调人必须有能力和权限去协调本产品线所有相关部门,例如,人力、进度、生产资料等,确保产品计划的顺利、及时、正确地执行。
产品线负责人的岗位职责,具体如下:
1
全面负责从产品定义,商业计划,上下游部门界面管理,风险评估及对策到量产和市场导入的全过程。即市场,研发,生产到销售的全过程产品线运作负责人。
2 带领团队对控制和产品线研发和市场推广进程做合理决定。
3
项目执行中,根据预算,在公司内部或外部找到合理资源,解决项目进程节点的阻碍。
4 如果超出项目计划,及时做出变更或变通方案。保障项目进行。
5 在产品研发期,控制芯片研发到投放市场的过程中产品成本,质量和时间进程
6
在产品试生产期带领团队合理调整商业策略,优化可变成本,降低研发成本,提高利润率。
7
在市场导入过程中,做好客户群和供应商管理,综合评定客户优先级,确保重要客户的芯片供应和前期技术服务。
8 在产品销售过程中,积极参与下一代产品road map的制定。
什么样的人才适合做产品线负责人呢?
总体来说,这个人应该是个全才,是有眼光、有思想、有技术、有魅力的"四有""老人"。
1
这个人必须懂得系统,能够定义合理的架构,使设计更容易实现,使系统成本更具有竞争优势。
2
要懂设计。产品在研发过程中会遇到不同设计人员之间的协调问题。很多人在设计中往往只考虑自己做的模块,因此即使在设计中所有模块都做到性能最好,做出来的产品也不一定是最好的。就这需要互相的"妥协",在设计中叫做tradeoff。有句古话叫"适合的才是最好的",在IC设计这句话更重要。
3
要了解工艺和制程。产品线负责人要规划一个产品推向市场的时间,需要精确到每一个环节,要能选择合适的工艺和所需要的时间。另外,出现产品因为制造导致的问题,产品负责人需要跟生产方之间协调,不懂,如何谈?
4
要懂得市场和应用,根据市场制定合理的开发时间。能够在推广的过程中及时解决客户遇到的问题是把一个产品尽快推向市场的关键。
5
最重要的,就是良好的人际关系和个人魅力。在设计过程中遇到的问题会很多,往往是产品线负责人在背后推动,但是工程师不归你管理,难免遇到推三阻四的问题。良好的人际协调能力就显示出重要性了。
这个"串线"的产品线管理人对IC公司来说非常的重要。原因可以用木桶理论来说明。众所周知,"木桶原理"讲的是木桶由最短的木板来决定能装多少水。没错!但是,木桶能装水才是第一要素!木桶得能装水,然后,才是装多少水!什么原因会让木桶不能装水呢?
缝隙!
只要有缝隙,木桶就根本不能装水,更谈不上装多少水。一个组织中不同部门的不同岗位就好像是组成木桶的木板。让真正的木桶无缝隙还是比较容易的。但一个组织,由不同部门、不同岗位的一个个活生生的人组成,要达到"没有缝隙"是在太难!特别是对IC设计公司来说,几乎都是由高学历高智商的人才组成,达到无缝更加地难!
一颗芯片从开始市场调研到成功进入市场量产,都要经历从市场需求调研开始的10多种工序。如果没有负责产品线管理的人来做沟通协调,就必然出现太多的扯皮、太多的混乱,导致处处是问题,处处是缝隙!有了缝隙就需要人力与时间去弥补,去不断捉虫子、debug,由此进入不断的
delay再delay的恶性循环中!
产品线负责人如此重要,但为什么太多的中国IC公司没有配置呢?我认为主要有以下几方面的原因:
1
欧美公司没有培养出这样的中国本土IC人才。欧美公司几乎不会招聘中国本土人才来做产品线管理,因为欧美公司的这个职位需要衔接协调海外的部门,对英语要求太高!而海外的留学生也基本都在做技术开发,可以成为一个点的高手或者一块小木板的leader,但是几乎没有机会负责整个产品线的管理。
2
对产品线负责人来说,需要很宽的知识面,从市场机会、产品定义到IC设计、IC制造、系统方案,再到市场销售,整个环节都需要了解。中国IC大规模发展也才10年,这么短的时间内也很难培养出这样的全方位人才。
3
就产品线管理而言,对负责人的素养要求非常高,不但沟通协调能力要非常强,而且还要具有非常强的责任心、人格魅力和原则性等。夸张地说,就如同周总理管理20个部委一样,可见难度有多大!
4
中国的工程师大都崇尚技术而轻视管理,对技术不如自己的人,就不愿意接受其协调和管理,这也导致知识面宽而不精的产品线管理者无法顺利地开展工作。
5
在中国,由于职业道德和精神的缺位,这样的合格的产品线负责人,由于对每道"工序"都了解,太容易拉出一帮人另立山头了,因此许多中国本土IC公司的CEO们不敢招,也不敢用!
由此可见,目前市场上还难于找到这样合格的产品线负责人,本人8年中也就遇到几个而已,这个岗位的人才是中国目前最紧缺的人才。这或许也是目前中国IC设计公司无法配置这样职位的重要原因。
因此,在中国的IC公司,特别是规模小点的公司,没有配置专门的产品线负责人,基本就是CEO来亲自抓这个产品线管理。但CEO们"日理万机",在公司战略方向、产业链上下游关系处理特别是融资事情上,需要占用太多时间和精力,而产品线管理是个非常日常化的琐碎工作,需要通过不断地协调沟通去弥补无数的小缝隙,必然要花费相当多的时间精力,由此,CEO们怎么可能做得好!后果必然就是管不精也管不好!当然,中国的CEO们本身之前也几乎没有完整的产品线管理经验,知识面也不够宽,因此严重影响了产品线管理的执行力度,也就使得公司各部门处于不断的delay再delay中。
鉴于此,我认为中国IC设计公司应该抓紧培养产品线管理人才,选择沟通力强的、知识面宽的、经验相对丰富的一些项目经理来培养。另外,中国IC公司特别是抗风险能力较弱的中小型公司要敢于重用这样的人才,给予足够的权利、薪资及股份等,用好之,留住之,以便让CEO们能够抓大放小,将主要精力放在公司的未来战略和发展方面。只有培养出了合格的产品线负责人,产品的Delay就会减少了,就能够整合出没有缝隙的木桶,这样,中国IC设计公司才真正有前途!