FFmpeg を使用して単純なダイレクト ショー ソース フィルターを作成します。RTSP ソースから rtp パケットを読み取り、デコーダーに渡します。h264 ストリームで動作します。
MyRtspSourceFilter[H264 Stream] ---> h264 Decoder --> Video Renderer
悪いニュースは、MPEG-4 では機能しないことです。 rtsp ソース フィルタを MPEG-Decoder に接続できます。例外はありませんが、ビデオ レンダラーには何も表示されません。実際には、1 つのフレームだけを表示し、何も表示しない[ただ停止する]... デコーダーとレンダラーはサードパーティであるため、デバッグできません。
MyRtspSourceFilter[MP4 Stream] ---> MPEG-4 Decoder --> Video Renderer
FFmpeg を使用して、MPEG-4 RTSP ソースから rtp パケットを正常に取得できます。問題はありません。
H264 ストリームには必要ありませんが、MPEG-4 ストリームには重要かもしれない Rtsps ソース フィルターに何か (?) を設定していないようです
この h264 ストリームと MPEG-4 ストリームの違いがダイレクト ショー rtsp ソース フィルタで発生する原因は何ですか? 何か案は。
より詳しい情報:
-- 最初に、MPEG-4 ストリーム用の他の rtsp ソース フィルタをいくつか試します...私の rtsp ソースは同じですが、ピン接続に異なるサブタイプが見られます。
-- 2 つ目は、ソースが本当に MPEG-4 であるか疑わしいので、FFmpeg で確認します...FFmpeg は、ソース コーデック ID を「CODEC_ID_MPEG4」として提供します。
更新: [ハック]
m_bmpInfo.biCompression = DWORD('xvid') を設定しただけで、正常に機能しました...しかし、静的です。 ffmpeg または他の方法を使用してこの値を動的に取得/決定する方法...