Android系统的码流清晰度切换方法、装置、终端及可读介质与流程

文档序号:17009389发布日期:2019-03-02 02:10阅读:153来源:国知局
Android系统的码流清晰度切换方法、装置、终端及可读介质与流程

本发明实施例涉及计算机技术,尤其涉及一种android系统的码流清晰度切换方法、装置、终端及可读介质。



背景技术:

利用android终端拉取网络音视频资源(例如观看直播)时,用户可以根据需求进行清晰度切换。通常清晰度切换方法为,通过http请求获取切换后清晰度的码流地址,并通过访问该码流地址获取相应的码流信息。现有的获取码流信息过程中,播放器呈现的视图通常为黑屏页面或加载页面,使用户明显感觉到播放切换前码流信息与播放切换后码流信息之间存在一个断开时间,用户体验较差。



技术实现要素:

有鉴于此,本发明实施例提供了一种android系统的码流清晰度切换方法、装置、终端及可读介质,实现了清晰度的无缝切换,提高了用户体验。

第一方面,本发明实施例提供了一种android系统的码流清晰度切换方法,包括:

当监听到清晰度切换事件时,调用播放器管理类中管理对象的构建方法构建临时管理对象,调用临时管理对象中播放器对象构建方法构建临时播放器对象;

通过所述临时播放器对象获取切换清晰度后的码流信息;

当临时播放器对象的准备状态监听器进行回调时,调用临时播放器对象的视图设置方法将当前播放视图设置到临时播放器对象中,并控制当前播放视图播放切换清晰度后的码流信息。

可选的,所述监听到清晰度切换事件,包括:

通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。

可选的,所述通过所述临时播放器对象获取切换清晰度后的码流信息,包括:

获取切换清晰度后的码流信息对应的统一资源定位符url;

通过调用url设置方法,将切换清晰度后的码流信息对应的url设置到临时播放器对象中;

临时播放器对象接收所述切换清晰度后的码流信息。

可选的,在所述监听到清晰度切换事件之前,包括:

调用播放器管理类的管理对象获取方法获取管理对象;

通过所述管理对象中的播放器对象获取码流信息,并控制当前播放视图播放所述码流信息。

可选的,所述调用播放器管理类的管理对象获取方法获取管理对象,包括:

判断管理对象是否为空;

若是,则调用播放器管理类中管理对象的构建方法构建管理对象;

若否,则返回已有的管理对象。

可选的,在所述调用播放器管理类的管理对象获取方法获取管理对象之前,包括:

在页面布局文件中定义播放视图类,并设置所述播放视图类的id信息;

根据所述播放视图类的id信息调用播放视图类查找方法查找播放视图类,调用播放视图类的对象构造方法构造播放视图,将所述播放视图作为当前播放视图;

调用播放器对象的视图设置方法将当前播放视图设置到播放器对象中。

可选的,在所述调用播放方法控制当前播放视图播放切换清晰度后的码流信息之后,包括:

调用管理对象的替换方法,将临时管理对象替换管理对象,对替换前的管理对象进行释放。

第二方面,本发明实施例提供了一种android系统的码流清晰度切换装置,包括:

临时播放器对象构建模块,用于当监听到清晰度切换事件时,调用播放器管理类中管理对象的构建方法构建临时管理对象,调用临时管理对象中播放器对象构建方法构建临时播放器对象;

码流获取模块,用于通过所述临时播放器对象获取切换清晰度后的码流信息;

播放视图设置模块,用于当临时播放器对象的准备状态监听器进行回调时,调用临时播放器对象的视图设置方法将当前播放视图设置到临时播放器对象中,并控制当前播放视图播放切换清晰度后的码流信息。

第三方面,本发明实施例提供了一种终端,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的android系统的码流清晰度切换方法。

第四方面,本发明实施例提供了一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的android系统的码流清晰度切换方法。

本发明实施例提供的一种android系统的码流清晰度切换方法、装置、终端及可读介质,当用户进行码流的清晰度切换时,原管理对象对应的播放器对象仍控制当前播放视图播放切换清晰度前的码流信息,与此同时构建临时管理对象,通过临时管理对象构建一个临时播放器对象,并利用该临时播放器对象获取清晰度切换后的码流信息;当临时播放器对象的准备状态监听器进行回调时,证明已获取到切换清晰度后的码流信息,此时将当前播放视图设置到临时播放器上,以控制当前播放视图播放切换清晰度后的码流信息。通过临时管理对象构建临时播放器对象,通过临时播放器对象获取切换清晰度后的码流信息,从而实现了清晰度的无缝切换,提高了用户体验。

