掌桥专利:专业的专利平台
掌桥专利
首页

视频传输方法、视频发送设备、系统以及存储介质

文献发布时间:2024-04-18 20:01:30


视频传输方法、视频发送设备、系统以及存储介质

技术领域

本申请涉及数据传输技术领域,特别是涉及一种视频传输方法、视频发送设备、系统以及存储介质。

背景技术

设备实时流视频以一定的频率、周期性地发送视频帧,其中视频关键I帧要比普通P帧数据量大很多(通常10倍以上)。示例性地,以FPS=25、GOP=50的视频为例,每40ms产生一个视频帧,每25*50*40=2000毫秒产生一个关键I帧。基于UDP进行网络数据传输时,由于MTU限制,需要对待发送的载荷数据进行切包发送。比如2Mbps,15fps的H265编码,1个视频I帧约217917字节左右,1个视频P帧约13930字节左右。按照常见的1200字节进行分包,1个I帧切割约182个视频帧数据包,1个P帧切割约12个视频帧数据包。1个视频帧要完成解码播放需要等待所有分割的视频帧数据包送达后才能完成。

因为视频接收端需要接收到一个视频的所有视频帧数据包之后,才会播放,但是目前采用的方式都是视频发送端每次都向视频接收端发送固定数量的视频帧数据包,此种方式的缺陷是若固定数量较大,通信链路的丢包率较高或者网络出现拥塞导致视频帧延时较长,而固定数量较小,则可能会导致需要经过多次传输才能将一帧视频的所有视频帧数据包发送至视频接收端,也会导致视频帧的延时较长。

发明内容

本申请至少提供一种视频传输方法、视频发送设备、系统以及存储介质。

本申请提供了一种视频传输方法,包括:视频发送设备获取待传输的视频帧数据包的目标相关信息以及通信链路相关信息,所述目标相关信息包括视频帧数据包的大小和数量,所述通信链路相关信息包括所述视频发送设备与视频接收设备之间通信链路的丢包率和/或拥塞窗口可发送数据量;利用所述目标相关信息以及所述通信链路相关信息,确定此次进行传输的视频帧数据包的目标数量;将位于所述目标数量内的视频帧数据包发送至所述视频接收设备。

本申请提供了一种视频传输装置,包括数据获取模块、发送数量确定模块以及发送模块。数据获取模块,用于视频发送设备获取待传输的视频帧数据包的目标相关信息以及通信链路相关信息,所述目标相关信息包括视频帧数据包的大小和数量,所述通信链路相关信息包括所述视频发送设备与视频接收设备之间通信链路的丢包率和/或拥塞窗口可发送数据量;发送数量确定模块,用于利用所述目标相关信息以及所述通信链路相关信息,确定此次进行传输的视频帧数据包的目标数量;发送模块,用于将位于所述目标数量内的视频帧数据包发送至所述视频接收设备。

本申请提供了一种视频传输设备,包括存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述视频传输方法。

本申请提供了一种视频传输系统,视频传输系统包括视频接收设备以及上述视频发送设备。

本申请提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述任意一种视频传输方法。

上述方案,通过获取待传输的视频帧数据包的大小和数量以及通信链路的丢包率以及拥塞窗口的可发送数据量,本方案能够结合通信链路的相关信息,能够确定通信链路能够支持的可发送的视频帧数据包的数量,从而根据该数量确定此次需要发送视频接收设备的数据包,相对于直接传输固定数量的视频帧数据包而言,本方案能够减少视频帧的延时。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。

图1是本申请视频传输方法一实施例的应用场景示意图;

图2是本申请视频传输方法一实施例的流程示意图;

图3是本申请视频传输方法一实施例的另一流程示意图;

图4是本申请视频传输方法一实施例的又一流程示意图;

图5是本申请视频传输方法一实施例的再一流程示意图;

图6是本申请视频传输方法一实施例示出单路视频发送的示意图;

图7是本申请视频传输方法一实施例示出多路视频发送的示意图;

图8是本申请视频传输装置一实施例的结构示意图;

图9是本申请视频发送设备一实施例的结构示意图;

图10是本申请视频传输系统一实施例的结构示意图;

图11是本申请计算机可读存储介质一实施例的结构示意图。

具体实施方式

下面结合说明书附图,对本申请实施例的方案进行详细说明。

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。

