我有我自己的RTSP源過濾器解決方案,目前仍在開發中,但與H.264/MPEG-4視頻流一起工作。我的問題是在初始階段。如果我打開graphedit並添加RTSP源,解碼器和視頻渲染器逐個過濾並連接它們的引腳,則一切正常(RTSP源URL此時爲硬編碼)。但是,如果我嘗試保存圖形並從保存的文件重新打開圖形,則圖形會崩潰。我認爲原因是在我的RTSP源過濾器的初始化部分。由於我的過濾器在開始時並不知道有關流的任何信息,因此會將無效參數傳遞給解碼器。所以,我的問題是:初始化RTSP源過濾器
- 我應該如何精確地處理初始化過程?
- 何時(代碼中哪些功能)應該準確連接到源並開始傳輸?過濾器類的構造函數?輸出引腳類的構造函數?
OnThreadCreate
? - 我們是否需要從視頻流中獲取視頻寬度/高度等信息,或者我們是否需要將流傳遞給解碼器?這樣做的正確方法是什麼? (我認爲一些視頻渲染器使用來自
VIDEOINFOHEADER
結構的寬度/高度信息。) 我們應該如何確定我們的緩衝區大小?在
GetMediaType
方法中,我從位圖信息頭中設置樣本大小,如下所示:pMediaType-> SetSampleSize(pvi-> bmiHeader.biSizeImage);
我應該怎樣設置的參數,如biWidth
,biHeight
,biSize
,biSizeImage
等?我相信我需要在開始時將它們設置爲一些默認值,然後在接收流後更改它們,但是如何進行更改?
所有問題都表示相同的問題。在我的RTSP源代碼過濾器的初始化過程中,我應該做些什麼?
!更新!
我剛剛注意到,當我加載保存的圖形時,斷開連接並重新連接解碼器和視頻渲染器之間的引腳可解決此問題。我用不同的視頻渲染器(Microsoft和其他一些自定義視頻渲染器)嘗試過。他們都反應相似。其中一些不會崩潰,但會以不正確的大小/寬高比運行視頻。顯然,造成圖形崩潰或導致奇怪結果的原因不是我的源過濾器,而是傳遞給視頻渲染器的一些無效信息。由於這種情況在其他RTSP源碼過濾器中沒有發生,我仍然認爲我做錯了什麼,還有一些缺失。
什麼可能導致此問題?圖表開始運行時,是否需要發送一些媒體信息?
P.S:圖形只在我運行圖形時崩潰。只需加載圖形不會導致崩潰。
我沒有實現IFileSourceFilter,但所有其他RTSP源過濾器都使用它。所以,我認爲那是我尋找的缺失部分。我知道這不是必須的,但我相信它會解決我的問題。謝謝。 –