美文网首页
15期_音视频协议之RTMP(1)

15期_音视频协议之RTMP(1)

作者: 萧修 | 来源:发表于2023-09-23 01:30 被阅读0次

RTMP(Real-time messaging Protocol)实时消息传输协议,该消息基于TCP,是一个协议族,用来解决多路复用和分包的问题。

发送端:

  • 把数据封装成消息
  • 把消息分割为块
  • 将分割后的快通过传输协议如(TCP)协议发送到网络传输出去

接收端:

  • 通过TCP协议收到块数据
  • 先将块重新组装成消息
  • 通过对消息进行解封装可以恢复出可处理的数据

下面从从设计思想,消息【类型、格式、消息交互实例】、块等几个方面了解RTMP

设计思想

分包

从RTMP的数据传输流程可以看出RTMP里有两个重要的概念:消息和块。

消息,服务于数据封装,是RTMP协议中的基本数据单元;
块,服务于挽留过传输

通过这种分层设计,就可以将大的消息(message)分包成小的块(chunk)通过网络进行传输,这个也是RTMP能够实现降低延迟的核心原样

多路复用

在RTMP中,实时生成的音频和视频依次加入数据流,实现了多路复用。这个流就是块流(chunk stream),这种复用流,也是音视频同步的关键

优先级

块流没有优先级划分,优先级设计在消息流(message stream),不同消息的不同优先级,控制了在网络底层的排列顺序。

控制消息>音频消息>视频消息

分块的利用,是优先级有效执行的关键,将大消息切割小的,避免了大低优先级消息堵塞小的高优先级

块大小协商

在将消息切成为块,是以chunk size为基准切割。默认值为128字节。

块越大,CPU负担越小,不利于网络传输。耗时
块越小,CPU负担越大,利于挽留过,但不适用于高码率数据流情况。

chunk size可根据实际情况改变,通过set chunk size

压缩优化

RTMP中rtmp chunk header的长度不是固定的,12、8、4、1字节四种,RTMP chunk head是块头,属于RTMP结构块结构一部分。

最完整的chunk header是12字节,一步一步省略就变为了1字节的

12字节为
chunk type/chunk stream/timestamp/message length/msg type id/msg stream id

其中msg stream id为4字节,省略之后就剩8字节

msg type id为1字节,message length为3个字节,省略之后为4字节。

只剩 chunk type / chunk stream id的1字节

相关文章

网友评论

      本文标题:15期_音视频协议之RTMP(1)

      本文链接:https://www.haomeiwen.com/subject/rgqqvdtx.html