RTMP协议总结

这两天研究了RTMP协议,在此对它做一个总结

参考了比较有用的几篇博客,供大家参考:

RTMP协议分析 一、RTMP包头


在RTMP协议的学习中会遇到几个消息头,初学者很容易搞混淆,比如,消息头(Message Head),块头(chunk head),rtmp头,
要知道他们的定义,可以参考我前面给出的参考文章,我这里只解释他们之间容易混淆的几个概念。
先来看下他的大致定义:


由图可知,RTMP的包头就是块头,RTMP传输数据都是按块放方式传输的。
消息的头,要通过块头解析获取到,然后加到消息体的前面一起组成一个消息。

以下是对一些参数的解释:
message length:是整个消息(可能被拆分成几个chunk)的数据长度,不是chunk data 的长度。
AMFType的取值如下:

0×01Chunk Sizechanges the chunk size for packets

0×02Unknown

0×03Bytes Readsend every x bytes read by both sides

0×04Pingping is a stream control message, has subtypes

0×05Server BWthe servers downstream bw

0×06Client BWthe clients upstream bw

0×07Unknown

0×08Audio Datapacket containing audio

0×09Video Datapacket containing video data

0x0A_0x0E Unknown 

0x0FFLEX_STREAM_SENDTYPE_FLEX_STREAM_SEND

0x10FLEX_SHARED_OBJECTTYPE_FLEX_SHARED_OBJECT

0x11FLEX_MESSAGE TYPE_FLEX_MESSAGE 

0×12Notifyan invoke which does not expect a reply

0×13Shared Objecthas subtypes

0×14Invokelike remoting call, used for stream actions too.

0×16StreamData这是FMS3出来后新增的数据类型,这种类型数据中包含AudioData和VideoData


在1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需操作其中的数据,12用于RTMP块流协议,这里的rtmp 数据部分都有固定的大小

为8,9的消息分别用于传输音频和视频数据。

为15-20的消息用于发送AMF编码的命令,负责用户与服务器之间的交互,比如播放,暂停等等,这部分的数据解析参考:RTMP协议分析 二、AMF数据



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值