参考了网上很多文章,
完整的协议规范包含的内容较多,可以在网上搜索相应的文章。
下面是简单的分析,对于基本的结构有一个基本的了解。
1.RTMP在TCP/IP 体系结构中,属于应用层协议。
RTMP 协议有多个变种:
        1. 工作在 TCP 协议之上,并使用默认端口号 1935 的明文协议。
        2. RTMPS 使用 TLS/SSL 连接的 RTMP 协议。
        3. RTMPE 使用 Adobe 自己的安全机制的加密 RTMP。虽然它的实现细节是私有的,但使用的是行业标准加密原语。RTMPE 的设计是有缺陷的,它本身并不提供实际的安全。
        4. RTMPT 封装在 HTTP 请求内部以穿越防火墙的协议。RTMPT 常用于建立 TCP 端口 80 和 443 的请求以绕开很多公司的流量过滤。封装的会话中可能会携带纯 RTMP、RTMPS 或者 RTMPE 包。
RTMP协议中的数据单元称为消息(Message)。使用RTMP协议传输数据的时候,消息被拆成消息块(Chunk)
2.消息

RTMP消息分成两个部分,头和它的负载。

2.1 消息头

消息头包含以下内容:

MessageType(消息类型)
Payload Length(负载长度)
Timestamp(时间戳)

Message Stream Id(消息流ID):

其中消息类型用一个字节的字段来表示。ID1-7 用于协议控制
Message Type ID 8-9分别表示音频和视频
MessageType ID 15-20用于AMF编码命令的发送,负责用户和服务器之间的交互,如播放,暂停等。
3 消息块
在传输数据的时候,消息被拆分成较小的数据块,即消息块。消息块由消息块首部(Chunk Header) 和 消息块数据组成。
消息块首部由三部分组成;
Basic header
Chunk Message Header 
Extended TimeStamp(这个只有当时间戳溢出时才会出现)
4.消息分块
消息分块只是 把Msg 的Data部分分成消息块。

块大小是可配置的。这个可以在7.1节中描述的块消息中完成。最大块是65535字节,最小块是128字节。块越大CPU使用率越低,但是也导致大的写入,在低带宽下产生其他内容的延迟。块大小对每个方向都保持独立。

疑问:
消息被分成消息块的时候,只是把Msg Body分成了块,
消息头没有处理,
这个消息头如何传递?

简单分析RTMP规范相关推荐

  1. FFmpeg源代码简单分析:configure

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  2. Adobe 官方公布的 RTMP 规范+未公布的部分

    RTMP 规范中文版 PDF 下载地址 译序: 本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范.本文包含 RTMP 规范的全部内容.是第一个比较全面的 RTMP 规范的中译本.由于成 ...

  3. SRS4.0源码分析-RTMP入口

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 上篇文章 <SRS4.0源码分析-main> 讲解了 SRS main 函数的基本流程,但是可能有些朋友还是比较懵逼. ...

  4. Adobe 官方公布的 RTMP 规范

    转自: http://blog.csdn.net/simongyley/article/details/24977705 译序: 本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范.本文 ...

  5. FFmpeg源代码简单分析 configure

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! ==== ...

  6. Android 系统(261)---SIM卡不识或者掉卡简单分析

    SIM卡不识或者掉卡简单分析 1. 识卡大体过程 2.不识卡问题 不识卡的主要原因:  ①Modem发生错误,异常或者重启.  ②没有收到卡回的ATR  ③有收到卡回的ATR,但是后面跟卡通信出现异常 ...

  7. FFmpeg源代码简单分析:makefile

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  8. FFmpeg源代码简单分析:结构体成员管理系统-AVClass

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  9. FFmpeg源代码简单分析:avio_open2()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  10. FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

最新文章

  1. linux expr命令
  2. java大乘期(33)----java进阶(springboot基础(1)----springboot基本概念)
  3. python 实现队列功能 queue insert() pop()
  4. jquery ajax 跨域请求
  5. 算法高级(30)-外卖凑单算法-为什么每次点外卖你怎么都凑不够那碗卤肉饭呢?
  6. aws rds监控慢sql_AWS RDS SQL Server中的本机差异备份概述
  7. 大学计算机aoa学什么,浙江省高校计算机二级AOA考试excel试题及解析.xls
  8. sd卡升级 c语言程序,奔驰C级导航SD卡怎么升级
  9. 飞信虚拟机支持数据库
  10. Tcplistener服务端与tcpclient客户端使用
  11. git push报错 rejected
  12. Facebook账号注册需要注意什么?Facebook养号技巧?
  13. 全球PM25实时可视化
  14. 用 ListBox 和 DataBinding 显示列表数据 (木野狐译) 1
  15. Elasticsearch生产实战(ik分词器、拼音分词、自动补全、自动纠错)
  16. 【WEB】CSS常用基础知识
  17. Python图形界面开发教程-课程笔记-2022-2-14
  18. vue移动端用什么数据可视化插件_vue-cli+v-charts实现移动端可视化图表
  19. java算法集训代码填空题练习1
  20. leetcode 最常见的前端基础算法面试题汇总

热门文章

  1. 详解三道一维的动态规划算法题
  2. logstash性能测试
  3. 初谈“信息安全审计”
  4. 微信网页版扫码登录是如何实现的?
  5. limbo模拟器安装linux,limbo模拟器win10镜像安装使用教程(附下载)
  6. Python 结巴分词(jieba)Tokenize和ChineseAnalyzer的使用及示例代码
  7. DataFrame-删除行列
  8. 前端性能优化(四)01-页面性能优化之优化原则——尽量减少HTTP请求 使用内容传送网络CDN 避免空src或空href值 启用gzip压缩 CSS放顶部,JS放底部 减少DNS查找
  9. 迅雷下载边下边播设置为本地安装的浏览器
  10. 百钱买小鸡/*公鸡5文钱1只,母鸡三文钱一只,小鸡一文钱三只。现在用100文钱共买了100只鸡,问这100只鸡中,公鸡,母鸡,小鸡各是多少只?