一种基于网络编解码和协作分发的视频点播方法以及系统与流程

文档序号:14881479发布日期:2018-07-07 09:49阅读:203来源:国知局

本发明涉及通信技术应用领域,尤其涉及一种基于网络编解码和协作分发的视频点播方法。



背景技术:

随着移动通信技术的飞速发展,视频服务占据了大量的市场总流量,研究和实现适用于不同用户请求并满足多并发要求的内容分发网络架构显得极为迫切。目前在视频点播中采用的是单独的tcp或者单独的udp传输方式,但是这两种方式都有各自的缺点,tcp需要不断地发送ack这样的反馈信息所以就会浪费大量的资源,产生时延问题,另外udp虽然不需要发送ack反馈信息,但是他存在丢包问题,所以不可避免的要就行数据重传,这样同样会有时延问题。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种基于网络编解码和协作分发的视频点播方法以及系统。

本发明解决其技术问题所采用的技术方案是:构造一种基于网络编解码和协作分发的视频点播方法,所述方法包括:

在预处理阶段,服务端节点将视频文件切片成多个视频分片;

在内容分发阶段,客户端依序获取所请求的视频文件的多个视频分片,并在单个视频分片获取完毕时播放视频分片;

其中,单个视频分片的获取包括:客户端节点从服务端节点获取某个视频分片对应的协作节点信息,所述协作节点信息包含已经请求了所对应的视频分片且尚未完全解码整个视频文件的客户端节点;客户端节点从服务端节点以及基于协作节点信息从其他可提供协作的协作节点,通过udp传输获取该某个视频分片经过网络编码后的数据分组直至客户端节点根据所接收到的所有来自不同节点的数据分组联合解码得到相应的视频分片,其中,协作节点发送的数据分组为其所接收的该某个视频分片的数据分组进行再编码后的数据分组。

其中,客户端节点与服务端节点以及客户端节点与客户端节点之间均包括:两条tcp和一条udp,udp用于传输数据分组,一条tcp连接用于传输控制信令,另一条tcp连接用于传输活跃信号。

本发明还要求保护一种基于网络编解码和协作分发的视频点播系统,包括客户端节点、服务端节点,服务端节点包括服务端模块、服务端网络编码模块和切片模块,客户端节点包括客户端模块、客户端网络编解码模块、点播模块;

所述切片模块用于在预处理阶段将视频文件切片成多个视频分片;

所述服务端网络编码模块用于将视频分片进行网络编码后得到数据分组;

所述客户端网络编解码模块用于将获取到的数据分组进行网络解码得到视频分片,以及用于将获取到的数据分组再次进行网络编码后得到可以发送给其他客户端节点的数据分组;

所述客户端模块用于在内容分发阶段多次执行以下过程以实现依序获取所请求的视频文件的多个视频分片:从服务端节点获取某个视频分片的协作节点信息,从服务端节点以及基于协作节点信息从其他可提供协作的协作节点,通过udp获取该某个视频分片经过网络编码后的数据分组直至根据所接收到的所有来自不同节点的数据分组联合解码得到相应的视频分片,其中,所述协作节点信息包含已经请求了所对应的视频分片且尚未完全解码整个视频文件的客户端节点,协作节点发送的数据分组为其所接收的该某个视频分片的数据分组进行再编码后的数据分组;

所述点播模块用于在单个视频分片获取完毕时播放视频分片。

其中,客户端节点与服务端节点以及客户端节点与客户端节点之间均包括:两条tcp和一条udp,udp用于传输数据分组,一条tcp连接用于传输控制信令,另一条tcp连接用于传输活跃信号。

优选的,服务端节点为每个视频分片维持一包含了该视频分片对应的协作节点信息的协作列表;服务端节点在每次接收到客户端节点的分片请求后,将该客户端节点的信息加入分片请求所对应的视频分片的协作列表中,以及在某个客户端节点完全解码整个视频文件时,将该某个客户端节点从所有的协作列表中删除;

