RTSP 获取流数据

mmm*_*aak 4 c++ qt rtsp

我有一个 IP 摄像机,它可以通过 RTSP 为我提供媒体数据。

我开发了一个用于获取媒体数据的应用程序。

我使用 C++ 和 Qt3。

我创建套接字。在端口 = 554 上将其连接到我的设备 IP。

我先查询

设置 rtsp://192.168.4.160/ufirststream RTSP/1.0\r\n
CSeq: 1\r\n
传输:RTP/AVP;client_port=554\r\n\r\n

并得到答案:

RTSP/1.0 200 正常
CSeq:1
日期:2012 年 3 月 24 日星期六 17:24:59 GMT
传输:RTP/AVP;单播;目的地=192.168.4.186;源=192.168.4.160;客户端端口=0-1;服务器端口=2000-2001
会话:413F4DDB

我将其解析为 gettin 会话值,然后执行下一个查询:

播放 rtsp://192.168.4.160/ufirststream RTSP/1.0
CSeq:1
会话:413F4DDB

服务器说:

RTSP/1.0 200 正常
CSeq:1
日期:2012 年 3 月 24 日星期六 17:25:02 GMT
会话:413F4DDB
RTP-Info: url=rtsp://192.168.4.160/ufirststream/track1;seq=6716;rtptime=406936711

以及如何获取媒体数据???我认为 PLAY 方法让服务器给我一个流,但它只给我一个 rtsp 和其他信息的 url ......

我需要来自相机的二进制流,你能为我的下一步提供建议吗??

ale*_*sdm 6

请求的Transport标头SETUP指示将使用哪种协议来发送流,以及client_port您的客户端将侦听的端口。

尝试打开 2 个连续的 UDP 端口并传递该范围client_port=port1-port2而不是 554。这两个端口将用于 RTP 和 RTCP 流(视频和控制数据)。

此外,RTP 端口号应该是偶数,而 RTCP 端口应该是下一个奇数(如果您希望端口范围是随机的而不是用户选择的,请参阅该问题)。