【问题标题】:RTSP getting stream dataRTSP获取流数据
【发布时间】:2012-05-16 02:18:00
【问题描述】:

我有一个 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 正常 序列号: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 序列号:1 会话:413F4DDB

服务器说:

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

我怎样才能获得媒体数据???我以为 PLAY 方法让服务器给我一个流,但它只给我一个 rtsp 的 url 和其他信息......

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

【问题讨论】:

    标签: c++ qt rtsp


    【解决方案1】:

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

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

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

    【讨论】:

    • 我必须创建一个绑定在我之前设置的端口 1 上的服务器套接字吗?或者我必须创建客户端套接字并使用客户端端口 1 连接到服务器??
    • @mmmaaak 不是服务器套接字,而是 QSocketDeviceQSocketDevice::Datagram 类型。您不必连接到服务器,只需将套接字绑定到空闲的 UDP 端口。
    猜你喜欢
    • 2011-12-17
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多