一些应用场景中,视频传输方法可以应用在视频监控场景。在实际视频监控系统中,视频发送端可以是视频终端(例如无线相机等监控设备)、视频接收端为无线存储设备。或者视频发送端为无线存储设备,视频接收端为互联网流媒体云平台,用户手机或者PC客户端通过Wi-Fi或者移动网络接入云平台实时查看监控区域的实时视频和报警录像等。如图1所示,图1是本申请视频传输方法一实施例的应用场景示意图。室内和室外多个无线相机通过Wi-Fi等方式连接到本地无线存储设备,无线相机的视频数据通过Wi-Fi保存到无线存储产品上,存储设备通过无线网络(Wi-Fi或者4/5G)连接至互联网流媒体云平台,用户手机或者PC客户端通过Wi-Fi或者移动网络接入云平台实时查看监控区域的实时视频和报警录像等。

请参阅图2,图2是本申请视频传输方法一实施例的流程示意图。

如图2所示,本公开实施例提供的视频传输方法,可以包括如下步骤:

步骤S101:视频发送设备获取待传输的视频帧数据包的目标相关信息以及通信链路相关信息。

目标相关信息包括视频帧数据包的大小和数量,通信链路相关信息包括视频发送设备与视频接收设备之间通信链路的丢包率和/或拥塞窗口可发送数据量。视频帧数据包是对视频帧进行分包得到的。如上述,2Mbps,15fps的H265编码,1个视频I帧约217917字节左右,1个视频P帧约13930字节左右。按照常见的1200字节进行分包,1个I帧切割约182个视频帧数据包,1个P帧切割约12个视频帧数据包,在该例子中,视频帧数据包的大小为1200个字节,待传输的视频帧数据包的数量为该视频帧的总数量减去该视频帧已传输的视频帧数据包的数量或者,由视频发送设备对各视频帧进行分包的速度确定得到的当前已分包且未传输的视频帧总量,关于待传输的视频帧数据包的数量由具体情况而定,此处不做具体限定。通信链路的丢包率可以是预设时间段内的视频帧数据包丢包率或者上一次向视频接收端发送视频帧数据包过程中的丢包率。预设时间段内的视频帧数据包丢包率的获取方式可以是根据当前时间以前的预设时间段内的视频帧数据包发送总量与丢失量之间的比值,或者上一次向视频接收端发送视频帧数据包过程中的丢包率的获取方式为发送的视频帧数据包总量与丢失量之间的比值。拥塞窗口是视频发送设备维护的一个状态变量,可以根据网络的拥塞程度动态变化。拥塞窗口可发送数据量可以理解为通信链路可以支持发送的数据量。

步骤S102:利用目标相关信息以及通信链路相关信息,确定此次进行传输的视频帧数据包的目标数量。

示例性地,可以根据待传输的视频帧的数据包的大小以及通信链路的丢包率和/或拥塞窗口可发送数据量,确定此次可以利用该通信链路发送的视频帧数据包的大小。

步骤S103:将位于目标数量内的视频帧数据包发送至视频接收设备。

示例性地,可以将根据各待传输的视频帧数据包的排列顺序选择目标数量的视频帧数据包通过该通信链路发送至视频接收设备。

上述方案,通过获取待传输的视频帧数据包的大小和数量以及通信链路的丢包率以及拥塞窗口的可发送数据量,本方案能够结合通信链路的相关信息,能够确定通信链路能够支持的可发送的视频帧数据包的数量,从而根据该数量确定此次需要发送视频接收设备的数据包,相对于直接传输固定数量的视频帧数据包而言,本方案能够减少视频帧的延时。

在一些实施例中,上述利用目标相关信息以及通信链路相关信息,确定此次进行传输的视频帧数据包的目标数量的方式可以是:根据拥塞窗口可发送数据量以及视频帧数据包的大小,确定通信链路可发送视频帧数据包的数量;响应于通信链路可发送视频帧数据包的数量大于或等于待传输的视频帧数据包的数量,确定目标数量为待传输的视频帧数据包的数量。

示例性地,将拥塞窗口可发送数据量与视频帧数据包大小的比值,作为通信链路可发送视频帧数据包的数量。例如,拥塞窗口可发送数据量为24000字节,视频帧数据包大小为1200,则可发送的视频帧数据包数量为24000/1200=20个。通信链路可发送视频帧数据包的数量大于或等于待传输的视频帧数据包的数量说明通信链路当前能够一次性发送该传输的视频帧数据包,故可以直接将待传输的视频帧数据包的数量作为目标数量。

在上述方案中,通过考量通信链路当前支持传输的视频帧数据包的多少确定此次传输的视频帧数据包的数量,能够减少传输过多的视频帧数据包导致通信链路产生较高的丢包或者网络拥塞的情况出现,并且还能减少因为设置较少传输的视频帧数据包的数量造成多次传输的情况出现。

