换向阀厂家
免费服务热线

Free service

hotline

010-00000000
换向阀厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

一种基于NS的网络视频QoS分析方法

发布时间:2020-07-21 17:58:31 阅读: 来源:换向阀厂家

随着网络和多媒体技术的飞速发展,网络中的多媒体应用层出不穷,如视频会议、视频点播(VOD)、远程教育等多媒体业务。由于活动图像的数据量很大,在具体应用中,网络拓扑、网络带宽、路由技术以及传输数据包的实际分割方案等因素都会对网络传输性能造成影响,最终影响视频业务的服务质量。因此必须对网络中视频传输的QoS保障问题展开研究。

本文引用地址:在网络QoS保障问题的研究过程中,由于网络复杂性和经济条件的制约,网络仿真技术就扮演着非常重要的角色。网络仿真技术是一种通过建立网络设备和网络链路的统计模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术。本文在分析EvalVid工具集的基础上,将基于NS-2网络仿真软件提出一种网络中视频QoS分析方法。

1 网络视频的QoS研究技术概述

在仿真环境下,研究者通常会使用不同的尺度衡量其提出的传输策略对视频质量的影响,这些尺度包括分组丢失率、分组延时、帧丢失率和可解码帧率等。而这些尺度很多都是衡量网络性能的,不能完全反映视频的质量。在视频质量的评价方法中主要有主观质量评价和客观质量评价2种方法。主观质量评价是相对较为准确的图像质量评价方法,因为主观质量评价直接反映人眼的感觉。常用的指标是基于5级质量制或5级损伤制的平均意见分(MOS分)。视频图像质量的客观评价通过某些数学准则来衡量,常用的有峰一峰信噪比(PSNR)。它的定义如下:

其中,M和N是视频帧的宽度和高度的维数;x(i,j)和x′(i,j)是原始像素和重构像素在(i,j)点的亮度或色度值。虽然网络中视频QoS的研究技术层出不穷,但是研究者一直没能给出一种统一的体系结构用来对视频的质量从主观和客观上进行评价。为此Jirka Klaue在文献[4]中给出了统一评价视频传输质量的框架和工具集——EvalVid。EvalVid具有模块化的结构,可以使用在所用的视频编码策略下,网络之间的交互作用通过trace文件实现,很容易在任何实验的环境下使用。Chih-Heng Ke等在文献[4]中将Evalvid和NS2结合,给出一个视频流质量评估的新工具集Enhanced EvalVid。NS2和EvalVid的结合通过对NS代理的扩展实现的,设计出3个代理,即MyTrafficTrace,MyUDP和MyUDPSink,通过这3个代理就可以将真实的视频流放到仿真的环境中运行。在文献[4]中Chih-Heng Ke等只考虑由于网络的拥塞等原因造成的丢包对视频质量的影响,而没有考虑网络的延时对视频质量,尤其是对实时视频传输质量的影响。为此本文提出一种基于NS的网络视频QoS分析方法,既考虑丢包,又考虑延时对视频质量的影响,实现对EnhancedEvalVid的补充。

2 基于NS的网络视频QoS分析方法

2.1 系统的基本构架

本文提出的仿真系统结构如图1所示。编码器将YUV格式的视频源,按照配置文件的要求进行编码,产生视频压缩文件。再根据视频流的情况,产生网络流量的trace文件,并将trace文件通过网络模拟器。经过模拟产生trace结果,分析后得到延时记录和分组丢失记录。最后,利用这些记录产生有损伤的视频压缩文件,解码后可以进行质量的评价。

2.2 分析的步骤

由于在视频传输的仿真中,需要将真实的视频流在仿真的网络环境中传输,因此必须对NS-2进行扩展与修改,添加视频传输仿真过程中所需的网络元素,包括代理的设计。本文利用文献[4]中作者设计的3个代理MyTrafficTrace,MyUDP和MyUDPSink。MyTraffic-Trace代理按照发送trace文件,在适当的时间发送分组给低层UDP,发送时间是根据视频帧发送率在trace文件中设定的。MyUDP是UDP代理的延伸,它记录每个传输分组的时间戳,分组id和分组大小。MyUDPSink是接收代理,接收MyUDP发送的视频分组,这个代理在指定的文件中记录每个接收分组的时间戳、分组id和分组大小。另外,如果研究者需要验证其提出的传输策略,就要使用C++和OTcl对网络元素编程,并将其提出的策略加到网络元素中去,然后重新编译NS。在完成了对NS-2的扩展以后,就可以利用NS进行仿真。

2.2.1 产生仿真用的trace文件

由于视频编码软件不能直接产生用来仿真的trace文件。因此需要将视频编码器产生的视频压缩文件转换成trace文件,trace文件的格式是<分组传送时间,分组标识,分组类型,分组大小>。转换的基本原理就是读取视频文件中的时间戳和分组的大小,并将这些信息存储到trace文件中。例如数据<0.066 667,id8,udp,407>,就是图像测试序列mother_v经编码后,产生的trace文件中的一组数据,表示在0.066 667 s发送大小为407 B、分组标识为id8的分组。

