直播信息处理方法、装置、设备及存储介质转让专利

申请号 : CN202110289241.2

文献号 : CN113038237B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 江文俊徐伟涛王冠卿

申请人 : 百度(中国)有限公司

摘要 :

本公开提供了直播信息处理方法、装置、设备及存储介质,涉及信息流技术领域。具体实现方案为:在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧;根据所述第一播放帧,生成预加载的第一内核数据;在接收到所述第一直播间的播放指令的情况下,根据所述第一内核数据,拉取所述第一直播间的直播视频流;播放所述第一直播间的直播视频流。本公开实施例能够减少直播卡顿,提升用户体验。

权利要求 :

1.一种直播信息处理方法,包括:

在接收到第一直播间的播放指令之前检测到第一事件的情况下,通过子线程对所述第一直播间的直播数据进行预加载,直到预加载到第一直播间的视频帧为止,将预加载过程中加载到的第一直播间的视频帧作为第一播放帧;

获取所述第一直播间的透传协议和数据格式;

根据所述透传协议和第一直播间的数据格式和播放端的数据格式,生成用于对接收到的第一直播间的视频流进行解码的解码器;

根据所述解码器和预加载到所述第一播放帧时已获取的第一直播间的数据,生成预加载的第一内核数据;

在接收到所述第一直播间的播放指令的情况下,根据所述第一内核数据,拉取所述第一直播间的直播视频流;

播放所述第一直播间的直播视频流。

2.根据权利要求1所述的方法,其中,所述根据所述第一内核数据,拉取所述第一直播间的直播视频流,包括:根据所述第一直播间的透传协议,获取第一直播间的原始视频流;

利用所述解码器对所述原始视频流进行解码,得到所述第一直播间的直播视频流。

3.根据权利要求1所述的方法,其中,所述第一事件包括:第一直播间的直播卡片出现于设定的播放端的显示范围。

4.根据权利要求1‑3中任意一项所述的方法,其中,还包括:在播放所述第一直播间的直播视频流的过程中,获取第二直播间直播过程中的第二播放帧;

根据所述第二播放帧,生成预加载的第二内核数据;

在检测到设定的第二事件的情况下,根据所述第二内核数据,拉取第二直播间的视频流;

播放所述第二直播间的视频流。

5.根据权利要求4所述的方法,其中,所述设定的第二事件包括:从所述第一直播间切换至所述第二直播间。

6.根据权利要求4所述的方法,其中,还包括:检测到设定的第三事件的情况下,同步播放所述第一直播间的视频流和第二直播间的视频流。

7.根据权利要求6所述的方法,其中,所述设定的第三事件包括:所述第一直播间对应的窗口和所述第二直播间对应的窗口同时出现在直播播放端的播放界面。

8.一种直播信息处理装置,包括:

第一播放帧获取模块,用于在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧;

第一内核数据生成模块,用于根据所述第一播放帧,生成预加载的第一内核数据;

第一直播间视频流拉取模块,用于在接收到所述第一直播间的播放指令的情况下,根据所述第一内核数据,拉取所述第一直播间的直播视频流;

第一直播间播放模块,用于播放所述第一直播间的直播视频流;

所述第一播放帧获取模块还用于:

通过子线程对所述第一直播间的直播数据进行预加载,直到预加载到第一直播间的视频帧为止,将预加载过程中加载到的第一直播间的视频帧作为所述第一播放帧;

所述第一内核数据生成模块包括:

相关信息获取单元,用于获取所述第一直播间的透传协议和数据格式;

解码器生成单元,用于根据所述透传协议和第一直播间的数据格式和播放端的数据格式,生成用于对接收到的第一直播间的视频流进行解码的解码器;

数据处理单元,用于根据所述解码器和预加载到所述第一播放帧时已获取的第一直播间的数据,生成预加载的第一内核数据。

9.根据权利要求8所述的装置,其中,所述第一直播间视频流拉取模块包括:原始视频流获取单元,用于根据所述第一直播间的透传协议,获取第一直播间的原始视频流;