在一些实施例中,各视频帧数据包是对待传输视频帧进行分包得到的,每一待传输视频帧的视频帧数据包按照传输阶段分为头部数据包、中间数据包以及尾部数据包。视频传输方法还包括:响应于通信链路可发送视频帧数据包的数量小于待传输的视频帧数据包的数量,确认此次传输的视频帧数据包的初始数量为通信链路可发送视频帧数据包的数量,初始数量小于或等于通信链路可发送视频帧数据包的数量。按照待传输的视频帧数据包中除初始数量以外的其他视频帧数据包是否存在待传输视频帧的尾部数据包,确定是否将初始数量作为目标数量。

一个视频帧分割成多个视频数据包进行发送,对于一个视频帧而言,第一部分发送成功的数据包所处的传输阶段称之为头部发送,头部发送的数据包为头部数据包,视频帧中间部分发送成功的数据包所处的传输阶段称之为中间发送,中间发送的数据包为中间数据包,将视频帧最后一部分发送成功的数据包所处的传输阶段称之为尾部发送,尾部发送的数据包为尾部数据包。可选地,尾部发送状态的优先级高于中间发送状态,中间发送状态的优先级高于头部发送状态。一些应用场景中,初始数量可以是通信链路可发送视频帧数据包的数量。一些应用场景中,初始数量还可以小于通信链路可发送视频帧数据包的数量。待传输的视频帧数据包中除初始数量以外的其他视频帧数据包可以认为是剩余视频帧数据包。上述按照待传输的视频帧数据包中除初始数量以外的其他视频帧数据包是否存在待传输视频帧的尾部数据包,确定是否将初始数量作为目标数量的方式可以是:若存在尾部数据包,则对初始数量进行调整得到目标数量,或者不存在尾部数据包则直接将初始数量作为目标数量。若剩下的数据包中存在尾部数据包,若直接将初始数量作为目标数量,那么必然导致该视频帧被分为至少两次发送,从而使得该视频帧的延时加长,通过对初始数量进行调整能够减少这种情况的发生。

在一些实施例中,上述按照待传输的视频帧数据包中除初始数量以外的其他视频帧数据包是否存在待传输视频帧的尾部数据包,确定是否将初始数量作为目标数量的方式可以是:响应于其他视频帧数据包中不存在尾部数据包,将初始数量作为目标数量。或,响应于其他视频帧数据包中存在尾部数据包,根据预设最小包调度数量和/或丢包率,确定是否将初始数量作为目标数量。

其他视频帧数据包中不存在尾部数据包则说明该视频帧已经发送完成或者剩下的数据量过大,无法将全部数据包在此次传输至视频接收端,例如若此次发送的是I(关键帧)帧的头部数据包,待传输的视频帧数据包为I帧的中间数据包,则确定初始数量为目标数量。一些应用场景中,若剩余数据包中存在尾部数据包,则可以进一步考量预设最小包调度数量以及网络的丢包率,确定将初始数量作为目标数量或者对初始数量进行调整,得到目标数量。预设最小包调度数量可以认为是预先设置的通信链路可发送数据包增量。也就是可以超出通信链路可发送数据包数量的阈值,示例性地,若预设最小包调度数量为2,则认为通信链路可以超出可发送数据包数量两个。根据预设最小包调度数量和/或丢包率,确定是否将初始数量作为目标数量可以理解为根据预设最小包调度数量和/或丢包率确定是否超发视频帧数据包。通过此种方式,还可进一步减少将尾部数据包分多次发送的情况出现,从而达到减少该视频帧延时的效果。

在一些实施例中,上述根据预设最小包调度数量和/或丢包率,确定是否将初始数量作为目标数量的方式可以是:响应于其他视频帧数据包的数量大于预设最小包调度数量,将初始数量作为目标数量。或,响应于其他视频帧数据包的数量小于或等于预设最小包调度数量且通信链路的丢包率小于或等于预设最小丢包率,将待传输的视频帧数据包的数量作为目标数量。或,响应于其他视频帧数据包的数量小于或等于预设最小包调度数量且通信链路的丢包率大于预设最小丢包率,将初始数量作为目标数量。

其他视频帧数据包的数量大于预设最小包调度数量,则说明此次通信链路无法直接将待传输的视频帧数据包全部发送给视频接收端,则无论剩下的是否包含尾部数据包,为保障此次传输的稳定性较少丢包,则可以直接将初始数量作为目标数量。或者,在视频帧数据包小于或等于预设最小包调度数量且通信链路的丢包率大于预设最小丢包率,为保障此次传输的稳定性较少丢包,则可以直接将初始数量作为目标数量。在一些应用场景中,在其他视频帧数据包的数量小于或等于预设最小包调度数量且通信链路的丢包率小于或等于预设最小丢包率,将待传输的视频帧数据包的数量作为目标数量,因为通信链路的丢包率较低而且储量的数量较少,即便超量发送丢包的概率也较低,故可以考虑直接将待传输的视频帧数据包的总量作为目标数量。

