<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>zrong&#039;s Blog &#187; H.264</title>
	<atom:link href="http://zengrong.net/post/tag/h264/feed" rel="self" type="application/rss+xml" />
	<link>http://zengrong.net</link>
	<description>Flash、Flex、RIA、web、Linux和我的生活</description>
	<lastBuildDate>Thu, 09 Feb 2012 15:09:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>[转]Step By Step 使用 mencoder和 mp4box 输出高品质AVC+AAC For PSP</title>
		<link>http://zengrong.net/post/1020.htm</link>
		<comments>http://zengrong.net/post/1020.htm#comments</comments>
		<pubDate>Fri, 28 May 2010 01:08:12 +0000</pubDate>
		<dc:creator>zrong</dc:creator>
				<category><![CDATA[听说]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[MEncoder]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://zengrong.net/?p=1020</guid>
		<description><![CDATA[<a href="http://zengrong.net/post/1020.htm" title="[转]Step By Step 使用 mencoder和 mp4box 输出高品质AVC+AAC For PSP"></a>原文地址：http://bbs.wissky.com/t21986-p1-1.html 前言： 以下内容 是在不严重损失编码速度的情况下 生成一个较高品质的 AVC+AAC 的视频文件 并且能被PSP正常播放 进行讨论的 如果你是一个追求编码速度至上的人 那么阅读到此为止了 另外基于时间和篇幅的关系 我不再对一些专业名词做过多解释了 整体思路： 首先要求是 尽可能的让mencoder完成 解码 编码 和 容器封装 如果完成其中任何一项不能完成 再考虑尽可能少的增加辅助工具 在自己试验中 发现mencoder不能完成 mp4封装 因为在Mplayer手册里提到 对于mencoder自身 AVI是最可靠的输出容器 其他容器都会有不稳定的因素 在这期间 我曾尝试使用 mencoder内置mp4封装容器 -of lavf -lavfopts format=psp -o OUTPUT 但 mencoder提示 &#8230;<p class="read-more"><a href="http://zengrong.net/post/1020.htm">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://zengrong.net/post/1020.htm" title="[转]Step By Step 使用 mencoder和 mp4box 输出高品质AVC+AAC For PSP"></a><p><strong>原文地址：http://bbs.wissky.com/t21986-p1-1.html</strong></p>
<h3>前言：</h3>
<p>以下内容 是在不严重损失编码速度的情况下 生成一个较高品质的 AVC+AAC 的视频文件 并且能被PSP正常播放 进行讨论的<br />
如果你是一个追求编码速度至上的人 那么阅读到此为止了<br />
另外基于时间和篇幅的关系 我不再对一些专业名词做过多解释了</p>
<h3>整体思路：</h3>
<p>首先要求是 尽可能的让mencoder完成 解码 编码 和 容器封装 如果完成其中任何一项不能完成 再考虑尽可能少的增加辅助工具<br />
在自己试验中 发现mencoder不能完成 mp4封装 因为在Mplayer手册里提到 对于mencoder自身 AVI是最可靠的输出容器 其他容器都会有不稳定的因素<br />
在这期间 我曾尝试使用 mencoder内置mp4封装容器<br />
<span id="more-1020"></span></p>
<pre>-of lavf -lavfopts format=psp -o OUTPUT</pre>
<p>但 mencoder提示 它不支持包含B帧的视频流 只能作罢<br />
于是选择MP4BOX 作为最后的MP4容器的封装工具</p>
<h3>需要准备的软件:</h3>
<p>1)mencoder<br />
本人使用版本的是这里下载的</p>
<p>http://sourceforge.net/projects/mplayer-win32/files/MPlayer%20%2F%20MEncoder/MPlayer-p4-svn-29355.7z/download</p>
<p>当然你也可在这里选择 适合你的最新版</p>
<p>http://sourceforge.net/projects/mplayer-win32/files/</p>
<p>2)MP4BOX</p>
<p>我是用的是 最新的DEV版 （0.4.6-dev_20090715）</p>
<p>你可以在这里下载到</p>
<p>http://www.digital-digest.com/software/MP4Box.html</p>
<p>本次视频压缩使用以上版本的工具 在好友PSP 系统版本号为3.71M33-4 测试成功播放 压缩后的视频 并且在PPA能也能正常播放</p>
<h3>具体步骤说明：</h3>
<p>1）视频来源是DVD NTSC制式 （视频流为 30P的MPEG2  音频是5.1ch的AC3）</p>
<p>另外为了缩短测试时间 使用 Womble.MPEG.Video.Wizard.DVD.v4.0.4.114 无损截取了 30s的片段</p>
<p>2）为了体现质量最大化 也理所应当的使用了x264的2pass模式</p>
<p>3）编码参数<br />
（本人的CPU是 Intel Core 2 T5500的 \  内存为 DDR II 800 4GB \ 主板为 Intel Mobile 945）</p>
<p>1st pass （编码速度约：48fps   CPU占用率约：75%)</p>
<pre>mencoder  -sws 9  -oac faac -faacopts mpeg=4:br=160:object=2 -srate 48000 -channels 2  -vf crop=708:480:12:0,harddup,scale=480:272,unsharp=l3x3:0.5,dsize=-1  -ovc x264 -ffourcc H264 -x264encopts  bitrate=900:turbo=1:keyint=300:keyint_min=6:scenecut=40:frameref=3:bframes=3:b_adapt=2:nob_pyramid:deblock:deblock=-1,-2:cabac:qp_step=6:qcomp=0.8:direct_pred=auto:weight_b:partitions=i4x4p8x8p4x4b8x8:no8x8dct:me=umh:me_range=24:subq=7:chroma_me:mixed_refs:trellis=2:psy-rd=0,0:nofast_pskip:nodct_decimate:aq_mode=2:aq_strength=1:level_idc=22:nointerlaced:nopsnr:nossim:threads=auto:pass=1  "INPUT.mpg"  -o "OUTPUT.avi"</pre>
<p>2ed pass （编码速度约：17fps   CPU占用率约>90%)</p>
<pre>mencoder -sws 9  -oac faac -faacopts mpeg=4:br=160:object=2 -srate 48000 -channels 2 -vf crop=708:480:12:0,harddup,scale=480:272,unsharp=l3x3:0.5,dsize=-1  -ovc x264 -ffourcc H264 -x264encopts bitrate=900:turbo=1:keyint=300:keyint_min=6:scenecut=40:frameref=3:bframes=3:b_adapt=2:nob_pyramid:deblock:deblock=-1,-2:cabac:qp_step=6:qcomp=0.8:direct_pred=auto:weight_b:partitions=i4x4p8x8p4x4b8x8:no8x8dct:me=umh:me_range=24:subq=7:chroma_me:mixed_refs:trellis=2:psy-rd=0,0:nofast_pskip:nodct_decimate:aq_mode=2:aq_strength=1:level_idc=22:nointerlaced:nopsnr:nossim:threads=auto:pass=2  "INPUT.mpg"  -o "OUTPUT.avi"</pre>
<p>4）关于编码命令行的说明：</p>
<p>a] -sws 9<br />
因为视频 剪裁后需要进行 缩放为 480*272 于是就有了一个 选择什么样的缩放滤镜的问题<br />
这里推荐使用 lanczos滤镜</p>
<p>=======================================================<br />
b] unsharp=l3x3:0.5<br />
这个滤镜是起到提升视觉清晰度的作用<br />
滤镜的中文译名为 （非锐化遮蔽罩）<br />
大致原理是 寻找出画像的轮廓 接着在轮廓部分 使其明度或是色度的过度产生很大的变化<br />
如果你玩过 Ps 的 USM滤镜就明白它的具体原理和显著效果了<br />
下面是老外浅显易懂的专业解释</p>
<p>http://www.cambridgeincolour.com/tutorials/unsharp-mask.htm</p>
<p>=======================================================<br />
C] dsize=-1<br />
如果mencoder自己不能获得 Movie AR的话 就会默认指定为 4：3<br />
这导致 x264 以DAR =4：3 为比例目标 调整SAR值 编码后输出画面的DAR永远是 4：3<br />
就算在x264命令行里指定 sar为1也无效<br />
此时 使用如果dsize=-1 就会使用 PAR的比例<br />
换言之sar永远为1:1</p>
<p>=======================================================<br />
D]  -channels 2<br />
这个滤镜的作用为 告诉音频解码 输出的声道为2.0ch<br />
使用理由很简单 PSP只能接受 2.0ch的音频<br />
缺点是  并不是mencoder内置的一切音频解码器 都支持输出2.0ch<br />
但是一般来说问题不大 大多数多声道的视频 一般以DVD片源比较常见 AC3的解码器可以正确downmix到2.0ch<br />
当然可以使用 pan滤镜手动映射,混合声道 但是这样做命令行的通用性就变差了<br />
因为 pan滤镜需要手动详细设定</p>
<p>=======================================================<br />
E] 其他注意事项：<br />
有些人会说 1st pass时可以把 音频解码和编码禁用<br />
但我说这不行 因为x264 1st pass时 会有对每一帧的信息进行记录 （比如帧的类型 量化值等等） 这些信息是为了 2pass做准备的 （1st pass 和 2ed pass 输入的帧的内容 和序列组 必须完全一致）<br />
当你考虑到 2ed pass时 mencoder会为了 音画同步 而skip一些帧的时候<br />
而1st pass因为音频禁用 不会出现解码skip帧<br />
此时 1st pass 和 2ed pass 输入画面就不再是相同的帧序列组了<br />
这时 x264可能会提示你 1pass时是P帧 但是2pass实际编码时却是B帧之类 的警告提示</p>
<p>5）从mencoder输出的AVI容器里 提取 视频流 和 音频流</p>
<p>这里我们使用 MP4BOX完成提取工作</p>
<p>命令行如下：（分两次执行）</p>
<pre>MP4Box -aviraw audio OUTPUT.avi
MP4Box -aviraw video OUTPUT.avi</pre>
<p>一些提示：</p>
<p>MP4BOX会输出 视频流名为 OUTPUT.h264<br />
音频流名为 OUTPUT.raw （也许是 MP4不能识别出 AAC IN AVI容器的 FOURCC）<br />
接着手工rename OUTPUT.raw=》OUTPUT.aac</p>
<p>6)把视频流和音频流 封装为MP4容器</p>
<p>同样我们仍旧需要使用MP4BOX</p>
<p>命令行如下：</p>
<pre>MP4Box  -add "OUTPUT.h264":fps=29.976 -add "OUTPUT.aac" "PSP.mp4"</pre>
<p>提示要点：<br />
MP4BOX无法识别 AVC流的 FPS值需要手工设定 fps=xxx<br />
但可以借助 Meida info识别 AVC流的FPS值</p>
<h3>最后想说的：</h3>
<p>本人其实并不擅长用 mencoder 用得最多的是AVS+x264</p>
<p>上述的内容都是参考官方文档 和 国外网友的一些实例 花了2天的时间整理出来的 （官方的文档并不完善 有些命令行 并未出现在文档里 需要 mail list 和网友实例 加以补充）</p>
<p>所以难免有纰漏和曲解 望大家指正 </p>
<p>虽然经过 朋友的PSP测试样片可以正常播放 但仅仅限于这个实例下 和 上述列举的工具为前提<br />
本人并不能保证 因为软件的升级 片源的变化 等 情况下 按照上述的方法 仍能正常输出 被PSP播放的视频<br />
在未来的几个月里 最多再对编码的命令行维护一次 （因为x264的默认值 即将在mencoder里发生改变）</p>
<h3>最后附上样片：(30秒)</h3>
<p>http://www.rayfile.com/files/062ec9d9-72e0-11de-a749-0019d11a795f/</p>
]]></content:encoded>
			<wfw:commentRss>http://zengrong.net/post/1020.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>手动编译mplayer(mencoder)，支持x264+AAC，解决ubuntu下使用mencoder压缩视频出现MPlayer was compiled without libfaac错误问题</title>
		<link>http://zengrong.net/post/1012.htm</link>
		<comments>http://zengrong.net/post/1012.htm#comments</comments>
		<pubDate>Tue, 25 May 2010 14:55:44 +0000</pubDate>
		<dc:creator>zrong</dc:creator>
				<category><![CDATA[应用]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[MEncoder]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://zengrong.net/?p=1012</guid>
		<description><![CDATA[<a href="http://zengrong.net/post/1012.htm" title="手动编译mplayer(mencoder)，支持x264+AAC，解决ubuntu下使用mencoder压缩视频出现MPlayer was compiled without libfaac错误问题"><img width="289" height="200" src="http://zengrong.net/wp-content/uploads/2010/05/xvidcodec.png" class="attachment-extra-featured-image wp-post-image" alt="xvidcodec" title="xvidcodec" /></a>标题很长，是因为这问题很严重 我在Ubuntu10.04下使用源中自带的mencoder压缩H.264视频，就出现了这个错误： MPlayer was compiled without libfaac 找了一堆资料，发现是Ubuntu10.04自带的mencoder不支持faac编码。于是寄希望于新立得，安装了faac、libfaac0、libfaac-dev等包，仍然无用。苦恼之下只有自己编译了。 其实编译这事，我一直是比较排斥的。一直以来，我都是希望把Ubuntu作为Windows在办公电脑上的替代品来使用的。既然是替代品，当然应该使用简单、老少咸宜，而编译就已经超出了这个范畴。不过转念想来，我的应用其实也已经超出了这个范畴了。哪个office boy会吃饱了没事干在Windows下面用命令行来压制H.264视频？至少在我工作的单位，知道H.264这个名词是什么意思的，估计不会比三毛的头发数量多 mencoder是包含在mplayer中的，下载mplayer的源码一看，原来mplayer有良好的中文文档支持，手册和操作提示都有中文资源。相比而言，官方源中的mplayer虽然手册是中文，但帮助和提示信息就是英文了。于是摩拳擦掌，准备编译一套中文的mplayer了！ 一、下载 1.进入MPlayer官方网站的下载页面下载源码：mplayer-checkout-snapshot.tar.bz2，使用svn的方法该页面也有详述。 解压： tar xjf mplayer-checkout-snapshot.tar.bz2 2.下载codecs：all-20100303.tar.bz（所有codecs） 二、安装编译包 通过新立得发现，libgtk2.0和libstdc++6默认已经安装了，因此就只需要安装build-essential包了（其实如果不制作deb包的话，连build-essential也不需要装）： sudo apt-get install build-essential 三、调整参数 使用 ./configure --help 查看可以使用的参数。最有用的就是安装目录参数和语言参数。如下： Installation directories: &#8211;prefix=DIR prefix directory for installation [/usr/local] &#8211;bindir=DIR directory for &#8230;<p class="read-more"><a href="http://zengrong.net/post/1012.htm">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://zengrong.net/post/1012.htm" title="手动编译mplayer(mencoder)，支持x264+AAC，解决ubuntu下使用mencoder压缩视频出现MPlayer was compiled without libfaac错误问题"><img width="289" height="200" src="http://zengrong.net/wp-content/uploads/2010/05/xvidcodec.png" class="attachment-extra-featured-image wp-post-image" alt="xvidcodec" title="xvidcodec" /></a><p>标题很长，是因为这问题很严重</p>
<p>我在Ubuntu10.04下使用源中自带的mencoder压缩H.264视频，就出现了这个错误：</p>
<blockquote><p>MPlayer was compiled without libfaac</p></blockquote>
<p>找了一堆资料，发现是Ubuntu10.04自带的mencoder不支持faac编码。于是寄希望于新立得，安装了faac、libfaac0、libfaac-dev等包，仍然无用。苦恼之下只有自己编译了。</p>
<p>其实编译这事，我一直是比较排斥的。一直以来，我都是希望把Ubuntu作为Windows在办公电脑上的替代品来使用的。既然是替代品，当然应该使用简单、老少咸宜，而编译就已经超出了这个范畴。不过转念想来，我的应用其实也已经超出了这个范畴了。哪个office boy会吃饱了没事干在Windows下面用命令行来压制H.264视频？至少在我工作的单位，知道H.264这个名词是什么意思的，估计不会比三毛的头发数量多 <img src='http://zengrong.net/wp-includes/images/smilies/icon_razz.gif' alt=':razz:' class='wp-smiley' />  </p>
<p>mencoder是包含在mplayer中的，下载mplayer的源码一看，原来mplayer有良好的中文文档支持，手册和操作提示都有中文资源。相比而言，官方源中的mplayer虽然手册是中文，但帮助和提示信息就是英文了。于是摩拳擦掌，准备编译一套中文的mplayer了！<br />
<span id="more-1012"></span></p>
<h3>一、下载</h3>
<p>1.进入MPlayer官方网站的<a href="http://www.mplayerhq.hu/design7/dload.html">下载页面</a>下载源码：<a href="http://www.mplayerhq.hu/MPlayer/releases/mplayer-checkout-snapshot.tar.bz2" target="_blank">mplayer-checkout-snapshot.tar.bz2</a>，使用svn的方法该页面也有详述。<br />
解压：</p>
<pre>tar xjf mplayer-checkout-snapshot.tar.bz2</pre>
<p>2.下载codecs：<a href="http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20100303.tar.bz2" target="_blank">all-20100303.tar.bz</a>（所有<a href="http://www.mplayerhq.hu/MPlayer/releases/codecs/" target="_blank">codecs</a>）</p>
<h3>二、安装编译包</h3>
<p>通过新立得发现，libgtk2.0和libstdc++6默认已经安装了，因此就只需要安装build-essential包了（其实如果不制作deb包的话，连build-essential也不需要装）：</p>
<pre>sudo apt-get install build-essential</pre>
<h3>三、调整参数</h3>
<p>使用
<pre>./configure --help</pre>
<p>查看可以使用的参数。最有用的就是安装目录参数和语言参数。如下：</p>
<blockquote><p>
Installation directories:<br />
  &#8211;prefix=DIR           prefix directory for installation [/usr/local]<br />
  &#8211;bindir=DIR           directory for installing binaries [PREFIX/bin]<br />
  &#8211;datadir=DIR          directory for installing machine independent<br />
                         data files (skins, etc) [PREFIX/share/mplayer]<br />
  &#8211;mandir=DIR           directory for installing man pages [PREFIX/share/man]<br />
  &#8211;confdir=DIR          directory for installing configuration files<br />
                         [PREFIX/etc/mplayer]<br />
  &#8211;libdir=DIR           directory for object code libraries [PREFIX/lib]<br />
  &#8211;codecsdir=DIR        directory for binary codecs [LIBDIR/codecs]<br />
Language options:<br />
  &#8211;charset=charset      convert the console messages to this character set<br />
  &#8211;language-doc=lang    language to use for the documentation [en]<br />
  &#8211;language-man=lang    language to use for the man pages [en]<br />
  &#8211;language-msg=lang    language to use for the messages and the GUI [en]<br />
  &#8211;language=lang        default language to use [en]
</p></blockquote>
<p>我的配置参数是这样的：</p>
<pre>./configure --prefix=/opt/mplayer --language=zh_CN --language-doc=zh_CN --language-man=zh_CN --language-msg=zh_CN</pre>
<p>这样编译安装的mplayer，使用man mplayer是看不到手册的，因为手册并不是在默认的man路径中。而是在/opt/mplayer/share/man中。我这样编译是为了实现“绿色软件”（Windows思想作怪），以后若不想要了，直接删除/opt/mplayer即可。</p>
<p>也可以指定&#8211;mandir=/usr/share/man，这样编译安装的mplayer，就可以直接通过man mplayer命令看到中文手册了。</p>
<h3>四、安装codec库支持</h3>
<p>在刚开始的几次编译中，我把Codec中的几十个参数一个个进行了添加。后来才发现我的做法是错误的。并非在参数中加上了-enable-x264 &#8211;enable-mp3lame，编译的时候就会将x264和mp3支持包含进去。相反的，如果系统中没有x264与lame库，编译的时候就会报错。正确的做法应该是安装对应的codec源码库，不使用任何的enabled参数，让配置文件自行检测是否支持该codec。</p>
<p>那么如何知道系统中是否包含需要的编码呢？可以使用重定向将configure显示的内容保存到一个文本文件中，然后查看文本文件即可。</p>
<pre>./configure --prefix=/opt/mplayer --language=zh_CN --language-doc=zh_CN --language-man=zh_CN --language-msg=zh_CN > log.txt</pre>
<p>打开log.txt，搜索“x264”，可以看到类似的文字：</p>
<blockquote><p>Checking for x264 &#8230; no (in libavcodec: no)</p></blockquote>
<p>由此可以看出，系统默认是不支持x264编码的。同样的，常用的xvid、lame编码也是一概不支持的：</p>
<blockquote><p>Checking for libmp3lame &#8230; no (in libavcodec: no)<br />
Checking for Xvid &#8230; no </p></blockquote>
<p>在文件底部，可以看到配置的参数以及支持和不支持的编码信息：</p>
<blockquote><p>Config files successfully generated by ./configure &#8211;prefix=/opt/mplayer &#8211;language=zh_CN &#8211;language-doc=zh_CN &#8211;language-man=zh_CN &#8211;language-msg=zh_CN !</p>
<p>  Install prefix: /opt/mplayer<br />
  Data directory: /opt/mplayer/share/mplayer<br />
  Config direct.: /opt/mplayer/etc/mplayer</p>
<p>  Byte order: little-endian<br />
  Optimizing for: native</p>
<p>  Languages:<br />
    Messages/GUI: zh_CN<br />
    Manual pages:  zh_CN<br />
    Documentation:  zh_CN</p>
<p>  Enabled optional drivers:<br />
    Input: dvdnav(internal) ftp pvr tv-v4l2 tv-v4l tv libdvdcss(internal) dvdread(internal) vcd dvb network<br />
    Codecs: libavcodec(internal) qtx real xanim win32 faad2(internal) libmpeg2(internal) mp3lib(internal) tremor(internal)<br />
    Audio output: oss v4l2 mpegpes(dvb)<br />
    Video output: v4l2 pnm mpegpes(dvb) fbdev cvidix yuv4mpeg md5sum tga </p>
<p>  Disabled optional drivers:<br />
    Input: vstream radio tv-dshow live555 nemesi cddb cdda smb<br />
    Codecs: libschroedinger libdirac x264 xvid libdv libopencore_amrwb libopencore_amrnb faac musepack libdca liba52 libtheora speex toolame twolame libmad liblzo gif OpenJPEG<br />
    Audio output: sun alsa openal jack pulse nas esd arts ivtv dxr2 sdl<br />
    Video output: zr zr2 ivtv dxr3 dxr2 matrixview opengl sdl vesa gif89a jpeg svga caca aa ggi xmga mga<br />
ix winvidix 3dfx dga vdpau xvmc xv x11 dfbmga directfb bl xvr100 tdfx_vid wii s3fb tdfxfb</p></blockquote>
<p>要系统支持这些codec也很简单，需要什么编码，在新立得里面搜索就可以了，例如，如果希望编译出来的mencoder支持xvid编码，就在新立得里面搜索“xvid”然后安装libxvidcore-dev即可，新立得会将相关的包一并选中。记住，搜索的时候可能有多个类似的包，但一定要安装-dev结尾的，这个才是源码。如下图：<br />
<a href="/wp-content/uploads/2010/05/xvidcodec.png"><img src="/wp-content/uploads/2010/05/xvidcodec.png" alt="新立得" title="xvidcodec" width="854" height="589" class="alignnone size-full wp-image-1013" /></a></p>
<p>我安装的所有支持包如下：</p>
<blockquote><p>libxvidcore-dev libmp3lame-dev libdv4-dev libopencore_amrwb-dev libopencore_amrnb-dev libfaac-dev libmpcdec-dev libdts-dev liba52-0.7.4-dev libtheora-dev libspeex-dev libtwolame-dev libmad0-dev liblzo2-dev libgif-dev libopenjpeg-dev libjpeg62-dev</p></blockquote>
<p>除了x264之外，常用的codec都在上面了。为什么不使用新立得安装x264呢？因为Ubuntu源中带的libx264-dev不能被自动识别。因此，需要自行下载x264编译安装，或者在<a href="http://ftp.itsuki.fkraiem.org/pub/x264/r1602/">这里下载</a>国外网友打包好的deb进行安装。编译安装x264的方法放狗随便就能搜到。反正我是直接安装deb的 :em67:<br />
这两个deb都要装：；</p>
<p><a href="http://ftp.itsuki.fkraiem.org/pub/x264/r1602/libx264-dev_0.96.1602+git69588a-1_i386.deb" target="_blank">libx264-dev_0.96.1602+git69588a-1_i386.deb</a><br />
<a href="http://ftp.itsuki.fkraiem.org/pub/x264/r1602/libx264-96_0.96.1602+git69588a-1_i386.deb" target="_blank">libx264-96_0.96.1602+git69588a-1_i386.deb</a></p>
<p>安装带有dev这个的时候，Ubuntu会提示“您最好从软件仓库中安装libx264-dev，因为通常有更好的支持”，不要理他。</p>
<p>全部安装完成后，再执行configure一次，查看是否还有codec漏掉了。如果没问题的话，就可以编译了。</p>
<h3>五、编译与安装</h3>
<p>1.make的时间比较长，所以要有点耐心。当然如果是4核CPU就另当别论 :em67: 由于安装目录在/opt下，因此install的时候加上sudo：</p>
<pre>make
sudo make install</pre>
<p>2.将先前下载的外部codec复制到对应的文件夹：</p>
<pre>
tar xjf all-20100303.tar.bz2
sudo mkdir /opt/mplayer/lib/codecs
sudo mv all-20100303/* /opt/mplayer/lib/codecs/
</pre>
<p>3.由于安装路径不在系统路径中，因此制作链接让命令随时可用</p>
<pre>
cd /opt/mplayer/bin
sudo ln -s mplayer /usr/local/bin/mplayer
sudo ln -s mencoder /usr/local/bin/mencoder
</pre>
<p>4.在manpath.conf中添加环境变量<br />
编辑/etc/manpath.config，在</p>
<blockquote><p>MANDATORY_MANPATH			/usr/local/share/man</p></blockquote>
<p>一行下方加入</p>
<blockquote><p>MANDATORY_MANPATH			/opt/mplayer/share/man</p></blockquote>
<p>如果在编译前指定了&#8211;mandir=/usr/share/man，这里就不用这么做了。</p>
<h3>六、反安装与其他</h3>
<p>由于编译的时候指定了路径，因此反安装的时候，只需要删除/opt/mplayer即可。</p>
<p>当然，也可以使用这个命名：</p>
<pre>make uninstall</pre>
<p>但这个命令删得并不干净，只会把文件删除，文件夹是仍然保留的。</p>
<p>我一共编译了20多次，才最终形成了上面这些经验。如果看完了上面文章，仍然不能一次编译成功的，最好在下次编译之前，执行一下这条命令：</p>
<pre>make clean</pre>
<h2 style='color:red'>好了！享受中文的Mplayer和MEncoder吧！</h2>
]]></content:encoded>
			<wfw:commentRss>http://zengrong.net/post/1012.htm/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>使用TMPGEnc 4.0 XPress(T4XP)压缩录像课</title>
		<link>http://zengrong.net/post/894.htm</link>
		<comments>http://zengrong.net/post/894.htm#comments</comments>
		<pubDate>Mon, 21 Dec 2009 08:01:09 +0000</pubDate>
		<dc:creator>zrong</dc:creator>
				<category><![CDATA[培训]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.zengrong.net/?p=894</guid>
		<description><![CDATA[<a href="http://zengrong.net/post/894.htm" title="使用TMPGEnc 4.0 XPress(T4XP)压缩录像课"></a>使用TMPGEnc，在上报作品前压缩录像课，可以有效减小视频文件的大小，一张DVD光盘装十几节课没有问题。而且压缩后的文件可以直接在网上使用Flash播放器播放。 下面是流程： 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_t4xp_mp4_796267864"
			class="flashmovie"
			width="778"
			height="754">
	<param name="movie" value="/wp-content/uploads/2009/12/t4xp_mp4.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/wp-content/uploads/2009/12/t4xp_mp4.swf"
			name="fm_t4xp_mp4_796267864"
			width="778"
			height="754">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> 全屏播放，右键下载]]></description>
			<content:encoded><![CDATA[<a href="http://zengrong.net/post/894.htm" title="使用TMPGEnc 4.0 XPress(T4XP)压缩录像课"></a><p>使用TMPGEnc，在上报作品前压缩录像课，可以有效减小视频文件的大小，一张DVD光盘装十几节课没有问题。而且压缩后的文件可以直接在网上使用Flash播放器播放。<br />
下面是流程：<br />
<span id="more-894"></span><br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_t4xp_mp4_1842198401"
			class="flashmovie"
			width="778"
			height="754">
	<param name="movie" value="/wp-content/uploads/2009/12/t4xp_mp4.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/wp-content/uploads/2009/12/t4xp_mp4.swf"
			name="fm_t4xp_mp4_1842198401"
			width="778"
			height="754">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="/wp-content/uploads/2009/12/t4xp_mp4.swf" target="_blank">全屏播放，右键下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://zengrong.net/post/894.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>抛弃FLV，迎接MP4&#8212;&#8212;制作Flash Player支持的H.264视频格式</title>
		<link>http://zengrong.net/post/393.htm</link>
		<comments>http://zengrong.net/post/393.htm#comments</comments>
		<pubDate>Thu, 06 Dec 2007 16:17:18 +0000</pubDate>
		<dc:creator>zrong</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[AAC]]></category>
		<category><![CDATA[CODEC]]></category>
		<category><![CDATA[FlashPlayer]]></category>
		<category><![CDATA[FLV]]></category>
		<category><![CDATA[H.264]]></category>

		<guid isPermaLink="false">http://www.zengrong.net/?p=393</guid>
		<description><![CDATA[Flash Player 9.0.115发布了，这是一个支持H.264的正式版本。关于H.264，已经说得太多，播放H.264的视频也很简单，用NetStream即可（也就是播放FLV的那一套，但是怎么把现有的视频压缩成Flash Player支持的H.264格式呢？
首先，要了解Flash Player 9.0.115对视频编码到底支持到哪个程度。<p class="read-more"><a href="http://zengrong.net/post/393.htm">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://zengrong.net/post/393.htm" title="抛弃FLV，迎接MP4&mdash;&mdash;制作Flash Player支持的H.264视频格式"></a><p>Flash Player 9.0.115发布了，这是一个支持H.264的正式版本。关于H.264，已经说得太多，播放H.264的视频也很简单，用NetStream即可（也就是播放FLV的那一套，想了解的可以看<a href="http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html" target="_blank" title="xploring Flash Player support for high-definition H.264 video and AAC audio">这篇官方提供的教程</a>），但是怎么把现有的视频压缩成Flash Player支持的H.264格式呢？</p>
<h3>首先，要了解Flash Player 9.0.115对视频编码到底支持到哪个程度。</h3>
<p>下面是Adobe官方提供的一个Flash Player支持的视频编码列表（<a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1" title="List of codecs supported by Adobe Flash Player" target="_blank">原文</a>）：</p>
<table border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#e6e6fa">
<td valign="top" width="200"><strong>视频编码</strong></td>
<td valign="top" width="150"><strong>SWF 文件格式版本(发布的版本)</strong></td>
<td valign="top" width="150"><strong>支持播放的最小Flash Player版本</strong></td>
</tr>
<tr>
<td valign="top" width="200"><strong>Sorenson Spark</strong></td>
<td valign="top" width="150">6</td>
<td valign="top" width="150">6</td>
</tr>
<tr>
<td valign="top" width="200"><strong>On2 VP6</strong></td>
<td valign="top" width="150">6</td>
<td valign="top" width="150">8</td>
</tr>
<tr>
<td valign="top" width="200"><strong>H.264 (MPEG-4 Part 10)</strong></td>
<td valign="top" width="150">9</td>
<td valign="top" width="150">9.0.115.0*</td>
</tr>
</table>
<table border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#e6e6fa">
<td valign="top" width="200"><strong>音频编码</strong></td>
<td valign="top" width="150"><strong>SWF 文件格式版本(发布的版本)</strong></td>
<td valign="top" width="150"><strong>支持播放的最小Flash Player版本</strong></td>
</tr>
<tr>
<td valign="top" width="200"><strong>ADPCM</strong></td>
<td valign="top" width="150">6</td>
<td valign="top" width="150">6</td>
</tr>
<tr>
<td valign="top" width="200"><strong>MP3</strong></td>
<td valign="top" width="150">6</td>
<td valign="top" width="150">6</td>
</tr>
<tr>
<td valign="top" width="200"><strong>HE-AAC (MPEG-4 Part 3)</strong></td>
<td valign="top" width="150">9</td>
<td valign="top" width="150">9.0.115.0*</td>
</tr>
</table>
<p>*Flash Player 可以播放视频编码为H.264，音频编码为AAC的标准MPEG-4文件。文件的扩展名可以是：F4V, MP4, M4A, MOV, MP4V, 3GP, 3G2等等。</p>
<p><font color="#ff0000"><strong>注意：如果没有特别说明，下面的Flash Player都指Flash Player 9(v 9.0.115.0)</strong></font></p>
<p><span id="more-393"></span></p>
<p>Flash Player 9 (v 9.0.115.0) 支持下面的 MPEG-4 标准的子集：</p>
<table border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#e6e6fa">
<td valign="top" width="250"><strong>MPEG-4 标准</strong></td>
<td valign="top" width="250"><strong>Flash Player Update 3</strong></td>
</tr>
<tr>
<td valign="top" width="250">ISO/IEC 14496-3 (Audio AAC)</td>
<td valign="top" width="250">AAC Main; AAC LC; SBR</td>
</tr>
<tr>
<td valign="top" width="250">ISO/IEC 14496-10 (Video AVC)</td>
<td valign="top" width="250">Base (BP); Main (MP); High (HiP). All levels are supported.</td>
</tr>
<tr>
<td valign="top" width="250">ISO/IEC 14496-12 (Container)</td>
<td valign="top" width="250">1 Audio track; 1 Video track</td>
</tr>
<tr>
<td valign="top" width="250">3GPP TS 26.245 (Timed text format)</td>
<td valign="top" width="250">Full support.</td>
</tr>
</table>
<p>那么，什么是H.264？“MPEG4 Part 10”是什么？它和“Part 3”、“Part 2” 有什么关系？可以看<a href="http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html" title="MPEG4遭遇尴尬 三款高清晰编码大比拼" target="_blank">这篇文章</a>。</p>
<p>简单的讲，H.264、MPEG4 Part 10、MPEG4 AVC和ISO/IEC 14496-10 都是一个东东，就是一种视频编码格式，同时也是高清电影采用的视频编码格式之一（另外两种是MPEG2和VC-1）。</p>
<p>而平常我们熟悉的DivX以及XviD编码，都属于MPEG4标准的范畴，但它们属于MPEG4 Part 2，Flash Player是不支持它们的。</p>
<h3>了解了基础知识之后，我们首先需要找到一个编码工具。</h3>
<p>选择一个优秀的压缩工具至关重要。Flash CS3自带的用于压缩FLV的压缩器自然是无法胜任了。可是网上的视频转换工具多如牛毛，要找一款好用的真的很难。本着<strong><font color="#ff0000">“免费、易用、专业、通吃”</font></strong>这四个标准，经过大量测试，终于找到一款优秀的国产编码软件<a href="http://mediacoder.sourceforge.net/index_zh.htm" title="影音转码宝盒" target="_blank">MediaCoder</a>（中文名：影音转码宝盒），以下是来自MediaCoder官方网站的介绍：</p>
<p>MediaCoder是一个免费的通用音频/视频批量转码工具，它将众多来自开源社区的优秀音频视频编解码器和工具整合为一个通用的解决方案，可以将音频、视频文件在各种格式之间进行转换。</p>
<p><strong>功能和特点</strong></p>
<ul>
<li>基于优秀的众多的开源编解码后台，能够解码和编码的格式多</li>
<li>极为丰富的可调整的编码参数</li>
<li>全部编解码器自带，不依赖于系统的编解码器和任何组件</li>
<li>良好的可扩展的程序架构，快速适应新的需求，不断增加新的格式的支持</li>
<li>利用脚本语言扩展的界面，有支持众多影音设备（如<a href="http://mediacoder.sourceforge.net/screenshots_zh.htm?sid=ext-psp.png" target="_blank">PSP</a>、<a href="http://mediacoder.sourceforge.net/screenshots_zh.htm?sid=ext-ipod.png" target="_blank">iPod</a>）的专用界面</li>
<li>高性能，特别在双核处理器上表现优异</li>
</ul>
<p><strong><br />
典型应用</strong></p>
<ul>
<li>提高影音文件压缩率，减小其文件尺寸</li>
<li>转换至可在各种影音设备上播放的影音文件，如MP3播放器、MP4播放器、手机、PDA、VCD/DVD播放机</li>
<li>提取视频文件中的音轨并转换成MP3、AAC、WMA等音频文件</li>
<li>修复和改善一些损坏的、部分下载的或质量不佳的影音文件</li>
</ul>
<p><strong>支持格式 </strong></p>
<ul>
<li><a href="http://mediacoder.sourceforge.net/wiki/index.php/MP3">MP3</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Vorbis">Vorbis</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aac">AAC</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aacPlus">AAC+</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aacPlus"><strong>AAC+v2</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MusePack">MusePack</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Speex">Speex</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/AMR">AMR</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WMA">WMA</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealAudio">RealAudio</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Mp3PRO">mp3PRO</a>*</li>
<li><a href="http://mediacoder.sourceforge.net/wiki/index.php/FLAC">FLAC</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WavPack">WavPack</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Monkey's_Audio">Monkey&#8217;s Audio</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/OptimFrog">OptimFrog</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Audio_Lossless_Coding">AAC Lossless</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Windows_Media_Audio_Lossless">WMA Lossless</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WAV">WAV/PCM</a></li>
<li><a href="http://mediacoder.sourceforge.net/wiki/index.php/H.264"><strong>H.264</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/XviD">Xvid</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG">MPEG</a> <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-1">1</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-2">2</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-4">4</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Theora"><strong>Theora</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Flash_Video">Flash Video</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Dirac"><strong>Dirac</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/3ivx">3ivx</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealVideo">RealVideo</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Windows_Media_Video">Windows Media Video</a></li>
<li><a href="http://mediacoder.sourceforge.net/wiki/index.php/AVI">AVI</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG">MPEG</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/VOB">VOB</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/matroska">Matroska</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-4">MP4</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealMedia">RealMedia</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/ASF">ASF</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/QuickTime">Quicktime</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/OGM">OGM</a>*</li>
<li><a href="http://mediacoder.sourceforge.net/wiki/index.php/CD">CD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/VCD">VCD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/DVD">DVD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Cue_sheet">CUE Sheet</a>*</li>
</ul>
<p><em>*仅支持输入</em></p>
<h3>编码工具搞定，接着就可以“制作”影片了。</h3>
<p>我采用的源片是著名的Backkom Assa Game Contest片段，片源编码如下：</p>
<blockquote><p>G:\Movie\Backkom\Assa Game Contest.wmv<br />
General<br />
Complete name : G:\Movie\Backkom\Assa Game Contest.wmv<br />
Format : Windows Media<br />
File size : 1.89 MiB<br />
PlayTime : 33s 991ms<br />
Bit rate : 467 Kbps<br />
Movie name : Assa<br />
Performer : Aaron Lim<br />
Copyright : rg animation studios<br />
Comment : rg animation studios<br />
Video<br />
Codec : WMV3<br />
Codec/Info : Windows Media Video 9<br />
Bit rate : 408 Kbps<br />
Width : 320 pixels<br />
Height : 240 pixels<br />
Aspect ratio : 4/3<br />
Audio<br />
Codec : WMA2<br />
Codec/Info : Windows Media Audio 2<br />
Bit rate : 48 Kbps<br />
Channel(s) : 2 channels<br />
Sampling rate : 44 KHz</p></blockquote>
<p>在压缩前，最重要的就是在MediaCoder中选择视频编码和音频编码。根据上面的表格我们知道，Flash Player 9.0.115支持H.264视频编码和HE-AAC音频编码。下图是我在MediaCoder中的设置。</p>
<p align="center"><img src="http://www.zengrong.net/wp-content/uploads/2007/12/h264video-thumb.png" alt="H.264视频设置" height="184" width="417" /><br />
<strong>H.264视频设置</strong></p>
<p align="center">&nbsp;</p>
<p align="center"><img src="http://www.zengrong.net/wp-content/uploads/2007/12/h264audio-thumb.png" alt="HE-AAC音频编码" height="182" width="640" /><br />
<strong>HE-AAC音频设置</strong></p>
<p align="center">&nbsp;</p>
<p align="center"><img src="http://www.zengrong.net/wp-content/uploads/2007/12/h264video2-thumb.png" alt="h264video2" height="184" width="315" /><br />
<strong>视频大小设置</strong></p>
<p>将这三个设置调整好即可。H.264的编码优于WMV9，所以在压缩的时候，选择的视频和音频码率都小于源文件的码率。</p>
<p>转换完后的视频扩展名为MP4，详细编码信息如下：</p>
<blockquote><p>G:\Movie\Backkom\Assa Game Contest.mp4<br />
General<br />
Complete name : G:\Movie\Backkom\Assa Game Contest.mp4<br />
Format : MPEG-4<br />
Format/Info : ISO 14496-1 Base Media<br />
Format/Family : MPEG-4<br />
File size : 1.40 MiB<br />
PlayTime : 33s 920ms<br />
Bit rate : 347 Kbps<br />
StreamSize : 11.2 KiB<br />
Encoded date : UTC 2007-12-06 15:51:38<br />
Tagged date : UTC 2007-12-06 15:51:38<br />
Video #1<br />
Codec : H.264<br />
Codec/Info : H.264 (3GPP)<br />
PlayTime : 33s 920ms<br />
Bit rate : 314 Kbps<br />
Width : 320 pixels<br />
Height : 240 pixels<br />
Aspect ratio : 4/3<br />
Frame rate : 25.000 fps<br />
Bits/(Pixel*Frame) : 0.160<br />
StreamSize : 1.27 MiB<br />
Encoded date : UTC 2007-12-06 15:51:38<br />
Tagged date : UTC 2007-12-06 15:51:38<br />
Audio #2<br />
Codec : AAC LC-SBR<br />
Codec/Info : AAC Low Complexity with Spectral Band Replication<br />
PlayTime : 32s 415ms<br />
Bit rate : 32 Kbps<br />
Bit rate mode : VBR<br />
Channel(s) : 2 channels<br />
Sampling rate : 44 KHz<br />
Resolution : 16 bits<br />
StreamSize : 126 KiB<br />
Encoded date : UTC 2007-12-06 15:51:38<br />
Tagged date : UTC 2007-12-06 15:51:38</p></blockquote>
<p>此视频在Flash Player 9.0.115中顺利播放，声音也没有问题。</p>
<h3>研究一下视频和音频的组合</h3>
<p>到了这里，就有一些问题了。H.264视频是否一定要搭配AAC音频呢？搭配MP3行么？我压缩了一个采用H.264视频编码，Mp3音频编码（采用LAME MP3）的影片，用终极解码播放正常，但是在Flash Player中，只有图像可以显示，却听不到声音。下面是这个文件的编码信息：</p>
<blockquote><p>F:\Material\Flash Platform\Flash\Cases\播放H.264视频\333.mp4<br />
General<br />
Complete name : F:\Material\Flash Platform\Flash\Cases\播放H.264视频\333.mp4<br />
Format : MPEG-4<br />
Format/Info : ISO 14496-1 Base Media<br />
Format/Family : MPEG-4<br />
File size : 2.59 MiB<br />
PlayTime : 33s 920ms<br />
Bit rate : 641 Kbps<br />
StreamSize : 13.9 KiB<br />
Encoded date : UTC 2007-12-05 09:21:21<br />
Tagged date : UTC 2007-12-05 09:21:21<br />
Video #1<br />
Codec : H.264<br />
Codec/Info : H.264 (3GPP)<br />
PlayTime : 33s 920ms<br />
Bit rate : 516 Kbps<br />
Width : 320 pixels<br />
Height : 240 pixels<br />
Aspect ratio : 4/3<br />
Frame rate : 25.000 fps<br />
Bits/(Pixel*Frame) : 0.260<br />
StreamSize : 2.09 MiB<br />
Encoded date : UTC 2007-12-05 09:21:21<br />
Tagged date : UTC 2007-12-05 09:21:21<br />
Audio #2<br />
Codec : MPEG-1 Audio<br />
PlayTime : 32s 365ms<br />
Bit rate : 128 Kbps<br />
Bit rate mode : CBR<br />
Channel(s) : 2 channels<br />
Sampling rate : 44 KHz<br />
Resolution : 16 bits<br />
StreamSize : 506 KiB<br />
Encoded date : UTC 2007-12-05 09:21:21<br />
Tagged date : UTC 2007-12-05 09:21:21</p></blockquote>
<p>又测试了H.264+MP3用AVI封装和3GP封装，在Flash Player中都无法播放声音。看来只有H.264+AAC可以被Flash Player支持。封装可以使用3GP或者MP4，但不支持MKV封装。</p>
<h3>关于封装容器和视频文件后缀</h3>
<p>我们知道，我们不能仅仅从视频文件的扩展名判断文件的编码。因为很多扩展名是支持多种编码的。例如AVI就只是一种封装容器，它里面的视频和音频编码可以有很多种组合。可以是DivX，也可以是XviD，还可以是MPEG-1。下面的表格（<a href="http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf" target="_blank">表格来源</a>，ZRong做部分调整）简单的描述了几种封装容器和视频、音频编码的对应情况：</p>
<table border="1" cellpadding="2" cellspacing="0" width="542">
<tr>
<td valign="top" width="105"><strong>封装容器</strong></td>
<td valign="top" width="145"><strong>视频流编码格式</strong></td>
<td valign="top" width="128"><strong>音频流编码格式 </strong></td>
<td valign="top" width="160"><strong>Flash Player是否支持</strong></td>
</tr>
<tr>
<td valign="top" width="105">AVI</td>
<td valign="top" width="145">Xvid</td>
<td valign="top" width="128">MP3</td>
<td valign="top" width="159">不支持</td>
</tr>
<tr>
<td valign="top" width="105">AVI</td>
<td valign="top" width="145">Divx</td>
<td valign="top" width="127">MP3</td>
<td valign="top" width="159">不支持</td>
</tr>
<tr>
<td valign="top" width="105">MKV</td>
<td valign="top" width="145">Xvid</td>
<td valign="top" width="127">MP3</td>
<td valign="top" width="159">不支持</td>
</tr>
<tr>
<td valign="top" width="105">MKV</td>
<td valign="top" width="145">Xvid</td>
<td valign="top" width="127">AAC</td>
<td valign="top" width="159">不支持</td>
</tr>
<tr>
<td valign="top" width="105">MKV</td>
<td valign="top" width="145">H.264</td>
<td valign="top" width="127">AAC</td>
<td valign="top" width="159">不支持</td>
</tr>
<tr>
<td valign="top" width="105">MP4</td>
<td valign="top" width="145">H.264</td>
<td valign="top" width="127">AAC</td>
<td valign="top" width="159">支持</td>
</tr>
<tr>
<td valign="top" width="105">3GP</td>
<td valign="top" width="145">H.263</td>
<td valign="top" width="127">AAC</td>
<td valign="top" width="159">不支持</td>
</tr>
<tr>
<td valign="top" width="105">3GP</td>
<td valign="top" width="145">H.264</td>
<td valign="top" width="127">AAC</td>
<td valign="top" width="159">支持</td>
</tr>
<tr>
<td valign="top" width="105">FLV</td>
<td valign="top" width="145">Sorenson Spark</td>
<td valign="top" width="127">MP3</td>
<td valign="top" width="159">支持</td>
</tr>
<tr>
<td valign="top" width="105">FLV</td>
<td valign="top" width="145">On2 VP6</td>
<td valign="top" width="127">MP3</td>
<td valign="top" width="159">支持</td>
</tr>
</table>
<p>从上表可以看出，要让Flash Player成功播放H.264视频，最好采用3GP或者MP4封装容器。</p>
<h3>AAC编码的混乱情况</h3>
<p>上面的压缩，AAC编码器使用的都是Nero Encoder，其中“规格”有这样几个选项：Auto、LC-AAC、LE-AAC和HE-AAC v2。经过测试，这几个规格压缩的音频都可以被Flash Player支持。</p>
<p align="center"><img src="http://www.zengrong.net/wp-content/uploads/2007/12/h264neroencoder-thumb.png" alt="Nero Encoder的规格" height="184" width="300" />|<strong><br />
Nero Encoder的选项</strong></p>
<p>如果采用CT AAC+编码器，选项就变成了下面这样，更加复杂了。经过测试，这几个选项的组合也都可以被Flash Player支持。不论选择MPEG-4 AAC还是MPEG-2 AAC，都没有问题。</p>
<p align="center"><img src="http://www.zengrong.net/wp-content/uploads/2007/12/h264ctaac-thumb.png" alt="h264ctaac" height="184" width="300" /><br />
<strong>CT AAC+的选项</strong></p>
<p>如果采用FAAC编码器，选项就变成了下面这样。经过测试，这几个选项的组合也都可以被Flash Player支持，MPEG版本的选择也没有关系。</p>
<p style="text-align: center"><img src="http://www.zengrong.net/wp-content/uploads/2007/12/h264faac-thumb.png" alt="h264faac" height="200" width="300" /><br />
<strong>FAAC的选项</strong></p>
<p>事实上，NERO Encoder和CT AAC+中的LC-AAC，就是FAAC中的Low Complexity（无长时预测的AAC）；而NERO Encoder中的HE-AAC，就是CT AAC+中的aacPlus，它加了SBR(spectral band replication)，HE代表high efficiency。这也是为什么前面压缩WMV视频的时候，选择的是HE-AAC编码，在编码之后的文件信息里面显示的却是下面这些内容的原因了：</p>
<blockquote><p>Codec : AAC LC-SBR<br />
Codec/Info : AAC Low Complexity with Spectral Band Replication</p></blockquote>
<p>根据Adobe公布的信息，Flash Player支持这些AAC编码：AAC Main; AAC LC; SBR ，因此，我一般选择使用NERO Encoder的HE-AAC。</p>
<h3>参考链接</h3>
<ol>
<li><a href="http://bbs.lmtw.com/dispbbs.asp?boardID=111&amp;ID=141583&amp;page=1" title="http://bbs.lmtw.com/dispbbs.asp?boardID=111&amp;ID=141583&amp;page=1">http://bbs.lmtw.com/dispbbs.asp?boardID=111&amp;ID=141583&amp;page=1</a></li>
<li><a href="http://mediacoder.sourceforge.net/index_zh.htm" title="http://mediacoder.sourceforge.net/index_zh.htm">http://mediacoder.sourceforge.net/index_zh.htm</a></li>
<li><a href="http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf" title="http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf">http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf</a></li>
<li><a href="http://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html" title="http://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html">http://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html</a></li>
<li><a href="http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html" title="http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html">http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html</a></li>
<li><a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1" title="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1">http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://zengrong.net/post/393.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

