基于RTP/RTCP的音视频Wi Fi传输系统的设计*

2011-08-17 09:37汤银焕黄秋元杨纪锋王福堂
关键词:音视频接收端无线网络

周 鹏 汤银焕 黄秋元 杨纪锋 王福堂

(武汉理工大学信息学院1) 武汉 430070) (上海明波通信技术有限公司2) 上海 201203)

0 引 言

无线流媒体技术是无线网络技术、视频编码技术和流媒体传输技术的结合.在无线网络方面,基于IEEE802.n系列的Wi Fi网络理论上已经能达到108 Mb/s的速率,在视频编解码方面,MPEG4已经得到学术界和工业界的认可[1-3],也成为当前视频编码领域最为热门的研究领域之一.RTP/RTCP协议是为了在分组网络中传递实时业务而设计的,如今已经在有实时性要求的领域得到了广泛的应用.当前,基于无线网络的流媒体传输技术是无线网络应用的一个研究热点,同时也是难点.

本系统由2部分实现:采集音视频并压缩发送音视频信号的发送端和接收并解码播放音视频信号的接收端.发送端和接收端在硬件平台上是完全相同的,通过软件来将其设定为发送端和接收端,以实现两者之间实时的无线视频流式传输.

1 系统结构

1.1 硬件结构

硬件主要包括处理器、音视频采集单元、Wi Fi传输模块、存储模块、以太网接口以及串口调试单元组成.结构如图1所示.

图1 无线传输系统结构图

处理器采用飞思卡尔半导体Dragon Ball家族的最新成员i.MX27芯片作为多媒体应用处理器,可以对前端送来的视频信号进行H.264编码和本地存储,且通过无线wifi传输.NAND Flash是程序存储器单元;LPDDR存储数据;无线模块采用usb接口的wifi模块TL-WN321 G+;codec使用wolfson的WM8976,采用麦克风录音或者AV线从电视机录音,播放使用扬声器、耳机或者AV线输入到电视;视频encode芯片是TVP5150,decode芯片是CH7024,从CMOS摄像机OV2640或者TVIN录制视频流,由TVOUT播放或者LCD显示.

在无线传输系统中,通过软件分别将两块板子设置为发送端和接收端,发送端的开发板就选中codec的录音功能和video的视频采集功能,接收端的功能是codec播放声音和视频解码显示.

1.2 软件结构

系统的软件架构采用C/S架构,软件设计分为发送端软件和接收端软件.发送端软件设计分为音视频采集、音视频压缩和音视频发送3个功能模块;客户端软件设计分为音视频接收、音视频解码和音视频播放3个功能模块.系统软件结构如图2所示.

图2 无线传输系统软件结构

工作流程:发送端,视频采集模块分别从前端摄像机和麦克风采集视频和音频信号,视频信号经过A/D转换和i.MX27应用处理器芯片进行压缩编码后生成MPEG4格式的视频流,而音频信号经过A/D转换生成I2S标准的数字音频格式,将这些音视频流通过流媒体服务器打包成RTP数据包,通过wifi无线模块发送到网络中;接收端通过wifi无线模块从网络中接收到RTP包,解包,通过i.MX27解压缩,经过D/A转换为视频和音频信号,送到LCD视频显示,及扬声器进行声音的播放.

2 流媒体传输RTP/RTCP协议

2.1 RTP/RTCP介绍

由于TCP的重发机制带来较大的时延,UDP本身又不提供任何Qos保证,因此IETF制定了实时传输协议RTP和实时传输控制协议RTCP来满足多媒体实时传输的需求.RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用TCP或者AT M等其他协议.

实时传输协议(real-time transport protocol,PRT)是在Inter net上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输,其目的是提供时间信息和实现流同步.整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议两个关系十分密切的子协议.RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网络视频流数据.在RTP会话期间,各参与者周期性地传送RTCP包.RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料.

一个视频或音频RTP包的组成如图3所示.

图3 一个视频/音频RTP包

2.2 基于RTP/RTCP的音视频传输

为了更加快速地在项目中应用RTP协议实现流媒体的传输,一般会选择使用一些RTP库,例如使JRTPLIB库,CCRtp库,Ort p库等,我们选用Ortp库作为第三方库.Ortp是一个支持RTP以及RFC3550协议的库,该库纯使用C语言实现,可以工作于windows,Linux,以及Unix平台.该系统是在linux下实现的,所以要将Ort p库移植到linux系统下.对于大部分基于RTP/RTCP的应用程序来说,类RTPSession是最主要的类.

发送视频的程序实现步骤如下.

在进行RTP流媒体传输之前,首先要对RTP进行初始化,初始化函数如下:

ortp_init();

ortp_scheduler_init();

然后对RTP收发进行初始化,先要生成Rtp Session类的一个实例来表示此次RTP send对话,创建的Rtp Session的一个实例是m_Session_send,m_Session_send=rtp_session_new(RTP_SESSION_SENDRECV);

接下来设置该实例使用调度管理功能,使用阻塞模式,发送数据的目标地址和监听端口号,以及发送数据的负载格式,设置如下:

rtp_session_set_scheduling_mode(m_Session_send,1);

rtp_session_set_blocking_mode(m_Session_send,1);rtp_session_set_remote_addr(m_Session_send,"192.168.2.60",5060);

rtp_session_set_payload_type(m_Session_send,34);

其中,payload的格式在payloadtype.h中有详细的定义,在发送音频的时候要注意payload值的变换.

然后进行视频采集、MPEG4编码,最后将编码好的MPEG4视频流打成RTP包,如下

m1=rtp_session_create_packet(m_Session_send,header Size,(char*)data,size);

返回mbl k_t结构的RTP包,将该RTP包发送出去到目的地址,实现函数如下

rtp_session_send m_with_ts(m_Session_send,m1,0);

视频接收的程序实现如下步骤:

初始化RTP和发送端一样,也需要先生成Rtp Session类的一个实例m_Session_recv,模式设置同发送端,同时要注意接收监听端口要和发送端的一致,接收的IP设置为"0.0.0.0",然后进行RTP包的接收,

rtp_session_recv m_with_ts(m_Session_recv,0);

由下面函数进行时间戳同步,

rtp_session_get_current_recv_ts(m_Session_recv);

同时将接收到的RTP包进行还原,送到处理器解码显示,至此视频端RTP收发已经实现.

3 Wi Fi模块的设计

3.1 Wi Fi技术介绍[4-5]

目前,主要的无线接入技术主要包括802.11,802.15,802.16,802.20标准.无线局域网就是基于其中的802.11标准.802.11b是所有无线局域网标准中被使用最为广泛的标准,它的工作频率为2.4 GHz,传输速率为11 Mb/s.另外还有两种802.11空间的协议,包括(a)和(g),它们也是公开使用的,但802.11b在世界上最为常用.Wi Fi(wireless fidelity)就是基于802.11b标准建立的,它具有部署方便、成本低、传输速率高、抗干扰能力强、灵活性好等优点.Wi Fi的覆盖半径基本上能达到100 m左右,而普通的蓝牙技术基本上只能覆盖15 m左右的半径区域.而且 Wi Fi网络的建设成本相对于传统的局域网布线成本要低,Wi Fi网络只需安装一定数量的无线网络节点(Access Point)就可以满足指定区域信号的覆盖,可以避免固定局域网繁琐的布线工程.

3.2 Wi Fi模块的实现

本系统采用的Wi Fi模块是TL-WN321G+,此模块是TP-Link的rt73芯片,是一款USB接口的Wi Fi设备.该模块支持IEEE 802.11b和IEEE 802.11g无线标准,最大支持54 Mb/s的传输速率,是USB2.0的接口类型,工作频段是2.4~2.4835 GHz,室内最远传输100 m,室外300 m的距离.

要使用该无线模块,需将其驱动移植到linux平台上,由于其使用的是rt73芯片,rt73有开源的linux驱动.从网络上下载rt73源码到内核linux2.6.19下,进行该驱动的移植,配置内核支持Wi Fi网络,生成rt73.ko,拷贝到相应文件系统下,同时也要移植相应的加密工具.使用的时候将Wi Fi模块插入usb接口,ins mod驱动模块,设置无线模块的IP,将无线模块激活,这样就可以使用Wi Fi模块进行音视频的无线传输,同时为了增加无线网络的稳定性,需要一台无线路由器建立连接点.

4 结束语

本系统实现了音视频流通过无线网络的实时传输,视频和音频是分开进行的.该系统视频部分实现了从CMOS摄像头采集视频,由i.MX27进行MPEG4编码,组成RTP/RTCP包通过 Wi Fi无线网络发送出去,并由接收端接收解码显示出来,音频部分实现了从麦克风录音,由codec芯片编码成PCM流,然后组成RTP/RTCP包,通过Wi Fi网络发送,在接收端接收解码播放.

[1]孔永锋,施伟斌,基于RTP&RTCP的 MPEG4嵌入式Linux无线视频监控系统[J].仪表技术,2009(8):35-38.

[2]贺 礼,陈前斌,唐 伦,隆克平.基于3 G无线网络实时传输MPEG4流媒体的设计与实现[J].计算机应用研究,2008,25(6):121-124.

[3]张 伟.基于RTP和 MPEG4的流媒体系统研究[J],科技资讯,2007(24):166-167.

[4]陈文周.Wi Fi技术研究及应用[J].数据通信,2008(2):14-17.

[5]Doxygen,ORTP API documentation,Rev0.14.2[EB/OL].[2008-02-02],htt p://www.antisip.co m/doc/ortp.

猜你喜欢
音视频接收端无线网络
基于扰动观察法的光通信接收端优化策略
顶管接收端脱壳及混凝土浇筑关键技术
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
基于多接收线圈的无线电能传输系统优化研究
滤波器对无线网络中干扰问题的作用探讨
3KB深圳市一禾音视频科技有限公司
酸槽内钢带位置测量传感器
WIFI音视频信号传输的关键问题探究
高速公路整合移动音视频系统应用
无线网络的中间人攻击研究