APP下载

嵌入式远程视频监控系统的设计

2011-08-11方晓翠周渊平王小红

通信技术 2011年10期
关键词:公网开发板接收端

方晓翠, 周渊平, 王小红

(四川大学 电子信息学院,四川 成都 610065)

0 引言

近年来,随着计算机、网络以及图像处理、传输技术的飞速发展,视频监控传输技术得到了显著的发展。与此同时,嵌入式设备也以其功能强,实时性好、资源占用量小,受到了越来越多人的关注,在嵌入式设备上进行视频传输和监控的开发已逐渐成为一种趋势[1]。但是目前已有的嵌入式视频监控传输设备大多都是基于局域网环境下,使得监控系统受到地域限制,而基于第三代移动通信技术(3G,3rd-generation)网络的视频监控系统[2]由于其成本过高也得不到广泛推广。基于此,提出了一种低成本高效能的方案,将NAT穿越技术、嵌入式技术结合起来设计了嵌入式跨网视频传输系统。

1 系统设计

系统基于S3C2440开发板的嵌入式Linux平台,采用USB接口的摄像头捕捉视频,将视频数据传输到开发板,开发板上通过视频采集、处理等模块对视频数据进行处理,然后将处理后的视频数据通过网络传输至接收端PC,接收端PC运行相应软件程序,接收并解码视频数据,最后将数据图像显示在电脑上。系统总体结构如图1所示。

图1 系统总体

1.1 系统硬件平台设计

1.1.1 硬件开发板结构

本系统硬件平台选用的是北京扬创科技有限公司提供的utu2440-F开发板,它由核心板与底板组成,核心板上集成了了 64 MB Nand Flash和 64 MB SDRAM,底板上集成了DM9000A网卡、音频、串口、USB 模块等外设接口和芯片。开发板CPU芯片采用的是三星公司的微处理器S3C2440A,该处理器内部集成了ARM920T内核的32位微控制器,工作频率高达 400 MHz,该处理器还支持协处理器、片上调试和内存管理单元等,具有体积小,高性能、低功耗等优点。

系统的主要模块如图2所示。

图2 2440开发板结构

各个模块主要功能为:Nand Flash保存了操作系统和文件系统;RS232串口用于与宿主机通信,输入调试和运行命令;有线网用于进行网络通信,比如用简单文件传输协议(TFTP,Trivial File Transfer Protocol)或网络文件系统(NFS,Network File System)下载文件;LCD用于显示接收到的客户端视频图像;USB摄像头用于视频的采集;无线网卡用来无线传送视频图像。

1.2 系统软件平台设计

1.2.1 建立交叉编译环境

嵌入式系统一般资源有限,不利于调试,因此通常通过采用交叉编译调试的方式来编译嵌入式软件。交叉编译调试环境是搭建在宿主机上的,对应的嵌入式开发板叫做目标板,他们通过串口相连,其示意如图3所示。开发时,先在宿主机上编写程序,安装交叉编译环境,将所写代码,使用交叉编译器进行编译,汇编,以及连接,生成可执行的二进制代码。这种可执行代码并不能在宿主机上执行,而只能在目标板上执行,然后将可执行代码通过串口,仿真器等进行下载到目标板的RAM或FLASH中,在目标板中运行即可[3]。

图3 交叉编译

1.3 系统设计中的关键技术

1.3.1 NAT技术

NAT技术通过将局域网上的主机地址映射为 Internet上的有效IP地址,从而实现了网络地址的复用。NAT技术不仅隐藏了内部网络地址信息,使外界无法直接访问内部网络设备,保护内部网络,也减少对Ipv4地址的需求量。NAT允许任何内部主机访问 Internet上的任何服务, 而不允许外部主机用户直接向私有网络中的主机发起通信请求[4]。NAT示意如图4所示。

图4 NAT技术

