0x0 总体流程
下图表示CBox播放的总体流程。
播放正式内容之前先播放广告。先访问Advertisement DNS得到视频广告文件保存的服务器,然后访问该服务器下载广告文件并播放。视频广告文件采用MP4格式保存。
节目内容采用HLS(HTTP Live Streaming)协议的方式进行播放,CBox先从HLS Server下载m3u8文件,得到需要下载的ts文件,然后再连接上HLS Server来下载ts文件并播放。
0x1 播放视频广告
播放视频广告的总体流程抓包如下。
0x11 通过HTTP获得广告文件的URL
CBox通过下面的GET方法获取。
GET /flash/vd/473fae2b16855f408335283ec9a3e29df44d4a9499406413ccc222e91bc93d85.mp4 HTTP/1.1
0x12 服务器返回广告文件的URL
服务器对上一步GET方法进行响应,返回广告文件的URL。
Location: http://218.78.185.62/v.cctv.com/flash/vd/473fae2b16855f408335283ec9a3e29df44d4a9499406413ccc222e91bc93d85.mp4?wsrid_tag=5b4dfebd_PSshzjdxiu61_28643-17287&wsiphost=local\r\n
0x13 获取广告文件
通过下面的GET方法获取广告文件。
GET /v.cctv.com/flash/vd/473fae2b16855f408335283ec9a3e29df44d4a9499406413ccc222e91bc93d85.mp4
0x14 服务器发送广告文件给CBox
服务器通过http把视频广告文件发送给CBox。
0x2 播放节目
0x21 更新EPG
EPG是Electronic Program Guide的英文缩写,意思是电子节目指南,提供节目播放列表功能和节目单功能。
0x22 和服务器之间进行安全认证
在播放之前对客户端进行安全认证。
0x23 获取HLS的m3u8文件
m3u8 是一种基于HLS的文件视频格式,它主要存放整个视频的基本信息和分片(Segment)组成。Segment一般是ts格式的视频文件。
0x24 从服务器中下载ts流并播放
解析上面下载得到的m3u8文件,得到需要下载的ts文件列表,然后访问服务器,通过http下载这些ts文件到本地并播放。