直播界面显示方法、装置及终端与流程

文档序号:14179500阅读:412来源:国知局
直播界面显示方法、装置及终端与流程

本申请实施例涉及网络直播领域,特别涉及一种直播界面显示方法、装置及终端。



背景技术:

随着视频直播技术的不断成熟,用户使用浏览器或直播类应用程序观看视频直播的同时,还可以采用发送文字或赠送虚拟礼物等方式与主播进行互动。

相关技术中,用户使用直播类应用程序访问直播界面时,直播类应用程序同步拉取视频流数据、聊天列表数据和礼物列表数据等直播数据,从而对拉取到的直播数据解析,并显示在直播界面上。

然而,直播类应用程序拉取视频流数据以外的直播数据会占用大量网络资源,影响视频流数据的拉取,导致访问直播界面时视频显示出现延迟。



技术实现要素:

本申请实施例提供了一种直播界面显示方法、装置及终端,可以用于解决拉取直播数据时,视频流数据以外的直播数据会占用大量网络资源,影响视频流数据的拉取,导致访问直播界面时视频显示出现延迟的问题。所述技术方案如下:

第一方面,提供了一种直播界面显示方法,该方法包括:

当接收到直播数据获取请求时,拉取视频流数据,视频流数据是直播数据的一部分;

对拉取到的视频流数据进行解码渲染;

在直播界面的播放器中显示渲染得到的视频图像;

向主线程队列中添加其它网络请求,并执行其他网络请求,其它网络请求用于请求获取视频流数据外的直播数据。

第二方面,提供了一种直播界面显示装置,该装置包括:

拉流模块,用于当接收到直播数据获取请求时,拉取视频流数据,视频流数据是直播数据的一部分;

解码渲染模块,用于对拉取到的视频流数据进行解码渲染;

显示模块,用于在直播界面的播放器中显示渲染得到的视频图像;

第一执行模块,用于向主线程队列中添加其它网络请求,并执行其他网络请求,其它网络请求用于请求获取视频流数据外的直播数据。

第三方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面所述的直播界面显示方法。

第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如第一方面所述的直播界面显示方法。

本申请实施例提供的技术方案带来的有益效果是:

本申请实施例中,当终端通过浏览器或直播类应用程序访问直播界面时,浏览器或直播类应用程序即拉取视频流数据,并对拉取到的视频流数据进行解码渲染,从而在直播界面的播放器中显示渲染得到的视频图像;当直播界面中显示视频图像后,再向主线程队列中添加其他网络请求,请求获取视频流数据外的直播数据;直播界面显示过程中,由于在拉取直播数据时优先拉取视频流数据,因此保证了拉取视频流数据所需的网络带宽,确保直播界面中优先显示直播视频画面,从而避免了访问直播界面时视频显示出现延迟,达到了提高直播界面中视频显示速度的效果。

附图说明

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

图1是本申请一个示例性实施例提供的直播系统的结构框图;

图2是本申请一个示例性实施例提供的直播界面显示方法的流程图;

图3是本申请另一个示例性实施例提供的直播界面显示方法的流程图;

图4是本申请另一个示例性实施例提供的直播界面显示方法的流程图;

图5是本申请一个示例性实施例提供的直播界面的示意图;

图6是本申请一个示例性实施例提供的直播界面显示方法的流程图;

图7是本申请一个示例性实施例提供的直播界面显示装置的结构图;

图8是本申请一个示例性实施例提供的一种终端结构示意图。

具体实施方式

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

参考图1,其示出了本申请一个实施例提供的直播系统的结构示意图。该直播系统包括:推流端设备110、播放端设备120和流媒体服务器130。

推流端设备110可以为个人计算机、智能手机和平板电脑等具有在线直播功能的电子设备(主播使用的设备),用于实时采集直播视频,并将直播视频编码成h.264格式,并推流到流媒体服务器130中。

播放端设备120可以为个人计算机、智能手机和平板电脑等安装有浏览器或直播类应用程序的电子设备(观众使用的设备),用于在访问直播界面时,从流媒体服务器130中拉取视频流数据,并对拉取到的视频流数据进行解码渲染,以实现直播视频的播放。

流媒体服务器130分别与推流端设备110和播放端设备120相连。

流媒体服务器130为一台服务器、若干台服务器组成的服务器集群或云计算中心,用于接收不同的推流端设备110推流的视频流数据,并在接收到播放端设备120的拉流请求后,将相应的视频流数据推送给播放端设备120。

