私はRTSP上でH.264ビデオをストリーミングいくつかの問題を抱えています。目標は、RTSPクライアント(理想的にはブラウザプラグインの最後)にカメラ画像をライブストリーミングすることです。ビデオは数秒ごとに吃音、起動時に遅れる、と〜4秒の遅延があります。これは、1つの問題を除いて、これまでのところ非常にうまく働いています。これは悪いです。ストリーミングRTP/RTSP:同期/タイムスタンプの問題
設定はx264(w/zerolatency & ultrafast)でエンコードし、ffmpeg 0.6.5のlibavformatを使用してRTSP/RTPにパックすることです。テストのために、RTSPサーバーに接続するときにgst-launchを使用してストリームをGStreamerパイプラインで受信しています。しかしは、私はRTPを持つ別のGStreamerインスタンスから直接ストリーミングするときに、同じ問題を再現することができました。
送信機:
gst-launch videotestsrc ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=10.89.6.3
受信機は:
gst-launch udpsrc ! application/x-rtp,payload=96 ! rtph264depay ! decodebin ! xvimagesink
また、送信者だけに127.0.0.1にホストを変更するには、同じマシン上で両方これらを実行することができます。受信側では、コンソール上の繰り返し警告とともに、吃音と一般的に悪い行い映像に気づくはずです。私はすべてインターネット上で見てきた
WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2875): gst_base_sink_is_too_late(): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
There may be a timestamping problem, or this computer is too slow.
1つの一般的-提案「修正」を使用することですxvimagesinkとsync=false
:
gst-launch udpsrc ! application/x-rtp,payload=96 ! rtph264depay ! decodebin ! xvimagesink sync=false
ビデオは、私たちのカメラのソフトウェアをテストした場合でも、ほぼゼロレイテンシで再生されます。これは、テストのために有用であるが、それはトーテム、VLCでは動作しませんよう、展開のために非常に有用ではない、または、ブラウザのプラグインが組み込まれています。
私はソースで問題を解決しようとしたいと思います。私は、何らかの種類のタイムスタンプ情報がH.264ストリームでx264で欠落しているか、おそらくRTPペイロード上に存在していないか疑いがあります。私ははないが受信機にsync=false
を使用する必要がないようにソース GSTパイプラインを変更する方法はありますか?
これが不可能な場合、クライアントに(SDPなどを介して)ストリームに同期させないように伝えるにはどうすればよいですか?最終的には、VLCプラグインを使用してブラウザに埋め込みますので、そこで動作するソリューションはさらに優れています。
ありがとうございます。同じ問題ですが、私は受信側で "sync = false"と指定してくれました。 –