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

直播流切换方法、装置、服务器、终端及程序产品

文献发布时间:2023-06-19 19:23:34


直播流切换方法、装置、服务器、终端及程序产品

技术领域

本申请实施例涉及直播技术领域,特别涉及一种直播流切换方法、装置、服务器、终端及程序产品。

背景技术

连麦是一种由至少两位主播在同一直播间内进行同步直播的模式,主播可以向观众或其它主播发起连麦请求,从而实现直播互动。在由普通直播切换为连麦或者结束连麦切换回普通直播的过程中,存在直播流的切换。网络较差的情况下会导致观众客户端拉流失败而黑屏的情况。

目前解决断流黑屏方法通常是在直播拉流端增加缓冲区进行提前拉流,然而该方案对终端硬件要求较高。由于观众的设备硬件和网络多种多样,一旦断流重拉,大多会存在不同程度的黑屏或视频卡顿等现象,且不支持缓冲功能的拉流端的黑屏现象更为严重。

发明内容

本申请实施例提供了一种直播流切换方法、装置、服务器、终端及程序产品。所述技术方案如下:

一方面,本申请提供了一种直播流切换方法,所述方法由云服务器执行,所述方法包括:

接收第一终端发送的第一直播流以及混流服务器发送的第二直播流,所述第二直播流为所述第一终端以及至少一个连麦终端的直播混流,所述第一终端用于在连麦后继续向所述云服务器发送所述第一直播流;

基于所述第一终端的断流情况或所述云服务器的拉流情况,将下行直播流由所述第一直播流切换为所述第二直播流,所述下行直播流为第二终端从云服务器处拉取的直播流,所述第二终端用于基于所述第二直播流展示连麦直播内容。

另一方面,本申请实施例提供了一种直播流切换方法,所述方法由第一终端执行,所述方法包括:

向云服务器发送第一直播流,所述云服务器用于向请求直播拉流的第二终端转发所述第一直播流;

响应于连麦指令,向混流服务器发送第三直播流,所述混流服务器用于对连麦终端发送的直播流进行混流生成第二直播流,所述云服务器用于在接收到所述第一直播流以及所述第二直播流的情况下,基于所述第一终端的断流情况或所述云服务器的拉流情况,将下行直播流由所述第一直播流切换为所述第二直播流;

响应于连麦时长达到流重叠时长,停止向所述云服务器发送所述第一直播流。

另一方面,本申请提供了一种直播流切换装置,所述装置包括:

拉流模块,用于接收第一终端发送的第一直播流以及混流服务器发送的第二直播流,所述第二直播流为所述第一终端以及至少一个连麦终端的直播混流,所述第一终端用于在连麦后继续向所述云服务器发送所述第一直播流;

推流模块,用于基于所述第一终端的断流情况或所述云服务器的拉流情况,将下行直播流由所述第一直播流切换为所述第二直播流,所述下行直播流为第二终端从云服务器处拉取的直播流,所述第二终端用于基于所述第二直播流展示连麦直播内容。

另一方面,本申请提供了一种直播流切换装置,所述装置包括:

推流模块,用于向云服务器发送第一直播流,所述云服务器用于向请求直播拉流的第二终端转发所述第一直播流;

连麦模块,用于响应于连麦指令,向混流服务器发送第三直播流,所述混流服务器用于对连麦终端发送的直播流进行混流生成第二直播流,所述云服务器用于在接收到所述第一直播流以及所述第二直播流的情况下,基于所述第一终端的断流情况或所述云服务器的拉流情况,将下行直播流由所述第一直播流切换为所述第二直播流;

控制模块,用于响应于连麦时长达到流重叠时长,停止向所述云服务器发送所述第一直播流。

另一方面,本申请提供了一种服务器,所述服务器包括处理器和存储器;所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如上述方面所述的由云服务器执行的直播流切换方法。

另一方面,本申请提供了一种终端,所述终端包括处理器和存储器;所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如上述方面所述的由第一终端执行的直播流切换方法。

另一方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现如上述方面所述的直播流切换方法。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。服务器的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该服务器执行上述方面的各种可选实现方式中提供的由云服务器执行的直播流切换方法;终端的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该终端执行上述方面的各种可选实现方式中提供的由第一终端执行的直播流切换方法。

本申请实施例提供的技术方案至少包括以下有益效果:

本申请实施例中,在由普通直播向连麦直播切换的过程中,主播端并行向云服务器和混流服务器推流,云服务器在一段时间内同时接收第一直播流和第二直播流,并基于第一终端的断流情况或云服务器的拉流情况进行切流。在云服务器接收到第二直播流之前第一直播流不断流,从而实现普通直播与连麦直播的无缝切换,解决主播端直接切换直播流导致混流延迟或断流,使观众端卡顿或黑屏的问题。并且,本申请实施例的方案对观众端的硬件要求较低,无需设置额外的缓冲区提前拉流。