所述客户端模块用于在内容分发阶段多次执行以下过程以实现依序获取所请求的视频文件的视频分片:客户端模块向服务端节点请求某个视频分片的协作列表;获取到协作列表后向服务端节点发送某个视频分片的分片请求,以及向协作节点信息中的所有协作节点发送某个视频分片的协作请求;服务端节点以及协作节点分别将该某个视频分片通过网络编码后的数据分组发送至客户端,直至客户端节点根据所接收到的所有来自不同节点的数据分组联合解码得到相应的视频分片。

优选的,服务端节点还包括缓存部署模块,用于参考视频文件的流行度以及网络中用户的行为,选取相关的缓存部署策略,在预处理阶段将切片得到的视频分片进行网络编码后的数据分组部署到客户端节点的缓存空间中;

客户端模块还用于在内容分发阶段的请求视频分片之前,发送包含视频文件的文件名的请求至服务端节点,并接收服务端节点返回的该视频文件的文件元信息,所述文件元信息包括编码参数、分片信息;

切片得到的视频分片具有类似的时长以及相同的视频封装容器,视频分片的时长大小可根据实际部署的网络环境进行动态的调整,且每个视频分片都包含有若干个完整的gop,各视频分片可独立地进行播放;

数据分组的结构包括信息类型、信息大小、数据体,数据分组的包头长度固定,包头中包含两个整形长度成员信息,分别表示所述数据体的所述信息类型和所述数据体的所述信息大小。

优选的,所述服务端网络编码模块包括编码器,客户端网络编解码模块包括编码器和译码器,编码器的编码参数包括分片大小、源数据包大小以及数量、ldpc校验开销、编码矩阵非零元素的长度、编码类型、预编码开关、二进制编码开关和编码矩阵的生成种子,分片大小为经所述切片模块切片所得的视频分片的大小,源数据包大小以及数量以及编码矩阵非零元素的长度根据实际情况动态调整,编码类型包括随机线性网络编码和稀疏网络编码。

优选的,udp所对应的udp信道和tcp连接所对应的tcp信道的信道模型均包括信息通道和分别位于信息通道两端的两个双端消息队列,信息通道包括两个文件描述符以及位于两个文件描述符之间的多个信道缓存,信道缓存中存放序列化之后的消息对象,双端消息队列为接收队列和发送队列,接收队列中存放的是读出的完整的消息对象,发送序列中存放的是将要发送的消息对象;

其中,用于传输控制信令的tcp连接所对应的tcp信道在整个传输工作过程中具有以下信道状态:非连接状态、预连接状态、连接状态、侦听状态和关闭状态,当节点主机在侦听连接请求时,tcp信道将处于侦听状态;当节点主机侦听到连接请求时,tcp信道就将切换到预连接状态;当节点主机与请求节点建立tcp连接成功之后,tcp信道将转变为连接状态;如果节点主机与请求节点建立tcp连接失败之后,tcp信道将转变为非连接状态;在通信结束后,tcp信道转变为关闭状态;

其中,tcp、udp两种信道都具有以下三种信道i/o触发事件:有数据可读、有数据可写以及信道出错,当信道的i/o触发事件为有数据可读时,从信道缓存中读取数据,如果信道内的数据构成的数据对象完整,则将该数据对象读取并存储到接收队列中,如果信道内的数据构成的数据对象不构成一个完整的数据对象,则将该数据对象读出并存储到接收队列中,当下一个数据过来时接着往后读;当信道的i/o触发事件为有数据可写时,完成待传输数据向信道写入的工作;如果连接突然断开,则将信道出错的信息通知给节点主机。