附图说明

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

图1是本发明实施例一提供的一种android系统的码流清晰度切换方法流程图;

图2是本发明实施例二提供的一种android系统的码流清晰度切换装置结构示意图;

图3是本发明实施例三提供的一种终端的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1是本发明实施例一提供的一种android系统的码流清晰度切换方法流程图,本实施例可适用于android系统的码流清晰度切换的情况,该方法可以由终端实现,具体可通过终端中的软件和/或硬件来实施。参见图1,该android系统的码流清晰度切换方法包括如下步骤:

s110、当监听到清晰度切换事件时,调用播放器管理类中管理对象的构建方法构建临时管理对象,调用临时管理对象中播放器对象构建方法构建临时播放器对象。

其中,利用android终端拉取网络音视频资源(例如观看直播)时,用户可以根据需求进行码流的清晰度切换,具体可以通过点击播放器对象对应的清晰度按钮控件进行清晰度的切换。其中,播放视图属于播放器的视图承载控件,播放器对象可以在设置统一资源定位符url之后,接收所设置url对应的码流信息,并可以将接收的码流信息通过播放器对象对应的播放视图对象进行播放。

可选的,监听到清晰度切换事件,包括:

通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。

其中,可以通过点击播放器对象对应的清晰度切换按钮控件进行音视频资源清晰度的切换;其中,可以在清晰度切换按钮控件上添加监听器,用以监听清晰度切换按钮是否发生了点击事件。

其中,在清晰度切换按钮控件上添加监听器的方法,具体可以是:

btn.setonclicklistener(mylistener);

其中,btn为清晰度切换按钮控件的名称,用以表示清晰度切换按钮,且清晰度切换按钮的名称并不限于btn;其中,通过setonclicklistener方法可以设置能够监听清晰度切换按钮控件的点击事件的监控器;其中,当监听器监听到清晰度切换按钮的点击事件时,可以主动回调mylistener方法。

其中,播放器管理类中管理对象的构建方法,具体可以是:

publicstaticvideomanagertmpinstance();

其中,tmpinstance为播放器管理videomanager类的临时管理对象的名称,用以标识临时管理对象,且临时管理对象的名称并不限于tmpinstance;其中,管理对象的构建方法为public公有函数,使得其他类函数对该管理对象构建方法具有访问权限,且该方法为static静态函数,使得返回的临时管理对象为同一个对象;其中,该构造方法中,可以通过调用returnnewvideomanager()语句生成一个新的播放器管理videomanager类的对象,并将该对象作为临时管理对象。

其中,临时管理对象中播放器对象构建方法,具体可以是:

tmpinstance.start();

其中,管理对象可以对播放器对象的生命周期进行有效的管理,即可以通过管理对象可以实现播放器对象的生成或释放;其中,在start()构造方法中,具体可以通过调用mediaplayertmpmediaplayer=newmediaplayer()语句进行临时播放器对象的构建,即通过new函数可以新建一个mediaplayer类的临时播放器tmpmediaplayer。

s120、通过临时播放器对象获取切换清晰度后的码流信息。

其中,在临时播放器在构建好之后,并未给临时播放器设置播放视图,因此临时播放器在接收切换后清晰度的过程中,并不影响当前播放视图继续播放对应播放器获取的切换清晰度前的码流信息。可以理解为,原管理对象对应的播放器对象控制当前播放视图播放切换清晰度前的码流信息的同时,通过构建的临时播放器对象获取清晰度切换后的码流信息。

可选的,通过临时播放器对象获取切换清晰度后的码流信息,包括:

获取切换清晰度后的码流信息对应的统一资源定位符url;通过调用url设置方法,将切换清晰度后的码流信息对应的url设置到临时播放器对象中;临时播放器对象接收切换清晰度后的码流信息。

其中,可以在点击清晰度切换按钮控件后获取到清晰度切换后码流信息对应的url,还可以通过其他方式获取到清晰度切换后码流信息对应的url;其中,url设置方法具体可以是tmpmediaplayer.seturl()方法,其中tmpmediaplayer可以表示临时播放器对象,其中通过seturl方法可以将清晰度切换后码流信息对应的url设置到临时播放器对象中;其中,临时播放器对象可以通过访问url下载码流信息,并对码流信息进行存储,从而实现接收切换清晰度后的码流信息。

s130、当临时播放器对象的准备状态监听器进行回调时,调用临时播放器对象的视图设置方法将当前播放视图设置到临时播放器对象中,并控制当前播放视图播放切换清晰度后的码流信息。