附图说明

图1示出了本申请一个示例性实施例提供的实施环境;

图2示出了本申请一个示例性实施例提供的直播流切换方法的流程图;

图3示出了本申请一个示例性实施例提供的由普通直播切换至连麦直播过程的示意图;

图4示出了本申请另一个示例性实施例提供的直播流切换方法的流程图;

图5示出了本申请一个示例性实施例提供的直播界面切换过程的示意图;

图6示出了本申请一个示例性实施例提供的直播流切换的示意图;

图7示出了本申请另一个示例性实施例提供的直播流切换方法的流程图;

图8示出了本申请一个示例性实施例提供的由连麦直播切换至普通直播过程的示意图;

图9示出了本申请另一个示例性实施例提供的直播流切换方法的流程图;

图10示出了本申请另一个示例性实施例提供的直播流切换方法的流程图;

图11示出了本申请一个示例性实施例提供的直播流切换装置的结构框图;

图12示出了本申请另一个示例性实施例提供的直播流切换装置的结构框图;

图13示出了本申请一个示例性实施例提供的服务器的结构框图;

图14示出了本申请一个示例性实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

请参考图1,其示出了本申请实施例提供的一种实施环境。该实施环境中包括:第一终端、混流服务器、云服务器和第二终端。其中,第一终端和第二终端内运行有具有直播功能的应用程序。可选的,第一终端和第二终端上安装的应用程序是相同的,或两个终端上安装的应用程序是不同控制系统平台的同一类型应用程序。

第一终端为直播推流端,基于采集到的直播数据(例如音频数据、视频数据)生成并发送至云服务器进行直播推流。第二终端为直播拉流端,基于接收到的直播观看操作向云服务器发送直播拉流请求。云服务器负责接收各个直播间推流端发送的直播流,并向直播间对应的各个拉流端进行直播推流。混流服务器负责对相互连麦的直播间对应的直播流进行混流,并向云服务器发送连麦混流,由云服务器负责向连麦涉及到的各个直播间的第二终端转发连麦混流。

请参考图2,其示出了本申请一个示例性实施例提供的直播流切换方法的流程图。本实施例以该方法由云服务器执行为例进行说明。该方法包括如下步骤:

步骤201,接收第一终端发送的第一直播流以及混流服务器发送的第二直播流。

本申请实施例中,第一终端为直播推流端,基于采集到的直播数据(例如音频数据、视频数据)生成并发送至云服务器进行直播推流。第二终端为直播拉流端,基于接收到的直播观看操作向云服务器发送直播拉流请求。云服务器负责接收各个直播间推流端发送的直播流,并向直播间对应的各个拉流端进行直播推流。

示意性的,云服务器通过内容分发网络(Content Delivery Network,CDN)实现直播拉流和推流。

本申请实施例中的第一直播流是指普通直播模式下的直播流,即一个直播间所对应的直播流。

第二直播流是指连麦直播模式下的直播混流,即第一终端以及至少一个连麦终端的直播混流。连麦直播模式下,相互连麦的直播间对应的终端将己方的直播流发送至混流服务器。混流服务器负责对相互连麦的直播间对应的直播流进行混流,并向云服务器发送直播混流,由云服务器负责向连麦涉及到的各个直播间的观众端转发直播混流。

相关技术中,主播端在进入连麦后直接将向云服务器发送的第一直播流切换为向混流服务器发送的第三直播流。由于连麦的各直播间直播流不同步导致混流延迟,或者混流服务器网络抖动等因素,会造成云服务器一段时间内无法拉取到直播流的情况,进而导致观众端黑屏或画面卡顿。

因此在一种可能的实施方式中,第一终端在进入连麦模式后,在向混流服务器发送第一直播流的同时,仍然继续向云服务器发送第一直播流,并不立即切断向云服务器发送的第一直播流。混流服务器对第一终端发送的第三直播流以及对应的连麦终端的直播流进行混流,生成第二直播流并发送至云服务器。云服务器在一段时间内可同时接收第一直播流和第二直播流。因此即便直播混流未到达云服务器,云服务器也能够基于第一直播流继续推流,防止观众端黑屏或卡顿的情况。

步骤202,基于第一终端的断流情况或云服务器的拉流情况,将下行直播流由第一直播流切换为第二直播流。

