2017-04-21 9 views
1

私はJavaとC++でオーディオストリームを送受信するためにいくつかのメソッドを試していますが、うまくいきましたが、遅延はキューイングを開始しました。 ジッタバッファを必要とすることが判明したので、少しの情報しか持っていないので、ジッタバッファを含んだライブラリを使って作業を始めました。RTP over UDPとデバイス用の専用ルータ/ネットワークを使用する場合、どのような遅延が予想されますか?

また、ネットワークバッファなどが以前と同じようにキューに入れられないように、パケットを遅延させるため、パフォーマンスが大幅に向上しました。

私は、RTP over UDPとデバイス用の専用ルータ/ネットワークを持つレイテンシに何が期待できますか?私は約300-1000msの遅延があります、それはOk平均ですか?

0,3-1秒間の遅延は、電話からPCへのストリーミング時に、私は0,1-0,3と低いと思いますが、おそらく電話機の安価な携帯電話に関連しています「低」のオーディオ、ネットワーク、および一般的な処理能力

+1

GStreamerでテストしてみてください。例: 'gst-launch-1.0 uridecodebin uri = rtsp://192.168.2.1/live1.sdp latency = 0! autovideosink'このパイプラインはレイテンシパラメータを提供しますが、実際にはゼロではありませんがレイテンシは小さく、ストリームは非常に安定しています。もちろん、オーディオには特定のパイプラインが必要です。遅延の増加については、送信コンポーネントが成長しているときに「遅い」パケットをスキップするように、パイプラインのフィードバックが必要であると言います。 – AlexanderVX

+0

ありがとう、ええ、私はGStreamerを見て、ちょうど今日それを実際にダウンロードしましたが、まだそれに入っていない、すぐに始まります:) –

答えて

1

私は、エンドポイント間の移動をパケットのレイテンシたRTP

UDP上の措置 RTT (round trip time)として期待できること、それはあなたが得ることができる可能な限り最高の時間です。次に、RTT時間にばらつきがあり、この種のネットワーク遅延を処理するためのジッタバッファがあります。通常、 VoIPのアプリケーションでは、ジッタバッファは、ネットワークからキューに入れられているパケットのレートに動的に適応します。したがって、RTTが50ms〜250msの範囲にあり、 RTPパケットあたり40msのサウンドを送信すると、約200msの遅延が発生します。テストでは、200msはそれほど悪くないことがわかりました。 RTTが50〜250msの場合、ジッタバッファは最悪のシナリオに適応し、RTTは約250ms、つまり片方向125msと仮定する必要があります。その後、送信側でバッファリングの余分な遅延があります。パケットごとに40msのオーディオを送信する場合は、余分な遅延を40ms追加する必要があります。これには最大165msが加算され、ここで処理が行われます。この場合、200msは悪くありません。 Android携帯を使用している場合は、アンドロイド携帯のオーディオ再生で200msの遅延が発生する可能性があります(アンドロイドのバージョンと携帯電話のモデルによって異なります)。はい、そうです.Osに音を出すために待ち行列に入ると、200ms後に実際には音が聞こえるかもしれません!スピーチを再生すると、iPhoneの遅延はずっと小さくなります(20-40msの範囲で何かが期待されます)。 300-400ms以上になるとスピーチ会話に遅れが現れ始めます。 WebRTCライブラリを使用すると、おそらくvoipで最高の品質が得られます。

+0

おい、とても素敵! それで、300-1000msでそれほど悪くないと思います。私は定期的にトップノッチのデバイスに自分の手を取得し、それらにもテストします。ありがとう –

関連する問題