引言
随着视频终端、网络技术和视频编解码技术的飞速发展,视频处理系统也快速向智能化、高清化和网络化发展[1]。目前,应用较多的高清视频系统有视频会议电视、视频监控器、网络视频录像、视频服务器、行车记录仪等。同时,以网络为基础的视频终端突破了时间、地域的限制,只要有网络存在的地方就可以建立网络视频系统,省去了传统的布线和线路维护费用,降低了成本。网络视频终端将成为视频系统的主流,特别是在当前移动终端和移动互联网爆发的大趋势下[2]。
本文基于监控摄像机专用单芯片GM8126,设计了一种高清视频终端系统。视频终端的软件设计总体方案是在Linux基础上建立统一的软件平台,并在底层抽象出媒体资源管理模块,用于屏蔽视频终端系统的硬件和媒体设备需求的差异。
1 总体架构
高清视频系统主要由高清视频终端、服务器、监控计算机、以太网络及管理平台软件等组成。高清视频系统组成如图1所示。
图1 高清视频系统
高清视频终端可以直接将视频数据保存在本地的服务器或数据存储媒介中,也可以通过网络传送到远程接收设备。高清视频终端有自己的IP地址,可直接与以太网连接,同时支持很多网络通信协议。局域网以及广域网上的用户使用标准的网络浏览器就可以根据IP地址对视频终端进行访问,观看通过网络传输的实时图像[3]。另外,还可通过对镜头、云台的控制,对目标进行全方位的监控。高清视频系统还包含很多其他更有吸引力的功能,例如硬件加密、图像水印、运动探查和智能警报等[4]。
2 高清视频终端的硬件设计
2.1 GM8126硬件平台
系统硬件平台采用升迈公司的GM8126芯片,这是一款针对在因特网上传送音、视频数据的SoC芯片。其内核为基于ARM9+DSP多核架构、高性能FA626TE处理器,主频高达600 MHz,能轻松实现各种智能算法;较强的H.264编码能力,720P达到45帧,1080P达到30帧,同时支持MPEG4、MJPEG编解码;除了集成嵌入式系统必备接口(如USB、SD、UART、GPIO )外,在内部还集成了ISP(Image Signal Processing)预处理、网口、AudioCodec、TVEncoder等专门用于视频处理的接口[5]。根据视频系统性价比要求,采用GM8126开发平台是普通高清视频系统比较合适的解决方案,GM8126内部结构如图2所示。
图2 GM8126内部结构
GM8126内置了802.3以太网MAC控制器,外部只需要802.3物理接口芯片即可实现以太网的功能。此外,音频输入采用模拟MIC或线输入,音频输出采用线输出,视频输入采用图像采集模块,视频输出到网络、LCD或TV设备。
2.2 图像采集模块
图像采集模块主要任务是高清图像采集,直接输出高清图像数据,目前主要有CCD和CMOS两种类型的图像传感器芯片。CCD图像传感器性能好,但价格相对较贵,不太适合于低成本的系统。CMOS的制造成本和功耗都要低于CCD,且随着集成电路工艺技术的提高,CMOS图像传感器在分辨率、噪声等方面都有显著的改善。系统中采用Omni公司的OV9712芯片,该传感器为1/4英寸高清CMOS图像传感器,像素尺寸3.0 μm,可输出1280×800(WXGA)、1280×720(720P)和640×480分辨率图像[6]。
3 高清视频终端的软件设计
3.1 系统软件架构
GM8126 SDK提供了一系列开发工具用于视频终端系统的开发。采用Linux2.6.28作为操作系统,选用uboot作为加载,交叉编译工具链为gcc4.4.0,库为glibc2.9。平台提供了芯片内部控制器和开发板外设的所有应用于视频终端的驱动,例如capture drivers、video graph drivers、I2S audio driver等,平台还提供了H.264/MPEG4/JPEG编解码器驱动,可以分别支持H.264/MPEG4/JPEG三种编码标准。另外,它还支持大量的网络协议,可以方便应用于视频终端系统,比如DNS、DHCP、PPPoE、TFTP、ARP/PARP、NFS、PING等。GM8126 Linux开发平台的软件框图如图3所示。
图3 GM8126 Linux开发平台的软件框图
3.2 媒体资源管理
媒体资源管理重点关注音视频接口及音视频处理两部分内容,与硬件设计方案紧密相关。GM8126同时支持两组BT656视频,通过图像传感器采集图像,传送给图像信号处理器(ISP)进行图像预处理,以提供更高质量的图像。平台提供的H.264最高支持1080P@30fps和720P@45fps编码。为了适应不同的网络速率,如局域网、广域网或手机的无线网,以及考虑不同的网络带宽和输出显示设备的分辨率[5],平台还分别支持H.264/MPEG4/JPEG 3种编码标准的多种制式。
3.2.1 媒体资源分配
不同的视频系统要求输出的视频数目和制式不一致,实际设计中需要根据不同的系统和GM8126本身的编码能力确定各种视频终端系统的媒体资源分配方案。
根据实际使用场合,在GM8126平台上设计了高清视频监控系统的两种媒体资源分配方案,如图4所示,可以输出多种视频制式发送到网络或存储器,此外还能发送一路160×112@30fps的视频用于手机监控。其中一种视频监控器的CAP1_0路视频编码320×240@30fps发送给网络或者存储器,如图4虚线所示连接,另外一种CAP1_0路视频经过TVEncoder编码640×480@30fps接入到NTSC/PAL TV。
图4 两种视频监控器媒体资源分配方案
3.2.2 软件方案
媒体资源管理的软件方案主要对GM8126中音视频相关的硬件进行抽象和适配,提供业务模块对音视频媒体资源进行控制,并对它们之间的协作和数据流进行管理[7]。媒体资源管理设计分为4个子模块:设备管理、设备配置表、数据流管理及业务设备组。媒体资源管理软件方案如图5所示。
图5 媒体资源管理软件方案
设备管理模块:负责对所有的媒体设备进行统一管理,协调业务模块间的资源需求与冲突,为不同的业务模块分配媒体资源,以实现媒体资源分配方案。设备管理通过媒体设备配置表来管理各种媒体设备,每种媒体资源分配方案对应一组媒体设备配置表。
设备配置表模块:用来管理系统中所有的媒体设备,以及对各媒体设备之间的关系进行管理。每种媒体资源分配方案对应一组媒体设备配置表。
数据流管理模块:负责管理和维护媒体设备之间的数据流,数据流管理功能通过数据处理端口之间的连接关系完成。
业务设备组模块:是在数据处理设备基础上实现不同业务所需的专用业务设备。每个业务模块对应提供一组业务设备(即业务设备组)。业务设备组能向上层业务组件描述系统中有哪些业务设备,以及各种业务设备的属性,提供业务模块对业务设备的查询。
通过对媒体资源管理模块的抽象和封装软件设计,各种高清视频终端系统的开发可以使用统一的媒体设备层,不同视频终端系统媒体管理层的差别在于设备配置表不同。通过主控管理层的配置,启动初始化时媒体资源管理模块就可以切换到不同的视频系统。
3.2.3 软件流程
媒体资源管理初始化流程如图6所示。媒体资源管理模块初始化过程是从媒体设备配置表获取各种媒体资源分配方案,以及媒体资源分配方案下的媒体设备配置数据,生成不同媒体资源分配方案下的业务模块,为媒体资源配置做好准备。此外,系统启动时是从底向上进行初始化,在媒体资源管理系统初始化完成之前不允许业务模块控制媒体设备子系统。
图6 媒体资源管理初始化流程图
数据流管理采用两种不同的配置方式,分别用于两种不同情况:第一,采用静态配置的方式,由视频终端硬件和媒体设备需求决定各逻辑设备之间的关系,这种方式用在媒体资源管理初始化的时候。第二,在初始化完成后,数据流采取动态配置的方式,由业务模块来触发,例如视频输入的视频源切换、视频编码方式切换和视频输出源的切换等。主控管理层的界面通知业务模块切换视频,业务模块设置下发命令到数据流管理模块,以更改逻辑设备的数据流连接状态。一个逻辑设备的输入端口不能同时连接多个逻辑设备的输出,所以在进行端口连接时需要首先删除原有端口连接,再建立新的数据连接,否则原输出端口的数据与新输出端口的数据会发生混乱。
4 系统测试
根据图4中两种视频监控器媒体资源分配方案,创建不同的设备配置表,在应用界面增加终端类型的选择项。默认设置为第一种,系统启动后CAP1_0输出320×240@30fps码流。然后改变选择项为第二种,重启系统,CAP1_0输出经过TVEncoder编码的640×480@30fps码流。
在该系统中一路输出固定为160×112@30fps,另外一路可以切换不同的制式以及不同的输出端口。根据界面上设置的输出制式,媒体数据流管理模块可以将CAP0_0和CAP0_1缩放到相应制式,选择不同的通道送给编码器,然后再根据终端类型选择输出到网口还是TV端口。
实验结果表明,系统可以正确初始化媒体资源管理模块,并能根据设备配置表,创建功能不同的视频终端系统。数据流管理模块能通过界面切换视频终端的处理数据,实现在线、动态地改变视频资源的处理方式和流程。
结语
本文提出的视频终端媒体资源管理软件方案满足可靠性、可扩展性和兼容性的设计要求,可以应用到其他视频终端系统的设计,具有较强的实用性。