其中,下行直播流为第二终端从云服务器处拉取的直播流,第二终端用于基于第二直播流展示连麦直播内容。上行直播流是指推流端(主播端,如第一终端)发送至云服务器的直播流,下行直播流是指云服务器发送至拉流端(观众端,如第二终端)的直播流。

在一种可能的实施方式中,第一终端在同步发送第一直播流和第三直播流一段时间(例如5秒)后,停止向云服务器发送第一直播流,仅向混流服务器发送第三直播流,以减少第一终端以及云服务器的数据处理量。云服务器在连麦开时候的一段时长可同时接收到第一直播流与第二直播流,从而基于下行不断流逻辑进行直播流切换。通过第一终端同步发送第一直播流和第三直播流,使得混流服务器与云服务器能够进行切流的缓冲,避免在由普通直播进入连麦的过程中出现断流的情况。

可选的,第一终端向云服务器发送的第一直播流与第一终端向混流服务器发送的第三直播流相同。或者,第一终端向云服务器发送的第一直播流与第一终端向混流服务器发送的第三直播流不同,例如分辨率不同、编码格式不同等。本申请实施例对此不作限定。

综上所述,本申请实施例中,在由普通直播向连麦直播切换的过程中,主播端并行向云服务器和混流服务器推流,云服务器在一段时间内同时接收第一直播流和第二直播流,并基于第一终端的断流情况或云服务器的拉流情况进行切流。在云服务器接收到第二直播流之前第一直播流不断流,从而实现普通直播与连麦直播的无缝切换,解决主播端直接切换直播流导致混流延迟或断流,使观众端卡顿或黑屏的问题。并且,本申请实施例的方案对观众端的硬件要求较低,无需设置额外的缓冲区提前拉流。

在一种可能的实施方式中,云服务器进行切流的方案包括两种,即上述步骤202具体包括如下步骤:

步骤一,在接收到第一直播流以及第二直播流的情况下,继续向第二终端发送第一直播流;步骤二,在第一终端切断第一直播流的情况下,将下行直播流由第一直播流切换为第二直播流,第一终端用于在连麦时长达到流重叠时长后停止发送第一直播流。

或,

步骤三,在成功接收到第二直播流的情况下,将下行直播流由第一直播流切换为第二直播流。

即本申请实施例提供的直播流切换方法存在两种实现方式。第一种方案的切流时机取决于主播端的断流情况:主播端在开始连麦后的流重叠时长内,并行向云服务器和混流服务器发送直播流;云端在同时接收到第一直播流和第二直播流的情况下,并不立即切流,继续下行第一直播流;当主播端切断第一直播流后,云端下行第二直播流。第二种方案的切流时机取决于云服务器的拉流情况:主播端开始连麦后的流重叠时长内,并行向云服务器和混流服务器发送直播流;云端在同时接收到第一直播流和第二直播流的情况下,立即切换下行的直播流至第二直播流。

由于两种方案中均设置有流重叠时长,即主播端在流重叠时长内并不切断向云服务器发送的直播流,确保云服务器能够对下行直播流进行无缝切换,因此均能够防止出现断流黑屏的情况。

针对上述第一种下行不断流方案,图3示出了第一终端、云服务器、混流服务器、对应的连麦终端以及第二终端配合完成由普通直播切换为连麦直播的过程。普通直播阶段,第一终端(主播端)向云服务器推送第一直播流A1,云服务器向直播间对应的第二终端(观众端)转发第一直播流A1。由普通直播到连麦直播的切换过程包括两阶段。其中一阶段为流重叠时长对应的阶段。一阶段内第一终端向云服务器发送第一直播流A1的同时,向混流服务器发送第三直播流A2。混流服务器对第一终端发送的第三直播流A2和连麦终端发送的连麦流B进行混流,得到第二直播流A2+B并向云服务器推流。云服务器此时接收到第一直播流A1和第二直播流A2+B,并继续向第二终端推送第一直播流A1。二阶段为流重叠时长结束后的连麦阶段。二阶段开始时第一终端停止向云服务器发送第一直播流A1,此时云服务器接收第二直播流A2+B,并将下行直播流由第一直播流A1无缝切换为第二直播流A2+B。完成由普通直播到连麦直播的直播流切换过程。

针对上述第一种下行不断流方案,请参考图4,其示出了本申请另一个示例性实施例提供的直播流切换方法的流程图。本实施例以该方法由云服务器执行为例进行说明。该方法包括如下步骤:

步骤401,接收第一终端发送的第一直播流以及混流服务器发送的第二直播流。

步骤401的具体实施方式可以参考上述步骤201,本申请实施例在此不再赘述。

步骤402,在接收到第一直播流以及第二直播流的情况下,获取第一直播流的第一标识以及第二直播流的第二标识。

