<?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>jjgod / blog &#187; mplayer</title>
	<atom:link href="http://blog.jjgod.org/tag/mplayer/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jjgod.org</link>
	<description>Random notes &#38; thoughts by Jiang Jiang.</description>
	<lastBuildDate>Mon, 16 Jan 2012 11:08:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CoreAVC 与 CorePlayer</title>
		<link>http://blog.jjgod.org/2009/02/05/coreavc-an-coreplayer/</link>
		<comments>http://blog.jjgod.org/2009/02/05/coreavc-an-coreplayer/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 08:09:33 +0000</pubDate>
		<dc:creator>jjgod</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[avc]]></category>
		<category><![CDATA[coreavc]]></category>
		<category><![CDATA[coreplayer]]></category>
		<category><![CDATA[directshow]]></category>
		<category><![CDATA[h264]]></category>
		<category><![CDATA[mplayer]]></category>
		<category><![CDATA[wine]]></category>

		<guid isPermaLink="false">http://blog.jjgod.org/?p=353</guid>
		<description><![CDATA[昨天碰巧翻到一个叫 CoreAVC for Linux 的项目，其实应该之前很早就听说过，因为这个项目在去年五月份的时候曾经被 Google Code 停止提供服务，因为“DMCA complaint”，但现在又恢复了，不过可能 patch 更新得不够及时，不一定能够用在 svn HEAD 的 mplayer 上。 CoreAVC for Linux 到底是个怎么样的项目呢？众所周知的是，CoreAVC 是目前公认软解 H.264 效率最高的解码器，在 Windows 平台有提供，价格是 $15 (不过大部分 Windows 用户都用破解版本的)。开发这个解码器的公司还把它移植到了 Palm, Symbian, Windows CE 等平台上，是移动平台中最有名的一个通用播放器，叫 CorePlayer。 从去年二月开始，CorePlayer 被移植到了 Windows 和 Mac OS X 平台上，但官方没有提供给 Mac OS X 平台的 CoreAVC (假如有的话，应该是 Perian, Flip4Mac 那样作为 QuickTime 插件的形式，但不知道这个公司出于什么考虑，并没有像 Windows [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://omploader.org/vMTdueA/coreplayer-1.png" alt="CorePlayer Pro for OS X" class="left" /></p>

<p>昨天碰巧翻到一个叫 <a href="http://code.google.com/p/coreavc-for-linux">CoreAVC for Linux</a> 的项目，其实应该之前很早就听说过，因为这个项目在去年五月份的时候曾经被 Google Code 停止提供服务，因为“<a href="http://en.wikipedia.org/wiki/CoreAVC#The_CoreAVC-For-Linux_DMCA_complaint">DMCA complaint</a>”，但现在又恢复了，不过可能 patch 更新得不够及时，不一定能够用在 svn HEAD 的 mplayer 上。</p>

<p>CoreAVC for Linux 到底是个怎么样的项目呢？众所周知的是，CoreAVC 是目前公认软解 H.264 效率最高的解码器，在 Windows 平台有提供，价格是 $15 (不过大部分 Windows 用户都用破解版本的)。开发这个解码器的公司还把它移植到了 Palm, Symbian, Windows CE 等平台上，是移动平台中最有名的一个通用播放器，叫 CorePlayer。</p>

<p>从去年二月开始，CorePlayer 被移植到了 Windows 和 Mac OS X 平台上，但官方没有提供给 Mac OS X 平台的 CoreAVC (假如有的话，应该是 Perian, Flip4Mac 那样作为 QuickTime 插件的形式，但不知道这个公司出于什么考虑，并没有像 Windows 平台那样提供)。而 Linux 平台下也没有提供公开销售的版本。所以 CoreAVC for Linux 就是为了能在 Linux 平台下使用这个解码器而产生的。</p>

<p>虽然细节比较复杂，我现在也不大了然，但原理也不难理解，修改 mplayer 的 DirectShow 支持代码，类似调用 RealMedia 的 DirectShow 插件那样来调用 CoreAVC 的 DirectShow 插件。开发者说有<a href="http://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallation">两种修改方法</a>：</p>

<ol>
<li>使用一个外部程序 dshowserver 来提供服务，修改 mplayer 使之能够支持 dshowserver，这种方法能够适用于 x86_64 和 ia32</li>
<li>直接修改 mplayer 的 Win32 dshow 代码使之支持 CoreAVC，只适用于 ia32</li>
</ol>

<p>作者说第一种是推荐的方法，但不能用于 Windows 和 Mac。而第二种完全没有提到具体步骤，也没见到具体的 patch。</p>

<p>正巧看到 <a href="http://www.mobihand.com/product.asp?id=16794">CorePlayer Pro for OS X</a>，虽然没提供试用版本，但好在也不算贵 ($17)，就买了一个试试。下面是一点结论：</p>

<p><img src="http://omploader.org/vMTdueQ/coreplayer-2.png" alt="No AC3 support in CorePlayer OS X" class="right" /></p>

<ol>
<li><p>最大的问题是音频解码支持很弱，不支持 AC3 解码，不支持 DTS 解码，而且发布之后一年内始终没得到解决，开发者很有点言而无信，一开始在去年二月说“数周内”能解决，到 12 月还没提供，又改说我们可能要依赖平台提供的功能实现 (Windows 下用 DirectShow, Mac 下用 Core Audio)，这也没问题，可这都二月了，还没解决。感觉相比移动平台，这个公司并不怎么注重桌面平台的支持。</p></li>
<li><p>界面很土，非要做跨平台的界面，结果用起来非常不方便，更不用说完全不 Mac 化了。</p></li>
<li><p>解码 H.264 的效率确实比其他任何 Mac 平台的解码器都要好，手头一个 1080p 的 Fight Club 的 BDRe, 用 Plex 时的 CPU 占用率在 120% ~ 150% 左右，用 CorePlayer 时占用率在 75% ~ 80% 左右。</p></li>
<li><p>不支持外挂字幕，而且短期内不打算支持。</p></li>
</ol>

<p>总的说来，我觉得他们最大的决策错误就是不提供单独的 CoreAVC，非要自己做播放器，结果给自己带来了过重的开发负担，比如界面、音频编码器这些，如果只提供一个 QuickTime 插件，就压根不需要他们操心了。H.264 的解码效率是好，但也没有好到超过一个数量级的程度，在 Snow Leopard 和新一代 Mac 提供了显卡硬解码支持的背景下，就更难让人看好这个产品的前景了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jjgod.org/2009/02/05/coreavc-an-coreplayer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>mplayer 的字幕播放</title>
		<link>http://blog.jjgod.org/2008/02/17/playing-mplayer-subtitles/</link>
		<comments>http://blog.jjgod.org/2008/02/17/playing-mplayer-subtitles/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 22:48:01 +0000</pubDate>
		<dc:creator>jjgod</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[ass]]></category>
		<category><![CDATA[matroska]]></category>
		<category><![CDATA[mkv]]></category>
		<category><![CDATA[mplayer]]></category>
		<category><![CDATA[srt]]></category>
		<category><![CDATA[subtitle]]></category>

		<guid isPermaLink="false">http://blog.jjgod.org/2008/02/17/playing-mplayer-subtitles/</guid>
		<description><![CDATA[mplayer 是常用的播放软件，其文档对于涉及字幕播放的一些参数不甚详尽，或者留意的人不多，这里对常用选项略作一介绍。 以一个包含了字幕的 mkv 文件为例: $ mkvinfo ~/Vexille_2077_Nippon_Sakoku.mkv ... &#124;+ Segment tracks &#124; + A track &#124; + Track number: 1 &#124; + Track UID: 141444798 &#124; + Track type: video &#124; + Enabled: 1 &#124; + Default flag: 1 &#124; + Forced flag: 0 &#124; + Lacing flag: 0 &#124; + MinCache: 1 &#124; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mplayerhq.hu">mplayer</a> 是常用的播放软件，其文档对于涉及字幕播放的一些参数不甚详尽，或者留意的人不多，这里对常用选项略作一介绍。</p>

<p>以一个包含了字幕的 mkv 文件为例:</p>

<pre><code>$ mkvinfo ~/Vexille_2077_Nippon_Sakoku.mkv
...
|+ Segment tracks
| + A track
|  + Track number: 1
|  + Track UID: 141444798
|  + Track type: video
|  + Enabled: 1
|  + Default flag: 1
|  + Forced flag: 0
|  + Lacing flag: 0
|  + MinCache: 1
|  + Timecode scale: 1.000000
|  + Max BlockAddition ID: 0
|  + Codec ID: V_MPEG4/ISO/AVC
|  + Codec decode all: 1
|  + CodecPrivate, length 131
|  + Default duration: 41.708ms (23.976 fps for a video track)
|  + Language: jpn
|  + Name: 
|  + Video track
|   + Pixel width: 864
|   + Pixel height: 480
|   + Interlaced: 0
|   + Display width: 864
|   + Display height: 480
| + A track
|  + Track number: 2
|  + Track UID: 3113156519
|  + Track type: audio
|  + Enabled: 1
|  + Default flag: 1
|  + Forced flag: 0
|  + Lacing flag: 1
|  + MinCache: 0
|  + Timecode scale: 1.000000
|  + Max BlockAddition ID: 0
|  + Codec ID: A_AC3
|  + Codec decode all: 1
|  + Default duration: 32.000ms (31.250 fps for a video track)
|  + Language: jpn
|  + Name: 
|  + Audio track
|   + Sampling frequency: 48000.000000
|   + Channels: 6
| + A track
|  + Track number: 3
|  + Track UID: 3841949375
|  + Track type: subtitles
|  + Enabled: 1
|  + Default flag: 1
|  + Forced flag: 0
|  + Lacing flag: 0
|  + MinCache: 0
|  + Timecode scale: 1.000000
|  + Max BlockAddition ID: 0
|  + Codec ID: S_TEXT/ASS
|  + Codec decode all: 1
|  + CodecPrivate, length 903
|  + Language: chi
|  + Name: GB
| + A track
|  + Track number: 4
|  + Track UID: 1264721059
|  + Track type: subtitles
|  + Enabled: 1
|  + Default flag: 0
|  + Forced flag: 0
|  + Lacing flag: 0
|  + MinCache: 0
|  + Timecode scale: 1.000000
|  + Max BlockAddition ID: 0
|  + Codec ID: S_TEXT/ASS
|  + Codec decode all: 1
|  + CodecPrivate, length 891
|  + Language: chi
|  + Name: Big5
|+ EbmlVoid (size: 1024)
|+ Attachments
| + Attached
|  + File name: Font.TTF
|  + Mime type: application/x-truetype-font
|  + File data, size: 2484512
|  + File UID: 577931698
|  + File description: CN-GB
...
</code></pre>

<p>这是一个比较典型的情况: 有两个 subtitles track，分别对应简体和繁体的字幕 (从 Name 分别叫 GB 和 Big5 可以看出)，字幕的格式都是 <a href="http://en.wikipedia.org/wiki/SubStation_Alpha">ASS</a>，并自带了一个附件 (Attachment)，这个附件是一个名为 Font.TTF 的字体文件。*</p>

<ul>
<li>注: 顺带说一句，附带有版权的字体文件是非法的。</li>
</ul>

<p>mplayer 默认的选项并不能让我们很好地播放这个 mkv 文件，所以需要一些配置。在这里，我首先建议编辑你的 <code>~/.mplayer/config</code> 文件，而不是通过 <a href="http://mplayerosx.sourceforge.net">MPlayer OSX</a> 这样的图形化前端，因为 mplayer 同时支持用配置文件和用命令行选项来选择参数，前者调整起来要方便一些。</p>

<p>对于中文用户，最常见的一个选项是</p>

<pre><code>subcp=gbk
</code></pre>

<p>这表示我们显示地指定将所有字幕文件以 GBK 编码处理，对于大部分中文字幕都是适用的。*</p>

<ul>
<li><p>注: 近来，在 <a href="http://shooter.cn">shooter</a> (射手网) 上提供的字幕有些也会以 UTF-16 格式出现，如果你用 GBK 编码无法成功看得到字幕，可以尝试换用 <code>subcp=utf-16</code> 看看。</p></li>
<li><p>注 2: mplayer 可以用 <a href="http://packages.debian.org/enca">enca</a> 库来进行自动编码探测，可惜的是这个库并没有对 CJK 相关语系编码的支持，如果有可能，将 <a href="http://www.mozilla.org/projects/intl/detectorsrc.html">Universal Charset Detector</a> 用在此处或许更好。</p></li>
</ul>

<p>对于 ASS 格式的字幕，mplayer 有两种渲染方式，一种是忽略所有的格式信息，将它作为纯文本显示，另一种则是启用格式，一般我们希望使用后者，所以可以加上选项:</p>

<pre><code>ass=1
</code></pre>

<p>对于自带字体的情况，默认 mplayer 并不解析它们，只有在:</p>

<pre><code>embeddedfonts=1
</code></pre>

<p>时才会解析，所以也建议加上这个选项。</p>

<p>在播放 <a href="http://matroska.org">mkv</a> 文件时，mplayer 默认并不会选择字幕文件的 track，所以我们需要手动用 <code>-sid 0</code> 或者 <code>-slang chi</code> 参数来选择。(你也可以将这类参数写入配置文件，不过在 mkv 不自带字幕时这样的参数不会有效。)</p>

<p>经过上述的调整，mplayer 已经可以很好地播放 ASS 格式字幕和 mkv 媒体文件了，不过还有一种更常见的字幕格式需要调节，那就是 srt。</p>

<p>srt 字幕常以外置文件的形式提供，放在媒体文件同一个目录下，以同样的前缀为名，后缀一般为 .chs.srt, .gb.srt 这样的形式，所以为了让 mplayer 的外部字幕文件查找能够找到这些文件，我们首先就应该加上下面的选项:</p>

<pre><code>sub-fuzziness=1
</code></pre>

<p>这个选项的可选值对应:</p>

<pre><code>0 = 不模糊匹配
1 = 匹配任何包含原媒体文件名的字幕文件，但包含原媒体文件名和 slang 所指定语言的优先级更高
2 = 匹配任何字幕文件
</code></pre>

<p>所以当同一个目录下有多个语言的字幕时，你可以用</p>

<pre><code>sub-fuzziness=1
slang=chs
</code></pre>

<p>这样的配置来优先选择后缀为 .chs.srt 的那个。</p>

<p>对于 srt 字幕文件，一个有用的功能是字体大小的缩放 (因为 srt 本身没有指定字体大小)，经过试验，对于一般 DVDRip (resolution 在 600&#215;300 左右)，用以下参数较恰当:</p>

<pre><code>subfont-autoscale=2
subfont-text-scale=3.5
</code></pre>

<p>对于 720p / 1080p 的 HDRe/Remux，则应该将 <code>subfont-text-scale</code> 进一步缩小到 2.5 左右较好。</p>

<p>欢迎补充更多 mplayer 的使用经验。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jjgod.org/2008/02/17/playing-mplayer-subtitles/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

