首页 / 专利库 / 电脑零配件 / 固件 / 软件 / 一种直播间画中画播放方法、存储介质、电子设备及系统

一种直播间画中画播放方法、存储介质、电子设备及系统

阅读:714发布:2020-05-08

专利汇可以提供一种直播间画中画播放方法、存储介质、电子设备及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种直播间 画中画 播放方法、存储介质、 电子 设备及系统,涉及直播间视频播放技术领域,该方法包括以下步骤:创建MediaPlayer管理器;获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;创建第一Surface窗口;开启画中画播放工作时,关闭第一Surface窗口,并创建第二Surface窗口,第二Surface窗口用于以画中画的形式显示直播视频数据;当停止画中画播放操作时,关闭第二Surface窗口,重新创建第一Surface窗口,显示直播视频数据。本发明将直播视频的视频播放以及视频显示进行独立,在直播视频播放需要进行画中画播放时,能够保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。,下面是一种直播间画中画播放方法、存储介质、电子设备及系统专利的具体信息内容。

1.一种直播间画中画播放方法,其特征在于,其包括以下步骤:
创建MediaPlayer管理器,其用于管控MediaPlayer;
获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
开启画中画播放工作时,关闭所述第一Surface窗口,并利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
当停止画中画播放操作时,关闭所述第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示所述MediaPlayer解析的直播视频数据;
其中,当关闭所述第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
2.如权利要求1所述的方法,其特征在于,还包括以下步骤:
当需要进行下一次画中画播放工作时,重新对所述WindowManager进行初始化,并基于WindowManager重新创建所述第二Surface窗口。
3.如权利要求1所述的方法,其特征在于,所述基于Activity组件创建第一Surface窗口中,具体包括以下步骤:
在Activity组件中利用TextureView控件创建SurfaceTexture控件;
利用SurfaceTexture控件创建所述第一Surface窗口。
4.如权利要求1所述的方法,其特征在于:所述MediaPlayer管理器用于控制MediaPlayer进行初始化、暂停、停止、销毁、监听以及播放。
5.如权利要求1所述的方法,其特征在于:所述MediaPlayer管理器内配置一HandlerThread,用于执行MediaPlayer管理器的所有操作,避免阻塞UI线程。
6.一种直播间画中画播放方法,其特征在于,其用于在直播间中进行直播间画中画播放工作,其包括以下步骤:
S1、创建MediaPlayer管理器,其用于管控MediaPlayer;
S2、获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
S3、基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
S4、开启画中画播放工作时,关闭所述第一Surface窗口,并利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
S5、当停止画中画播放操作时,关闭所述第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示所述MediaPlayer解析的直播视频数据;
S6、当需要进行下一次画中画播放工作时,重新对所述WindowManager进行初始化,并基于WindowManager重新创建第二Surface窗口;
其中,当关闭第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
7.一种直播间画中画播放方法,其特征在于,其包括以下步骤:
创建第一单元,其用于管控第一播放器;
获取第一视频数据,创建第一播放器进行后台解析;
基于第一组件创建第一显示窗口,所述第一显示窗口用于显示第一播放器解析的第一视频数据;
开启画中画播放工作时,关闭所述第一显示窗口,并利用第二单元创建第二显示窗口,所述第二显示窗口用于以画中画的形式显示所述第一视频数据;
当停止画中画播放操作时,关闭所述第二显示窗口,重新基于第一组件创建第一显示窗口,显示所述第一播放器解析的第一视频数据;
其中,当关闭第一显示窗口时,所述第一播放器继续加载第一视频数据并进行解析。
8.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
9.一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的方法。
10.一种直播间画中画播放系统,其特征在于,其包括:
画中画开启单元,其用于当需要开启画中画播放工作时,产生画中画播放信号
MediaPlayer管理器,其用于管控MediaPlayer,还有用于获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流并进行解析,并对Activity组件进行初始化;
Activity组件控制单元,其用于对Activity组件进行管控;
第一Surface窗口创建单元,其用于基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer播放的直播视频数据;
第一Surface窗口关闭单元,其用于在接收到画中画播放信号后,关闭所述第一Surface窗口;
画中画显示单元,其用于在接收到所述画中画播放信号后,利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
画中画关闭单元,其用于当停止画中画播放工作时,关闭所述第二Surface窗口;
第一Surface窗口重启单元,其用于在停止画中画播放工作后,重新基于Activity组件创建第一Surface窗口;
其中,当关闭所述第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。