在一些实施例中,在将位于目标数量内的视频帧数据包发送至视频接收设备之后,视频传输方法还包括:计算通信链路的新丢包率。响应于新丢包率小于预设最小丢包率同预设比例的乘积,增大预设最小包调度数量,预设比例大于0且小于1。或,响应于新丢包率大于或等于预设最小丢包率同预设比例的乘积,减小预设最小包调度数量。其中,调整后的预设最小包调度数量大于或等于1。

每次进行视频传输之后,重新获取通信链路的丢包率,从而根据通信链路最新的丢包率对最小包调度数量进行调整,使得后续能够更灵活地确定视频传输过程中可以发送的视频帧数据包的数量。

为更好地理解上述方案,请参阅图3,图3是本申请视频传输方法一实施例的另一流程示意图。如图3所示,视频传输方法包括以下步骤:

步骤S105:获取待传输的视频帧数据包的大小和数量a以及通信链路相关信息。

具体获取方式如上述步骤S101所述,此处不再赘述。

步骤S106:确定通信链路可发送视频帧数据包的数量b。

具体确定方式如上述,此处不再赘述。

步骤S107:判断b是否小于a。

若判断结果为b大于或等于a,则执行步骤S108,否则执行步骤S109。

步骤S108:按照待传输视频帧数据包数量a进行发送。

步骤S109:确定初始数量c。

其中,c=min(a,b)=b。

步骤S110:判断剩余数据包中是否包含尾部数据包。

在判断结果为剩余数据包中存在尾部数据包的情况下,执行步骤S111,否则执行步骤S112。

步骤S111:确定剩余待传输的视频帧数据包数量d。

示例性地,按照数量a和c计算当前视频帧发送调度剩余待发送的视频帧包数量d=a-c。

步骤S112:按照初始数量c进行发送。

步骤S113:判断d是否小于或等于最小包调度数量k。

在判断结果为d小于或等于最小包调度数量k的情况下执行步骤S114,否则执行步骤S112。

步骤S114:判断通信链路丢包率loss是否小于预设最小丢包率L。

在判断结果为通信链路丢包率loss小于预设最小丢包率L的情况下,执行步骤S115,否则执行步骤S112。可以理解地,当剩余包数量d大于最小包调度数量阈值k时或者丢包率loss超过设定最小丢包率阈值L(比如2%),则按照待发送视频帧包数量c进行发送,其中阈值k的初始值必须大于等于2。

步骤S115:按照待传输视频帧数据包数量c+d进行发送。

可以理解地,按照待传输视频帧数据包数量c+d进行发送相当于将待发送视频包数量a全部一起进行发送。

步骤S116:判断待传输视频帧数据包是否发完。

在判断结果为是的情况下,结束此次视频传输,否则执行步骤S117。

步骤S117:重新获取通信链路的丢包率loss_new。

步骤S118:判断loss_new是否小于预设最小丢包率L*β。

其中,0<β<1。在判断结果为是的情况下,执行步骤S119,否则执行步骤S120。

步骤S119:加大最小包调度数量k。

其中,加大最小包调度数量阈值k相当于允许更多的尾包一起发送,降低延时。

步骤S120:减少最小包调度数量k。

减小最小包调度数量阈值k相当于减少过多的尾包一起发送,降低丢包重传引入的延时,并且调整的k值必须大于等于1。

在一些实施例中,视频发送设备的待发送链表中指示有多条通信链路存在对应的待传输的视频帧数据包。请参阅图4,图4是本申请视频传输方法一实施例的又一流程示意图。如图4所示,在视频发送设备获取待传输的视频帧数据包的目标相关信息以及通信链路相关信息之前,方法还包括步骤S201至步骤S204中的内容。

步骤S201:获取待发送链表中各通信链路待传输的视频帧成功发送耗时以及各通信链路的视频帧帧间间隔时间。

多条通信链路可以是发送终端将多个无线相机采集到的视频通过多条链路发送至一个或多个视频接收设备,或者将一个无线相机采集到的视频通过多条链路发送至多个视频接收设备。每条通信链路上均存在若干个待传输的视频帧数据包。通信链路待传输的视频帧成功发送耗时可以计算该通信链路中待发送的各视频帧数据包对应的视频帧发送至视频接收设备所需的时间,也可以是获取当前时间以前的预设时间段内将视频帧数据包发送至视频接收设备的时间作为该通信链路中待发送的各视频帧数据包对应的视频帧发送至视频接收设备所需的时间。示例性地,可以根据通信链路的网络拥塞情况、丢包率以及待传输的视频帧数据包大小以及多少,确定本条通信链路的视频帧成功发送耗时。各通信链路的视频帧帧间间隔时间为预先设定,视频帧帧间间隔时间具体可以理解为前一帧视频帧的起始发送之间至后一帧视频帧的起始发送时间之间的间隔。

