基本的な H.264 NAL ユニットを MediaElement に供給するカスタム MediaStreamSource を実装する Silverlight アプリケーションに取り組んでいます。私のストリームはキー フレームから始まりますが、1 つの画像をレンダリングするのに平均で約 20 フレームかかることに気付きました。H.264 エンコーダーで GOP サイズを 8 に設定しています。このビデオはセキュリティ カメラからのもので、ライブ ストリーム アプリケーションで表示されています。
主な問題は、実際にイベントが発生してから画像が実際にレンダリングされるまでの間にかなりの遅延が発生することです。わずかな遅延が予想されますが、最初のフレームを受信してから最初の画像がレンダリングされるまでに約 3 秒かかることが判明しました。最初のキー フレームには、理論的には画像をデコードするのに十分な情報が含まれているべきではないでしょうか? テスト用に、キャプチャした H.264 ストリームをファイルからロードし、ファイル全体を内部的にバッファリングするサンプルの Silverlight アプリケーションを用意しました。この方法では、MediaStreamSource が開くとすぐに最大 20 フレームを消費し、実質的に待ち時間なしで画像をレンダリングします。
Microsoft / Silverlight / H.264 の専門家は、なぜこれが起こっているのか詳しく説明したいと考えていますか?