说明书全文

一种直播间画中画播放方法、存储介质、电子设备及系统

技术领域

[0001] 本发明涉及直播间视频播放技术领域,具体涉及一种直播间画中画播放方法、存储介质、电子设备及系统。

背景技术

[0002] 随着直播的发展,直播涉及的内容越来越广泛,观看直播的人越来越多,在直播过程中,用户往往需要在观看直播间的时候,开启另一个小窗口进行另一个视频的播放,例如该直播间其他视频图像的播放或其他直播间视频的播放或网页上相关视频的播放,其需要在直播间主视频不关闭的基础上,另开启一个小窗口同时进行播放,此播放方式成为画中画播放;
[0003] 传统的画中画播放中,在画中画播放器的开启和关闭过程中,对直播间视频以及画中画播放器的视频播放,存在一定的卡顿影响;
[0004] 因此,急需一种新的直播间画中画播放方法,减少卡顿情况的出现,为用户的直播间观看提供保障。

发明内容

[0005] 针对现有技术中存在的缺陷,本发明的目的在于提供一种直播间画中画播放方法,将直播视频的视频播放以及视频显示进行独立,在直播视频播放需要进行画中画播放时,从而能够保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0006] 为达到以上目的,本发明采取的技术方案是:
[0007] 第一方面,本发明提供一种直播间画中画播放方法,其包括以下步骤:
[0008] 创建MediaPlayer管理器,其用于管控MediaPlayer;
[0009] 获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
[0010] 基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
[0011] 开启画中画播放工作时,关闭所述第一Surface窗口,并利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
[0012] 当停止画中画播放操作时,关闭所述第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示所述MediaPlayer解析的直播视频数据;
[0013] 其中,当关闭所述第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
[0014] 在上述方案的基础上,该方法还包括以下步骤:
[0015] 当需要进行下一次画中画播放工作时,重新对所述WindowManager进行初始化,并基于WindowManager重新创建所述第二Surface窗口。
[0016] 在上述方案的基础上,所述基于Activity组件创建第一Surface窗口中,具体包括以下步骤:
[0017] 在Activity组件中利用TextureView控件创建SurfaceTexture控件;
[0018] 利用SurfaceTexture控件创建所述第一Surface窗口。
[0019] 在上述方案的基础上,所述MediaPlayer管理器用于控制MediaPlayer进行初始化、暂停、停止、销毁、监听以及播放。
[0020] 在上述方案的基础上,所述MediaPlayer管理器内配置一HandlerThread,用于执行MediaPlayer管理器的所有操作,避免阻塞UI线程。
[0021] 第二方面,本发明还提供另一种直播间画中画播放方法,其用于在直播间中进行直播间画中画播放工作,其包括以下步骤:
[0022] S1、创建MediaPlayer管理器,其用于管控MediaPlayer;
[0023] S2、获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
[0024] S3、基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
[0025] S4、开启画中画播放工作时,关闭所述第一Surface窗口,并利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
[0026] S5、当停止画中画播放操作时,关闭所述第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示所述MediaPlayer解析的直播视频数据;
[0027] S6、当需要进行下一次画中画播放工作时,重新对所述WindowManager进行初始化,并基于WindowManager重新创建第二Surface窗口。
[0028] 第三方面,本发明还提供另一种直播间画中画播放方法,其包括以下步骤:
[0029] 创建第一单元,其用于管控第一播放器;
[0030] 获取第一视频数据,创建第一播放器进行后台解析;
[0031] 基于第一组件创建第一显示窗口,所述第一显示窗口用于显示第一播放器解析的第一视频数据;
[0032] 开启画中画播放工作时,关闭所述第一显示窗口,并利用第二单元创建第二显示窗口,所述第二显示窗口用于以画中画的形式显示所述第一视频数据;
[0033] 当停止画中画播放操作时,关闭所述第二显示窗口,重新基于第一组件创建第一显示窗口,显示所述第一播放器解析的第一视频数据;
[0034] 其中,当关闭第一显示窗口时,所述第一播放器继续加载第一视频数据并进行解析。
[0035] 第四方面,本发明还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面至第三方面的直播间画中画播放方法。
[0036] 第五方面,本发明还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面至第三方面的直播间画中画播放方法。
[0037] 第六方面,本发明还提供一种直播间画中画播放系统,其包括:
[0038] 画中画开启单元,其用于当需要开启画中画播放工作时,产生画中画播放信号
[0039] MediaPlayer管理器,其用于管控MediaPlayer,还有用于获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流并进行解析,并对Activity组件进行初始化;
[0040] Activity组件控制单元,其用于对Activity组件进行管控;
[0041] 第一Surface窗口创建单元,其用于基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer播放的直播视频数据;
[0042] 第一Surface窗口关闭单元,其用于在接收到画中画播放信号后,关闭所述第一Surface窗口;
[0043] 画中画显示单元,其用于在接收到所述画中画播放信号后,利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
[0044] 画中画关闭单元,其用于当停止画中画播放工作时,关闭所述第二Surface窗口;
[0045] 第一Surface窗口重启单元,其用于在停止画中画播放工作后,重新基于Activity组件创建第一Surface窗口;
[0046] 其中,当关闭所述第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
[0047] 与现有技术相比,本发明的优点在于:
[0048] 本发明将直播视频的视频播放以及视频显示进行独立,在直播视频播放需要进行画中画播放时,从而能够保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。附图说明
[0049] 图1为本发明实施例一提供的一种直播间画中画播放方法的步骤流程图
[0050] 图2为本发明实施例二提供的一种直播间画中画播放方法的步骤流程图;
[0051] 图3为本发明实施例三提供的一种直播间画中画播放方法的步骤流程图;
[0052] 图4为本发明实施例四提供的一种直播间画中画播放系统的结构框图
[0053] 图中:1、画中画开启单元;2、MediaPlayer管理器;3、Activity组件控制单元;4、第一Surface窗口创建单元;5、第一Surface窗口关闭单元;6、画中画显示单元;7、画中画关闭单元;8、第一Surface窗口重启单元。