步骤S202:确定各通信链路对应的成功发送耗时累计值以及各通信链路的视频帧间间隔时间均值。

步骤S201中计算了每条通信链路的成功发送耗时累计值,通过将各成功发送耗时相加,得到成功发送耗时累计值。另一些实施例中,成功发送耗时累计值,可以是各每条通信链路成功发送耗时的均值。各通信链路预设的视频帧间间隔时间可能不同,视频帧间间隔时间均值具体可以通过计算平均值的方式获取。本实施例以成功发送耗时累计值为各通信链路的成功发送耗时之和为例。

步骤S203:根据成功发送耗时累计值与各通信链路的视频帧间间隔时间均值之间的关系,确定各通信链路的延时情况。

在一些实施例中,上述根据成功发送耗时累计值与各通信链路的视频帧间间隔时间均值之间的关系,确定各通信链路的延时情况的方式可以是:响应于成功发送耗时累计值小于视频帧间间隔时间均值,确定各通信链路属于低延时链路组。也就是即便依次发送各通信链路中的待传输视频帧数据包,也能够在视频帧间隔时间内完成各通信链路的视频发送,对于每条通信链路而言即便存在延时但延时都较小。

在一些实施例中,响应于成功发送耗时累计值大于或等于视频帧间间隔时间均值,确定各通信链路属于高延时链路组。成功发送耗时累计值大于视频帧间间隔时间均值,那么依次发送各通信链路很可能会导致部分通信链路的延时较高,故可以认为各通信链路属于高延时链路组。

步骤S204:基于各通信链路的延时情况,确定各通信链路的视频发送顺序。

在此基础上,上述视频发送设备获取待传输的视频帧数据包的目标相关信息以及通信链路相关信息的方式可以是:按照各通信链路的视频发送顺序,获取当前通信链路对应的待传输的视频帧数据包的目标相关信息以及通信链路相关信息。

其中,在确定各通信链路属于低延时链路组的情况下,上述基于各通信链路的延时情况,确定各通信链路的视频发送顺序的方式可以是:获取各通信链路的视频延时,视频延时为视频发送设备通过通信链路发送视频帧数据包的时间至视频接收设备播放视频帧数据包对应的视频帧的时间。根据各通信链路的视频延时,确定各通信链路对应的视频帧数据包发送顺序。

其中,视频延时可以根据该视频帧的视频成功发送耗时以及视频接收设备的解码时间确定。根据各通信链路的视频延时,确定各通信链路对应的视频帧数据包发送顺序的方式可以是根据各通信链路的视频延时从高到低的顺序确定各通信链路的发送顺序,或者根据各通信链路的视频延时从低到高的顺序确定各通信链路的发送顺序。

在一些实施例中,上述根据各通信链路的视频延时,确定各通信链路对应的视频帧数据包发送顺序的方式可以是:响应于各通信链路的视频延时差值大于预设延时差值,按照各通信链路的视频延时从高到低的顺序,作为各通信链路的发送顺序。在此过程中,响应于存在至少两个通信链路的视频延时差值小于或等于预设延时差值,获取至少两个通信链路对应的视频帧数据包的传输阶段。然后,将传输阶段优先级更高的通信链路的发送顺序设置在传输阶段优先级更低的通信链路之前。

其中,各视频帧数据包是对待传输视频帧进行分包得到的,每一待传输视频帧的视频帧数据包按照传输阶段分为头部数据包、中间数据包以及尾部数据包,尾部数据包的优先级高于中间数据包的优先级,中间数据包的优先级高于头部数据包的优先级。

也即是若视频延时相差较大,可以先发送视频延时较大的,若视频延时接近,则可以先发送传输阶段优先级更高的。预设延时差值可根据具体需求确定,此处不做具体规定。

在一些实施例中,在获取至少两个通信链路对应的视频帧数据包的传输阶段之后,视频传输方法还包括:响应于存在两个通信链路的传输阶段相同,确定两个通信链路对应的视频帧数据包是否为对关键帧分包得到。响应于其中一个通信链路对应的视频帧数据包为对关键帧分包得到,将关键帧分包得到的视频帧数据包对应的通信链路的发送顺序设置在另一通信链路之前。

也就是如果两个通信链路的视频延时接近而且二者的传输阶段相同,那么优先发送对关键帧分包得到的视频帧数据包。一些实施例中,若两个通信链路都是对关键帧分包得到,或者都不是对关键帧分包得到,可以随机将其中一个通信链路的发送顺序设置在另一个通信链路之前。

