gpt4 book ai didi

ffmpeg - 剪切多个部分后音频和视频不同步 - FFMPEG

转载 作者:行者123 更新时间:2023-12-04 23:33:15 50 4
gpt4 key购买 nike

尝试剪切视频的多个部分时,我遵循此问题的解决方案 Cut multiple parts of a video with ffmpeg .但问题是,如果我剪切多次(比如大约 20 次或更多),视频和音频将不会同步。
这是我使用的基线:

  ffmpeg -i video \
-vf "select='between(t,4,6.5)+between(t,17,26)+between(t,74,91)',
setpts=N/FRAME_RATE/TB" \
-af "aselect='between(t,4,6.5)+between(t,17,26)+between(t,74,91)',
asetpts=N/SR/TB" out.mp4

最佳答案

首先,解释。罪魁祸首是帧率:23.98 = 24000/1001 fps。以 between(t,4,6.5) 为例,这些时间戳以秒为单位转换为第 95.904 帧和第 155.844 帧,这两个帧都不存在。假设 select选择最近的帧(它可以截断,但你明白了):它实际上将剪切边界设置在第 96 帧 = 4.004 秒和第 156 帧 = 6.5065 秒。同时,aselect可以在任何整数或半秒内选择准确的音频样本。因此,在此示例中,所选音频样本占您指定的确切 2.5 秒,而视频帧跨越 2.5025 秒,因此后者长 2.5 毫秒。虽然这种同步丢失量可能并不明显,但当您进行 20 次剪辑时,此错误会更加复杂。
那么,如何解决这个问题?我能想到的方法有两种:

  • 调整所有视频select计时到(接近)精确的帧时间。像上面的例子一样,计算所有剪辑的最近帧时间,并在 select 上使用它们。和 aselect .以防万一,公式为 t = round(t_desired*24000/1001)*1001/24000 .音频样本可能与调整后的时间不一致,但每个剪辑只引入少于 1/44100 = 22.68 us错误。这不应该是明显的,即使加上 20 次削减
  • 通过添加 fps=24 来更改视频帧率select前面的过滤器筛选。此帧速率保证帧与整数/半/四分之一秒对齐。如果需要23.98 fps,还可以添加-r 24000/1001输出选项以恢复到原始速率。

  • 希望其中之一对您的情况有所帮助。

    关于ffmpeg - 剪切多个部分后音频和视频不同步 - FFMPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71265774/

    50 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com