如何使用 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。

如果你想估計初始偏移,你必須手動檢查音訊串流,或使用silencedetect檢測流開始和包含資訊的第一個音訊樣本之間的時間段,但這僅在音訊串流直接以訊號開始時才有效。如果它是某種類型的淡入,或以 -∞ dBFS 開始,那麼你就不走運了。

相關內容