使用单个ffmpeg调用将视频文件拆分为单独的视频和音频文件?

时间:2015-01-30 06:47:31

标签: audio video ffmpeg

背景:我想使用MLT melt来渲染一个项目,但是我希望这个渲染能够生成单独的音频和视频文件。我打算使用melt""消费者"使用avformat库的ffmpeg,因此我就ffmpeg制定了这个问题。

根据Useful FFmpeg Commands For Converting Audio & Video Files (labnol.org),以下是可能的:

ffmpeg -i video.mp4 -t 00:00:50 -c copy small-1.mp4 -ss 00:00:50 -codec copy small-2.mp4

...切片"合并"音频+视频文件分为两个单独的" chunk"单个调用中的文件,也是音频+视频文件;那不是我需要的。

然后,ffmpeg Documentation (ffmpeg.org),提及:

ffmpeg -i INPUT -map_channel 0.0.0 OUTPUT_CH0 -map_channel 0.0.1 OUTPUT_CH1

...将立体声音频文件的两个声道内容的整个持续时间分成两个单声道文件;这更像是我需要的,除了我想将A + V文件分成立体声音频文件和视频文件。

所以我用elephantsdream_teaser.ogv尝试了这个:

ffmpeg -i /tmp/elephantsdream_teaser.ogv \
  -map 0.0 -vcodec copy ele.ogv -map 0.1 -acodec copy ele.ogg

...但是这会失败" 流映射的数量必须与输出流的数量相匹配" (即使创建了零大小的ele.ogvele.ogg)。

所以我的问题是 - ffmpeg是这样的,如果是,我该怎么做?

1 个答案:

答案 0 :(得分:3)

您的命令有效,但您需要使用列指定映射而不是点:

ffmpeg -i /tmp/elephantsdream_teaser.ogv -map 0:0 -vcodec copy ele.ogv -map 0:1 -acodec copy ele.ogg

您可能希望使用更新的ffmpeg版本进行测试。我的命令出错了:

[ogg @ 00000000043f8480] Invalid stream specifier: .0.
Last message repeated 3 times
Stream map '0.0' matches no streams.