相关文章

视频会议系统多画面软件的分析与设计

来源网址:http://www.skykty.com/

会议的发展经历了一个从无到有、从不成熟到基本成熟的过程。在这个发展过程中,又相继出现了电视会议、桌面会议、多媒体会议等多种远程。发展的关键技术之一是编码。利用低比特率的视频编解码方案H.263 建议,可将视频图像最少压缩到大约20 kbps,以使其能在普通电话线上通过28.8 kbps 的V.34Modem 传送音频信号。事实上,在音视频编码协议不断改进与发展的同时,视频会议本身的协议也实现了更新换代,目前已出现了基于分组交换网的H.323 建议。视频会议向高性能、多功能、协同性、智能化和集成化方向发展的另一个关键技术是多合成技术。

由于传统采用RGB 格式存储数据流以用于多合成的方法十分浪费资源。因此,为了在有限的频带条件下最大限度地提高资源利用率,本文提出了一种在不影响质量的同时解决其资源利用问题的新方案。事实上。视频会议多画面已经应用到生活的诸多领域。而且将会有更广泛地使用。

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)。