实施本发明的基于网络编解码和协作分发的视频点播方法以及系统,具有以下有益效果:本发明将网络编解码和协作分发进行耦合,网络编解码可有效提高数据传输速率,采用网络编码技术可到达网络多播传输的最大流界,提高信息的传输效率,协作分发可有效降低服务器端的负载压力,降低发送功率,在有限带宽的场景下,提升网络的服务响应速度,更重要的是,来自不同节点的数据分组可以联合解码,极大的提高了解码的速度,而且编码后的数据分组通过udp传输,一方面,解决了tcp传输分片数据需要不断地发送ack反馈信息而浪费大量的资源、产生时延的问题,另一方面,解决了udp不需要发送ack反馈信息而存在的丢包、数据重传、时延问题,本发明可以利用网络编码技术的纠删特性,来保证通过udp传输的数据的可靠性,避免了数据的重传,也就是说本发明的分片的传输,既具备现有的udp传输的优点,又解决了现有udp传输存在的缺点;进一步地,本发明在协作过程中将控制信令与数据内容传输完全进行分离,tcp将保证控制信令的可靠传输,确保系统调度的稳定性;udp将最小化数据分组的传输时延,而且udp只传输经过网络编码后的数据,这样依靠tcp的可靠传输特性就能确保系统调度的稳定性,依靠网络编码和udp结合可以降低视频数据的传输时延。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图:

图1是本发明的视频点播系统的结构示意图;

图2是较佳实施例的提供的视频点播系统的工作原理示意图;

图3是较佳实施例本的c/s模式下的数据分发时序图;

图4是较佳实施例本的协作模式下的数据分发时序图;

图5是tcp信道和udp信道的信道模型示意图;

图6是数据分组的结构图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本发明总的思路是:客户端在请求视频文件时,依序获取视频文件的多个视频分片,并在单个视频分片获取完毕时播放视频分片,其中,单个视频分片的获取包括:客户端节点从服务端节点获取某个视频分片对应的协作节点信息,所述协作节点信息包含已经请求了所对应的视频分片且尚未完全解码整个视频文件的客户端节点;客户端节点从服务端节点以及基于协作节点信息从其他可提供协作的协作节点,通过udp传输获取该某个视频分片经过网络编码后的数据分组直至客户端节点根据所接收到的所有来自不同节点的数据分组联合解码得到相应的视频分片,其中,协作节点发送的数据分组为其所接收的该某个视频分片的数据分组进行再编码后的数据分组。

为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

参考图1,本发明的基于网络编解码和协作分发的视频点播系统,包括两种类型的节点:客户端、服务端。任意两个节点之间通过通信网络通信。整个系统包括两个阶段:预处理阶段和内容分发阶段。预处理阶段可在网络流量的低峰期进行,内容分发阶段可在网络流量的高峰期执行,内容分发阶段包括两种数据分发模式:分别为c/s模式和客户端节点协作模式。图1中仅仅示意了最新请求某个视频分片的客户端n的数据分发模式,且客户端1~n-1表示的是在客户端n请求某个视频分片之前已经请求了该某个视频分片的客户端。

其中,服务端包括服务端模块、缓存部署模块、服务端网络编码模块、切片模块,客户端包括客户端模块、客户端网络编解码模块、点播模块。各个模块的作用如下:

切片模块,用于在预处理阶段,从数据库中获取视频文件,将视频文件以等时长切分方式将视频文件切片成多个视频分片;切片得到的视频分片具有类似的时长以及相同的视频封装容器,视频分片的时长大小(即所述等时长的大小)可根据实际部署的网络环境进行动态的调整,且每个视频分片都包含有若干个完整的gop(一组连续的帧画面,是可以进行单独播放的最小视频单位),各视频分片可独立地进行播放;

需要说明的是,以上所述的类似的时长,是指的这些视频分片的时长非严格相等,这是由于在保证切片之后的视频文件可以独立进行播放的要求,所得的视频分片必须包含一个或多个完整的gop单元,所以对视频的随机切入点必须放在i帧之前。如果在显示时间戳上设定的等时长点正好处于某个gop的i帧之前,那么该等时长点就作为实际的切入点;否则,如果等时长点出现在某个gop单元的b帧或者p帧之前,那么实际的切入点将往前移动,放在该gop单元的i帧之前。这样在显示时间戳上前移的实际切入点所切得的视频时长就会略微小于没有前移的实际切入点所切得的时间时长,这两种情况下所得的切片时长都严格小于等于设定的等时长点。

