Reputation: 11
I get errors when i run Gstreamer audio multicast RTP on a BeagleBone Black.
Here is the Gstreamer TX command:
# gst-launch-1.0 -v filesrc location="test.wav" ! decodebin ! audioconvert ! rtpL16pay ! queue ! udpsink host=224.0.0.10 auto-multicast=true port=5555 --gst-debug-level=3
Setting pipeline to PAUSED ... Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL 0:00:00.300210292 23288 0x75490 FIXME
default gstutils.c:3648:gst_pad_create_stream_id_printf_valist: Creating random stream-id, consider implementing a deterministic way of creating a stream-id /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, channels=(int)2, channel-mask=(bitmask)0x0000000000000003, rate=(int)48000 /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, layout=(string)interleaved, rate=(int)48000, format=(string)S16BE, channels=(int)2, channel-mask=(bitmask)0x0000000000000003 /GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0.GstPad:src: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96, ssrc=(uint)3613934853, timestamp-offset=(uint)2678744220, seqnum-offset=(uint)28780 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96, ssrc=(uint)3613934853, timestamp-offset=(uint)2678744220, seqnum-offset=(uint)28780 /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96, ssrc=(uint)3613934853, timestamp-offset=(uint)2678744220, seqnum-offset=(uint)28780 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96, ssrc=(uint)3613934853, timestamp-offset=(uint)2678744220, seqnum-offset=(uint)28780 /GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0.GstPad:sink: caps = audio/x-raw, layout=(string)interleaved, rate=(int)48000, format=(string)S16BE, channels=(int)2, channel-mask=(bitmask)0x0000000000000003 /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, channels=(int)2, channel-mask=(bitmask)0x0000000000000003, rate=(int)48000 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, channels=(int)2, channel-mask=(bitmask)0x0000000000000003, rate=(int)48000 /GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0: timestamp = 2678744220 /GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0: seqnum = 28780 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock
And the Gstreamer RX command:
# gst-launch-1.0 -v udpsrc multicast-group=224.0.0.10 auto-multicast=true port=5555 caps='application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96' ! rtpL16depay ! audioconvert ! alsasink --gst-debug-level=3
Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96 /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0.GstPad:src: caps = audio/x-raw, format=(string)S16BE, layout=(string)interleaved, rate=(int)48000, channels=(int)2, channel-mask=(bitmask)0x0000000000000003 0:00:00.357371500 23249
0xefb20 WARN alsa conf.c:4694:snd_config_expand: alsalib error: Unknown parameters {AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02} 0:00:00.358214833 23249 0xefb20 WARN alsa pcm.c:2239:snd_pcm_open_noupdate: alsalib error: Unknown PCM default:{AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02} /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, layout=(string)interleaved, rate=(int)48000, format=(string)S16LE, channels=(int)2, channel-mask=(bitmask)0x0000000000000003 /GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = audio/x-raw, layout=(string)interleaved, rate=(int)48000, format=(string)S16LE, channels=(int)2, channel-mask=(bitmask)0x0000000000000003 /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)S16BE, layout=(string)interleaved, rate=(int)48000, channels=(int)2, channel-mask=(bitmask)0x0000000000000003 /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0.GstPad:sink: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96 0:00:08.472125917 23249 0xefb20 WARN
audiobasesink gstaudiobasesink.c:1593:gst_audio_base_sink_get_alignment: Unexpected discontinuity in audio timestamps of +0:00:00.010583333, resyncing 0:00:51.970270047 23249 0xefb20 WARN
audiobasesink gstaudiobasesink.c:1593:gst_audio_base_sink_get_alignment: Unexpected discontinuity in audio timestamps of +0:00:00.002729166, resyncing 0:00:51.982288589 23249 0xefb20 WARN
audiobasesink gstaudiobasesink.c:1593:gst_audio_base_sink_get_alignment: Unexpected discontinuity in audio timestamps of +0:00:00.010437500, resyncing 0:00:52.010382256 23249 0xefb20 WARN
audiobasesink gstaudiobasesink.c:1593:gst_audio_base_sink_get_alignment: Unexpected discontinuity in audio timestamps of +0:00:00.006937500, resyncing 0:00:52.029231922 23249 0xefb20 WARN
audiobasesink gstaudiobasesink.c:1593:gst_audio_base_sink_get_alignment: Unexpected discontinuity in audio timestamps of +0:00:00.007354166, resyncing
As you can see above, warnings are printed to the console and audio is cracking and noisy :
audiobasesink gstaudiobasesink.c:1593:gst_audio_base_sink_get_alignment: Unexpected discontinuity in audio timestamps of +x:xx:xx.xxxxxxxxx, resyncing
Any idea to solve this issue ?
Thank you for reading.
Note that both Gstreamer commands run on the same machine. it acts like a local audio loopback actually.
Upvotes: 1
Views: 1607
Reputation: 7383
I think you want an rtpjitterbuffer
on the receiver side. UDP does not guarantee the order of packets when they arrive and this element will take care of it.
Upvotes: 0