然而随着直播内容的不断丰富,用户在观看直播时,还可以采用发送文字,或者向主播赠送虚拟礼物等方式进行互动。相应的,直播系统中需要增加聊天数据服务器和礼物数据服务器。

播放端设备从流媒体服务器中拉取视频流数据的同时,还需要从聊天数据服务器中拉取聊天列表数据,从礼物数据服务器中拉取礼物列表数据,并在直播界面中对拉取到的数据进行解析显示。

相较于现有技术中直播类应用程序同步拉取视频流数据、聊天列表数据和礼物列表数据等直播数据,本申请实施例中,在访问直播界面时,直播类应用程序优先拉取视频流数据,并在直播界面的播放器中成功显示视频图像后,再拉取视频流数据外其他直播数据(包括礼物列表数据和聊天列表数据等等),保证了拉取视频流数据所需的网络带宽,进而提高了访问直播界面时视频的显示速度。

本申请各个实施例提供的直播界面显示方法应用于图1所示的播放端设备120中。为了方便描述,下述各个实施例以直播界面显示方法用于终端中为例进行说明。

参考图2,其示出了本申请一个示例性实施例提供的直播界面显示方法流程图。本实施例以该方法应用于终端来举例说明,该直播界面显示方法包括如下步骤:

步骤201,当接收到直播数据获取请求时,拉取视频流数据,视频流数据是直播数据的一部分。

本实施例中,以终端通过直播类应用程序访问直播界面为例进行示意性说明。

相关技术中,当终端通过直播类应用程序访问直播界面时,直播类应用程序即同步拉取视频流数据、聊天列表数据和礼物列表数据等直播数据;本实施例中,当用户使用直播类应用程序访问直播界面时,终端即接收到直播数据获取请求,该直播数据获取请求用于请求获取直播间对应的直播数据,此时,直播类应用程序只进行拉取视频流数据的操作。

可选的,当访问直播界面时,终端启用主线程渲染直播界面中的基础界面元素(至少包括播放器),并在渲染得到的播放器中显示视频加载动画,同时,在子线程中执行拉取视频流数据的逻辑。

其中,主线程是终端通过直播类应用程序访问直播界面后,直播类应用程序中立刻运行的线程;子线程是主线程以外的其他线程,一个直播类应用程序中可以有多个子线程;视频流数据是经过编码和压缩的视频数据,存在于流媒体服务器中。在一种可能的实现方式中,当检测到通过直播类应用程序访问某一直播间的直播界面时,终端向流媒体服务器发送拉流请求;流媒体服务器接收该拉流请求后,即向终端返回该直播间对应的视频流数据,相应的,终端接收该视频流数据。

步骤202,对拉取到的视频流数据进行解码渲染。

可选的,拉取到视频流数据后,为了实现视频播放,终端利用解码器对视频流数据进行解码,得到大量视频帧并加入到队列缓存中,进而对队列缓存中的视频帧进行渲染,以得到视频图像。

步骤203,在直播界面的播放器中显示渲染得到的视频图像。

对视频帧进行渲染后,终端在直播界面的播放器中显示渲染得到的视频图像。

可选的,为了使用户进入直播界面后,能够立即观看到直播内容,达到直播秒开的效果,终端首先渲染队列缓存中的第一帧(即视频首帧)并在直播界面的播放器中显示渲染得到的第一帧视频图像。

步骤204,向主线程队列中添加其它网络请求,并执行其他网络请求,其它网络请求用于请求获取视频流数据外的直播数据。

在一种可能的实施方式中,当检测到直播界面中成功渲染了视频第一帧后,终端即在直播类应用程序的主线程队列中添加其他网络请求,并执行其他网络请求,以获取视频流数据外的直播数据。其中,视频流数据外的直播数据包括:观众列表、历史聊天列表或礼物列表等直播数据,且不同类型的直播数据来自相同或不同的服务器。

例如,当直播界面中成功渲染视频第一帧后,终端在直播类应用程序的主线程队列中添加拉取观众列表的网络请求,并执行该网络请求,从观众数据服务器中拉取观众列表数据。