本发明中,服务端模块为每个视频分片维持一包含了该视频分片对应的协作节点信息的协作列表;服务端模块在每次接收到客户端的分片请求后,将该客户端的节点信息加入分片请求所对应的视频分片的协作列表中,以及在某个客户端完全解码整个视频文件时,将该某个客户端从所有的协作列表中删除。

服务端网络编码模块,用于将视频分片划分为多个源数据分组,然后将多个源数据分组进行网络编码得到编码后的数据分组;

缓存部署模块,用于参考视频文件的流行度以及网络中用户的行为,选取相关的缓存部署策略,在预处理阶段将切片得到的视频分片通过服务端网络编码模块进行网络编码后的数据分组部署到客户端的缓存空间中;

客户端网络编解码模块,用于将获取到的数据分组进行网络解码得到视频分片,还可用于将获取到的数据分组再次进行网络编码后得到可以发送给其他客户端节点的数据分组;

所述客户端模块用于在内容分发阶段多次执行以下过程以实现依序获取所请求的视频文件的视频分片:从服务端获取某个视频分片的协作节点信息,从服务端以及基于协作节点信息从其他可提供协作的协作节点获取该某个视频分片经过网络编码后的数据分组,直至根据所接收到的所有来自不同节点的数据分组联合解码得到相应的视频分片,其中,所述协作节点信息包含已经请求了所对应的视频分片且尚未完全解码整个视频文件的所有客户端节点;

所述点播模块用于在单个视频分片获取完毕时播放视频分片。

其中,所述服务端网络编码模块包括编码器,客户端网络编解码模块包括编码器和译码器。编码器在对视频分片进行网络编码时,需要传入相应的编码参数,编码参数包括分片大小、源数据包大小以及数量、ldpc校验开销、编码矩阵非零元素的长度、编码类型、预编码开关、二进制编码开关和编码矩阵的生成种子,分片大小为经所述切片模块切片所得的视频分片的大小,源数据包大小以及数量以及编码矩阵非零元素的长度根据实际情况动态调整,编码类型包括随机线性网络编码和稀疏网络编码。当执行稀疏网络编码时,预编码开关需要开启,设为1;二进制编码开关若设为0,则编码系数的有限域空间为2,若设为1,则编码系数的有限域空间为256;编码矩阵的生成种子用来确定编码矩阵,在译码时需要将其封装在编码后的数据分组内并传送给译码器。

优选的,本发明在内容分发阶段将控制信令与分片编码后的数据分组的传输进行分离,客户端与服务器之间,客户端与客户端之间,均会建立两条tcp和一条udp。udp用于传输编码后的数据分组,一条tcp连接用于传输控制信令,另一条tcp连接用于传输活跃信号。tcp将保证控制信令的可靠传输,确保系统调度的稳定性;udp将最小化数据分组的传输时延,在满足不同用户的多并发请求的前提下,可有效降低控制信令的复杂度,并且实现简单。更重要的是,编码后的数据分组只通过udp传输,这样一方面,解决了tcp传输分片数据需要不断地发送ack反馈信息而浪费大量的资源、产生时延的问题,另一方面,解决了udp不需要发送ack反馈信息而存在的丢包、数据重传、时延问题,由于本发明可以利用网络编码技术的纠删特性,来保证通过udp传输的数据的可靠性,避免了数据的重传,也就是说本发明的分片的传输,既具备现有的udp传输的优点,又解决了现有udp传输存在的缺点。

优选的,每个客户端在下载视频文件的过程中维持一个发送列表和一个接收列表,发送列表中包含正在给当前客户端发送数据分组的协作节点,接收列表中包含正在接收当前客户端发送的数据分组的协作节点,各客户端维持的发送列表和接收列表随着组内协作节点的活跃状态的变化更新,确保协作过程的稳定运行。

参考图2,较佳实施例给出了三节点之间内容分发阶段的过程,三个节点分别为:客户端1、2和服务端,图中tcp1、tcp3、udp1是表示作为接收方时的信道,tcp2、tcp4、udp2是表示作为发送方的信道。

