一种VR直播的码流分发、装置、系统及存储介质
文献发布时间:2024-04-18 20:00:50
技术领域
本发明涉及虚拟显示(Virtual Reality,VR)直播技术领域,尤其涉及一种VR直播的码流分发、装置、系统及存储介质。
背景技术
随着VR技术的快速发展,VR技术在直播领域得到了广泛应用,因此,VR直播应用而生。如今,在线教育、体育赛事、综艺节目及旅游等领域都使用了VR直播。
然而,在实际应用中,由于VR的特殊性,用户通过客户端实际能看到的VR直播画面只有180°或360°全景画面的六分之一。码流分发端将全景画面传输至客户端时,传送的全景画面是高清画面,但是经过客户端的VR播放器的处理,用户看到的VR直播画面会变成标清画面,导致画面模糊。而如果想要使用户通过客户端观看到高清VR直播画面,需要码流分发端向客户端分发超高清的全景画面,然而,码流分发端的码流分发能力有限,如码流分发端与客户端间的传输带宽无法满足传输要求。因此,如何让用户看到高清的VR直播画面,提升观看效果,变得至关重要。
发明内容
本发明提供了一种VR直播的码流分发、装置、系统及存储介质,码流分发能力不足时,仍可有效保证所有用户都可以观看到清晰的VR直播画面。
根据本发明的一方面,提供了一种VR直播的码流分发方法,应用于码流分发系统,所述方法包括:
实时获取至少两个局部区域码流,并将所述至少两个局部区域码流分别分发至对应的目标客户端;其中,所述局部区域码流为对VR视频流的预设区域进行编码后的码流;
当监测到码流分发能力不足时,将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,并确定所述相似度最高的目标码流组;
向编码端发送码流合并请求,并接收所述编码端发送的目标合并区域码流;其中,所述目标合并区域码流为所述编码端响应于所述码流合并请求,生成的包含所述目标码流组中的每个码流在所述VR视频流所处区域的码流;
基于所述目标合并区域码流替换所述目标码流组中的两个码流,并将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端。
根据本发明的另一方面,提供了一种VR直播的码流分发装置,应用于码流分发系统,所述装置包括:
局部区域码流分发模块,用于实时获取至少两个局部区域码流,并将所述至少两个局部区域码流分别分发至对应的目标客户端;其中,所述局部区域码流为对VR视频流的预设区域进行编码后的码流;
相似度计算模块,用于当监测到码流分发能力不足时,将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,并确定所述相似度最高的目标码流组;
目标合并区域码流接收模块,用于向编码端发送码流合并请求,并接收所述编码端发送的目标合并区域码流;其中,所述目标合并区域码流为所述编码端响应于所述码流合并请求,生成的包含所述目标码流组中的每个码流在所述VR视频流所处区域的码流;
目标合并区域码流分发模块,用于基于所述目标合并区域码流替换所述目标码流组中的两个码流,并将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端。
根据本发明的另一方面,提供了一种码流分发系统,所述码流分发系统包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的VR直播的码流分发方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的VR直播的码流分发方法。
本发明实施例的VR直播的码流分发方案,应用于码流分发系统,所述方法包括:实时获取至少两个局部区域码流,并将所述至少两个局部区域码流分别分发至对应的目标客户端;其中,所述局部区域码流为对VR视频流的预设区域进行编码后的码流;当监测到码流分发能力不足时,将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,并确定所述相似度最高的目标码流组;向编码端发送码流合并请求,并接收所述编码端发送的目标合并区域码流;其中,所述目标合并区域码流为所述编码端响应于所述码流合并请求,生成的包含所述目标码流组中的每个码流在所述VR视频流所处区域的码流;基于所述目标合并区域码流替换所述目标码流组中的两个码流,并将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端。通过本发明实施例提供的技术方案,在码流分发能力不足时,可有效保证所有用户都可以观看到清晰的VR直播画面,提升了用户的观看体验。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例一提供的一种VR直播的码流分发方法的流程图;
图2a为本发明实施例提供的一种局部区域码流对应画面的效果示意图;
图2b为本发明实施例提供的一种全图像码流对应画面的效果示意图图3a为本发明实施例提供的一种两个码流的显示画面的示意图;
图3b为本发明实施例提供的生成的目标合并区域码流的效果示意图;
图4a为本发明实施例提供的目标码流组中的两个码流供用户观看的效果示意图;
图4b为本发明实施例提供的目标合并区域码流供用户观看的效果示意图;
图5a为本发明实施例提供的一种码流分发示意图;
图5b为本发明实施例提供的一种码流分发示意图;
图5c为本发明实施例提供的一种码流分发示意图;
图5d为本发明实施例提供的一种码流分发示意图;
图6为本发明实施例提供的一种第五目标码流与第六目标码流的关系示意图;
图7为本发明实施例二提供的一种VR直播的码流分发方法的流程图;
图8为本发明实施例三提供的一种VR直播的码流分发装置的结构示意图;
图9为实现本发明实施例的VR直播的码流分发方法的码流分发系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供了一种VR直播的码流分发方法的流程图,本实施例可适用于VR直播过程中对码流进行分发情况,该方法可以由VR直播的码流分发装置来执行,该VR直播的码流分发装置可以采用硬件和/或软件的形式实现,该VR直播的码流分发装置可配置于码流分发系统中。如图1所示,该方法包括:
S110、实时获取至少两个局部区域码流,并将所述至少两个局部区域码流分别分发至对应的目标客户端;其中,所述局部区域码流为对VR视频流的预设区域进行编码后的码流。
VR直播是VR技术与直播的结合,其中,VR直播的流程包括以下几个步骤:一、通过VR摄像机或全景摄像机(如双鱼眼摄像机)的每个镜头实时采集对应视角范围内的局部画面,并将局部画面拼接完整的VR视频画面(也可以称为VR视频流);二、编码端对VR摄像机或全景摄像机传输的VR视频流进行编码压缩,生成待传输的码流;三、码流分发端从编码端获取待传输的码流,并将待传输的码流分发至成千上万的客户端,以使用户通过客户端观看VR直播,其中,客户端观看VR直播的方式多种多样,可以包括网页跳转链接,小程序以及应用程序等;四、客户端可以根据用户输入的视频转动指令,给用户提供不同角度的VR直播画面。
在本发明实施例中,编码端从采集端(VR摄像机或全景摄像机)VR视频流,将VR视频流分成N+1路(其中,N为大于等于2的整数),其中,一路对整个VR视频流进行编码,生成全图像码流,另外N路对VR视频流的N个不同预设区域进行编码,生成N个局部区域码流。N个局部区域码流可以为分别对从VR视频流的不同预设区域截取的视频流进行编码,生成的码流。其中,N个预设区域间可以包含重叠区域,也可以不包含重叠区域。例如,N个局部区域码流中可以包括对VR视频流的中心区域的视频流进行编码生成的码流,以及对VR视频流的非中心区域的视频流进行编码生成的码流。其中,中心区域的大小与客户端的播放能力适配,例如,客户端只能观看VR全景直播画面的六分之一,则中心区域可以为VR视频流对应画面的六分之一。可选的,中心区域还可以为VR视频流对应画面的五分之一,此时,可以将中心区域超出客户端播放能力的外围区域作为缓冲区。示例性的,图2a为本发明实施例提供的一种局部区域码流对应画面的效果示意图,图2b为本发明实施例提供的一种全图像码流对应画面的效果示意图。码流分发系统从编码端实时获取全图像码流和N个局部区域码流。
由于客户端显示VR直播画面时,只能显示VR视频流的部分区域,例如,只能显示VR视频流六分之一,因此,即使将整个VR视频流对应的全图像码流传输至客户端,客户端在某一时刻也只能显示部分区域,导致传输的码流较大,但是客户端显示的码流较小,从而使得用户通过客户端观看的VR直播画面不清晰。因此,在本发明实施例中,只将N个局部区域码流分别分发至对应的目标客户端。可以理解的是,每个局部区域码流对应的目标客户端可以相同,也可以不同,例如,目标客户端可以为一个,也可以为多个,本发明实施例对目标客户端的数量不做限定。
S120、当监测到码流分发能力不足时,将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,并确定所述相似度最高的目标码流组。
在本发明实施例中,编码端的编码能力有限,例如最多可以对10路视频流进行编码,从而导致码流分发系统只能分发10路码流。或者,由于受网络带宽的影响,码流分发系统分发能力有限,导致码流分发系统分发的码流数量不能超过某个上限值,否则,会导致码流分发中断。因此,当监测到码流分发系统的码流分发能力不足时,将至少两个局部区域码流中的每两个码流作为局部码流组。例如,有四个局部区域码流,分别为U1、U2、U3、U4,则局部码流组包括(U1、U2)、(U1、U3)、(U1、U4)、(U2、U3)、(U2、U4)及(U3、U4)。计算每个局部码流组中包含的两个码流间的相似度。例如,可以将局部码流组中的两个码流间的重叠区域的面积作为两个码流间的相似度,重叠区域的面积越大,相似度越大。可选的,计算所述局部码流组中的两个码流间的相似度,包括:确定所述局部码流组中的两个码流间的重叠区域;根据所述重叠区域的面积与所述两个码流的区域面积和的比值,确定所述局部码流组中的两个码流间的相似度。示例性的,确定局部码流组中的两个码流间的重叠区域,并计算重叠区域的面积及两个码流的区域面积,将重叠区域的面积与两个码流区域面积的和的比值,作为局部码流组中的两个码流间的相似度。例如,图3a为本发明实施例提供的一种两个码流的显示画面的示意图,如图3a所示,两个码流的显示画面的四个顶点分别是A1(a11,a12),A2(a21,a22),A3(a31,a32),A4(a41,a42)和B1(b11,b12),B2(b21,b22),B3(b31,b32),B4(b41,b42),则两个码流间的相似度为:(a41-b21)*(a42-b32)/((a41-a21)*(a42-a32)+(b41-b21)*(b42-b32))。
在本发明实施例中,从所有的局部码流组中选取相似度最高的局部码流组作为目标码流组。示例性的,有六个局部区域码流,分别为U1、U2、U3、U4、U5、U6,则每个局部码流组中的两个码流间的相似度可以表示为f(Ui,Uj),其中,i=1,2,3,4,5,6,j=1,2,3,4,5,6,i!=j,并确定f(Ui,Uj)最大的局部码流组作为目标码流组。
S130、向编码端发送码流合并请求,并接收所述编码端发送的目标合并区域码流;其中,所述目标合并区域码流为所述编码端响应于所述码流合并请求,生成的包含所述目标码流组中的每个码流在所述VR视频流所处区域的码流。
在本发明实施例中,码流分发系统并向编码端发送码流合并请求,编码端响应于码流合并请求,确定目标码流组中的每个码流在VR视频流所处的区域,并从VR视频流中截取包含目标码流组中的每个码流在VR视频流所处的区域的区域视频流,然后对截取的区域视频流进行编码生成目标合并区域码流。编码端将目标合并区域码流发送至码流分发系统。可选的,所述编码端基于预设合并规则生成目标合并区域码流;其中,所述预设合并规则包括:所述编码端确定所述目标码流组中的每个码流在所述VR视频流所处位置区域;确定所述目标码流组中的每个码流对应的位置区域的并集区域;对所述VR视频流中包含所述并集区域的最小矩形区域进行编码,生成目标合并区域码流。
示例性的,图3b为本发明实施例提供的生成的目标合并区域码流的效果示意图,如图3b所示,目标码流组中包含的两个码流分别为图3a中的码流A1A2A3A4和码流B1B2B3B4,码流A1A2A3A4在VR视频流所处位置区域为矩形A1A2A3A4所处区域(也即矩形区域A1A2A3A4),码流B1B2B3B4在VR视频流所处位置区域为矩形B1B2B3B4所处区域(也即矩形区域B1B2B3B4)。确定矩形区域A1A2A3A4及矩形区域B1B2B3B4的并集区域,从VR视频流中截取包含该并集区域的最小矩形区域A1C2C3B4的视频流,并对该视频流进行编码,生成目标合并区域码流A1C2C3B4。
S140、基于所述目标合并区域码流替换所述目标码流组中的两个码流,并将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端。
码流分发系统将目标码流组中的两个码流删除,并接收到编码端传输的目标合并区域码流分发至目标码流组中的每个码流的接收端。可以理解的是,在向编码端发送码流合并请求前,码流分发系统分别将目标码流组中的两个码流分发至对应的客户端,以通过客户端供对应的用户观看。示例性的,图4a为本发明实施例提供的目标码流组中的两个码流供用户观看的效果示意图。如图4a所示,用户1和用户2分别通过对应的客户端观看目标码流组中的码流A1A2A3A4,用户3和用户4分别通过对应的客户端观看目标码流组中的码流B1B2B3B4。图4b为本发明实施例提供的目标合并区域码流供用户观看的效果示意图。如图4b所示,当编码端对码流A1A2A3A4和码流B1B2B3B4进行合并,生成目标合并区域码流A1C2C3B4后,码流分发系统从编码端获取目标合并区域码流A1C2C3B4,并将目标合并区域码流A1C2C3B4分别分发至用户1、用户2、用户3及用户4对应的客户端,以分别供用户1、用户2、用户3及用户4分别通过对应的客户端观看目标合并区域码流A1C2C3B4。
可选的,在将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端之后,还包括:判断所述码流分发能力是否充足,若否,则基于所述目标合并区域码流更新所述至少两个局部区域码流,并返回执行将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,直至所述码流分发能力充足。示例性的,在基于目标合并区域码流替换目标码流组中的两个码流,并将目标合并区域码流分发值目标码流组中每个码流的接收端后,可能仍然会存在码流分发能力不足的情况,因此,进一步判断码流分发能力是否充足,若否,则基于目标合并区域码流更新原来的至少两个局部区域码流,并返回执行S120-S140,直至码流分发系统的码流分发能力充足为止。这样设置的好处在于,可以有效保证在码流分发系统的码流分发能力充足的情况下,向客户端分发码流,从而可以进一步保证能够将码流成功分发至对应的客户端。
在一些实施例中,当所述码流分发能力充足时,若接收到第一客户端发送的超出第一目标码流覆盖区域的视频转动请求时,获取全图像码流,并将所述第一目标码流切换为所述全图像码流分发至所述第一客户端;其中,所述第一客户端为所述目标客户端中的任意客户端,所述第一目标码流为分发至所述第一客户端的局部区域码流,所述全图像码流为对所述VR视频流进行编码后的码流。这样设置的好处在于,在码流分发能力不足时,仍可有效保证所有用户都可以观看到清晰的VR直播画面,提升了用户的观看体验。
在本发明实施例中,在码流分发能力充足时,码流分发系统将至少两个局部区域码流分别分发至对应的目标客户端后,目标客户端显示对应的局部区域码流,以供用户观看。目标客户端实时检测是否接收到用户输入的视频转动指令,当目标客户端中的任意客户端(为了方便描述,此时称为第一客户端)接收到用户输入的视频转动指令时,判断所述视频转动指令对应的转动区域是否处于第一客户端对应的第一目标码流的覆盖区域,若是,则说明当前分发至第一客户端的第一目标码流可以满足用户的观看需求,此时,根据视频转动指令自由旋转第一目标码流供用户观看。当第一客户端确定视频转动指令对应的转动区域超出第一客户端对应的第一目标码流的覆盖区域时,说明用户想要观看VR视频流的其他区域的VR视频画面,此时,第一客户端向码流分发系统发送视频转动请求,码流分发系统响应于该视频转动请求,将第一目标码流切换为全图像码流分发至第一客户端。其中,全图像码流为对VR视频流进行编码生成的码流。可以理解的是,码流分发系统终止向第一客户端发送第一目标码流,而是将全图像码流分发至第一客户端,这样可以使得第一客户端基于视频转动指令显示全图像码流中任意区域的VR视频画面。可选的,将全图像码流分发至第一客户端时,全图像码流的帧率小于将第一目标码流分发至第一客户端时第一目标码流的帧率,例如,全图像码流的帧率为第一目标码流的帧率的一半,这样设置的好处在于,可以有效避免全图像码流传输过程中出现卡顿。
可以理解的是,在码流分发系统接收到第一客户端发送的超出第一目标码流覆盖区域的视频转动请求之前,码流分发系统只向目标客户端分发至少两个个局部区域中对应请求的码流,而全图像码流是不会被分发至目标客户端的。图5a为本发明实施例提供的一种码流分发示意图,如图5a所示,码流分发系统从编码端获取到一个全图像码流和五个局部区域码流(分别为局部区域码流1、局部区域码流2、局部区域码流3、局部区域码流4、局部区域码流5),则码流分发系统在未接收到任何客户端发送视频转动请求前,只将五个局部区域码流分别分发至对应的客户端(客户端1-客户端8),不对全图像码流进行分发操作。图5b为本发明实施例提供的一种码流分发示意图,如图5b所示,当码流分发系统接收到客户端1发送的超出第一目标码流覆盖区域(也即客户端1从码流分发系统接收到的局部区域码流)的视频转动请求时,终止向客户端1发送原来分发的局部区域码流1,而是将全图像码流分发至客户端1。
在一些实施例中,在将所述第一目标码流切换为所述全图像码流分发至所述第一客户端之后,还包括:当接收到所述第一客户端发送的停转位置时,判断所述停转位置是否超出所述至少两个局部区域码流中任一局部区域码流的覆盖区域;当所述停转位置超出所述至少两个局部区域码流中任一局部区域码流的覆盖区域时,向编码端发送码流生成请求;其中,所述码流生成请求中包括所述停转位置;接收所述编码端发送的第二目标码流;其中,所述第二目标码流为所述编码端响应于所述码流生成请求,根据所述停转位置及所述VR视频流重新生成的局部区域码流;将所述全图像码流切换为所述第二目标码流分发至所述第一客户端。这样设置的好处在于,既可以使用户通过客户端观看感兴趣的VR直播视频画面,还可以保证用户观看的VR直播视频画面的清晰度。
在本发明实施例中,当第一客户端检测到用户停止转动VR视频画面时,第一客户端确定停转位置并将停转位置发送至码流分发系统,如将光标在全图像码流的所处位置确定为停转位置。码流分发系统判断所述停转位置是否处于所述至少两个局部区域码流中任一局部区域码流的覆盖区域,也即判断停转位置是否超出所述至少两个局部区域码流中的任意一个目标区域码流的覆盖区域。当停转位置超出至少两个局部区域码流中每个局部区域码流的覆盖区域时,也即至少两个局部区域码流中不存在停转位置处于对应覆盖区域的局部区域码流,说明当前至少两个局部区域码流不包含用户感兴趣的VR视频画面,因此,码流分发系统向编码端发送码流生成请求,其中,码流生成请求中包括停转位置。编码端响应于码流生成请求,根据停转位置从实时获取的VR视频流中截取目标区域流,并对预设编码算法对目标区域流进行编码,生成第二目标码流,其中,目标区域流为包含所述停转位置的VR视频画面。码流分发系统接收编码端传输的第二目标码流,并将全图像码流切换为第二目标码流分发至第一客户端。也即,码流分发系统终止向第一客户端分发全图像码流,而是将第二目标码流分发至第一客户端。
图5c为本发明实施例提供的一种码流分发示意图。如图5c所示,当码流分发系统接收到的客户端1发送的停转位置超出五个局部区域码流中的每个局部区域码流的覆盖区域时,从编码端新获取第二目标码流,其中,第二目标码流为根据停转位置重新生成的新的局部区域码流。终止向客户端1发送全图像码流,而是将新生成的第二目标码流分发至客户端1。
可选的,当所述停转位置处于所述至少两个局部区域码中任一局部区域码流的流覆盖区域时,根据所述停转位置从所述至少两个局部区域码流中选取包含所述停转位置的任一局部区域码流作为第三目标码流,并将所述全图像码流切换为所述第三目标码流分发至所述第一客户端。示例性的,当停转位置处于所述至少两个局部区域码流中的任一局部区域码流的覆盖区域时,说明当前至少两个局部区域码流中存在某个或某几个码流包含用户感兴趣的VR视频画面,此时,从至少两个局部区域码流中选取能够覆盖停转位置的任一局部区域码流作为第三目标码流。将全图像码流切换为第三目标码流分发至第一客户端,码流分发系统终止向第一客户端分发全图像码流,而是将第三目标码流分发至第一客户端。图5d为本发明实施例提供的一种码流分发示意图。如图5d所示,当码流分发系统接收到的客户端发送的停转位置处于五个局部区域码流中任一局部区域码流的覆盖区域时,码流分发系统从五个局部区域码流中选取包含停转位置的任一局部区域码流作为第三目标码流,例如,将局部区域码流3确定为第三目标码流。终止向客户端1发送全图像码流,而是将局部区域码流3分发至客户端1。
在一些实施例中,在将所述全图像码流切换为所述第二目标码流分发至所述第一客户端之后,还包括:将所述第二目标码流添加至所述至少两个局部区域码流中,以更新局部区域码流。在本发明实施例中,将从编码端新获取的第二目标码流添加至原有的至少两个局部区域码流中。如原来的局部区域码流的数量为N,则更新后的局部区域码流的数量为N+1。当码流分发系统再次接收到客户端发送的视频转动请求时,由原来分发至该客户端的局部区域码流切换为全图像码流分发至该客户端。当接收到该客户端发送的停转位置时,判断停转位置是否处于N+1个局部区域码流中任一局部区域码流的覆盖区域,若是,则从N+1个局部区域码流中选取切换分发至该客户端的码流,若否,则从编码端再次获取新的码流。
在一些实施例中,还包括:针对所述至少两个局部区域码流中的每个局部区域码流,每隔预设时长确定所述局部区域码流的目标区域;其中,所述目标区域为接收所述局部区域码流的第二客户端显示所述局部区域码流的子区域的并集;向编码端发送码流缩减请求,并接收所述编码端发送的第四目标码流;其中,所述码流缩减请求中包括所述目标区域,所述第四目标码流为所述编码端响应于所述码流缩减请求,根据所述目标区域及所述VR视频流生成的码流,所述第四目标码流在所述VR视频流所处的区域包含所述目标区域;基于所述第四目标码流替换所述局部区域码流,并将所述第四目标码流分发至所述第二客户端。
在本发明实施例中,码流分发系统可以将同一局部区域码流分发至多个客户端,每个客户端显示的局部区域码流的画面区域不完全相同,以满足每个客户端对应的用户对该局部区域码流的感兴趣画面区域的观看需求。因此,为了使局部区域码流分发的更顺畅,可以针对至少两个局部区域码流中的每个局部区域码流,每隔预设时长确定接收局部区域码流的第二客户端显示该局部区域码流的子区域,并对所有子区域取并集,确定局部区域码流的目标区域。可以理解的是,局部区域码流的目标区域为所有第二客户端对应的用户的观看区域和。码流分发系统向编码端发送码流缩减请求,其中,码流缩减请求中包括目标区域。编码端响应于码流缩减请求,在VR视频流中截取包含目标区域的局部视频流,并对局部视频流进行编码,生成第四目标码流。其中,第四目标码流在VR视频流对应的区域小于该局部区域码流对应的区域,且第四目标码流在VR视频流所处的区域包含目标区域。码流分发系统接收编码端传输的第四目标码流,并基于第四目标码流替换所述局部区域码流,然后将第四目标码流分发至第二客户端。
可选的,码流分发系统判断局部区域码流对应的区域是否大于所述目标区域的110%,若是,则删除局部区域码流,并向编码端发送码流缩减请求,以通过编码端将局部区域码流缩减为第四目标码流。示例性的,可以通过编码端将局部区域码流缩减为目标区域的110%,其中,多出的10%是缓冲区,让用户有一定的空间可以自由控制而不需要切换码流。图6为本发明实施例提供的一种第四目标码流与缩减前的对应的局部区域码流的关系示意图。
实施例二
图7为本发明实施例二提供的一种VR直播的码流分发方法的流程图。如图7所示,该方法包括:
S710、实时获取至少两个局部区域码流,并将所述至少两个局部区域码流分别分发至对应的目标客户端;其中,所述局部区域码流为对VR视频流的预设区域进行编码后的码流。
S720、判断码流分发能力是否充足,如是,则执行S730,否则,执行S7120。
S730、若接收到第一客户端发送的超出第一目标码流覆盖区域的视频转动请求时,获取全图像码流,并将所述第一目标码流切换为所述全图像码流分发至所述第一客户端;其中,所述第一客户端为所述目标客户端中的任意客户端,所述第一目标码流为分发至所述第一客户端的局部区域码流,所述全图像码流为对所述VR视频流进行编码后的码流。
S740、若接收到第一客户端发送的停转位置时,判断停转位置是否处于所述至少两个局部区域码流中任一局部区域码流的覆盖区域,若是,则执行S780,否则,执行S750。
S750、向编码端发送码流生成请求;其中,码流生成请求中包括停转位置。
S760、接收编码端发送的第二目标码流;其中,第二目标码流为编码端响应于码流生成请求,根据停转位置及VR视频流重新生成的局部区域码流。
S770、将全图像码流切换为第二目标码流分发至第一客户端。
S780、从所述至少两个局部区域码流中选取包含所述停转位置的任一局部区域码流作为第三目标码流,并将所述全图像码流切换为所述第三目标码流分发至所述第一客户端。
S790、针对所述至少两个局部区域码流中的每个局部区域码流,每隔预设时长确定所述局部区域码流的目标区域;其中,所述目标区域为接收所述局部区域码流的第二客户端显示所述局部区域码流的子区域的并集。
S7100、向编码端发送码流缩减请求,并接收所述编码端发送的第四目标码流;其中,所述码流缩减请求中包括所述目标区域,所述第四目标码流为所述编码端响应于所述码流缩减请求,根据所述目标区域及所述VR视频流生成的码流,所述第四目标码流在所述VR视频流所处的区域包含所述目标区域。
S7110、基于所述第四目标码流替换所述局部区域码流,并将所述第四目标码流分发至所述第二客户端。
S7120、将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,并确定所述相似度最高的目标码流组。
S7130、向编码端发送码流合并请求,并接收所述编码端发送的目标合并区域码流;其中,所述目标合并区域码流为所述编码端响应于所述码流合并请求,生成的包含所述目标码流组中的每个码流在所述VR视频流所处区域的码流。
S7140、基于所述目标合并区域码流替换所述目标码流组中的两个码流,并将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端。
通过本发明实施例提供的技术方案,在现有传输带宽的基础上,可有效保证所有用户都可以观看到清晰的VR直播画面,提升了用户的观看体验。
实施例三
图8为本发明实施例三提供的一种VR直播的码流分发装置的结构示意图。如图8所示,该装置包括:
局部区域码流分发模块810,用于实时获取至少两个局部区域码流,并将所述至少两个局部区域码流分别分发至对应的目标客户端;其中,所述局部区域码流为对VR视频流的预设区域进行编码后的码流;
相似度计算模块820,用于当监测到码流分发能力不足时,将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,并确定所述相似度最高的目标码流组;
目标合并区域码流接收模块830,用于向编码端发送码流合并请求,并接收所述编码端发送的目标合并区域码流;其中,所述目标合并区域码流为所述编码端响应于所述码流合并请求,生成的包含所述目标码流组中的每个码流在所述VR视频流所处区域的码流;
目标合并区域码流分发模块840,用于基于所述目标合并区域码流替换所述目标码流组中的两个码流,并将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端。
可选的,所述相似度计算模块,用于:
确定所述局部码流组中的两个码流间的重叠区域;
根据所述重叠区域的面积与所述两个码流的区域面积和的比值,确定所述局部码流组中的两个码流间的相似度。
可选的,所述编码端基于预设合并规则生成目标合并区域码流;其中,所述预设合并规则包括:
所述编码端确定所述目标码流组中的每个码流在所述VR视频流所处位置区域;
确定所述目标码流组中的每个码流对应的位置区域的并集区域;
对所述VR视频流中包含所述并集区域的最小矩形区域进行编码,生成目标合并区域码流。
可选的,所述装置还包括:
循环执行模块,用于在将所述目标合并区域码流分发至所述目标码流组中的每个码流的接收端之后,判断所述码流分发能力是否充足,若否,则基于所述目标合并区域码流更新所述至少两个局部区域码流,并返回执行将所述至少两个局部区域码流中的每两个码流作为局部码流组,计算所述局部码流组中的两个码流间的相似度,直至所述码流分发能力充足。
可选的,所述装置还包括:
全图像码流切换分发模块,用于当所述码流分发能力充足时,若接收到第一客户端发送的超出第一目标码流覆盖区域的视频转动请求时,获取全图像码流,并将所述第一目标码流切换为所述全图像码流分发至所述第一客户端;其中,所述第一客户端为所述目标客户端中的任意客户端,所述第一目标码流为分发至所述第一客户端的局部区域码流,所述全图像码流为对所述VR视频流进行编码后的码流。
可选的,所述装置还包括:
停转位置判断模块,用于在将所述第一目标码流切换为所述全图像码流分发至所述第一客户端之后,若接收到所述第一客户端发送的停转位置时,判断所述停转位置是否处于所述至少两个局部区域码流中任一局部区域码流的覆盖区域;
码流生成请求发送模块,用于当所述停转位置未处于所述至少两个局部区域码流中任一局部区域码流的覆盖区域时,向编码端发送码流生成请求;其中,所述码流生成请求中包括所述停转位置;
第二目标码流分发模块,用于接收所述编码端发送的第二目标码流;其中,所述第二目标码流为所述编码端响应于所述码流生成请求,根据所述停转位置及所述VR视频流重新生成的局部区域码流;
将所述全图像码流切换为所述第二目标码流分发至所述第一客户端。
可选的,所述装置还包括:
第三目标码流分发模块,用于若所述停转位置处于所述至少两个局部区域码流中任一局部区域码流的覆盖区域时,从所述至少两个局部区域码流中选取包含所述停转位置的任一局部区域码流作为第三目标码流,并将所述全图像码流切换为所述第三目标码流分发至所述第一客户端。
可选的,所述装置还包括:
目标区域确定模块,用于针对所述至少两个局部区域码流中的每个局部区域码流,每隔预设时长确定所述局部区域码流的目标区域;其中,所述目标区域为接收所述局部区域码流的第二客户端显示所述局部区域码流的子区域的并集;
第四目标码流接收模块,用于向编码端发送码流缩减请求,并接收所述编码端发送的第四目标码流;其中,所述码流缩减请求中包括所述目标区域,所述第四目标码流为所述编码端响应于所述码流缩减请求,根据所述目标区域及所述VR视频流生成的码流,所述第四目标码流在所述VR视频流所处的区域包含所述目标区域;
第四目标码流分发模块,用于基于所述第四目标码流替换所述局部区域码流,并将所述第四目标码流分发至所述第二客户端。
本发明实施例所提供的VR直播的码流分发装置可执行本发明任意实施例所提供的VR直播的码流分发方法,具备执行方法相应的功能模块和有益效果。
实施例四
图9示出了可以用来实施本发明的实施例的码流分发系统10的结构示意图。码流分发系统旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。码流分发系统还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图9所示,码流分发系统10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储码流分发系统10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
码流分发系统10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许码流分发系统10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如VR直播的码流分发方法。
在一些实施例中,VR直播的码流分发方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到码流分发系统10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的VR直播的码流分发方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行VR直播的码流分发方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在码流分发系统上实施此处描述的系统和技术,该码流分发系统具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给码流分发系统。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
- 一种用于A柱高低配卡扣共用的卡扣座
- 一种用于安装悬挂式灯具的灯具安装底座
- 一种新型灯具安装组件
- 一种光源板安装组件及照明灯具
- 一种星壤取芯软袋用拉绳系扣快速封口组件
- 一种用于灯具快速安装的卡扣组件
- 一种用于灯具快速安装的卡扣组件