0 引言
视频会议的发展经历了一个从无到有、从不成熟到基本成熟的过程。在这个发展过程中,又相继出现了电视会议、桌面会议、多媒体会议等多种远程会议系统。视频会议系统发展的关键技术之一是视频编码。利用低比特率的视频编解码方案H.263 建议,可将视频图像最少压缩到大约20 kbps,以使其能在普通电话线上通过28.8 kbps 的V.34Modem 传送音频信号。事实上,在音视频编码协议不断改进与发展的同时,视频会议本身的协议也实现了更新换代,目前已出现了基于分组交换网的H.323 建议。视频会议向高性能、多功能、协同性、智能化和集成化方向发展的另一个关键技术是多画面合成技术。
由于传统采用RGB 格式存储数据流以用于多画面合成的方法十分浪费资源。因此,为了在有限的频带条件下最大限度地提高资源利用率,本文提出了一种在不影响画面质量的同时解决其资源利用问题的新方案。事实上。视频会议多画面软件已经应用到生活的诸多领域。而且将会有更广泛地使用。
1 数据流的捕获
Windows 下捕获数据包的结构如图l 所示,其中NDIS 的NDIS (Network Driver Interface Specification)是Microsoft 和3Com 公司联合制定的网络驱动规范,该规范提供有大量的操作函数。它可为上层的协议驱动提供服务,从而屏蔽了下层各种网卡的差别。NDIS 向上可支持多种网络协议,例如TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下则可支持不同厂家生产的多种网卡。
利用 winpcap 进行网络数据包的捕获和过滤的设计步骤如下:
(1)打开网卡,设置网卡为混杂模式;
(2)回调函数Network Tap,得到监听命令后从网络设备驱动程序处收集数据包,并把监听到的数据包传送
给过滤程序;
(3)当Packet filter 监听到数据包到达时,NDIS 中间驱动程序调用分组驱动程序,该程序可将数据传递给每一个参与进程的分组过滤程序;
(4)由Packet filter过滤程序决定丢弃或接收数据包,并将接收的数据拷贝到相应的程序;
(5)通过分组过滤器后,再将未过滤掉的数据包提交给核心缓冲区,当系统缓冲区满后,再将数据包拷贝到用户缓冲区。监听程序可以直接从用户缓冲区中读取捕获的数据包;
(6)关闭网卡。
2 视频数据流的解码
捕获到的视频数据流。通常在网络传输中都采用H.263视频编码建议,其图像格式为CIF格式。H.263-CIF格式的数据流是一种压缩编码图像格式,这种格式在网络传输过程中可节省频带资源,可在有限的带宽下最大限度地提高资源利用率。但是,CIF格式必须经过处理才能应用于多画面合成。只有通过解码使捕获到的视频数据流变成YUV(RGB)格式后,此图像格式才可直接运用于多画面合成,而且此格式的图像合成也比较方便、快捷。为了使图像由H.263格式转变为YUV(RGB)格式,应运用H.263解码器进行解码。其编解码算法的概要图如图2所示。
3 多画面合成
视频数据流经过解码之后,可将其变成YUV(RGB)格式。下一环节即是视频数据流的合成(多画面合成),这也是本文的关键技术。在视频会议系统中,参加会议的与会者或许不只两、三个,所有与会者可能分布全国乃至世界各地。为了使每个与会者都能进行面对面的直接交流,就需要在同一时间看到所有的与会者,因此,多画面合成技术必不可少。通过多画面合成能使N个不同的视频画面实时地在同一台显示器上显示,这样,每一位与会者就都可以运用该软件看到其他成员。
YUV主要的采样格式有YCbCr4:2:O、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4.:4。其中YCbCr4:1:1比较常用,其含义是每个点保存一个8 bit的亮度值(也就是Y值),每2x2个点保存一个Cr和Cb值,这样,图像在人的视觉中不会起太大的变化。RGB (R,G,B都是8 bit unsigned)模型的4个点需要8×3=24 bits,而现在仅需要8+(8/4)+(8/4)=12 bits,平均每个点占12 bits。这样就把图像的数据压缩至一半。YUV411为每个像素都提取Y分量,UV分量在水平方向上每4个像素采样一次。YUV420并非V分量采样为0,而只是跟YUV411相比,在水平方向上提高了一倍的色差采样频率,并在垂直方向上以U/V间隔的方式减小了一半色差采样。
经过解码即可得到YUV格式的数据流,H.263-CIF的图像格式亮度取样像素个数、亮度取样行数为352x288,图像是由许多像素点组成的,即一幅H.263-CIF图像占有352×288个像素点,经过解码。这些值将不变化,即YUV格式的亮度取样像素个数、亮度取样行数也为352×288、也占有352×288个像素点。现在假设视频数据是YUV420格式.它的采样格式为4:2:0。在对YUV420格式的视频数据进行存储时,可按照图3所示的存储格式,先存储所有的Y,之后存储U,再存储V,并且每个像素点占用一个Y,平均四个像素点占用一个U和V。每个像素点占用一个字节,则一幅图像所占用的字节数将是352×288×(1+1,4+1/4)。
下面以四画面为例来介绍该软件的多画面合成过程。当捕获到的四个视频数据流经过解码后。每幅图像的所有数据都是连续地保存在存储单元中。这里用Ⅰ、Ⅱ、Ⅲ、Ⅳ来表示这四幅图像,它们在存储单元中的存储状态如图4所示。每一副图像都是单独存储的。实际需要得到的四合一图像如图5所示。
图像在显示时,所有像素点均有序排列,例如一幅352×288的图像,它在存储像素点时,首先存Y信号第l行的352个象素点,其次是第2行⋯⋯直至第288行存完Y信号,然后存储U信号第l~288行的所有像素点,最后再存储V信号的所有像素点。但四幅图像合成之后,其图像大小就会变为一副图像的两倍即704×576,因此,需要改变其存储格式。即重新调整这四幅图像的像素存储顺序,其具体过程如下:
(1)存储第1幅图像Y信号的第1行共352个像素点,再存储第Ⅱ幅图像Y信号的第l行共352个像素点,这样就组成了新图像Y信号的第1行共704个像素点:
(2)依此次序存储新图像Y信号的第2~288行;
(3)新图像的第289行由第Ⅲ幅图像Y信号的第1行其352个像素点加第Ⅳ幅图像Y信号的第1行的352个像素点组成;
(4)新图像的第290~576行Y信号也依此次序存储,直到多画面合成图像所有的Y信号存储完毕;
(5)重新从步骤(1)至步骤(4)以完成U、V信号的存储。
经过上述5个步骤之后,新的多画面图像即按照设计的格式存储起来,该多画面的显示可借助微软公司的DirectShow来实现,这样即可完成视频会议的多画面软件系统设计。
4 结束语
在视频会议系统多画面软件的分析与设计过程中,可先捕获视频数据流,并在经过解码后用于多画面合成。多画面合成是视频会议系统中的关键部分,捕获数据及解码是为这一过程作铺垫,本文以四画面合成为例,对多画面合成过程进行了介绍。
在视频会议中,运用多画面软件可以更好地进行实时性对话,提高会议效率。本文介绍的多画面软件不仅能应用于视频会议,还可以广泛地应用于其他场合。例如,在画面合成时,应用该软件对数据的存储格式稍做改变,即可得到电视画面的画中画效果;在常见的监视系统中运用多画面合成技术,可以使多个监视器捕获到的图像同时在一个屏幕上显示。视频会议多画面软件不仅可以广泛运用于会议,还可在军事、交通、治安等复杂的指挥和控制场合发挥积极作用。