假如客户端1先于客户端2向服务端请求视频文件,客户端1此时仅仅是作为接收方,服务端将经过编码器编码后的数据分组通过udp发送给客户端1,同时通过tcp连接发送编码参数给客户端1,客户端1接收到数据分组后将其存入缓存空间,客户端1的译码器会根据服务端发送的编码参数以及缓存中接收的数据分组进行解码,如果解码出视频分片,则及时播放,并通知服务端结束该视频分片的数据分组的发送,然后客户端会向服务端请求下一个视频分片。假如在客户端1的文件接收过程中,客户端2也向服务端发起了文件请求,则客户端2可以同时从服务端和客户端1获取视频分片,此时,客户端1既是服务端的接收方,又是客户端2的发送方,客户端1可以将缓存中的客户端2所需要的视频分片(该视频分片可以为客户端1已经解码的或者正在解码的)的数据分组进行再编码后发送给客户端2,同时还需要将再编码的编码参数通过tcp连接发送给客户端2。客户端2是服务端和客户端1的接收方,客户端2可以根据服务端发送的编码参数和客户端1发送的编码参数,将从服务端获取的数据分组和从客户端1获取的数据分组,进行联合解码,所以解码速度极大提升。

下面结合图3-4,详细说明较佳实施例中的整个分发过程为:

参考图3,在c/s模式下,服务端轮询侦听套接字,客户端向服务端发送包含文件名的请求,服务端接收到件请求之后向客户端回复文件元信息,所述文件元信息包括:会话窗口标识符、分片标识符、会话窗口中的编码参数、文件名、文件尺寸和文件的切片数量。

客户端记录文件元信息后,向服务端发送包含某个视频分片的序列号(即文件元信息中的分片标识符)的请求,然后客户端与服务端建立关于该分片的服务会话窗口,客户端再请求该某个视频分片的协作列表,服务端将该视频分片的协作列表发送至客户端,再将客户端的节点信息加入该视频分片对应的协作列表中。

客户端接收到协作列表后,会同时基于两种数据分发模式依序下载各个视频分片。参考图3,一方面,客户端基于c/s模式,获取服务端发送的该某个视频分片经过编码器网络编码后的数据分组;参考图4,另一方面,客户端会根据协作列表里面的协作节点信息去尝试与这些节点建立连接并发送分片请求,比如客户端2会根据协作列表向客户端1发送该某个分片的协作请求,如果客户端1同意协作,则回复同意并将客户端1中的编码器的编码参数发送给客户端2,客户端2收到回复后将客户端1加入发送列表,同时客户端1回复同意协作之后会在其接收列表中添加客户端2,然后客户端1可以根据发送列表向客户端2发送经过编码后的视频分片。这里建立发送列表和接收列表的目的,是为了维护信息安全,即只有成功回复了同意协作的那些节点,客户端才会从同意协作的节点接收发过来的数据分组。

继续参考图3、4,一方面,客户端在接收某个视频分片的数据分组的过程中,会不断给为其发送数据分组的服务端和协作节点发送活跃信息表明其处于活跃状态,如果服务端和发送数据分组的协作节点没接收到活跃信息,则可以认为对方掉线,可以停止为对方发送数据分组,而且在客户端未解码出当前视频分片之前,服务端和协作节点会一直发送编码后的数据分组,直至客户端根据两种模式接收的数据分组将某个分片解码完成时,客户端会发送请求停止信号,通知服务器和给该客户端发送数据分组的协作节点其即将退出当前分片的接收。客户端以上述的分片请求过程完成对剩下的所有视频分片的请求。另外,在客户端处于活跃状态的整个过程中,还要响应其他请求了同一视频文件的客户端节点的协作要求,为其发送自己当前所请求文件的视频分片,这些发送的视频分片包括已解码的和正在解码的。

