如何使用 ffmpeg 获取音频和视频之间的精确延迟?

如何使用 ffmpeg 获取音频和视频之间的精确延迟?

我知道如何使用 ffmpeg 的标志设置延迟-itsoffset,但我想知道如何获取和设置精确的延迟时间。

答案1

如果视频和音频流之间存在固有延迟,则没有简单的方法可以找出。假设您正在创建一个视听文件,其中音频流被故意使用偏移itsoffset。这将导致音频呈现时间戳相对于视频发生更改。

假设这是原始的,假设每个视频帧有三个音频帧(实际上这太少了):

V1       V2          V3    ...
A1 A2 A3 A4 A5 A6 A7 A8 A9 ...

音频帧将具有时间戳 A1 = 0、A2 = 1、A3 = 2 等。

现在延迟音频流:

V1       V2          V3    ...
xx xx xx A1 A2 A3 A4 A5 A6 ...

这里,前三个空样本将具有时间戳 0、1 和 2,而 A1 将具有 3。对于玩家来说,这意味着 V2 和 A1 属于一起,这没有什么不对。

如果要估计初始偏移,则必须手动检查音频流,或使用silencedetect检测音频流开始和第一个包含信息的音频样本之间的时间间隔,但这仅在音频流直接以信号开始时才有效。如果它是某种淡入淡出,或者以 -∞ dBFS 开始,那么您就没那么幸运了。

相关内容