初步了解RTMP

1 RTMP 实时消息传输协议,是现在比较常用的协议

它有三种变种:

1)工作在TCP之上的明文协议,使用端口1935;

2)RTMPT封装在HTTP请求之中,可穿越防火墙;

3)RTMPS类似RTMPT,但使用的是HTTPS连接;

RTMP协议(Real Time Messaging Protocol)是被Flash用于对象,视频,音频的传输.这个协议建立在TCP协议或者轮询HTTP协议之上.

RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据.一个单一的连接可以通过不同的通道传输多路网络流.这些通道中的包都是按照固定大小的包传输的.

2 RTMP使用原理:首先推流到 RTMP 服务器,然后再有 RTMP 服务器提供 RTMP 视频服务.

注:需啊说明的是:RTMP 也提供 HLS, 将音视频切位 ts 流,然后用户可以直接播放 m3u8流媒体.

3 RTMP协议规定

3.1 建立一个网络连接

3.2 建立一个网络流(发送多媒体的通道)注:只能建立一个网络连接,但是可以建立多个网络流

4 RTMP 协议使用步骤

4.1 握手:RTMP 协议都是以握手开始的客户端先发送 C0,C1两个数据块,服务器收到 C1或者 C2块的时候开始发送 S0和 S1客户端收齐 S0和 S1的时候开始发送 C2,当服务器收齐 C0和 C1的时候开始发送 S2当客户端收到 S2同时服务器收到 C2 的时候,握手完成

4.2 建立连接:建立客户端和服务器端的网络连接> 客户端发送命令消息中的”connect”,到服务器,请求与一个服务器应用实例建立连接> 服务器接收到请求后,发送确认消息,同时连接到请求中的连接实例> 服务器发送设置带宽协议消息到客户端> 客户端接收到 设置带宽 消息之后,发送确认消息到服务器> 服务器发送用户控制消息中的”stream”消息到客户端> 服务器发送消息命令中的”结果”消息到客户端

4.3 建立流:建立客户端和服务器端的”流连接”> 客户端发送消息命令中的”创建流”到服务器> 服务器接收到”创建流”命令后,发送”结果”命令到客户端

4.4 播放传输音视频数据> 客户端发送”播放”命令到服务器> 服务器收到消息后,发送 设置消息大小协议消息> 服务器发送” streambegin”,告知客户端流 ID> 若播放成功的话,服务器发送”响应状态”到客户端.告知客户端播放成功> 服务器发送客户端要播放是数据

流媒体的播放

1 HLS 的流媒体通过AVPlayer/AVPlayerViewController 和 MPMviePlayerController/MPMoviePlayerViewController 来实现.

2 RTMP 的流媒体要用第三方框架实现 如 FFMpeg ,IJKPlayer和 VLC 等

3 常用的流媒体框架:百度/阿里/腾讯/网易/斗鱼直播伴侣/七牛云等

你可能感兴趣的:(初步了解RTMP)