Synchronizing multiple RTP sources

Sebastian Dröge sebastian at
Tue Jun 23 03:27:20 PDT 2015

On Di, 2015-06-23 at 12:17 +0200, Peter Maersk-Moller wrote:
> Hi Sebastian.
> Thanks for the answer/example. So what I read from the example is 
> that nothing needs to be changed for the sender (liver source):

No, you need to use "use-pipeline-clock" at least. And ensure that both
pipelines (sender and receiver) are using the same clock. You can't do
that with gst-launch!

> Assuming each source of RTP/RTCP streams are in agreement about time 
> using ntpd to set/adjust the clock locally, should this pipeline play 
> the content synchronized not only with audio/video synchronized but 
> also synchronized for other similar pipelines?

No, the important part here is that via RTCP some clock time exchange
will happen and then the timestamps on the receiver side are exactly
the same clock time as on the sender side.

Related your later questions: codec and stuff does not matter, what
matters are the timestamps (the buffer timestamps in clock time must be
the same in the end! PTS or running time don't matter), the same clock
and that all receivers use the same latency.

> A couple of things though:
> ntp-time-source does not seem to be a settable parameter for rtpbin 
> for (Currently using GStreamer 1.4.5) when listing the module with 
> gst-inspect-1.0. So how do I set it through CLI using gst-launch-1.0?

You need 1.5.1 or GIT master. And you can't use gst-launch for all of
this, see above. Please write some proper code instead of using gst
-launch, gst-launch is only a testing tool.

You will most likely also need the new gst_pipeline_set_latency() API
on the receivers.

Sebastian Dröge, Centricular Ltd ·
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 949 bytes
Desc: This is a digitally signed message part
URL: <>

More information about the gstreamer-devel mailing list