サーバーからクライアントに H264 でエンコードされたフレームを使用して、フレームごとのメタデータ (ID など) を送信する方法を探しています。
現在、クライアント側とサーバー側の両方が積極的に関与するリモート レンダリング アプリケーションを開発しています。サーバーは、すべての効果、照明などを使用して高品質の画像をレンダリングします。クライアントはモデル情報も持っており、帯域幅が低すぎる場合、またはスタッタリングを避けるために画像をゆがめる必要がある場合に使用される拡散画像をレンダリングします。
これまでのところ、サーバー側で ffmpeg を使用してフレームをエンコードし、live555 を使用してクライアントにストリーミングしています。クライアントは rtsp-stream を受信し、ffmpeg を使用してフレームを再度デコードします。
このアプリケーションでは、フレームごとのメタデータを送信する必要があります。クライアントがサーバーにカメラが現在どこにあるかを伝える必要があります。理想的には、クライアントのビュー マトリックスをサーバーに送信し、対応するフレームをレンダリングして、ビュー マトリックスと共にクライアントに送り返すことができます。したがって、クライアントがフレームを受信するとき、フレームがレンダリングされたカメラ位置を正確に知る必要があります。
または、各ビュー マトリックスに ID をタグ付けしてサーバーに送信し、フレームをレンダリングして同じ ID でタグ付けして送り返すこともできます。この場合、クライアント側で正しいマトリックスをフレームに再度割り当てる必要があります。
上記の意図を ffmpeg で実現しようと何度か試みた結果、ffmpeg は必要な機能を提供しないという結論に達しました。ffmpeg は、マトリックスを格納できないか、キー フレームごとにしか設定できない、修正済みの定義済みのメタデータ用フィールド セットのみを提供します。
現在、live555 の使用を検討しています。これまでのところ、オンデマンド サーバーがあり、ウィッチは H264VideoStreamDiscreteFramer を使用して VideoSubsession を取得し、独自の FramedSource クラスを含めます。このクラスでは、エンコードされた AVPacket (ffmpeg から) をロードし、そのデータ バッファーをネットワーク経由で送信します。次に、フレームごとに何らかのメタデータをクライアントに送信する方法が必要です。
このメタデータの問題を live555 または別のライブラリで解決する方法はありますか?
ご協力いただきありがとうございます!