文献标识码: A
文章编号: 0258-7998(2012)07-0120-03
近年来,随着移动带宽、3G网络的迅猛发展和移动终端功能的不断提高,移动互联网给用户带来了更多、更好的多媒体应用体验。现有移动终端流媒体业务通常对同一视频按不同码流标准多次编码,产生多种固定码率视频流,以应对复杂网络环境下的终端应用。该方法存在视频源编码后占用空间大、异构网络终端间视频数据无法共享等缺陷。可伸缩视频编码SVC(Scalable Video Coding)[1]作为近年来新兴的一种视频信源编码技术,可通过一次编码生成高码率视频流。SVC根据终端需求及网络传输环境,传送部分码流数据,在终端达到不同分辨率、质量和帧率的解码效果,能够有效解决传统视频编码标准输出码流的不灵活性,较好地解决了复杂网络环境中异构终端间的视频共享问题,极大地节省了视频存储空间,具有十分广阔的应用前景。
本文基于SVC码流结构和移动互联网特性,结合传统流媒体分发技术,提出了一种可用于解决复杂网络环境下异构终端间资源共享的流媒体分发策略,实现了基于SVC视频编码格式的P2P内容分发系统。该系统实现了视频流在P2P网络上的可靠分发,并能满足用户对视频分辨率和质量的不同需求。
1 H.264/SVC码流分析
H.264算法在概念上可分为两层:视频编码层VCL(Video Coding Layer),负责高效的视频内容表示;网络抽象层NAL(Network Abstraction Layer),负责对数据进行打包和传送。NAL单元将视频数据基于bit流传输转到基于包的传输,实现了较高的网络友好性。H.264/SVC作为H.264编码标准的可分级扩展,采用基于离散余弦变换的分层编码方法,支持时域、空域和质量域三个维度的可伸缩编码[2]。通过对H.264/AVC NAL单元的扩展,将各个层次的视频访问单元分别编码成一个NAL单元,组成SVC编码视频序列,如图1所示。
SVC码流主要包括参数配置NAL单元和压缩视频数据NAL单元。压缩视频数据NAL单元通常包括基本层NAL单元和若干扩展层NAL单元。基本层NAL包含最小分辨率的空间层和最差质量层的编码数据,码率最低,是接收端解码的基本数据;扩展层NAL单元包含不同空间和质量的增强层。所有扩展层在解码时依赖于基本层NAL单元和其他低层次的扩展NAL单元[3]。在编码时,通过设置参数,将各层连续固定数目的图像帧所对应的视频数据NAL单元组成SVC编码图像组GoP(Group of Pictures)。解码时,根据需求舍弃部分码流,读取基础层IDR帧之间的各层GoP单元,根据依赖关系独立解码得到相对于原始码流分辨率、帧率及质量域等缩减的视频图像。
2 基于SVC视频流的内容分发策略
传统流媒体P2P分发技术(如BASS[4]、BiToS[5]等模型系统)对内容源均采用等大小分片的策略。将文件长度、分片数、分片长度等较少的信息输入torrent文件。P2P过程中,按照播放优先和最少优先相结合的下载策略,选择peer下载数据分片,实现内容的快速分发或用户视频P2P下载播放。
移动互联网作为异构网络,存在无线链路不稳定、带宽较低等缺陷。在终端方面,也存在处理能力较差,播放屏幕较小等问题。加之H.264/SVC内容源的码流结构特性,使得复杂网络环境下SVC流媒体分发策略和传统内容分发存在较大差异。
2.1 SVC视频文件分片做种策略
H.264/SVC视频编码将各层NAL作为基本访问单元,并以GoP为单位进行编码,具有较强的块连续性。结合SVC码流编解码和P2P分发特性,在内容源分片过程中,采取将视频源按同等数目的GoP单元分片的策略,按照所属层ID分别存储于各层数据文件中。该策略在保存视频流块连续性的同时提高了数据读取效率,降低了P2P数据传输过程中的数据冗余。由于内容源GoP单元数据长度不同,分片后每片数据长度大小不等,在做种过程及文件信息的基础上,需加入帧率、帧数、帧数/GoP、GoP/piece、分层数、各层文件名和长度、每个piece长度等必要信息。
2.2 内容分发节点选择策略
视频文件的分发是一个从中心到边缘的推送过程,包括中心服务器向边缘服务器、边缘服务器向多用户终端的快速P2P传输。传统互联网内容分发,由于具有网络稳定、带宽较大、终端处理能力强的特点,可以随机选取peer获取全部内容源到网络边缘或用户终端。针对复杂网络环境,H.264/SVC具有灵活的码流选择特性,可根据网络环境对视频码流进行部分下载。因此,在选择peer时,要考虑peer的处理能力、网络环境和peer所拥有的视频流层数等因素。另外,节点选择策略还引入了P4P技术方案,在内容分发过程中,引入域的概念,将视频源分发到各域的边缘服务器。客户端在下载视频时定时上报平均下载速率、CPU使用率、视频流层数及下载百分比等信息。tracker通过统计peer的域地址和其他上报信息,定时更新各域peer列表,向用户提供带宽大、处理能力强、视频流层数满足需求的peer地址,实现域内用户的快速下载。该节点选择策略针对能力较弱的终端,取消其数据上传功能,降低了终端的运行负载。针对能力较强的终端,充分利用其网络资源的上传功能,从提高其他终端的下载效率,较好地实现了复杂网络环境下不同终端的资源共享。
2.3 客户端码流选择策略
在复杂网络环境下,客户端根据网络环境和处理能力选择适合的码流,达到符合终端分辨率的视频流畅播放效果。与传统视频点播VoD(Video on Demand)中视频数据流全部下载不同,在终端选择分片数据时,要考虑网络带宽环境和视频编码的分层数等因素。在保证视频流畅的基础上,尽可能下载高质量的视频图像数据,保证视频播放的最优效果。客户端通过设置一定时间的数据缓冲区,根据缓冲区中较低层数据的下载完成度,判断当前网络带宽。在保证缓冲区内较低层数据完整的前提下,结合带宽条件和邻居peer的位图信息,下载更高一级扩展层的分片数据。
3 移动流媒体内容分发系统实现
3.1 系统整体架构及模块功能
基于H.264/SVC的P2PCDN系统整体架构如图2所示。系统包括内容管理系统(CMS)模块,为管理员提供任务发布、删除、发布域等选择接口,展示任务发布进度;数据库(DB)模块,存储系统设备的域信息和下发任务的属性信息;资源控制(RC)模块,实现数据库中任务的下发并上报任务的完成状态;智能发布(IP)模块,下载内容源到本地并进行SVC编码、分片、做种;边缘服务器(ESP)模块,通过P2P技术获取IP模块已分片的视频内容,提供用户下载;Tracker模块,收集并管理用户下载信息,为其他用户提供优选的peer。
3.2 关键模块实现
IP模块完成H.264/SVC视频流的编码、分层、做种功能。其具体实现步骤如下:(1)解析发布任务的FTP地址,从FTP地址下载视频源文件。(2)对源文件解码,生成原始视频序列。(3)通过设置帧率、编码帧数、GoP大小、可扩展层数以及基本层码率控制等参数,使用JSVM软件对原始视频进行H.264/SVC视频编码,按n×GoP间隔插入IDR帧数据。(4)对H.264/SVC视频编码数据分析,分离各层数据,按层ID存储数据文件,并记录最小视频独立解码单元(n×GOP+IDR帧)对应各层的位置信息。(5)根据各层分片位置信息,计算各分片大小,并进行数据Hash。对各层数据文件,按层ID进行排序。按照做种策略,将文件信息写入Torrent文件。(6)对Torrent文件中info数据进行哈希(Hash),提取文件infohash值。移动文件至infohash对应路径,并上报任务完成状态信息。
ESP模块完成SVC编码文件的P2P分发和用户下载功能,具体实现步骤如下:(1)解析发布任务的infohash值和发布节点IP地址,建立TCP连接,请求Torrent文件。(2)解析Torrent文件,提取各层文件名,计算视频文件分层数;提取文件分片总数,计算各层分片数;提取各层分片偏移量,计算各层分片长度;提取分片对应的Hash值建立位图。(3)与邻居节点交换位图,根据位图信息进行选片下载及Hash校验。定时上报文件发布进度。(4)发布完成后,将视频文件存储至特定路径,并上报任务完成状态信息。该模块的下载功能使用UDP协议,采用网络环境驱动模式,客户端根据各自网络带宽环境、peer位图和播放进度向ESP或邻居peer请求分片数据。模块根据taskID映射infohash,定位文件,读取对应分层文件的piece数据,实现用户数据下载。
3.3 系统视频效果
系统对视频源进行发布过程中,通过IP模块参数设置生成两个空间层、两个质量层,共4层视频码流数据,各层对应码流由基础层到扩展层依次为15.30 KB/s、16.72 KB/s、12.71 KB/s、36.72 KB/s。在客户端使用限速软件,模拟网络带宽环境。当端口不做限速时,下载速率远大于各层码流总和,即81.45 KB/s。根据码流选择策略,获取全部码流数据进行播放,视频效果如图3所示。当端口限速在32.02 KB/s~44.73 KB/s之间时,基于视频流畅播放和播放效果最优策略,在当前网络允许的前提下,舍弃较高扩展层的码流,下载较低两层的视频数据进行播放,视频效果如图4所示。
本文在传统P2PCDN技术的基础上,融入H.264/SVC视频编码技术,结合移动互联网的特点,实现了复杂网络环境下的流媒体分发模型系统。系统采用非等大小分片传输和网络环境驱动选片策略,降低了P2P传输过程中的数据冗余,满足用户在不同网络环境下点播视频播放质量的同时,实现了固网与移动网络终端间的视频资源共享。
参考文献
[1] Joint Draft ITU-T Rec.H.264-ISO/IEC 14496-10/Amd.3. Scalable Video Coding[S]. Standard,2007.
[2]黄晓涛.P2P流媒体内容分发服务质量保障的编码与传输技术研究[D]. 武汉:华中科技大学,2010.
[3] Wang Yekui, HANNUKSELA M M, PATEUX S, et al.System and tranport interface of SVC[C].IEEE Transactions on Circuits and Systems for Video Technology, IEEE Circuits and Systems Society, Santa Clara Valley:2007,17(9):1149-1163.
[4] DANA C, LI D, HARRISON D, et al. BASS: BitTorrent assisted streaming system for video-on-demand[C].Proc of IEEE International Conference on Multimedia Signal Processing. Shanghai: IEEE MMSP Press, 2005:1-4.
[5] VLAVIANOS A, ILIOFOTOU M, FALOUTSOS M. BiToS: enhancing BitTorrent for supporting streaming applications[C].Proc of International Conference on Computer Communications. Barcelona:IEEE Global Internet Symposium Press,2006:1-6.