其中,在确定各通信链路属于高延时链路组的情况下,基于各通信链路的延时情况,确定各通信链路的视频发送顺序,包括:获取各通信链路对应的视频帧数据包的传输阶段;按照传输阶段的优先级,确定各通信链路的视频发送顺序,各视频帧数据包是对待传输视频帧进行分包得到的。

如上述,每一待传输视频帧的视频帧数据包按照传输阶段分为头部数据包、中间数据包以及尾部数据包,尾部数据包的优先级高于中间数据包的优先级,中间数据包的优先级高于头部数据包的优先级。

上述按照传输阶段的优先级,确定各通信链路的视频发送顺序的方式可以是优先发送传输阶段的优先级更高的,或者优先发送传输阶段的优先级更低的。

在一些实施例中,上述按照传输阶段的优先级,确定各通信链路的视频发送顺序的方式可以是:按照各传输阶段的优先级从高到低的顺序,确认各通信链路的视频发送顺序。在此过程中,响应于存在至少两个通信链路待传输的视频帧数据包的传输阶段相同,获取至少两个通信链路的视频延时,视频延时为视频发送设备通过通信链路发送视频帧数据包的时间至视频接收设备播放视频帧数据包对应的视频帧的时间。根据至少两个通信链路的视频延时,确定各通信链路对应的视频帧数据包发送顺序。

根据至少两个通信链路的视频延时,确定各通信链路对应的视频帧数据包发送顺序的方式可以是根据各通信链路的视频延时从高到低的顺序确定各通信链路的发送顺序,或者根据各通信链路的视频延时从低到高的顺序确定各通信链路的发送顺序。

在一些实施例中,上述根据至少两个通信链路的视频延时,确定各通信链路对应的视频帧数据包发送顺序的方式可以是:响应于存在两个通信链路的视频延时差值小于或等于预设延时差值,确定两个通信链路对应的视频帧数据包是否为对关键帧分包得到。响应于其中一个通信链路对应的视频帧数据包为对关键帧分包得到,将关键帧分包得到的视频帧数据包对应的通信链路的发送顺序设置在另一通信链路之前。

一些实施例中,若两个通信链路都是对关键帧分包得到,或者都不是对关键帧分包得到,可以随机将其中一个通信链路的发送顺序设置在另一个通信链路之前。

在一些实施例中,视频传输方法还可以包括以下步骤:获取待重传链路表中确定各待重传通信链路的丢包率。待重传链路表用于指示若干条待重传通信链路存在待重传的视频帧数据包。然后,按照各待重传通信链路的丢包率从高到低的顺序,确定各待重传通信链路的重发顺序。

重传链路表的优先级可以低于待发送链表的优先级。另一些实施例中,待重传链路表的优先级也可高于待发送链表的优先级。可选地,可以响应于待发送链表中各通信链路中待传输的视频帧数据包均已发送,获取待重传链路表中确定各待重传通信链路的丢包率。待发送链表中各通信链路中待传输的视频帧数据包在均已发送之前可以不用将各通信链路中新增的待传输的视频帧数据加入至待发送链表中,具体可以先写入候补链表,写入新增的数据。然后在待发送链表中各通信链路中袋传书的视频帧数据包均已发送之后,将候补链表中的数据转入待发送链表中。当然,在视频帧数据包传输过程中可能会出现丢包的情况,可以将丢了的视频帧数据包写入待重传链路表中。按照各待重传通信链路的丢包率从高到低的顺序,确定各待重传通信链路的重发顺序也就是先发送丢包率高的,后发送丢包率低的。另一些实施例中,也可先发送丢包率低的,后发送丢包率高的。

在一些实施例中,上述按照各待重传通信链路的丢包率从高到低的顺序,确定各待重传通信链路的重发顺序的方式可以是:响应于存在至少两条待重传通信链路的丢包率之差小于或等于预设丢包率差值,获取至少两条待重传通信链路对应的视频帧数据包的传输阶段。然后,按照传输阶段从高到低的顺序,确定各待重传通信链路的重发顺序。

预设丢包率差值可以根据需求设定,例如可以根据传输效果不断对预设丢包率进行调整,确定能够满足较低延时要求的预设丢包率。至少两条可以是两条或两条以上。按照传输阶段从高到低的顺序,确定各待重传通信链路的重发顺序也就是先发送传输阶段高的,后发送传输阶段低的。传输阶段的高低可以理解为上述传输阶段的优先级高低,尾部数据包的优先级高于中间数据包的优先级,中间数据包的优先级高于头部数据包的优先级。

