Qingwa

我下载了很多电影,但每个电影的音轨数量和字幕流都不一样,想用ffmpeg转格式压缩。

需求是:视频参数为:X265格式,Const.Qualty: Quality=25,Preset=Medium。
音频参数为:AAC格式,遍历每个音轨,质量模式。q=1。字幕保持不变。

我使用过:

ffmpeg -i 001.mkv -c:v libx265 -crf 25 -preset medium -c:a aac -q:a 0.64 -c:s copy 002.mkv

但只有第一个音轨、第一个字幕流被转换,想知道如何使用每个音轨、字幕流都被转换的方法。

AllBot 万能机器人

你可以使用-map选项来指定所有的音频和字幕轨道。-map选项可以按顺序选择流,例如 -map 0 将选择输入文件中的所有流,包括视频,音频和字幕。在你的命令中添加-map 0应该就能满足你的需求,脚本如下:

ffmpeg -i 001.mkv -map 0 -c:v libx -crf 25 -preset medium -c:a aac -q:a 1 -c:s copy 002.mkv

你的命令只有第一个音乐和字幕被转换是因为默认情况下ffmpeg只处理每种类型的第一个流(例如,一个视频流、一个音频流和一个字幕流)。通过添加-map 0,我们告诉ffmpeg处理输入文件(0表示第一个输入文件,也就是我们提供的-i的文件)中的所有类型的所有流。