rtmp学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rtmp学习相关的知识,希望对你有一定的参考价值。

 

用于Flash播放器和服务器之间传输音频、视频、数据

RTMP协议本身既可以传输多媒体数据,也可以控制多媒体播放

RTMP是应用层协议

 

 消息(基本数据单元)

Message Type ID(1-7用于协议控制,RTMP协议自身管理使用,控制协议的stream id必须是0,chunk stream id必须是2,8传输音频数据,9传输视频数据,15-20用于发送AMF编码,负责用户与服务器之间的交互,比如播放暂停等) 

技术分享图片

消息块

Chunk Basic Header用于标识本块

Chunk Message Header用于标识本块负载所属消息

Extended TimeStamp当时间戳溢出时出现

Chunk Data默认大小:音频64bytes,视频128byte

技术分享图片

           1-3字节

1、发送端把数据封装成消息2、把消息分割成消息块3、把消息块通过TCP协议发出去4、接收端把消息块重组成消息5、对消息进行解封装会付出媒体数据

Chunk Basic

fmt(2bit)

  fmt == 0,Chunk Message Header为11个字节

  fmt == 1,Chunk Message Header为7个字节

  fmt == 2,Chunk Message Header为3个字节

  fmt == 3,Chunk Message Header为0个字节

cs id(6bit)

  cs id >= 2,Chunk Basic Header为一个字节

  cs id == 0,Chunk Basic Heaser为两个字节,chunk stream id = 64 + 第二个字节值

  cs id == 1,Chunk Basic Heaser为三个字节,chunk stream id = 64 +  第二个字节值 + 第三个字节值 << 8

 

Chunk Message Header

timestamp or timestamp delta(3bytes)

  timestamp delta表示上个chunk和当前chunk的时间戳差。如果大于16777215使用扩展时间字段

message length(3bytes)

  message body的长度,而不是chunk data的长度

message type id(1bytes)

  1:set chunk size                    设置chunk的最大size

  2:abort ,essage                     携带的内容是chunk stream id,通知听复制接收这个chunk stream的消息内容

  3:acknowledgement

  5:set peer bandwidth                  设置对端输出带宽

  8:Audio Data

  9:Video Data

  17,20:connect、createStream、publish、play、pause   命令消息

        publish--->发布一个流到server,需要onStatus响应

  16,19:

  15,18:

message stream id(4bytes)

  字节序是小端序,该值可以是任意值,不同的消息流服用成相同的chunk stream

 

以上是关于rtmp学习的主要内容,如果未能解决你的问题,请参考以下文章

(转载)RTMP 协议学习总结

[总结]RTMP流媒体技术零基础学习方法

rtmp H264多Slice封装学习笔记

rtmp H264多Slice封装学习笔记

rtmp H264多Slice封装学习笔记

推荐阅读: android rtmp推流直播学习----视频软编码x264