<div dir="ltr">Henrik,<div><br></div><div>Have you run and played with Aurena?</div><div><a href="https://github.com/thaytan/aurena">https://github.com/thaytan/aurena</a><br></div><div><br></div><div>Luis</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On 30 April 2014 08:22, Henrik Kjær Nielsen <span dir="ltr"><<a href="mailto:henrikkjaernielsen@hotmail.com" target="_blank">henrikkjaernielsen@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am also very interested in using GStreamer to stream synchronized audio<br>
(and video) to multiple clients.<br>
<br>
Now that the new gst-rstp-server v. 1.2.3 has been out for some time, I hope<br>
that somebody is willing to share some information on how to prepare a<br>
simple synchronization experiment as a proof of concept. I have not been<br>
able to find any hints on how to do this except from what has been written<br>
in this thread. This is what I did so far:<br>
<br>
I have created a simple rtsp server based on example code from the source<br>
repository:<br>
<br>
#include <gst/gst.h><br>
#include <gst/rtsp-server/rtsp-server.h><br>
<br>
static void<br>
media_configure(GstRTSPMediaFactory * factory, GstRTSPMedia * media)<br>
{<br>
        gst_rtsp_media_use_time_provider(media, TRUE);<br>
}<br>
<br>
int main(int argc, char *argv[])<br>
{<br>
        GMainLoop *loop;<br>
        GstRTSPServer *server;<br>
        GstRTSPMountPoints *mounts;<br>
        GstRTSPMediaFactory *factory;<br>
        GstRTSPAddressPool *pool;<br>
<br>
        gst_init(&argc, &argv);<br>
<br>
        loop = g_main_loop_new(NULL, FALSE);<br>
<br>
        /* create a server instance */<br>
        server = gst_rtsp_server_new();<br>
<br>
        /* get the mount points for this server, every server has a default object<br>
        * that be used to map uri mount points to media factories */<br>
        mounts = gst_rtsp_server_get_mount_points(server);<br>
<br>
        /* make a media factory for a test stream. The default media factory can<br>
use<br>
        * gst-launch syntax to create pipelines.<br>
        * any launch line works as long as it contains elements named pay%d. Each<br>
        * element with pay%d names will be a stream */<br>
        factory = gst_rtsp_media_factory_new();<br>
<br>
        gchar *str;<br>
        str = g_strdup_printf("( "<br>
                "filesrc location=%s ! qtdemux name=d "<br>
                "d. ! queue ! rtph264pay pt=96 name=pay0 "<br>
                "d. ! queue ! rtpmp4apay pt=97 name=pay1 " ")", argv[1]);<br>
        gst_rtsp_media_factory_set_launch(factory, str);<br>
        g_free(str);<br>
<br>
        gst_rtsp_media_factory_set_shared(factory, TRUE);<br>
<br>
        g_signal_connect(factory, "media-configure", (GCallback)media_configure,<br>
NULL);<br>
<br>
        /* attach the test factory to the /test url */<br>
        gst_rtsp_mount_points_add_factory(mounts, "/test", factory);<br>
<br>
        /* don't need the ref to the mapper anymore */<br>
        g_object_unref(mounts);<br>
<br>
        /* attach the server to the default maincontext */<br>
        gst_rtsp_server_attach(server, NULL);<br>
<br>
        /* start serving */<br>
        g_print("stream ready at rtsp://<a href="http://127.0.0.1:8554/test\n" target="_blank">127.0.0.1:8554/test\n</a>");<br>
        g_main_loop_run(loop);<br>
<br>
        return 0;<br>
}<br>
<br>
As suggested earlier in this thread, I call<br>
gst_rtsp_media_use_time_provider(media, TRUE).<br>
<br>
On the clients (I am running multiple client instances on the same computer<br>
as the rtsp server instance) I simply run gst-launch-1.0 -v playbin<br>
uri="rtsp://<a href="http://127.0.0.1:8554/test" target="_blank">127.0.0.1:8554/test</a>".<br>
<br>
Well, it does not work, i.e. the audio (and video) is not synchronized.<br>
Calling gst_rtsp_media_use_time_provider(media, TRUE) has no effect. The<br>
audio is slightly misaligned when running two client instances<br>
simultaneously - it sounds a bit like bathroom acoustics.<br>
<br>
What do I have to do to make it synchronized? My platform is Windows.<br>
<br>
<br>
Regards<br>
Henrik<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/problem-with-synchronization-between-multiple-audio-clients-tp4663231p4666673.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/problem-with-synchronization-between-multiple-audio-clients-tp4663231p4666673.html</a><br>

Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div>