基于ARM?Linux的无线音视频对讲系统
2014-04-18邹振华田敏索世昌蓝世强赵雷李磊
邹振华+田敏+索世昌+蓝世强+赵雷+李磊
摘 要: 该系统是以Linux作为操作系统,并以S3C6410微处理器为硬件平台的嵌入式应用系统。系统采用CMOS摄像头获取图像,通过WiFi无线传输;利用S3C6410独特的MFC功能,实现H.264高速、高效率硬件压缩和解压;通信双机采用多线程方式实现了音视频实时传输;可在4.3寸的彩色液晶屏上显示本机及远端机清晰的图像;音频与视频可全双工同步传输。该系统功能实用、操作简洁,能够广泛应用于小型音视频服务或网络音视频电子产品,可替代传统对讲系统。
关键词: Linux; S3C6410; 嵌入式应用系统; WiFi; 音视频; 全双工
中图分类号: TN911.73?34 文献标识码: A 文章编号: 1004?373X(2014)07?0018?03
Wireless audio and video intercom system based on ARM?Linux
ZOU Zhen?hua, TIAN Min, SUO Shi?chang, LAN Shi?qiang, ZHAO Lei, LI Lei
(College of Communication and Information Engineering, Xi′an University of Science and Technology, Xian 710600, China)
Abstract: The system takes Linux as the operating system, and uses S3C6410 microprocessor as the hardware platform of embedded application system. The images are obtained by CMOS camera and transmitted through WiFi. H.264 high speed, high efficiency hardware compression and decompression are realized with MFC function of S3C6410. The audio and video real?time transmission of two computers communication is realized through multithreading, thus the clear image of the machine and the remote machine can be displayed on the 4.3?inch color LCD screen, and the audio and video can be transmitted in full?duplex synchronous. Function of the system which can replace traditional intercom is practical, operational, and it can be widely used in small audio and video service or network audio and video electronic products.
Keywords: Linux; S3C6410; embedded application system; WiFi; audio and video; full duplex
0 引 言
随着数字化和网络化时代的到来,尤其是宽带无线网络的发展,为音视频这样大数据量传输业务在无线网络上的应用提供了契机。同时由于音视频独特的感官特性,使其相关的应用需求也变得越来越迫切。无线多媒体是多媒体和移动通信这两个领域的技术相互融合的产物,成为当今通信领域的一个热点。鉴于Linux内核的开源性,采用其作为操作系统,从而使整个系统具有更好的实时性和稳定性。整个系统以ARM11为核心处理器、采用新一代视频编解码标准H.264[1]进行编译码,并通过无线网络传输音视频。它充分利用S3C6410微处理器内部集成的多媒体编解码器(Multi?Format video Codec,MFC),有效提高了系统的性价比。整个系统为无线多媒体音视频的传输提供了一个好的解决方案,可广泛应用在远程监控、视频电话等各种领域,具有较好的实用价值和推广应用前景。
1 系统总体方案设计
通信双方系统中音频和视频采集模块负责采集模拟信号,并将采集到的音视频数据送到音视频管理模块,经过压缩处理,再加上数据包头一起由WiFi发送到对方;对方接收到数据后,经过相关处理,判断音视频帧类型,再送往解压缩处理模块,恢复出音视频数据。通信双方设备均包含嵌入式音视频管理模块和无线收发模块。无线WiFi收发模块运行在2.4 GHz频段,符合IEEE 802.11b无线局域网协议标准。
2 系统硬件设计
系统硬件设计以ARM11为核心微处理器,主频为532 MHz,能够满足实时处理的要求,其内部集成有256 MB SDRAM、2 GB FLASH、音频录、放音接口、Camera视频接口、无线WiFi接口、LCD接口、SD卡接口等,同时以开源的Linux 2.6.28为内核,yaffs2为根文件系统,Qtopia 4.4.3作为用户界面,为开发调试和系统设计提供了良好的平台。
2.1 音视频采集模块
音频采用处理器内部集成的IIS(Inter?IC Sound Bus)音频接口和WM9714音频芯片。IIS是飞利浦公司为数字音频设备之间的音频数据传输而定制的一种总线标准。在飞利浦公司的IIS标准中,既规定了硬件接口系统,也规范了音频数据的格式。基于此硬件及接口规范,实现了集成音频输出、Linein输入和Mic输入功能。
视频采集使用的是OV9650CMOS摄像头模块,分辨率高达130万像素,可直接与OK6410开发板的Camera接口相接。适用于高端消费类电子产品、工业控制、车载导航、多媒体终端、行业PDA、嵌入式教育培训、个人学习等。其结构较简单,提供硬件驱动程序,便于使用和调试。
2.2 无线传输模块
本系统的无线传输模块采用工作在2.4 GHz公共频段的WiFi模块来实现,它遵循IEEE 802.11b/g网络标准,可用于在后期开发中将终端接入Internet,其最高数据率为54 Mb/s,支持WinCE、Linux系统。室内通信距离可达100 m,室外开阔地可达300 m。只需要对ARM?Linux操作系统进行简单的配置就可以由以太网连接模式转化为双机通信AD?HOC模式,在系统启动之后,设计了基于Qt[2]的窗口设计,方便切换连接模式。
选用WiFi具有很好的可扩展性,可以通过无线路由器的WiFi连接到广域网,具有很好的应用前景。同时大多数手机等终端设备具有WiFi功能,后期还可以将软件升级至Andriod系统,方便开发和移植。它减少了音视频实时传输的开发成本和周期,也给现代移动通信提供了一种新的音视频通信方式。
WiFi的驱动配置好后,应用层和以太网接口模式编程完全相同。由于此设计音视频数据量较大,不宜采用UDP,因为当数据量过大或传输信号不好时,UDP会严重丢包,所以最终选择面向连接的TCP传输协议,保证了系统音视频有效传输。由于TCP是应答时式传输数据,在局域网内,无需考虑TCP丢包问题,为实现系统功能提供了可靠的保障。
3 软件设计
软件分为用户界面设计和数据处理、传输等模块的设计。
3.1 基于多线程的软件总体设计
系统软件架构如图1所示,它是音视频单向采集、压缩、传输、接收、解压缩、处理回放音视频流控制过程,各个模块采用线程处理,由信号量处理线程间优先级构成循环的线程,有效地处理了音视频数据流。系统各功能模块化,便于修改和移植,代码简短精悍。
图1 软件架构
3.2 回音消除
系统开始时出现回音和延时问题,延时是由于采集传输过程中造成的,所以只能尽量缩短延时,而无法做到即时播放,这也是此系统的缺陷之一。回音是由于延时造成的,文中最后采用开源的Speex算法消除了回音。具体做法:将该算法编译成库文件,加入到Linux内核,即可以使用Speex 的API函数,实现音频的回音消除。
3.3 嵌入式音视频的同步
本文的基本思想是以视频流为主媒体流,音频流为从媒体流,视频的播放速率保持不变,根据本地系统时钟确定实际时间,通过调整音频播放速度来达到音视频同步。
首先选择一个本地系统时钟参考(LSCR),然后将LSCR发送到视频解码器和音频解码器,由这两个解码器根据各帧的PTS值对照本地系统时钟,参考产生各帧准确的显示或回放的时间。也就是说,生成输出数据流时依据本地参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时根据本地系统时钟参考上的时间来安排播放。
整个系统的音视频同步数据流程如图2所示。
图2 音视频同步数据流程
4 音视频通道管理
为了节约内存资源,便于通道的管理,本设计采用分通道的线程池管理,音、视频分别由自己的通道完成任务。
音视频采集使用同一个线程处理,采用select系统调用,每执行到此线程,就判断音视频设备是否就绪,若就绪即采集音频或视频到音视频缓冲区,再交给音视频采集压缩线程,最后再交给发送线程打包后采用TCP发送。需要说明的是本设计线程之间均采用信号量完成线程间基于TCP的音视频软件架构的同步管理。发送完以后进入接收线程等待对方发音视频数据。在接受端由接收线程接收到数据以后,判断数据的包头,再交由解压缩处理线程处理,然后播放音视频,再等待对方发数据到本机。
由于处理器的高速处理和高效率视频硬件H.264解压缩,使得整个系统实时性基本达到要求。嵌入式音视频管理模块实现了整个系统的统筹控制和实时处理,为音视频数据管理提供可靠的保证。
5 结 语
目前基于嵌入式无线终端的视频监控产品由于无需布线、传输距离远、环境适应能力强,性能稳定及通信便利等优势而倍受青睐,在安全监察、巡查通信、施工联络、人员调配等场合发挥着不可替代的作用。本系统是基于嵌入式Linux的无线音视频通信手持式终端,其体积较小、携带方便,采用锂电池经过开关电源芯片降压的方式给整个系统供电,其效率较传统直流稳压大大提高。在户外可视化娱乐、施工现场监控、大型安保联络等场合均可使用,具有广泛的应用前景。
注:本文指导老师为吴延海。
参考文献
[1] 毕厚杰.新一代视频压缩编码标准H.264/AVC[M].北京:人民邮电出版社,2009.
[2] 陈爽.Linux与Qt程序设计[M].北京:清华大学出版社,2011.
[3] 冯国进.Linux驱动程序开发实例[M].北京:机械工业出版社,2011.
[4] 孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.
[5] 冯进国.嵌入式Linux驱动程序设计从入门到精通[M].北京:清华大学出版社,2008.
[6] LOVE Robert.Linux内核设计与实现[M].北京:机械工业出版社,2011.
[7] 孙更新.Linux内核注释[M].北京:中国铁道出版社,2011.
[8] 刘学勇.Linux C编程从入门到精通[M].北京:电子工业出版社,2012.
[9] 宁方明.Linux系统管理[M].北京:人民邮电出版社,2012.
[10] 熊茂华.嵌入式Linux实时操作系统及应用编程[M].北京:清华大学出版社,2011.
视频采集使用的是OV9650CMOS摄像头模块,分辨率高达130万像素,可直接与OK6410开发板的Camera接口相接。适用于高端消费类电子产品、工业控制、车载导航、多媒体终端、行业PDA、嵌入式教育培训、个人学习等。其结构较简单,提供硬件驱动程序,便于使用和调试。
2.2 无线传输模块
本系统的无线传输模块采用工作在2.4 GHz公共频段的WiFi模块来实现,它遵循IEEE 802.11b/g网络标准,可用于在后期开发中将终端接入Internet,其最高数据率为54 Mb/s,支持WinCE、Linux系统。室内通信距离可达100 m,室外开阔地可达300 m。只需要对ARM?Linux操作系统进行简单的配置就可以由以太网连接模式转化为双机通信AD?HOC模式,在系统启动之后,设计了基于Qt[2]的窗口设计,方便切换连接模式。
选用WiFi具有很好的可扩展性,可以通过无线路由器的WiFi连接到广域网,具有很好的应用前景。同时大多数手机等终端设备具有WiFi功能,后期还可以将软件升级至Andriod系统,方便开发和移植。它减少了音视频实时传输的开发成本和周期,也给现代移动通信提供了一种新的音视频通信方式。
WiFi的驱动配置好后,应用层和以太网接口模式编程完全相同。由于此设计音视频数据量较大,不宜采用UDP,因为当数据量过大或传输信号不好时,UDP会严重丢包,所以最终选择面向连接的TCP传输协议,保证了系统音视频有效传输。由于TCP是应答时式传输数据,在局域网内,无需考虑TCP丢包问题,为实现系统功能提供了可靠的保障。
3 软件设计
软件分为用户界面设计和数据处理、传输等模块的设计。
3.1 基于多线程的软件总体设计
系统软件架构如图1所示,它是音视频单向采集、压缩、传输、接收、解压缩、处理回放音视频流控制过程,各个模块采用线程处理,由信号量处理线程间优先级构成循环的线程,有效地处理了音视频数据流。系统各功能模块化,便于修改和移植,代码简短精悍。
图1 软件架构
3.2 回音消除
系统开始时出现回音和延时问题,延时是由于采集传输过程中造成的,所以只能尽量缩短延时,而无法做到即时播放,这也是此系统的缺陷之一。回音是由于延时造成的,文中最后采用开源的Speex算法消除了回音。具体做法:将该算法编译成库文件,加入到Linux内核,即可以使用Speex 的API函数,实现音频的回音消除。
3.3 嵌入式音视频的同步
本文的基本思想是以视频流为主媒体流,音频流为从媒体流,视频的播放速率保持不变,根据本地系统时钟确定实际时间,通过调整音频播放速度来达到音视频同步。
首先选择一个本地系统时钟参考(LSCR),然后将LSCR发送到视频解码器和音频解码器,由这两个解码器根据各帧的PTS值对照本地系统时钟,参考产生各帧准确的显示或回放的时间。也就是说,生成输出数据流时依据本地参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时根据本地系统时钟参考上的时间来安排播放。
整个系统的音视频同步数据流程如图2所示。
图2 音视频同步数据流程
4 音视频通道管理
为了节约内存资源,便于通道的管理,本设计采用分通道的线程池管理,音、视频分别由自己的通道完成任务。
音视频采集使用同一个线程处理,采用select系统调用,每执行到此线程,就判断音视频设备是否就绪,若就绪即采集音频或视频到音视频缓冲区,再交给音视频采集压缩线程,最后再交给发送线程打包后采用TCP发送。需要说明的是本设计线程之间均采用信号量完成线程间基于TCP的音视频软件架构的同步管理。发送完以后进入接收线程等待对方发音视频数据。在接受端由接收线程接收到数据以后,判断数据的包头,再交由解压缩处理线程处理,然后播放音视频,再等待对方发数据到本机。
由于处理器的高速处理和高效率视频硬件H.264解压缩,使得整个系统实时性基本达到要求。嵌入式音视频管理模块实现了整个系统的统筹控制和实时处理,为音视频数据管理提供可靠的保证。
5 结 语
目前基于嵌入式无线终端的视频监控产品由于无需布线、传输距离远、环境适应能力强,性能稳定及通信便利等优势而倍受青睐,在安全监察、巡查通信、施工联络、人员调配等场合发挥着不可替代的作用。本系统是基于嵌入式Linux的无线音视频通信手持式终端,其体积较小、携带方便,采用锂电池经过开关电源芯片降压的方式给整个系统供电,其效率较传统直流稳压大大提高。在户外可视化娱乐、施工现场监控、大型安保联络等场合均可使用,具有广泛的应用前景。
注:本文指导老师为吴延海。
参考文献
[1] 毕厚杰.新一代视频压缩编码标准H.264/AVC[M].北京:人民邮电出版社,2009.
[2] 陈爽.Linux与Qt程序设计[M].北京:清华大学出版社,2011.
[3] 冯国进.Linux驱动程序开发实例[M].北京:机械工业出版社,2011.
[4] 孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.
[5] 冯进国.嵌入式Linux驱动程序设计从入门到精通[M].北京:清华大学出版社,2008.
[6] LOVE Robert.Linux内核设计与实现[M].北京:机械工业出版社,2011.
[7] 孙更新.Linux内核注释[M].北京:中国铁道出版社,2011.
[8] 刘学勇.Linux C编程从入门到精通[M].北京:电子工业出版社,2012.
[9] 宁方明.Linux系统管理[M].北京:人民邮电出版社,2012.
[10] 熊茂华.嵌入式Linux实时操作系统及应用编程[M].北京:清华大学出版社,2011.
视频采集使用的是OV9650CMOS摄像头模块,分辨率高达130万像素,可直接与OK6410开发板的Camera接口相接。适用于高端消费类电子产品、工业控制、车载导航、多媒体终端、行业PDA、嵌入式教育培训、个人学习等。其结构较简单,提供硬件驱动程序,便于使用和调试。
2.2 无线传输模块
本系统的无线传输模块采用工作在2.4 GHz公共频段的WiFi模块来实现,它遵循IEEE 802.11b/g网络标准,可用于在后期开发中将终端接入Internet,其最高数据率为54 Mb/s,支持WinCE、Linux系统。室内通信距离可达100 m,室外开阔地可达300 m。只需要对ARM?Linux操作系统进行简单的配置就可以由以太网连接模式转化为双机通信AD?HOC模式,在系统启动之后,设计了基于Qt[2]的窗口设计,方便切换连接模式。
选用WiFi具有很好的可扩展性,可以通过无线路由器的WiFi连接到广域网,具有很好的应用前景。同时大多数手机等终端设备具有WiFi功能,后期还可以将软件升级至Andriod系统,方便开发和移植。它减少了音视频实时传输的开发成本和周期,也给现代移动通信提供了一种新的音视频通信方式。
WiFi的驱动配置好后,应用层和以太网接口模式编程完全相同。由于此设计音视频数据量较大,不宜采用UDP,因为当数据量过大或传输信号不好时,UDP会严重丢包,所以最终选择面向连接的TCP传输协议,保证了系统音视频有效传输。由于TCP是应答时式传输数据,在局域网内,无需考虑TCP丢包问题,为实现系统功能提供了可靠的保障。
3 软件设计
软件分为用户界面设计和数据处理、传输等模块的设计。
3.1 基于多线程的软件总体设计
系统软件架构如图1所示,它是音视频单向采集、压缩、传输、接收、解压缩、处理回放音视频流控制过程,各个模块采用线程处理,由信号量处理线程间优先级构成循环的线程,有效地处理了音视频数据流。系统各功能模块化,便于修改和移植,代码简短精悍。
图1 软件架构
3.2 回音消除
系统开始时出现回音和延时问题,延时是由于采集传输过程中造成的,所以只能尽量缩短延时,而无法做到即时播放,这也是此系统的缺陷之一。回音是由于延时造成的,文中最后采用开源的Speex算法消除了回音。具体做法:将该算法编译成库文件,加入到Linux内核,即可以使用Speex 的API函数,实现音频的回音消除。
3.3 嵌入式音视频的同步
本文的基本思想是以视频流为主媒体流,音频流为从媒体流,视频的播放速率保持不变,根据本地系统时钟确定实际时间,通过调整音频播放速度来达到音视频同步。
首先选择一个本地系统时钟参考(LSCR),然后将LSCR发送到视频解码器和音频解码器,由这两个解码器根据各帧的PTS值对照本地系统时钟,参考产生各帧准确的显示或回放的时间。也就是说,生成输出数据流时依据本地参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时根据本地系统时钟参考上的时间来安排播放。
整个系统的音视频同步数据流程如图2所示。
图2 音视频同步数据流程
4 音视频通道管理
为了节约内存资源,便于通道的管理,本设计采用分通道的线程池管理,音、视频分别由自己的通道完成任务。
音视频采集使用同一个线程处理,采用select系统调用,每执行到此线程,就判断音视频设备是否就绪,若就绪即采集音频或视频到音视频缓冲区,再交给音视频采集压缩线程,最后再交给发送线程打包后采用TCP发送。需要说明的是本设计线程之间均采用信号量完成线程间基于TCP的音视频软件架构的同步管理。发送完以后进入接收线程等待对方发音视频数据。在接受端由接收线程接收到数据以后,判断数据的包头,再交由解压缩处理线程处理,然后播放音视频,再等待对方发数据到本机。
由于处理器的高速处理和高效率视频硬件H.264解压缩,使得整个系统实时性基本达到要求。嵌入式音视频管理模块实现了整个系统的统筹控制和实时处理,为音视频数据管理提供可靠的保证。
5 结 语
目前基于嵌入式无线终端的视频监控产品由于无需布线、传输距离远、环境适应能力强,性能稳定及通信便利等优势而倍受青睐,在安全监察、巡查通信、施工联络、人员调配等场合发挥着不可替代的作用。本系统是基于嵌入式Linux的无线音视频通信手持式终端,其体积较小、携带方便,采用锂电池经过开关电源芯片降压的方式给整个系统供电,其效率较传统直流稳压大大提高。在户外可视化娱乐、施工现场监控、大型安保联络等场合均可使用,具有广泛的应用前景。
注:本文指导老师为吴延海。
参考文献
[1] 毕厚杰.新一代视频压缩编码标准H.264/AVC[M].北京:人民邮电出版社,2009.
[2] 陈爽.Linux与Qt程序设计[M].北京:清华大学出版社,2011.
[3] 冯国进.Linux驱动程序开发实例[M].北京:机械工业出版社,2011.
[4] 孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.
[5] 冯进国.嵌入式Linux驱动程序设计从入门到精通[M].北京:清华大学出版社,2008.
[6] LOVE Robert.Linux内核设计与实现[M].北京:机械工业出版社,2011.
[7] 孙更新.Linux内核注释[M].北京:中国铁道出版社,2011.
[8] 刘学勇.Linux C编程从入门到精通[M].北京:电子工业出版社,2012.
[9] 宁方明.Linux系统管理[M].北京:人民邮电出版社,2012.
[10] 熊茂华.嵌入式Linux实时操作系统及应用编程[M].北京:清华大学出版社,2011.