【问题标题】:ffmpeg leaves audio gap when concatening videosffmpeg 在连接视频时会留下音频间隙
【发布时间】:2016-11-08 21:52:37
【问题描述】:

我正在尝试将视频分成两部分,然后用 ffmpeg 重新组装,但最终输出在片段相遇的地方有一个小的音频故障。我正在使用以下命令将视频 1.mp4 分成两部分:

ffmpeg -i 1.mp4 -ss 00:00:00 -t 00:00:02 -async 1 1-1.mp4

ffmpeg -i 1.mp4 -ss 00:00:02 -t 00:00:02 -async 1 1-2.mp4

一旦我有了这两个部分,我会将它们连接在一起:

ffmpeg -f concat -i files.txt -c 复制 output.mp4

files.txt 正确列出了这两个文件。谁能指出问题出在哪里?

谢谢

【问题讨论】:

    标签: audio video ffmpeg


    【解决方案1】:

    故障可能是由于音频priming sample 出现在两者之间。

    由于您正在重新编码片段,因此您可以在一个命令中执行此操作:

    ffmpeg -i 1.mp4 -filter_complex 
                    "[0]trim=duration=2[v1];[0]trim=2:4,setpts=PTS-STARTPTS[v2];
                     [0]atrim=duration=2[a1];[0]atrim=2:4,asetpts=PTS-STARTPTS[a2];
                     [v1][a1][v2][a2]concat=n=2:v=1:a=1[v][a]"
           -map "[v]" -map "[a]" output.mp4
    

    【讨论】:

    • 谢谢马尔维亚。我运行了这个命令,它从我原来的 6 秒视频中创建了一个 4 秒的视频,没有任何音频间隙。我想我了解什么是音频启动样本,但我不了解您的命令的参数。您能否解释或告诉我如何调整此命令以用作源 1-1.mp4 和 1-2.mp4?非常感谢。
    • 首先,我将源的视频流拆分了两次:trim=duration=2 表示从0 开始,拆分一个 2 秒的片段。 trim=2:4 表示从t=2 拆分为t=4。我使用过滤器的音频版本对音频做同样的事情。然后我使用concat 过滤器将这些部分连接在一起。除非您需要,否则我不建议您通过中间文件路径 (1-1.mp4, 1-2.mp4)。
    • 而 setpts 过滤器将重置剪切片段的时间戳。由于 FFmpeg 的一般工作方式而需要。
    • 好吧,我真的得去中间文件了。因为此代码的真正目的是按顺序连接多个文件。想象一下,我的用户可以从不同的场景中选择来构建他的最终视频,这就是我打算做的。
    • 这个答案可以更新吗?已经 2 年了,仍然没有对这个问题的实际答案。
    【解决方案2】:

    我有同样的问题大约 3 周。 只需使用 sox 合并 mp3 文件

    sox in1.mp3 in2.mp3 in3.mp3 out.mp3
    

    当我将 concat 与 FFMPEG 一起使用时,它会产生 12.5 毫秒(我在使用 Audacity 时看到它们)的音频间隙。 (不知道为什么)

    也许对于您的情况,最好使用 ffmpeg 将音频和视频提取到两个单独的文件中,合并它们(使用 FFMPEG 的视频和使用 sox 的音频)然后将这些文件放在一个容器 (mp4) 文件中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-09
      • 2023-04-06
      • 2012-10-02
      • 2016-09-06
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多