在一种可能的实施方式中,直播流对应有直播流标识。该标识用于指示直播流所属的直播间。例如,直播推流端(第一终端)基于当前直播帐号生成直播流标识。直播推流端在进行直播流编码后,将直播流标识与直播编码数据一同封装后发送至云服务器或混流服务器。

步骤403,响应于第一标识与第二标识指示第一直播流和第二直播流属于同一直播间的不同直播流,继续向第二终端发送第一直播流。

其中,同一直播间对应的直播流的直播流标识中包含相同字段。

在一种可能的实施方式中,为了使云服务器能够从大量直播流中识别出属于同一直播间的普通流和混合流,连麦流的标识与对应直播间普通流的标识中包含相同字段。

示意性的,直播间A对应的第一直播流的第一标识为STREAM_A_NORMAL,直播间A与直播间B连麦时的第二直播流对应的第二标识为STREAM_A_STREAM_B_PK。由于第一标识和第二标识中包含用于指示直播间的相同字段STREAM_A,因此云服务器确定第一直播流与第二直播流分别属于直播间A对应的普通流和混合流。

普通直播模式下的直播流与连麦直播模式下的直播流,可能分别采用不同的音频编码格式。在一种可能的实施方式中,为了实现在流重叠时长内推送普通流但观众端所展示的直播效果为连麦效果,云服务器对第一直播流的音频进行重新编码。步骤403包括如下步骤403a至步骤403c:

步骤403a,响应于第一标识与第二标识指示第一直播流和第二直播流属于同一直播间的不同直播流,获取第一直播流的音频编码格式以及第二直播流的音频编码格式。

当确定第一直播流与第二直播流分别属于同一直播间的普通流和混合流后,云服务器获取二者的音频编码格式。其中,音频编码格式可以为动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III,MP3)、高级音频编码(AdvancedAudio Coding,AAC)、微软音频格式(Windows Media Audio,WMA)等。

步骤403b,响应于第一直播流与第二直播流的音频编码格式一致,继续向所述第二终端转发第一直播流。

若第一直播流与第二直播流的音频编码格式一致,则无需对第一直播流的音频编码格式进行调整。云服务器继续直接转发第一直播流。

步骤403c,响应于第一直播流与第二直播流的音频编码格式不一致,按照第二直播流的音频编码格式对第一直播流进行音频重编码,并向第二终端发送音频重编码后的第一直播流。

若第一直播流与第二直播流的音频编码格式不一致,则云服务器按照第二直播流的音频编码格式对第一直播流进行音频重编码,使下行的第一直播流的音频编码格式与第二直播流的音频编码格式一致。从而达到在继续推送第一直播流的情况下,第二终端能够展示直播开始连麦的效果。

步骤404,响应于第一标识与第二标识指示第一直播流和第二直播流属于同一直播间的不同直播流,获取第二直播流的第二视频头信息。

其中,视频头信息中包含视频分辨率。

上述步骤通过云服务器进行编码格式转换,将普通流的编码格式转换为连麦流的编码格式,使下行直播流的音频效果与连麦直播音频效果一致。当直播为视频直播时,还需要考虑普通直播画面与连麦直播画面的差异。

例如普通直播画面为横屏画面,分辨率为1280*720,连麦直播画面为竖屏画面,分辨率为1080*2400。或者普通直播画面为竖屏画面,连麦直播画面为横屏画面。

视频头信息是用于描述视频画面信息的数据,通常添加在每一段(或每一帧)视频流的头部,比如序列参数集(Sequence Paramater Set,SPS)和图像参数集(PictureParamater Set,PPS)。在一种可能的实施方式中,云服务器通过向第二终端下发第二直播流的视频头信息,使第二终端按照连麦画面的分辨率渲染并显示第一直播流的内容。

步骤405,向第二终端下发第二视频头信息,第二终端用于基于第二视频头信息调整第一直播流的视频画面。

可选的,第二终端可以通过拉伸、裁剪、拼接、扩边等方式调整第一直播流的分辨率。

如图5所示,第一终端开启连麦后,通过云服务器向第二终端发送连麦通知。第二终端接收到连麦通知后,将直播界面的样式从普通直播样式切换为连麦直播样式。普通直播模式下第二终端直接显示第一视频流的视频画面501。连麦直播样式下第二终端显示两个连麦直播间的拼接画面,该画面中包含第一显示区域502以及第二显示区域503。其中流重叠时长内,第二终端接收到的仍然是第一视频流。此时第二终端按照第二视频流的视频头信息调整视频画面,达到进入连麦的效果。由于此时未拉取到混合流,因此连麦直播间的显示区域(即第二显示区域503)内显示默认背景以及“对方正在赶来~”字样。当达到流重叠时长,第二终端拉取到混合流后,则显示最终的连麦画面。

