流媒体协议--RTMP

文章目录

RTMP(Real Time Messaging Protocol)是一个应用层协议,主要用于在Flash player和服务器之间传输视频、音频、控制命令等内容。

该协议的突出优点是: 低延时。

RTMP基于TCP(tcp默认使用端口1935)

RTMP播放基本流程

  1. TCP三次握手
  2. RTMP握手
  3. connect连接
  4. createStream创建流
  5. play 播放流
  6. deleteStream删除流
TCP握手过程

流顺序: c--客户端 s--服务端

c -- s

s--c

c--s

RTMP握手过程

c--s

s--c

c--s

一般的发送顺序如下:

1.客户端向服务端同时发送C0+C1

  1. 服务端确认版本号后,向客户端同时发送S0+S1+S2

  2. 客户端接收到S2后发送C2到服务端

C0: 客户端版本

C1: 服务器版本

当前版本为3

C1 和 S1数据包长度为1536字节,C2 和 S2 数据包长度都是 1536 字节,基本就是 S1 和 C1 的副本。

connect连接

c--s:

不同的 Application Instance可根据功能等进行区分,比如直播可以用live来表示,点播回放可以用vod来表示

如 rtmp://192.168.152.21/lrun/s1

run: 为Application Instance

s1: 为房间号

createStream 创建流

c--s

s--c

服务器返回的stream ID为1,为后续的视频或者音频ID

createStream命令用于创建逻辑通道,该通道用于传输视频、音频、metadata,在服务器的响应报文中会返回 ,用于唯一的标示该Stream

play 播放命令

客户端发送play命令来播放指定流。开始传输音视频数据。

如果发送play命令后想要立即播放,需要清空play队列中的其它流,并将reset置为true

deleteStream删除流

客户端发送删除流,指定Stream ID, 服务器不对次消息回应

RTMP数据组成

发送:

接收:

组成:

Messgae消息主要分为三类: 协议控制消息、数据消息、命令消息等

协议控制消息: Type ID = 1 2 3 5 6

数据消息: Message Type ID = 8 9 18

8: Audio 音频数据

9: Video 视频数据

18: Metadata 包括音视频编码、视频宽高等信息。

命令消息:Message Type ID =17,20

Message StreamID是音视频流的唯一ID, 一路流如果既有音频包又有视频包,那么这路流音频包的StreamID和他视频包的StreamID相同

默认的Chunk Size是128字节, 实际发送多为一个Message包含一个Chunk

RTMP消息优先级:在RTMP中,消息(Message)主要分为两大类:控制消息和数据消息。分优先级,优先级高的先行。优先级低的不能阻塞优先级高的。

相关推荐
一木 之林8 分钟前
微信小程序开发全攻略·文章版|05 路由·交互·网络与音乐播放器实战
网络·微信小程序·小程序·交互
yunlaodacom1 小时前
华为云国际站服务代理商:BMS数据库延迟突然升高?磁盘I/O、网络与CPU排查方法
网络·数据库·华为云
张宇Joaquin1 小时前
自研SP600系列网卡驱动跟麒麟V10 SP3 2403配套关系
linux·运维·网络
睡一觉就好了。1 小时前
Cookie与Session
网络
步行cgn1 小时前
HTTP 常用请求方法详解
网络·网络协议·http
mengge.cloud2 小时前
1019Namespace ,Contexts ,Kubernetes Pod
运维·服务器·网络·云原生·容器·kubernetes·云计算
艾iYYY2 小时前
【无标题】
linux·开发语言·网络·操作系统
QZ166560951592 小时前
可视化易用·低误报率·跨区域部署:知源-AI数据分类分级系统在金融行业的落地实践
大数据·网络·安全·网络安全
aixingkong9212 小时前
UALink 技术白皮书解读
服务器·网络·硬件架构
Amumu121383 小时前
Node学习: 网络基础概念 + HTTP模块
网络·node.js