如图 4所示,当内部网络要访问外部网络时,就通过NAT将自己的IP地址和端口号转换为外部的IP地址和端口号;当外部主机要访问内部网络时,可以通过配置内部网络中特定的应用服务器和NAT转换来访问内部服务。当发送方位于私有网络中,接收方位于公网上时,如果UDP通信请求是由内网用户即发送方发起的,则可以在发送方与接收方之间建立起通信;如果 UDP通信请求是由接收方发起的,NAT尚未给发送方分配合法的公有地址,由于私有地址在Internet上是非法的,接收方发出的数据包将无法到达发送端,不能建立起正常的通信。当接收方是位于另一个私有网络中时,由于发送方和接收方都没有分配到公网IP地址, 因而无法建立起通信;即使发送方和接收方的公网 IP地址是已知的,由于之前没有通信过,NAT仍然阻止了客户间的正常通信。也就是,位于NAT后面的主机用户可以作为客户机访问外网,但不能够充当服务器向公网提供服务。

以上这些限制使得存在NAT的网络中,外部网主机无法穿过NAT主动与内部网主机进行通信,特别是位于不同NAT之后的不同内网中的双方更无法相互连接,无法实现信息的交换和共享。基于此,提出了NAT对UDP的简单穿越(STUN,Simple Traversal of UDP Through NAT)协议来解决 NAT穿越问题。STUN协议由IETF RFC 3489[5]定义,是UDP对NAT的简单穿越方式。利用STUN实现NAT穿越主要是利用STUN Client向STUN Server发送STUN请求消息和接收STUN响应消息,得知其在出口NAT上的映射外部地址以及NAT类型等相关消息,然后就将报文信息中的地址信息直接填写出口NAT上的对外地址,并且告知目的端节点自己的接收地址和端口号。同时,根据发送端和接收端所处的NAT类型,采取适当的策略来完成对NAT的穿透。

1.3.2 MJPEG编解码

运动静止图像压缩技术(M-JPEG,Motion- Join Photographic Experts Group),广泛应用于视频传输和图像处理领域,它是一种基于静态图像压缩技术(JPEG,Joint Photographic Experts Group)发展起来的动态图像压缩技术[6],这种压缩方式单独完整地压缩每一帧,其中每一帧图像都分别使用 JPEG编码。其主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩,不对帧间的时间冗余进行压缩,因此造成了大量冗余信息被重复存储,存储占用的空间大,压缩效率不高。也正因为如此,它的编码与解码相对比较容易,并不需要过多的运算能力,也使得软件或者芯片可以十分容易地对 Motion JPEG进行处理,实现较为容易,成本也较低。此外,M-JPEG压缩方式并没有统一的规定格式。这也就是说,每个型号的视频服务器或编码板有自己的 M-JPEG版本,有利于开发出适合自己需求的视频压缩方案。

1.3.3 SDL显示

跨平台多媒体开发库(SDL,Simple DirectMedia Layer)用C语言编写的,支持多种操作系统,为应用程序开发以及代码移植提供了很多便利。使用者不必知道操作系统间的具体差别,只需要调用SDL提供的API函数就可以实现音视频的操作[7]。

SDL的程序代码主要由4部分组成,分别是初始化阶段,程序运行阶段,事件等待与处理阶段,资源释放阶段。初始化阶段主要完成程序的初始化工作。如SDL的函数初始化,还有程序自身的一些初始化操作,如窗口的建立,背景色的设置等。程序运行阶段,主要完成程序中所需要的媒体载入和显示等,比如窗口的初始化内容的刷新等。事件等待与处理阶段,主要是用于等待窗口、键盘、摇杆、鼠标等事件然后进行相应的操作。资源释放阶段,主要用于释放程序中所用到的系统资源。

1.4 系统设计的优点

本系统基于嵌入式视频监控系统的开发[8],在传统的视频传输上增加了嵌入式平台,使得发送端与接收端任何一方均可处于便携可操作的环境中。发送端可以通过小型嵌入式开发板连接摄像头,将监控到的视频图像通过网络远程传输给接收端,接收端既可以通过电脑也可以通过嵌入式开发板或者手机终端接收到视频图像并显示出来。大大提高了视频监控的力度以及灵活性。并且通过利用 NAT技术,使得发送端和接收端所处的环境更加多样化复杂化,它们可以同时位于 NAT内部子网中,丰富了这套系统的用途功能以及适用环境。

2 系统实现

整个系统分为发送端和接收端,发送端主要用来对视频图像进行采集、编码、封装处理,并且利用NAT技术跨网发送出去。接收端用UDP穿越NAT技术接收到压缩封装的视频数据,然后进行解封装、解码,最后调用SDL库将视频显示出来。系统实现的模型如图5所示。

