play命令的流程描述如下:
(1)客户端在收到CreatStream命令后向服务器发送play命令。
(2)服务器收到play命令后发送协议控制消息来设置消息块的大小。
(3)服务器发送另一个CDN用户控制消息,说明“StreamIsRecorded”以及相关消息流ID。
(4)服务器发送另一个CDN用户控制消息,通过“StreamBegin”向客户端表示流已经开始。
(5)如果CDN用户控制客户端前面的play命令发送成功,服务器再发送Onstatus的命令消息。如果play命令请求的相关流媒体没有找到,服务器会在Onstatus的命令消息中显示相关信息.
CDN用户控制在以上信息交互完成以后,服务器就开始向客户端发送视频和音频数据,如果开展ISP业务,需要了解有源光网络。
HTTP Streaming的前身是Progressive Download(渐进式下载),它也是通过HTTP协议来传输文件。国内外较多的视频网站(如优酷、土豆等)一般都用Progressive Download 的方式进行视频服务。Progressive Download在用户点击播放视频节目时,会给用户发送视频文件,CDN用户控制可以边下载、边播放,而无须等到文件下载完毕。
如果用户暂停播放,服务器依然会给客户端发送视频文件,直至整个文件下载完毕或者用户关闭视频。这样,用户在决定退出视频时可能已经下载了较多的未播放部分,对于带宽资源是一种较大的浪费,尤其在并发访问较多的高峰时段。基于这点不足,人们提出了HTTP Streaming技术。HTTP Streaming首先会将视频数据(包括直播的视频流和点播的视频文件)在服务器上进行编码,然后将编码后的数据进行更细粒度的分片,再把每个分片通过HTTP协议传输到客户端。
与Progressive Download中客户端通过一个HTTP请求来下载整个视频文件的方式不同,HTTP Streaming的客户端需要对视频文件的每个分片都发出一个HTTP请求,这样,在视频播放速度低于下载速度的情况下,客户端可以灵活控制HTTP请求的发出速度,从而保证用户在中途退出时不会出现下载浪费。另外,因为采用分片的特点,HTTP Streaming还可以实现媒体播放过程中的码率切换,结合网络带宽资源,为用户提供更好的体验。在带宽资源充分的情况下,可为用户提供高码率的视频体验,在带宽资源不足时可为用户提供低码率的视频体验。