我有一个基本的GStreamer RTSP管道:
gst-launch-1.0 rtspsrc延迟= 200位置= 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上接收。因此,RTCP的预期udpsrc和udpsink元素应该在端口2065和35127上。我实际上可以在rtspsrc元素中看到它们没有连接。我只能猜测我的RTSP来源不正确,或者我需要做一些不需要的连接。