在一些实施例中,上述按照传输阶段从高到低的顺序,确定各待重传通信链路的重发顺序的方式可以是:响应于至少两个待重传通信链路中待传输的视频帧数据包的传输阶段相同,按照至少两个待重传通信链路中各通信链路的视频延时和/或两个通信链路对应的视频帧数据包是否为对关键帧分包得到确定各通信链路的重发顺序。

可选地,响应于至少两个待重传通信链路中待传输的视频帧数据包的传输阶段相同,按照至少两个待重传通信链路中各通信链路的视频延时确定各通信链路的重发顺序。例如,先发送视频延时高的,后发送视频延时低的。当然,可能会出现两个通信链路的视频延时比较接近的,可以执行以下步骤:响应于存在两个通信链路的视频延时差值小于或等于预设延时差值,确定两个通信链路对应的视频帧数据包是否为对关键帧分包得到。若其中一个是关键帧分包得到的,那么执行以下步骤:响应于其中一个通信链路对应的视频帧数据包为对关键帧分包得到,将关键帧分包得到的视频帧数据包对应的通信链路的发送顺序设置在另一通信链路之前。若两个都是关键帧分包得到的,或两个都不是关键帧分包得到的,可以随机设定两个通信链路之间的发送顺序。

在一些实施例中,在将位于目标数量内的视频帧数据包发送至视频接收设备之后,视频传输方法还包括:响应于存在至少部分视频帧数据包在传输过程中存在丢失,将丢失的视频帧数据包对应的通信链路作为待重传链路表中的待重传通信链路,丢失的视频帧数据包作为待重传通信链路中待重传的视频帧数据包。

也就是将存在丢失数据包的通信链路作为待重传通信链路,将丢失的数据包作为待重传通信链路中待重传的视频帧数据包。如何判断丢失的方式可参考常规的方式,此处不做具体限定。

在一些实施例中,视频传输方法还包括:响应于待重传链路表中各待重传通信链路中的待重传视频帧数据包均已重传,执行获取待重传链路表中确定各待重传通信链路的丢包率步骤。

另一些实施例中,响应于待重传链路表中各待重传通信链路中的待重传视频帧数据包均已重传,获取新的待发送链表,并执行获取新的待发送链表中各通信链路待传输的视频帧成功发送耗时以及各通信链路的视频帧帧间间隔时间的步骤。待重传链路表中各数据包发送完之后可以继续执行获取新的待发送链表的步骤。

为更好地理解上述方案,请参阅图5,图5是本申请视频传输方法一实施例的再一流程示意图。本实施例提供的视频传输方法还可包括步骤S205至步骤S214的内容。

步骤S205:发送端从待发送链表中计算所有N个待发送链路的视频帧成功发送耗时Ti、视频帧间隔时间Fi、视频延时Di和视频帧传输阶段S。

多路视频帧发送涉及到多个链路的发送调度顺序,最终目的是保障大部分用户的视频传输延时。该方法根据视频帧成功发送耗时、视频帧间隔时间、视频延时、视频帧传输阶段以及丢包率等多维参数进行链路分级调度发送。可选地,视频帧数据包可以待传输视频帧数据包的成功发送耗时,也可以是单个视频帧的成功发送耗时。

步骤S206:发送端计算多个链路每个视频帧成功发送耗时累加和T以及多个链路视频帧间隔时间的平均值F。

步骤S207:判断T是否小于F。

在判断结果为是的情况下,执行步骤S211,否则执行步骤S208。

步骤S208:按照视频帧传输阶段优先级,对本类型所有待发送链路进行排序,优先发送视频帧传输阶段优先级为高的链路。

如果T不小于F,则为高延时链路组。视频发送调度产生的延时会影响视频解码播放。

步骤S209:当视频帧传输阶段相同时,优先发送视频延时高的链路。

步骤S210:当视频延时相近时,优先发送视频I帧数据包。

步骤S211:按照视频延时Di,对本类型所有待发送链路进行排序,优先发送视频延时高的链路。

如果T小于F,则为低延时链路组。由于视频解码播放也必须按照帧间隔时间进行,视频发送调度产生的延时不会影响视频解码播放。

步骤S212:当视频延时相近时,优先发送视频帧传输阶段优先级高的链路。

比如两个通信链路的延时都在100ms到105ms,这样可以认为是相近。

步骤S213:当视频帧传输阶段相同时,优先发送视频I帧数据包。

步骤S214:待发送链路数据包发送完成则从待发送链表中删除。

如果待发送链接所有数据包都发送完成,则从待发送链表中删除,继续进行下一次多链路发送调度。

请参阅图6和图,图6是本申请视频传输方法一实施例示出单路视频发送的示意图、图7是本申请视频传输方法一实施例示出多路视频发送的示意图。

