基于视频帧拆分的实时流媒体传输方法及***
(一)技术领域
本发明涉及一种P2P对等网中基于视频帧拆分的流媒体传输方法和***。
(二)背景技术
P2P是“peer-to-peer”的缩写,P2P也就可以理解为“点对点”的意思,或称为对等网。从网络传输的方式上来说,点对点是一种传输模式,传统传输方式包括广播和组播等。对等网的概念是指在网络拓扑结构中,存在很多设备和网络主机,只要是以单个网络主机开始到其他单个网络主机的数据传输都称为是点对点,与具体实现的软件、协议和方式无关。
P2P技术是一种用于不同PC用户之间,不经过服务器设备直接交换数据或服务的技术。它打破了传统的Client/Server模式,在对等网络中每个节点的地位都是相同的,具备客户端和服务器双重特性,可以同时作为服务使用者和服务提供者。由于P2P技术的飞速发展,互联网的存储模式将由目前的“内容位于中心”模式转变为“内容位于边缘”模式,改变Internet现在的以大网站为中心的状态,重返“非中心化”。
P2P实时流媒体技术是在P2P对等网基础上产生的流媒体应用。传统方式中,用户在互联网上观看视频流媒体,需要从服务器端下载一段视频数据,然后用户的电脑上播放一段,重复此过程,实现视频播放功能。因此C/S结构中用户只能从服务器端下载资源,而P2P流媒体使用户在观看视频流媒体时,可以与同时在观看该视频的用户之间进行资源利用,用户可以从这些用户中同时下载视频数据,该方法大大提高了效率与速度。P2P流媒体服务器首先将视频数据传输给几个用户,后面的用户不是从服务器直接获得数据,而是从前面的用户获得数据。
实时流媒体的数据是根据实况转播设备实时得到并压缩的,在P2P实时流媒体传输过程中,视频数据首先在服务器中进行压缩,然后以特定长度的时间段为分界,在P2P对等网中进行数据传输。因此,这种方式是一种粗粒度的传输方式,即传输过程中很难做到根据实际带宽的变化调整视频效果。也有采用自适应方法为多码率(MBR)压缩,该方法是在进行视频压缩的时候对多个码率进行计算,从而适应不同的客户端带宽。但是多码率压缩成倍的增加了服务器的负荷,而且视频传输还是按时间段进行的,并且对带宽波动的调整速度较慢。
(三)发明内容
为了克服已有技术中P2P对等网中实时流媒体的视频数据时段压缩的粗粒度性和网速波动自适应慢的不足,本发明提供一种能够支持多种视频压缩方法,在视频压缩帧的层次上进行细粒度拆分,拆分后的视频帧在P2P对等网拓扑结构中独立传输,可网速动态调整视频帧率的一种P2P对等网中基于视频帧拆分的流媒体传输方法及***。
本发明的技术方案是:
一种基于视频帧拆分的实时流媒体传输方法,包括以下步骤:
(1)控制流媒体服务器对整个P2P对等网的拓扑结构进行探测,获得对等网中的所有接收端节点的信息,包括互联网地址、可用端口、上行带宽、下行带宽;
(2)捕获原始视频数据并压缩:
发送端捕获设定的时间段内的原始视频位图数据,然后对视频数据进行压缩;
(3)拆分视频帧并封装网络传输单元:
(3.1)从视频数据中拆分出I帧、B帧或P帧;
(3.2)对每个拆分出的视频帧按先后顺序编号,并加入时间戳和帧类型标志;
(3.2)对每个视频帧、其编号、时间戳和帧类型标志进行封装;
I帧是帧内压缩方法产生的视频帧,因此可以独立解码,不依赖其他视频帧;B帧和P帧是帧间压缩方法,依赖其他的视频帧来进行解码。
(4)视频帧传输:
(4.1)发送端查找当前P2P对等网中连接到接收端的最优传输路径,即发送延迟最短的路径,最优路径是指由P2P对等网拓扑所提供的节点与节点之间延迟最短的一条通路,即传输延迟最短的转发节点序列,该路径通过询问各个已知路径判断得到;
(4.2)将一个视频帧通过该路径发送往接收端,并在每次发送过程中都重新查找最优传输路径;
(5)视频帧接收:
(5.1)接收端创建有时限的缓冲区,非该时限内到达的视频帧被丢弃;
(5.2)从P2P对等网中接收视频帧,并按时间戳顺序在限时缓冲区中排序存放;
(6)对限时缓冲区内的视频帧进行校验与调整:检查视频帧是否按照时间戳的先后顺序进行排列;P帧和B帧所依赖的视频帧是否存在于缓冲区中,如不存在,则将该P帧或B帧剔除出缓冲区;
(7)接收端解压并播放:接收端对限时缓冲区内经过校验与调整的视频数据进行解压。
所述的各种压缩算法包括H.261、H.263、MPEG2或MPEG4。
一种用基于视频帧拆分的实时流媒体传输方法构筑的***,主要包括:发送端和接收端:
所述的发送端包括:
探测模块:用于获得对等网中的所有接收端节点的信息;
路径计算模块:用于计算所有接收端节点的信息,得出最优传输路径;
视频捕获模块:用于从外部视频采集设备捕获视频的原始图像;
视频压缩模块:用于根据需要调用视频压缩算法,对原始视频数据进行压缩;
视频帧拆分模块:将压缩后的每个视频帧,从压缩的视频数据中拆分出来;
网络传输单元封装模块:用于对每个视频帧、其编号、时间戳和帧类型标志进行封装为P2P结构中的传输单元;
P2P对等网传输模块:用于将传输单元发送到P2P对等网中;
所述的接收端包括:
P2P对等网传输模块:用于从P2P对等网中接收传输单元;
限时缓冲区操作模块:用于建立和维持一个具有时间限制的缓冲区;
视频帧校验模块:用于检查视频帧是否按照时间戳的先后顺序进行排列;P帧和B帧所依赖的视频帧是否存在于缓冲区中,如不存在,则将该P帧或B帧剔除出缓冲区;
视频解码模块:用于根据需要调用各种现有的视频解压算法。
本发明的工作原理是:在现有P2P对等网的基础上,对实时流媒体传输方法进行改进,对于采用帧内压缩和帧间压缩混合的视频数据压缩方法均可以实现,包括H.261、H.263、MPEG2、MPEG4等。帧内压缩不使用运动补偿,不必参考其他帧进行压缩编码,只利用单帧图像内的空间相关性,是解码的基准帧。帧间压缩同时利用了图像信息空间和时间上的相关性,采用运动检测和前向时间预测,提高压缩效率和图像质量,其解码必须参考之前的帧。本方法将视频压缩数据中的I帧、P帧和B帧都独立拆分为单独的网络传输单元,并加入时间戳和依赖信息,将各个独立的网络传输单元通过P2P对等网传输路径传输到接收点,在限时缓冲区中进行临时存储。限时缓冲区用于存放一个时间段内的视频压缩数据,如果到达时限则整理缓冲区内已经接收到的视频帧的一致性和依赖性。将校验后的缓冲区进行视频解压即可得到对应的视频数据。受到网速波动的影响,可能有一个或多个视频帧在网络传输过程中丢失或未按时到达,则丢弃该帧,实现了对带宽波动提供不同视频帧率的细粒度自适应特性。
本发明所述的基于视频帧拆分的实时流媒体传输方法及***的有益效果主要表现在:1、对于视频图像采用帧内压缩和帧间压缩混合的视频数据压缩方法,可对使网络传输单元从基于时间段的视频压缩数据转变为细粒度的视频帧数据,进一步利用了P2P对等网的效率,提高了传输速度;2、设置缓冲区接收时限内的视频帧,并根据视频帧的相关性和时间戳进行排序和还原,并检查数据一致性,排除限时缓冲区中的无效视频帧,实现对网络带宽波动的自适应调整,为不同的用户提供不同的视频图像效果;3、可以在使用单一压缩方法的情况下自适应不同的播放帧率,从而降低流媒体服务器的负荷。
(四)附图说明
图1是基于视频帧拆分的实时流媒体传输方法的流程图。
图2是基于视频帧拆分的实时流媒体传输***的结构图。
(五)具体实施方式
下面结合附图对本发明作进一步描述。
实施例一
参见图1:一种基于视频帧拆分的实时流媒体传输方法,包括以下步骤:
(1)控制流媒体服务器对整个P2P对等网的拓扑结构进行探测,获得对等网中的所有接收端节点的信息,包括互联网地址、可用端口、上行带宽、下行带宽;
(2)捕获原始视频数据并压缩:
发送端捕获设定的时间段内的原始视频位图数据,然后对视频数据进行压缩;
(3)拆分视频帧并封装网络传输单元:
(3.1)从视频数据中拆分出I帧、B帧或P帧;
(3.2)对每个拆分出的视频帧按先后顺序编号,并加入时间戳和帧类型标志;
(3.2)对每个视频帧、其编号、时间戳和帧类型标志进行封装;
I帧是帧内压缩方法产生的视频帧,因此可以独立解码,不依赖其他视频帧;B帧和P帧是帧间压缩方法,依赖其他的视频帧来进行解码。
(4)视频帧传输:
(4.1)发送端查找当前P2P对等网中连接到接收端的最优传输路径,即发送延迟最短的路径,最优路径是指由P2P对等网拓扑所提供的节点与节点之间延迟最短的一条通路,即传输延迟最短的转发节点序列,该路径通过询问各个已知路径判断得到;
(4.2)将一个视频帧通过该路径发送往接收端,并在每次发送过程中都重新查找最优传输路径;
(5)视频帧接收:
(5.1)接收端创建有时限的缓冲区,非该时限内到达的视频帧被丢弃;
(5.2)从P2P对等网中接收视频帧,并按时间戳顺序在限时缓冲区中排序存放;
(6)对限时缓冲区内的视频帧进行校验与调整:检查视频帧是否按照时间戳的先后顺序进行排列;P帧和B帧所依赖的视频帧是否存在于缓冲区中,如不存在,则将该P帧或B帧剔除出缓冲区;
(7)接收端解压并播放:接收端对限时缓冲区内经过校验与调整的视频数据进行解压。
所述的各种压缩算法包括H.261、H.263、MPEG2或MPEG4。
基于视频帧拆分的流媒体传输方法,包括以下具体步骤:
第一步:流媒体服务器对整个P2P对等网的拓扑结构进行探测,得到对等网中的所有接收端节点的信息,包括互联网地址、可用端口、上行带宽、下行带宽。
第二步:对视频源数据进行捕获,原始数据是未经过压缩的位图格式。
第三步:捕获一定的时间段内的位图数据,然后对视频数据进行压缩,压缩算法为H.261、H.263、MPEG2或MPEG4等。
第四步:从视频压缩数据中拆分出每个视频帧,包括I帧、B帧和P帧。
第五步:给视频帧加上时间戳和依赖信息,封装为独立的传输单元,标记视频帧是否为I帧。
第六步:在P2P对等网中查找从发送端到接收端的当前最优路径,最优路径是指由P2P对等网拓扑所提供的节点与节点之间延迟最短的一条通路,即传输延迟最短的转发节点序列,该路径通过询问各个已知路径判断得到。该路径可能直接连接两个互联网主机,也可能通过一个或多个P2P中其他的转发节点。
第七步:发送端按时间顺序将一个传输单元发送到P2P对等网中。
第八步:检查是否所有包含视频帧的传输单元都发送到P2P对等网中,如果还有没有发送的,则跳转至第七步。
第九步:接收端创建时限缓冲区,该缓冲区具有一个时限,即在该时限内到达的视频帧有效。
第十步:接收端从对等网中接收传输单元,并将他们按时间戳顺序在限时缓冲区中排序存放。
第十一步:检查时限缓冲区中的视频帧是否接收完毕,如果接收完毕跳转至第十五步。
第十二步:检查当前时间是否超过时限缓冲区的时限,如果没超过则跳转至第十步。
第十三步:对限时缓冲区内的视频帧进行校验。视频帧的一致性校验对所有视频帧是否都按照时间戳的先后顺序进行排列。
第十四步:对视频帧的依赖性进行调整,如果视频帧是P帧或B帧,则其所依赖的其他视频帧必须也存在于缓冲区中,如果不存在,则将该视频帧剔除出缓冲区。
第十五步:对时限缓冲区内的视频帧进行解压。
第十六步:传输过程是否结束,如果未结束则跳转至第二步。
第十七步:传输过程结束,退出循环。
实施例二
参见图2:一种基于视频帧拆分的实时流媒体传输***,主要包括:发送端和接收端:
所述的发送端包括:
P2P网络操作模块:用于获得对等网中的所有接收端节点的信息,并计算所有接收端节点的信息,得出最优传输路径;
视频捕获模块:用于从外部视频采集设备捕获视频的原始图像;
视频压缩模块:用于根据需要调用视频压缩算法,对原始视频数据进行压缩;
视频帧拆分模块:将压缩后的每个视频帧,从压缩的视频数据中拆分出来;
网络传输单元封装模块:用于对每个视频帧、其编号、时间戳和帧类型标志进行封装为P2P结构中的传输单元;
P2P对等网传输模块:用于将传输单元发送到P2P对等网中;所述的接收端包括:
P2P对等网传输模块:用于从P2P对等网中接收传输单元;
限时缓冲区操作模块:用于建立和维持一个具有时间限制的缓冲区;
视频帧校验模块:用于检查视频帧是否按照时间戳的先后顺序进行排列;P帧和B帧所依赖的视频帧是否存在于缓冲区中,如不存在,则将该P帧或B帧剔除出缓冲区;
视频解码模块:用于根据需要调用各种现有的视频解压算法。
视频播放模块:播放解压后的视频图像。