解码单元,用于利用所述解码器对所述原始视频流进行解码,得到所述第一直播间的直播视频流。

10.根据权利要求8所述的装置,其中,所述第一事件包括:第一直播间的直播卡片出现于设定的播放端的显示范围。

11.根据权利要求8‑10中任意一项所述的装置,其中,还包括:第二播放帧获取模块,用于在播放所述第一直播间的直播视频流的过程中,获取第二直播间直播过程中的第二播放帧;

第二内核数据生成模块,用于根据所述第二播放帧,生成预加载的第二内核数据;

第二直播间视频流拉取模块,用于在检测到设定的第二事件的情况下,根据所述第二内核数据,拉取第二直播间的视频流;

第二直播间视频流播放模块,用于播放所述第二直播间的视频流。

12.根据权利要求11所述的装置,其中,所述设定的第二事件包括:从所述第一直播间切换至所述第二直播间。

13.根据权利要求11所述的装置,其中,还包括:同步播放模块,用于检测到设定的第三事件的情况下,同步播放所述第一直播间的视频流和第二直播间的视频流。

14.根据权利要求13所述的装置,其中,所述设定的第三事件包括:所述第一直播间对应的窗口和所述第二直播间对应的窗口同时出现在直播播放端的播放界面。

15.一种电子设备,其特征在于,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑7中任一项所述的方法。

16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行权利要求1‑7中任一项所述的方法。

说明书 :

直播信息处理方法、装置、设备及存储介质

技术领域

[0001] 本公开涉及计算机技术领域,尤其涉及信息流等技术领域。

背景技术

[0002] 随着计算机技术的发展,网络速度越来越快。网络从4G时代已经逐渐开始进入5G时代。
[0003] 网络产品的种类也越来越多样化,人们可以通过网络进行文字、图片传输,还可以进行视频的传输。由于网络传输技术、传输速度的加快,人们不仅能够远程聊天,还能够远程传输高清晰度的直播视频数据,录像端和视频画面接收端之间能够进行实时互动。远程直播视频不仅能够应用于商业领域,方便用户提前通过视频对所购买商品进行预览,还能够远程娱乐、开会、教学等。
[0004] 在5G时代,人们对网络使用体验的要求越来越高,同样,对直播体验要求也越来越高。但现有的直播产品,存在一定的卡顿现象,降低了用户体验。

发明内容

[0005] 本公开提供了一种直播信息处理方法、装置、设备及存储介质。
[0006] 根据本公开的一方面,提供了一种直播信息处理方法,包括:
[0007] 在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧;
[0008] 根据第一播放帧,生成预加载的第一内核数据;
[0009] 在接收到第一直播间的播放指令的情况下,根据第一内核数据,拉取第一直播间的直播视频流;
[0010] 播放第一直播间的直播视频流。
[0011] 根据本公开的另一方面,提供了一种直播信息处理装置,包括:
[0012] 第一播放帧获取模块,用于在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧;
[0013] 第一内核数据生成模块,用于根据第一播放帧,生成预加载的第一内核数据;
[0014] 第一直播间视频流拉取模块,用于在接收到第一直播间的播放指令的情况下,根据第一内核数据,拉取第一直播间的直播视频流;
[0015] 第一直播间播放模块,用于播放第一直播间的直播视频流。
[0016] 根据本公开的另一方面,提供了一种电子设备,包括:
[0017] 至少一个处理器;以及
[0018] 与该至少一个处理器通信连接的存储器;其中,
[0019] 该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的方法。
[0020] 根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的方法。
[0021] 根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例中的方法。
[0022] 根据本公开的技术,在接收到播放指令之前,获取第一直播间的第一播放帧,在获取第一直播间的第一播放帧的过程中,相当于进行了第一直播间的直播视频流预拉取操作,本实施例中根据第一播放帧生成第一内核数据,第一内核数据可以用于后续的直播视频流播放,从而在收到直播播放指令后,可以直接根据内核数据播放直播视频流,缩短了直播指令下发后的加载时间,减少了第一直播间起播时的卡顿,提高用户体验。
[0023] 应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0024] 附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0025] 图1是根据本公开一实施例的直播信息处理方法流程示意图;
[0026] 图2是根据本公开另一实施例的直播信息处理方法示流程意图;
[0027] 图3是根据本公开又一实施例的直播信息处理方法示流程意图;
[0028] 图4是根据本公开一示例的直播信息处理方法示流程意图;
[0029] 图5是根据本公开另一示例的直播信息处理方法示流程意图;
[0030] 图6是根据本公开另一示例的直播信息处理方法示流程意图;
[0031] 图7是根据本公开一实施例的直播信息处理装置流程示意图;
[0032] 图8是根据本公开另一实施例的直播信息处理装置流程示意图;
[0033] 图9是根据本公开又一实施例的直播信息处理装置流程示意图;
[0034] 图10是根据本公开又一实施例的直播信息处理装置流程示意图;
[0035] 图11是根据本公开又一实施例的直播信息处理装置流程示意图;
[0036] 图12A‑C是根据本公开一示例的第一事件示意图;
[0037] 图13A是根据本公开另一示例的直播过程示意图;
[0038] 图13B是根据本公开另一示例的直播过程中用户滑动切换示意图;
[0039] 图14是根据本公开另一示例的第二事件示意图;
[0040] 图15是用来实现本公开实施例的直播信息处理方法的电子设备的框图。

