
gb28181
Heworld_guo
printf("hello world\n");
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么GB28181的码流音频包都是320个字节
之前一直疑惑这个问题,国标中主要音频格式是G711a,G711a编码是8K采样率,也就是每秒采样8千个点,G711a压缩率是一半,1秒的音频数据应该是被压缩成4千数据,通常是视频帧和音频帧交叉传输,视频帧率通常是25,1秒音频也被分成了25次传输,所每个包应该是:8000/2/25=160,但实际却是320,这是怎么回事?这问题是因为不了解G711编码,采样率是8K,但采样的每个点是用一个short型储存的,所以1秒产生的数据是16K,G711编码是把一个short型压缩成一个字节(有损失真),实现了压缩一原创 2021-05-14 22:24:06 · 1667 阅读 · 1 评论 -
rtp包解析出负载数据过滤包头附加数据
rtp包格式并不复杂,自定义个rtp头结构体,指针强制转换即可解析。但某些厂家设备一旦发来带有rtp扩展数据的包,就容易被当成负载内容从而解析失败。抓包一看wireshark解析得好好的,对方是按标准添加的数据,只能自己修改适配。以下get_rtp_data()函数简单几行即可将rtp附加数据一口气撸了去,非常方便,具体看代码注释。struct RtpHead{ unsigned char csrclen : 4; //特约信源数,每个4字节,紧接ssrc unsigned char ext原创 2021-05-14 21:54:45 · 465 阅读 · 0 评论 -
GBT28181的流媒体服务两种收流模式对比
GBT28181协议规定码流使用RTP包负载,推荐为PS流,也可以是ES流,可以是UDP传输,也可以是TCP(2016版),TCP分发送端active和passive,取流的SDP信令中加 TCP/ 字段,并附加a=connection:new和a=setup:active(passive)字段,invite消息和响应消息的SDP中a=setup:active/passive相反,注意平台级联时ssrc由下级平台指定,设备接入由接入平台指定。TCP传输是需要在RTP包前加两个字节表示RTP包长度(网络序原创 2020-10-12 21:50:37 · 2409 阅读 · 0 评论