一种单例视频播放器的实现方法技术

技术编号:16283832 阅读:57 留言:0更新日期:2017-09-23 03:20
本发明专利技术公开了一种单例视频播放器的实现方法,包括:APP启动,初始化播放器;在当前页面建立一个FrameLayout,作为容器放置播放器,将播放器放置于FrameLayout中,实现播放;如果需要跳转且连续播放,获取跳转目的页面的目的FrameLayout,跳转时不停止当前页面播放器,将当前页面FrameLayout中的播放器移动到目的FrameLayout中,并使Activity或者Fragment继承接口实现播放所需的函数的回调,开始连续播放。本发明专利技术通过将播放器从当前页面移动到跳转目的页面,使得用户之前缓冲下来的进度不会丢失,实现页面跳转过程中无缓冲、无卡顿的连续播放,不仅有较好的用户体验,而且无需重复新建播放器,减少内存申请,避免内存负担加重,减少应用被系统回收机率。

Method for realizing single example video player

The invention discloses a method for realizing a video player, single cases include: APP start, initialize the player; in the current page to build a FrameLayout container, as a player, the player is placed in the FrameLayout, playing; if you need to jump and continuous play, get to the FrameLayout page to jump, jump not stop the current page player, the current page in the FrameLayout player moved to FrameLayout, and the Activity or Fragment inheritance interface functions to play the required callback, began continuous playback. The player from the current page to jump to the mobile page, users before the buffer down progress will not be lost, to achieve continuous playback page jump process without buffer, no Caton, not only has a good user experience, and there is no need to repeat the new player, reduce memory application, avoid memory burden, reduce application is the system recovery rate.

【技术实现步骤摘要】
一种单例视频播放器的实现方法
本专利技术涉及数据视频播放器,具体涉及一种单例视频播放器的实现方法。
技术介绍
目前,市面上的播放器(例如七牛和腾讯)一般是通过以下流程实现播放:(1)将自定义好的播放器视图放置于布局文件中;(2)在Activity或者Fragment中获取到布局文件中的视图,获取到播放器实例,然后设置播放器的播放参数和回调函数;(3)控制播放器播放停止;(4)如果需要进行页面跳转,而保持播放连续,需临时保存播放进度和播放地址,在跳转后新建一个播放器,并设置为临时保存的播放地址和播放进度,实现一个连续播放。可见,当前播放器的实现都是将播放器视图直接写到布局文件中,每次播放前都要初始化播放器的参数,如果要在页面跳转的时候连续播放,例如列表跳转到Activity,需要记录当前播放进度和播放地址等等参数,在跳转过后再次为新建的播放器设置之前记录的参数才能播放;虽然能做到连续播放,但是上一个页面播放的缓存没有了,跳转到下一个页面的时候需要重新加载,导致会有缓冲的动作,影响用户体验,而且如果页面持续跳转,不断实例化播放器,会导致内存不断增大,如果内存不及时回收会导致内存溢出。
技术实现思路
本专利技术所要解决的技术问题是当前播放器在连续播放时,跳转到下一个页面的时,上一个页面缓存已不在,需要重新加载,导致会有缓冲的动作影响用户体验,而且如果页面持续跳转,不断实例化播放器,会导致内存不断增大,内存不能及时回收,导致内存溢出的问题。为了解决上述技术问题,本专利技术所采用的技术方案是提供一种单例视频播放器的实现方法,包括以下步骤:步骤S10、APP启动,初始化播放器;步骤S20、在当前页面建立一个FrameLayout,作为容器放置播放器,将播放器放置于FrameLayout中,实现播放;步骤S30、如果需要跳转且连续播放,获取跳转目的页面的目的FrameLayout,跳转时不停止当前页面播放器,将当前页面FrameLayout中的播放器移动到目的FrameLayout中,并使Activity或者Fragment继承接口实现播放所需的函数的回调,开始连续播放。在上述方法中,在步骤S10中,在Application的onCreate()方法里调用VideoMediaController.init()函数进行播放器的初始化的。在上述方法中,初始化播放器包括:设置准备超时时间;设置是否在线直播;设置缓存大小;设置是否开启自动播放;设置画面预览模式;设置播放器背景颜色。在上述方法中,步骤S20和步骤S30中FrameLayout的大小等于预想的播放器的大小,播放器自适应FrameLayout的大小。在上述方法中,所述播放所需的函数包括播放准备完成回调函数、播放进度回调函数以及播放错误回调函数。在上述方法中,对所有播放所需的函数进行了再次封装,并使Activity或者Fragment继承再次封装的接口。在上述方法中,跳转目的页面获取目的FrameLayoutA,再调用VideoMediaController.addVideoViewInHolder(A,X)函数,将当前页面的播放器放置到目的FragmentA当中,第二个参数(X)控制是否显示缓冲图标,如果需要跳转且连续播放,将第二个参数设置为false,如果是重新开始播放就设置为true。在上述方法中,在将当前页面FrameLayout中的播放器移动到目的FrameLayout中时,同时要把一个实体类传入到VideoMediaController中,用于控制播放地址、清晰度选择;以及通过VideoMediaController获取到PLVideoTextureView播放器对象,进行播放控制。在上述方法中,步骤S30具体包括以下步骤:步骤S31、接收跳转播放页面请求;步骤S32、判断当前页面是否有播放器,如果有,执行步骤S33;否则,执行步骤S37;步骤S33、判断是否需要连续播放,如果是执行步骤S35;否则,执行步骤S34;步骤S34、停止当前页面播放器,然后执行步骤S36;步骤S35、不停止当前页面播放器,然后执行步骤S36;步骤S36、将播放器移出当前页面的FrameLayout,然后执行步骤S38;步骤S37、实例化一个播放器;步骤S38、获取跳转目的页面的目的FrameLayout;步骤S39、将播放器加入目的FrameLayout;步骤S40、Activity或者Fragment继承接口实现回调,实现播放。本专利技术将播放器当做一个控件来自由移动,当一个播放界面跳转到另外一个播放界面,只把整个播放器的视图从之前的界面搬到另外一个界面,这样就使得用户之前缓冲下来的进度不会丢失,实现页面跳转过程中无缓冲连续播放,不仅有较好的用户体验,而且具有以下优点:(1)无需重复新建播放器,整个APP内只有一个播放器实例,能动态添加至播放页面,减少内存申请,避免内存负担加重,也减少应用被系统回收的机率;(2)无需重复初始化播放器参数,避免开发者重复写初始化,避免代码遗留;(3)由于实现播放器动态添加,所以能在页面跳转过程中保留缓冲和进度跳转,实现无缓冲、无卡顿的连续播放;(4)播放器的相关函数都由一个控制器控制,实现播放只需要几句代码,其他工作都交给控制器控制;且控制器还实现了各种回调,只要Activity或者Fragment继承接口就能使用。附图说明图1为本专利技术提供的一种单例视频播放器的实现方法的流程图;图2为本专利技术中步骤S30的具体流程图。具体实施方式本专利技术视频播放进行了优化,适用于视频播放客户端和新闻客户端,并针对当前播放器在连续播放时存在的问题,进行了相应改进,实现页面跳转时播放器能进行无缓冲连续播放,减少重复实例化播放器导致内存增大,与现有技术相比,本专利技术的改进主要包括以下几点:(1)在连续播放时,现有技术将自定义好的播放器视图放置于布局文件中,播放器的页面往往是重复跳转,跳转就需要实例化播放器实例才能进行播放,会造成不必要的内存申请;本专利技术有播放器的页面就无需将播放器视图放置于布局文件中,在整个软件中只需实例化一个实例,在需要播放的地方实现动态添加播放器视图,从而不会造成不必要的内存申请。例如,假如A页面要跳转到B页面,A和B页面都要进行视频播放,在现有技术中需要在A和B页面都放置一个播放器,当进行A到B的跳转的时候,虽然A中的播放器会回收,但由于JAVA的机制,回收并不会及时,所以会导致软件申请的内存增大,对于内存小的手机等智能设备来说,这是一个不小的压力;而本专利技术播放器是动态添加的,所以进行A到B跳转时,只需把A中的播放器移到B中即可,这样就不会再向系统申请内存。(2)现有技术,连续播放时需要记录当前播放进度和播放地址等等参数,在跳转过后再次设置参数才能播放;本专利技术播放器只需要一次的播放参数设置,回调函数也是进行了再次封装,只要Activity或者Fragment继承回调接口就可以使用回调,这样就减少了开发者重复添加回调。(3)在现有技术中,进行连续播放时,上一页面播放的缓存将没有,跳转到下一个页面的时候需要重新加载,且需要保存播放进度;本专利技术因为能动态添加播放器视图,且播放器的缓冲和播放进度一般都是保存在播放器视图中,所以动态跳转能实现缓冲和播放进度一起跳本文档来自技高网...
一种单例视频播放器的实现方法