2.2.2 仿真配置

(1)根据实际网络的要求,定义网络节点,配置网络拓朴结构,确定链路的基本特性,如延迟、带宽等。

(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立,将视频流和各种背景流绑定到代理中。配置业务量模型的参数,确定网络上的业务量分布。

(3)设置Trace对象。Trace对象把仿真过程中发生的特定类型事件记录在trace文件中。NS-2通过trace文件保存整个仿真过程。仿真完成后,可以对trace文件进行分析研究。

(4)编写其他的辅助过程,设定仿真结束时间,至此OTcl脚本编写完成,再用NS-2解释执行已编写的OTcl脚本,进行仿真。

2.2.3 对传输后视频文件的恢复与解码

网络仿真器能为每个传输的分组产生相应的记录,仿真后产生trace文件,记录模拟过程的所有trace数据。通过MyUDPSink代理生成目标trace文件,它的格式是<分组到达时间,分组标识,分组类型,分组大小>。例如,数据<0.275093,id 8,udp,407>,就表示在上例中0.066 667 s发送的大小为407 B的分组id8在时刻0.275 093 s被接收到,若在目标trace文件中没有对应的分组数据说明该分组丢失。以下两组数据:<0.510840,idl3,udp,102>,<0.608045,id 14,udp,306>是分别对应于连续两帧图像的分组,由于两分组之间延时0.097 205 s超过了设定的帧间最大间隔,故在实时视频传输中分组14由于延时超过限制,将不能用来解码。

可见根据目标trace文件就可以判断压缩视频分组中哪些分组要在传输过程中丢失,哪些分组因为延时超过了一定的限制而不能用来解码。基于这样的方法,可以从压缩视频文件中将传输丢失的分组和延时超过限制的分组丢弃,从而产生新的传输以后的视频压缩文件。解码器对该文件进行解码便得到重建视频,从而进行质量的评估。

3 实例分析

图2所示是本文进行实例分析的视频传输系统的结构示意图,摄像机产生视频文件,通过节点S1适时传输到节点D1,中间通过节点R1和R2;节点S1带有1个CBR流量发生器,也通过中间节点R1和R2,向节点D2发送,作为影响视频传输的背景流。链路的带宽如图中标注所示。本实例仿真主要想说明CBR的背景流对视频传输质量的影响,从而论证本分析方案的可行性。

本例使用250帧的图像测试序列mother_v,利用JVT给出的参考模型JM1.7 H.264编码器进行编码,产生mother_daughter.264压缩视频文件,编写程序读取压缩视频文件,产生名为mother_c的trace文件。按照图2配置网络拓扑结构,确定链路的基本特性。将视频trace文件注入NS-2部分代码如下:

仿真过程NAM动态显示截图如图3所示,在R1(图3中的2号节点)处产生了大量丢包。

以下是该仿真实例产生的输出trace文件的部分内容:

对于其格式的含义,从第1列到第12列分别解释如下:第1列表示特定的跟踪对象实现的跟踪类型,有+(进队列)、-(出队列)、r(接收)、d(丢弃)4种;第2列表示事件发生的时间(单位:秒);第3列、第4列分别表示跟踪的源和目的节点号(对应于图3中的结点);第5列表示包类型名字;第6列表示包大小;第7列是一个标志字符串,本例没有使用;第8列是lpv6定义的流标识符;第9,10列表示包的源和目的节点地址;第11列表示流内的顺序号;第12列表示一次仿真中每个新生成包的惟一标识号。以上数据组记录了大小为407 B(435中包含28 B的分组头)分组传输的整个过程,再通过MyUDPSink代理生成目标trace记录<0.275093,id 8,udp,407>。

利用mother_daughter。264文件和目标trace文件,编写分析程序,从mother_daughter.264中将由于丢包和超时所丢失的分组去掉,得到新的视频压缩文件,解码后可以从主观和客观上去评价视频质量。

图4中的PSNR2和PSNR1分别展示了CBR有无背景流存在的2种条件下视频序列的PSNR的对比情况,说明CBR流的存在使视频质量恶化。图5从主观的角度,对比了两种情况下的视频质量,通过这一简单实验可以证明,本文所提出的方案是完全可行的。

4 结 语

本文选取NS-2网络模拟器作为仿真环境,设计和实现一个视频Qos分析的试验平台,对全部实现过程分析后,通过实例证明了提出的方案完全可行。对于网络视频QoS的研究者,可以应用文中给出的实验平台,分析和验证其提出的视频传输策略的有效性。

Git 基础知识

17 Ruby 的范围

算法简介

01 Shell 简介