综上所述,本申请实施例中,当终端通过浏览器或直播类应用程序访问直播界面时,浏览器或直播类应用程序即拉取视频流数据,并对拉取到的视频流数据进行解码渲染,从而在直播界面的播放器中显示渲染得到的视频图像;当直播界面中显示视频图像后,再向主线程队列中添加其他网络请求,请求获取视频流数据外的直播数据;直播界面显示过程中,由于在拉取直播数据时优先拉取视频流数据,因此保证了拉取视频流数据所需的网络带宽,确保直播界面中优先显示直播视频画面,从而避免了访问直播界面时视频显示出现延迟,达到了提高直播界面中视频显示速度的效果。

拉流过程中,受到网络因素的影响,可能会出现拉流失败的情况,为了进一步优化直播界面显示,终端进行拉流时,还需要检测拉流是否成功,并根据拉流情况做出相应的调整。

在一种可能的实现方式中,首次拉流失败后,终端重新拉取视频流数据,若依旧未能成功拉流,则向主线程队列中添加并执行其他网络请求,同步拉取直播数据。参考图3,其示出了本申请一个示例性实施例提供的直播界面显示方法流程图。本实施例以该方法应用于终端来举例说明,该直播界面显示方法包括如下步骤:

步骤301,当接收到直播数据获取请求时,拉取视频流数据,视频流数据是直播数据的一部分。

本步骤的实施方式与上述步骤201相似,本实施例在此不再赘述。

步骤302,检测是否拉流成功。

本实施例中,当用户通过直播类应用程序访问直播界面后,终端即接收到直播数据获取请求,直播类应用程序即拉取视频流数据,并进一步检测是否拉流成功。

在一种可能的实现方式中,终端通过直播类应用程序访问直播界面时,监测直播类应用程序与流媒体服务器是否握手成功,当确定二者握手成功后,进一步检测是否接收到流媒体服务器发送的视频流数据,当检测到获得了视频流数据即为拉流成功,终端执行下述步骤303;否则拉流失败,终端执行下述步骤306。

步骤303,若拉流成功,则对拉取到的视频流数据进行解码渲染。

在一种可能的实现方式中,通过直播类应用程序访问直播界面时,终端即确定播放器在直播界面中的显示位置,并在该显示位置显示播放器。当对拉取到的视频流数据进行解码渲染后,即在直播界面的播放器中显示渲染得到的视频图像。

步骤304,在直播界面中的播放器中显示渲染得到的视频图像。

步骤305,向主线程队列中添加其它网络请求,并执行其他网络请求,其它网络请求用于请求获取视频流数据外的直播数据。

步骤304至305的实施方式与上述步骤103至104相似,本实施例在此不再赘述。

步骤306,若拉流失败,则在预定时长内进行重新拉流。

若检测到拉流失败,终端则在预定时长内进行重新拉流。比如,预定时长可以为3s。

在一种可能的实现方式中,预定时长可以根据灰度测试得到的灰度数据确定。例如,灰度数据指示终端获取到首屏的平均时长为3s,即将预定时长确定为3s。

步骤307,检测重新拉流是否成功。

当在预定时长内接收到视频流数据时,即确定重试拉流成功,并执行下述步骤308;当在预定时长内未接收到视频流数据时,即确定重试拉流失败,并执行下述步骤311。

比如,结合步骤306中的示例,当终端在3s内拉取到视频流数据,则确定重新拉流成功;若终端在3s内未拉取到视频流数据,则确定重新拉流失败。

步骤308,若重新拉流成功,则对拉取到的视频流数据进行解码渲染。

若确定重新拉流成功,终端即对拉取到的视频流数据进行解码渲染,进而在直播界面的播放器中显示渲染得到的视频图像。其中,对视频流数据进行解码渲染的步骤与上述步骤202相似,本实施例在此不再赘述。

步骤309,在直播界面中的播放器中显示渲染得到的视频图像。

步骤310,向主线程队列中添加其它网络请求,并执行其他网络请求,其它网络请求用于请求获取视频流数据外的直播数据。

步骤309至310的实施方式与上述步骤103至104相似,本实施例在此不再赘述。

步骤311,若重新拉流失败,则向主线程队列中添加其它网络请求,并执行其他网络请求。

为了避免在拉流失败时,直播类应用程序中循环执行拉取视频流数据的步骤,导致聊天列表礼物列表等直播数据无法拉取,影响直播界面显示,若确定重新拉流失败,终端则向主线程队列中添加其它网络请求,并执行其他网络请求,即同时拉取视频流数据和其他直播数据。

本实施例中,当终端拉流失败且未成功重新拉流时,同步拉取视频流数据和其他直播数据,避免了在拉流失败时,直播类应用程序中循环执行拉取视频流数据的步骤,导致聊天列表、礼物列表等直播内容无法显示的问题。

