ffmpeg 命令用法:

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

转换文件格式,默认自动根据输出文件扩展名确定输出格式。 输出 mp4 格式时,添加 -strict -2 启用支持 aac 音频编码(低版本?)。 添加 -y 指定自动覆盖已有输出文件。

ffmpeg -i a.mkv -strict -2 a.mp4 -y

-ss, -t 可指定开始时间和持续时间, -t 可换成 -to 指定结束时间。

ffmpeg -i a.mkv -strict -2 -ss 00:05:00 -t 00:01:00 a.mp4 -y

mkv 文件可能包含多个音频/字幕流,不带 -o 参数可在显示各流信息后退出。

ffmpeg -i a.mkv

mkv 转 mp4 等格式时默认只输出一个音频一个视频, 可使用 -map 指定要输出的流,参考 Map 。 一个输入文件支持指定多个输出文件,将不同流输出到不同文件。

ffmpeg -i a.mkv -map 0:0 -map 0:1 -strict -2 -ss 00:05:00 -t 00:01:00 a.mp4 -map 0:0 -map 0:3 -strict -2 -ss 00:05:00 -t 00:01:00 b.mp4 -y

使用 -vf 指定视频过滤器,指定 scale= 可按指定大小(scale=640:-1)或比例(scale=iw*0.75:ih*0.75)缩放输出大小, 参考 https://trac.ffmpeg.org/wiki/Scaling

ffmpeg -i a.mkv -vf scale='iw*0.75:-1' -strict -2 -ss 00:05:00 -t 00:01:00 a.mp4 -y

使用 -vf 指定 subtitles=subtitle.srtass=subtitle.ass 还可以将字幕文件烧录到视频, 参考 HowToBurnSubtitlesIntoVideo

ffmpeg -i a.mkv -vf subtitles=subtitle.srt a.mp4