默认
发表评论 0
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
技术干货 | 直播RTMP协议简介与注意事项
阅读(30161) | 评论(0 收藏 淘帖
RRTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为业内广泛使用的协议也重新被相关开发者重视起来。本文主要分享对RTMP的一些简介和实际开发中遇到的一些状况。

RTMP协议基本特点

• 基于TCP协议的应用层协议
• 默认通信端口1935


直播基本流程

技术干货 | 直播RTMP协议简介与注意事项_111.jpg

可以看到RTMP 工作在直播推流和拉流两个位置,主要用作音视频媒体数据的传输,推流主要通过RTMP协议,而拉流还可以通过HLS和Http-FLV两种方式。
02
RTMP 握手
RTMP 握手分为简单握手和复杂握手,现在Adobe公司使用RTMP协议的产品用复杂握手的较多,不做介绍。
握手包格式
    技术干货 | 直播RTMP协议简介与注意事项_222.jpg    
C0和S0:1个字节,包含了RTMP版本, 当前RTMP协议的版本为 3

技术干货 | 直播RTMP协议简介与注意事项_333.jpg
C1和S1:4字节时间戳,4字节的0,1528字节的随机数

技术干货 | 直播RTMP协议简介与注意事项_444.jpg
C2和S2:4字节时间戳,4字节从对端读到的时间戳,1528字节随机数
技术干货 | 直播RTMP协议简介与注意事项_555.jpg
RTMP握手基本过程

1.握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。
2.当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。
3.当客户端和服务器分别收到S2和C2后,握手完成。


注意事项: 在实际工程应用中,一般是客户端先将C0, C1块同时发出,服务器在收到C1之后同时将S0, S1, S2发给客户端。S2的内容就是收到的C1块的内容。之后客户端收到S1块,并原样返回给服务器,简单握手完成。按照RTMP协议个要求,客户端需要校验C1块的内容和S2块的内容是否相同,相同的话才彻底完成握手过程,实际编写程序用一般都不去做校验。

RTMP握手的这个过程就是完成了两件事:
1.校验客户端和服务器端RTMP协议版本号
2.是发了一堆随机数据,校验网络状况。


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

000.jpg (8.26 KB, 下载次数: 420)

000.jpg

121.jpg (14.01 KB, 下载次数: 390)

121.jpg

122.jpg (11.62 KB, 下载次数: 408)

122.jpg

123.jpg (8.88 KB, 下载次数: 408)

123.jpg

124.jpg (47.94 KB, 下载次数: 461)

124.jpg

125.jpg (27.18 KB, 下载次数: 467)

125.jpg

126.jpg (32.88 KB, 下载次数: 372)

126.jpg

127.jpg (19.45 KB, 下载次数: 382)

127.jpg

666.jpg (15.79 KB, 下载次数: 410)

666.jpg

777.jpg (10.33 KB, 下载次数: 423)

777.jpg

888.jpg (5.31 KB, 下载次数: 429)

888.jpg

999.jpg (6.96 KB, 下载次数: 430)

999.jpg
上一篇:更新SVN的时候遇到错误:svn: Can't convert string from 'UTF-8' to native encoding下一篇:技术干货 | 直播RTMP协议简介与注意事项2
推荐方案
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部