2

現在、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 であるとしましょう。

すべての助けを前もって感謝します。

4

1 に答える 1

2

I フレームの数を増やすと、デコーダの回復が速くなります。また、データが通過する可能性が高くなるため、ストリームの帯域幅を制限することを検討することもできます。ただし、I フレームは P フレームや B フレームよりもかなり大きく、エンコーダは引き続き指定されたビットレートをターゲットにするため、ビデオの品質が大幅に低下する可能性があるため、データ サイズに注意する必要があります。

再生をある程度制御できる場合 (ローカルでストリームをキャプチャして VLC に再送信する場合でも)、失われたパケットを修正する FEC を追加できます。

于 2013-11-13T18:57:22.040 に答える