ffmpeg+neroaacenc压制多声道音轨音频

2012年01月04日 分类:学习笔记x264

现在视频压制中x264是主流,在音频中aac无疑是霸主,本篇文章将讲解用ffmpeg+neroaacenc压制多声道音轨音频的方法。

现在很多的片源都是高码率H264+DTS的组合,有些还有多音轨,比如影片的评论音轨、其他语言音轨,但为了让压制后的视频文件尽可能的小,会挑出中文音轨,把多声道的合并成双声道。当然也可以用视频转换软件,我这里要讲的是用ffmpeg+neroaacenc的命令行压制方法,这种方法效率更高。

首先准备好工具:
ffmpeg:http://ffmpeg.zeranoe.com/builds/ (下载最新的Static版本,其他是开发者用的)
neroaacenc:http://www.nero.com/eng/downloads-nerodigital-nero-aac-codec.php (agree 然后填个邮箱)

下好后把里面的ffmpeg.exe和neroaacenc.exe放到一个文件夹中。
再开始压制前我们要查看视频文件的信息,新建一个文本文件,重命名为info.bat,内容如下:

CD /D "%~dp0"

ffmpeg -i "%~1"

pause

把片源拖到这个info.bat上,出现: ffmpeg 注意红色框,#0:0是视频,#0:1是音轨,如果是多音轨的话会有#0:2、#0:3之类的,这里要记住这个编号,下面要用的。

接下来开始压制,由于neroaacenc只支持wav的输入,所以音频要先经过ffmpeg转成wav,再输入到neroaacenc中压制成aac。
再新建一个文本文件,命名为wavcoder.bat (名字随便取,自己知道功能就行),内容如下:

CD /D "%~dp0"

ffmpeg -i "%~1" -ac 2 -map 0:1 "%~dpn1_a.wav"

pause

里面的-ac 2 是输出双声道,如果片源本来就是双声道的话可以不用写,遇到DTS 5.1那种多声道就可以混合声道。
-map 0:1 是音轨选择,把上一步查看到的音轨号填入就行了,单音轨的可以不用写。

保存,片源拖到wavcoder.bat上,自动开始转换,完成后在当前目录下生产wav文件。有了它就可以进一步压制aac了。
新建文本文件,命名为aaccoder.bat ,内容如下:

CD /D "%~dp0"

neroAacEnc -if "%~1" -of "%~dpn1_a.m4a" -q 0.28 -ignorelength

pause

-q 0.28是选择压制的品质,一般0.28~0.32,生产的aac码率在75~120K之间,这个根据情况选择。
保存,片源拖到aaccoder.bat上,自动开始转换,完成后在当前目录下生产m4a文件,至此全部完成,不满意的话可以修改-q 参数重新压制。

上面的是分步压制,还有一种联合压制的方法,没有生产wav文件这部,ffmpeg的输出直接提供给neroaacenc。
再次新建文本,名字为acoder.bat,内容:

CD /D "%~dp0"

ffmpeg -i "%~1" -ac 2 -map 0:1 -f wav - | neroaacenc -q 0.28 -if - -ignorelength -of "%~dpn1_a.m4a"

pause

参数都一样的,只是把两部合在了一起,拖入片源就行了。

虽然用命令行压制步骤会比较麻烦,但这种方法的效率是最高的,各种参数都可以自己设置,对系统资源的利用率也最高。

作者:wuyuan 本文来自Wuyuan's Blog 转载请注明,谢谢! 文章地址: https://wuyuans.com/2012/01/ffmpeg_and_neroaacenc_encode_audio