具体实施方式

[0041] 以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0042] 本公开实施例首先提供了一种直播信息处理方法,如图1所示,包括:
[0043] 步骤S11:在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧;
[0044] 步骤S12:根据第一播放帧,生成预加载的第一内核数据;
[0045] 步骤S13:在接收到第一直播间的播放指令的情况下,根据第一内核数据,拉取第一直播间的直播视频流;
[0046] 步骤S14:播放第一直播间的直播视频流。
[0047] 本实施例中,第一直播间的播放指令,可以是用户通过点击直播卡片下发的第一直播间的播放指令,如图12C所示,用户在触控屏上通过手指123触碰APP显示界面中的一个直播卡片(对应第一直播间),下发播放指令。
[0048] 第一直播间的播放指令,也可以是用户通过滑动等操作下发的切换直播间,从而将会引起第一直播间的视频播放的指令。
[0049] 第一直播间的播放指令,还可以是用户通过点击链接、扫码等操作,直接进入第一直播间的指令。
[0050] 第一直播间可以是专门的直播平台开设的直播间,也可以是电话会议、网络会议等工具中涉及视频直播的功能所创建的直播间。
[0051] 比如,用户可以通过直播应用,进入第一直播间。
[0052] 再如,用户可以通过会议应用,开启视频功能,相当于在两端进行视频数据流传输,达到直播效果,这种情况下,被录制视频的一端对应的视频播放模块也可以认为是第一直播间。
[0053] 第一事件可以是预加载第一直播间的视频流的触发事件,比如,用户通过APP(Application,应用)进行网络信息的浏览,网络信息中包含了直播卡片,可以将第一直播间的直播卡片进入APP显示界面中作为第一事件。
[0054] 再如,用户通过APP进行网络信息的浏览,网络信息中包含了直播跳转链接或者直播跳转二维码,可以将第一直播间的直播跳转链接或者直播跳转二维码进入APP显示界面中作为第一事件。
[0055] 如图12A所示,在一种实施方式中,1号直播间121完全进入APP显示界面,认为1号直播间121发生了第一事件,这个时候,用户尚未点击或触发1号直播间的直播,即用户尚未发送播放指令,可执行图1所示的步骤S11‑S14。
[0056] 仍然参照图12A,2号直播间122未完全进入APP显示界面,认为2号直播间122未发生第一事件,此时,虽然用户尚未点击或触发1号直播间的直播,即用户尚未发送播放指令,则可不执行图1所示的步骤。
[0057] 用户可通过手指123上下滑动触控屏,使得2号直播间完全进入APP显示界面,使得2号直播间发生第一时间。
[0058] 在另一种实施方式中,直播间的链接或标题(如图12所示的标题1、标题2)进入APP显示界面,则可认为发生第一事件。
[0059] 在另一种可能的实现方式中,如图12B所示,4个直播卡片进入了APP的显示界面,则针对这4个直播卡片,均发生了第一事件。
[0060] 在另一种可能的实现方式中,第一事件可以是实际发生的事件结合条件。比如,用户通过APP进行网络信息的浏览,网络信息中包含了多个直播卡片,第一直播间的直播卡片和第二直播间的直播卡片进入APP显示界面,但是第一直播间曾经被用户观看过,第二直播间未被用户观看过,则仅获取第一直播间在直播过程中的第一播放帧,不获取第二直播间在直播过程中的第二播放帧。
[0061] 在另一种可能的实现方式中,第一时间可以是实际发生的事件结合其它条件。比如,用户通过APP进行网络信息的浏览,网络信息中包含了多个直播卡片,第一直播间的直播卡片和第二直播间的直播卡片进入APP显示界面,但是第一直播间的播放账号被用户关注或收藏,第二直播间的播放账号未被用户关注或收藏,则仅获取第一直播间在直播过程中的第一播放帧,不获取第二直播间在直播过程中的第二播放帧。
[0062] 在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧,可以为用户下发第一直播间的播放指令之前的直播数据预获取或预加载,第一播放帧可以是对第一直播间的直播数据进行预获取或预加载过程中获取的第一个第一直播间的视频帧。
[0063] 第一播放帧可以是第一直播间直播过程任意时间点的视频帧。
[0064] 根据第一播放帧,生成预加载的第一内核数据,可以是在确定获取到第一播放帧的情况下,根据获取第一播放帧时同时获取的第一直播间的相关直播所需的数据,生成第一内核数据。第一内核数据用于拉取第一直播间的视频流以在播放端播放第一直播间的视频流。
[0065] 第一内核数据生成之后,可以预先存储在指定的存储空间中,待接收到第一直播间的播放指令时,根据第一内核数据,对第一直播间的视频流进行拉取和播放。
[0066] 在接收到第一直播间的播放指令的情况下,根据第一内核数据,拉取第一直播间的直播视频流,可以指在接收到第一直播间的播放指令的情况下,在第一内核数据中包含的第一直播间视频流播放所需要的准备数据的基础上,继续拉取第一直播间的视频流,实现第一直播间的直播视频流的正常播放。
[0067] 本实施例中,在接收到播放指令之前,获取第一直播间的第一播放帧,在获取第一直播间的第一播放帧的过程中,相当于进行了第一直播间的直播视频流预拉取操作,本实施例中根据第一播放帧生成第一内核数据,第一内核数据可以用于后续的直播视频流播放,从而在收到直播播放指令后,可以直接根据内核数据播放直播视频流,缩短了直播指令下发后的加载时间,减少了第一直播间起播时的卡顿,提高用户体验。
[0068] 在一种实施方式中,获取第一直播间在直播过程中的第一播放帧,包括:
[0069] 通过子线程对第一直播间的直播数据进行预加载,直到预加载到第一直播间的视频帧为止,将预加载过程中加载到的第一直播间的视频帧作为第一播放帧。
[0070] 通过子线程对第一直播间的直播数据进行预加载,可以是对第一直播间起播准备所需要的所有数据进行预加载,直到加载到第一直播间的视频帧为止,确定第一直播间的预加载操作可以结束。
[0071] 本实施例中,预加载操作的步骤可以与用户点击直播间的直播卡片后,执行的Loading(加载)操作的步骤相同,但是本实施例是在未接收到第一直播间的播放指令的情况下,对第一直播间的直播数据进行预加载。
[0072] 本实施例中,直播数据不仅可包括直播视频数据,还可包括在播放端对直播间的直播视频数据进行播放所需要的其它数据,比如协议、数据格式信息等。
[0073] 在一种可能的实现方式中,可根据一定的时间间隔,对第一播放帧进行更新,也可以不对第一播放帧进行更新。
[0074] 本实施例中,通过子线程对第一直播间的直播数据进行预加载,从而不会对用户正常的网络工具使用操作、网络数据浏览操作等操作造成干扰。预加载操作执行到预加载到第一直播间的任意一个视频帧为止,从而不会因为预加载的数据量过多而对播放端产生额外的负担。
[0075] 在另一种可能的实现方式中,可对预加载的第一直播间的数据进行播放。
[0076] 在一种实施方式中,根据第一播放帧,生成预加载的第一内核数据,包括:
[0077] 获取第一直播间的透传协议和数据格式;
[0078] 根据透传协议和第一直播间的数据格式和播放端的数据格式,生成用于对接收到的第一直播间的视频流进行解码的解码器;
[0079] 根据解码器和预加载到第一播放帧时已获取的第一直播间的数据,生成预加载的第一内核数据。
[0080] 获取第一直播间的透传协议和数据格式,可以包括获取第一直播间的透传协议和第一直播间的数据格式。
[0081] 解码器可以用于将第一直播间的视频的数据格式转换为播放端的数据格式,以便播放端进行直播视频数据的播放。
[0082] 本实施例中,根据解码器和预加载到第一播放帧时已获取的第一直播间的数据,生成预加载的第一内核数据,从而在接收到第一直播间的播放指令之后,能够直接根据第一内核数据进行第一直播间的视频的播放,从而减少用户在下发第一直播间的播放指令之后的加载时间,提高用户体验。
[0083] 在一种实施方式中,根据第一内核数据,拉取第一直播间的直播视频流,包括:
[0084] 根据第一直播间的透传协议,获取第一直播间的原始视频流;
[0085] 利用解码器对原始视频流进行解码,得到第一直播间的直播视频流。
[0086] 在本实施例中,用于对第一直播间的原始视频流进行解码的解码器,为预先生成的解码器,从而,能够缩短用户下发第一直播间的播放指令到用户看到直播画面的时间,提升用户体验。
[0087] 在一种实施方式中,第一事件包括:第一直播间的直播卡片出现于设定的播放端的显示范围。
[0088] 在一种可能的实现方式中,直播卡片出现于设定的播放端的显示范围,可以是用户通过滑动浏览网络数据,使得直播卡片出现于播放端的显示范围。也可以是通过自动弹出等方式,使得直播卡片出现于播放端的显示范围。
[0089] 在另一种可能的实现方式中,第一事件可以是用户自己定义的事件。比如,到达设定时间点等。
[0090] 在第一直播间的直播卡片出现于设定的播放端的显示范围的情况下,获取第一直播间的视频帧,从而在用户下发第一直播间的播放指令后,能够对第一直播间的视频进行快速播放,提升用户体验。
[0091] 在一种实施方式中,如图2所示,直播信息处理方法还包括:
[0092] 步骤S21:在播放第一直播间的直播视频流的过程中,获取第二直播间直播过程中的第二播放帧;
[0093] 步骤S22:根据第二播放帧,生成预加载的第二内核数据;
[0094] 步骤S23:在检测到设定的第二事件的情况下,根据第二内核数据,拉取第二直播间的视频流;
[0095] 步骤S24:播放第二直播间的视频流。
[0096] 在具体的一种实现方式中,第二直播间可以是与第一直播间相关的直播间。例如,第二直播间可以是在第一直播间的直播视频流播放的过程中,通过滑动切换能够切换到的第一直播间的相邻直播间。
[0097] 本实施例中,能够在第一直播间的直播视频流播放的过程中,预加载第二直播间的直播数据,从而便于用户下发第二直播间的播放指令时,快速播放第二直播间的直播视频流,提高用户体验。
[0098] 在一种实施方式中,设定的第二事件包括:从第一直播间切换至第二直播间。
[0099] 在具体实现方式中,从第一直播间切换至第二直播间,可以是通过任意方式,从第一直播间切换到第二直播间。
[0100] 比如,通过预设的上下滑动或左右滑动操作,进行直播间的切换。
[0101] 在一种具体的实现方式中,第二事件可以是第一直播间的直播视频流播放的过程中发生的事件,如图13A所示的第一直播间131的直播过程。第二事件如图13B所示,可以是用户手指132滑动屏幕的事件。
[0102] 在另一种可能的实现方式中,还可以通过设定的切换按钮,进行直播间的切换等。
[0103] 本实施例中在第二事件发生的情况下,能够利用预先加载的数据,从第一直播间切换到第二直播间,从而,在切换时,能够保证视频播放的流畅,减少卡顿,提升用户体验。
[0104] 在一种实施方式中,如图3所示,直播信息处理方法还包括:
[0105] 步骤S31:检测到设定的第三事件的情况下,同步播放第一直播间的视频流和第二直播间的视频流。
[0106] 在具体实现方式中,第三事件可以为用于自定义的事件。
[0107] 在本公开实施例中,同步播放时,可以根据设定,对其中一个直播间进行语音播放静音。也可以同时播放两个直播间的直播音频流。
[0108] 本实施例中,能够在检测到第三事件时,对第一直播间的视频流和第二直播间的视频流进行同步播放,从而能够进一步提高用户体验。
[0109] 在一种实施方式中,设定的第三事件包括:第一直播间对应的窗口和第二直播间对应的窗口同时出现在直播播放端的播放界面。如图14所示,在用户手指141滑动第一直播间142时,进行第一直播间142的切换操作,第一直播间142的画面开始从显示界面消失,第二直播间143的画面开始从显示界面出现,在这个过程中,显示界面可能同时呈现部分第一直播间142的画面和部分第二直播间143的画面。这种情况下,第一直播间142和第二直播间143的直播视频流可同时进行播放。
[0110] 本实施例中,同时出现的第一直播间的窗口和第二直播间的窗口可以为同样的窗口或不同的窗口。
[0111] 在用户通过滑动切换直播间的过程中,可能会出现第一直播间的窗口和第二直播间的窗口同时出现在直播播放端的情况,在这种情况下,同时播放两个直播间的视频数据,使得用户在视觉上感觉不到直播间的视频加载过程,提高用户体验。
[0112] 在本公开一种示例中,播放端可以对直播进行协议的预定义,通过预定义,生成播放端播放的Scheme(直播地址)。直播Scheme具体可以是:demoApp://live/enter?params={″screen″:″1″,″play_url″:″http://flv.live.lss‑user.bai.com/live/stream_bduid_20085969‑L1.flv″,″roomId″:″3345678″}。
[0113] 预定义的协议可支持播放端的竖屏播放和横屏播放、支持直播间播放地址的获取、支持识别直播间标识(ID,Identity)。
[0114] 播放端可以是手机、台式电脑、笔记本电脑、平板电脑等。播放端的播放工具可以是APP、浏览器等,播放端的播放工具需要首先导入依赖框架,比如,可采用开源框架IJKMediaFramework依赖框架可包含依赖库。
[0115] 引入相关的框架之后,播放端需要添加头文件路径,比 如,针对IJKMediaFramework依赖框架,可以在Build Settings‑>Header Search Paths添加IJKMediaFramework的路径,并且在Build sSetting里面,Other Linker Flags里面添加调用依赖框架的函数(如函数‑fobjc‑arc和‑ObjC)。
[0116] 在一种可能的实现方式中,还可以根据需要禁用Bitcode,关闭自动裁剪功能等。还可以配置一些隐私设置。
[0117] 本申请示例可以对IJKMediaFramework做一些修改,使其能够实现本公开的预加载等功能。调用依赖框架进行预播时,创建解码器,拉取首帧即停止。
[0118] 在一种可能的实现方式中,用户浏览主界面的过程中,当播放端屏幕中出现含有协议的的直播卡片,就开启子线程进行预加载,预加载到直播卡片对应的直播间的任意一个视频帧即可停止,根据预加载的数据创建内核数据。
[0119] 在用户手动点击进入直播页的情况下,直接进行直播创建,播放器创建,获取刚才预加载的内核数据,进行播放
[0120] 拉取直播卡片对应的直播间详情数据,并拉取直播间列表数据进行渲染,实现直播卡片对应的直播间的视频播放。
[0121] 在另一种示例中,用户在当前直播间内开始播放,当前直播间的首帧渲染成功后,会预加载下一个直播间数据。
[0122] 当用户想切换直播间时,开始创建直播间播放器组件,获取刚才预加载的内核,可通过静音播放的方式对切换目标对应的直播间进行播放。
[0123] 用户滑动完成,切换目标对应的直播间非静音播放,并且切换目标对应的直播间的首帧已经渲染成功,又再次预加载切换目标对应的直播间的下一个直播间数据。
[0124] 本公开实施例提供的方案,能够提升直播间起播速度,并且可以有效的支持用户在滑动的过程中播放。不卡顿,不Loading(加载)。
[0125] 本公开一种示例中,如图4所示,直播信息处理方法包括第一直播间播放过程中的如下步骤:
[0126] 步骤S41:检测到用户触摸屏幕。
[0127] 步骤S42:检测到用户在屏幕上向上滑动。
[0128] 步骤S43:检测到出现新的第二直播间对应的画面。
[0129] 步骤S44:拉取第二直播间的直播视频流并静音播放。
[0130] 步骤S45:检测到用户完成滑动。
[0131] 步骤S46:检测到第一直播间对应的画面消失。
[0132] 步骤S47:拉取第二直播间的视频流并非静音播放。
[0133] 在本公开另一种示例中,包括如图5所示的流程:
[0134] 步骤S51:检测到用户对直播工具主页面的浏览操作。其中,直播工具的主页面遵循相关协议。
[0135] 步骤S52:检测到用户点击主页面上的链接。
[0136] 步骤S53:在对主页面过程中,若有直播卡片进入播放端的显示界面,则对直播卡片对应的直播间进行预加载。
[0137] 步骤S54:在点击主页面上的链接,进入链接对应的页面后,对页面中的直播间进行预加载。
[0138] 步骤S55:用户下发直播间的播放指令之后,创建直播间。
[0139] 步骤S56:在用户下发直播间的播放指令之前,开启子线程进行预播放,获取直播间详情、加载其它组件挂件、获取直播列表等。在用户下发直播间的播放指令之后,通过主线程进行预播放,获取直播间详情、加载其它组件挂件、获取直播列表等。
[0140] 在本公开一种示例中,如图6所示,包括:
[0141] 步骤S61:播放端处于对当前直播间的播放过程中(首帧播放成功)。
[0142] 步骤S62:获取下一个直播间。
[0143] 步骤S63:对下一个直播间进行预加载。
[0144] 步骤S64:检测到用户对当前直播间播放界面的滑动操作时,创建下一直播间的播放器组件。
[0145] 步骤S65:在当前直播间的画面还未完全切换之前,静音播放下一个直播间,同时获取直播间详情、直播列表、加载其它组件挂件。
[0146] 步骤S66:在预加载至首帧渲染成功的情况下,或者在完全切换到了下一个直播间的情况下,可继续对下一直播间的下一直播间执行预加载操作。
[0147] 本公开实施例还提供一种直播信息处理装置,如图7所示,包括:
[0148] 第一播放帧获取模块71,用于在接收到第一直播间的播放指令之前检测到第一事件的情况下,获取第一直播间在直播过程中的第一播放帧;
[0149] 第一内核数据生成模块72,用于根据第一播放帧,生成预加载的第一内核数据;
[0150] 第一直播间视频流拉取模块73,用于在接收到第一直播间的播放指令的情况下,根据第一内核数据,拉取第一直播间的直播视频流;
[0151] 第一直播间播放模块74,用于播放第一直播间的直播视频流。
[0152] 在一种实施方式中,第一播放帧获取模块还用于:
[0153] 通过子线程对第一直播间的直播数据进行预加载,直到预加载到第一直播间的视频帧为止,将预加载过程中加载到的第一直播间的视频帧作为第一播放帧。
[0154] 在一种实施方式中,如图8所示,第一内核数据生成模块包括:
[0155] 相关信息获取单元81,用于获取第一直播间的透传协议和数据格式;
[0156] 解码器生成单元82,用于根据透传协议和第一直播间的数据格式和播放端的数据格式,生成用于对接收到的第一直播间的视频流进行解码的解码器;
[0157] 数据处理单元83,用于根据解码器和预加载到第一播放帧时已获取的第一直播间的数据,生成预加载的第一内核数据。
[0158] 在一种实施方式中,如图9所示,第一直播间视频流拉取模块包括:
[0159] 原始视频流获取单元91,用于根据第一直播间的透传协议,获取第一直播间的原始视频流;
[0160] 解码单元92,用于利用解码器对原始视频流进行解码,得到第一直播间的直播视频流。
[0161] 在一种实施方式中,第一事件包括:第一直播间的直播卡片出现于设定的播放端的显示范围。
[0162] 在一种实施方式中,如图10所示,直播信息处理装置还包括:
[0163] 第二播放帧获取模块101,用于在播放第一直播间的直播视频流的过程中,获取第二直播间直播过程中的第二播放帧;
[0164] 第二内核数据生成模块102,用于根据第二播放帧,生成预加载的第二内核数据;
[0165] 第二直播间视频流拉取模块103,用于在检测到设定的第二事件的情况下,根据第二内核数据,拉取第二直播间的视频流;
[0166] 第二直播间视频流播放模块104,用于播放第二直播间的视频流。
[0167] 在一种实施方式中,设定的第二事件包括:从第一直播间切换至第二直播间。
[0168] 在一种实施方式中,如图11所示,直播信息处理装置还包括:
[0169] 同步播放模块111,用于检测到设定的第三事件的情况下,同步播放第一直播间的视频流和第二直播间的视频流。
[0170] 在一种实施方式中,设定的第三事件包括:第一直播间对应的窗口和第二直播间对应的窗口同时出现在直播播放端的播放界面。
[0171] 本公开实施例各装置中的各单元、模块或子模块的功能可以参见上述方法实施例中的对应描述,在此不再赘述。
[0172] 根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0173] 图15示出了可以用来实施本公开的实施例的示例电子设备150的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或要求的本公开的实现。
[0174] 如图15所示,电子设备150包括计算单元151,其可以根据存储在只读存储器(ROM)152中的计算机程序或者从存储单元158加载到随机访问存储器(RAM)153中的计算机程序来执行各种适当的动作和处理。在RAM 153中,还可存储电子设备150操作所需的各种程序和数据。计算单元151、ROM 152以及RAM 153通过总线154彼此相连。输入输出(I/O)接口155也连接至总线154。
[0175] 电子设备150中的多个部件连接至I/O接口155,包括:输入单元156,例如键盘、鼠标等;输出单元157,例如各种类型的显示器、扬声器等;存储单元158,例如磁盘、光盘等;以及通信单元159,例如网卡、调制解调器、无线通信收发机等。通信单元159允许电子设备150通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0176] 计算单元151可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元151的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元151执行上文所描述的各个方法和处理,例如直播信息处理方法。例如,在一些实施例中,直播信息处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元158。在一些实施例中,计算机程序的部分或者全部可以经由ROM 152和/或通信单元159而被载入和/或安装到电子设备150上。当计算机程序加载到RAM 153并由计算单元151执行时,可以执行上文描述的直播信息处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元151可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行直播信息处理方法。
[0177] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0178] 用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0179] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0180] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入来接收来自用户的输入。
[0181] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
[0182] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。
[0183] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0184] 上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。