RTMP连接的建立有三个步骤:
1、握手。用于判别客户端、服务器是否存在。 2、建立网络连接。注意不是tcp中的网络连接。 3、建立流连接。建立流连接的目的是传输媒体数据。 4、播放。
握手阶段,双方分别发送大小固定的三个数据块. 1、客户端发送数据块C0和C1。 2、服务器接收到C0或C1中任意一个后,向客户端发送数据块S0和S1;如果服务器接收齐了C0和C1,那么服务器还可以继续向客户端发送数据块S2。 3、客户端接收齐S0和S1后,向服务器发送数据块C2。 4、如果服务器接收到了S2,客户端也接收到C2,那么握手完成!
客户端伪代码
// 客户端伪代码S0 = nullS1 = null S2 = nullsend C0 and C1while(S0 == null || S1 == null){ recv S0 and S1}send C2recv S2服务器端伪代码// 服务器伪代码C0 = null,C1 = nullwhile(C0 == null && C1 == null){ recv C0 or C1}send S0,S1while(C0 == null && C1 == null){ recv C0 or C1}send S2recv C2建立网络连接阶段
具体操作如下: 1、客户端发送命令“connect”给服务器 2、服务器接收到“connect”命令之后,发送消息“确认窗口大小(Window Acknowledgement Size)”给客户端,同时连接到“connect”命令中提到的应用程序 3、服务器发送消息“设置带宽”给客户端 4、客户端接收到消息“设置带宽”之后,发送消息“确认窗口大小”给服务器 5、服务器发送消息“流开始”给客户端 6、服务器发送消息“结果”给客户端,通知客户端连接的状态
建立流阶段
具体操作如下: 1、客户端发送命令“创建流”给服务器 2、服务器接收到命令之后,发送“结果”给客户端
播放阶段
具体操作如下: 1、客户端发送命令“播放”给服务器 2、服务器接收到命令之后,发送消息“设置块大小”给客户端 3、服务器发送“stream begin”给客户端,告诉客户端 流的id 4、播放命令成功的话,服务器发送“响应状态”给客户端,告诉客户端播放成功 5、服务器发送音视频数据给客户端
新闻热点
疑难解答