美文网首页iOS Developer
ios 自己对RTMP认识和理解

ios 自己对RTMP认识和理解

作者: 阿汤8阿义 | 来源:发表于2017-08-24 17:29 被阅读139次
    Paste_Image.png

    通过直播的学习使用到了RTMP协议的传输,RTMP是Real-Time Messaging Protocol(实时消息传送协议)的缩写,它是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。
    下面就具体的介绍RTMP:
    RTMP分为两部分包头和AMF数据(也可以说是包体),这两部分就是我们传输数据两大元素。
    如图:

    Paste_Image.png

    一、包头:
    RTMP包头有4种长度的任意一种,4种长度分别有12, 8, 4, 1 byte(s)。最为理想的RTMP包头为12bytes这种,这种也是完整音视频使用的头,其中里面包含了时间戳,Head_Type,AMFSizs,AMFType,StreamID信息。8字节的包头只纪录了时间戳,Head_Type,AMFSizs,AMFType,它就与12个字节的少了StreamID,StreamID是干嘛后面在介绍。 4个字节的包头记录了时间戳,Head_Type。1个字节的包头只记录了Head_Type 。
    下面我们就重点介绍完整的RTMP包头有12字节。它是下面5个部分组成:
    用途 大小(Byte) 含义
    Head_Type 1 包头
    TIMER 3 时间戳
    AMFSize 3 数据大小
    AMFType 1 数据类型
    StreamID 4 流ID
    这里讲解一下5个部分各自作用和含义:
    图:

    Paste_Image.png

    二、包体:
    Rtmp包默认的最大长度为128字节,(或通过chunksize改变rtmp包最大长度), 当AMF数据超过128Byte的时候就可能有多个rtmp包组成。如果需要解码的rtmp包太长则被TCP协议分割成多个TCP包.那么解码的时候需要先将包含rtmp包的tcp封包合并, 再把合并的数据解码,解码后可得到amf格式的数据,将这些AMF数据取出来就可以对AMF数据解码了.
    图:

    Paste_Image.png

    上图就是具体包体的具体情况。

    相关文章

      网友评论

        本文标题:ios 自己对RTMP认识和理解

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