数字图像处理论文

您当前的位置:学术堂 > 计算机论文 > 数字图像处理论文 >

基于帧图像合成的实时流混屏解决方案

来源:学术堂 作者:姚老师
发布于:2014-08-26 共2609字
论文摘要

  1.基于帧图像合成的实时视频混屏的关键技术

  1.1 并发解码

  实时视频流混屏处理多路实时视频流输入,并输出实时视频流。解码处理的数据量大,实时性要求高,对服务器的解码能力提出很高要求。高度并发解码,充分利用多核CPU计算能力是实现实时视频流混屏的关键。为提高并发度,并发解码至少包括两级并发,一级是多个实时流解码器的并发解码,二级是解码器Frame级别的并发解码。

  多个解码器分别对不同的视频源进行处理,并将分别独立输出数据帧,以队列的方式保存,供后续模块调用。解码器之间相互独立,不存在制约关系,可并发处理,提高CPU利用率。

  解码器Frame级别的并发,解码器采用线程池方式进行解码。在解码器初始化时,根据服务器CPU核数,初始化相应数目的解码线程。解码线程接收输入数据,并对数据进行解码。外部程序通过解码器提供的调用入口decode(),进入解码器的主线程。解码器结构及主线程和解码线程的同步关系如图1所示。

  1.2 图像合成

  将多个视频混屏,可通过图像合成的方式,将多个实时流的数据帧图像合成新图像,将合成后的视频帧作为输入进行编码得到实时视频流输出。多个数据帧的图像合成必须采用统一的图像格式。

  图像数据在存储中的存储格式主要包括RGB和YUV。YUV格式所需存储空间比RGB格式存储空间小,因此YUV格式主要用于多媒体数据传输。高清实时视频流多采用H.264编码方式,其采用的色彩空间是YUV。在合成过程中,如发现视频源的图像采用RGB方式,则需要将其转换成YUV才可合成。

  RGB图像和YUV图像可相互转换,从RGB到YUV的转换公式见公式(1)。

  Y=0.30R+0.59G+0.11
  BU=0.493(B-Y)
  V=0.877(R-Y) (1)

  另外,YUV格式也存在多种不同的采样比。在实际应用中,为减少运算量,可选择使用视频源中最普遍使用的格式,而将其他格式的图像进行转换,形成统一格式。

  将多个YUV图像合成一个YUV图像,可根据各个图像排列的位置,对图像的三个分量重新进行排列组合成新图像。以Planar格式为例,将多个YUV图像合成一个YUV图像,可将YUV三个通道各自分开处理,对每个通道的分量,按照每行分量的位置从左到右排列,各行从上到下排列。

  1.3 视频同步

  图像合成组成新的视频需解决多视频间的同步问题。由于多路高清视频流的来源不一致,解码后获得包含图像的数据帧的帧率不一致,为确保合成后视频的质量,必须将多路视频的输出图像进行同步处理。同步方法如下。

  选取一个实时视频流的输出数据帧作为基准序列,在单位时间内,对其他实时视频流解码后获得的数据帧序列,通过插帧或丢弃的方式,将视频帧的个数与基准源保持一致,以基准序列的时间戳作为合成后数据帧序列的时间戳。为提高视频质量,在对数据帧进行插帧或丢弃时,可根据对视频对象做真实运动的估值结果进行处理。

  1.4 编码输出

  将合并后的数据帧序列作为原始数据,输入到编码器中。编码器根据目标输出设置的参数,生成实时流,将实时流发布到流媒体服务器中。客户端只需要访问流媒体服务器即可播放合成后的视频。图像合成只考虑视频处理。根据实际应用需要,选择某个视频源的音频或多个音频混音,作为目标输出流的音频,合并输出。

  1.5 内存管理

  数据帧的内存管理机制对数据帧提供创建、销毁、引用、撤销引用、引用迁移等操作,并增加数据区的引用计数器。在引用、撤销引用、引用迁移时,不重新申请数据区,而是建立、修改或撤销对数据区的引用关系,保持数据区指针在数据帧对象中,并修改数据区的引用计数器。当数据帧Buffer被创建时,计数初始化为1。当该Buffer被数据帧引用时,计数+1,当数据帧撤销引用时,计数-1。

  每数据帧撤销引用时,检查计数器数值,只有当发现计数器被清零时,才释放该数据区。通过采用引用计数器的机制,有效防止内存泄露,并大大减少重复的内存申请和数据复制操作,提高处理性能。

  2.基于帧图像合成的实时流混屏解决方案

  基于上文的关键技术研究成果,提出基于视频帧合成的实时流混屏的解决方案。该方案采用高度并发解码方式,将实时视频流解码成为视频帧序列;并通过将多个视频帧中的YUV图像合成,生成新视频帧,再对新视频帧进行编码,输出目标格式的实时视频流。该解决方案的系统架构图如2所示。

  解码模块包括多个解码器,一个解码器负责对一个实时视频流进行解码,获得数据帧后,由预处理模块对视频帧进行以下处理。

  首先,根据目标输出视频的像素比例,计算该视频画面在目标画面所占的实际大小,对视频帧进行缩放操作,在此缩放视频帧,可以减少后续处理的数据量,而不影响转换后的视频质量。然后,检查图像的色彩空间格式,如果不是YUV格式,统一为YUV格式。最后,将处理好的视频帧从队列尾部加入到待处理的视频帧队列中。

  视频合成模块,访问各个编码器输出的待处理的视频帧队列,从队列头部取出视频帧,进行合并。在合并过程中,为保证视频同步,以其中一个视频流为基准,对其他视频流的数据帧采用插帧或丢弃,保证所有数据帧的时间戳一致。解码模块和视频合成模块对视频帧队列分别进行处理,解码模块输出数据帧插入到队列尾,而视频合成模块从视频帧队列头开始处理,将解码和编码的耦合度降到最低,解码与编码可以同时进行。

  编码器对视频合成模块输出的视频帧序列进行编码,转换生成混屏后的实时视频流。

  基于该解决方案实现混屏,在服务器测试,单台服务器可以支持32路高清实时视频流的混屏。服务器型号HP BL460C G8,CPU型号Intel(R)Xeon(R) CPU E5-2620 0 @ 2.00GHz(6 Cores),双CPU超线程24核。测试使用的输入实时视频源1080p,码率是12Mbit/s;输出是720p,码率为2Mbit/s。

  测试结果证明,服务器CPU的利用率随着输入源的数量线性增加。多路实时视频源输入下的混屏的CPU使用率如图3所示。

  3.结束语

  以上提出基于视频帧合成的实时流视频混屏的方法,多个解码器间互不干扰,为高度并发解码提供可能;并采用视频帧队列管理的方式,使得解码和编码的耦合降到最低,解码与编码可以同时进行。高度并发使服务器的多核CPU运算能力得到充分利用,仅依靠软件解码的方式就能实现多个高清视频的混屏,不依赖于高端定制的硬件服务器才能实现。混屏处理后,以实时视频流的方式输出,客户端只需接收视频流进行播放即可,对客户端的配置要求低。

  参考文献:
  [1] 黄东君,陈松乔.基于源根组播的多点视频会议系统模型及其实现.电子学报,2005(1).
  [2] 刘峰.视频图像编码技术及国际标准.北京邮电大学出版社,2005(7).
  [3] 肖永豪,余英林.基于视频对象的自适应去帧/插帧视频处理.华南理工大学学报(自然科学版),2003(8).

相关内容推荐
相关标签:
返回:数字图像处理论文