收稿日期:2006205216基金项目:国家自然科学基金资助项目(06273078);河北省科技厅博士基金资助项目(5547013023)·作者简介:张岩峰(1982-),男,辽宁辽阳人,东北大学博士研究生;王翠荣(1964-),女,河北唐山人,东北大学教授;高远(1937-),男,山西大同人,东北大学教授,博士生导师·第29卷第5期2008年5月东北大学学报(自然科学版)JournalofNortheasternUniversity(NaturalScience)Vol129,No.
5May2008一种基于时间驱动实时视频流缓冲区的设计与实现张岩峰,王翠荣,赵煜辉,高远(东北大学信息科学与工程学院,辽宁沈阳110004)摘要:合理的缓冲区设计对保证实时视频压缩数据的正确解压缩及高品质播放起着关键作用·根据视频压缩数据的连续性和当前Internet网络力所能及的服务等特点,提出了一种基于时间驱动的缓冲区设计方案,并设计了一种可控制的模拟网络丢包乱序的测试方法,对比无缓冲情况和不同缓冲大小的情况来评估此缓冲区性能·测试结果表明,缓冲区可以平滑视频显示,能够较好地解决恶劣网络环境下的丢包、乱序等问题,并已经应用到某大型网通视频直播系统中·关键词:时间驱动;实时视频流;二级缓冲环;视频质量;时间戳中图分类号:TN919.
8文献标识码:A文章编号:100523026(2008)0520661204DesignandImplementationofaTime2Driver2BasedBufferforReal2TimeVideoStreamZHANGYan2feng,WANGCui2rong,ZHAOYu2hui,GAOYuan(SchoolofInformationScience&Engineering,NortheasternUniversity,Shenyang110004,China.
Correspondent:ZHANGYan2feng,E2mail:threewells14@gmail.
com)Abstract:Reasonablebufferdesignplaysakeyroleinvideostream'sdecodingandrenderingatthereceiverside.
Accordingtothecontinuityofpackedvideodataandbest2effortcharacterofInternet,atime2driver2basedbufferisproposed.
Andatestmethodisalsointroducedtocontrolthepacketdrop2outanddisorder.
Theperformanceevaluationofthebufferisdonebycontrastwithnobufferandbuffersofdifferentsize.
Theresultindicatedthatthisbufferperformedwellinsmoothingvideodisplayandcouldresolvepacketdrop2outanddisorderproblem.
Theproposeddesignhaswidelybeenappliedtoacertainlarge2scaleclientsystemreceivingreal2timevideostream.
Keywords:timedriving;real2timevideostream;two2levelbuffer;qualityofvideo;timestamp随着国际互联网技术和多媒体技术的发展,网络视频流媒体成为近年来研究的重点·视频会议系统,网络直播互动平台,网络电视等的研究与开发引起了众多软件企业和研究单位的极大兴趣·特别是视频媒体的实时传输,以其实时性和良好的交互性成为最近研究的热点技术·为了保证传输的实时性,视频流媒体的实时传输都采用点对点尽力传送的传输层协议UDP,而放弃了有差错检验和错误重传机制的TCP协议·虽然在应用层可以采用RTP/RTCP协议对QoS提供一定的保证[1],但在传输层上的包丢失和乱序的情况仍然无法避免,所以应用程序必须采用必要的策略对丢包和乱序数据进行处理·如果对乱序数据不加以处理而直接交给下游的解码器处理,解码后图像将产生严重失真·为解决这个问题,一般的方法是在数据递交给解码器之前缓冲一定数量的数据包,即添加缓冲区·缓冲区负责对数据包重新排序,制定丢包策略、平滑播放、计算丢包率反馈给RTP服务器等[2]·本文提出一种基于时间驱动的实时视频流缓冲区的设计方案,缓冲区除了完成排序组帧、制定丢包策略等功能外,由时间精确控制视频的解码和播放,实现视频的平滑播放·1缓冲区的设计1.
1缓冲区的整体结构缓冲区采用二级缓冲策略,一级缓冲为数据暂存缓冲,二级缓冲为数据信息缓冲·并启动数据接收线程和时间驱动线程两个线程·首先由数据接收线程接收数据包,并保存在一级数据暂存缓冲中,读取其帧序号及帧内包序号来确定此数据包在二级缓冲环中的位置,完成二级缓冲队列的排序·二级缓冲环以组合完整的帧为单位,不是以数据包为单位,在出队列时检测此帧是否完整,然后把整帧数据交给解码器处理·设计一个出队列指针,由时间线程来驱动出队列指针,精确控制音视频数据向下传递,使视频可以平滑地显示,有效避免了视频延时抖动情况的发生·如图1(一级缓冲提交给二级缓冲的数据包括:DataLen数据包长度,FrameSeq帧序号,PackSeq帧内包序号,TotalPack帧内包总数,FrameType帧类型,DataAddress数据包有效载荷在一级缓冲中的地址)·图1缓冲区整体结构Fig.
1Overallstructureofthebuffer1.
2数据包结构媒体发送端把采集编码出来的帧数据分割成较小的固定长度的数据包发送·如果在媒体发送端直接以帧为单位打包发送,则有些帧的数据量较大会产生大数据包,在网络上很容易丢包,而且对于一些路由器不支持大数据包的传输,会过滤掉较大数据包或产生分片·在接收缓冲区组包要配合媒体发送端打入包头的信息,本文参考RTP数据包头结构[2-3],在应用层设计了图2所示的数据包结构·图2数据包结构Fig.
2Datapacketstructure1.
3数据接收线程的工作流程假设缓冲区缓存K帧数据,通过环回时间和实时要求综合确定K的最优值[4]·首先为一级缓冲分配足够容纳K帧数据的一块内存作为数据暂存·接收到的数据包放入一级缓冲中,当缓冲即将溢出时从缓冲起始的内存地址接收·应用程序分析数据包,把包头中用来排序组帧的信息和一级缓冲暂存此数据包有效载荷的内存地址提取出来交给二级缓冲·二级缓冲环长度为K,对应缓存的K个帧的信息·用一个长度为K的数组(Frame[0],Frame[1],…,Frame[K-1])来模拟缓冲环,index是数组索引,对应缓冲环的出队列指针·帧信息包括接收到的数据长度、帧序号、帧内包总数、帧类型和记录帧内各个分包在一级缓冲中内存地址的数组·根据一级缓冲提交上来帧信息的帧序号,计算此帧对应于二级缓冲环的位置,然后根据帧内包序号计算此数据包对应的地址数组的索引,并递增此帧接收到的数据长度·由于媒体数据量大,接收端会频繁接收到数据包,如果拷贝数据必将消耗大量CPU资源,而通过传递内存地址,减少了一次拷贝内存的开销,以节省CPU资源[5]·1.
4时间驱动线程的工作流程传统缓冲区设计为FIFO队列,利用满则溢的原理,当接收数据包插入缓冲队列的尾部结点,又接收到其后数据包需要加入缓冲队列时,位于队列头部结点的帧数据将向下传递·这种方案的驱动力是网络接收的数据包,假设应该到的数据包由于网络原因比较集中地到达或比较分散地到达,表现到视频呈现上就是快动作或慢动作,影响266东北大学学报(自然科学版)第29卷视频播放效果·选择时间作为出队列指针移动的驱动力,可以精确地驱动帧数据向下游解码器传递,提供连续流畅的视频呈现·通过线程循环调用时间阻塞函数Wait()来实现这个功能·如图3所示,Td(i)表示传递第i帧的时刻,即时间阻塞函数Wait()被激活的时刻,根据第i帧和第i+1帧的时间戳可以计算出传递第i+1帧的时刻:图3时间线程流程图Fig.
3FlowchartoftimethreadTd(i+1)=Td(i)+Frame[i+1].
TStamp-Frame[i].
TStamp·(1)Waste(i)表示传递第i帧所耗费的时间,可以通过记录系统时间来得出,这样程序运行到时间阻塞函数Wait()的时刻为Td(i)+Waste(i),时间阻塞函数Wait()所等待的时间Δt也可以计算出:Δt=Td(i+1)-Td(i)-Waste(i)·(2)而对于丢包等特殊情况,无法取得Frame[i+1].
TStamp·这时,采用上一次计算出的Δt来代替·这种根据时间戳动态确定Δt的方法,会灵活地根据发送端发送帧速率的动态改变而变化,这样就通过时间精确控制了视频流的播放·1.
5二级缓冲环的丢包策略在一个视频序列GOP中,假设某帧Frame[i]不正确,这时如果对此帧解码,就会错误解码·如果Frame[i]为参考帧,解码器在解码Frame[i+1]的时候就会以Frame[i-1]作为参考帧解码,显然这种错误解码会导致图像质量下降,还会导致误码扩散,即后续帧都会错误解码,严重影响视频效果·所以在缓冲区要根据帧类型制定合理的丢包策略·当时间事件被触发,而出队列指针指向的帧Frame[i]尚不完整,有部分数据包还未到达,应用程序就放弃将此帧向下游解码器传递·然后判断Frame[i]的帧类型:如果Frame[i]是非参考帧,就简单将此帧丢弃,而不影响后续帧接收传递;如果为参考帧,则放弃向解码器传递缓冲环中后续帧{Frame[i+1],…,Frame[MaxIndex],Frame[0],…}以及后接收到的帧,直到检测到下一个关键帧为止,也即是丢失该视频序列的后续帧·一般来说,I帧(关键帧)和P帧(向前预测帧)作为参考帧,而B帧(双向预测帧)作为非参考帧(H.
264标准中有时会将B帧也作为参考帧[6-8])·而传统的丢包策略不区分参考帧与非参考帧,这样会增加一些不必要的丢帧·下面是丢包控制算法:1)等待时间驱动事件;2)从二级缓冲队列中读取队列头指向的帧信息;3)检查此帧数据·如果完整,进入第4)步;否则进入第6)步;4)检查此帧类型·如果是关键帧,设置传递标志为真;否则进入第5)步;5)检查传递标志·如果为真,将此帧数据向下游解码器传递;否则进入第7)步;6)检查此帧类型·如果为参考帧,设置传递标志为假;否则进入第7)步;7)移动出队列指针·返回第1)步·2实验方法与测试结果采取在发送端主动丢包和主动乱序来模拟网络上的复杂情况·具体方法是以时间为种子取伪随机数R,指定一个丢包或乱序概率p·当R除以100的余数北京网通网上直播系统等实时视频流接收客户端的设计中,取得较好的效果·参考文献:[1]IainE,RichardsonG.
Videocodedesign[M].
NewYork:Wiley,2002:27-46.
[2]SchulzrinneH,CasnerS,FrederickR,etal.
RFC3550,RTP[S].
NewYork:ColumbiaUniversity,2003.
[3]SchulzrinneH,CasnerS.
RFC3551,RTPprofileforaudioandvideoconferenceswithminimalcontrol[S].
NewYork:ColumbiaUniversity,2003.
[4]LiuJ,NiuZS.
Anadaptivereceiverbufferadjustalgorithmforvoice&videoonIPapplications[C]∥2005Asia2PacificConferenceonCommunications.
Perth:IEEE,2005:669-673.
[5]ZhouYY,ChenZF,LiK.
Second2levelbuffercachemanagement[J].
IEEETransactionsonParallelandDistributedSystems,2004,15(6):505-519.
[6]毕厚杰·新一代视频压缩编码标准H·264/AVC[M]·北京:人民邮电出版社,2006·(BiHou2jie.
Newvideocodestandard-H.
264/AVC[M].
Beijing:Posts&TelecomPress,2006.
)[7]WiegandT,SullivanGJ,BjntegaardG,etal.
OverviewoftheH.
264/AVCvideocodingstandard[J].
IEEETransCircuitsSyst,2003,13(7):560-576.
[8]WengerS.
H.
264/AVCOverIP[J].
IEEETransCircuitsSyst,2003,13(7):645-656.
[9]黄智荣·模拟数据包传输乱序的方法及装置:中国,1842054[P]·2006-10-04·(HuangZhi2rong.
Amethodofsimulatingdisordertransferringpackets:China,1842054[P].
2006-10-04.
)466东北大学学报(自然科学版)第29卷
GigsGigsCloud是一家成立于2015年老牌国外主机商,提供VPS主机和独立服务器租用,数据中心包括美国洛杉矶、中国香港、新加坡、马来西亚和日本等。商家VPS主机基于KVM架构,绝大部分系列产品中国访问速度不错,比如洛杉矶机房有CN2 GIA、AS9929及高防线路等。目前Los Angeles - SimpleCloud with Premium China DDOS Protectio...
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
diyvm怎么样?diyvm是一家国内成立时间比较久的主机商家了,大约在6年前站长曾经用过他家的美国机房的套餐,非常稳定,适合做站,目前商家正在针对香港沙田机房的VPS进行促销,给的是五折优惠,续费同价,香港沙田机房走的是CN2直连的线路,到大陆地区的速度非常好,DiyVM商家采用小带宽不限流量的形式,带宽2Mbps起步,做站完全够用,有需要的朋友可以入手。diyvm优惠码:五折优惠码:OFF50...
北京网通为你推荐
wordpress模板wordpress模板与主题的区别dell服务器bios设置dell怎样进入bios设置界面flashfxp下载怎样用FlashFXP从服务器下载到电脑上?的是cuteftp滴滴估值500亿开滴滴怎么才能月入一万,平均一天400纯收入,求指点三友网三友有机硅是不是国企,待遇如何?现在花钱去是不是值得?闪拍网关于闪拍网骗人的情况?可信网站可信网站认证怎么做?贵不?价格大概是多少?oa办公软件价格一套OA办公系统多少钱温州都市报招聘在温州哪里好找工作?
北京服务器租用 怎么测试下载速度 cn3 河南移动网 多线空间 东莞idc 免费的asp空间 七牛云存储 杭州电信宽带 hostease 深圳主机托管 网站防护 七十九刀 贵州电信 cx域名 asp简介 vi命令 电脑主机 电脑主机声音大 视频监控服务器 更多