在另一种可能的实施方式中,与音频编码相对应,云服务器还可以直接对第一视频流进行分辨率调整并重新编码,得到分辨率更新后的第一直播流并下发。

步骤406,在第一终端切断第一直播流的情况下,将下行直播流由第一直播流切换为第二直播流。

步骤406的具体实施方式可以参考上述步骤二,本申请实施例在此不再赘述。

本申请实施例中,在流重叠时长内,云服务器基于第二视频流的音频编码格式对第一视频流进行重编码,另一方面向第二终端下发第二视频流的视频头信息,从而使第二终端能够在仅拉取到第一视频流的情况下,按照连麦的音频编码格式和画面分辨率显示直播画面。实现了延迟推流但同步显示连麦直播内容的效果。

在一种可能的实施方式中,当采用上述第二种方案进行直播流切换时,云服务器同样可以依据直播流的标识进行识别。若识别到第一直播流的第一标识与第二直播流的第二标识指示同一直播间,则直接将下行直播流由第一直播流切换为第二直播流,无需提前下发视频头信息或者对第一直播流重编码。

上述实施例示出了由普通直播切换至连麦的过程。在一种可能的实施方式中,结束连麦同样采用流重叠的方案。如图6所示,在由一种流向另一种流切换的过程中,设置流重叠时长,在流重叠时长内并行发送两种流,达到流重叠时长后切换发送新的流。对应的,反向切换时也采用流重叠的方案。

请参考图7,其示出了本申请另一个示例性实施例提供的直播流切换方法的流程图。本实施例以该方法由云服务器执行为例进行说明。该方法包括如下步骤:

步骤701,接收第一终端发送的第一直播流以及混流服务器发送的第二直播流。

步骤702,基于第一终端的断流情况或云服务器的拉流情况,将下行直播流由第一直播流切换为第二直播流。

步骤701至步骤702的具体实施方式可以参考上述步骤201至步骤202,本申请实施例在此不再赘述。

对应的,由连麦切换为普通直播的过程同样包含两种下行不断流的实现方式。一种如下步骤703至步骤704所示,另一种如下步骤705所示。

步骤703,在重新接收到第一终端发送的第一直播流的情况下,继续向第二终端发送第二直播流。

在一种可能的实施方式中,当结束连麦时,第一终端在连麦结束前的流重叠时长内重新向云服务器发送第一直播流。流重叠时长内(连麦进入倒计时),云服务器接收第一直播流和第二直播流,但继续向第二终端下发第二直播流。

步骤704,响应于第二直播流断流,将下行直播流切换为第一直播流。

第一终端在达到流重叠时长(即连麦正式结束)时,停止向混流服务器发送第三直播流,继续向云服务器发送第一直播流。云服务器在第二直播流断流的情况下,切换发送第一直播流。

步骤705,在重新接收到第一终端发送的第一直播流的情况下,将下行直播流切换为第一直播流。

在第二种可能的实施方式中,云服务器在接收到第一直播流后立即进行切流,将下行直播流由第二直播流切换为第一直播流,观众端返回普通直播模式。

本申请实施例中,在由连麦切换为普通直播的过程中,设置流重叠时长。主播端在流重叠时长内并行向云服务器和混流服务器推流,云服务器在流重叠时长内则接收第一直播流和第二直播流,并继续向观众端推送第二直播流。达到流重叠时长后,主播端切断第三直播流。从而实现连麦直播向普通直播的无缝切换,解决主播端直接切换直播流导致混流延迟或断流,使观众端卡顿或黑屏的问题。并且,本申请实施例的方案对观众端的硬件要求较低,无需设置额外的缓冲区提前拉流。

针对上述连麦切换至普通直播的第一种方案,图8示出了第一终端、云服务器、混流服务器、对应的连麦终端以及第二终端配合完成由连麦直播切换为普通直播的过程,同样包括两阶段。一阶段为流重叠时长对应的阶段。一阶段内,第一终端在确定流重叠时长后结束连麦时,开始向云服务器发送第一直播流A1。此时云服务器接收到第一直播流A1和第二直播流A2+B,并继续向第二终端推送第二直播流A2+B。流重叠时长结束后连麦正式结束,进入普通直播。二阶段开始时第一终端停止向混流服务器发送第三直播流A2,云服务器将下行直播流由第二直播流A2+B切换为第一直播流A1。

上述实施例示出了云服务器在直播切流过程中执行的步骤。对应的,第一终端在切流过程中也会触发下行不断流逻辑,控制两种直播流的推送。请参考图9,其示出了本申请另一个示例性实施例提供的直播流切换方法的流程图。本实施例以该方法由第一终端执行为例进行说明。该方法包括如下步骤:

