Gstreamer: RTP jitter buffer not working properly with packet loss?

For a VoIP voice quality monitoring application, I need to compare the incoming RTP audio stream with the reference signal. To compare signals, I use existing special-purpose tools. For parts other than packet capture, the Gstreamer library seemed like a good choice. I use the following pipeline to simulate a boneless VoIP client:

filesrc location=foobar.pcap ! pcapparse ! "application/x-rtp, payload=0, clock-rate=8000"
  ! gstrtpjitterbuffer ! rtppcmudepay ! mulawdec ! audioconvert
  ! audioresample ! wavenc ! filesink location=foobar.wav

The pcap file contains one RTP stream. I created a capture file that does not have 50 source 400 UDP datagrams. For this sample audio (8s for my example):

[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]

with a certain amount of consecutive packet loss, I expect an audio signal like this to be output (" -" means silence):

[XXXXXXXXXXXXXXXXXXXXXXXX-----XXXXXXXXXXX]

, , ( ):

[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]

, , , . / pcapparse? ? ?

+3
2

: audiorate wavenc, " , ". , audiorate . do-lost gstjitterbuffer true.

:

filesrc location=foobar.pcap ! pcapparse
  ! "application/x-rtp, payload=0, clock-rate=8000"
  ! gstrtpjitterbuffer do-lost=true ! rtppcmudepay ! mulawdec
  ! audioconvert ! audioresample ! audiorate ! wavenc
  ! filesink location=foobar.wav
+2

GStreamer () . , .

, , ( ) .

, , .

, , , GStreamer "-", , .

, pcap , , / GStreamer, , .

+2

Source: https://habr.com/ru/post/1783143/


All Articles