跟着通讯网络技能的迅速发展,依据网络的高质量视频传输已逐渐替代传统的文字语音交互形式,成为当今数字通讯的首要研讨范畴之一。而跟着嵌入式操作体系和集成电路规划水平的不断进步,嵌入式技能与通讯网络以及多媒体技能的交融将成为未来数字视频通讯范畴的干流发展趋势。
一直以来,针对网络传输实时视频对嵌入式软硬件都有较高要求。本文运用依据ARM920T内核的S3C2440嵌入式微处理器,选用紧缩比更高的H.264视频紧缩规范和开源嵌入式Linux体系,规划了一款依据嵌入式视频服务器的长途实时视频收集体系。
1 收集体系渠道建立
1.1 体系硬件渠道
该收集体系以PC作为客户端,以广东友善之臂计算机科技有限公司研制的ARM9开发板Mini2440作为视频服务器,选用SamsungS3C2440为微处理器,用专业安稳的CPU内核电源芯片和复位芯片确保体系运转时的安稳性。三星公司推出的这款16/32位RISC微处理器S3C2440,选用ARM920T的内核,典型主频400 MHz,最高可达533 MHz,运用5级流水线技能,并选用丰厚的操控模块为各种运用供给扩展。该收集体系的结构如图1所示。
1.2 体系软件渠道建立
PC机端运用内核版别为2.6.18的Linux 5红帽子企业版,因为后续需求在Windows渠道进行FTP材料传输等作业,所以采取了虚拟机装置Linux的方法,这样便利Linux和Windows的数据网络交互。虚拟机软件版别为Vmware 6.5.1,选用的传输软件为依据SFTP协议的Flash Fxp。而穿插编译东西首要为Binutils、Gcc和Glibc。
一个嵌入式体系软件视点首要分为引导加载程序、Linux内核和文件体系3个层次,其间引导加载程序是体系加电后运转的榜首段软件代码。BootLoader就是在操作体系内核运转之前运转的一段程序。在担任引导用的Hash存储器中,通常会依照图2的次序散布。
因为后期进行摄像头驱动编写移植进程需求很多的调试,依据网络的NFS根文件体系就比较适宜。依据这种考虑,挑选了网络功能强大的U-boot作为BootLoader。移植U-boot首要做了以下作业:(1)修正编译条件,增加寄存器界说,修正时钟。(2)修正中止制止部分,增加S3C24 40的中止制止代码。(3)在board目录创立新开发板目录。(4)以smdk2410.c为模板修正PLL以及UPLL的设置。(5)修正Makefile相应装备行以支撑该开发板。
修正结束后进入作业目录进行板级装备,通过穿插编译东西链对改后代码进行编译。运用H-JTAG软件进行烧写,如图3所示为烧写成功并通过超级终端引导完结。
根文件体系挂载方法首要有ramdisk,NFS和initramfs这3种。制造自发动的嵌入式设备需求用initramfs作为根文件体系的内核进行烧写。先0地址处寄存的是U-boot,约为100 kB;然后在0x0000~0x40000寄存了约64 kB的环境变量。这两项均固定,所以uImage的巨细有必要操控在1.75 MB以下,并从0x40000开端寄存。uImage包含内核和根文件体系两部分,需求针对其进行削减,以契合项目要求。
在嵌入式体系中,BusyBox是结构文件体系常用的一个软件东西包。本文选用它来构建根文件体系。本项目运用的方针板内核为Linux 2.6.29,但依据项目自发动需求进行相应裁剪,依据最小体系规范进行削减,串口、网口、根文件体系可用,并保存本文所要求的摄像头驱动,裁剪后的内核巨细为1.3 MB,满意体系需求,如图4所示。
2 视频驱动编写以及C/S软件规划
2.1 T.264编码库优化移植
T.264为我国视频编码自在安排联合开发的开源编码器,它对H.264的特性支撑单一,编码器可输出规范264码流,解码器能解T.264编码器生成的码流,它吸收了JM、X264和XVID的长处,适用于网络流媒体的传输。因为本文研讨的视频收集体系运用于可视电话视频会议等运用中,对网络传输的要求较高,归纳比较后,选用T.264作为本体系的软件编码器。
选用H.264中的根本层次,仅运用CAVLC熵编码方法即可满意运用要求。归纳不同平均码率下的编码功能以及网络传输才能的考虑,关于QCIF格局运动陡峭的视频序列,编码输出帧率为15 f·s-1时,设置平均码率为128 kb·s-1是比较适宜的挑选。运用T.264开源编码器,并对T.264进行代码级优化编译。在编译级增加了如下选项:(1)-fomit-frame-pointer选项疏忽函数中不必要的帧指针,节约指令开支。(2)-04简直打开了一切的优化选项,以尽可能进步程序运转功率。(3)-msoft-float:发生依据浮点运算函数库调用的软浮点方针代码。
2.2 视频驱动编写以及C/S软件规划
选用目前国内市场占有率较大的台湾松翰SONIX613a主控芯片的摄像头,该摄像头支撑Jpeg格局和4:2:0采样的YUV原始视频数据输出,数据量小,可直接作为H.264等视频紧缩编码规范的原始视频数据源,避免了对图画的重采样和颜色空间的改换等杂乱的数字运算处理,合适嵌入式的实时视频收集运用。
2.2.1 驱动程序Gspca的修正移植
Gspca/Spca5xx是自在软件基金会发布的通用USB摄像头驱动程序。但因为该解决计划在Linux内核中并无驱动支撑,所以有必要针对其进行驱动的增加和修正,如图5所示。
2.2.2 C/S软件规划
出于对特定的运用目标以及本钱的考虑,本文选用依据有线以太网络流媒体传输H.264视频的解决计划。选用开源软件VLC作为流媒体服务器与客户端播映器,进行单向点对点实时视频通讯。图6为视频收集体系作业流程图。
(1)服务器端软件规划。
视频收集体系的服务器端选用后台操控程序video_server受理客户端video_client对VLC视频服务器的长途管理与设置,通过同一端口(3490)和同一套音讯码进行通讯。并在体系初始化脚本/etc/init.d/rcS中激活网卡后增加后台运转服务器操控程序Video Server的指令,使开发板发动后在后台主动运转video_server,它首要创立服务器端的套接口描述符,并与服务器端口地址及与client端一致的通讯端口绑定,接着进入服务呼应的主循环体,侦听套接口数据及衔接,依据来自客户端的音讯恳求供给不同服务。video_server软件流程如图7所示。
(2)客户端软件规划。
客户机端程序Video Client的运转于PC机渠道,用来向Server端发送长途操控指令。通过长途操控指令,可以装备服务器端的视频格局码率和传输协议、启停服务器端VLC进程、调本地VLC播映器接纳并播映来自服务器端的视频图画等。
针对此程序运用跨渠道界面库QT规划了GUI操作界面,有助于用户的交互。
因为服务器端对CIF格局图画收集及紧缩编码速度较慢,因而程序仅支撑这两个层次QCIF64 kb·s-1、QCIF-128 kb·s-1。设置结束,点Connect按钮,Client向Server发送顺便服务器设置参数的衔接恳求,若从Server接纳到OK音讯,标明server端接受了本地的衔接恳求并发动了Server端的VLC服务器,这时客户端将Connect按钮置为Disconnect按钮,同叫调用本地VLC播映器,接纳并播映服务器发送的视频数据:若从服务器接纳到NOK音讯,则犯错。服务器在正常接纳和播映服务器发送的视频数据时,若点Disconnect按钮,则向Server发送SRV_QUIT恳求,一起封闭本地的VLC播映器,Server接纳到SRV_QUIT音讯后,封闭Server端的VLC服务器。
整个体系PC机是客户端,依据S3C2440处理器的Mini2440开发渠道是嵌入式视频服务器,Client程序通过以太网衔接服务器,服务器呼应恳求后发动VLC进行视频收集并将视频数据传输到客户端,然后Client程序调用VLC播映器窗口对接纳到的码流进行实时播映,正常作业情况如图8所示。
从视频图画帧率上看,通过优化的T.264编码器对QCIF视频平均码率在128 kbit·s-1时,编码速度可以到达16 f·s-1,但因为USB摄像头收集QCIF格局图画在约13 f·s-1,因而需求在服务器端设置紧缩帧率为13 f·s-1,这样可以确保客户端以原有帧率解码视频流,从体系的全体功能考虑,这个码率可以满意长途教育和视频监控等运用。
3 结束语
研讨了嵌入式Linux的开发技能,建立起依据Mini2440开发板的Linux开发渠道,包含建立穿插编译环境,规划削减移植BootLoader和Linux2.6.29内核,构建依据BusyBox的根文件体系,开发针对视频收集体系的专用摄像头驱动。研讨了H.264视频紧缩编码规范,针对该视频收集体系对开源的T.264编码器进行编译和代码级优化,到达实时运用要求。研讨了依据UDP协议的网络传输计划,修正规划服务器端的收集程序和客户端的视频解码播映程序,终究完结嵌入式视频收集体系的运转。