参考图3、4,另一方面,客户端在发送视频分片的过程中,在整个视频文件解码完成之后,客户端1会分别通知服务器与接受列表中的协作节点其即将退出文件请求和协作过程并不再处于活跃状态。例如,如果客户端1完成了视频文件的接收和解码,如图3-4中,则客户端1会通知服务端和客户端2,然后服务端将客户端1从所有的协作列表中删除,客户端2将客户端1从发送列表中删除,之后客户端1再将客户端2从接收列表中删除,退出协作过程。

另外,在协作模式下,现有的套接字轮询策略无法解决客户端与协作节点之间的双向协作阻塞问题,为了在客户端实现双向非阻塞协作,本发明在常规的socket通信基础上抽象出三种信道模型,分别为管道信道、与tcp连接对应的tcp信道和与udp传输对应的udp信道。所述udp信道又可进一步细分为仅发送的udp信道和仅接收的udp信道。

参考图5,udp信道和tcp信道的信道模型均包括信息通道34和分别位于信息通道34两端的两个双端消息队列31,信息通道34包括两个文件描述符32以及位于两个文件描述符32之间的多个信道缓存33,信道缓存33中存放序列化之后的消息对象(例如,udp信道缓存33中存储的是序列化之后的待发送或者待接收的数据分组的字节数据),双端消息队列31为接收队列和发送队列,接收队列中存放的是读出的完整的消息对象,发送序列中存放的是将要发送的消息对象。

其中,管道信道实现主机进程间通信(例如:客户端开启的协作进程和客户端主进程之间的通信或者服务器端开启的窗口服务进程和服务器端主进程之间的通信),保证在大并发情况下系统各功能模块的高效运行,实现了节点协作、译码和视频实时播放的同步进行。tcp信道用来完成控制信令以及活跃信号的传输工作;仅发送的udp信道完成为接收列表中的协作节点分发编码后的数据分组的工作;仅接收的udp信道完成从发送列表中的协作节点处接收编码后的数据分组的工作。其中tcp传输的数据无需经过网络编码,而udp传输的数据经过网络编码之后再传输。另外,所述的tcp信道在其承担控制信令的传输工作时,整个过程中将会呈现出五种信道状态,分别为:非连接状态、预连接状态、连接状态、侦听状态和关闭状态,这些信道状态出现在建立连接过程的各个时段:例如当节点主机在侦听连接请求时,信道将处于侦听状态;当节点主机侦听到连接请求时,信道就将切换到预连接状态;当节点主机与请求节点建立tcp连接成功之后,信道状态将转变为连接状态;相应的如果节点主机与请求节点建立tcp连接失败之后,信道状态将转变为非连接状态;最终在通信结束后,信道状态会转变为关闭状态。

其中,节点主机在和请求节点建立连接并完成相应的控制信令传输工作时,tcp、udp两种信道都具有以下三种信道i/o触发事件:有数据可读、有数据可写以及信道出错,当信道的i/o触发事件为有数据可读时,通过文件描述符从信道缓存中读取数据,如果信道内的数据构成的数据对象完整,则将该数据对象读取并存储到接收队列中,如果信道内的数据构成的数据对象不构成一个完整的数据对象,则将该数据对象读出并存储到接收队列中,当下一个数据过来时接着后面读;当信道的i/o触发事件为有数据可写时,会通知节点主机完成待传输数据向信道写入的工作;如果连接突然断开,那么信道出错的信息将会通知给节点主机。本发明中优于传统轮询策略的设计在于所述两种信道有数据可读的状态都是非阻塞模式,尤其是在读取不完整数据对象时,该设计会直接读取现有的数据内容并在下次轮询过程中继续对该信道中所剩的属于前一数据对象的内容进行读取,这显然可以提高轮询的效率,增强系统整体的响应速度。

图6给出了本发明中数据分组的结构,数据分组的结构包括信息类型341、信息大小342、数据体343,数据分组的包头长度固定,包头中包含两个整形长度成员信息,分别表示数据体343的信息类型341和数据体343的信息大小342。由于信道的读写操作都是发生在非阻塞套接字情况下,各信道的读取状态必须进行标记,所以在发送数据分组之前必须将数据体的信息类型和信息大小包含在数据分组的头部字节流中。

