服务器组件从功能组成上来讲,CDN数据包含了一个媒体编码器和一个流分割器(或者文件分割器)。媒体编码器从音视频设备中获取实时的数据,对这些数据进行编码,然后进行封装并传输给流分割器。这里的编码格式应该是客户端所能支持的编码格式,比如H.264的视频编码格式和AAC的音频编码格式。编码后进行封装的格式也具有一定的要求,比如包含有音频和视频的数据通过MPEG-2的TS流格式封装,纯音频数据通过MPEG的基本流格式封装。这里所说的MPEG-2 TS流不要与MPEG-2的视频压缩方式混淆。
CDN数据流只是一种打包封装的格式,它可以被不同的压缩格式拿来使用,比如H.264。HTTP Live Streaming只支持H.264的视频编码格式和AAC的音频编码格式。对于封装格式,如果是含有音频和视频的数据,HTTP Live Streaming只支持MPEG-2 TS流的封装格式;如果是纯音频的数据,则只支持MPEG-2 TS流的封装格式或者MPEG基本流的格式,如果开展IDC业务,需要了解数据中心技术。
CDN数据流分割器是一个处理程序,它从服务器的媒体编码器读取封装的数据,然后再分割成一系列的小分片。每个分片都是一个独立的文件,但最后能重新拼接成一个连续播放的流。流分割器还会生成一个索引文件,包含了针对每个分片的索引信息和相关参考信息。流分割器每完成一个新媒体文件的分割,索引文件就会更新一次。
索引文件中的索引信息可以被用来指示分片起始序列号、分片长度以及分片的URL。CDN数据流分割器也可以加密每一个分片,并同时创建一个相关的密钥文件。被分割出来的分片文件被保存为.ts文件,索引文件本身被保存为以.M3U8结尾的文件。M3U8文件格式是m3u文件格式的扩展,而m3u在音频流化中用于保存MP3的播放列表,因此HTTP Live Streaming中的客户端也能兼容MP3格式的音频流化。下面是一个简单的以.M3U8结尾的文件示例,从中可以看出整个媒体流都包含在三个未经加密的10秒长分片文件中。