rtsp之上传公网

现在有一个需求,需要在外网通过rtsp协议访问内网。但是,由于内网没有固定的IP地址,所以,rtsp协议根本进不来啊。

这里我想出一个办法,如下

 编写两个服务,第一个跑在内网的PC机上面,一个跑在云服务器上面。

第一步:腾讯云的服务先监听一个端口,比如8888

第二步:PC端的服务,与腾讯云的8888端口建立一个tcp连接,是一个长连接

第三步:腾讯云服务器如果请求IPC的摄像机,先通过私有协议发送一个请求给PC机

第四步:PC机再与云服务器的服务流媒体监听端口建立tcp连接,并发送命令告诉是哪个IPC

第五步:云服务器发送请求,请求视频流,

第六步:开始接收视频流,进行后续的逻辑处理。

******************************************信令交互接口定义********************

注册接口:PC机与腾讯云注册,并上报设备ID

<request>
    <cmd>Register</cmd>
    <paramter>
        <item>
            <camid>1</camid>
        </item>
        <item>
            <camid>2</camid>
        </item>
    </paramter>
</request>

应答:加上心跳周期单位为秒

<response>
    <cmd>Register</cmd>
    <paramter>
        <code>0</code>
        <text>success</text>
        <keepalive>20</keepalive>
    </paramter>
</response>

心跳:

<request>
    <cmd>KeepAlive</cmd>
    <paramter>
        <keepalive>20</keepalive>
    </paramter>
</request>
<response>
    <cmd>KeepAlive</cmd>
    <paramter>
        <code>0</code>
        <text>success</text>
        <keepalive>20</keepalive>
    </paramter>
</response>

请求IPC推流:

<request>
    <cmd>PlayIpc</cmd>
    <paramter>
        <camid>1</camid>
    </paramter>
</request>

应答:

<response>
    <cmd>PlayIpc</cmd>
    <paramter>
        <code>0</code>
        <text>success</text>
    </paramter>
</response>

*************************流媒体端口命令************

建立tcp连接之后,PC机发送连接信息

<request>
    <cmd>ConnectIpc</cmd>
    <paramter>
        <camid>1</camid>
    </paramter>
</request>
<response>
    <cmd>ConnectIpc</cmd>
    <paramter>
        <code>0</code>
        <text>success</text>
    </paramter>
</response>

腾讯云服务器处理完之后,向PC机发送开始请求流的命令

<request>
    <cmd>StartIpc</cmd>
    <paramter>
        <camid>1</camid>
    </paramter>
</request>

 

<response>
    <cmd>StartIpc</cmd>
    <paramter>
        <code>0</code>
        <text>success</text>
    </paramter>
</response>

命令完之后,后面就是开始接收rtp数据了。。

*****************************上述就是信令的交互流程************************

下面对交互格式定义:

 

开头以# 开始,1表示请求信令,2表示应答信令,3表示流媒体(H264)4表示流媒体(H265),长度为4字节的网络字节序,后面是信令或者流媒体数据,媒体数据的话,媒体数据的话,还需要增加4个字节的时间戳,在每帧数据的开头。

**************至此,完成了该服务的定义工作**************后续开始编码尝试效果了。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值