2013-09-27 187 views
2

我處理從DirectShow的音頻/視頻捕捉源(網絡攝像頭和麥克風)捕捉音頻/視頻。我想問你們,如果有人真的很深刻地瞭解應該如何進行同步。Directshow的音頻/視頻拍攝同步

到目前爲止,我能夠使用參考時鐘,應在圖中同步所有過濾器和音頻捕獲設備確實有一個默認的緩存500ms的,我是能夠設置降低一個找出圖形。基於本文 http://blogs.msdn.com/b/medmedia/archive/2007/03/05/basics-of-a-v-synchronization-in-directshow.aspx

我發現音頻渲染器設置爲默認ReferenceClock上

。所以我建立像這樣:

Audio Capture -> Infinite Pin Tee Filter -> Default DirectSound Device 
        -> WM ASF WRITER 

Video Capture -> Infinite Pin Tee Filter -> Color space converter -> Video Render 
        -> WM ASF WRITER 

如果圖中的所有過濾器通過參考時鐘和WM ASF撰稿人DEOS手柄時間戳同步。我期望,因爲默認DirectSound設備已設置參考時鐘WM ASF WRITER應該同步。但事實並非如此。在捕獲期間,我可以看到音頻/視頻渲染是同步的。但最終的WMV文件不是,我不明白爲什麼。

我處理的第二個問題是,音頻捕獲設備準備好立刻但視頻採集設備需要2-3秒。有沒有辦法處理,所以我沒有一個wmv有2-3秒沒有視頻?

非常感謝你的任何一個環節,幫助或建議 問候Teamol

回答

0

你並不需要解決第一音頻/視頻同步問題。 實際上,同步問題似乎是由於第二個問題,即您的視頻捕獲源在初始化過程中有延遲。

通過您分享了一些代碼片段,會一直幫助我,告訴你在哪裏實際問題。

現在,請採取以下示例應用程序作爲參考,希望你不會遇到任何問題。

AmCap Sample

0

您的視頻設備需要初始化無論如何,因此它可能並不總是能夠得到「好」的畫面從中幀瞬間,過濾器圖表剛剛開始之後。

解決方法是:幾秒鐘後開始寫視頻,丟棄第一個傳入幀。例如,創建一個自定義轉換過濾器並將其設置在InfTee和ASFWriter之間。或者,分離捕獲預覽和書寫圖(例如使用GMFBridge,但更好地創建您自己的解決方案)。

以及有關的同步問題,能否請你更精確地解釋一下你的問題嗎?你有沒有試圖從你的圖中刪除你的渲染器,看看是否有幫助?