【问题标题】:FFMPEG Video MultiplexerFFMPEG 视频多路复用器
【发布时间】:2016-03-07 21:14:19
【问题描述】:

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

【问题讨论】:

  • 我不明白你在做什么。你到底想做什么?
  • 我想处理两个视频文件,file1和file2,生成file3,然后我想在新文件中添加一个音频流,但是,我也想有机会处理来自文件 1 和 2 的视频帧...我可以在 DirectShow API 中轻松做到这一点,但如何使用 FFMPEG

标签: ffmpeg


【解决方案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,用于第二个视频输入。

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

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 2012-10-07
    • 2015-10-03
    • 2017-02-27
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2018-12-22
    相关资源
    最近更新 更多