RTMP协议
RTMP协议是应运流媒体服务而生,传统的媒体播放一般是讲视频或者音频下载到本地,然后通过本地播放器播放。这种缺陷是只有将视频完整的下载下来才能播放。而新的要求是可以在线观看,比如使用浏览器观看。或者是现在比较火的网络直播啥的,需要边录制边播放,这就是所谓的流媒体,而流媒体的技术实现就是RTMP协议,还是网页中的Flash播放器。RTMP协议规定了服务器和客户端之间在进行数据传输时的格式
RTMP协议简介
RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。在基于传输层协议的链接建立完成后,RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接,在Connection链接上会传输一些控制信息,如SetChunkSize,SetACKWindowSize(这两个东西后面会提到)。RTMP Connection初始化完成后,会创建一个Stream链接,用于传输具体的音视频数据和控制命令信息。RTMP协议会对欲传输的数据(用户数据)进行格式封装,被封装后的东东称之为RTMP Message,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把Message划分为带有Message ID的Chunk,每个Chunk可能是一个单独的Message,也可能是Message的一部分。在接受端会根据chunk中包含的data的长度,message id和message的长度把chunk还原成完整的Message,从而实现信息的收发。
librtmp介绍
- 建立TCP连接
- 进行握手
- 建立netConnect连接
- 建立stream连接
- 开始播放
- 停止播放
具体的流程看参考中的第一个连接
参考
详细了解原理请看参考
http://blog.csdn.net/u011244446/article/details/46764593
http://blog.csdn.net/leixiaohua1020/article/details/15814587
https://github.com/Red5/red5-server/releases/download/v1.0.9-M10/red5-server-1.0.9-M10.tar.gz