Synchronization between individual RTP audio streams
We have one RX pipeline that is running on RPi4 and listens to several UDP sources with different ports, and near 10 individual TXs. TXs are sending their own RTP stream over Wi-Fi to RX simultaneously. The main problem is TXs are out of sync (from 100ms to 1s audio lag).
We found a similar issue, and it says that if there is no RTCP connection between RX and TXs, there will be no synchronization. Can RTCP usage help to prevent audio lag between individual RTP streams? Or it can be solved only using RX side with some manipulations with pipeline elements, RTP timestamps, or something (i.e. using Python wrap with GST bindings)?
Example of RX pipeline:
gst-launch-1.0 -vvv audiomixer name=mixer ! autoaudiosink \
udpsrc port=12500 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12502 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12504 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12506 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12508 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12510 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12512 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12514 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12516 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer. \
udpsrc port=12518 caps="application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)OPUS, channels=2" ! rtpjitterbuffer latency=200 mode=4 ! rtpopusdepay ! opusdec ! mixer.