其中,具体可通过调用tmpmediaplayer.setlistener()语句来实现临时播放器对象的准备状态监听器的设置;在准备状态监听器中,具体可以通过是否回调onprepare()来判断是否已进入准备完成状态,当回调onprepare()时,可以理解为临时播放器对象已进入准备完成状态,即临时播放器对象已经获取到切换清晰度后的码流信息。

其中,具体可通过调用tmpmediaplayer.setsurface(currentsurface)语句来实现将当前播放视图设置到临时播放器对象中;其中,tmpmediaplayer可以表示临时播放对象,currentsurface可以表示当前播放视图,通过临时播放对象的setsurface方法可以将当前播放视图设置到临时播放对象中去,即当前播放视图可以播放临时播放器对象获取的切换清晰度后的码流信息。其中,具体可通过调用tmpmediaplayer.start()语句来控制当前播放视图播放切换清晰度后的码流信息。

通过将当前播放视图设置到获取到清晰度切换后码流信息的临时播放器对象中,可以实现当前播放视图由播放切换清晰度前的码流信息切换为播放切换清晰度后的码流信息,从而可以实现清晰度的无缝切换,提高用户体验。

可选的,在监听到清晰度切换事件之前,包括:

调用播放器管理类的管理对象获取方法获取管理对象;通过管理对象中的播放器对象获取码流信息,并控制当前播放视图播放码流信息。

其中,具体可通过调用publicstaticvideomanagergetinstance()语句来实现管理对象的获取,其中instance可以表示播放器管理videomanager类的管理对象,通过播放器管理类的getinstance方法可以获取到管理对象instance。其中,管理对象中构建的播放对象可以用mmediaplayer表示。其中,播放器对象获取码流信息以及播放码流信息所调用的方法与临时播放器获取码流信息以及播放码流信息所调用的方法相同,皆为通过获取码流信息对应的url并设置该url的方法接收码流信息,并通过调用mmediaplayer.start()语句控制当前播放视图播放码流信息,未详尽描述的技术细节可参见临时播放器获取码流信息以及播放码流信息所调用的方法部分。

进一步的,调用播放器管理类的管理对象获取方法获取管理对象,可以包括:

判断管理对象是否为空;若是,则调用播放器管理类中管理对象的构建方法构建管理对象;若否,则返回已有的管理对象。

其中,若判断管理对象为空,则说明系统中还不存在实例化的播放器管理类的对象,此时则可以通过videomanagerinstance=newvideomanager()语句新建播放器管理videomanager类的管理对象instance;若判断管理对象不为空,则说明系统中已存在实例化的播放器管理类的对象,此时只需通过returninstance语句返回该管理对象instance即可。

通过判断管理对象是否为空,若是则新建管理对象,若否则返回已有的管理对象,可以保证系统中存在唯一的实例化的管理对象,从而方便对播放器对象的管理和控制,且节省系统资源。

进一步的,在调用播放器管理类的管理对象获取方法获取管理对象之前,可以包括:

在页面布局文件中定义播放视图类,并设置播放视图类的id信息;根据播放视图类的id信息调用播放视图类查找方法查找播放视图类,调用播放视图类的对象构造方法构造播放视图,将播放视图作为当前播放视图;调用播放器对象的视图设置方法将当前播放视图设置到播放器对象中。

其中,可以通过调用<playerview></playerview>标签在xml布局文件中声明一个播放视图类信息,其中播放视图类可以是glsurfaceview类,还可以是其他播放视图类。其中,播放视图类可以通过android:id=”@+id/player_view”来指定id信息,且播放视图类的id信息为代码层与视图层构建联系的一个纽带。其中,具体可以通过调用findviewbyid(r.id.player_view)的方法查找播放视图类,即可以通过查找播放视图类的id信息获取到播放视图类player_view。其中,具体可以调用playerviewmplayerview1=newplayerview()方法构造播放视图对象mplayerview1,且可以通过调用mmediaplayer.setsurface(mplayerview1)的方法将播放视图对象设置到播放器对象mmediaplayer中去。

可选的,在调用播放方法控制当前播放视图播放切换清晰度后的码流信息之后,包括:

调用管理对象的替换方法,将临时管理对象替换管理对象,对替换前的管理对象进行释放。

其中,管理对象的替换方法,具体可以是:

publicstaticupdatemanager(videomanagermvideomanager);