步骤901,向云服务器发送第一直播流,云服务器用于向请求直播拉流的第二终端转发第一直播流。

第一终端为直播推流端,基于采集到的直播数据(例如音频数据、视频数据)生成并发送至云服务器进行直播推流。普通直播模式下,第一终端直接向云服务器发送第一直播流。云服务器负责接收各个直播间推流端发送的直播流,并向直播间对应的各个拉流端进行直播推流。第二终端为直播拉流端,基于接收到的直播观看操作向云服务器发送直播拉流请求。

步骤902,响应于连麦指令,向混流服务器发送第三直播流。

其中,混流服务器用于对连麦终端发送的直播流进行混流生成第二直播流,云服务器用于在接收到第一直播流以及第二直播流的情况下,基于下行不断流逻辑将下行直播流由第一直播流切换为第二直播流。下行不断流逻辑由第一终端的断流情况或云服务器的拉流情况决定。

连麦直播模式下,相互连麦的直播间对应的终端将己方的直播流发送至混流服务器。混流服务器负责对相互连麦的直播间对应的直播流进行混流,并向云服务器发送直播混流,由云服务器负责向连麦涉及到的各个直播间的观众端转发直播混流。

可选的,当接收到连麦操作,或者连麦应答操作时,第一终端确定接收到连麦指令。

相关技术中,主播端在进入连麦后直接将向云服务器发送的第一直播流切换为向混流服务器发送的第三直播流。由于连麦的各直播间直播流不同步导致混流延迟,以及混流服务器混流需要一定时长等因素,可能导致云服务器在一段时间内拉不到直播流,进而导致下行直播流终端,使得观众端画面卡顿或黑屏。

因此在一种可能的实施方式中,第一终端在进入连麦模式后,在向混流服务器发送第一直播流的同时,仍然继续向云服务器发送第一直播流,并不立即切断向云服务器发送的第一直播流。混流服务器对第一终端发送的第三直播流以及对应的连麦终端的直播流进行混流,生成第二直播流并发送至云服务器。云服务器在同时接收到第一直播流和第二直播流的情况下,基于下行不断流逻辑切换发送至第二终端的直播流。

步骤903,响应于连麦时长达到流重叠时长,停止向云服务器发送第一直播流。

第一终端在同步发送第一直播流和第三直播流至达到流重叠时长(例如5秒)后,停止向云服务器发送第一直播流,仅向混流服务器发送第三直播流。云服务器基于下行不断流逻辑进行切流。通过设置流重叠时长,使得混流服务器与云服务器能够进行切流的缓冲,避免在由普通直播进入连麦的过程中出现断流的情况。

请参考图10,其示出了本申请另一个示例性实施例提供的直播流切换方法的流程图。本实施例以该方法由第一终端执行为例进行说明。该方法包括如下步骤:

步骤1001,向云服务器发送第一直播流,云服务器用于向请求直播拉流的第二终端转发第一直播流。

步骤1002,响应于连麦指令,向混流服务器发送第三直播流。

步骤1003,响应于连麦时长达到流重叠时长,停止向云服务器发送第一直播流。

步骤1001至步骤1003的具体实施方式可以参考上述步骤901至步骤903,本申请实施例在此不再赘述。

步骤1004,在连麦结束前的流重叠时长内,向云服务器发送第一直播流,云服务器用于在重新接收到第一直播流的情况下,继续向第二终端发送第二直播流。

在一种可能的实施方式中,第一终端提前判断连麦结束时间,在在连麦结束前的流重叠时长内,向云服务器发送第一直播流,使云服务器提前接收直播数据,做好切流准备,以防断流。

具体的,第一终端提前判断连麦的方式包括如下两种:

响应于接收到连麦终止操作,基于流重叠时长设置定时器,并向云服务器发送第一直播流。

或,

响应于在流重叠时长后达到目标连麦时长,向云服务器发送第一直播流。

当主播或对方主播手动进行连麦终止操作时,第一终端立即基于流重叠时长设置定时器,定时器达到流重叠时长时连麦结束。或者,连麦对应有固定的时长上限(即目标连麦时长),若第一终端确定在流重叠时长后(例如5s后)达到目标连麦时长,则向云服务器发送第一直播流。

步骤1005,响应于连麦结束,停止向混流服务器发送第三直播流。

云服务器用于在第二直播流断流的情况下,将下行直播流从第二直播流切换为第一直播流。由于第一终端在提前向云服务器发送第一直播流,因此云服务器可以实现由连麦到普通直播的无缝切换,避免卡顿或黑屏的情况。