相关技术中,当终端访问直播界面时,启用主线程同步渲染视频图像和直播界面中的其他界面元素,如观众列表、聊天对话框和礼物列表等,由于渲染除视频图像外的其他界面元素也在占用主线程,因此容易导致访问直播界面时视频显示出现延迟。

为了进一步提高访问直播界面时视频显示的效率,在图2的基础上,参考图4,其示出了本申请一个示例性实施例提供的直播界面显示方法流程图。本实施例以该方法应用于终端来举例说明,该直播界面显示方法包括如下步骤:

步骤205,当接收到直播数据获取请求时,启用主线程渲染直播界面中的基础界面元素,基础界面元素至少包括播放器。

由于在显示视频图像时至少需要确定出视频图像的显示位置,因此当访问直播界面时,首先需要渲染至少包括播放器的界面元素。

在一种可能的实施方式中,终端获取播放器在直播界面中的坐标以及显示尺寸,进行根据坐标和显示尺寸在直播界面相应区域内渲染显示播放器。

示意性的,如图5所示,当终端访问直播界面51时,直播类应用程序启用主线程渲染直播界面51中的播放器窗口511。

步骤201,拉取视频流数据。

需要说明的是,本步骤与上述步骤205之间不存在严格的先后关系,即步骤201和205可以同时执行,本实施例并不对此进行限定。

步骤202,对拉取到的视频流数据进行解码渲染。

步骤203,在直播界面的播放器中显示渲染得到的视频图像。

步骤204,向主线程队列中添加其它网络请求,并执行其他网络请求,其它网络请求用于请求获取视频流数据外的直播数据。

步骤206,向主线程队列中添加子视图渲染任务,并执行子视图渲染任务,子视图渲染任务用于请求对基础界面元素外的界面元素进行渲染。

当直播界面的播放器中显示了渲染得到的视频图像时,终端即向直播类应用程序的主线程中添加子视图渲染任务,并执行子视图渲染任务,以显示包含所有界面元素的完整直播界面。可选的,基础界面元素外的界面元素包括观众列表、礼物列表和聊天窗口等。

示意性的,如图5所示,直播界面51的播放器窗口511中显示了渲染得到的视频图像512后,终端在直播类应用程序的主线程添加子视图渲染任务,并执行子视图渲染任务,从而在直播界面51中渲染并显示聊天窗口513。

需要说明的是,本步骤与上述步骤204之间不存在严格的先后关系,即步骤204和206可以同时执行,本实施例并不对此进行限定。

本实施例中,当访问直播界面时,直播类应用程序优先启用主线程渲染显示播放器,并优先在播放器中显示渲染得到的视频图像;然后再执行子视图的渲染任务,渲染显示直播界面中的其他界面元素,进一步提高了访问直播界面时视频显示的效率。

由于网络带宽足够大时,直播类应用程序拉取视频流数据以外的直播数据时不会对视频流数据的拉取造成影响,当访问直播界面时,无需执行在拉取直播数据时只拉取视频流数据的步骤。在一种可能的实现方式中,示意性的,如图6所示,上述步骤201之前还包括:

步骤207,当接收到直播数据获取请求时,获取当前网络带宽。

为了确定当前的网络带宽是否适用于同时拉取视频流数据和其他直播数据,当通过直播类应用程序访问直播界面时,终端获取当前的网络带宽。

例如,终端获取到的网络带宽为n0。

步骤208,检测当前网络带宽是否小于预设带宽阈值。

终端中存储有同时拉取视频流数据和其他直播数据时所需要的带宽值(即预设带宽阈值),获取到当前网络带宽后,终端即将当前网络带宽与预设带宽阈值进行比较。其中,预设带宽阈值为n。

步骤209,若当前网络带宽小于预设带宽阈值,则拉取视频流数据。

若确定当前网络带宽小于预设带宽阈值,终端确定同步拉取所有直播数据会影响直播视频的显示速度,从而优先拉取视频流数据;

若确定当前网络带宽大于预设带宽阈值,终端确定同步拉取所有直播数据不会影响直播视频的显示速度,从而启用主线程同时拉取视频流数据和其他直播数据。

例如,当n0<n时,终端则执行步骤201,优先拉取视频流数据;当n0>n,终端则启用主线程同时拉取视频流数据和其他直播数据。

