本发明属于无线网络流媒体传输领域,涉及5g多接入并发传输控制系统及方法。
背景技术:
面向未来网络社会中巨幅增长的无线连接需求、增强型移动宽带接入服务需求、新兴通信模式的甚高可靠性及服务保证需求,5g定义并将发展出相应的移动通信技术。对于未来的第五代移动通信无线接入网络,现在已经逐渐明晰的是,其将是一个非常灵活的、异构接入系统,并将融入可用于面向具有不同特性及需求的大量应用配置同时无线连接的大量技术演进成果。为了满足对于上述高需求的支撑需求,未来第五代移动通信系统将需要有针对性地接入具有不同特性的无线频谱资源。
全球移动通信行业对未来的第五代移动通信系统展望了很多种的应用/业务形式。其中既包括对于现有一些第四代移动通信系统应用场景的增强,还更多地包括了一些新兴的应用,比如:4k超高清晰度视频、8k超高清晰度视频、vr(virtualreality,虚拟现实)、ar(augmentedreality,增强现实)、移动游戏、iot(物联网)、可穿戴设备应用、紧急任务应用(面向垂直行业与商业领域)。itu-r(国际电信联盟无线电通信局)确定了5g的三大主要应用场景(1)增强型移动宽带;(2)超高可靠与低延迟的通信;(3)大规模机器类通信。
无线业务用户需求的增长也给移动通信无线接入网络的扩容升级带来压力,需通过采取接入更多可用频谱资源的方式或采用先进的频谱共享接入机制来缓解无线网络拥塞。因此,设计一种5g多接入并发传输控制方法,对于实现异构终端间的感知与协同能力、提高系统网络的利用率具有重要的意义。
技术实现要素:
技术问题:本发明针对5g多接入无线网络(包括2g、3g、4g、5g、wifi)环境下的各种终端具有高度异构性,设计了一种5g多接入并发传输控制系统及方法,多个异构无线终端由多种无线网络协同工作,如果网络状况良好,网络控制平台将尽量减少协同终端的个数;如果网络状况比较差,网络控制平台将调用更多的移动终端以多流并发的方式来协同传输视频数据来提高用户体验,也可以把重要的视频信息(通常是边界信息)通过最好的网络传输,其他信息可通过其他网络传输,实现业务多样化和增强用户体验。
技术方案:本发明所设计的5g多接入并发传输控制系统及方法,其实现的系统包括以下组成部分:
(1)网络控制平台:包括网络控制管理服务器、终端管理服务器和业务服务器。网络管理控制服务器根据业务特点、网络状况、终端能力自适应地进行传输控制;终端管理服务器负责终端的注册,并对终端进行监控、管理,把终端的状况汇报给网络管理控制服务器;业务服务器将根据现有网络和终端的传输能力进行业务的适配。
(2)终端控制器:对协同终端进行发现,并上报给终端管理服务器。
(3)协同终端:用于视频服务器到监控中心客户端间的协同远距离传输。
(4)视频适配服务器:实现视频的分流。
(5)视频播放客户端:接受视频服务器的视频数据包,进行缓存、解码等操作并播放。
以上五个组成部分的连接或位置关系如图1所示。
下面分别介绍各个组成部分及具体实现过程:
网络管理控制服务器简介:网络控制平台对当前终端控制器覆盖范围内的各个终端的网络情况进行监测,针对某一业务,如视频业务,可以选择一定数量可用协同终端进行该业务的协同传输,并且在传输过程中,可以根据各终端的网络情况和链路情况来自适应的增加或者减少参与协同传输的终端数目,从而既可以保证业务的传输质量,又可以最大限度的节约系统的资源,通过协调各个终端,还能保证系统在重构过程中的业务连续性,同时如果系统某条链路产生阻塞,可以及时做出决策,采用备用链路来保证系统传输的稳定性和鲁棒性。
网络管理控制服务器界面采用c#语言编写,基于vs2012平台开发。此界面主要用于显示终端控制器的接入信息,协同终端的注册登录退出相关信息,并且动态显示协同终端的网络状态信息、实时速率、网络制式、业务类型、传输状态和连接状态等信息以及服务器的决策信息等,同时还能动态的显示当前系统组成的动态拓扑图。
其目标是在多终端协同传输机制中引入自适应适配技术,以实现对多个协同终端的统一控制,从而使整个传输系统更加智能化,可以满足不同业务的传输需求。
网络管理控制服务器主要功能:1、接收终端控制器发送的协同终端注册、登录、退出消息,进行相应的授权处理等操作,并实时将信息显示在服务器界面上;2对授权后的协同终端进行接入允许操作,并对协同终端的网络状态等相关信息进行监测,并实时更新界面上的数据;3当用户播放客户端发起业务请求时,服务器从当前可用的协同终端中选择一定的终端进行协同传输,并对其实时速率进行监测;4当网络出现波动时,或者协同终端发生重构时,服务器可以动态的改变当前的传输策略,选择合适的协同终端参与协同传输。
网络管理控制服务器实现方案:网络管理控制服务器采用c#语言编写,可运行在windows系统的pc机上。服务器界面采用winform开发,可实时显示接入的协同终端的动态信息以及适配的相关信息。网络管理控制服务器初始化时定义一个套接字用于响应协同终端的连接请求,同时启动一个线程来负责监听用户播放客户端的请求信息。然后建立一个套接字字典用于存放多个用户的连接,当有协同终端发起注册连接请求时,将其ip地址和端口存放在套接字字典中,并且启动新的线程来接收终端发来的实时信息。接收到该终端发来的信息后,服务器获取相应的数据并将终端的信息和实时的数据显示在服务器的界面上,以列表的形式显示。之后每隔一段时间,服务器会收到终端发来的信息,并在列表中实时更新这些数据。当接收到用户播放客户端的业务请求时,网络管理控制服务器从当前列表中选择合适的协同终端参与多流传输,业务开始。当列表中存在多个可用的协调终端时,网络管理控制服务器可以进行自适应的适配,针对当前的业务类型(主要为视频业务)来选择合适的协同终端数量,并考虑其网络条件来综合决策出采用哪些终端来完成该业务的传输。在系统运行过程中,网络管理控制服务器周期性的检查列表中终端的连接状态,当某个终端断开时及时删除其信息。若用户播放客户端断开连接,则网络管理控制服务器恢复到初始状态,循环监听用户的业务请求。
具体实现过程:
(1)程序初始化,加载服务器界面。
(2)创建三个socket套接字并启动三个线程,分别在不同的通信端口监听来自终端控制器、协同终端以及用户播放客户端的消息。
(3)当终端控制器接入时,接收其发来的协同终端注册信息,并对其授权,允许其登录。
(4)创建socket字典,用于保存所有协同终端的socket连接。当授权后的协同终端发来接入请求时,将该socket连接添加到字典中,从其发送的信息中读取网络制式,信号强度,业务类型等相关参数,并在listview列表中添加该协同终端的相关信息。此后,每隔一段时间,服务器从与该协同终端连接的socket中读取实时的网络信息,并在列表中动态更新相关信息。
(5)当接收到用户播放客户端的视频业务请求时,立即从当前登录的可用终端中选择一个(默认选择第一个)参与视频的传输,即向该终端发送开始传输的控制命令,同时更新列表中该协同终端的传输状态以及协同的拓扑图,该协同终端接收到命令后,即开始参与视频传输。
(6)当视频业务开始传输后,服务器会对当前参与协同传输的终端的网络状态和传输速率进行实时监测,即从与其socket连接中读取实时数据,并且在列表中动态更新,这些数据也作为服务器自适应决策的依据。
(7)同时,服务器也一直在等待用户播放客户端的反馈信息,该反馈信息是由播放客户端根据当前缓冲区的占用情况进行相应的判断并做出的决策信息。当服务器接受到的反馈信息为“add”时,表示当前播放客户端的缓冲区低于一定的门限值,可能会出现暂停缓冲现象,所以需要增加传输链路的数目来提高吞吐量,所以此时如果当前已登录的协同终端中存在可用的即传输状态为“未传输”的终端时,服务器会立即向该终端发送开始传输的命令,并更新其列表中的状态,如果当前没有可用终端,则不做任何操作。当服务器接收到的反馈信息为“del”时,表示当前播放客户端的缓冲区高于一定的门限值,可能会出现缓冲溢出现象,所以需要减少传输链路的数目来降低接收的速率,所以此时如果当前参与协同传输的终端即传输状态为“传输中”的终端的数量大于1,则服务器会立即做出决策,选择传输速率最低的协同终端并向该终端发送停止传输的命令,并更新其列表中的状态。如果参与传输的协同终端数量为1,则为了保持业务的连续性,不做任何操作。
(8)当用户播放客户端停止业务服务后,服务器依次向参与协同传输的各个终端发送停止传输的命令,协同终端接收到后停止传输视频业务。服务器更新列表中各终端状态信息和拓扑图。
视频服务器与客户端简介:视频服务器与客户端采用c++编写,基于vs2012开发,提供支持多终端协同传输的视频业务提供及播放功能。视频服务器可以根据各路协同终端的状况自适应地调整各路终端的业务吞吐量。客户端可以将各协同终端的业务进行合并并排序进行播放,还可以根据缓存的视频数据帧数进行自适应地请求调整协同策略。
视频服务器系统框图如图4所示。
视频服务器各模块具体实现与功能如下:
视频源提供模块:
功能:监听网络连接管理模块发出的新视频帧请求,提供原始的视频画面,供给视频编码模块用于编码。
实现:本模块首先接收终端连接调度模块的请求,当收到需要提供新视频帧的消息后,读取下一幅需要编码传输的视频帧,将该视频帧传递给视频编码模块。
视频编码模块:
功能:接收来自视频源提供模块的原始视频帧,进行h.264编码后发往终端连接调度模块准备传输。
实现:本模块采用ffmpeg编码库进行h.264编码,将从视频源提供模块接收的原始视频帧进行编码后发送给终端连接调度模块。
终端连接调度模块:
功能:(1)监听协同终端的接入(2)接收来自视频编码模块的编码帧,并进行分流决策,选择一路合适的终端连接存入对应缓冲区等待发送(3)当帧传输完毕,向视频源提供模块发起新的视频帧请求
实现:(1)新连接监听器(2)分流决策器(3)连接维护与缓存管理器(4)数据传输器
新连接监听器打开一个端口作为业务数据传输端口并监听,当有新的协同终端接入后,将该连接的套接字发给连接维护与缓存管理器进行管理。
分流决策器接收视频编码模块发来的已编码视频帧,并向连接维护与缓存管理器请求各连接的套接字已缓存的数据量,选择缓存量最小的一个连接,将视频帧发给连接维护与缓存管理器,请求其将该帧加入刚选出的连接的缓存区。
连接维护与缓存管理器管理所有的连接及其对应的视频帧缓存区,接受来自分流决策器的查询请求,接受来自新连接监听器的新连接接入,向数据传输器提供欲发送的视频数据。
数据传输器负责将各连接缓存中的数据发送出去,数据传输器定时查询连接维护与缓存管理器的各连接缓存状况,当有连接的缓存不为空时,将该连接的缓存数据通过其对应套接字发送出去。
视频客户端系统框图如图5所示。
视频客户端各模块具体实现与功能如下:
终端连接调度模块:
功能:本模块实现以下功能:(1)监听协同终端的接入;(2)接收各路连接的数据并缓存;(3)排序并拼接接收到的数据包,当获取到完整的一帧后,将视频帧发给帧管理模块。
实现:本模块由以下三部分构成:(1)新连接监听器(2)连接维护与缓存管理器(3)数据传输器。
新连接监听器打开一个端口作为业务数据传输端口并监听,当有新的协同终端接入后,将该连接的套接字发给连接维护与缓存管理器进行管理。
连接维护与缓存管理器管理所有的连接及其对应的视频帧缓存区,接受来自新连接监听器的新连接接入,接收数据传输器提供的已连接的各路协同终端的视频数据并采用一个队列进行缓存,定期检查缓存队列,当检测到一帧视频的全部数据包都接收到后,将该帧提供给帧管理模块。
数据传输器负责处理接收各连接套接字接收的视频数据,并将数据发送给连接维护与缓存管理器进行排序、合并处理。
帧管理模块:
功能:本模块实现以下功能:(1)接收来自终端连接调度模块的完整视频帧(2)将缓存的视频帧按帧时间戳进行排序、当收到视频播放模块的新帧请求时提供新视频帧给视频解码模块(3)根据已缓存的视频帧数量进行吞吐量判决、并向网络管理控制服务器发起调整协同策略请求
实现:本模块由以下三部分构成:(1)帧缓存队列(2)传输控制决策器(3)帧播放管理器。
帧缓存队列接收来自终端连接调度模块的完整视频帧,将帧按时间戳顺序存放在队列中,并接收传输控制决策器和帧播放管理器的帧长度查询请求和新视频帧请求。为防止缓存帧数过多导致队列访问开销过大,为队列设定缓存容量上限=500,当队列长度达到上限时,将不再接收新的视频帧,并阻塞终端连接调度模块使其停止从各连接上接收数据。
帧播放管理器用于接收视频播放模块的新帧请求并向视频解码模块提供视频帧。帧播放管理器设置两个帧缓存队列长度门限a=60,b=90用于判决是否需要等待缓冲。当一帧播放完毕后,视频播放模块会向帧播放管理器请求新帧,这时帧播放管理器向帧缓存队列请求队列长度。当长度小于门限a时,设置状态为缓冲中,这时将会阻塞视频解码模块使视频播放暂停等待缓冲。当长度大于门限b时,设置状态为播放中,这时将向帧缓存队列请求需要播放的下一帧传送给视频解码模块供解码播放。
传输控制决策器定时判断帧缓存队列长度,并设置两个门限a=150,b=300用于传输控制调整判决。当视频帧数低于门限a时,判定为吞吐量不能满足业务需求,向网络管理控制服务器发送调整增加吞吐量请求,然后将传输控制决策器休眠10秒等待自适应调整后再进行下一次的判决。当视频帧数高于门限b时,判定为吞吐量超出需求,向网络管理控制服务器发送调整减少吞吐量请求,然后将传输控制决策器休眠10秒等待自适应调整后再进行下一次的判决。
视频解码模块:
功能:接收来自帧管理模块的编码视频帧,进行h.264解码后发往视频播放模块准备播放。
实现:本模块采用ffmpeg编码库进行h.264解码,将从帧管理模块接收的原始视频帧进行解码后发送给视频播放模块。
视频播放模块:
功能:按照视频帧率定时向帧管理模块请求新视频帧,并接收来自视频解码模块解码后的视频帧进行播放。
实现:本模块按视频帧率(每秒30帧)的频率向帧管理模块发出新帧请求,等待从视频解码模块中解码后的视频帧,视频帧的显示采用opengl图形接口进行渲染。
终端控制器简介:多终端协同机制是指将多个移动终端有组织地联系在一起,并共同完成某一项业务。整个多终端协同机制包括移动终端的发现、注册过程。只有在终端控制器上成功完成注册操作,终端控制器才能实现对移动终端的控制,并协调多个移动终端共同完成业务。
终端控制器主要功能:(1)发现周围的可用移动终端;(2)对移动终端的注册信息进行鉴定,并完成授权功能;(3)协同各移动终端合作实现业务。
移动终端的功能:(1)向终端控制器发送注册信息;(2)检测网络的状况信息;(3)接收终端控制器的授权信息,并向网络管理控制服务器发送检测到的网络状况信息;(4)在终端控制器的控制下协同完成业务。
移动终端是以linux为系统环境的arm开发板,而终端控制器是一个小型基站,拥有相对独立的数据库,用于存放接入的移动终端的设备信息和网络信息。终端控制器和各移动终端建立套接字连接,实现各终端之间的数据交互,协同完成各种业务。
终端控制器需要主动发现周围的移动终端,才能组织这些移动终端协同合作。终端的发现方式其实是很简单的,只要终端控制器周期性地向周围发送广播信息。移动终端一旦进入终端控制器的辐射范围内,就会收到来自终端控制器的广播信息,然后解析广播信息,获得终端控制器的相关信息。移动终端根据解析得到的信息,就与终端控制器建立连接。
终端控制器的广播采用udp协议,而移动终端与终端控制器之间建立的连接采用tcp协议。tcp协议比udp协议更加可靠,这样可以保证信令交互的可靠性。
移动终端和终端控制器建立连接后,移动终端就会主动向终端控制器发送注册信息。注册信息主要包括终端的用户名和密码,这些信息已写入终端设备的程序中,而且每一个移动终端的信息都是不同的。终端控制器接收到注册信息后,会调用数据库中的用户表单进行信息的核对。注册信息准确时,终端控制器会向终端回复确认信息。同时,终端控制器会和网络管理控制服务器建立连接,向其发送终端接入信息。移动终端接收到来自终端控制器的回复信息后,会将3g的信号强度和传输速率等信息上传给网络管理控制服务器,为网络管理控制服务器的业务适配决策提供依据。网络管理控制服务器做出业务适配决策后,就可以通过终端控制器控制移动终端来传输视频业务。
消息内容中login字段用于表示注册信息。嵌入式开发板中的数据库是需要动手移植的,由于开发板的内存有限,所以选择sqlite作为终端控制器的数据库。数据库的移植过程也是比较简单的,这里就不再赘述了。
4g网络的信号强度和视频数据的传输速率都由应用程序在后台运行测得。4g网络的信号强度是通过向usb接口写入“at+csq”命令来获得,这里就涉及到usb接口的初始化操作以及串口通信编程了。只要在串口初始化过程中设置好数据速率、数据位、停止位以及校验位等信息,然后就可以向usb接口写入命令,并读出回复信息,从回复信息中解析出有用的数据信息就行了。数据速率的检测主要是为业务适配决策提供依据,以便做出合理、有效的适配决策。
视频客户端向网络管理控制服务器发起业务请求信息,网络管理控制服务器就会根据视频客户端的业务请求,向移动终端发起传输命令,多个移动终端就会利用自身的4g网络从公网上的业务服务器上将视频数据下载下来,再通过无线局域网(wlan)传输到视频客户端,实现多个移动终端协同传输视频业务。
具体实现:
(1)打开终端控制器,启动终端控制器程序,建立udp套接字连接,向周围广播信息,并与网络管理控制服务器建立tcp连接;
(2)打开移动终端设备,开启4g网络以及wlan网络,并启动移动终端程序;
(3)终端程序创立udp套接字,接收终端控制器的广播信息,并解析广播信息,与终端控制器建立tcp连接,上传终端设备注册信息;
(4)视频客户端向网络管理控制服务器发起业务请求信息,网络管理控制服务器通过终端控制器对移动终端进行控制,让移动终端协同传输视频业务。
有益效果:本发明设计了了一种5g多接入并发传输控制系统及方法,本发明与现有技术相比,具有以下优点:
网络控制平台可以根据网络状况动态决定协同终端的个数,如果网络状况良好,网络控制平台将尽量减少协同终端的个数;如果网络状况比较差,网络控制平台将调用更多的移动终端以多流并发的方式来协同传输视频数据来提高用户体验。另外,网络控制平台根据业务的特点选择合适的网络(例如gsm网络)将延伸层采集到的传感数据通过终端控制器以短信的方式发送到数据中心或手机终端。把重要的视频信息(通常是边界信息)通过最好的网络传输,其他信息可通过其他网络传输。
附图说明
图15g多接入并发传输控制方法架构;
图2网络管理控制服务器与终端控制器、协同终端的交互过程;
图3网络管理控制服务器与播放客户端的交互过程;
图4视频服务器系统框图;
图5视频客户端系统框图;
图6多终端协同机制结构图;
图7为广播信息格式:
图8为注册信息格式:
图9为上传给网络管理控制服务器的信息格式:
图10为基于tcp的传输方法。
具体实施方式
以下结合实施例和说明书附图对本发明技术方案进行详细描述。
本发明通过分析异构网络下多终端协同多流并发传输系统的应用需求,综合运用通信网络编程技术、用户界面编程技术、数据库技术和嵌入式开发技术设计并实现了多流并发传输系统,该系统主要包括视频采集端、媒体分发服务器、分流决策服务器、上下文服务器、多终端聚合五个部分。首先设计了多流并发传输系统消息数据包格式。其次,从五个部分具体设计实现。视频采集设备对实时视频进行采集,通过h.264算法对采集的视频压缩编码,完成视频流采集传输;媒体分发服务器采用并行tcp传输协议实现视频流并发传输;上下文服务器动态存储虚拟终端系统内各个终端的上下文信息,并在界面显示;分流决策服务器根据上下文信息动态生成分流策略,作为媒体分发服务器分流依据;终端聚合即虚拟终端系统由主终端和从终端组成,从终端完成数据传输并转发,主终端负责虚拟终端系统内上下文信息的传递以及数据的重组。以上五个部分相互协同,构成了整个系统。最后,对整个系统进行联合测试和分析,大量的测试结果表明,系统运行稳定,满足项目的设计需求。涉及到的关键技术有视频流抗丢包预处理技术、基于队列预测的缓存管理技术。
视频传输的丢包预防及恢复方法:针对在恶劣无线网络环境下的流媒体业务由于丢包严重引起的视频质量严重下降,本文提出了一种网络视频流抗丢包预处理及恢复方法,通过将图像中相邻像素分离到不同的子画面中分别编码分割传输,由于相邻像素处在不同的子画面中分别编码传输,接收端当检测到丢包时可以利用相邻未丢失像素利用插值的方法恢复。该方法包括以下步骤:
1)发送端将视频画面中像素按照一定规则分割到不同的子画面中,使得原图像中相邻像素都处于不同的子画面中具体流程为:
将原视频画面分割成pxq个小矩形块,然后将原画面视频的像素(x,y)映射到第(xmodp,ymodq)个小矩形块中的像素(floor(x/p),floor(y/q))上,最终得到的小矩形块即为子画面,其中,p为分割的小矩形块的列数,q为分割的小矩形块的行数,x为原画面像素的横坐标,y为原画面像素的纵坐标,mod为取余运算,floor(*)为向下取整运算;
2)对所述步骤1)中得到的各个子画面进行视频编码得到视频数据流,将所述数据流分割成数据包,并将数据包标记上记载有子画面分割方式和像素位置字段的头部,然后传输给接收端;
3)接收端对接收到的数据包解码,然后根据数据包头部获取已经成功接收的数据包的视频画面像素范围,从而得出丢失的数据包中的视频画面像素范围;
4)接收端根据数据包头部记载的子画面分割方式将解码得到的各个子画面合成最终画面,再根据已正确解码的像素值,采用插值的方式恢复丢失像素的数据,得到恢复的视频画面,其中采取插值的方式恢复出丢失像素的数据的流程为:
a)分别计算每个丢失像素与其上下左右四个方向上距离最近的已接收像素m、n、p、q的距离dx1,dx2,dy1,dy2,其中像素m、n在该丢失像素的左右侧,像素p、q在该丢失像素的上下侧,定义横向失真距离dx=dx1+dx2,纵向失真距离dy=dy1+dy2,失真距离d=min(dx,dy),其中min(dx,dy)表示取dx和dy中较小者;
b)将所有丢失像素按失真距离d的大小进行排序,取d最小的丢失像素,按照线性插值法进行插值,若dx≤dy,则丢失像素的色彩值y=ym+dx1*(yn-ym)/dx,其中ym为像素m的色彩值,yn为像素n的色彩值;若dx>dy,则丢失像素的色彩值y=yp+dy1*(yq-yp)/dy,其中yp为像素p的色彩值,yq为像素q的色彩值;
c)将插值完成的像素加入到已接收像素集合中,判断是否还有丢失像素的数据没有恢复,如是则返回步骤a),否则完成丢失像素的插值恢复。
基于队列预测的视频缓存方法:采用合适长度的缓存队列可以及时的存储到达的分组,不会造成数据包的丢失,再加上对播放速率的控制,可以为用户提供更平滑的视频播放。缓存的长度不能设置的太大,否则会引起较大的延时和较低的队列利用率,也不能设置的太小,否则很容易造成到达的分组由于队列已满而被丢弃。所以提出的缓存管理方法要平衡消除延迟抖动和降低端到端时延这二者,为视频应用设置最合适的缓存队列长度。
1)缓存状态
为了更好的进行缓存管理,视频客户端的缓存队列占用情况将分为三种状态,underflow,normal,overflow。1)underflow,即下溢状态,也就是当前的缓存队列中分组数过少,不足以进行视频帧的播放,在这种状态下如果播放速率大于视频帧的到达速率,则会造成视频播放的中断。中断播放对视频业务的影响非常严重,有研究表明,如果一段视频的中断时间(或者称为缓冲时间)超过2秒,就会有人开始放弃观看,之后缓冲的时间每增加1秒,就会多6%的人放弃观看,并且随着中断播放的次数的增加,用户放弃观看的概率呈指数上升[8]。所以说对实时视频来说,要尽量避免出现缓存发生下溢的情况。2)normal,在这种状态下,缓存队列中暂存的分组数为队列长度的正常比例数,视频帧的到达速率和播放速率基本维持在一个平衡的状态,视频播放流畅。3)overflow,这种状态下,缓存队列基本上被占满,这是由于大量的突发数据到达,或者是播放速率小于帧平均到达速率,在这种状态下,缓存队列很容易到达占满状态,致使新的到达的数据由于来不及存储而被丢弃,造成队列的拥塞和数据的重传[4]。所以视频播放的时候,一旦出现overflow或者underflow状态,可以通过调整缓存队列的大小和视频的播放速度来使缓存区尽量控制在normal状态。
2)延时分析
无线网络中的流媒体视频通信对实时性的要求比较高,特别是对于视频会议,实况转播等一些实时视频应用来说,一般端到端的延时不能超过250ms,否则会引起较大的用户体验下降,而用户可接受的延时应该控制在200~500ms[5],所以一般的实时视频应用大多采用无需建立连接的udp作为传输协议,可以大大减少端到端的延时,弊端是容易产生大量丢包,尤其是在无线网络中。因此在一些对视频质量要求比较高的业务中,且可以容忍一定的延时的情况下,往往采用可靠的tcp协议。本文中采用的实验方法就是基于tcp的传输方法。
如图10所示为一帧视频数据从流媒体服务器端采集、编码、发送,然后经过无线信道的传输,最后在接收端被缓存、解码、播放整个过程中所产生的延时分布情况,可以看出视频帧的端到端延时d可用下式表示(其中未讨论视频帧的分片和恢复延时):
d=dencode+dsend+dchannel+drecv+dbuffer+ddecode+dplayback
上式中ddecode为系统编解码产生的延时,一般为固定值,随着移动设备硬件的提升,该延时相对于视频在信道中传输时所产生的延时dchannel可以忽略不计。dsend为服务器端的发送延时,包括分组的调度延时,排队发送延时等,对于用户端来说,该延时是不可控制的。drecv为视频帧到达接收端并进入缓存区所产生的延时,dbuffer为视频帧在缓存队列中等待的时间,dplayback为视频帧从离开缓存区到提交到应用层进行播放之间的延时,与dbuffer相比,drecv和dplayback可以忽略不计[9]。所以上式可以化简为:
d=dsend+dchannel+dbuffer+c
式中c为常数,dsend由服务器端产生,这里不做讨论,由于无线信道的时变性,dchannel也是动态变化的而且是不可预测的,所以要减小视频帧的端到端延时,应在用户侧尽量减小分组数据在缓存区排队的时间,这就需要通过合理的缓存队列管理来实现,并且延时也应作为缓存队列调整的一项重要参数。
3)基于队列预测的视频缓存方法
基于上述分析,本文在考虑各项参数的影响下提出一种基于队列预测的缓存管理机制。该方法对视频播放速率以及缓存长度进行联合调整来保证缓存队列尽量控制在normal状态,从而可以有效降低上溢和下溢概率。下面详细描述本文算法。
假定当前视频流到达接收端的速率为ra,当前缓存队列总长度为q,视频播放速率为rp。本算法中由于缓存队列的长度是时变的,所以缓存状态的设定不能采用固定的门限值,而是采用与缓存队列长度相比的相对值。本文中采用bl,bh来表示相对的门限值,bl,bh分别表示下溢和上溢门限值,其中bl=α*q,bh=β*q,α,β为系数因子,考虑到视频帧的突发性,缓存管理要来得及对其做出调整,推荐设置为α=0.2,β=0.8。针对缓存的三种可能状态,设定三种实时播放速率,rp={rl,rn,rh},分别对应于较低、正常、较高速率,且有rl<rn<rh,rn是默认的normal状态采用的播放速率,当缓存中存储的帧数达到上溢门限时,说明播放速率已经来不及及时的播放缓存的视频,所以应该采用较大的播放速率rh来加快视频帧的播放,以及时降低堆积的缓存帧的数量,不至于造成丢帧。当缓存帧的数目下降到下溢门限时,则说明视频帧的达到速率小于播放速率,应降低播放速率来防止缓存队列为空导致播放中断的情况,使缓存有足够的时间来缓存足够的帧来保持视频的流畅播放,rl对应较低的播放速率。
本文算法的具体思路如下:接收端每接收到一帧数据,首先根据当前的缓存长度计算对应的上溢和下溢门限bl和bh,然后判断缓存队列的状态,假设当前缓存占用长度为q,若q≤bl,缓存队列状态为underflow,若q≥bh,状态为overflow,若bl<q<bh,则缓存队列状态为normal。如果当前缓存队列状态为normal状态,说明视频播放正常,将当前帧存入至缓存队列中即可。如缓存队列状态为underflow,则表示缓存即将发生下溢,则需要将播放速率减小,同时减小缓存长度以保持较高的缓存利用率,缓存的大小设置如下式:
式中,
缓存的大小设置并不是无限制的增大减小,都存在一定的界限,缓存太大,造成端到端延时过大,不宜取,缓存太小,很难对视频起到一定的缓冲作用,也容易造成上溢和下溢,所以缓存自适应的调整也存在一定的上限和下限qh和ql,应该保持缓存在qh和ql之间波动。算法如下:
在播放每一帧的同时会对其端到端的延时即d进行判断,若其高于一定的门限值时,说明端到端的延时太大,可能会影响到用户的实时感受,所以此时应及时做出调整,将播放速率提高并减小缓存长度,从而将延时控制在一定范围之内。具体的算如下。
该算法简单实用,通过实时的调整缓冲区的长度以及视频的播放速率,来减轻由于无线网络的动态变化造成的数据突发情况所引起的缓存上溢和下溢现象,从而使用户端视频可以流畅的播放,在一定程度上提高了用户体验。