本申请实施例中,在由连麦切换为普通直播的过程中,设置流重叠时长。主播端在流重叠时长内并行向云服务器和混流服务器推流,云服务器在流重叠时长内则接收第一直播流和第二直播流,并继续向观众端推送第二直播流。达到流重叠时长后,主播端切断第三直播流,云服务器开始向观众端推送第一直播流。从而实现连麦直播向普通直播的无缝切换,解决主播端直接切换直播流导致混流延迟或断流,使观众端卡顿或黑屏的问题。并且,本申请实施例的方案对观众端的硬件要求较低,无需设置额外的缓冲区提前拉流。

图11是本申请一个示例性实施例提供的直播流切换装置的结构框图,该装置包括如下结构:

拉流模块1101,用于接收第一终端发送的第一直播流以及混流服务器发送的第二直播流,所述第二直播流为所述第一终端以及至少一个连麦终端的直播混流,所述第一终端用于在连麦后继续向所述云服务器发送所述第一直播流;

推流模块1102,用于基于所述第一终端的断流情况或所述云服务器的拉流情况,将下行直播流由所述第一直播流切换为所述第二直播流,所述下行直播流为第二终端从云服务器处拉取的直播流,所述第二终端用于基于所述第二直播流展示连麦直播内容。

可选的,所述推流模块1102,还用于:

在接收到所述第一直播流以及所述第二直播流的情况下,继续向所述第二终端发送所述第一直播流;在所述第一终端切断所述第一直播流的情况下,将所述下行直播流由所述第一直播流切换为所述第二直播流,所述第一终端用于在连麦时长达到流重叠时长后停止发送所述第一直播流;

或,

在成功接收到所述第二直播流的情况下,将所述下行直播流由所述第一直播流切换为所述第二直播流。

可选的,所述推流模块1102,还用于:

在接收到所述第一直播流以及所述第二直播流的情况下,获取所述第一直播流的第一标识以及所述第二直播流的第二标识;

响应于所述第一标识与所述第二标识指示所述第一直播流和所述第二直播流属于同一直播间的不同直播流,继续向所述第二终端发送所述第一直播流,其中,同一直播间对应的直播流的直播流标识中包含相同字段。

可选的,所述推流模块1102,还用于:

响应于所述第一标识与所述第二标识指示所述第一直播流和所述第二直播流属于同一直播间的不同直播流,获取所述第一直播流的音频编码格式以及所述第二直播流的音频编码格式;

响应于所述第一直播流与所述第二直播流的音频编码格式一致,继续向所述第二终端转发所述第一直播流;

响应于所述第一直播流与所述第二直播流的音频编码格式不一致,按照所述第二直播流的音频编码格式对所述第一直播流进行音频重编码,并向所述第二终端发送音频重编码后的所述第一直播流。

可选的,所述装置还包括:

信息获取模块,用于响应于所述第一标识与所述第二标识指示所述第一直播流和所述第二直播流属于同一直播间的不同直播流,获取所述第二直播流的第二视频头信息,其中,视频头信息中包含视频分辨率;

信息发送模块,用于向所述第二终端下发所述第二视频头信息,所述第二终端用于基于所述第二视频头信息调整所述第一直播流的视频画面。

可选的,所述推流模块1102还用于:

在重新接收到所述第一终端发送的所述第一直播流的情况下,继续向所述第二终端发送所述第二直播流;响应于所述第二直播流断流,将所述下行直播流切换为所述第一直播流;

或,

在重新接收到所述第一终端发送的所述第一直播流的情况下,将所述下行直播流切换为所述第一直播流。

图12是本申请另一个示例性实施例提供的直播流切换装置的结构框图,该装置包括如下结构:

推流模块1201,用于向云服务器发送第一直播流,所述云服务器用于向请求直播拉流的第二终端转发所述第一直播流;

连麦模块1202,用于响应于连麦指令,向混流服务器发送第三直播流,所述混流服务器用于对连麦终端发送的直播流进行混流生成第二直播流,所述云服务器用于在接收到所述第一直播流以及所述第二直播流的情况下,基于所述第一终端的断流情况或所述云服务器的拉流情况,将下行直播流由所述第一直播流切换为所述第二直播流;

控制模块1203,用于响应于达到流重叠时长,停止向所述云服务器发送所述第一直播流。

可选的,所述推流模块1201,还用于:

在连麦结束前的流重叠时长内,向所述云服务器发送所述第一直播流,所述云服务器用于在重新接收到所述第一直播流的情况下,继续向所述第一终端发送所述第二直播流;

所述控制模块1203,还用于:

