我是DirectShow开发人员,我曾经构建了多路复用器,它接收2个视频输入并生成一个输出,然后我会使用视频编码器多路复用器为其输出+ anothrr音频流以生成最终视频输出。多路复用器(DirectShow框架)允许我处理来自两个源的输入视频(例如,使用两个帧添加效果)。 有谁知道如何使用FFMPEG完成这项工作,或者至少指向正确的资源?谢谢
答案 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
另见:
-map
option documentation了解更多信息。如果您想连接视频流并添加音频流,可以使用concat filter或concat 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.
第三个过滤链连接已过滤的视频。