私は ip-cameras のビデオ ストリーミング サービスに取り組んでいます。DirectShow 用の RTSP ソース フィルター (Live555 上) を実装しました。これは、会社の主要製品内の WPF MediaElement で使用することを目的としています。私の開発用マシン (Vista) では正常に動作するので、レンダリングに DirectShow を使用する Windows Media Player やその他のソフトウェアで、ストリーミングされた H.264 ビデオを見ることができます。
ただし、他のマシン (Windows 7) では、ビデオが表示されません。アップストリーム フィルター IBaseFilter::Pause および IBaseFilter::Run メソッドで「再生」コマンド呼び出しを受信した後、Vista の拡張ビデオ レンダラー (レンダラー ファイル バージョン 6.0.6002.18005) が見つかりました。これらは最終的にソース フィルターにルーティングされます。Windows 7 では、EVR のバージョンが異なり (6.1.7601.17514)、その動作も異なります。IBaseFilter::Pause のみを呼び出し、IBaseFilter::Run は発行されません。その結果、タイムアウトが E_FAIL を返すまで CSourceStream::FillBuffer メソッドですべてが停止し、EndOfStream が下流のレンダラーに送信されます。時々、 EndOfStream の後にIBaseFilter::Run が発行されますが、この時点では意味がありません。
CreateInstance メソッドで手動で作成してグラフに追加することで、別のレンダラーを提供しようとしました。Haali Video Renderer と連携し、Windows Media Player は他のマシンでストリーミング ビデオを正常に再生しました。しかし、私の知る限り、MediaElement (その中の MediaPlayer) はデフォルトで EVR を使用し、私が作成した HVR (そう思われる) を無視するため、どのマシンにもビデオはありません。
EVR を使用して何か不足していますか? どんな助けでも大歓迎です。