响应于连麦结束,停止向所述混流服务器发送所述第三直播流,所述云服务器用于在所述第二直播流断流的情况下,将所述下行直播流切换为所述第一直播流。

可选的,所述推流模块1201,还用于:

响应于接收到连麦终止操作,基于所述流重叠时长设置定时器,并向所述云服务器发送所述第一直播流;

或,

响应于在所述流重叠时长后达到目标连麦时长,向所述云服务器发送所述第一直播流。

综上所述,本申请实施例中,在由普通直播向连麦直播切换的过程中,主播端并行向云服务器和混流服务器推流,云服务器在一段时间内同时接收第一直播流和第二直播流,并基于第一终端的断流情况或云服务器的拉流情况进行切流。在云服务器接收到第二直播流之前第一直播流不断流,从而实现普通直播与连麦直播的无缝切换,解决主播端直接切换直播流导致混流延迟或断流,使观众端卡顿或黑屏的问题。并且,本申请实施例的方案对观众端的硬件要求较低,无需设置额外的缓冲区提前拉流。

请参考图13,其示出了本申请一个实施例提供的服务器的结构示意图。

所述服务器1300包括中央处理单元(Central Processing Unit,CPU)1301、包括随机存取存储器(Random Access Memory,RAM)1302和只读存储器(Read Only Memory,ROM)1303的系统存储器1304,以及连接系统存储器1304和中央处理单元1301的系统总线1305。所述服务器1300还包括帮助计算机内的各个器件之间传输信息的基本输入/输出(Input/Output,I/O)控制器1306,和用于存储操作系统1313、应用程序1314和其他程序模块1315的大容量存储设备1307。

所述基本输入/输出系统1306包括有用于显示信息的显示器1308和用于用户输入信息的诸如鼠标、键盘之类的输入设备1309。其中所述显示器1308和输入设备1309都通过连接到系统总线1305的输入输出控制器1310连接到中央处理单元1301。所述基本输入/输出系统1306还可以包括输入输出控制器1310以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器1310还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备1307通过连接到系统总线1305的大容量存储控制器(未示出)连接到中央处理单元1301。所述大容量存储设备1307及其相关联的计算机可读介质为服务器1300提供非易失性存储。也就是说,所述大容量存储设备1307可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存或其他固态存储其技术,CD-ROM、数字视频光盘(Digital Video Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1304和大容量存储设备1307可以统称为存储器。

根据本申请的各种实施例,所述服务器1300还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1300可以通过连接在所述系统总线1305上的网络接口单元1311连接到网络1312,或者说,也可以使用网络接口单元1311来连接到其他类型的网络或远程计算机系统(未示出)。

请参考图14,其示出了本申请一个示例性实施例提供的终端1400的结构框图。该终端1400可以是便携式移动终端,比如:智能手机、平板电脑、动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III,MP3)播放器、动态影像专家压缩标准音频层面4(Moving Picture Experts Group Audio Layer IV,MP4)播放器。终端1400还可能被称为用户设备、便携式终端等其他名称。

通常,终端1400包括有:处理器1401和存储器1402。

处理器1401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1401可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器1401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1401可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1401还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器1402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是有形的和非暂态的。存储器1402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1401所执行以实现本申请实施例提供的方法。

在一些实施例中,终端1400还可选包括有:外围设备接口1403。

外围设备接口1403可被用于将输入/输出(Input/Output,I/O)相关的至少一个外围设备连接到处理器1401和存储器1402。在一些实施例中,处理器1401、存储器1402和外围设备接口1403被集成在同一芯片或电路板上;在一些其他实施例中,处理器1401、存储器1402和外围设备接口1403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上各个实施例所述的直播流切换方法。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的直播流切换方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读存储介质中或者作为计算机可读存储介质上的一个或多个指令或代码进行传输。计算机可读存储介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的直播流、视频头信息、用户帐号等都是在充分授权的情况下获取的。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上各个实施例所述的直播流切换方法。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的直播流切换方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读存储介质中或者作为计算机可读存储介质上的一个或多个指令或代码进行传输。计算机可读存储介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的直播流、视频头信息、用户帐号等都是在充分授权的情况下获取的。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种游戏场景运动状态切换方法、装置、服务器及终端
  • 业务切换方法、终端、网络服务器及存储介质
  • 用户终端和搜索服务器及操作方法、传输方法和传输装置
  • 搜索方法、搜索集生成方法、装置、介质、终端及服务器
  • 应用程序的内存分配方法、移动终端、服务器及存储介质
  • 页面切换的处理方法、装置及终端、存储介质、程序产品
  • 网络切换方法、装置、终端设备、存储介质和程序产品
技术分类

06120115891319