




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AVIS:自适应VIdeo仿真摘要自适应就是在处理和分析过程中,根据处理数据的数据特征自动调整处理方法、处理顺序、处理参数、边界条件或约束条件,使其与所处理数据的统计分布特征、结构特征相适应,以取得最佳的处理效果的过程。与之相对应的自适应流媒体是一种通过HTTP进行视频流传输的技术,其中多个版本的源视频在视频服务器上以不同的比特率进行预编码。自适应流媒体利用底层TCP传输层来估计流的可用容量,并根据估计的容量选择最合适的视频比特率。自适应视频流具有与传统视频不同的独特属性:(a)自适应视频以多比特率版本编码;(b)基于测量的吞吐量不断调整其比特率。自适应视频流的这些特性将它们置于弹性和非弹性流量类型之间的某处。因此,自适应视频流的调度框架应该考虑到这些特性,同时在这些流中分配资源。AVIS,一种有效解决上述挑战的资源管理框架。关键词自适应 视频 比特率 AVIS引言如今用的最多的是基于HTTP的自适应视频流技术,该技术能够动态调整视频比特率以适应不断变化的网络条件。然而,当多个自适应视频流在共享有线链路上竞争带宽时,最近的测量研究发现了公平性,稳定性和资源利用率方面的问题。通过实验和模拟,发现这种不良行为也在蜂窝网络中体现出来。视频流量对可用带宽和遇到的延迟有特殊要求。因此,视频流对于信道条件变化是非常有效的。评估视频流媒体性能的工具的发展一直研究界的焦点。这些工具很重要,因为网络级性能指标,如:包丢失率、可用带宽和延迟抖动。可能无法提供应用性能的准确度量标准,如:可解码帧的百分比、可解码帧的质量、质量MOS(Mean Opinion Scores)和PSNR(峰值信噪比)。为了克服这些问题,设计了一个网内资源管理框架AVIS,用于在蜂窝网络上调度基于HTTP的自适应视频流。 AVIS通过自适应视频流有效地管理蜂窝基站的资源。AVIS还为移动运营商提供了一个框架,以实现最佳资源分配和用户体验质量之间的理想平衡。 AVIS有三个关键的区别特征:(1)它为每个用户最优地计算比特率分配;(2)它包括一个调度器和流量整形器,以增强每个流的比特率稳定性;(3)它利用资源虚拟化技术将自适应视频流的资源管理与常规视频流分开。相关工作虽然AVIS专注于基于SVC的自适应视频流的模拟,但值得指出AVIS与其他仿真和实验性视频性能评估框架(如EVALVID,SVEF和myEVALSVC)共享重要步骤。这些步骤包括:1. 根据目标编码方案压缩视频所需的视频编码。2. 视频分组传输可以在SVEF中的实验测试平台上执行,也可以使用EVALVID和myEVALSVC中的模拟器。3. 解码接收到的数据包以获得接收到的视频并生成应用级性能指标,如PSNR和MOS。这些步骤的实现可以在下图中体现图1 AVIS流程1Ns2仿真平台:NS2是指Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。从本质上来讲NS2(Network Simulator,version 2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有网络传输协议,比如TCP和UDP,业务源流量产生器,比如FTP,Telnet,Web CBR和VBR;路由队列管理机制,比如Droptail,RED和CBQ;路由算法,比如AODV、DSDV、DSR等无线路由协议。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。NS2使用C+和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C+编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C+写出并编译的,这些对象通过映射对Otcl解释器可见。当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。2AVIS设置1. 下载ns2源码包,并把它解压。2. 转到通用目录ns-2.33 / common。3. 通过添加一些AVIS的有关声明和方法编辑ns-2.33 / common目录下的packet.h,agent.h,Agent.h,agent.cc文件。4. 下载AVIS包,并将其直接解压缩到ns-2.33目录中。5. 通过在文件末尾添加相关代码来编辑tcl / lib / ns-default.tcl。6. 通过将AVIS相关代码添加到OBJ_CC列表来编辑NS2 Makefile.in。$ ./configure$ clear$ make7. 改好之后,重新编译ns2并将新的二进制文件安装到系统目录3AVIS仿真下图突出显示了使用AVIS的基于SVC的视频流的核心。我们的入口点是A,编码视频用于生成执行自适应视频模拟所需的跟踪和信息文件。我们的出口点是B,AVIS接收器生成的轨迹用于生成可解码的视频文件。下面,我们将重点介绍使用JSVM进行编码的预处理和后处理阶段所使用的主要步骤以及用于解码视频的openSVC解码器。我们的重点是解释在AVIS中实现自适应流媒体算法的步骤。图2 AVIS结构3.1 视频编码编码是使用JSVM中唯一的免费可用编码器执行的。为了完成这一步,我们需要:1. 有一个JSVM编码器。2. 准备要编码的原始YUV视频,在这次试验中我们用的是paris_cif.yuv和paris_qcif.yuv。3. 写下一组配置文件来定义编码参数。4. 运行编码器以获取压缩的h.264视频。$ H264AVCEncoderLibTestStatic -pf main.cfg encoder_op.txt将所有文件放入一个文件夹并运行以下命令:得到encoder_op.txt文件。3.2模拟预处理此阶段的目标是准备模拟器所需的文件,包括:1. 连续编码层信息的文件,例如层编号,可伸缩性参数和平均比特率。2. 跟踪文件,包括(发送时间,数据包大小,LId,Tid,Qid和帧号)$BitStreamExtractorStatic-pt bitstreamExt_NALU.txtencodedVideo.264bitStreamExt_layerInfo.txt步骤1:通过运行以下命令,使用JSVM BitStreamExtractor生成原始NALU跟踪文件(originaltrace.txt)和图层信息文件:得到bitStreamExt_layerInfo.txt和bitstreamExt_NALU.txt文件。$ awk -f layer.awk bitStreamExt_layerInfo.txt avis_tx_layer_info.txt步骤2:使用我们的准备layerInfo awk scrip来生成layer_info.txt得到avis_tx_layer_info.txt文件。步骤3:准备avis_tx_trace.txt文件。这一步涉及以下几个步骤:1. 解码视频文件以获得关于解码的NALU的信息。2. 使用我们的工具prepareAvisTxTrace生成avis_tx_trace.txt$ gcc prepareAvisTxTrace o PrepareAvisTxTrace $ ./prepareAvisTxTrace decoderoutput.txt bitstreamExt_NALU.txt 最终得到我们想要的avis_tx_trace.txt和avis_NALU.txt文件。3.3 AVIS脚本我们需要创建几个对象来运行仿真,包括AVIS_TX和AVIS_RX及其相关文件,用于输入和输出跟踪目的。l AVIS 对象我们需要定义两个对象:set max_fragmented_size 1480;set packetSizeexpr $ max_fragmented_size+20; 20:IP标头长度set src_udp1 新代理/ AVIS_UDP ;$ src_udp1 set_filename avis_Tx_pkts.txt;文件记录发送的数据包ID$ src_udp1 set packetSize_ $ packetSize;$ ns attach-agent $ n1 $ src_udp1;(1) UDP对象:(2)AVIS-Tx对象:set avis_tx1newApplication/Traffic/AVIS_Tx; 创建AVIS TX$ avis_tx1 attach-agent $ src_udp1; 附加到UDP代理 $ avis_tx1 tracefile avis_tx_trace.txt; #define跟踪文件$avis_tx1 layerfile avis_tx_layer_info.txt;#define图层信息文件 $ avis_tx1 CGS 0 ; 使用MGS的依赖规则需要两个traffic trace 文件 和 layer info 文件。通过设置变量CGS(0:CGS,1:MGS)来识别编码类型:CGS或MGS。l AVIS TCL接收器对象我们需要定义两个对象:set dst_udp1 new Agent/AVIS_Sink $ ns attach-agent $ n1 $ dst_udp1$ ns connect $ src_udp1 $ dst_udp1$ dst_udp1 set_filename avis_rx_pkts.txt; 用于记录所有已接收的数据包信息(1)AVIS_sink对象(2)AVIS_RX对象:set avis_Rx1 new AVIS_RX$ avis_Rx1 sortedListfile avis_rx_notDeliveredFrames.txt; #用来记录收到的 NALU/ frames info$ avis_Rx1 PDRFile avis_rx_PLR #用来记录丢失的数据包ID和预测的相应帧$ avis_Rx1 缓冲区文件名avis_rx_FramesNotBuffered; 用来记录缓冲的NALU/ frames info $ avis_Rx1 Buffer-filename2 avis_rx_PlayoutFrames; 用来记录播放的NALU/ frames info$ dst_udp1 attach-Rx $ avis_Rx1;$ avis_Rx1 set PlayoutStartTime 6; 启动palyout的缓冲时间的初始值$ avis_Rx1 set algorithm 0; #defaultvalue 0 - -非自适应$ avis_Rx1 TraceFile avis_rx_traces.txt; 主要跟踪文件$ dst_udp1 attach-Rx $ avis_Rx1;$ avis_Rx1 set PlayoutStartTime 6; 启动palyout的缓冲时间的初始值$ avis_Rx1 set algorithm 0; #defaultvalue 0 - -非自适应$ avis_Rx1 TraceFile avis_rx_traces.txt; 主要跟踪文件l 主要的trace文件包括:Simulation time, number of recived frames at this time, number of buffered frames, Requested quality , Transmission quality, Transmission bit-rate corresponding totransmission quality, number of lost packets, PLR(Packet Loss Rate), number of lost frames , FLR(Frame Loss Rate),buffer time and Mode Buffering only / playout / flushing.最后参考上述AVIS对象和AVIS TCL对象的定义方法,写一个脚本,然后将脚本运行起来,得到相应的文件。4最终处理和视频解码由于JSVM解码器在空间可伸缩性情况下的局限性,使用OpenSVC解码器进行解码。为了完成这一步,我们需要有一个OpenSVC解码器。第1步:$ g+ prepareReceivedTrace.cpp -o prepareReceivedTrace$ ./prepareReceivedTrace MGS avis_tx_trace.txt avis_rx_PlayoutFrames.txt avis_tx_layer_info.txt LostFrames.txt Filltered_Frames.txt F_Q.txt记录在trace文件avis_rx_PlayoutFrames中的播放帧由“prepareReceivedTrace.cpp”处理,以删除未填充的依赖关系:这段代码需要很多输入: 编码类型(用于依赖规则):MGS或CGS 图层信息文件(用于依赖关系规则):avis_tx_layer_info.txt 传输的跟踪文件(比较接收帧的大小与传输的大小;如果它们不相同,帧被认为是丢失帧):avis_tx_trace.txt 播放帧跟踪文件:avis_rx_PlayoutFrames.txt输出: 丢失的帧,甚至在传输过程中丢失,迟到(所以,没有使用它),或者由于未填充的依赖性:LostFrames.txt 填充帧信息(播放时间,大小,图层信息):Filltered_Frames.txt 每个框架及其填充后的播出质量:F_Q.txt步骤2:获取h.264格式的填充接收帧$ g+ prepareFillteredTrace.cpp -o prepareFillteredTrace$./prepareFillteredTrace Filltered_Frames.txt avis_NALU.txt Filltered_Frames_trace.txt记录在trace文件Filltered_Frames.txt中的filltered playout frames通过“prepareFillteredTrace.cpp”处理,用来形成BitStreamExtractor的trace文件来得到接收视频的h.264形式:$ BitStreamExtractorStatic paris.264 filteredtrace.264 et filteredtrace.txt$ BitStream_op2.txt $ mplayer -fps 30 filteredtrace.264 -vo yuv4mpeg:file =paris.y4m$ mencoder paris.y4m -ovc raw -v rawvideo -vf format = i420 -o final.yuv第3步:使用OpenSVC解码器$ PSNRStaticd 352 288 paris_cif.yuv final.yuv psnr.txt第4步:使用JSVM工具进行PSNR计算第5步:YUV Player Deluxe工具进行对final.yuv 的播放,将其跟发送端的原yuv进行比较。图4 发送端发的原视频图3 接收端收到的视频从视觉角度一眼就可以看出发送和接受到的视频有差别,就接受到的视频比原来的视频模糊一点,还有下面显示的frames原视频是300,而接收到的就是292个,说明传输过程中有丢包现象。 图5 接收视频图6 发送视频从接受和发送的视频设置栏中明显能看到视频帧率也有明显的变化,发送的是352288,而接收到的却是176144.5结论从实验结果来看发送和接受视频不管在视觉上还是在参数方面是有明显的差距的,这些差距来源可以从TCP协议、A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 书法培训中心管理制度
- 食品安全保健室管理制度
- 仓库药品储存管理制度
- 二次供水设备管理制度
- 企业外包作业管理制度
- 企业补助资金管理制度
- 云南公司绿色管理制度
- 《教师》发表职称论文
- 中小健康教育管理制度
- 企业商标印刷管理制度
- 《安全课件:如何保护个人信息》
- 珍爱生命中学生心理健康主题班会
- 贵阳美食小吃
- 客户档案表格模板
- 中国古典诗文朗诵与吟诵-江苏师范大学中国大学mooc课后章节答案期末考试题库2023年
- 景观道路专项施工方案模板
- 器械科-医疗设备维修应用PDCA循环管理品管圈QCC成果汇报
- 现代物流管理(第三版-钱廷仙)课件5.物流成本分析内容与方法
- 四川省2020年普通高中学业水平考试通用技术试题及答案
- 基于单片机的PWM直流电机调速系统设计
- 浙江省环境监测中心质量手册
评论
0/150
提交评论