Как я могу заставить rtspsrc использовать RTCP? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть базовый конвейер GStreamer RTSP:

gst-launch-1.0 rtspsrc latency = 200 location = rtsp: //192.168.1.1/stream1!rtph264depay!avdec_h264!очередь !видеоконвертер!ximagesink

С этим конвейером GStreamer, похоже, не открывает соединение RTCP (я проверяю его с помощью jnettop).

Какие дополнительные шаги необходимо выполнить, чтобыrtspsrc пытается установить соединение RTCP?

===

Единственное, что я могу сказать, это то, что rtspsrc создаст «менеджера» (RtpBin), и там я могу установить rtp-profile.Но это ничего не дает:

void new_rtp_session_manager_callback(GstElement *rtspsrc, GstElement *manager, gpointer user_data) {
     // @GST_RTSP_PROFILE_UNKNOWN: invalid profile
     // @GST_RTSP_PROFILE_AVP: the Audio/Visual profile (RFC 3551)
     // @GST_RTSP_PROFILE_SAVP: the secure Audio/Visual profile (RFC 3711)
     // @GST_RTSP_PROFILE_AVPF: the Audio/Visual profile with feedback (RFC 4585)
     // @GST_RTSP_PROFILE_SAVPF: the secure Audio/Visual profile with feedback (RFC 5124)

    g_object_set(G_OBJECT(manager),
            "rtp-profile", GST_RTP_PROFILE_AVPF,
            NULL);
}

g_signal_connect(GST_ELEMENT(rtspsrc), "new-manager", G_CALLBACK(new_rtp_session_manager_callback), (gpointer)user_data

===

Прикрепление примера изображения того, как выглядит часть rtspsrc конвейера, когда он подключен.В приведенном ниже примере кодер передает данные из порта 2064, а я получаю через порт 35126. Таким образом, ожидаемые элементы udpsrc и udpsink для RTCP должны быть на портах 2065 и 35127. Я действительно могу видеть их в элементе rtspsrc, но онине связаныЯ могу только догадываться, что либо мой RTSP-источник неисправен, либо требуется какое-то соединение, которого я не делаю.

Pipeline

...