基于同一发明构思,本发明还公开了一种基于网络编解码和协作分发的视频点播方法,所述方法包括:

s100、在预处理阶段,服务端节点将视频文件切片成多个视频分片;

s200、参考视频文件的流行度以及网络中用户的行为,选取相关的缓存部署策略,在预处理阶段将切片得到的视频分片进行网络编码后的数据分组部署到客户端节点的缓存空间中;

s300、在内容分发阶段,客户端节点通过发送包含视频文件的文件名的请求至服务端节点,服务端节点返回该视频文件的文件元信息至客户端节点,所述文件元信息包括编码参数、分片信息;

s400、依序获取所请求的视频文件的视频分片,并在单个视频分片获取完毕时播放视频分片;

其中,单个视频分片的获取包括:

s410、客户端节点向服务端节点请求某个视频分片的协作列表,服务端节点将该视频分片的协作列表发送至客户端,再将客户端节点的信息加入该视频分片对应的协作列表中;

s420、客户端节点接收到协作列表后,向服务端节点发送某个视频分片的分片请求,以及向协作节点信息中的所有协作节点发送某个视频分片的协作请求;

s430、服务端节点以及协作节点分别将该某个视频分片通过网络编码后的数据分组通过udp连接发送至客户端,直至客户端节点根据所接收到的所有来自不同节点的数据分组联合解码得到相应的视频分片。

本发明中,客户端节点与服务端节点以及客户端节点与客户端节点之间的通道均包括:两条tcp和一条udp,udp只用于传输数据分组,一条tcp连接用于传输控制信令,另一条tcp连接用于传输活跃信号。

s500、在客户端节点完全解码整个视频文件时,将该个客户端节点从所有的协作列表中删除。

方法部分详细内容参考上述系统部分的内容,此处不再赘述。

综上所述,实施本发明的基于网络编解码和协作分发的视频点播方法以及系统,具有以下有益效果:本发明将网络编解码和协作分发进行耦合,网络编解码可有效提高数据传输速率,采用网络编码技术可到达网络多播传输的最大流界,提高信息的传输效率,协作分发可有效降低服务器端的负载压力,降低发送功率,在有限带宽的场景下,提升网络的服务响应速度,更重要的是,来自不同节点的数据分组可以联合解码,极大的提高了解码的速度,而且编码后的数据分组通过udp传输,一方面,解决了tcp传输分片数据需要不断地发送ack反馈信息而浪费大量的资源、产生时延的问题,另一方面,解决了udp不需要发送ack反馈信息而存在的丢包、数据重传、时延问题,本发明可以利用网络编码技术的纠删特性,来保证通过udp传输的数据的可靠性,避免了数据的重传;进一步地,本发明在协作过程中将控制信令与数据内容传输完全进行分离,tcp将保证控制信令的可靠传输,确保系统调度的稳定性;udp将最小化数据分组的传输时延,而且udp只传输经过网络编码后的数据,这样依靠tcp的可靠传输特性就能确保系统调度的稳定性,依靠网络编码和udp结合可以降低视频数据的传输时延。

上述描述涉及各种模块。这些模块通常包括硬件和/或硬件与软件的组合(例如固化软件)。这些模块还可以包括包含指令(例如,软件指令)的计算机可读介质(例如,永久性介质),当处理器执行这些指令时,就可以执行本发明的各种功能性特点。相应地,除非明确要求,本发明的范围不受实施例中明确提到的模块中的特定硬件和/或软件特性的限制。需要指出的是,上文对各种模块的描述中,分割成这些模块,是为了说明清楚。然而,在实际实施中,各种模块的界限可以是模糊的。例如,本文中的任意或所有功能性模块可以共享各种硬件和/或软件元件。又例如,本文中的任何和/或所有功能模块可以由共有的处理器执行软件指令来全部或部分实施。另外,由一个或多个处理器执行的各种软件子模块可以在各种软件模块间共享。相应地,除非明确要求,本发明的范围不受各种硬件和/或软件元件间强制性界限的限制。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1