FFMPEG视频多路复用器

时间:2015-12-03 10:02:21

标签: ffmpeg

我是DirectShow开发人员,我曾经构建了多路复用器,它接收2个视频输入并生成一个输出,然后我会使用视频编码器多路复用器为其输出+ anothrr音频流以生成最终视频输出。多路复用器(DirectShow框架)允许我处理来自两个源的输入视频(例如,使用两个帧添加效果)。 有谁知道如何使用FFMPEG完成这项工作,或者至少指向正确的资源?谢谢

1 个答案:

答案 0 :(得分:1)

由于您的问题非常模糊,我将提供三个"解决方案"。

木星

来自各种输入的多路复用流很容易。此示例将stream copy来自input0.mkv的所有视频流,来自input1.mp4的所有视频流以及来自input2.oga的所有音频流。生成的输出文件将至少包含2个视频流和至少1个音频流。输出中的确切流数取决于输入中存在的流的数量。

ffmpeg -i input0.mkv -i input1.mp4 -i input2.oga -map 0:v -map 1:v -map 2:a -c copy -shortest output.mkv

另见:

级联

如果您想连接视频流并添加音频流,可以使用concat filterconcat demuxer。这是使用concat过滤器的基本示例:

ffmpeg -i video0.webm -i video1.mp4 -i audio.wav -filter_complex \
"[0:v][1:v]concat=n=2:v=1:a=0[v]" -map "[v]" -map 2:a output.mkv

有关更多示例,请参阅FFmpeg Wiki: Concatenate

与其他过滤连接

ffmpeg -i video0.webm -i video1.mp4 -i audio.wav -filter_complex \
"[0:v]scale=1280:-2,vflip,setpts=PTS-STARTPTS[v0]; \
 [1:v]fps=25,curves=preset=increase_contrast,setpts=PTS-STARTPTS[v1]; \
 [v0][v1]concat=n=2:v=1:a=0[v]" \
-map "[v]" -map 2:a output.mkv
  • 第一个filterchain将缩放,垂直翻转,并为第一个视频输入设置时间戳为0.

  • 第二个过滤链将帧速率设置为25,应用曲线,并为第二个视频输入设置时间戳为0.

  • 第三个过滤链连接已过滤的视频。