我已經寫了一個小應用程序來捕捉音頻和視頻使用AVCaptureMovieFileOutput
,這一直很好。它用於在多天內自動收集實驗數據,偶爾打開,一次記錄10-15秒。AVCaptureMovieFileOutput音頻/視頻同步
但是在分析數據時,我們發現在音頻和視頻同步中似乎存在一些漂移。爲了幫助測試,我們設置了一個閃爍的LED與一個音調相結合,並在幾天內記錄了短片段。到第五天,音頻產生了大約250ms的延遲(不是很大,但在觀看時明顯)。下圖顯示使用相同的AVFoundation
庫回讀數據(以確保解碼媒體時沒有問題)。繪製視頻的平均強度(以顯示LED閃光燈),並將原始音頻繪製在下方。
這有點神祕,我希望能揣摩這是什麼原因,所以我可以修復它,要麼解決它。我的理論迄今有:
一個純粹的硬件問題(我們使用的NTSC加密狗),其中一些關於信號的數字化或加密狗上的時鐘有某種歪斜或漂移。我對調查的硬件方面知之甚少。
舍入問題與音頻和視頻的幀持續時間的計數有關,其中輕微的偏移隨着時間累積。如果是這種情況,我們可以計算出預期的偏移量並進行調整。
我意識到這是一個有點AVCaptureMovieFieldOutput
使用的極端情況,但都重視他人的任何反饋。
我懷疑這是否是特定於代碼,但往往是更廣泛的實現細節。該代碼與AVFoundation文檔中的標準動畫捕捉示例非常相似,具有精確的幀開始時間。該項目在GitHub。