RTMP协议总结

    xiaoxiao2025-04-23  6

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

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

    RTMP协议分析 一、RTMP包头

    RTMP协议分析 二、AMF数据 RTMP 封包详解 rtmp协议简单解析以及用其发送h264的flv文件 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数据。

    转载请注明原文地址: https://ju.6miu.com/read-1298368.html
    最新回复(0)