【技术保护点】
一种单例视频播放器的实现方法,其特征在于,包括以下步骤:步骤S10、APP启动,初始化播放器;步骤S20、在当前页面建立一个FrameLayout,作为容器放置播放器,将播放器放置于FrameLayout中,实现播放;步骤S30、如果需要跳转且连续播放,获取跳转目的页面的目的FrameLayout,跳转时不停止当前页面播放器,将当前页面FrameLayout中的播放器移动到目的FrameLayout中,并使Activity或者Fragment继承接口实现播放所需的函数的回调,开始连续播放。

【技术特征摘要】
1.一种单例视频播放器的实现方法,其特征在于,包括以下步骤:步骤S10、APP启动,初始化播放器;步骤S20、在当前页面建立一个FrameLayout,作为容器放置播放器,将播放器放置于FrameLayout中,实现播放;步骤S30、如果需要跳转且连续播放,获取跳转目的页面的目的FrameLayout,跳转时不停止当前页面播放器,将当前页面FrameLayout中的播放器移动到目的FrameLayout中,并使Activity或者Fragment继承接口实现播放所需的函数的回调,开始连续播放。2.如权利要求1所述的方法,其特征在于,在步骤S10中,在Application的onCreate()方法里调用VideoMediaController.init()函数进行播放器的初始化的。3.如权利要求2所述的方法,其特征在于,初始化播放器包括:设置准备超时时间;设置是否在线直播;设置缓存大小;设置是否开启自动播放;设置画面预览模式;设置播放器背景颜色。4.如权利要求1所述的方法,其特征在于,步骤S20和步骤S30中FrameLayout的大小等于预想的播放器的大小,播放器自适应FrameLayout的大小。5.如权利要求1所述的方法,其特征在于,所述播放所需的函数包括播放准备完成回调函数、播放进度回调函数以及播放错误回调函数。6.如权利要求1所述的方法,其特征在于,对所有播放所需的函数进行了再次封装,并使Activity或者Fragment继承再次封装的接口。7.如权利要求1所述的方法,其特征在于,跳转目的...

【专利技术属性】
技术研发人员:陈派大刘文辉洪光中
申请(专利权)人:广州荔枝网络有限公司
类型:发明
国别省市:广东,44

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1