【问题标题】:ffmpeg merge silent video with another video+audioffmpeg 将静音视频与另一个视频+音频合并
【发布时间】:2016-06-13 02:43:41
【问题描述】:

我想在一个命令中创建来自 3 个来源的视频:

  1. 无声背景视频;
  2. 要叠加的较小视频(长度为 1),保留其音频;
  3. 要叠加的 PNG 徽标

我可以创建视频,但无法获取音轨。我不明白-vf 是否应该在这种情况下工作。这就是我试图做的:

ffmpeg.exe -y -i MASTER_SILENT_VIDEO.mp4 -vf "movie=SMALLER_VIDEO_WITH_AUDIO.flv, scale=320:-1[inner];movie=MY_LOGO.png[inner2]; [in][inner] overlay=800:480,amerge [step1]; [step1][inner2] overlay=30:30 [out]" completed.mp4

“amerge”过滤器应该完成音频合并工作,但它当然不起作用。我发现了涉及-map 或 filtergraph 的类似问题,但它们指的是混合视频源和音频源;我尝试了几个过滤图示例但没有成功。有什么想法吗?

【问题讨论】:

    标签: audio video filter merge ffmpeg


    【解决方案1】:

    使用来自一个输入的音频将一个视频覆盖在另一个视频上

    使用-filter_complex,消除movie源过滤器,并使用-map明确定义输出流:

    ffmpeg -y -i main.mp4 -i overlay_with_audio.flv -i logo.png -filter_complex
    "[1:v]scale=320:-1[scaled];
     [0:v][scaled]overlay=800:480[bg];
     [bg][2:v]overlay=30:30,format=yuv420p[video]"
    -map "[video]" -map 1:a -movflags +faststart
    output.mp4
    

    您可能需要为 overlay filters 提供其他选项,具体取决于输入的长度以及您希望叠加层如何反应,但由于您没有提供命令的完整控制台输出,因此我必须制作一个通用的,效率较低,并且可能是不正确的示例。

    将一个视频覆盖在来自两个输入的其他合并音频上

    ffmpeg -y -i main.mp4 -i overlay_with_audio.flv -i logo.png -filter_complex
    "[1:v]scale=320:-1[scaled];
     [0:v][scaled]overlay=800:480[bg];
     [bg][2:v]overlay=30:30,format=yuv420p[video];
     [0:a][1:a]amerge=inputs=2[audio]"
    -map "[video]" -map "[audio]" -ac 2 -movflags +faststart
    output.mp4
    

    我假设两个输入都是立体声的,并且您需要立体声输出。另见FFmpeg Wiki: Audio channel Manipulation - 2 × stereo → stereo

    【讨论】:

    • 关于您的回答,如果第一个视频(在您的示例中为 main.mp4)也有声音,并且我想保留两者中的两个音频,那么 ffmpeg 命令会发生什么变化?
    • 再次完美,无限感谢。我正在尝试理解 ffmpeg 文档,但这对我来说仍然有点困难。我会深入挖掘!
    猜你喜欢
    • 2020-07-28
    • 2018-12-27
    • 2019-03-30
    • 2021-09-21
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多