如何解决gstreamer中的同步问题?

时间:2019-07-10 10:51:52

标签: c++ gstreamer

我需要像这样进行同步:  当第一个客户端仍在运行时,  第二个/第三个/ etc客户端应从大致相同的位置开始  当前第一个客户的位置。  但是我下面的代码重新启动了第一个。  我该怎么办?  我正在使用Visual Studio。

  #include "pch.h"
  #include <iostream>
  #include <gst/gst.h>
  #include <gst/rtsp-server/rtsp-media.h>
  #include <gst/rtsp-server/rtsp-server.h>
  #include <gst/rtsp-server/rtsp-media-factory-uri.h>

  #define PORT "8554"
  static char *port = (char *)PORT;

  static GOptionEntry entries[] = { {"port",'p', 0, G_OPTION_ARG_STRING, 
  &port,"Port " PORT "", "PORT"},{NULL} };

  int main(int argc, gchar * argv[])
  {
   GMainLoop *loop;
   GstRTSPServer *server;
   GstRTSPMountPoints *mounts;
   GstRTSPMediaFactoryURI *factory;
   GOptionContext *sample;
   GError *error = NULL;
   gchar *uri;

   sample = g_option_context_new("<uri> - Test RTSP Server, URI");
   g_option_context_add_main_entries(sample, entries, NULL);
   g_option_context_add_group(sample, gst_init_get_option_group());
   if (!g_option_context_parse(sample, &argc, &argv, &error)) {
    return -1;
   }
   loop = g_main_loop_new(NULL, FALSE);

   server = gst_rtsp_server_new();
   g_object_set(server, "service", port, NULL);

   mounts = gst_rtsp_server_get_mount_points(server);

   factory = gst_rtsp_media_factory_uri_new();

   const char* streamUri = 
    "https://www.freedesktop.org/software/gstreamer- 
    sdk/data/media/sintel_trailer-480p.webm";

   if (gst_uri_is_valid(streamUri)) {
    uri = g_strdup(streamUri);
   }
   else if (g_file_test(streamUri, G_FILE_TEST_EXISTS)) {
    uri = gst_filename_to_uri(streamUri, NULL);
   }
   else {
    printf("There is no uri");
    return -1;
   }

  gst_rtsp_media_factory_uri_set_uri(factory, uri);
  g_free(uri);

  gst_rtsp_media_factory_set_shared(GST_RTSP_MEDIA_FACTORY(factory), 
    TRUE);

  gst_rtsp_mount_points_add_factory(mounts, "/deneme", 
    GST_RTSP_MEDIA_FACTORY(factory));

  g_object_unref(mounts);

  if (gst_rtsp_server_attach(server, NULL) == 0)
    printf("FAILED!");

  g_print("stream ready at rtsp://127.0.0.1:%s/deneme\n", port);
  g_main_loop_run(loop);

   return 0;
 }

0 个答案:

没有答案