CN105792021A - 一种视频流的传输方法及装置 - Google Patents
一种视频流的传输方法及装置 Download PDFInfo
- Publication number
- CN105792021A CN105792021A CN201410836214.2A CN201410836214A CN105792021A CN 105792021 A CN105792021 A CN 105792021A CN 201410836214 A CN201410836214 A CN 201410836214A CN 105792021 A CN105792021 A CN 105792021A
- Authority
- CN
- China
- Prior art keywords
- video
- streams
- sub
- subflow
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明实施例公开了一种视频流的传输方法及装置,涉及视频传输领域,提高视频流的传输的实时性,进而使视频播放更流畅。在本发明实施例中,对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数;视频播放客户端将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收对端视频播放客户端发送的视频子流的标识和视频子流所属的视频播放客户端信息,并存储;视频播放客户端根据视频流播放请求,查找待播放的视频子流的标识,并从待播放的视频子流所属的视频播放客户端下载视频子流;从而提高了视频流的传输的实时性。
Description
技术领域
本发明涉及视频传输领域,尤其涉及一种视频流的传输方法及装置。
背景技术
随着Internet的发展,多媒体数据在互联网上的传输变得越来越重要,其中,流式技术以其边下载边播放的特性深受广大用户欢迎。
目前,流式技术主要应用于视频流传输领域,在现有技术中,视频流传输方案主要通过对视频流数据进行分片并传输分片数据的方式实现,目前视频流传输方案具体为:视频播放客户端分别从CDN节点或者与其连接的客户端下载预先经过视频流分片处理的分片数据,在下载得到若干个连续的分片数据后,将各相邻的分片数据合并为一定长度的数据单元,对数据单元进行校验操作,并播放校验完成的数据单元,从而完成了视频流的传输和播放过程。
然而,由于直播技术对时延要求极高,几十秒的延迟会造成视频流播放的严重不流畅现象,而几秒的延迟也会造成视频流播放时的卡顿、抖动等现象;但在现有技术中,从下载分片数据到播放视频流数据中还需要对分片数据进行合并和对数据单元进行校验的过程,尤其当网络传输状况不佳时,以上过程一般需要经过至少几秒甚至几十秒。可见,现有技术中的视频流传输方法经常会出现播放卡顿、抖动或播放不流畅等现象传输方法会造成视频播放实时性差。
发明内容
本发明实施例提供一种视频流的传输方法及装置,用以提高视频流的传输的实时性,进而使视频播放更流畅。
本发明实施例提供了一种视频流的传输方法,该方法包括:
对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数;
视频播放客户端将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收所述对端视频播放客户端发送的视频子流的标识和所述视频子流所属的视频播放客户端信息,并存储;
视频播放客户端根据视频流播放请求,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流。
本发明实施例提供了一种视频流的传输装置,该装置包括:
子流划分单元,用于对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数;
子流分享单元,用于将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收所述对端视频播放客户端发送的视频子流的标识和所述视频子流所属的视频播放客户端信息,并存储;
子流下载单元,用于根据视频流播放请求,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流。
从上述技术方案可以看出,在本发明实施例中,首先,对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流;其次,视频播放客户端将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收所述对端视频播放客户端发送的视频子流的标识和所述视频子流所属的视频播放客户端信息,并存储;从而实现了各视频播放客户端之间对视频子流的分享过程;并且,当视频播放客户端接收到视频流播放请求时,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流;从而完成了视频子流传输和播放过程;这样,在本发明实施例中,视频播放客户端不需要对各视频子流进行校验,减少了现有技术中由于校验操作造成的时延,提高视频流的传输的实时性;同时,由于各视频播放客户端之间能够进行视频子流的分享和传输,提高了视频子流的传输效率,进而使视频播放更流畅。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种***架构;
图2为本发明实施例提供的另一种***架构;
图3为本发明实施例一种应用于WebP2P***中的视频流的传输方法的流程示意图;
图4为本发明实施例提供的节点列表的示意图;
图5为本发明实施例提供的P2P节点在各状态的切换示意图;
图6为本发明实施例提供的一种视频流的传输方法的流程示意图;
图7为本发明实施例提供的一种视频流的传输装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例可以应用于一种由各种类型的终端和服务器组成的***架构,图1示出了本发明实施例提供的一种由终端和服务器组成的***架构,如图1所示,各终端11可以向服务器12或其它终端请求待播放的视频流数据;尤其的,本发明实施例还可以适用于一种由若干个Peer节点和若干个CDN节点组成的***架构,图2示出了本发明实施例提供的一种由Peer节点CDN节点组成的***架构,如图2所示,各Peer节点21可以向CDN节点22或其它Peer节点请求待播放的视频流数据。
需要说明的是,本发明实施例中的CDN节点可以为各种提供视频流服务的服务器,本发明实施例中的Peer节点(为了描述方便,以下还可以简称为P2P节点)可以为各种视频播放客户端。
下面仅基于图2所示出的***架构,对本发明实施例提供的视频流的传输方法进行描述。需要说明的是,本发明实施例不仅限应用于图2所示出的***架构。
本发明实施例提供的方法可以较佳的应用于WebP2P***中,该***通常包括:至少一个CDN节点和多个Peer节点。图3示出了本发明实施例一种应用于WebP2P***中的视频流的传输方法的流程示意图,如图3所示,该流程可以包括:
步骤31:按照预设规则对存储于CDN节点上的视频流进行划分,获得相等或近似相等的N等份的子流数据,并为每个等份的子流设置子流标识。
具体实现时,在本发明实施例中,每个视频流需要按特定的规则分割成多个子数据流(即,视频子流,为了描述方便,以下简称为子流),并在视频流播放时,由P2P节点重新合并。其中,特定的规则允许视频流可以具有从1到最大值N的不同等分方式,即:可以将一视频流划分为1/2流,1/3流,1/4流等格式的子流;并且,相同等分下的流(例如,两个不同的1/4流)具有相同的平均码率。对被等分为N的流,可以使用整数0~(N-1)标识N个子流。
下面仅以举例的方式描述一个对任何编码帧上带有有效时间戳的视频流进行N等分的视频流划分方案:将时间戳的毫秒数按照1000的N等分,使不同编码帧归属到不同子流,对具有时间戳t(单位:毫秒ms)的编码帧,按如下公式计算其所属子流的标识:
M(t)=[round(t*N/1000)]modN
其中,t为编码帧的时间戳,round(a)为对a进行四舍五入运算,mod为取余数运算。
将属于相同标识的帧按照时间戳顺序组合成相应的子流;
下面再以举例的方式描述一个对任何编码帧上带有有效时间戳的视频流进行N等分的视频流划分方案:
将时间戳的毫秒数按照1000的N等分,使不同编码帧归属到不同子流,对具有时间戳t(单位:毫秒ms)的编码帧,按如下公式计算其所属子流的标识:
M(t)=[round(t*N/1000)/k]modN
将属于相同标识的帧按照时间戳顺序组合成相应的子流;
其中,t为编码帧的时间戳,round(a)为对a进行四舍五入运算,mod为取余数运算,k为预设轮转因子。其中,k必须是大于视频流最大参考组长度秒数的一个质数,如果最大参考组长度不超过1秒,k可以为1。轮转因子保证了子流码率的平均性。在上述方案中可以到达的理论最低播放延迟为k秒。
下面又以举例的方式描述一个对任何编码帧上带有有效时间戳的视频流进行视频流划分方案:
在本发明实施例中,视频流的基本数据可以包括:码率m、参考组长度s、轮转因子k、最小划分单元有效时长ts、最大下载能力倍率d*m为相对于码率的整数倍,且d为大于或等于2的整数。
其中,最小划分单元有效时长ts是预设参考值,即:当数据以码率m的速度传输时,传输每个子流中的一个最小单元所需的时间。例如对于视频流,如果子流按照每帧进行划分,则ts的取值可以是帧速(1/fps)。
在本发明实施例中,可以将视频流划分为N个最小划分单元,将由若干个相邻的最小划分单元组成一个上传划分单元,这样将该视频流划分为Nu个上传划分单元,其中Nu≤N且N必须被Nu整除。在本发明实施例中,上传划分单元为CDN传输到P2P节点的子流,一个P2P节点从CDN中获取的上传划分单元中包含的所有子流均可传输给其它P2P节点,由若干个相邻的最小划分单元组成一个上传划分单元需要一个简单的约定,例如:对8个最小划分单元,定义其中(0,1)(2,3)(4,5)(6,7)为4个上传划分单元。
下面又以举例的方式描述一个对任何编码帧上带有有效时间戳的视频流进行N等分的视频流划分方案:
将视频流中的全部编码帧按照(0,n1]、(n1+1,n2]……(nN-2+1,nN-1]的顺序将视频流划分为N个子流,其中,nN为所述视频流中的编码帧的总个数,且N为正整数。并按照上述的简单约定,将标记为{0:N-1}~{N-1:N-1}的N个子流组合成个上传划分单元,或称为上传子流。因此第i个上传子流对应于(i*2)和(i*2+1)两个子流。P2P节点选择一个上传子流并从CDN中下载,其它P2P节点可以向该P2P节点请求此节点从CDN下载的上传子流中的任何一个子流,或整个上传子流。
这样,任何节点(包括CDN节点和P2P节点)在传输中必须基于上述视频流划分方案进行传输。一个子流通常用两个整数{T:N}标识,其中N是等分数量,T(T=[0,N-1])是请求的流的标识。
例如,当N=8时,即:一个视频流进行8等分之后,得到8个子流,第一个子流的标识为{0:8}、第二个子流的标识为{1:8}、第三个子流的标识为{2:8}……最后一个子流的标识为{7:8}。
需要说明的是,本发明实施例不限于上述视频流划分方案,还可以使用各种视频流划分方式,这里不再赘述。
步骤32:每个P2P节点在上线时随机地选择从CDN下载的子流或上传划分子流,并通知所有与其连接的节点该子流的标识或该上传划分子流的标识。
具体实现时,每个P2P节点在上线时随机地选择一个标记Tu=[0,Nu],并通知所有与其连接的节点。P2P节点仅会向远程节点发送子流或上传划分子流。当前节点在本地创建一个列表,在收到其他节点发送的通知消息之后,将各节的子流信息在本地点存储,便于后续发送视频流请求。
举例来说,节点建立一个N元素的序列,每个元素包含一个节点列表,并按照远程节点发送的标记Tu将其加入到对应的节点列表中。注意Tu是对应于流Nu等分的标记,因此,一个远程节点将被加入多于一个节点列表(如果Nu<N)。并将CDN节点加入序列中全部的节点列表。图4示出了本发明实施例提供的节点列表的示意图,如图4所示,在Nu=N=4时,对视频流进行4等分时,第一个子流(子流0)对应的节点分别为CDN节点和标识为A的P2P节点,第二个子流(子流1)对应的节点分别为CDN节点、标识为B的P2P节点和标识为C的P2P节点,第三个子流(子流2)对应的节点分别为CDN节点和标识为E的P2P节点,第四个子流(子流3)对应的节点分别为CDN节点、标识为D的P2P节点和标识为F的P2P节点。需要注意的是:节点列表中CDN节点的数量不得多于d*m-1个,当有更多的CDN节点候选时,候补的CDN可以在之前CDN节点被淘汰后再加入。
步骤33:P2P节点根据当前播放进度确定待播放的子流,在本地保存的节点列表中查找到与待播放的子流对应的节点序列后,向节点序列中的全部或部分节点发送下载请求,并接收被请求节点返回的子流数据。
具体实现时,在节点之间传输视频流的过程中,为了避免网络不稳定影响视频流播放的实时性,本发明实施例可以采用以下的节点管理方法,即P2P节点对节点序列中每个节点序列,即每个子流独立地执行下列传输流程:
首先,P2P节点需要对每个节点序列中的节点进行传输超时检测,在本发明实施例中,传输超时时长应当为最小划分单元有效时长ts的N倍或预设时长。检测时应为可能的抖动留出合理余量。需要说明的是,本发明实施例中的传输超时时长可以根据实际需求进行调节。
下面以举例方式描述了一个超时检测的实现过程:
具体实现时,P2P节点以ts*N*0.4的时间周期对每个节点序列进行超时检测;如果某个节点序列在三个连续周期内没有数据传输,则判断为超时;如果缓冲区内的空穴(即未能成功下载的数据单元)和当前已获取的最新数据单元距离超过N*2个数据单元,空穴对应的序列判断为超时;
其次,对于被检测到超时的节点,其传输效能值Neff减1。其中,传输效能值可以用于表示该节点在预设时间间隔内的超时次数。
在本发明实施例中,P2P节点初始化时,对序列中的每个节点序列按照传输效能由大到小的顺序进行排序;向节点序列头部(即传输效能最高)的d*m个节点请求对应的子流(如果少于d*m个,则使用节点序列内全部节点)对正在传输的节点,必须分别检测其超时状况;如果节点序列中所有正在传输的节点都同时发生超时,则发出一个播放中断警告,提示数据流可能会卡顿或中断并重新初始化;在经过最低播放延迟时间之后,如果同时满足下列条件,则重新初始化:
条件一:在此时间内传输的非CDN节点都发生过超时;
条件二:节点序列中存在非CDN节点,其Neff>-3;
否则,进入正常传输状态,并按照下列规则,在之前进行了传输的节点中选择后续进行传输的节点,未被选择的节点必须被移动到列表尾部:
a)选择之前传输中未发生过超时的节点;
b)如果在a)之后仍然有多于1个节点,则如果该列表是节点标记为发送子流的列表,选择CDN节点,否则,选择P2P节点;
c)如果b)之后仍然有多于1个节点,选择Neff较大的节点;
d)如果c)之后仍然有多于1个节点,以其他机制进行选择(随机或其它参数)。
通过上述步骤对P2P节点进行初始化之后,可以进行正常视频流传输(即为正常传输状态),一旦正常传输的节点发生超时现象,则可以进行节点切换(即为节点切换状态)。下面以举例的方式分别对正常传输过程和节点切换过程进行分别描述。其中,图5示出了本发明实施例提供的P2P节点在各状态的切换示意图,如图5所示,该切换过程可以包括:
在正常传输状态时,由节点序列中的头部的节点进行传输。如果发生传输超时,则将当前节点序列中的头部节点移动到尾部,并进入节点切换状态。在图5中,实线示出了节点超时后的切换路径,虚线示出了节点传输正常时的切换路径。
在节点切换过程中允许最多x个节点切换状态,x为预设值(通常为1),并少于节点列表中当前元素的数量,分别标记为切换状态1,2……x。在切换状态m(m<x-1)下,对应的子流仍由列表中头部的节点进行传输,如果发生传输超时,则将当前列表头部节点移动到尾部,并进入切换状态m+1;当达到切换状态x时,进入初始化。如果在最低播放延迟时间之后未发生传输超时,则以当前列表的状态恢复至正常传输。
本发明实施例还提供了一种节点管理流程,该流程包括:节点效率重置、节点淘汰、节点加入、CDN重调度等过程。下面分别以举例的形式对每个过程进行描述。
效率重置:在一定周期内(例如若干个最小延迟时间),对周期内一直保持正常传输的远程节点的Neff进行提升或重置为0。
节点淘汰:远程节点在Neff低于预设阈值(例如Neff=-3)时被清除出节点列表。
CDN重调度:如果CDN节点被淘汰,并且满足下列条件时,应当发起CDN重调度,并获取新的CDN节点:条件一:节点序列中存在至少一个空的远程节点列表,即对应的子流没有任何可用数据源;条件二:被标记为发送子流的列表中不再存在CDN节点。
节点加入:一个节点被加入到节点序列所在的节点列表时,根据此列表的状态应当采取如下不同的操作:
操作一:在正常播放状态下,如果满足下列条件中任意一个,则将节点加入到列表头部,并转换到节点切换1状态;条件一:加入节点是CDN节点;列表是被标记为发送子流的序列,且当前传输节点不是CDN节点;条件二:加入节点是P2P节点;且当前传输节点是CDN节点。如果不满足以上条件,则将节点加入到列表尾部。
操作二:在节点切换状态下,节点不能在节点切换状态加入到列表中。下面给出一个实现示例:在切换状态下,将节点加入到待定列表;在列表恢复到正常播放状态后,如果待定列表中包含节点,则执行节点加入。
操作三:在初始化状态下,如果满足下列条件中任意一个,则节点加入到列表头部,并立刻启动一次新的初始化。条件一:当前列表中的节点少于dm个;条件二:加入节点是CDN节点;列表是被标记为发送子流的序列,且当前传输节点不包含CDN节点;条件三:加入节点是P2P节点;列表不是被标记为发送子流的序列,且当前传输节点不包含P2P节点。如果不满足以上条件,则将节点加入到列表尾部。
步骤34:P2P节点根据接收的子流数据播放完整视频流数据。
具体实现时:当节点接收其他节点发送的子流{Tu:Nu}后,根据子流的标记,按照每个编码帧的时间戳进行子流合并,获得完整视频流进行播放。
需要说明的是,本发明实施例还提供一种处于空闲状态的P2P节点为其它P2P节点分享视频流的方法,其中P2P在空闲时向CDN节点请求下载任意视频流的子流数据,并在下载成功后向其它P2P节点发送通知消息。
这样,本发明实施例通过将视频流划分成N个子流,不同的P2P节点将从CDN下载的部分数据分享至其他P2P节点,由当前P2P节点进行合并、播放,提高了播放的实时性;同时,每个P2P节点仅分享从CDN下载的部分视频流,因此即使从其它节点接收到不可靠的数据,也不会将其再次分享导致错误数据在P2P网络中的扩散,从而可以免去数据校验的步骤,提升了播放的实时性。
从上述技术方案可以看出,在本发明实施例中,首先,对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流;其次,视频播放客户端将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收所述对端视频播放客户端发送的视频子流的标识和所述视频子流所属的视频播放客户端信息,并存储;从而实现了各视频播放客户端之间对视频子流的分享过程;并且,当视频播放客户端接收到视频流播放请求时,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流;从而完成了视频子流传输和播放过程;这样,在本发明实施例中,视频播放客户端不需要对各视频子流进行校验,减少了现有技术中由于校验操作造成的时延,提高视频流的传输的实时性;同时,由于各视频播放客户端之间能够进行视频子流的分享和传输,提高了视频子流的传输效率,进而使视频播放更流畅;提升了用户体验。
结合上述具体应用场景的描述,本发明实施例提供一种视频流的传输方法,图6示出了本发明实施例提供的一种视频流的传输方法的流程示意图,如图6所示,该方法包括:
步骤61:对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数。
步骤62:视频播放客户端将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收对端视频播放客户端发送的视频子流的标识和视频子流所属的视频播放客户端信息,并存储。
步骤63:视频播放客户端根据视频流播放请求,查找待播放的视频子流的标识,并从待播放的视频子流所属的视频播放客户端下载视频子流。
可选的,在上述步骤61中,本地已下载的视频子流为:视频播放客户端随机选择的从CDN节点下载的至少一个视频子流。
可选的,在上述步骤63中,视频播放客户端根据视频流播放请求确定视频子流的标识;视频播放客户端查找本地存储的视频子流的标识,若查找到,则从标识所属的视频客户端或CDN节点下载视频子流,否则,从CDN节点下载视频子流。
可选的,在上述步骤61中,由CDN节点根据视频流中的每个编码帧的时间戳,对视频流划分得到N个视频子流。
可选的,在上述步骤61中,将视频流中的全部编码帧按照(0,n1]、(n1+1,n2]……(nN-2+1,nN-1]的顺序将视频流划分为N个子流,nN为视频流中的编码帧的总个数,N为正整数;或者
按照公式M(t)=[round(t*N/1000)]modN
将视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;
其中,t为编码帧的时间戳,round(a)为对a进行四舍五入运算,mod为取余数运算。
可选的,在上述步骤61中,按照公式M(t)=[round(t*N/1000)/k]modN
将视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;
其中,t为编码帧的时间戳,round(a)为对a进行四舍五入运算,mod为取余数运算,k为预设轮转因子。其中k必须是大于视频流最大参考组长度秒数的一个质数,如果最大参考组长度不超过1秒,k可以为1。轮转因子保证了子流码率的平均性。在上述方案中可以到达的理论最低播放延迟为k秒。其中视频流最大参考组长度为视频流中相邻两个视频关键帧之间的时间间隔,可以从视频信息中获取。
需要说明的是,上述图3和6所示出的视频流的传输方法不仅适用于图2所示出的***架构,还适用于其它可用于进行视频流分享及传输的***架构,这里不再赘述。
基于相同的技术特征,本发明实施例提供了一种用于执行上述视频流的传输方法的传输装置,图7示出了本发明实施例提供的一种视频流的传输装置,该装置包括:
子流划分单元71,用于对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数;
子流分享单元72,用于将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收对端视频播放客户端发送的视频子流的标识和视频子流所属的视频播放客户端信息,并存储;
子流下载单元73,用于根据视频流播放请求,查找待播放的视频子流的标识,并从待播放的视频子流所属的视频播放客户端下载视频子流。
可选的,子流分享单元72具体用于:从CDN节点下载至少一个视频子流。
可选的,子流下载单元73具体用于:视频播放客户端根据视频流播放请求确定视频子流的标识;视频播放客户端查找本地存储的视频子流的标识,若查找到,则从标识所属的视频客户端或CDN节点下载视频子流,否则,从CDN节点下载视频子流。
可选的,子流划分单元71具体用于:由CDN节点根据视频流中的每个编码帧的时间戳,对视频流划分得到N个视频子流。
可选的,子流划分单元71具体用于:将视频流中的全部编码帧按照(0,n1]、(n1+1,n2]……(nN-2+1,nN-1]的顺序将视频流划分为N个子流,nN为视频流中的编码帧的总个数,N为正整数;或者,按照公式M(t)=[round(t*N/1000)]modN将视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;其中,t为编码帧的时间戳,round(a)为对a进行四舍五入运算,mod为取余数运算。
可选的,子流划分单元71具体用于:按照公式M(t)=[round(t*N/1000)/k]modN将视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;其中,t为编码帧的时间戳,round(a)为对a进行四舍五入运算,mod为取余数运算,k为预设轮转因子。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器,使得通过该计算机或其他可编程数据处理设备的处理器执行的指令可实现流程图中的一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种视频流的传输方法,其特征在于,该方法包括:
对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数;
视频播放客户端将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收所述对端视频播放客户端发送的视频子流的标识和所述视频子流所属的视频播放客户端信息,并存储;
视频播放客户端根据视频流播放请求,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流。
2.如权利要求1所述的视频流的传输方法,其特征在于,所述本地已下载的视频子流为:
所述视频播放客户端随机选择的从CDN节点下载的至少一个视频子流。
3.如权利要求2所述的视频流的传输方法,其特征在于,所述视频播放客户端根据视频流播放请求,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流,包括:
视频播放客户端根据视频流播放请求确定视频子流的标识;
视频播放客户端查找本地存储的视频子流的标识,若查找到,则从所述标识所属的视频客户端或CDN节点下载所述视频子流,否则,从CDN节点下载所述视频子流。
4.如权利要求1所述的视频流的传输方法,其特征在于,所述对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,包括:
由所述CDN节点根据所述视频流中的每个编码帧的时间戳,对所述视频流划分得到N个视频子流。
5.如权利要求4所述的视频流的传输方法,其特征在于,所述对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,具体包括:
将所述视频流中的全部编码帧按照(0,n1]、(n1+1,n2]......(nN-2+1,nN-1]的顺序将所述视频流划分为N个子流,所述nN为所述视频流中的编码帧的总个数,所述N为正整数;或者
按照公式M(t)=[round(t*N/1000)]modN
将所述视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;
其中,所述t为编码帧的时间戳,所述round(a)为对a进行四舍五入运算,所述mod为取余数运算。
6.如权利要求4所述的视频流的传输方法,其特征在于,所述对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,具体包括:
按照公式M(t)=[round(t*N/1000)/k]modN
将所述视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;
其中,所述t为编码帧的时间戳,所述round(a)为对a进行四舍五入运算,所述mod为取余数运算,所述k为预设轮转因子。
7.一种视频流的传输装置,其特征在于,该装置包括:
子流划分单元,用于对存储于CDN节点上的视频流进行划分,获得N个相等或近似相等的视频子流,并为每个视频子流设置子流标识,其中N为大于1的整数;
子流分享单元,用于将本地已下载的视频子流的标识和自身信息发送给已经与其建立连接的对端视频播放客户端,并接收所述对端视频播放客户端发送的视频子流的标识和所述视频子流所属的视频播放客户端信息,并存储;
子流下载单元,用于根据视频流播放请求,查找待播放的视频子流的标识,并从所述待播放的视频子流所属的视频播放客户端下载所述视频子流。
8.如权利要求7所述的视频流的传输装置,其特征在于,所述子流分享单元具体用于:
从CDN节点下载至少一个视频子流。
9.如权利要求7所述的视频流的传输装置,其特征在于,所述子流播放单元具体用于:
视频播放客户端根据视频流播放请求确定视频子流的标识;
视频播放客户端查找本地存储的视频子流的标识,若查找到,则从所述标识所属的视频客户端或CDN节点下载所述视频子流,否则,从CDN节点下载所述视频子流。
10.如权利要求7所述的视频流的传输装置,其特征在于,所述子流划分单元具体用于:
由所述CDN节点根据所述视频流中的每个编码帧的时间戳,对所述视频流划分得到N个视频子流。
11.如权利要求10所述的视频流的传输装置,其特征在于,所述子流划分单元具体用于:
将所述视频流中的全部编码帧按照(0,n1]、(n1+1,n2]......(nN-2+1,nN-1]的顺序将所述视频流划分为N个子流,所述nN为所述视频流中的编码帧的总个数,所述N为正整数;或者
按照公式M(t)=[round(t*N/1000)]modN
将所述视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;
其中,所述t为编码帧的时间戳,所述round(a)为对a进行四舍五入运算,所述mod为取余数运算。
12.如权利要求10所述的视频流的传输装置,其特征在于,所述子流划分单元具体用于:
按照公式M(t)=[round(t*N/1000)/k]modN
将所述视频流中的全部编码帧由不同标识组成的N个子流,将具有相同标识M(t)的所有编码帧作为同一子流;
其中,所述t为编码帧的时间戳,所述round(a)为对a进行四舍五入运算,所述mod为取余数运算,所述k为预设轮转因子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410836214.2A CN105792021A (zh) | 2014-12-26 | 2014-12-26 | 一种视频流的传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410836214.2A CN105792021A (zh) | 2014-12-26 | 2014-12-26 | 一种视频流的传输方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105792021A true CN105792021A (zh) | 2016-07-20 |
Family
ID=56389751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410836214.2A Pending CN105792021A (zh) | 2014-12-26 | 2014-12-26 | 一种视频流的传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105792021A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106993054A (zh) * | 2017-05-05 | 2017-07-28 | 腾讯科技(深圳)有限公司 | 文件分发方法、节点及*** |
CN108810565A (zh) * | 2017-04-28 | 2018-11-13 | 华为技术有限公司 | 存储、调度媒体资源的方法、装置及分布式存储*** |
CN109889543A (zh) * | 2019-03-26 | 2019-06-14 | 广州华多网络科技有限公司 | 视频传输的方法、根节点、子节点、p2p服务器和*** |
CN109948574A (zh) * | 2019-03-27 | 2019-06-28 | 新华三技术有限公司 | 视频检测方法及装置 |
CN110535978A (zh) * | 2019-10-08 | 2019-12-03 | 湖南新云网科技有限公司 | 数据传输方法、装置、***及智能穿戴式设备和存储介质 |
CN111556344A (zh) * | 2020-04-04 | 2020-08-18 | 网宿科技股份有限公司 | 一种视频流的下载方法、装置、设备及*** |
CN113163214A (zh) * | 2020-01-22 | 2021-07-23 | 华为技术有限公司 | 一种视频处理方法及其装置 |
CN114339268A (zh) * | 2020-10-10 | 2022-04-12 | 腾讯科技(深圳)有限公司 | 一种直播数据处理方法、装置和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697554A (zh) * | 2009-09-27 | 2010-04-21 | 华中科技大学 | 一种p2p流媒体视频数据传输调度方法 |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及*** |
CN102158767A (zh) * | 2010-09-30 | 2011-08-17 | 大连理工大学 | 一种基于可扩展编码的对等网络流媒体直播*** |
-
2014
- 2014-12-26 CN CN201410836214.2A patent/CN105792021A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697554A (zh) * | 2009-09-27 | 2010-04-21 | 华中科技大学 | 一种p2p流媒体视频数据传输调度方法 |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及*** |
CN102158767A (zh) * | 2010-09-30 | 2011-08-17 | 大连理工大学 | 一种基于可扩展编码的对等网络流媒体直播*** |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108810565A (zh) * | 2017-04-28 | 2018-11-13 | 华为技术有限公司 | 存储、调度媒体资源的方法、装置及分布式存储*** |
CN106993054A (zh) * | 2017-05-05 | 2017-07-28 | 腾讯科技(深圳)有限公司 | 文件分发方法、节点及*** |
CN106993054B (zh) * | 2017-05-05 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 文件分发方法、节点及*** |
CN109889543A (zh) * | 2019-03-26 | 2019-06-14 | 广州华多网络科技有限公司 | 视频传输的方法、根节点、子节点、p2p服务器和*** |
CN109889543B (zh) * | 2019-03-26 | 2020-11-13 | 广州华多网络科技有限公司 | 视频传输的方法、根节点、子节点、p2p服务器和*** |
CN109948574A (zh) * | 2019-03-27 | 2019-06-28 | 新华三技术有限公司 | 视频检测方法及装置 |
CN110535978A (zh) * | 2019-10-08 | 2019-12-03 | 湖南新云网科技有限公司 | 数据传输方法、装置、***及智能穿戴式设备和存储介质 |
CN113163214A (zh) * | 2020-01-22 | 2021-07-23 | 华为技术有限公司 | 一种视频处理方法及其装置 |
CN111556344A (zh) * | 2020-04-04 | 2020-08-18 | 网宿科技股份有限公司 | 一种视频流的下载方法、装置、设备及*** |
CN114339268A (zh) * | 2020-10-10 | 2022-04-12 | 腾讯科技(深圳)有限公司 | 一种直播数据处理方法、装置和计算机可读存储介质 |
CN114339268B (zh) * | 2020-10-10 | 2023-08-29 | 腾讯科技(深圳)有限公司 | 一种直播数据处理方法、装置和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105792021A (zh) | 一种视频流的传输方法及装置 | |
US10939148B2 (en) | Playback synchronization among adaptive bitrate streaming clients | |
US9609371B2 (en) | Online video playing method and video playing server | |
EP2053859B1 (en) | A method and apparatus for reducing delay of media play | |
US10764610B2 (en) | Media user client, a media user agent and respective methods performed thereby for providing media from a media server to the media user client | |
CN102812683B (zh) | 用于在http流传输中进行自适应的方法和装置 | |
US11178200B2 (en) | Systems and methods for playing adaptive bitrate streaming content by multicast | |
US7975282B2 (en) | Distributed cache algorithms and system for time-shifted, and live, peer-to-peer video streaming | |
EP3393091B1 (en) | A method for cdn delay optimization and control for http live streaming | |
RU2647654C2 (ru) | Система и способ доставки аудиовизуального контента в клиентское устройство | |
CN109769023B (zh) | 一种数据传输方法、相关服务器和存储介质 | |
US11005975B2 (en) | Rapid optimization of media stream bitrate | |
EP3447970A1 (en) | Live broadcast system in peer-to-peer network and node management method | |
CN103517157A (zh) | 实现hls频道时移播放的方法及*** | |
CN105681828B (zh) | 一种节点连接调整方法和装置 | |
CN101420457B (zh) | 对等体下载数据分片的方法、装置及对等体 | |
PT2446602E (pt) | Método e aparelho para tratar um caminho quebrado numa rede ponto a ponto | |
CN109286957B (zh) | 一种回源链路的切换方法、装置、电子设备及存储介质 | |
CN111556344A (zh) | 一种视频流的下载方法、装置、设备及*** | |
JP2006515966A (ja) | ビデオ・オンデマンド用のチャネル・マージ | |
CN110048906B (zh) | 一种判断节点传输质量的方法、***、装置及服务器 | |
US9578077B2 (en) | Aggressive prefetching | |
EP2634998A1 (en) | Method and system for downloading real-time streaming media in peer-to-peer network | |
US10425458B2 (en) | Adaptive bit rate streaming with multi-interface reception | |
JP2008085826A (ja) | 情報送信装置、通信端末装置、情報送信プログラム及び情報通信プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160720 |
|
WD01 | Invention patent application deemed withdrawn after publication |