从同事那拷了个《夏日大作战》,播放的时候发现没有人声,只有背景音乐,仔细看了下控制台输出,该片有三条音轨,第一条是5.1声道,第二条是2声道,第三条是2声道评论音轨,默认播放的是第一条音轨,可是mplayer的音频解码器好像不支持6声道的downmixing,那么就切换到第二条音轨吧,切换音轨的快捷键是Shift-3,非常遗憾,第二音轨播放失败(哦,mplayer也有播放不出的时候,话说还是flac的?),评论音轨是没法听的,只好继续上网找,发现可以用音频过滤器pan完成此项功能,直接翻到mplayer手册的最后就有一个6声道转立体声的范例,直接使用即可:
-af pan=2:.32:.32:.39:.06:.06:.39:.17:-.17:-.17:.17:.33:.33
pan用法有些复杂,我半天也没看懂,具体可以参考官方文档,里面也有一个6转2的范例,貌似声音更大些:
-af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1
不过看了几个过滤器发现还有更简单的办法,有一个给耳机用的模拟环绕立体声,直接就6转2了:
-af hrtf
哎呀,过滤器好多,还有一个卡拉OK的-af karaoke,测试了一下,消人声真得很棒,以后可以自己制作伴奏带了,哈哈,……只是我发现播放出的音量也降低了些,没关系,还有volume过滤器(它可是-softvol的幕后!):
-af karaoke,volume=10
增加10分贝的增益,嗯,软件增益的后果是信噪比会降低,不过我不是金耳朵,差不多就行了:)

最后再介绍一个channels过滤器,它是替换和移动声道,而pan是叠加的,所以一开始我如果把人声所在的声道替换到前置左右就会发现背景音乐几乎没有了。。。这个用法比较简单,看手册就能学会,我估计在播放那些左右声道是两种语言的片子(比如《射雕英雄传》那些rmvb们)或者喇叭不够声道数的时候会有用,下面是播放左声道为立体声的例子:
-af channels=2:2:0:1:0:0
参数依次是输出2声道,替换规则数2条,第一条规则0:1表示把0声道复制到1声道去,第二条规则0:0则是把0声道复制到0声道,(0是左,1是右,更多声道表示可以看刚才提到的官方文档)。

唉,知道mplayer很强大,没想到这么强大,还有好多过滤器呢,有空可以慢慢研究,另外《夏日大作战》片子不错!里面黑客都用Linux的,还在Linux下用虚拟机跑Win7,哈哈。