具体实施方式

[0054] 术语解释:
[0055] MediaPlayer,媒体播放器;
[0056] MediaPlayer管理器,媒体播放器的管理器,其用于管控媒体播放器;
[0057] Activity组件,Android组件中最基本的组件,是一个应用程序组件,能够提供一个屏幕,用户可以用来交互为了完成某项任务;
[0058] WindowManager,WindowManager是Android中一个重要的Service,是全局且唯一的,WindowManager继承自ViewManager,WindowManager主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等,另外在WindowManager中还有一个重要的静态类LayoutParams.通过它可以设置和获得当前窗口的一些属性;
[0059] Surface窗口,即Surface,为本地窗口,Android的画面均在Surface窗口上就那些绘制;
[0060] TextureView控件,即TextureView,用于渲染视频画面,即纹理视图;
[0061] SurfaceTexture控件,即SurfaceTexture。是Surface与TextureView之间的桥梁
[0062] getInstance(),是一个函数,在java中可利用该函数使用单例模式创建类的实例。
[0063] 以下结合附图对本发明的实施例作进一步详细说明。
[0064] 本发明实施例提供一种直播间画中画播放方法、存储介质、电子设备及系统,将直播视频的视频播放以及视频显示进行独立,在直播视频播放需要进行画中画播放时,从而能够保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0065] 为达到上述技术效果,本申请的总体思路如下:
[0066] 一种直播间画中画播放方法,其包括以下步骤:
[0067] S1、创建MediaPlayer管理器,其用于管控MediaPlayer;
[0068] S2、获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
[0069] S3、基于Activity组件创建第一Surface窗口,第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
[0070] S4、开启画中画播放工作时,关闭第一Surface窗口,并利用WindowManager创建第二Surface窗口,第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据;
[0071] S5、当停止画中画播放操作时,关闭第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示MediaPlayer解析的直播视频数据;
[0072] 其中,当关闭第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
[0073] 实施例一
[0074] 参见图1所示,本发明实施例提供一种直播间画中画播放方法,包括以下步骤:
[0075] S1、创建MediaPlayer管理器,其用于管控MediaPlayer;
[0076] S2、获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
[0077] S3、基于Activity组件创建第一Surface窗口,第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
[0078] S4、开启画中画播放工作时,关闭第一Surface窗口,并利用WindowManager创建第二Surface窗口,第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据;
[0079] S5、当停止画中画播放操作时,关闭第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示MediaPlayer解析的直播视频数据;
[0080] 其中,当关闭第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
[0081] 本发明实施例中,基于MediaPlayer以及Activity组件,对直播间的视频进行进行播放,并利用第一Surface窗口对直播视频数据进行显示;
[0082] 而后再需要进行画中画显示时,关闭第一Surface窗口,而MediaPlayer继续在后台对直播视频进行解析,进而再利用WindowManager创建第二Surface窗口,利用第二Surface窗口以画中画的形式显示MediaPlayer在后台解析的直播视频数据;
[0083] 本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析直播视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0084] 需要说明的是,现有的画中画播放方法,多为:在需要进行画中画播放时,画中画播放器获取画中画视频数据进行播放并在页面上以画中画形式进行显示,而后在不需要播放时,直接关闭画中画播放器,而当需要再次开始画中画播放时,重启画中画播放器,重新获取画中画视频数据,此方式一方面需要重新开启画中画播放器,另一方面还要重新获取画中画视频数据,需要多步操作,且需要进行一系列的数据处理,在画中画播放切换时,经常会因突然占用较多内存而造成播放卡顿,影响用户的视屏观看体验。
[0085] 本发明实施例的步骤S1中,首先创建一个MediaPlayer管理器,而MediaPlayer管理器用于管控MediaPlayer,具体操作时,可以在MediaPlayer管理器内设置一个MediaPlayer成员变量,其用于对应MediaPlayer,并且MediaPlayer管理器内置有getInstance()方法,并且其内置有与MediaPlayer有关的常用方法,诸如:初始化一个MediaPlayer、播放数据流地址获取、暂停播放、停止播放、销毁MediaPlayer以及监听MediaPlayer等。
[0086] 其中,getInstance()是一个函数,在java中可利用该函数使用单例模式创建类的实例,即MediaPlayer管理器能够利用getInstance()创建MediaPlayer;
[0087] MediaPlayer作为Android系统的媒体播放器,提供了诸如网络视频的播放,暂停,停止,设置监听器等功能,而MediaPlayer管理器对这些功能进行二次封装,避免外部直接操作MediaPlayer,保证MediaPlayer的所有操作均在HandlerThread中同步执行,避免异步操作。
[0088] 在步骤S2中,打开直播间,进行直播间视频播放时,直播间会发送HTTP请求数据流地址,此时使用MediaPlayer管理器初始化一个MediaPlayer,获取直播视频数据流地址,利用MediaPlayer进行后台解析,并且在MediaPlayer加载视频数据流的同时,对Activity组件进行初始化;
[0089] 其中,对Activity组件进行初始化,具体是指:当用户打开一个直播间的时候,也就是打开了一个Activity组件,Activity组件作为Android系统的一个组件会按顺序主动调用onCreate()、onStart()、onResume()等方法,onCreate()作为Activity组件初始化被调用的第一个方法,可以在里面作一些初始化操作,如创建一个视图显示在Activity组件上,MediaPlayer用到的Surface就在这个视图中产生,当onResume()调用完成后界面就呈现在用户眼前了;
[0090] 而onCreate()、onStart()、onResume()均为常见的函数;
[0091] onCreate()是Android中的一个特别的函数,用来“表示一个窗口正在生成”,其不产生窗口,只是在窗口显示前设置窗口的属性如格、位置颜色等;
[0092] onResume()用于为Activity组件获得用户焦点,进而与用户交互;
[0093] onStart()用于启动Activity组件;
[0094] 在步骤S3中,基于Activity组件,利用TextureView控件以及SurfaceTexture控件创建第一Surface窗口,第一Surface窗口则用于在MediaPlayer后台解析时进行画面输出,即显示MediaPlayer进行播放的视频,进行画面输出,在视觉上,第一Surface窗口其显示的视频画面则是MediaPlayer进行播放的视频。
[0095] 以上时直播间对直播视频进行播放的操作步骤,而后在步骤S4中,则开始具体为画中画播放的操作:
[0096] 步骤S4中,当需要开启画中画播放工作时,关闭第一Surface窗口,并利用WindowManager创建第二Surface窗口,第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据,需要说明的是,虽然关闭了第一Surface窗口,但MediaPlayer获取直播视频数据并进行解析的工作并未停止,而是持续进行,仅仅是此时画中画播放器对画中画视频数据进行后台解析,是指在仅仅关闭了第一Surface窗口,不利用第一Surface窗口进行图像显示,而是利用第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据;
[0097] 而后,步骤S5中当停止画中画播放操作时,关闭第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示MediaPlayer解析的直播视频数据;
[0098] 需要说明的是,步骤S4中,仅仅停止了第一Surface窗口的显示工作,而并未停止MediaPlayer的直播视频数据解析工作,故而在后续需要再次进行画中画视频显示时,直接将后台仍旧进行解析的直播视频数据进行显示即可,无须重启播放器,也无须重新获取直播视频数据;
[0099] 故而本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析直播视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0100] 在本发明实施例中,该方法还包括以下步骤:
[0101] 当需要进行下一次画中画播放工作时,重新对所述WindowManager进行初始化,并基于WindowManager重新创建所述第二Surface窗口;
[0102] 即在下一次画中画播放工作之前,若无其他控制指令,则MediaPlayer持续在后台进行解析,即视频播放,但并不进行显示,但实际上,是会进行重启第一Surface窗口进行显示的操作,而当需要进行下一次画中画播放工作时,在重新借助第二Surface窗口进行视频显示,即重新对WindowManager进行初始化,并基于WindowManager重新创建第二Surface窗口。
[0103] 需要说明的是,本发明实施例中,基于Activity组件创建第一Surface窗口中,具体包括以下步骤:
[0104] 在Activity组件中利用TextureView控件创建SurfaceTexture控件;
[0105] 利用SurfaceTexture控件创建第一Surface窗口。
[0106] 其中,MediaPlayer管理器用于控制MediaPlayer进行初始化、暂停、停止、销毁、监听以及播放。
[0107] 进一步的,在本发明实施例中,MediaPlayer管理器内配置一HandlerThread,用于执行MediaPlayer管理器的所有操作,避免阻塞UI线程;
[0108] 即MediaPlayer管理器在对MediaPlayer进行初始化、暂停、停止、销毁、监听以及播放时,借助HandlerThread来对MediaPlayer执行MediaPlayer管理器下达的操作。
[0109] 基于同一发明构思,本申请提供了实施例一对应的另一种直播间画中画播放方法,详见实施例二。
[0110] 实施例二
[0111] 如图2所示,本发明第二实施例还提供一种直播间画中画播放方法,其包括以下步骤:
[0112] S1、创建MediaPlayer管理器,其用于管控MediaPlayer;
[0113] S2、获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流进行解析,并对Activity组件进行初始化;
[0114] S3、基于Activity组件创建第一Surface窗口,第一Surface窗口用于显示MediaPlayer解析的直播视频数据;
[0115] S4、开启画中画播放工作时,关闭第一Surface窗口,并利用WindowManager创建第二Surface窗口,第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据;
[0116] S5、当停止画中画播放操作时,关闭第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示MediaPlayer解析的直播视频数据;
[0117] S6、当需要进行下一次画中画播放工作时,重新对WindowManager进行初始化,并基于WindowManager重新创建第二Surface窗口;
[0118] 其中,当关闭第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
[0119] 本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析直播视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0120] 本实施例二与实施例一的区别在于,本实施例将下一次进行画中画操作工作的实施方式也进行了阐述,故而本方法不仅仅适用于一次画中画播放工作,还用于多次画中画播放工作的多次切换;
[0121] 而对WindowManager进行初始化,WindowManage为安卓系统中的组件,而WindowManager的初始化,同样是安卓系统常用的技术手段,在此不做赘述。
[0122] 基于同一发明构思,本申请提供了实施例一对应的另一种直播间画中画播放方法,详见实施例三。
[0123] 实施例三
[0124] 如图3所示,本发明第三实施例还提供另一种直播间画中画播放方法,其包括以下步骤:
[0125] Q1、创建第一单元,其用于管控第一播放器;
[0126] Q2、获取第一视频数据,创建第一播放器进行后台解析;
[0127] Q3、基于第一组件创建第一显示窗口,第一显示窗口用于显示第一播放器解析的第一视频数据;
[0128] Q4、开启画中画播放工作时,关闭第一显示窗口,并利用第二单元创建第二显示窗口,第二显示窗口用于以画中画的形式显示第一视频数据;
[0129] Q5、当停止画中画播放操作时,关闭第二显示窗口,重新基于第一组件创建第一显示窗口,显示第一播放器解析的第一视频数据;
[0130] 其中,当关闭第一显示窗口时,所述第一播放器继续加载第一视频数据并进行解析。
[0131] 本发明实施例中,基于第一播放器以及第一组件,对直播间的视频进行进行播放,并利用第一显示窗口对第一视频数据进行显示;
[0132] 而后再需要进行画中画显示时,关闭第一显示窗口,而第一播放器继续在后台对直播视频进行解析,进而再利用第二单元创建第二显示窗口,利用第二显示窗口以画中画的形式显示第一播放器在后台解析的第一视频数据;
[0133] 本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析第一视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0134] 需要说明的是,现有的画中画播放方法,多为:在需要进行画中画播放时,画中画播放器获取画中画视频数据进行播放并在页面上以画中画形式进行显示,而后在不需要播放时,直接关闭画中画播放器,而当需要再次开始画中画播放时,重启画中画播放器,重新获取画中画视频数据,此方式一方面需要重新开启画中画播放器,另一方面还要重新获取画中画视频数据,需要多步操作,且需要进行一系列的数据处理,在画中画播放切换时,经常会因突然占用较多内存而造成播放卡顿,影响用户的视屏观看体验。
[0135] 本发明实施例的步骤Q1中,首先创建一个第一单元,而第一单元用于管控第一播放器,具体操作时,可以在第一单元内设置一个第一播放器成员变量,其用于对应第一播放器,并且第一单元内置有getInstance()方法,并且其内置有与第一播放器有关的常用方法,诸如:初始化一个第一播放器、播放数据流地址获取、暂停播放、停止播放、销毁第一播放器以及监听第一播放器等。
[0136] 在步骤Q2中,打开直播间,进行直播间视频播放时,直播间会发送HTTP请求数据流地址,此时使用第一单元初始化一个第一播放器,获取第一视频数据流地址,利用第一播放器进行后台解析,并且在第一播放器加载视频数据流的同时,对第一组件进行初始化;
[0137] 在步骤Q3中,基于第一组件,利用TextureView控件以及SurfaceTexture控件创建第一显示窗口,第一显示窗口则用于在第一播放器后台解析时进行画面输出,即显示第一播放器进行播放的视频,进行画面输出,在视觉上,第一显示窗口其显示的视频画面则是第一播放器进行播放的视频;
[0138] 以上时直播间对直播视频进行播放的操作步骤,而后在步骤Q4中,则开始具体为画中画播放的操作:
[0139] 步骤Q4中,当需要开启画中画播放工作时,关闭第一显示窗口,并利用第二单元创建第二显示窗口,第二显示窗口用于以画中画的形式显示第一播放器解析的第一视频数据,需要说明的是,虽然关闭了第一显示窗口,但第一播放器获取第一视频数据并进行解析的工作并未停止,而是持续进行,仅仅是此时画中画播放器对画中画视频数据进行后台解析,是指在仅仅关闭了第一显示窗口,不利用第一显示窗口进行图像显示,而是利用第二显示窗口用于以画中画的形式显示第一播放器解析的第一视频数据;
[0140] 而后,步骤Q5中当停止画中画播放操作时,关闭第二显示窗口,重新基于第一组件创建第一显示窗口,显示第一播放器解析的第一视频数据;
[0141] 需要说明的是,步骤Q4中,仅仅停止了第一显示窗口的显示工作,而并未停止第一播放器的第一视频数据解析工作,故而在后续需要再次进行画中画视频显示时,直接将后台仍旧进行解析的第一视频数据进行显示即可,无须重启播放器,也无须重新获取第一视频数据;
[0142] 故而本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析第一视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0143] 在本发明实施例中,该方法还包括以下步骤:
[0144] 当需要进行下一次画中画播放工作时,重新对所述第二单元进行初始化,并基于第二单元重新创建所述第二显示窗口;
[0145] 即在下一次画中画播放工作之前,若无其他控制指令,则第一播放器持续在后台进行解析,即视频播放,但并不进行显示,但实际上,是会进行重启第一显示窗口进行显示的操作,而当需要进行下一次画中画播放工作时,在重新借助第二显示窗口进行视频显示,即重新对第二单元进行初始化,并基于第二单元重新创建第二显示窗口。
[0146] 需要说明的是,本发明实施例中,基于第一组件创建第一显示窗口中,具体包括以下步骤:
[0147] 在第一组件中利用TextureView控件创建SurfaceTexture控件;
[0148] 利用SurfaceTexture控件创建第一显示窗口。
[0149] 其中,第一单元用于控制第一播放器进行初始化、暂停、停止、销毁、监听以及播放。
[0150] 进一步的,在本发明实施例中,第一单元内配置一HandlerThread,用于执行第一单元的所有操作,避免阻塞UI线程;
[0151] 即第一单元在对第一播放器进行初始化、暂停、停止、销毁、监听以及播放时,借助HandlerThread来对第一播放器执行第一单元下达的操作。
[0152] 基于同一发明构思,本申请提供了实施例一对应的直播间画中画播放系统的实施例,详见实施例四
[0153] 实施例四
[0154] 如图4所示,本发明第四实施例提供了一种直播间画中画播放系统,其包括:
[0155] 画中画开启单元1,其用于当需要开启画中画播放工作时,产生画中画播放信号;
[0156] MediaPlayer管理器2,其用于管控MediaPlayer,还有用于获取直播视频数据流地址,创建MediaPlayer加载直播视频数据流并进行解析,并对Activity组件进行初始化;
[0157] Activity组件控制单元3,其用于对Activity组件进行管控;
[0158] 第一Surface窗口创建单元4,其用于基于Activity组件创建第一Surface窗口,所述第一Surface窗口用于显示MediaPlayer播放的直播视频数据;
[0159] 第一Surface窗口关闭单元5,其用于在接收到画中画播放信号后,关闭所述第一Surface窗口;
[0160] 画中画显示单元6,其用于在接收到所述画中画播放信号后,利用WindowManager创建第二Surface窗口,所述第二Surface窗口用于以画中画的形式显示所述MediaPlayer解析的直播视频数据;
[0161] 画中画关闭单元7,其用于当停止画中画播放工作时,关闭所述第二Surface窗口;
[0162] 第一Surface窗口重启单元8,其用于在停止画中画播放工作后,重新基于Activity组件创建第一Surface窗口;
[0163] 其中,当关闭所述第一Surface窗口时,MediaPlayer继续加载直播视频数据并进行解析。
[0164] 本发明实施例中,基于MediaPlayer以及Activity组件,对直播间的视频进行进行播放,并利用第一Surface窗口对直播视频数据进行显示;
[0165] 而后再需要进行画中画显示时,关闭第一Surface窗口,而MediaPlayer继续在后台对直播视频进行解析,进而再利用WindowManager创建第二Surface窗口,利用第二Surface窗口以画中画的形式显示MediaPlayer在后台解析的直播视频数据;
[0166] 本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析直播视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。
[0167] 需要说明的是,现有的画中画播放方法,多为:在需要进行画中画播放时,画中画播放器获取画中画视频数据进行播放并在页面上以画中画形式进行显示,而后在不需要播放时,直接关闭画中画播放器,而当需要再次开始画中画播放时,重启画中画播放器,重新获取画中画视频数据,此方式一方面需要重新开启画中画播放器,另一方面还要重新获取画中画视频数据,需要多步操作,且需要进行一系列的数据处理,在画中画播放切换时,经常会因突然占用较多内存而造成播放卡顿,影响用户的视屏观看体验。
[0168] 本发明实施例中,首先创建一个MediaPlayer管理器,而MediaPlayer管理器用于管控MediaPlayer,具体操作时,可以在MediaPlayer管理器内设置一个MediaPlayer成员变量,其用于对应MediaPlayer,并且MediaPlayer管理器内置有getInstance()方法,并且其内置有与MediaPlayer有关的常用方法,诸如:初始化一个MediaPlayer、播放数据流地址获取、暂停播放、停止播放、销毁MediaPlayer以及监听MediaPlayer等;
[0169] 打开直播间,进行直播间视频播放时,直播间会发送HTTP请求数据流地址,此时使用MediaPlayer管理器初始化一个MediaPlayer,获取直播视频数据流地址,利用MediaPlayer进行后台解析,并且在MediaPlayer加载视频数据流的同时,对Activity组件进行初始化;
[0170] 基于Activity组件,利用TextureView控件以及SurfaceTexture控件创建第一Surface窗口,第一Surface窗口则用于在MediaPlayer后台解析时进行画面输出,即显示MediaPlayer进行播放的视频,进行画面输出,在视觉上,第一Surface窗口其显示的视频画面则是MediaPlayer进行播放的视频;
[0171] 以上时直播间对直播视频进行播放的操作步骤,而后,则开始具体为画中画播放的操作:
[0172] 当需要开启画中画播放工作时,关闭第一Surface窗口,并利用WindowManager创建第二Surface窗口,第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据,需要说明的是,虽然关闭了第一Surface窗口,但MediaPlayer获取直播视频数据并进行解析的工作并未停止,而是持续进行,仅仅是此时画中画播放器对画中画视频数据进行后台解析,是指在仅仅关闭了第一Surface窗口,不利用第一Surface窗口进行图像显示,而是利用第二Surface窗口用于以画中画的形式显示MediaPlayer解析的直播视频数据;
[0173] 而后,当停止画中画播放操作时,关闭第二Surface窗口,重新基于Activity组件创建第一Surface窗口,显示MediaPlayer解析的直播视频数据;
[0174] 需要说明的是,本发明实施例中,仅仅停止了第一Surface窗口的显示工作,而并未停止MediaPlayer的直播视频数据解析工作,故而在后续需要再次进行画中画视频显示时,直接将后台仍旧进行解析的直播视频数据进行显示即可,无须重启播放器,也无须重新获取直播视频数据;
[0175] 故而本发明实施例在直播视频播放需要进行画中画播放时,将直播视频的视频播放以及视频显示进行独立,在两个显示窗口进行切换过程中,后台持续解析直播视频数据,从而保证在进行画中画播放时的播放流畅度,为用户的视频观看提供保障。。
[0176] 基于同一发明构思,本申请提供了实施例一对应的存储介质的实施例,详见实施例五
[0177] 实施例五
[0178] 本发明第五实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一实施例至第三实施例中的所有方法步骤或部分方法步骤。
[0179] 本发明实现上述第一实施例至第三实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0180] 基于同一发明构思,本申请提供了实施例一对应的电子设备的实施例,详见实施例六
[0181] 实施例六
[0182] 本发明第六实施例还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现第一实施例至第三实施例中的所有方法步骤或部分方法步骤。
[0183] 所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
[0184] 存储器可用于存储计算机程序和/或模,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0185] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0186] 本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0187] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0188] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0189] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