VoIP音声品質監視アプリケーションの場合、着信RTPオーディオストリームを参照信号と比較する必要があります。信号の比較自体には、既存の専用ツールを使用します。他の部分(パケットキャプチャを除く)については、Gstreamerライブラリが適切な選択であるように思われました。次のパイプラインを使用して、最低限のVoIPクライアントをシミュレートします。
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メディアストリームが含まれています。元の400個のUDPデータグラムのうち50個が欠落しているキャプチャファイルを作成しました。与えられたオーディオサンプル(私の例では8秒の長さ)の場合:
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
一定量の連続したパケット損失があると、次のようなオーディオ信号が出力されると思います(' -
'は無音を示します)。
[XXXXXXXXXXXXXXXXXXXXXXXX-----XXXXXXXXXXX]
ただし、実際にオーディオファイルに保存されるのは次のとおりです(私の例では1秒短くなっています)。
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
このアプリケーションの重要な部分であるジッターバッファが正しく機能していないようです。これは、要素との非互換性/pcapparse
要素の欠点である可能性がありますか?時間の同期を確保するために、パイプラインの重要な部分が欠落していますか?他に何がこれを引き起こしている可能性がありますか?