博客
关于我
RTMP协议之RTMP规范简单分析01
阅读量:233 次
发布时间:2019-03-01

本文共 940 字,大约阅读时间需要 3 分钟。

RTMP协议之RTMP规范简单分析

RTMP协议是一个互联网TCP/IP四层体系结构中应用层的协议。它的基本数据单元称为消息(Message)。在RTMP协议中,消息会被拆分成更小的单元,称为消息块(Chunk),以适应网络传输环境。

消息是RTMP协议的基本数据单元。不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中规定了十多种消息类型,分别发挥着不同的作用。例如,Message Type ID在1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需操作其中的数据。Message Type ID为8,9的消息分别用于传输音频和视频数据。Message Type ID为15-20的消息用于发送AMF编码的命令,负责用户与服务器之间的交互,比如播放,暂停等等。

消息的首部(Message Header)包含四个部分:Message Type ID标识消息类型,Payload Length标识消息长度,Timestamp标识消息的时间戳,Stream ID标识消息所属媒体流的唯一标识符。

在网络上传输数据时,消息会被拆分成更小的数据块,称为消息块(Chunk)。RTMP协议规定消息块首部(Chunk Header)包含三个主要部分:Chunk Basic Header,由Chunk Stream ID(CSID)和Chunk Type组成,Chunk Message Header用于标识消息块负载所属消息,Extended Timestamp仅在时间戳溢出时出现。

消息分块过程是指将消息负载(Message Body)分割成大小固定的数据块(默认为128字节,最后一个数据块可以小于此固定长度),并在首部加上消息块首部(Chunk Header),形成消息块。因此,消息块的大小是消息块首部大小加上128字节,或消息块首部大小加上最后一个小于128字节的数据块大小。

在RTMP传输媒体数据的过程中,发送端首先将媒体数据封装成消息,然后将消息分割成消息块,最后通过TCP协议发送。接收端在通过TCP协议收到数据后,首先将消息块重新组合成消息,然后对消息进行解封装处理,从而恢复出媒体数据。

转载地址:http://vcfv.baihongyu.com/

你可能感兴趣的文章
Non-final field ‘code‘ in enum StateEnum‘
查看>>
none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
查看>>
None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
查看>>
NoNodeAvailableException None of the configured nodes are available异常
查看>>
Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
查看>>
nopcommerce商城系统--文档整理
查看>>
NOPI读取Excel
查看>>
NoSQL&MongoDB
查看>>
NoSQL介绍
查看>>
NoSQL数据库概述
查看>>
Notadd —— 基于 nest.js 的微服务开发框架
查看>>
NOTE:rfc5766-turn-server
查看>>
Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Notepad++在线和离线安装JSON格式化插件
查看>>
notepad++最详情汇总
查看>>
notepad++正则表达式替换字符串详解
查看>>
notepad如何自动对齐_notepad++怎么自动排版
查看>>
Notes on Paul Irish's "Things I learned from the jQuery source" casts
查看>>
Notification 使用详解(很全
查看>>
NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
查看>>