视频处理方法和视频处理装置转让专利

申请号 : CN202110627406.2

文献号 : CN113365150B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘神恩

申请人 : 上海哔哩哔哩科技有限公司

摘要 :

本发明实施例公开了一种视频处理方法和视频处理装置。本发明实施例在接收到视频播放指令后,创建目标活动组件,并在目标活动组件创建的第一阶段创建视频流播放容器,以在视频流播放容器中创建预定播放器,进而响应于视频流播放容器创建完成,在目标活动组件创建的第二阶段对视频流进行播放。在本发明实施例中,第一阶段为用户不可见的阶段,第二阶段为用户可见的阶段,创建视频流播放容器的过程被提前至目标活动组件创建的第一阶段执行,并且在目标活动组件创建的第二阶段中,可以直接对视频流进行播放,因此本发明实施例可以降低终端在进入直播间页面后页面白屏的显示时间,提升用户的观看体验。

权利要求 :

1.一种视频处理方法,其特征在于,所述方法包括:

响应于接收到视频播放指令,创建目标活动组件;

在第一阶段创建并初始化视频流播放容器,在所述视频流播放容器中创建视图对象,在所述视频流播放容器中创建并初始化预定播放器,所述视图对象用于定义所述视频流的显示属性,所述第一阶段为Oncreate阶段,所述目标活动组件在所述Oncreate阶段处于后台不可见的状态;

响应于所述视频流播放容器创建完成,在所述目标活动组件创建的第二阶段对所述视频流进行播放,其中,所述第二阶段为Onresume阶段,所述目标活动组件在所述Onresume阶段处于前台可见的状态;

其中,所述在所述第一阶段创建并初始化视频流播放容器,在所述视频流播放容器中创建视图对象,在所述视频流播放容器中创建并初始化预定播放器,包括:通过修改所述视频流播放容器的任务消息、所述预定播放器的任务消息以及所述视图对象的任务消息的地址,对所述视频流播放容器的任务消息、所述预定播放器的任务消息以及所述视图对象的任务消息进行插队处理。

2.根据权利要求1所述的方法,其特征在于,所述在所述目标活动组件创建的第二阶段对所述视频流进行播放包括:在Onresume阶段,通过所述预定播放器调用所述视图对象,以通过所述预定播放器对所述视频流进行播放。

3.根据权利要求1所述的方法,其特征在于,所述在所述视频流播放容器中创建并初始化所述预定播放器包括:设置所述预定播放器的播放器参数;

读取所述视频流的数据包包头,根据所述数据包包头创建所述视频流的解码线程。

4.根据权利要求3所述的方法,其特征在于,所述在所述目标活动组件创建的第二阶段对所述视频流进行播放包括:对所述视频流的数据包进行解析处理,获取所述视频流;

通过所述预定播放器回调所述视频流,以对所述视频流进行渲染显示。

5.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法还包括:在所述目标活动组件的消息队列中对目标任务消息进行插队处理,以使得主线程优先执行所述目标任务消息对应的进程,所述目标任务消息包括所述视频流播放容器的任务消息。

6.根据权利要求5所述的方法,其特征在于,所述目标任务消息还包括预定播放器的任务消息以及视图对象的任务消息。

7.根据权利要求1所述的方法,其特征在于,所述目标活动组件的运行环境为Android。

8.一种视频处理装置,其特征在于,所述装置包括:

组件创建单元,用于响应于接收到视频播放指令,创建目标活动组件;

容器创建单元,用于在第一阶段创建并初始化视频流播放容器,在所述视频流播放容器中创建视图对象,在所述视频流播放容器中创建并初始化预定播放器,所述视图对象用于定义所述视频流的显示属性,所述第一阶段为Oncreate阶段,所述目标活动组件在所述Oncreate阶段处于后台不可见的状态;

其中,所述在所述第一阶段创建并初始化视频流播放容器,在所述视频流播放容器中创建视图对象,在所述视频流播放容器中创建并初始化预定播放器,包括:通过修改所述视频流播放容器的任务消息、所述预定播放器的任务消息以及所述视图对象的任务消息的地址,对所述视频流播放容器的任务消息、所述预定播放器的任务消息以及所述视图对象的任务消息进行插队处理;

视频流播放单元,用于响应于所述视频流播放容器创建完成,在所述目标活动组件创建的第二阶段对所述视频流进行播放,其中,所述第二阶段为Onresume阶段,所述目标活动组件在所述Onresume阶段处于前台可见的状态。