其中,mvideomanager可以用来表示一个播放器管理videomanager类的变量参数,且可以利用临时管理对象tmpinstance对mvideomanager进行赋值,即将tmpinstance作为入参参数传出到管理对象的替换方法updatemanager中去。然后,可以通过调用instance=mvideomanager将利用tmpinstance赋值后的mvideomanager再次赋值给管理对象instance,即实现了临时管理对象替换管理对象。由于原来的管理对象被替换了,原来的管理对象的引用关系随即消失,原来的管理对象可以被系统进行回收处理,从而实现了替换前的管理对象的释放。通过将原管理对象进行替换并释放,可以方便对播放器对象的管理和控制,且节省系统资源。

本实施例提供的android系统的码流清晰度切换方法,当用户进行码流的清晰度切换时,原管理对象对应的播放器对象仍控制当前播放视图播放切换清晰度前的码流信息,与此同时构建临时管理对象,通过临时管理对象构建一个临时播放器对象,并利用该临时播放器对象获取清晰度切换后的码流信息;当临时播放器对象的准备状态监听器进行回调时,证明已获取到切换清晰度后的码流信息,此时将当前播放视图设置到临时播放器上,以控制当前播放视图播放切换清晰度后的码流信息。通过临时管理对象构建临时播放器对象,通过临时播放器对象获取切换清晰度后的码流信息,从而实现了清晰度的无缝切换,提高了用户体验。

实施例二

图2是本发明实施例二提供的一种android系统的码流清晰度切换装置结构示意图,本实施例可适用于android系统的码流清晰度切换的情况。

参见图2,本实施例中android系统的码流清晰度切换装置,包括:

临时播放器对象构建模块210,用于当监听到清晰度切换事件时,调用播放器管理类中管理对象的构建方法构建临时管理对象,调用临时管理对象中播放器对象构建方法构建临时播放器对象;

码流获取模块220,用于通过临时播放器对象获取切换清晰度后的码流信息;

播放视图设置模块230,用于当临时播放器对象的准备状态监听器进行回调时,调用临时播放器对象的视图设置方法将当前播放视图设置到临时播放器对象中,并控制当前播放视图播放切换清晰度后的码流信息。

可选的,临时播放器对象构建模块210,包括:

清晰度切换监听子模块,用于通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。

可选的,码流获取模块220,包括:

统一资源定位符获取子模块,用于获取切换清晰度后的码流信息对应的统一资源定位符url;

url设置子模块,用于通过调用url设置方法,将切换清晰度后的码流信息对应的url设置到临时播放器对象中;

码流信息获取子模块,用于临时播放器对象接收切换清晰度后的码流信息。

可选的,android系统的码流清晰度切换装置,还包括:

管理对象获取模块,用于调用播放器管理类的管理对象获取方法获取管理对象;

码流播放模块,用于通过管理对象中的播放器对象获取码流信息,并控制当前播放视图播放码流信息。

可选的,管理对象获取模块,具体用于:

判断管理对象是否为空;若是,则调用播放器管理类中管理对象的构建方法构建管理对象;若否,则返回已有的管理对象。

可选的,android系统的码流清晰度切换装置,还包括:

播放视图类定义模块,用于在页面布局文件中定义播放视图类,并设置播放视图类的id信息;

播放视图构造模块,用于根据播放视图类的id信息调用播放视图类查找方法查找播放视图类,调用播放视图类的对象构造方法构造播放视图,将播放视图作为当前播放视图;

相应的,播放视图设置模块230,还用于调用播放器对象的视图设置方法将当前播放视图设置到播放器对象中。

可选的,android系统的码流清晰度切换装置,还包括:

管理对象替换模块,用于在调用播放方法控制当前播放视图播放切换清晰度后的码流信息之后,调用管理对象的替换方法,将临时管理对象替换管理对象,对替换前的管理对象进行释放。

本实施例提供的android系统的码流清晰度切换装置,与实施例一提出的android系统的码流清晰度切换方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

实施例三

本实施例提供了一种终端,可以用于android系统的码流清晰度切换的情况。图3是本发明实施例三提供的一种终端的结构示意图。参见图3,该终端包括:

一个或多个处理器310;

存储器320,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器310执行,使得所述一个或多个处理器310实现如实施例一提出的android系统的码流清晰度切换方法。

图3中以一个处理器310为例;处理器310和存储器320可以通过总线或其他方式连接,图3中以通过总线连接为例。

存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的android系统的码流清晰度切换方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的android系统的码流清晰度切换方法。

存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提出的终端与实施例一提出的android系统的码流清晰度切换方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

实施例四

本实施例提供一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例一提出的android系统的码流清晰度切换方法。

本实施例提出的可读介质与实施例一提出的android系统的码流清晰度切换方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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