我知道如何使用 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 开始,那么您就没那么幸运了。