rtmp发布录制视频
本文描述了rtmp发布本地视频的流程
一、简要介绍
RTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection);第二步,建立一个网络流(NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。
发布一个视频的流程主要经过以下几个步骤:握手->建立网络连接->建立网络流->发布视频;
二、握手
一个RTMP连接以握手开始,双方分别发送大小固定的三个数据块
1、握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。
2、当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。
3、当客户端和服务器分别收到S2和C2后,握手完成。
三、建立网络连接
1、客户端发送命令消息中的“连接”(connect)到服务器,请求与一个服务应用实例建立连接。
2、服务器接收到连接命令消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息到客户端,同时连接到连接命令中提到的应用程序。
3、服务器发送设置带宽(Set Peer BandWidth)协议消息到客户端。
4、客户端处理设置带宽协议消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息到服务器端。
5、服务器发送用户控制消息中的“流开始”(Stream Begin)消息到客户端。
6、服务器发送命令消息中的“结果”(_result),通知客户端连接的状态。
四、建立网络流
1、客户端发送命令消息中的“创建流”(createStream)命令到服务器端。
2、服务器端接收到“创建流”命令后,发送命令消息中的“结果”(_result),通知客户端流的状态。
五、推送视频
1、客户端发送发布命令(publish)到服务器
2、服务器接受到命令后,发送用户控制命令(streamBegin)到客户端
3、客户端发送数据消息到服务端
4、客户端发送音频数据到服务端
5、客户端发送chunk控制消息(setchunksize)到服务端
6、服务端返回发布结果命令给客户端
7、客户端发送视频数据到服务端