2011-08-31 68 views
0

我正在爲每個引腳基於CSource和CSourceStream的自定義Windows DirectShow源過濾器。有兩個引腳 - 視頻輸出和音頻輸出。當使用正確的時間戳,幀速率和聲音進行Graphedit和類似工具(如Graph Studio)中的單獨渲染時,兩個引腳都可以正常工作。我將視頻呈現給視頻混合呈現器(VMR7或VMR9)。音頻引腳渲染數據時,DirectShow視頻播放速度過快

但是,當我渲染兩個引腳時,視頻播放過快而音頻仍然聽起來正確。視頻播放速度大約快50%,但我認爲這受解碼速度的限制。

樣品上的時間戳在兩種情況下都是相同的。如果我將音頻流渲染到null渲染器(qedit.dll中的渲染器),則視頻流將以正確的幀速率播放。該過濾器是一個運行在Win7 x64系統上的32位過濾器。

當我加入對IMediaSeeking的支持時,我發現音頻流的搜索欄表現得相當奇怪。但是,如果沒有IMediaSeeking支持,問題就會發生。

任何可能導致此問題的建議或進一步調查的建議?

從音頻和視頻端子輸出類型被粘貼下面:

Mediatyp:視頻子類型:RGB24格式:類型VideoInfo視頻大小:1024×576像素,24位圖像尺寸:1769472個字節壓縮:RGB源:寬度0,高度0目標:寬度0,高度0比特率:0比特/秒。錯誤率:0比特/秒。平均。顯示時間:41708微秒。

Mediatyp:視頻子類型:RGB32格式:類型VideoInfo視頻大小:1024 x 576像素,32位圖像大小:2359296字節壓縮:RGB源:寬度0,高度0目標:寬度0,高度0比特率:0比特/秒。錯誤率:0比特/秒。平均。顯示時間:41708微秒。

Majortyp:音頻 子類型:PCM音頻 試樣尺寸:3 類型WAVEFORMATEX 波形格式:未知 通道:1 樣本/秒:48000 魅力。字節/秒:144000 塊對齊:3 位/樣本:24

回答

1

我發現問題後直接發現問題。通過正確構建問題進行調試的情況。

音頻流具有完全僞造的時間戳。音頻和視頻流獨立播放,但在一起播放時完全不同步。