1、rtmp历史背景
此协议是Adobe公司为Flash播放器和服务器之间进行音频、视频、数据的高性能传输而开发的私有协议。
随着直播行业的兴起,带动了音视频相关技术的发展,RTMP亦被用作于主流的直播协议。
2、rtmp功能特性
RTMP是一个应用层协议,有多路复用的特点,传输内容有视频、音频、控制命令。
RTMP可适用于各种音视频应用,支持一对一、一对多 直播、点播服务及会议应用等。
RTMP 在音视频相关的协议中,它的突出特点是:连接可靠、低延时
RTMP 工作在TCP之上的明文协议,默认端口1935
基于 TCP 的好处:提高了RTMP的可靠性。
基于 TCP 的弊端:如果网络条件差时,由于TCP存在重传的机制,所以导致RTMP存在累计延时。当网络状态差时,服务器会将包缓存起来,导致累积的延迟,待网络状况好了,就一起发给客户端。
3、rtmp 三个变种
RTMPE 在RTMP的基础上增加了加密功能
RTMPT 封装在HTTP请求之中,可穿越防火墙,端口80
RTMPS 增加了TLS/SSL的安全功能(使用HTTPS连接),端口443
4、rtmp 优缺点
优点
RTMP延时较小,通常为 1-3s
RTMP基于 TCP 长连接,不需要多次建链
RTMP适合长时间播放,连续100万秒,即10多天连续播放没有出现问题
大多数CDN厂商都支持RTMP协议,在推流中用的比较多
Windows的浏览器基本上都支持Flash ,而Flash又支持RTMP得非常好缺点
RTMP基于TCP传输,非公共端口,可能会被防火墙阻拦
RTMP为Adobe私有协议,IOS平台没有提供原生支持RTMP
5、RTMP 消息交互过程
RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。在基于传输层协议的链接建立完成后,RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接,在Connection链接上会传输一些控制信息,如SetChunkSize, SetACKWindowSize。其中CreateStream命令会创建一个Stream链接,用于传输具体的音视频数据和控制这些信息传输的命令信息。
RTMP协议传输时会对数据做自己的格式化,这种格式的消息我们称之为RTMP Message,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把Message划分为带有Message ID的Chunk,每个Chunk可能是一个单独的Message,也可能是Message的一部分,在接受端会根据chunk中包含的data的长度,message id和message的长度把chunk还原成完整的Message,从而实现信息的收发。
网友评论