Remux到MKV但使用FFmpeg添加所有流

时间:2013-02-24 08:02:53

标签: ffmpeg

我正在尝试自动化FFmpeg以将给定目录中的所有视频文件重新转移到MKV。我正在使用

ffmpeg -i $INPUT -c copy $OUTPUT.mkv

但是,有些流会以这种方式跳过 - 例如,如果有2个音频流,则只有1个流进入输出文件。

如何指定输入中的所有流必须复制到输出?

由于我正在尝试自动化FFmpeg,最好不要为每个文件更改命令,即手动指定所有带-map的流将要求我首先解析每个文件。如果我需要,我会这样做,但如果有更好的解决方案,我宁愿这样做。

1 个答案:

答案 0 :(得分:16)

  

如何指定必须将输入中的所有流复制到输出?

-map选项可以使用快捷键-map 0

执行此操作

例如:

ffmpeg -i input.mkv -c copy -map 0:0 -map 0:2 output.mkv

将流0:0和0:2复制到output.mkv。

ffmpeg -i input.mkv -c copy -map 0 output.mkv

所有输入流从输入0(input.mkv)复制到输出(即使有多个视频,音频或字幕流)。

-map值对应输入数字(0是第一个输入,1是第二个输入,等等):如果添加其他输入( - >输入1),并且还想复制所有内容,然后您需要添加-map 1

您可以使用ffprobe分析文件,并查看哪个流映射到哪里。如果收到-fflags +genpts错误,请尝试unknown timestamp。有关详细教程,请参阅the FFmpeg Wiki page on the -map option