problem with synchronization between multiple audio clients
Luis de Bethencourt
luis at debethencourt.com
Wed Apr 30 14:04:32 PDT 2014
Have you run and played with Aurena?
On 30 April 2014 08:22, Henrik Kjær Nielsen
<henrikkjaernielsen at hotmail.com>wrote:
> I am also very interested in using GStreamer to stream synchronized audio
> (and video) to multiple clients.
> Now that the new gst-rstp-server v. 1.2.3 has been out for some time, I
> that somebody is willing to share some information on how to prepare a
> simple synchronization experiment as a proof of concept. I have not been
> able to find any hints on how to do this except from what has been written
> in this thread. This is what I did so far:
> I have created a simple rtsp server based on example code from the source
> #include <gst/gst.h>
> #include <gst/rtsp-server/rtsp-server.h>
> static void
> media_configure(GstRTSPMediaFactory * factory, GstRTSPMedia * media)
> gst_rtsp_media_use_time_provider(media, TRUE);
> int main(int argc, char *argv)
> GMainLoop *loop;
> GstRTSPServer *server;
> GstRTSPMountPoints *mounts;
> GstRTSPMediaFactory *factory;
> GstRTSPAddressPool *pool;
> gst_init(&argc, &argv);
> loop = g_main_loop_new(NULL, FALSE);
> /* create a server instance */
> server = gst_rtsp_server_new();
> /* get the mount points for this server, every server has a
> default object
> * that be used to map uri mount points to media factories */
> mounts = gst_rtsp_server_get_mount_points(server);
> /* make a media factory for a test stream. The default media
> factory can
> * gst-launch syntax to create pipelines.
> * any launch line works as long as it contains elements named
> pay%d. Each
> * element with pay%d names will be a stream */
> factory = gst_rtsp_media_factory_new();
> gchar *str;
> str = g_strdup_printf("( "
> "filesrc location=%s ! qtdemux name=d "
> "d. ! queue ! rtph264pay pt=96 name=pay0 "
> "d. ! queue ! rtpmp4apay pt=97 name=pay1 " ")", argv);
> gst_rtsp_media_factory_set_launch(factory, str);
> gst_rtsp_media_factory_set_shared(factory, TRUE);
> g_signal_connect(factory, "media-configure",
> /* attach the test factory to the /test url */
> gst_rtsp_mount_points_add_factory(mounts, "/test", factory);
> /* don't need the ref to the mapper anymore */
> /* attach the server to the default maincontext */
> gst_rtsp_server_attach(server, NULL);
> /* start serving */
> g_print("stream ready at rtsp://127.0.0.1:8554/test\n");
> return 0;
> As suggested earlier in this thread, I call
> gst_rtsp_media_use_time_provider(media, TRUE).
> On the clients (I am running multiple client instances on the same computer
> as the rtsp server instance) I simply run gst-launch-1.0 -v playbin
> Well, it does not work, i.e. the audio (and video) is not synchronized.
> Calling gst_rtsp_media_use_time_provider(media, TRUE) has no effect. The
> audio is slightly misaligned when running two client instances
> simultaneously - it sounds a bit like bathroom acoustics.
> What do I have to do to make it synchronized? My platform is Windows.
> View this message in context:
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the gstreamer-devel