【问题标题】:Split a video file into separate video and audio files using a single ffmpeg call?使用单个 ffmpeg 调用将视频文件拆分为单独的视频和音频文件?
【发布时间】:2015-11-26 03:10:20
【问题描述】:

背景:我想使用 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

...在一次调用中将“合并”的音频+视频文件分割成两个单独的“块”文件,这也是音频+视频文件;这不是我需要的。

然后,ffmpeg Documentation (ffmpeg.org) 提到了这一点:

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

... 将立体声 audio 文件的两个通道的内容的整个持续时间拆分为两个单声道文件;这更像是我需要的,除了我想将 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.ogv 和ele.ogg)。

所以我的问题是 - ffmpeg 是否可以实现类似的操作,如果可以,我该怎么做?

【问题讨论】:

    标签: audio video ffmpeg


    【解决方案1】:

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

    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.
    

    【讨论】:

    • 使用0:v 代替0:0 和0:a 代替0:1 更有效,更不容易出现错误映射(除非输入每个流类型有多个流,然后@987654327 @可以用来指定)。
    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多