9.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1‑7中任一项所述的方法。

10.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1‑7中任一项所述的方法。

说明书 :

视频处理方法和视频处理装置

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种视频处理方法和视频处理装置。

背景技术

[0002] 随着互联网技术领域和计算机技术领域的不断发展,网络直播(下述也即直播)作为一种快速的信息传播方式得到了越来越广泛的应用,用户通过手机等终端就可以查看直播。在现有技术中,自终端进入到用户选择的预定直播间的直播间页面至直播画面可见(也即,用户可以查看到直播画面)期间,终端界面可能会产生短暂的白屏,对用户的观看体验造成不良影响。

发明内容

[0003] 有鉴于此,本发明实施例的目的在于提供一种视频处理方法和视频处理装置,用于降低终端在进入直播间页面后页面白屏的显示时间,提升用户的观看体验。
[0004] 根据本发明实施例的第一方面,提供一种视频处理方法,所述方法包括:
[0005] 响应于接收到视频播放指令,创建目标活动组件;
[0006] 在所述目标活动组件创建的第一阶段创建视频流播放容器,以在所述视频流播放容器中创建预定播放器;
[0007] 响应于所述视频流播放容器创建完成,在所述目标活动组件创建的第二阶段对所述视频流进行播放。
[0008] 根据本发明实施例的第二方面,提供一种视频处理装置,所述装置包括:
[0009] 组件创建单元,用于响应于接收到视频播放指令,创建目标活动组件;
[0010] 容器创建单元,用于在所述目标活动组件创建的第一阶段创建视频流播放容器,以在所述视频流播放容器中创建预定播放器;
[0011] 视频流播放单元,用于响应于所述视频流播放容器创建完成,在所述目标活动组件创建的第二阶段对所述视频流进行播放。
[0012] 根据本发明实施例的第三方面,提供一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如第一方面所述的方法。
[0013] 根据本发明实施例的第四方面,提供一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面所述的方法。
[0014] 根据本发明实施例的第五方面,提供一种计算机程序产品,包括计算机程序/指令,其中,该计算机程序/指令被处理器执行以实现如第一方面所述的方法。
[0015] 本发明实施例在接收到视频播放指令后,创建目标活动组件,并在目标活动组件创建的第一阶段创建视频流播放容器,以在视频流播放容器中创建预定播放器,进而响应于视频流播放容器创建完成,在目标活动组件创建的第二阶段对视频流进行播放。在本发明实施例中,第一阶段为用户不可见的阶段,第二阶段为用户可见的阶段,创建视频流播放容器的过程被提前至目标活动组件创建的第一阶段执行,并且在目标活动组件创建的第二阶段中,可以直接对视频流进行播放,因此本发明实施例可以降低终端在进入直播间页面后页面白屏的显示时间,提升用户的观看体验。

附图说明

[0016] 通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
[0017] 图1是现有技术中播放视频流的示意图;
[0018] 图2是本发明第一实施例的视频处理方法的流程图;
[0019] 图3是本发明第一实施例的一种可选的实现方式中对目标任务消息进行插队处理的示意图;
[0020] 图4是本发明第一实施例中播放视频流的示意图;
[0021] 图5是实现本发明第一实施例的视频处理方法的进程示意图;
[0022] 图6是本发明第二实施例的视频处理装置的示意图;
[0023] 图7是本发明第三实施例的电子设备的示意图。

具体实施方式

