Что я должен добавить этот код ниже для синхронизации? - PullRequest
0 голосов
/ 03 июля 2019

Это мой код для потоковой передачи видео по сети в RTSP.Когда я открываю второй Vlc и снова транслирую видео, видео начинается с начала, но я хочу, например, выполнить синхронизацию. Первое видео происходит через 20 секунд, второе должно начинаться с 20 секунды, когда я его открываю.

ЧтоЯ должен иметь дело с синхронизацией?

Я использую VS17

#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_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;
}
...