現在、GStreamer ストリームがワイヤレス ネットワーク経由で送信されています。生の非圧縮ビデオを h.264 エンコーディングの MPEG2 トランスポート ストリームに変換するハードウェア エンコーダーがあります。そこから、RTP 経由でストリームを送信する GStreamer パイプラインにデータを渡します。すべてが機能し、ビデオが表示されますが、エンコーダーの特定のパラメーターを調整して、パケット損失の影響を制限する方法があるかどうか疑問に思っていました.
私が注目している 2 つの主なパラメータは、GOP サイズと I フレーム レートです。どちらもエンコーダー (Sensoray 2253) のドキュメントに次のようにまとめられています。
V4L2_CID_MPEG_VIDEO_GOP_SIZE: 整数範囲 0 ~ 30。デフォルト設定の 0 は、コーデックのデフォルト GOP サイズを使用することを意味します。キャプチャのみ。
V4L2_CID_MPEG_VIDEO_H264_I_PERIOD: 整数範囲 0 ~ 100。H.264 エンコーディングのみ。デフォルト設定の 0 は、最初のフレームを IDR のみとしてエンコードします。それ以外の場合は、N 番目の GOP ごとの最初のフレームで IDR をエンコードします。
基本的に、ネットワークがパケットをドロップする可能性があるという事実を考慮しても、スムーズなビデオ再生を作成するためにデコーダーにできるだけ良いチャンスを与えようとしています. Iフレームレートを上げるとこれが実現しますか? つまり、I フレームには以前または将来のパケットに関連するデータがないため、「完全な」イメージの送信は役に立ちますか? データが損失の多いネットワークを介して送信されているという事実を考えると、上記の 2 つのパラメーターの「理想的な」設定は何でしょうか? ビデオが現在よりもスムーズになることを意味する場合は、帯域幅のわずかな (~10%) 増加を受け入れることができることに注意してください。
また、これはデコーダーに大きく依存していることも理解しているため、議論のために、クライアント側のメインのデコーダーが VLC であるとしましょう。
すべての助けを前もって感謝します。