论文部分内容阅读
随着无线网络通信技术和智能手机的快速发展,如何又快又好地在3G网络上传输视频数据已经成为了手机应用开发的一个核心部分。但是由于无线信道存在高误码率,高丢包率,带宽不稳定等特点,在3G网络上传输不可避免的要面临高丢包的问题,如果使用TCP协议确保数据的可靠传输,又会带来较大的传输延时。本文针对视频传输的特点,从视频传输协议和视频解码错误掩盖技术这两个方面展开研究,其具有很高的理论意义和应用价值。本文针对3G网络中视频传输的特点,提出了一种基于改进UDT协议的实时视频传输方法。UDT协议是一种基于UDP的可靠传输协议,使用其进行视频传输会造成较大的延时,为了解决这个问题,本文对UDT协议数据发送和数据重发的策略进行了改进。改进的UDT协议引入了数据包生存阈值,对于超过生存阈值的数据包不再进行发送或者重发。而如果I帧丢失,属于该I帧的一个GOP数据都无法解码,本文根据视频编解码的这个特点,判断发送端是否对I帧数据进行了丢弃,如果I帧数据包遭到丢弃,则接下来属于该I帧的一个GOP序列的数据都不进行发送,直到下一个I帧到来才进行数据发送。改进的UDT协议可以有效地控制视频传输的延时,在网络状况良好的情况下,可以尽可能地对丢失的数据包进行重传,I帧数据包丢弃后对后续的数据不进行发送,节省数据发送的开销。结合ffmepg解码库的错误掩盖算法存在的缺陷,本文提出了一种ffmpeg库下改进的P帧错误掩盖算法。ffmpeg解码库使用BMA错误掩盖算法对受损宏块进行恢复,虽然BMA算法对运动不是很剧烈、场景变换不明显的图像序列具有比较好的错误恢复效果,但是在运动剧烈或者场景变换的情况下,使用BMA算法进行错误恢复就会出现图像错位的情况,为了解决这个问题,本文提出了一种改进的ffmpeg错误掩盖算法,该算法利用P帧的帧内宏块数量和受损宏块周围宏块的运动矢量大小来判断该帧或者该宏块是否运动激烈或者出现场景变换,在运动激烈或者出现场景变换的情况下,使用空域错误掩盖算法进行错误掩盖,否则使用BMA错误掩盖算法进行恢复。实验表明,在图像运动激烈或者出现场景变换的情况下使用本文算法进行错误掩盖,其恢复的效果要好于BMA算法恢复的效果,在运动不明显或者没有场景变换的情况下,两者的恢复效果相似。本文通过对上述两个方向的研究,使得在3G网络上的手机视频实时通信更加符合3G网络传输的特点,并且视频解码显示的质量也更加优秀。