客户端与服务器通过交互CDN消息来完成各种控制和管理功能,RTMP的消息按照其实现的功能可以分为协议控制消息、命令消息、视频消息、音频消息、用户数据消息、共享对象消息。这些消息的具体类型通过CDN消息格式中的“消息类型”字段来标识。比如类型1~7是RTMP规定预留给协议控制消息的类型指示ID,RTMP协议的使用者可以在开发中自定义其他类型的ID来实现其他控制功能。接下来我们主要介绍协议控制消息和命令消息的使用,如果开展IDC业务,需要了解数据中心网络。
RTMP服务器和客户端通过命令消息传递双方的命令信息,这些命令信息均采用AMF编码方式。AMF编码方式是Adobe公司开发出的一种通信协议,它采用二进制形式,为基于Flash的播放器和远端服务器提供一种轻量级的、高效能的通信方式。目前AMF已经从AMF0版本发展到了AMF3版本。通过命令CDN消息,用户可以执行连接、创造流、发布、播放、暂停的操作,接收方也可以通过命令消息向操作发送方返回请求命令的状态(比如onstatus和result消息)。发送方还可以通过命令消息来向接收方请求远程程序调用(RPC)。表6-6描述了各种典型的命令消息及其应用。
下面简单描述connect命令和play命令的使用流程。
connect命令的流程描述如下:
(2)服务器收到连接命令后,服务器发送窗口确认大小的消息给客户端。服务器也与连接命令中提到的应用程序建立连接。
(3)服务器发送设置带宽的消息给客户端。
(4)客户端收到设置带宽的消息后,发送窗口确认大小的消息给服务器。
(5)服务器再发送另一个用户控制消息给客户端,比如StreamBegin。