单路视频流的视频帧分割成多个数据包时,目前的方案部分尾部数据包发送需要等待至少1个RTT后才能调度发送,造成该视频帧发送时长增加。如图6所示,本方案增加尾部数据包的权重,在可行方案内减少单帧视频帧的发送次数,降低延时。

在多路视频发送过程中,目前的方案由于传输层的链路发送公平调度或者轮询调度等,部分链路视频帧发送需要等待其他链路发送结束后才能继续调度发送,造成该每个链路整体的视频帧发送时长增加,而如图7所示,本方案很大程度上降低了部分通信链路的视频帧发送耗时。

请参阅图8,图8是本申请视频传输装置一实施例的结构示意图。本实施例提供的视频传输装置60可以用于执行上述视频传输方法。视频传输装置60包括数据获取模块61、发送数量确定模块62以及发送模块63。数据获取模块61,用于视频发送设备获取待传输的视频帧数据包的目标相关信息以及通信链路相关信息,目标相关信息包括视频帧数据包的大小和数量,通信链路相关信息包括视频发送设备与视频接收设备之间通信链路的丢包率和/或拥塞窗口可发送数据量;发送数量确定模块62,用于利用目标相关信息以及通信链路相关信息,确定此次进行传输的视频帧数据包的目标数量;发送模块63,用于将位于目标数量内的视频帧数据包发送至视频接收设备。

上述方案,通过获取待传输的视频帧数据包的大小和数量以及通信链路的丢包率以及拥塞窗口的可发送数据量,本方案能够结合通信链路的相关信息,能够确定通信链路能够支持的可发送的视频帧数据包的数量,从而根据该数量确定此次需要发送视频接收设备的数据包,相对于直接传输固定数量的视频帧数据包而言,本方案能够减少视频帧的延时。其中,各个模块的功能可参见视频传输方法实施例所述,此处不再赘述。

请参阅图9,图9是本申请视频发送设备一实施例的结构示意图。视频发送设备70包括存储器71和处理器72,处理器用于执行存储器中存储的程序指令,以实现上述视频传输方法。在一个具体的实施场景中,视频发送设备70可以包括但不限于:无线存储设备、监控设备、微型计算机、服务器,此外,视频发送设备70还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。

具体而言,处理器72用于控制其自身以及第一存储器81以实现上述任一视频传输方法实施例中的步骤。处理器72还可以称为CPU(Central Processing Unit,中央处理单元)。处理器72可能是一种集成电路芯片,具有信号的处理能力。处理器72还可以是通用第一处理器、数字信号第一处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用第一处理器可以是微第一处理器或者该第一处理器也可以是任何常规的第一处理器等。另外,处理器72可以由集成电路芯片共同实现。

上述方案,通过获取待传输的视频帧数据包的大小和数量以及通信链路的丢包率以及拥塞窗口的可发送数据量,本方案能够结合通信链路的相关信息,能够确定通信链路能够支持的可发送的视频帧数据包的数量,从而根据该数量确定此次需要发送视频接收设备的数据包,相对于直接传输固定数量的视频帧数据包而言,本方案能够减少视频帧的延时。

请参阅图10,图10是本申请视频传输系统一实施例的结构示意图。如图10所示,视频传输系统1包括视频接收设备80以及上述视频发送设备实施例提供的视频发送设备70。

视频接收设备80的数量可以是一个,也可以是多个。

上述方案,通过获取待传输的视频帧数据包的大小和数量以及通信链路的丢包率以及拥塞窗口的可发送数据量,本方案能够结合通信链路的相关信息,能够确定通信链路能够支持的可发送的视频帧数据包的数量,从而根据该数量确定此次需要发送视频接收设备的数据包,相对于直接传输固定数量的视频帧数据包而言,本方案能够减少视频帧的延时。

请参阅图11,图11是本申请计算机可读存储介质一实施例的结构示意图。计算机可读存储介质90存储有程序指令91,程序指令91被处理器运行时能够实现上述任一视频传输方法实施例中的步骤。

上述方案,通过获取待传输的视频帧数据包的大小和数量以及通信链路的丢包率以及拥塞窗口的可发送数据量,本方案能够结合通信链路的相关信息,能够确定通信链路能够支持的可发送的视频帧数据包的数量,从而根据该数量确定此次需要发送视频接收设备的数据包,相对于直接传输固定数量的视频帧数据包而言,本方案能够减少视频帧的延时。在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。

上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

相关技术
  • 带有保持元件的假体心脏瓣膜
  • 心脏瓣膜假体
  • 具有保护特征的经导管的假体心脏瓣膜递送系统
  • 用于假体心脏瓣膜的强化密封型植绒裙边及假体心脏瓣膜
  • 用于心脏瓣膜假体的保持器、用于心脏瓣膜假体的存储装置以及卷曲套件和方法
技术分类

06120116561263