[0024] 以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
[0025] 此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
[0026] 除非上下文明确要求,否则在说明书的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
[0027] 在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0028] 在本发明实施例中,以视频流为直播视频流为例进行说明。但是本领域技术人员容易理解,在视频流为其他视频流,例如录播视频流时,本发明实施例的方法同样使用。
[0029] 网络直播继承了互联网的优势,通过视讯方式进行现场直播,可以将产品展示、相关会议、背景介绍、方案测评、网上调查、对话访谈、在线培训等内容现场发布到互联网上,利用互联网直播、快速、表现形式好、内容丰富、交互性强、不受地域限制、受众可划分等特点,加强了信息的传播效果,因此受到越来越多人,特别是年轻人的欢迎。以运行在安卓(Android)系统环境内具有直播功能的客户端为例,用户在通过上述客户端选择进入预定直播间后,终端就可以对预定直播间的直播内容进行查看。
[0030] 但在现有技术中,自终端进入到用户选择的预定直播间的直播间页面至直播画面可见(也即,用户可以查看到直播画面)期间,终端界面可能会产生短暂的白屏,对用户的观看体验造成不良影响。
[0031] 图1是现有技术中播放视频流的示意图。如图1所示,用户选择预定直播间,例如点击预定直播间的直播间控件可以触发视频播放指令。终端可以响应于接收到视频播放指令,创建Activity组件。在activity组件创建后的OnCreate阶段,终端需要顺序处理播放项目(playitem)创建101、基础组件初始化102、房间页任务队列103等过程。在activity组件创建后的OnResume阶段,终端需要顺序执行LiveData(一种可观察的数据存储器类)激活104、播放(player)容器创建105、接口请求回调106、播放容器完成107、播放器创建108、播放器就绪109、解析到首帧110、画面可见111等过程。其中,OnResume阶段为activity组件生命周期的第一个阶段(又称方法),在这一阶段中,activity组件为后台运行且不可见的状态;OnResume阶段为activity组件生命周期的第三个阶段,在这一阶段中,activity组件为前台运行且可见的状态。
[0032] 受到安卓机制的限制,画面可见的进程只能在OnResume阶段被执行,且执行完毕播放容器创建105、播放容器完成107以及播放器创建108的进程后,终端才可以执行画面可见的进程。也就是说,在现有技术中,终端在activity组件为前台运行且可见的状态下需要执行播放容器创建105、播放容器完成107以及播放器创建108后,才可以显示直播画面,因此会出现终端在进入直播间页面后页面产生白屏的情况。
[0033] 用户所使用的终端为硬件性能越高,特别是处理器运行速度越快的终端,按照现有技术进入直播间后,白屏(也即,界面无直播视频画面)产生的时间会越短暂,用户越难察觉到;而反之,白屏产生的时间会越长,用户越容易察觉到。而产生白屏的时间越长,用户错过直播中的关注内容的可能性越高,因此白屏产生的时间越长,越容易对用户的观看体验造成负面影响。
[0034] 图2是本发明第一实施例的视频处理方法的流程图。如图2所示,本实施例的方法包括如下步骤:
[0035] 步骤S100,响应于接收到视频播放指令,创建目标活动组件。
[0036] 用户选择预定直播间,例如点击预定直播间的直播间控件后,可以通过触发直播间控件的方式向终端发送视频播放指令。终端可以响应于接收到视频播放指令,创建目标活动组件。
[0037] 目标活动组件也即用于进行直播视频播放的activity组件。Activity是安卓系统中最基本且常用的四大组件之一,是用户操作的可视化界面,为用户提供一个可以完成操作指令的窗口(也即,屏幕),并通过屏幕与用户进行交互。当创建完毕activity后,需要调用setcontentview()(设置上下文视图)方法来完成界面的显示。安卓系统的所有几乎所有可视的APP(application,应用)均依托于activity,因此activity是程序开发中使用最频繁的一种组件。
[0038] Activity的生命周期包括多个阶段,本实施例中涉及的阶段包括OnCreate阶段和OnResume阶段。OnCreate阶段为activity生命周期的第一个方法,它本身的作用是进行activity的一些初始化工作,例如控件初始化、变量初始化等。在这一阶段,activity处于后台不可见(也即,用户无法查看到)的状态。OnResume阶段为activity生命周期的第三个方法,在这一阶段,activity处于前台可见(也即,用户可以查看到),并且可以独立占用终端的屏幕。
[0039] 步骤S200,在目标活动组件创建的第一阶段创建视频流播放容器。
[0040] 在创建目标活动组件后,终端在目标活动组件创建的第一阶段,也即OnCreate阶段执行创建视频流播放容器的进程,以在视频流播放容器中创建预定播放器。视频流播放容器为容器(docker)的一种,终端可以在视频流播放容器内部署预定播放器,以对视频流进行播放。容器技术作为虚拟化技术的一种,已成为一种便利的服务器资源共享方式,它可以在按需构建进程系统实例的过程中为系统管理员提供极大的灵活性。容器的可移植性较好,在大部分进程系统中,容器的运行可以不受限制。在本实施例中,终端可以按照现有的方式执行创建视频流播放容器的进程,本实施例不做具体限定。
[0041] 在视频流播放容器创建完成后,终端可以在视频流播放容器内执行创建并初始化预定播放器的进程。在本实施例中,预定播放器可以为i jk播放器(下述也即i jk)。I jk具有接口设计简单、支持跨平台(也即,不依赖于终端的进程系统和硬件环境)、开源、支持二次开发等优势。在本实施例中,终端可以按照现有的方式执行创建预定播放器的进程,本实施例不做具体限定。
[0042] 并且,终端还可以在视频流播放容器内执行创建视图对象(SurfaceView)的进程。View通过刷新来重绘视图,系统通过发出VSSYNC(Visual Studio SYNC,Visual Studio同步)信号来进行屏幕的重绘,刷新的时间间隔是16毫秒,若终端可以在16毫秒内完成重绘视图的工作,则用户可以正常观看;若绘制过程的逻辑结构很复杂且界面更新频率较高,终端无法在16毫秒内完成重绘视图的工作,因此会造成界面卡顿,对用户的观看体验造成负面影响。因此安卓系统提供了SurfaceView来解决上述问题。
[0043] 本实施例的视图对象为SurfaceView。SurfaceView提供一个独立的surface(绘图表面)嵌入到视图结构层次中,也即,不与宿主(也即,用于播放视频流的终端)共享同一个绘图表面。由于拥有独立的绘图表面,SurfaceView的界面设计(User Interface design,UI)可以在一个独立的线程中进行绘制,具体地,SurfaceView可以控制surface的格式、大小和显示位置,在本实施例中,视频流会被绘制在surface中,因此SurfaceView可以用于定义视频流的显示属性。且SurfaceView不会占用主线程资源,因此可以在实现复杂且高效的界面设计的同时不会导致用户的操作无法得到及时响应。在本实施例中,终端可以按照现有的方式执行创建视图对象的进程,本实施例不做具体限定。
[0044] 在本实施例中,创建视频流播放容器、创建并初始化预定播放器以及创建视图对象的进程均被提前至不可见的OnCreate阶段执行,而可见的OnResume阶段终端无需再执行上述进程,因此可以有效加快画面可见的进程的执行进度,缩短白屏的显示时间。
[0045] 安卓系统中,应用层进程的执行均基于事件驱动模型设计,事件驱动模型用于响应请求,创建一个用于处理该请求的进程。包括预定播放器的初始化过程在内的目标活动组件需要通过安卓系统的主线程完成整个生命周期,但生命周期的各阶段并不是串行的,也就是说,终端并不是执行完毕一个阶段后才会执行另一个阶段,因此当阶段中的进程或进程中的线程存在异步的情况时需要重新进入安卓主线程的handler(用于异步消息的处理)重新排队。
[0046] 但主线程的handler中的消息队列会被整个应用共享。消息队列也即在消息的传输过程中保存消息的容器,用于通过异步处理提升系统性能并降低系统耦合性。常见的消息队列用ActiveMQ(Active消息队列)、RabbitMQ、Kfaka、RocketMQ等。消息队列中的消息为两台设备间传送的数据单位,依靠着消息队列先进先出的原则进行顺序处理,也就是说,先进入消息队列的消息会被先处理,而后进入消息队列的消息会被后处理。按照现有技术,视频流播放容器的任务消息、预定播放器的任务消息以及视图对象的任务消息的产生位置靠后,按照消息列表先进先出的原则会在靠后的位置被处理。因此为了使得与预定播放器相关的目标任务消息的进程,包括视频流播放容器的任务消息、预定播放器的任务消息以及视图对象的任务消息可以被优先处理,在本实施例的一种可选的实现方式中,可以对目标任务消息进行插队处理。具体地,终端可以对目标任务消息的地址进行修改以达到对目标任务消息进行插队处理的目的。
[0047] 图3是本发明第一实施例的一种可选的实现方式中对目标任务消息进行插队处理的示意图。如图3所示,主线程消息队列31包括x埋点、ActivityThread.H分发(活动线程分发)、x接口回调、图片资源加载回调等任务消息。主线程消息队列31队首311的pop操作用于检测主线程消息队列31中是否包括任务消息,并对主线程消息队列31中排序在首位的任务消息进行处理;队尾312的push操作用于检测主线程消息队列31是否可以写入新的任务消息,若主线程消息队列31的队列长度大于任务消息的数量,则push操作可以在主线程消息队列31中写入新的任务消息。在视频流播放容器消息(也即,视频流播放容器的任务消息)32、预定播放器消息(也即,预定播放器的任务消息)33以及视图对象消息(也即,视图对象的任务消息)34产生后,按照现有技术,视频流播放容器消息32、预定播放器消息33以及视图对象消息34均会被排序在x埋点的任务消息后。而在本实施例中,通过修改视频流播放容器消息32、预定播放器消息33以及视图对象消息34的地址的方式对视频流播放容器消息
32、预定播放器消息33以及视图对象消息34进行插队处理,使得视频流播放容器消息32、预定播放器消息33以及视图对象消息34可以被排序在ViewRootlmpl前,因此视频流播放容器消息32、预定播放器消息33以及视图对象消息34可以被优先处理。
[0048] 步骤S300,响应于视频流播放容器创建完成,在目标活动组件创建的第二阶段对视频流进行播放。
[0049] 在OnCreate阶段,终端已经对视频流播放容器创建的进程、视频流播放容器创建完成的进程以及预定播放器创建的进程执行完毕。因此在OnResume阶段,预定播放器初始化完成后,终端可以通过预定播放器对视频流进行播放。
[0050] 终端在OnCreate阶段拉取到的视频流实际为视频流的数据包,因此终端在执行创建并初始化预定播放器的进程中,还会执行设置预定播放器的播放器参数的进程,并读取视频流的数据包包头,根据数据包包头创建视频流的解码线程。
[0051] 在OnResume阶段,终端可以执行视频流的解码线程,以对视频流的数据包进行解析处理,获取视频流。视频流的解析处理可以为逐帧解析,因此每解析视频流中的一帧图像,终端可以通过预定播放器回调该帧图像,以对视频流进行渲染显示。
[0052] 图4是本发明第一实施例中播放视频流的示意图。如图4所示,终端可以响应于接收到视频播放指令,并创建Activity组件。在本实施例中,播放容器创建105、播放容器完成107、播放器创建108的过程被提前至OnCreate阶段处理。也就是说,在activity组件创建后的OnCreate阶段,终端顺序处理播放项目创建101、基础组件初始化102、播放容器创建105、播放容器完成107、播放器创建108等过程。这使得在OnResume阶段,播放器就绪、解析到首帧以及画面可见的过程可以被优先处理。也就是说,在activity组件创建后的OnResume阶段,终端顺序处理播放器就绪109、解析到首帧110、画面可见111、LiveData激活106、接口请求回调104等过程。
[0053] 图5是实现本发明第一实施例的视频处理方法的进程示意图。如图5所示,在OnCreate阶段,主进程执行AIDL(Android Interface Definition Language,接口定义语言)拿到itemClient(也即,项目客户端与接口定义语言绑定)的子进程501A、item.start(项目开始)的子进程501B、创建视频流播放容器的子进程503A、surface创建的子进程504A、AIDL拿到i  jkClient(i jk客户端与接口定义语言绑定)的子进程505A、i jk.setPlayItem(设定播放项目i jk)的子进程506A、i jk.prepareAsync(i jk异步准备)的子进程507A直至准备就绪。
[0054] 在执行AIDL拿到itemClient的子进程501A时,i jk进程执行拉取视频流的子进程501B、创建解复用器的子进程502B、以及循环读pkt的子进程503B,其中pkt格式的文件用于包含处理网络连接时所有模拟或可能场景的某些详细信息和其他变体,主要用于数据包跟踪器。在执行i jk.prepareAsync的子进程时,i jk进程执行设置播放器参数的子进程、FFmpeg(一种用于解码、编码、转码等的多媒体框架)读取视频流的子进程505B、获取(视频流的)数据包包头的子进程506B、创建解码进程的子进程507B以及准备播放的子进程508B,并将执行结果返回给主进程,以使得i jk准备就绪。
[0055] 在OnResume阶段,主进程执行surface异步准备的子进程508A、wms(Warehouse Management System,仓库管理系统)回调(也即,从仓库管理系统中获取回调函数)的子进程509A、surfaceCreate(视图创建)的子进程510A、i jk.setDisplay(i jk设置视图接口)的子进程以进行视图覆盖(也即,oninfo)。
[0056] 其中,i jk进程执行创建解码流程的子进程507B后,执行解析第一帧的子进程509B以及渲染第一帧的子进程510B。并且,主进程在执行i jk.setDisplay的子进程511A后,通过播放器对解析第一帧的子进程的执行结果以及渲染第一帧的子进程的执行结果进行回调,以执行oninfo的子进程。
[0057] 容易理解,上述可选的实现方式通过跨进程调用的方式实现视频流的播放过程。但在另一种可选的实现方式中,图5所示的各进程也可以由线程来实现,也就是说,可以通过跨线程调用的方式视频流的播放过程。
[0058] 本实施例在接收到视频播放指令后,创建目标活动组件,并在目标活动组件创建的第一阶段创建视频流播放容器,以在视频流播放容器中创建预定播放器,进而响应于视频流播放容器创建完成,在目标活动组件创建的第二阶段对视频流进行播放。在本实施例中,第一阶段为用户不可见的阶段,第二阶段为用户可见的阶段,创建视频流播放容器的过程被提前至目标活动组件创建的第一阶段执行,并且在目标活动组件创建的第二阶段中,可以直接对视频流进行播放,因此本实施例可以降低终端在进入直播间页面后页面白屏的显示时间,提升用户的观看体验。
[0059] 图6是本发明第二实施例的视频处理装置的示意图。如图6所示,本实施例的装置包括组件创建单元61、容器创建单元62和视频流播放单元63。
[0060] 其中,组件创建单元61用于响应于接收到视频播放指令,创建目标活动组件。容器创建单元62用于在所述目标活动组件创建的第一阶段创建视频流播放容器,以在视频流播放容器中创建预定播放器。视频流播放单元63用于响应于所述视频流播放容器创建完成,在所述目标活动组件创建的第二阶段对所述视频流进行播放。
[0061] 进一步地,所述第一阶段为Oncreate阶段;
[0062] 所述容器创建单元62包括容器创建子单元、对象创建子单元和播放器创建子单元。
[0063] 其中,容器创建子单元用于在Oncreate阶段创建并初始化所述视频流播放容器。对象创建子单元用于在所述视频流播放容器中创建视图对象,所述视图对象用于定义所述视频流的显示属性。播放器创建子单元用于在所述视频流播放容器中创建并初始化所述预定播放器。
[0064] 进一步地,所述第二阶段为Onresume阶段;
[0065] 所述视频流播放单元63用于在Onresume阶段,通过所述预定播放器调用所述视图对象,以通过所述预定播放器对所述视频流进行播放。
[0066] 进一步地,所述播放器创建子单元包括参数设置模块和线程创建模块。
[0067] 其中,参数设置模块用于设置所述预定播放器的播放器参数。线程创建模块用于读取所述视频流的数据包包头,根据所述数据包包头创建所述视频流的解析线程。
[0068] 进一步地,所述视频流播放单元63包括视频流解析子单元和渲染显示子单元。
[0069] 其中,视频流解析子单元用于对所述视频流的数据包进行解析处理,获取所述视频流。渲染显示子单元用于通过所述预定播放器回调所述视频流,以对所述视频流进行渲染显示。
[0070] 进一步地,所述装置还包括消息插队单元64。
[0071] 其中,消息插队单元64在所述目标活动组件的消息队列中对目标任务消息进行插队处理,以使得主线程优先执行所述目标任务消息,所述目标任务消息包括所述视频流播放容器的任务消息。
[0072] 进一步地,所述目标任务消息还包括预定播放器的任务消息以及视图对象的任务消息。
[0073] 进一步地,所述目标活动组件的运行环境为Android。
[0074] 本实施例在接收到视频播放指令后,创建目标活动组件,并在目标活动组件创建的第一阶段创建视频流播放容器,以在视频流播放容器中创建预定播放器,进而响应于视频流播放容器创建完成,在目标活动组件创建的第二阶段对视频流进行播放。在本实施例中,第一阶段为用户不可见的阶段,第二阶段为用户可见的阶段,创建视频流播放容器的过程被提前至目标活动组件创建的第一阶段执行,并且在目标活动组件创建的第二阶段中,可以直接对视频流进行播放,因此本实施例可以降低终端在进入直播间页面后页面白屏的显示时间,提升用户的观看体验。
[0075] 图7是本发明第三实施例的电子设备的示意图。图7所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器701和存储器702。处理器701和存储器702通过总线703连接。存储器702适于存储处理器701可执行的指令或程序。处理器701可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器701通过执行存储器702所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线703将上述多个组件连接在一起,同时将上述组件连接到显示控制器704和显示装置以及输入/输出(I/O)装置705。输入/输出(I/O)装置705可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(I/O)装置705通过输入/输出(I/O)控制器706与系统相连。
[0076] 其中,存储器702可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。
[0077] 上述根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应理解,流程图和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
[0078] 同时,如本领域技术人员将意识到的,本发明实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本发明实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本发明的方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
[0079] 可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD‑ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本发明实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。
[0080] 计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。
[0081] 用于执行针对本发明各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++、PHP、Python等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
[0082] 以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。