2.2.1 视频采集模块设计
由于摄像机得到的是模拟的视频信号,不能直接为计算机使用,因此要使视频在网上传输,必须首先对其数字化。本系统选用的视频采集卡为Conexant公司的Bt848卡,该卡不需要任何本地缓存来存储视频像素数据,还能够充分利用基于PCI总线系统的高带宽和固有的多媒体功能,并且能够与其他多媒体设备实现互操作。
在整个系统中由于视频采集的速度通常高于应用软件取得数据并进行处理的速度,因此为了保证视频数据的连续性,采用了三缓存结构,缓存A是Bt848视频采集的目标地址,在RISC指令的直接控制下,采集的数据都先存放在这个缓存中;B和C组成乒乓式结构循环往复使用,当某一帧数据采集完毕后,产生中断,在中断服务程序中将缓存A的数据复制到缓存B(或C)中,然后采集下一帧,当下一帧数据采集完后.再将缓存A中的数据复制到缓存C(或B)中,当应用程序需要数据时就从缓存B或C中读取最新的一帧图像。缓存B和C交替使用,能够保证应用程序从缓存读数据的操作和驱动程序向缓存写数据的操作不会发生冲突,避免了数据的损坏和迟延。
2.2.2 视频压缩编码的设计
本设计选用了基于对象的MPEG-4视频编码技术,首先对输入的任意形状的VOP序列,用基于块的混合编码技术编码。处理顺序是先帧内VOP,后帧间VOP和双向预测VOP。
在对VOP的形状信息编码之后,取得任意形状VOP的采样,每个VOP用宏块栅格划分成不相交的宏块,每个宏块含有四个8×8的像素块,以进行运动估计和补偿及纹理编码。已编码的VOP帧保存在VOP帧存储器中。运动向量在当前VOP帧和已编码VOP帧之间计算。对将被编码的块或宏块,计算其运动补偿预测误差。运动补偿预测后的I-VOP及误差用8×8块DCT编码,并进行DCP系数的量化,然后是行程编码和熵编码。
最后,形状、运动和纹理信息复合成VOL位流输出。这种编码方法可以允许用户修改、增加或重定位一个视频场景中的对象,甚至可以转换场景中对象的行为。对于不同的带宽和计算复杂性需求,不必针对每种情况分别编码,可以使用同一个视频位流,而采用不同的参数以选择不同的层以获得灵活性。在出现网络拥塞、丢包等现象时仍能提供连贯性较好的视频图像。视频压缩编码进程将编码后的的视频存放到已编码视频缓冲队列中,同时激活或等待直播进程和存储管理进程的相应处理。
2.2.3 网络通信模块设计
网络通信模块是系统的主体部分,它包含三个数据通道:监听通道、控制通道和视频数据通道。监听通道用来传输控制前端设备的命令数据;视频数据通道用来传输各个组的视频数据。三个通道采用不同的通信端口,所以各个通道传输数据彼此独立。网络通信模块设计开发是通过网络编程接口(Windows Socket,简称Winsoek)来实现的。按照系统浏览器,服务器的阿络传输模型。在服务器端建立了以SOCKET为类型的监听套接字、控制套接字;在客户端建立了SOCKET类型的请求套接字、控制套接字,这些都是采用ICP协议封装传输数据的。
另外,在服务器和客户机两端都用到了一个组播类(CMuhieast),它是专门为视频传输而封装的类。由CObject派生而来,其中定义了以 SOCKET类型的收发视频数据的套接宇和组套接字,从而实现了用组播通信方式来传输UDP协议封装的视频数据包。系统中IP网络数据通信流程如图3所示。
IP网络数据通信流程