网络流媒体-RTMP

1、RTMP协议概述

流媒体协议概述中,我们知道rtmp协议属于应用层协议,下层传输层协议使用的是TCP协议(其实还可以是UDP的,只不过我好像没看到)。在每学习一种协议的时候,我们首先要清楚协议封装,在我的理解中流媒体的所有协议均可看成与常见的flv,ts一样把我们需要的数据(音视频等)进行包装的一种封装格式,只不过流媒体的这种封账用于网络传输,flv,ts封装用于本地存储,作用不一样而已。除此之外不同的是,流媒体不仅仅封装用户数据(这里主要是音视频数据),还封装了控制播放等操作的控制数据

2、RTMP的封装逻辑

rtmp属于应用层协议,封装逻辑其实也很简单,以ts封装为例,一个ts文件里面是有一个一个的tsPacket组成的。那么rtmp也一样,rtmp协议里面把所有的数据(音视频数据以及控制信息数据)封装成一个一个message。

message

看到这个message header是不是特别熟悉,没错这就是flv中的tag header,所以说rtmp里面实际封装的就是flv。有一点区别的是message type 这里不仅仅有8(音频),9(视频),12(meta),还包括其他的控制消息的message。因此,我们可以说message就是tag,并且一个message存放的是一帧完整的视音频数据。

chunk:

先要清楚chunk和message有什么关系?chunk是用来在网络在实际传输的数据包,我们封装的message可能会有很大(比如视频数据),不利于网络传输,那么就需要把message拆分成很多个chunk包来进行网络分发。既然拆分成chunk了,那么每个chunk当然也有一个chunk header(包含了message header里面的所有信息,以及自己的chunk信息)。

其实chunk十分简单,总的来说分为四种类型的chunk,那么为啥要分为这么多类型呢,原因在于当我们在进行网络传输的时候可能会把同一帧(message)划分为多个chunk,比如划分为5个chunk,那么这5个chunk的时间戳,流ID肯定是都是一样的(因为属于同一帧数据),如果每一个chunk都带上这些信息是不是就加重了网络传输负担了呢?因此我们定义了几种不同的chunk,有的带的信息比较全,有的信息量非常少(可以沿用上一个的一些信息),这样是不是就减少传输负担了呢。看个例子:

为啥要划分为两个type3的chunk,因为没有必要带其他信息在第一个chunk的时候全部信息都有,右面几个chunk直接沿用就行了。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、支持国标GB28181平台、国标GB28181 IPC和国标GB28181 NVR设备同时接入 (支持GB28181-2011版本和GB28181-2016版本)     2、支持国标GB28181设备注册和注销,对所有设备进行管理,获取资源 对资源列表进行管理     3、支持国标GB28181的目录订阅,对接收的订阅通知进行处理     4、支持国标GB28181实时视频请求(支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))     5、支持国标GB28181 PTZ控制     6、支持国标GB28181 录像查询     7、支持国标GB28181 历史视频点播 (支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))     8、支持国标GB28181 历史视频下载 (支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))     9、支持对接收的国标实时视频码流和历史视频码流进行管理     10、支持将国标的PS码流转换成ES码流     11、支持丢包打印和断流打印     13、支持RTSP服务和RTSP会话管理     14、支持RTSP客户端 UDP传输和TCP传输     15、支持国标GB28181设备5000路左右的接入管理,支持国标请求视频在100路左右     16、支持国标28181设备和通道写入mysql数据库      17、支持设备的云台PTZ控制,控制类型:上"up",下"down",左"left",右"right",左上"leftup",左下"leftdown",右上"rightup",右下"rightdown",镜头近"zoomin",镜头远"zoomout", 焦距远"focusfar",焦距近"focusnear", 设置预置位"setpos",调预置位"callpos"     18、支持历史视频的查询和历史视频的点播控制     19、支持对国标设备的控制,"record":录像开启和停止-通道id "guard":布放和撤防-报警通道id "reboot":设备重启-设备id "keyfame":强制关键帧-通道id     20、支持对实时视频的图片截图,通过http直接访问图片    21、支持rtmp和hls会话一直保留    22、支持报警消息(设备上线、下线和设备端报警)通过httpclient方式主动通知    23、支持公网和局域网同时存在

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值