收稿日期: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卷
今天CloudCone发布了最新的消息,推送了几款特价独立服务器/杜甫产品,美国洛杉矶MC机房,分配100Mbps带宽不限流量,可以选择G口限制流量计划方案,存储分配的比较大,选择HDD硬盘的话2TB起,MC机房到大陆地区线路还不错,有需要美国特价独立服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2...
青云互联怎么样?青云互联美国洛杉矶cn2GIA云服务器低至19元/月起;香港安畅cn2云服务器低至19元/月起;日本cn2云主机低至35元/月起!青云互联是一家成立于2020年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务。青云互联本站之前已经更新过很多相关文章介绍了,青云互联的机房有香港和洛杉矶,都有CN2 GIA线路、洛杉矶带高防,商家承诺试用7天,打死全额退款点击进入:青云互联...
ucloud:全球大促活动降价了!这次云服务器全网最低价,也算是让利用户了,UCloud商家调低了之前的促销活动价格,并且新增了1核1G内存配置快杰型云服务器,价格是47元/年(也可选2元首月),这是全网同配置最便宜的云服务器了!UCloud全球大促活动促销机型有快杰型云服务器和通用型云服务器,促销机房国内海外都有,覆盖全球20个城市,具体有北京、上海、广州、香港、 台北、日本东京、越南胡志明市、...
北京网通为你推荐
phpweb破解painter破解版中文版thinksnsthinksns 好用吗?靠谱吗wordpress模板wordpress后台默认模板管理在哪里?新iphone也将禁售苹果手机现在在中国是不是不能卖了申请支付宝账户我要申请支付宝账户filezilla_serverFileZilla无法连接服务器怎么解决解析cuteftp开心001开心001与开心网怎么不一样,哪个是真的?可信网站可信网站认证怎么做?贵不?价格大概是多少?什么是通配符dir是什么
过期域名 提供香港vps n点虚拟主机管理系统 域名解析服务器 t楼 linode 128m内存 godaddy优惠码 360抢票助手 服务器架设 宁波服务器 电信网络测速器 主机返佣 金主 国内空间 免 asp介绍 winserver2008下载 以下 次时代主机 更多