APP下载

基于i.MX27的网络音视频通信的实现

2009-09-24缐晓林游向东

电子产品世界 2009年9期

缐晓林 游向东 潘 力

摘要:本文介绍一款硬件基于i.Mx27、软件基于SIP协议的网络视传机的设计与实现,对该产品的软硬件实现做全面阐述。

关键词:网络视传机;i.MX27;sIP;Linphone;MiniGUI

前言

随着因特网的发展成熟、用户需求的增长以及宏观环境变暖等条件的刺激,基于网络的音视频通信行业迅速发展起来。本文介绍基于Freescale公司i.MX27硬件平台,基于SIP(初始会话协议)协议的网络视传机的设计与实现。

视传机的软硬件技术基础

i.MX27

将视频编解码功能嵌入到多媒体应用处理器中已经成为一个趋势。Freescale DragonBall家族最新成员i.MX27多媒体应用处理器,片内集成H.264/MPEG4全双工硬件编解码视频处理单元,是嵌入式多媒体应用处理器的一颗新星,可广泛应用于多种产品中。i.MX27处理器内部的硬件编解码模块性能强劲,可以达到H.264/MPEG4编解码D1分辨率:720×576@25fps;720×480@30fps;全双工编解码同时进行可以达到VGA分辨率:640×480@30fps。

SIP协议

SIP是由IETF(国际互联网标准制定组织)制定的面向Internet会议和电话的信令协议。SIP是一个应用层的协议,可以建立,修改或者中止多媒体会话或者呼叫。它是一个基于ASCII的端到端的协议,它实际上是在因特网上提供“约会”服务。用来实现v0IP的开放协议,最常用的有三种,SIP、MGCP(Media GatewayControl Protoc01)和H.323。

SIP协议是专门为IP电话,尤其是结合Internet设计的协议,同传统的H.323协议相比,SIP拥有明显的优越性:优异的可扩展性,大大提高了系统的处理能力:与Internet紧密结合,使通讯更加轻松便捷的:卓越的开放性,不仅能够对手机、PDA等移动设备提供良好的支持,对于在线即时交流、语音和视频数据传输等多媒体应用也能够很好地完成。

SIP协议支持5方面的能力:用户定位、用户可用性、用户能力、会话建立、会话管理。SIP协议本身不提供业务,但是它提供业务支持的基础。SIP协议本身也不提供会议控制,但是SIP协议可以与任何一个会议控制的协议绑定。

Linohone

Linphone是基于WEB的IP电话工具,运行于Linux和Windows Xp下。通过Linphone可以在互联网上和其他人自由地进行声音、视频通信,也可以进行及时文本信息传送。Linphone是遵从SIP协议开发的,它需要和支持SIP协议的电话或者代理服务器进行相互操作。如果把基于Linphone开发的VolP设备通过PSTN帐号注册到电信服务器上,就可以通过它和普通电话进行通话了。但是这些通话不是免费的,因为PSTN是收费服务。Linphone是开源免费软件,可以自由下载和重新发布。

MinGUI

MiniGUI是面向实时嵌入式系统的轻量级图形用户界面支持系统。目前,MiniGUI已成为跨操作系统的图形用户界面支持系统,可在Linux/uClinux、eCos、uC/OS—II、VxWorks等操作系统上运行。

MiniGUI为实时嵌入式操作系统提供了完善的图形及图形用户界面支持。可移植性设计使得它不论在哪个硬件平台、哪种操作系统上运行,均能为上层应用程序提供一致的应用程序编程接口(API)。MiniGUI的技术优势:轻型、占用资源少,高性能、高可靠性,可配置,可伸缩性强,跨操作系统支持等。

视传机的实现

视传机的最主要功能包括:通过IP或者向服务器注册的ID号呼叫另一台接在网络上的设备,进行视频流实时双向收发(1帧25帧/s),最高分辨率可达640×480(广播级图像质量/DI),可设置音频流格式,G.711/GSM/sPEEX,此功能适用于高网络带宽的应用环境。另外视传机还可以实现电影播放,音视频单向传输(远程监控),音视频录制播放,图片单双向收发,音视频邮件收发等功能。

视传机实现这些功能基本原理就是用MiniGUI制作图形界面进行人机交互,用户通过键盘或者遥控器进行指令输入,MiniGUI接收用户指令,并传给操作系统(这里我们使用Linux 2.6.19),操作系统根据指令的不同进行不同的操作,例如若用户想进行视频呼叫,操作系统就将指令发给Linphone,Linphone就在sIP协议的基础上发起视频呼叫,根据对方不同的状态给出不同的响应,对方不在线、对方忙、对方正常应答等。在正常应答的情况下双方协商音频视频通信编解码方式,建立呼叫,进行音视频通信,然后任意一方挂机,退出,完成一次通信,期间还可以进行音视频录制等操作。再如若用户想进行电影播放,则操作系统会调出播放程序,播放用户指定的电影文件。

视频流的流程如下:由摄像头(支持自带插针式和Tv输出两种)采集图像数据,交给操作系统,操作系统根据用户需要,将视频数据进行本地显示、编码录制或者发送到对端,对端收到视频数据送入VPU单元进行解码,然后显示或者录制等。通话过程中音频流的流程为:通过mic采集音频数据,交给操作系统,操作系统将数据送给Linphone,Linphone进行一定格式的编码,然后发送到对端,对端再进行相应的解码,再将数据输出到音箱或者耳机。

视传机主要软件Linphone的移植

Linphone有很多个版本,可以通过www.linphone.org免费下载。我们这里使用带视频功能的linphone1.6.0版本,要将这个Linphone使用在开发板上,需要做3个方面的工作:添加H264硬件视频编解码器(使用i.MX27的VPU单元进行视频编解码),修改程序使之与操作系统和其他应用程序进行通信,最后交叉编译Linphone至开发板。

Unphone功能结构

Linphone1.6.0版本的功能结构如图1。

console包括了整个终端界面部分,将界面操作和命令行输入交由下层处理。

coreapi包含Linphone大部分核心接口函数,如读配置文件进行程序初始化、呼叫的建立和结束、对sDP消息的处理等。

osip2是一个短小简洁的sip协议栈,专注于sip底层解析。

exosip是osip2的一个扩展协议集,它部分封装了osip2协议栈,使得它更容易被使用。