安卓GB28181-2022 RTP over TCP

     使用TCP传输RTP包,GB28181-2016和GB28181-2022 都是按IETF RFC4571来的。使用TCP发送RTP包,前面加个16位无符号长度字段就好(网络字节序)。具体定义格式如下:

   需要注意的是LENGTH值可以是0,0的话表示空包; 另外UDP传输RTP包,整个RTP包的长度一般就1000多个字节。TCP的话,LENGTH最大可以到0xFFFF, 对于视频帧或PS包可以考虑把RTP包切的大一点,这样可以少传一些RTP包头(RTP Header至少12个字节)。

   SDP也要做相应调整.

   媒体行定义如下(m=):

  "m=" media SP port ["/" integer] SP proto 1*(SP fmt) CRLF

   其中<proto>值为:"TCP/RTP/AVP"

   "setup" 属性:

"setup"属性值有:{ "active" , "passive"};

a=setup:active 表示主动发起连接.

a=setup:passive 表示被动accept连接.

   给出一个安卓端发起连接的SDP例子:

 v=0
 o=31020000011310000027 0 0 IN IP4 192.168.0.107
 s=Play
 c=IN IP4 192.168.0.107
 t=0 0
 m=video 15012 TCP/RTP/AVP 96
 a=rtpmap:96 PS/90000
 a=setup:active
 a=connection:new
 a=sendonly
 y=0200000001

   GB/T 28181 附录中给出了基于TCP协议的音视频媒体传输描述,相对于GB/T 28181-2016, GB/T 28181-2022增加了TCP客户端首次连接重连机制要求,如果首次TCP连接失败,需要尝试重连接,重连必须间隔一段时间再尝试(间隔时间应不小于1秒), 至少要尝试重连3次以上。

   首次重连机制,我自己的代码已经加上了, 接口如下:

    /*
    * Copyright (C) 1130758427@qq.com. All rights reserved.
    */


	/**
	 * 设置国标TCP连接超时时间
	 *
	 * @param timeout_ms, 单位是毫秒, 必须大于0, 不设置的话SDK将用默认值
	 * @return {0} if successful
	 */
	public native int SetGBTCPConnectTimeout(long handle, int timeout_ms);


	/**
	 * GB/T 28181-2022 附录D: TCP流媒体传输时, 首次TCP连接失败时, 应间隔一段时间进行重连, 重连间隔应不小于1秒, 此接口设置首次重连间隔时间
	 *
	 * @param interval_ms, 单位是毫秒, 必须大于等于0, SDK默认值是1000毫(1秒)
	 * @return {0} if successful
	 */
	public native int SetGBInitialTCPReconnectInterval(long handle, int interval_ms);


	/**
	 * GB/T 28181-2022 附录D: TCP流媒体传输时, 首次TCP连接失败时, 应间隔一段时间进行重连,重连次数应不小于3次, 此接口设置首次最大重连次数
	 *
	 * @param attempts, 最大重连次数, 必须大于等于0, SDK默认值是0, 如果对接的是GB/T 28181-2022 server,建议设置为3或更大的值
	 * @return {0} if successful
	 */
	public native int SetGBInitialTCPMaxReconnectAttempts(long handle, int attempts);

   GB28181-2022 相对于2016有些调整,基于国标的安卓执法记录仪要对接2022版服务端的话,代码也做相应调整更新, 更多问题可以联系qq: 1130758427

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值