本实施例中,在访问直播界面时,终端判断当前的网络带宽是否小于预设带宽阈值,当网络带宽小于预设带宽阈值时拉取视频流数据,保证了拉取视频流数据所需的网络带宽,提高了访问直播界面时视频显示的效率;当网络带宽大于预设带宽阈值时,启用主线程同步拉取视频流数据和其他直播数据,进而提高了完整显示直播界面的效率。

参考图7,其示出了本申请一个示例性实施例提供的直播界面显示装置的结构框图。该直播界面显示装置可以通过软件、硬件以及两者的组合实现成为终端的全部或一部分。该直播界面显示装置包括:拉流模块710、解码渲染模块720、显示模块730、第一执行模块740。

拉流模块710,用于当接收到直播数据获取请求时,拉取视频流数据,所述视频流数据是直播数据的一部分;

解码渲染模块720,用于对拉取到的所述视频流数据进行解码渲染;

显示模块730,用于在直播界面的播放器中显示渲染得到的视频图像;

第一执行模块740,用于向主线程队列中添加其它网络请求,并执行所述其他网络请求,所述其它网络请求用于请求获取所述视频流数据外的所述直播数据。

可选的,该装置,还包括:

检测模块,用于检测是否拉流成功;

解码渲染模块,还用于若拉流成功,则执行所述对拉取到的所述视频流数据进行解码渲染的步骤;

重新拉流模块,用于若拉流失败,则在预定时长内进行重新拉流。

第一执行模块,还用于若重新拉流失败,则执行所述向主线程队列中添加其它网络请求,并执行所述其他网络请求的步骤。

可选的,该装置,还包括:

界面渲染模块,用于当接收到所述直播数据获取请求时,启用所述主线程渲染所述直播界面中的基础界面元素,所述基础界面元素至少包括所述播放器;

第二执行模块,用于向所述主线程队列中添加子视图渲染任务,并执行所述子视图渲染任务,所述子视图渲染任务用于请求对所述基础界面元素外的界面元素进行渲染。

可选的,该装置,还包括:

获取模块,用于获取当前网络带宽;

带宽检测模块,用于检测所述当前网络带宽是否小于预设带宽阈值;

拉流模块,还用于若所述当前网络带宽小于所述预设带宽阈值,则执行所述拉取视频流数据的步骤。

综上所述,本申请实施例中,当终端通过浏览器或直播类应用程序访问直播界面时,浏览器或直播类应用程序即拉取视频流数据,并对拉取到的视频流数据进行解码渲染,从而在直播界面的播放器中显示渲染得到的视频图像;当直播界面中显示视频图像后,再向主线程队列中添加其他网络请求,请求获取视频流数据外的直播数据;直播界面显示过程中,由于在拉取直播数据时优先拉取视频流数据,因此保证了拉取视频流数据所需的网络带宽,确保直播界面中优先显示直播视频画面,从而避免了访问直播界面时视频显示出现延迟,达到了提高直播界面中视频显示速度的效果。

本实施例中,当终端拉流失败且未成功重新拉流时,同步拉取视频流数据和其他直播数据,避免了在拉流失败时,直播类应用程序中循环执行拉取视频流数据的步骤,导致聊天列表、礼物列表等直播内容无法显示的问题。

本实施例中,当访问直播界面时,直播类应用程序优先启用主线程渲染显示播放器,并优先在播放器中显示渲染得到的视频图像;然后再执行子视图的渲染任务,渲染显示直播界面中的其他界面元素,进一步提高了访问直播界面时视频显示的效率。

本实施例中,在访问直播界面时,终端判断当前的网络带宽是否小于预设带宽阈值,当网络带宽小于预设带宽阈值时拉取视频流数据,保证了拉取视频流数据所需的网络带宽,提高了访问直播界面时视频显示的效率;当网络带宽大于预设带宽阈值时,启用主线程同步拉取视频流数据和其他直播数据,进而提高了完整显示直播界面的效率。

需要说明的是:上述实施例提供的直播界面显示装置在进行直播界面显示时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的直播界面显示装置与直播界面显示方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

如图8所示,本申请实施例提供了一种终端,该终端包括处理器810和存储器820。存储器820中存储有至少一条指令,该指令由处理器810加载并执行以实现如上述各个实施例提供的直播界面显示方法。

可选的,终端中还包括传感器、音频播放组件、通讯组件等其他部件,图8所示的终端并不对终端的具体结构构成限定。

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

本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的直播界面显示方法。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

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

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