2014-10-28 63 views
1

我正在看到一個引人注目的視頻,該視頻導致我正在測試的採集卡關閉音頻/視頻同步。我的圖形拓撲如下。DirectShow圖中的視頻延遲

Video Source -> Sample Grabber -> Null Renderer

Audio Source -> Sample Grabber -> Null Renderer

從視頻樣品是使用H264壓縮,和音頻使用FAAC壓縮。這種拓撲結構和應用程序代碼適用於我過去使用的採集卡。但是我看到了我正在測試的當前卡的延遲。當然,我認爲它與卡本身有關。因此,我檢查並發現,使用Open Broadcaster,VLC或GraphEdit中的同一圖形來捕獲此卡時,不會出現視頻/音頻異步。

這表明問題與我如何構建圖表有關。然後,我嘗試使用IAMBufferNegotiation以及SetStreamSyncOffset調整緩衝區大小,但未成功。

如果我對視頻應用500毫秒的延遲(例如videoTimeStamp = videoTimeStamp - 500),則同步幾乎是完美的。這很奇怪,因爲我期望在視頻中看到更多的音頻延遲。

回答

1

視頻和音頻同步全是關於時間戳的。視頻或音頻分支可能會延遲處理數據,但它是顯示原始和預期同步的時間戳。

可能的原因包括:

  1. 視頻及音頻信號源獨立數據使用時間戳,錯誤地傳遞不同步的數據 - 看起來並不像你的情況
  2. 你忽略時間戳和您使用樣本實際到達時間你樣本採集卡,這是不正確的
  3. 另一個介於兩者之間的過濾器(如解碼器)在處理過程中錯誤地恢復數據