葛男男 孙伟 曹界宇
【摘要】 随着无人机在电力巡检、航拍、环境监测等方面的应用,对無人机实时图像传输系统提出了更高的要求,需要其能够进行远距离、稳定地传输高清实时图像,因此研究无人机的图传系统就显得尤为重要。本文将研究并设计的图传系统搭载于无人机,可实时采集无人机飞行过程的视频流,然后将采集到的数据通过4G链路上传至流媒体服务器,同时PC端可实时显示无人机飞行时的视频流信息,实现对无人机飞行环境的实时监控。
【关键词】 无人机 图传系统 4G 流媒体服务器
引言
随着科技的发展,时代的进步,无人机在军用及民用领域得到广泛应用,例如军事上的侦查、监控;民用领域的电力巡检、抢险救灾、快递运输、测绘等。而这些应用都离不开无人机的图传系统,无人机的图像传输系统作为无人机的“眼睛”,在无人机飞离地面指挥员视线时也能将无人机在飞行过程中拍摄的画面实时传回地面指挥者的设备中,供指挥者来判断无人机的状态,从而进行决策,发出准确的命令[1]。因此这就对系统的实时性及清晰度的要求很高。但目前无人机图传系统多采用WIFI、5.8G等模拟信号传输,其在复杂环境中抗干扰能力弱,传输距离有限,传输速率也较慢,难以满足远距离高清实时图像传输的要求、达不到远程监控的效果。因此研究并设计无人机实时图像传输系统具有重要意义。
一、系统总体方案设计
图传系统总体架构图如图1所示,系统包括发送端,服务器端,PC监控端。
1) 发送端,发送端搭载于无人机,发送端包括控制器和摄像头,控制器和摄像头通过USB连接,控制器通过V4L2接口采集USB摄像头视频数据,然后通过RTSP流媒体协议封装视频流数据,并通过4G模块推送给流媒体服务器。
2) 服务器端,通过RTSP流媒体协议接收来自发送端的数据,再通过RTSP流媒体协议分发数据给PC端。
3) PC监控端,PC监控端通过RTSP协议从流媒体服务器拉取视频流,再经过视频流解码、格式转换,最终将视频流实时显示到PC端窗口。
二、发送端设计
2.1 流媒体技术简介
由于视频数据体积较大,在带宽资源有限的条件下很难进行传输,在这种情况下,“流媒体技术”应运而生。流媒体是一种通过流式传输方式在网络上传播的媒体格式[1],而流媒体技术就是将连续的音视频数据压缩处理后放在网站服务器上,用户可边下载边观看,而不需要等整个文件下载完才可以观看的技术[2]。流媒体要进行传输便离不开合适的传输协议,如RTP、RTCP、RTSP等流媒体传输协议,本文选用RTSP协议拉取发送端的视频流并将采集到的视频流推送至服务器。
RTSP(实时流传输协议)属于TCP/IP协议中的应用层协议,利用该协议可以在网络上实时传输视频数据[3]。RTSP优势包括:在传输视频数据时它较能承受网络延迟;易于扩展,设计基于RTSP的音/视频数据传输可通过修改参数、方法等进行开发;可降低服务器端的网络用量[4]。
2.2视频采集模块设计
视频采集模块的摄像头硬件选型上采用的是USB免驱动的UVC摄像头,该摄像头支持H264、MJPEG、YUV420、YUYV422等多种格式,本系统采用的是H264视频编码格式。图传系统软件上主要通过V4L2接口采集USB摄像头视频数据。V4L2是Video for linux2的简称,是专门为linux设备设计的一套视频框架,V4L2为linux中关于视频设备的内核驱动。
在Linux系统中,视频设备作为设备文件,linux应用层可以像访问普通文件一样对其进行读写。图传系统通过应用层V4L2接口调用ioctl系统调用,实现UVC摄像头底层图片格式查询、图片格式设置、视频帧采集等功能。
该视频采集模块软件实现流程主要包括:获取设备性能、查询采集设备支持的数据格式、设置视频采集参数、向驱动申请帧缓存、分配物理地址帧缓存映射、帧缓存入列、开始视频采集、循环采集图片帧、结束视频采集。其中循环采集图片流程包括:帧缓存出列、帧缓存入列、判断图片帧采集是否结束。
2.3视频推送模块设计
视频推送模块基于FFmpeg库的基础进行RTSP流媒体传输协议的开发,通过RTSP流媒体传输协议,图传系统将采集的相机视频流实时上传至流媒体服务器。其中FFmpeg是一套开源的音视频开源库。
该模块软件实现流程主要包括:FFmpeg初始化工作、RTSP输出流流创建并填充、RTSP推流。
其中FFmpeg初始化流程包括注册FFmpeg编解码器、打开视频文件、添加视频流信息、打印输入流视频信息;
RTSP输出流配置化流程包括:分配输出上下文结构体、申请视频流AV Stream结构体、拷贝输入流编码器信息至输出流中、打印输出流视频信息;
RTSP推流流程包括打开输入流URL、填充推流参数、写入文件头、读取一帧数据、推送一帧数据。
三、流媒体服务器技术
3.1 流媒体服务器简介
EasyDarwin,EasyDarwin是由国内开源流媒体团队开发的一款开源流媒体视频平台框架,EasyDarwin是在Apple开源流媒体服务器EasyDarwin Streaming Server基础上开发的免费、开源的流媒体服务器,该流媒体服务器支持RTSP、RTMP等流媒体协议[5]。经过相关相关配置,终端采集设备通过RTSP/RTMP流媒体传输协议将H.264/MPEG/ACC等音视频格式的数据上传至EasyDarwin流媒体服务器,用户端便可在Windows、Linux、Android、IOS 等多种平台上实现流媒体数据的转发功能、点播、录像回放和流媒体直播等功能[6]。
3.2 流媒体服务器搭建
本系統使用的服务器部署于华为弹性云服务器。华为服务器的处理器类型为Intel Cascade Lake,c6.large.2,4vCPUs,8G内存,处理器主频为3GHz,外网带宽10Mbps,部署在华东地区。
本系统使用的是Easy Darwin流媒体服务器实现视频流的处理和转发。EasyDarwin流媒体服务器搭建过程为:官网下载源码、解压缩、修改Easy_Darwin.sh启动脚本、sudo update-rc.d Easy_Darwin.sh defaults 90、./easydarwin启动EasyDarwin。
四、PC监控端
PC监控端基于SDL+FFmpeg开源库的基础上在Ubuntu16.04环境下进行开发。该流程主要包括:PC监控端通过RTSP协议向服务器端拉取视频流,将视频流Push到环形缓存,再经过视频流解码、图片格式转换,最后通过SDL接口在PC窗口显示视频流。该PC监控端软件流程图如图2所示。
其中视频流解码器基于FFmpeg的libavcodec音/视频编解码库进行开发,实现对视频流进行解码,本视频流解码流程为:首先初始化解码器相关工作,包括注册FFMPEG容器和解码器;其次打开网络流,根据打开的网络流匹配对应的解码器;接着打开解码器;然后进行视频流的拉流和推流工作,主要包括读取一帧数据,解码一帧AVFrame直到解码完成;最后释放解码器资源。
其中视频图片格式转换基于FFmpeg的libswscale图片像素格式转换库进行开发,实现对解码后的原始帧格式转换为SDL纹理格式。
其中SDL窗口显示视频流流程为:首先初始化SDL相关工作;然后创建PC端窗口的大小、创建渲染器、创建纹理;最后就是显示工作,包括更新纹理、复制渲染、并将渲染呈现到窗口,最后清除SDL资源。
五、结束语
本文设计了一种无人机实时图像传输系统,该系统基于RTSP流媒体传输协议开发了一款低延时、高稳定性的实时视频流传输方案,并且PC监控端在SDL多媒体开发库基础上进行功能定制开发,较传统的VLC软件在视频流卡顿上有所提高。该图传系统在无人机领域有较大的市场和应用价值。
参 考 文 献
[1]彭湛博. 无人机实时高清图传系统的设计与实现[D].西安电子科技大学,2018.
[2]吴莉莉,刘益成.流媒体技术及应用[J].信息技术,2002(01):39-41.
[3]严羽,王永众,杨来邦.基于无人机的实时图传系统[J].智能计算机与应用,2019,9(04):65-70.
[4]厉鹏,李秦月.基于4G定位图传终端的应用研究[J].技术与市场,2020,27(02):26-28.
[5]游浩.基于Easydarwin平台的视频应急通信软件设计与研究[D].上海师范大学,2018.
[6]韩文,张硕士.基于WebGIS的智能公交监控调度系统设计与实现[J].电子设计工程,2018.