0

Live555 を使用して rtsp ストリームを開き、FFMPEG を使用してビデオ ストリームをデコードするプレーヤーを開発しています。IDR フレームがネットワーク上で失われているポイントで立ち往生しているため、後続の B/P フレームをデコードした後、ビデオにジッター効果が表示されます。ビデオでは非常に悪いパフォーマンスになります。

私の質問は、どうすれば I フレームのパケット損失を処理できますか? ビデオがスムーズまたはクリアになるように、パケット損失を処理するための戦略/アルゴリズムがあるかどうかを知りたい.

どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

3

それが最初のアプローチである場合、フレームを同期的にデコードすると思います。つまり、Live555 afterGetting コールバックは、FFMPEG の avcodec_decode_video2 を直接呼び出します。

このような場合、受信ソケットはデコード中に読み取られず、パケットはオーバーフローするまでバッファリングされます。

RTP over TCP を使用してソケット バッファを増やすなどの別の回避策を試すこともできますが、実際のソリューションはより非同期にする必要があります。

于 2014-03-27T19:52:49.153 に答える
1

I フレームが失われると、それは失われます。クライアント側では本当に何もできません。この問題に対処できる唯一の方法は、サーバー (つまりストリーマー) を構成して、より頻繁に I フレームを送信する (つまり、ストリーム内の I フレームを増やす) か、より頻繁に I フレームを送信しない (つまり、ストリーム内の I フレームが少ない) (ffmpeg/libx264 を使用すると、I フレームを送信するときに信じられないレベルの精度に微調整できます)。

于 2014-03-27T10:54:02.847 に答える