2015-10-06 229 views
0

我已經寫了一個小應用程序來捕捉音頻和視頻使用AVCaptureMovieFileOutput,這一直很好。它用於在多天內自動收集實驗數據,偶爾打開,一次記錄10-15秒。AVCaptureMovieFileOutput音頻/視頻同步

但是在分析數據時,我們發現在音頻和視頻同步中似乎存在一些漂移。爲了幫助測試,我們設置了一個閃爍的LED與一個音調相結合,並在幾天內記錄了短片段。到第五天,音頻產生了大約250ms的延遲(不是很大,但在觀看時明顯)。下圖顯示使用相同的AVFoundation庫回讀數據(以確保解碼媒體時沒有問題)。繪製視頻的平均強度(以顯示LED閃光燈),並將原始音頻繪製在下方。

Plot highlighting delay

這有點神祕,我希望能揣摩這是什麼原因,所以我可以修復它,要麼解決它。我的理論迄今有:

  • 一個純粹的硬件問題(我們使用的NTSC加密狗),其中一些關於信號的數字化或加密狗上的時鐘有某種歪斜或漂移。我對調查的硬件方面知之甚少。

  • 舍入問題與音頻和視頻的幀持續時間的計數有關,其中輕微的偏移隨着時間累積。如果是這種情況,我們可以計算出預期的偏移量並進行調整。

我意識到這是一個有點AVCaptureMovieFieldOutput使用的極端情況,但都重視他人的任何反饋。

我懷疑這是否是特定於代碼,但往往是更廣泛的實現細節。該代碼與AVFoundation文檔中的標準動畫捕捉示例非常相似,具有精確的幀開始時間。該項目在GitHub

回答

0

進一步的分析表明,這是我們使用的內部時鐘有某種漂移的視頻捕捉硬件中的一個特定缺陷。幾天後從其他硬件捕獲的延遲時間並不相同。

我目前的工作是增加延遲似乎是線性的(〜170毫秒每天),因此可以很好地預測。