2.1 发送端

发送端应用多线程进行处理,即采集线程和发送线程,使用互斥机制协调2个线程。采集线程主要负责采集视频数据,并进行编码。发送线程则具体实现UDP穿越NAT技术将发送端与接收端建立了直接通道,不经由服务器直接将视频数据发送给接收端。虽然视频发送采用的是UDP方式,不能确保数据的完整性,但是由于省去了建立连接、握手等步骤,因此大大加快了视频传输速度,使得即使在较差的网络环境下也能得到较好的视频流。发送流程如图6所示。

图5 系统设计模型

图6 发送端流程

2.2 接收端

接收端主程序通过NAT技术建立通道,然后向发送端发送申请视频传输的信令,发送端收到此信令后开始发送视频数据。此时接收端即准备缓冲区接收,在缓冲区满一帧后,接收端进入处理函数部分。在处理函数中,接收端先进行初始化工作,初始化成功后就对缓冲区的数据进行解码并显示出来。接收端流程如图7所示。

图7 接收端流程

3 实验测试

实验测试环境为校园网和电信宽带的局域网,检测到2个网络的NAT环境都属于端口受限型NAT。其中电信宽带用户Client A内网IP为192.168.1.101,端口号为10050,公网IP为220.166.196.106,端口为2489。校园网用户Client B内网IP为202.115.52.146,端口号为10050,公网IP为125.71.200.12,端口为3478。2个用户都向公网代理服务器注册自己的信息,服务器返回对方用户的信息,此时Client A和Client B都可以与公网服务器通信了,然后Client A通过发送UDP数据报在Client B上打洞,打洞指令由服务器发送,当打洞成功后,服务器向Client A发送打洞成功的消息,Client A就可以发送UDP视频数据包给Client B了,至此双方可以进行UDP直连,接收端可以收到发送端发送过来的视频数据流,并且显示在终端电脑上。图8为接收端电脑接收到的发送端发送的视频图像。

图8 接收端显示的视频图像

4 结语

在视频传输和嵌入式系统结合的基础上,利用UDP穿越NAT提出并技术设计了一套远程传输视频系统的方案,并介绍了其实现方法和关键技术。实验测试证明该解决方案可以较好地解决NAT穿越问题,并且能成功进行跨网传输视频。且本系统具有一定的可扩展性,能够适应不同的开发平台和网络环境,对嵌入式开发有一定的意义。

[1]刘红. 嵌入式系统技术发展趋势浅析[J]. 中国建设教育, 2006,10(10): 51-54.

[2]李楠, 房好帅. 基于 3G的嵌入式无线视频监控系统典型方案及分析[J]. 北华航天工业学院学报, 2010, 20(03): 16-20.

[3]杨创科技. YC2440开发指南-utuLinux2.6.24篇[M]. 北京: 北京扬创科技有限公司, 2008.

[4]杨天路. P2P网络技术原理与系统开发案例[M]. 北京: 人民邮电出版社, 2007.

[5]ROSENBERG J, WENBERGER J, MAHY R. RFC3489, STUN simple of User Datagram Protocol (UDP) through Network Address Translators(NATs) [S]. 2003.

[6]刘峰. 视频图像编码技术及国际标准[M]. 北京: 北京邮电大学出版社, 2005.

[7]江达秀, 许建龙, 孙树森. 应用SDL及GTK+实现视频多路回放[J].浙江理工大学学报, 2009, 26(06): 16-20.

[8]郝卫东,李静. 基于 Linux的嵌入式网络视频监控系统的研究[J].计算机系统应用, 2008(08): 69-71.

猜你喜欢

公网开发板接收端
浅析大临铁路公网覆盖方案
基于扰动观察法的光通信接收端优化策略
顶管接收端脱壳及混凝土浇筑关键技术
基于多接收线圈的无线电能传输系统优化研究
基于STM32H7的FDCAN通信系统设计与实现∗
公网铁路应急通信质量提升的技术应用
如何迎接公网对讲的春天
基于多播的4用户BC网络自由度研究
浅析单片机开发板的设计与制作
基于公网短信的河北省高速公路数据传输应用