У меня есть базовый конвейер 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-источник неисправен, либо требуется какое-то соединение, которого я не делаю.