微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 3G无线环境下实时视频浏览技术的实现方案

3G无线环境下实时视频浏览技术的实现方案

时间:03-01 来源:互联网 点击:


    首先将DM365中两个编码通道全部使能,保证了开发板对双码流的支持,然后,在应用程序中采集两路的数据,分别调用DMAI中的编码函数Vencl_create,进而对两路数据进行两次编码,这样就得到两路不同分辨率大小的编码数据流。本文实现了一路D1,一路是CIF大小(用于传输)的码流,并且都达到20帧的速率,可以保证视频流质量。它在现有网络瓶颈下兼顾了图像质量和传输实时性,可以突破网络瓶颈,根据网络带宽灵活选择码流格式,达到本地高清存储,同时保证一定远程监控质量的低码流网络传输。

2 多线程技术在3G无线视频监控中的应用
    由于视频图像传输需要做到实时性和良好的传输质量,而系统需求的功能又比较复杂,包括视频数据采集、视频编码、RTP打包发送、视频数据流保存等工作,而它们的流程又不是简单的顺序执行,所以这里引入了多线程。
    本论文提出的方案中包括Capture,Video和Writer三个主要线程,分别完成原始数据YUV数据的采集、H.264数据压缩、视频数据的写文件,而在视频采集线程中加入了异常检测模块(该模块利用原始数据进行检测异常),在视频数据压缩线程中采用了双码流技术,并将CIF分辨率的压缩数据进行RTP协议封装,在Writer线程中实现了以时间为文件名的保存方式并将其保存到SD卡中。在此基础上实现设防、拆防、异常检测、客户端与监控端通信,又引入了两个线程,分别完成等待电话、客户端与监控端的SOCKET通信完成命令传输功能。整个线程结构与通信方式如图2所示。


    采用了pipe管道进行线程间通信,且设置为阻塞模式,整个流程即Capture线程得到数据,将地址送给Video线程,Video线程经过H.264视频压缩把DI分辨率的地址送给Writer,而CIF分辨率根据发送标记来确定是否发送,Writer线程完成写文件操作后,将buffer指针返回,完成一帧采集、编码、发送、保存等工作,如此反复循环。而其他线程通信则采用全局变量来进行传输标记位,而无需使用FIFO,降低了实现复杂度。
 

3 RTP协议封装及改进
    本文采用RTP协议,提供了端对端传输服务的实时传输协议,用来支持在单播和多播网络服务中传输实时数据,而实际数据的传输则由RTCP控制协议来监视和控制。RTP协议一般要求与RTCP一起使用,来保证数据传输质量。这种结构在本次设计无线环境会遇到两个问题:
    (1)如果增加RTCP,那么增加了复杂度,降低了实时性。
    (2)RTP协议没有加密信息,容易被非授权用户浏览到视频数据。
    针对第一个问题,本文提出一个策略,即在编码端RTP打包时,在每个NAL单元头的前面加上4个字节的帧的长度,解码端只要根据NAL单元的长度,即可判断是否在传输中有错误,如果有将该NAL单元丢弃,此时无需采用RTCP来向监控端反馈信息,从而降低实现复杂度;此时虽然丢弃了一个NAL单元,但是监控端的帧率是20帧/s,根据人眼视觉残留的效应,这基本上不会引起人眼的察觉。这里还要说明,当NAL单元的帧长大于MTU时,为了避免底层驱动将其分包,需要应用层采用分片打包方式,而此时只需在NAL单元的第一个分包增加4个字节的帧长度信息,而无需在每个分包上都加上该字段。这样在手机端无需返回RTCP包等反馈信息,降低了实现复杂度,增强了实时性。
    针对第二个问题,本文提出了一个简单加密方案,具体采用的策略是在关键帧后加上自定义加密信息,本设计为3 b的自定义信息,在解码端只要判断该RTP分包是关键帧,去掉RTP头,然后去掉4个字节帧长度信息,再去掉自定义3 b信息,而其他帧不做任何改变。当解码端收到RTP包时,对于非关键帧虽然能正常解包,但是它并不能独立解码,它必须依赖关键帧,因此关键帧加密后,只要关键帧不解密,其他帧都不能正常播放。这种方法无需在所有帧上都加入加密信息,只在关键帧RTP打包增加了几个bit,就达到了比较好的加密效果,在应用中要注意效率和复杂度的权衡来调整相应方案。

4 无线视频传输的健壮性研究
    由于本文提出的视频监控系统,需要在3G无线网络中传输,这势必会受到各种因素的影响,这种干扰,轻微时不会淹没正常图像,而严重时图像就无法观看,或者由于无法捕捉到关键信息而无法显示图像。下面首先分析这种故障产生的原因:
    (1)视频编码端本身的问题。视频编码端传输线屏蔽性能差造成信号产生较大衰减。此外,编码端也可能受到辐射、设施腐化等不定因素的影响,这也会产生同样的问题。
    (2)无线传输环境的影响。无线信道中存在着Rayleigh衰减和多用户干扰,会在传输位流中产生突发性错误(Burst Error)。但压缩后的码流在无线信道中传输仍然存在一些棘手的问题,一方面,这些压缩后的码流对信道比特误码非常敏感;另一方面,无线信道由于多径反射和衰落引入了大量的随机误码和突发误码,结果在解码端将失去与编码端的同步,同时预测编码技术会将错误扩散到整个视频序列中,降低了重建图像的质量。因此,为了实现良好质量的视频传输,必须结合无线信道的传输特性,采取一定的容错措施。
    基于以上方面的考虑,以及断续无法重连的问题,本文提出一种方案,并在实践中得到良好的验证,有效地解决了以上问题:即在编码端得到编码序列后周期性地发送两个参数集,即序列参数集和图像参数集,由于它们包含了解码需要的大部分关键信息,包括图像大小、量化参数、NAL单元类型等,因此即使在解码端第一次无法与编码端同步,也可以在后续过程中通过上述两个参数集重新同步。未插入参数集之前、插入参数集之后的示意图如图3,图4所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top