VoIP音声品質監視アプリケーションでは、着信RTPオーディオストリームを参照信号と比較する必要があります。信号比較自体のために、私は既存の専用ツールを使用します。他の部分(パケットキャプチャを除く)については、Gstreamerライブラリが良い選択と思われました。Gstreamer:RTPジッタバッファがパケットロスで正常に動作していませんか?
filesrc location=foobar.pcap ! pcapparse ! "application/x-rtp, payload=0, clock-rate=8000"
! gstrtpjitterbuffer ! rtppcmudepay ! mulawdec ! audioconvert
! audioresample ! wavenc ! filesink location=foobar.wav
のpcapファイルを単一のRTPメディアストリームが含まれています。私は、最低限のVoIPクライアントをシミュレートするために、次のパイプラインを使用します。元の400のUDPデータグラムの50が欠けているキャプチャファイルを作成しました。所定のオーディオサンプルについて(私の例えば8秒の長さ):私はこのような音声信号が出力されることを期待したい連続したパケット損失の一定量の
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
(「-
は」沈黙を表す):
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
ジッタバッファ、このアプリケーションの重要な部分であることを思わ:
[XXXXXXXXXXXXXXXXXXXXXXXX-----XXXXXXXXXXX]
は、しかし、どのような実際のオーディオファイルに保存されていることは、この(私の例のための短い1S)であります正しく動作しません。これはpcapparse
要素との互換性/欠点ですか?時間同期を確保するためにパイプラインの重要な部分が欠けていますか?それ以外の原因は何でしょうか?
私は最低限のソリューション、すなわち、単純または無損失の隠蔽と一緒に暮らすことができます。
は、ここで修正パイプラインです。しかしここで間違っているのは、再生時間です。さらに調査した結果、これは実際には 'pcapparse'や' pcapparse'と 'rtppcmudepay'の間の時間同期の問題であるようです。ソース要素として 'udpsrc'を使用すると、すべてが期待通りに機能します。 – paprika