2

x264 x264_encoder_encode を使用してオンザフライでエンコーディングから生成された生の h264 NALU を送信するアプリケーションがあります。プレーン TCP を介して取得しているため、フレームが欠落していません。Windows のハードウェア アクセラレーション (DXVA2) を使用して、クライアントでこのようなストリームをデコードできる必要があります。FFMPEGを使用してこれを機能させる方法を見つけるのに苦労しています。Media Foundation や DirectShow を試す方が簡単かもしれませんが、生の H264 は使用できません。次のいずれかが必要です。

  1. サーバー アプリケーションのコードを変更して、mp4 ストリームを返します。私はx264の経験がありません。x264_encoder_encode を呼び出すことで生の H264 を取得できました。次の質問への回答に従ってください: x264 C API を使用して一連の画像を H264 にエンコードする方法は? リアルタイムでストリーミングしながら、これから MP4 でラップされたものに移行するにはどうすればよいですか?

  2. レシーバーでmp4ヘッダーでラップし、DXVAを使用して再生できるものにフィードできます。私はこれを行う方法を知りません

  3. FFMPEG を使用した DXVA など、生の形式で取得する別の方法を使用して、高速化する別の方法を見つけることができました。

重要な制限は、デコードされた各フレームを表示する前に前処理できるようにする必要があることです。単一のステップでデコードと表示を行うソリューションは、私にとってはうまくいきません

どちらのソリューションでも問題ありません

4

1 に答える 1

2

Media Foundation を使用して、H.264 パケットをオフラインで使用できるはずです。この本の 298 ページに、メディア ファンデーションで HTTP ストリームを使用する例があります。

私は Media Foundation を自分で学習しているだけで、あなたと同様のことをしようとしています。私の場合、RTP パケットから H.264 ペイロードを使用したいと考えています。デコードされたフレームにアクセスすることも、私が読んだことから可能であるはずです。なぜなら、コンポーネントをトポロジーに連鎖させることには完全な柔軟性があるように思われるからです。

于 2012-05-07T04:58:59.620 に答える