FFmpeg实用操作

最近的实验中有许多音频处理的工作,使用FFmpeg较为频繁,本文用于记录实验中使用过的操作(官方文档)以及其中遇到的一些问题(感谢DavidAQ的答疑解惑)。

转格式

1
$ ffmpeg -i Input.mp3 Output.wav

截取

官网提供的命令:

1
$ ffmpeg -i Input.mp3 -ss Starttime -t Duration Output.mp3

但是经过FFmpeg处理的音频文件,在苹果系统(OSX, IOS)以及苹果的播放器(ITunes, QuickTime)上往往会显示错误的长度时间。这是FFmpeg的Bug,需要添加参数-write_xing规避:

1
$ ffmpeg -i Input.mp3 -write_xing 0 -ss Starttime -t Duration Output.mp3

或者指定音频编码器直接复制原来的编码:

1
$ ffmpeg -ss Starttime -i Input.mp3 -t Duration -acodec copy Output.mp3

-ss提到-i前面作为输入文件的处理参数,这样会先跳转到Starttime再开始解码,而原来的会从开始解码然后丢弃掉Starttime之前的结果,同时-acodec copy表示音频的编码不会发生改变,这样会大大提高速度。

注意处理文件如果不是图片,不要让输入文件与输出文件相同,覆盖后会出现神奇的Bug。

淡入(淡出)

FFmpeg的音频过滤器可以实现这一效果:

1
$ ffmpeg -i Input.mp3 -write_xing 0 -af afade=t=in:ss=0:d=15 Output.mp3