CN109144613B - Android清晰度切换方法、装置、终端及可读介质 - Google Patents

Android清晰度切换方法、装置、终端及可读介质 Download PDF

Info

Publication number
CN109144613B
CN109144613B CN201811021014.6A CN201811021014A CN109144613B CN 109144613 B CN109144613 B CN 109144613B CN 201811021014 A CN201811021014 A CN 201811021014A CN 109144613 B CN109144613 B CN 109144613B
Authority
CN
China
Prior art keywords
definition
code stream
stream information
buffer
switched
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811021014.6A
Other languages
English (en)
Other versions
CN109144613A (zh
Inventor
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Yicheng Cultural Communication Co.,Ltd.
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201811021014.6A priority Critical patent/CN109144613B/zh
Publication of CN109144613A publication Critical patent/CN109144613A/zh
Application granted granted Critical
Publication of CN109144613B publication Critical patent/CN109144613B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种Android清晰度切换方法、装置、终端及可读介质,其中该方法包括:当监听到清晰度切换事件时,继续播放切换清晰度前的码流信息,构建并开启定时器;在所开辟的子线程中获取切换清晰度后的码流信息,并存储至缓冲数组;根据定时器状态及缓冲数组的填充状态,播放缓冲数组中存储的码流信息,控制播放器对象进入切换清晰度准备状态;当播放器对象准备完成时,播放播放器对象在准备状态时获取的切换清晰度后的码流信息;其中,缓冲数组占用内存小于播放器对象在准备状态时获取的码流信息的占用内存。本发明实施例提供的Android清晰度切换方法、装置、终端及可读介质,实现了Android清晰度的快速切换,提高了用户的清晰度切换体验。

Description

Android清晰度切换方法、装置、终端及可读介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种Android清晰度切换方法、装置、终端及可读介质。
背景技术
利用Android终端拉取网络音视频资源(例如观看直播)时,用户可以根据需求进行清晰度切换。通常清晰度切换方法为,通过HTTP请求获取切换后清晰度的码流地址,并通过访问该码流地址获取相应的码流信息。现有的获取码流信息过程中,播放器呈现的视图通常为黑屏页面或加载页面(又为loading页面),使用户明显感觉到播放切换前码流信息与播放切换后码流信息之间存在一个断开时间,用户的清晰度切换体验较差。
发明内容
有鉴于此,本发明实施例提供了一种Android清晰度切换方法、装置、终端及可读介质,实现了Android清晰度的快速切换,提高了用户的清晰度切换体验。
第一方面,本发明实施例提供了一种Android清晰度切换方法,包括:
当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器,并开辟缓冲子线程;
在所述缓冲子线程中获取切换清晰度后的码流信息,并将获取的切换清晰度后的码流信息存储至预设的缓冲数组中;
根据所述缓冲定时器状态以及所述缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;
当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;
其中,所述缓冲数组中存储的切换清晰度后的码流信息的占用内存小于所述播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
可选的,所述在所述缓冲子线程中获取切换清晰度后的码流信息,包括:
在所述缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL;
将切换清晰度后的码流信息对应的URL转换成统一资源标识符URI;
将URI转化为下载请求对象,并调用下载请求对象的开始方法获取切换清晰度后的码流信息。
可选的,应用于观看直播间时进行清晰度切换的情况,所述在所述缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL,包括:
在所述缓冲子线程中获取直播间的房间ID,根据所述房间ID获取切换清晰度后的码流信息对应的统一资源定位符URL。
可选的,所述根据所述缓冲定时器状态以及所述缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,包括:
当缓冲数组填充满时,若缓冲定时器未超时,则停止所述缓冲定时器,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;
当缓冲定时器超时时,若缓冲数组未填充满,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息。
可选的,在所述控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息的过程中,还包括:
将缓冲数组中已经播放的切换清晰度后的码流信息清空,并获取的切换清晰度后的码流信息持续存储至缓冲数组,直到视图承载控件对应的播放器对象准备完成时停止存储。
可选的,所述控制视图承载控件对应的播放器对象进入切换清晰度准备状态,包括:
获取切换清晰度后的码流信息对应的统一资源定位符URL;
通过调用URL设置方法,将切换清晰度后的码流信息对应的URL设置到视图承载控件对应的播放器对象中;
控制视图承载控件对应的播放器对象接收切换清晰度后的码流信息。
可选的,在所述监听到清晰度切换事件之前,包括:通过数组定义方法在播放器类中定义缓冲数组。
第二方面,本发明实施例提供了一种Android清晰度切换装置,包括:
清晰度切换事件监听模块,用于当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器,并开辟缓冲子线程;
缓冲数组码流存储模块,用于在所述缓冲子线程中获取切换清晰度后的码流信息,并将获取的切换清晰度后的码流信息存储至预设的缓冲数组中;
缓冲数组码流播放模块,用于根据所述缓冲定时器状态以及所述缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;
准备状态码流播放模块,用于当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;
其中,所述缓冲数组中存储的切换清晰度后的码流信息的占用内存小于所述播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
第三方面,本发明实施例提供了一种终端,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的Android清晰度切换方法。
第四方面,本发明实施例提供了一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的Android清晰度切换方法。
本发明实施例提供的一种Android清晰度切换方法、装置、终端及可读介质,当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器;在所开辟的缓冲子线程中获取切换清晰度后的码流信息后,将其存储至预设的缓冲数组中;根据缓冲定时器状态以及缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;其中,缓冲数组中存储的切换清晰度后的码流信息的占用内存小于播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
可以理解为,通过设置缓冲数组,可以在缓冲数组中存储比准备阶段所获取的码流信息更小的一段码流信息。从而在切换清晰度时,当缓冲数组获取到一小段码流信息后便可使视图承载控件首先播放该一小段码流信息,且在该一小段码流信息播放期间,播放器对象进入切换清晰度准备状态,获取切换清晰度后的码流信息,当准备完成后视图承载控件开始播放准备状态获取的码流信息,从而完成清晰度切换的整个流程。通过设置缓冲数组实现了Android清晰度的快速切换,提高了用户的清晰度切换体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种Android清晰度切换方法流程图;
图2是本发明实施例二提供的一种Android清晰度切换装置结构示意图;
图3是本发明实施例三提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1是本发明实施例一提供的一种Android清晰度切换方法流程图,本实施例可适用于Android清晰度切换的情况,该方法可以由终端实现,具体可通过终端中的软件和/或硬件来实施。参见图1,该Android清晰度切换方法包括如下步骤:
S110、当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器,并开辟缓冲子线程。
其中,利用Android终端拉取网络音视频资源(例如观看直播)时,用户可以根据需求进行清晰度切换,具体可以通过点击播放器对象对应的清晰度按钮控件进行清晰度的切换。
其中,监听到清晰度切换事件,包括:
通过预先设置的清晰度切换按钮监听器,监听到清晰度切换按钮发生点击事件。
其中,在清晰度切换按钮控件上添加监听器的方法,具体可以是:
btn.setOnClickListener(myListener);
其中,btn为清晰度切换按钮控件的名称,用以表示清晰度切换按钮,且清晰度切换按钮的名称并不限于btn;其中,通过setOnClickListener方法可以设置能够监听清晰度切换按钮控件的点击事件的监控器;其中,当监听器监听到清晰度切换按钮的点击事件时,可以主动回调myListener方法;其中,myListener方法用于完成清晰度切换后码流信息的获取。
其中,具体可以调用Timer mTimer=new Timer()函数构建缓冲定时器;其中,mTimer为缓冲定时器名称,可以表示缓冲定时器,且缓冲定时器名称不限于mTimer;其中,可以通过new函数新建一个Timer类型的缓冲定时器。其中,研发人员可根据经验值设定缓冲定时器的周期T,在本发明实施例中具体可以根据缓冲数组占用内存的大小设定缓冲定时器的周期T,且周期T可以与缓冲数组占用内存的大小正相关。其中,在确定好缓冲定时器的周期T后,具体可以利用mTimer.schedule(task,T)的函数设置缓冲定时器的定时周期;其中,T单位为ms,表示缓冲定时器的定时周期;其中,在缓冲定时器超时后,可以执行task任务,本发明实施例中例如可以是控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息。其中,可以通过调用Timer中的start方法来启动缓冲定时器。
其中,具体可以调用Thread类中的Thread.start()方法开启一个新的缓冲子线程,以用于获取切换清晰度后的码流信息。
在监听到清晰度切换事件时,播放器对象没有立即进入切换清晰度准备状态,从而视图承载控件没有执行暂停播放切换清晰度前的码流信息操作,而是继续播放切换清晰度前的码流信息,并且在继续播放切换清晰度前的码流信息过程中开辟缓冲子线程,用于获取切换清晰度后的码流信息。在监听到清晰度切换事件时仍播放切换清晰度前的码流信息,并利用子线程获取切换清晰度后的码流信息,并使视图承载控件播放子线程获取到的切换清晰度后的码流信息,从而保证了无缝切换的实现。
S120、在缓冲子线程中获取切换清晰度后的码流信息,并将获取的切换清晰度后的码流信息存储至预设的缓冲数组中。
其中,通过在缓冲子线程中获取切换清晰度后的码流信息,从而保证播放器对象暂时不进入切换清晰度准备状态,不打断视图承载控件继续播放切换清晰度前的码流信息,保证了无缝切换的实现。
其中,将获取到的切换清晰度后的码流信息存储至预设的缓冲数组,可以理解为将获取到的切换清晰度后的码流信息写入缓冲数组中,具体可以按已有的数组写入方式写入缓冲数组,优选的可以按获取时序依次写入相邻数组编号的缓冲数组空间。其中,预设的缓冲数组可以看做内存中的本地文件,播放器对象切换播放本地文件的切换过程非常迅速,从而提高了清晰度切换效率,提高了用户体验。
其中,缓冲数组中只能存储比准备阶段所获取的码流信息更小的一段码流信息,使得将获取到的切换清晰度后的码流信息写入缓冲数组的时间相应缩短。从而在切换清晰度时,当缓冲数组获取到一小段码流信息后便可使视图承载控件首先播放该一小段码流信息,且在该一小段码流信息播放期间,播放器对象进入切换清晰度准备状态,获取切换清晰度后的码流信息,当准备完成后视图承载控件开始播放准备状态获取的码流信息,从而完成清晰度切换的整个流程。
可选的,所述在缓冲子线程中获取切换清晰度后的码流信息,包括:
在缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL;将切换清晰度后的码流信息对应的URL转换成统一资源标识符URI;将URI转化为下载请求对象,并调用下载请求对象的开始方法获取切换清晰度后的码流信息。
其中,可以在点击清晰度切换按钮控件后获取到清晰度切换后码流信息对应的统一资源定位符(Uniform Resource Locator,URL),还可以通过其他方式获取到清晰度切换后码流信息对应的URL。其中,具体可以调用Uri.parse(newUrl)的方法来将清晰度切换后码流信息对应的URL转换为统一资源标识符(Uniform Resource Identifier,URI),其中newUrl可以表示清晰度切换后码流信息对应的URL。其中,具体可以调用DownloadManager.Request(Uri.parse(newUrl))的方法将URI转化为下载请求对象,其中Uri.parse(newUrl)即为将URL转化后的URI,其中通过DownloadManager对象中的Request方法即可将URI转化为一个请求对象request。其中,具体可以调用request.start()方法来开启下载流程,并且可以利用start()方法中的回调函数获取切换清晰度后的码流信息。
可选的,应用于观看直播间时进行清晰度切换的情况,在缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL,包括:在缓冲子线程中获取直播间的房间ID,根据房间ID获取切换清晰度后的码流信息对应的统一资源定位符URL。
其中,当观看直播间内直播码流信息过程中,若执行清晰度切换操作,则缓冲子线程获取切换后的码流信息对应的URL过程可以是首先获取房间ID,然后根据房间ID与不同清晰度URL的对应关系获取选取的清晰度对应的URL。其中,可以在用户终端进入直播间时,获取直播间的房间ID,并将房间ID存储至全局变量中,以方便随时获取所在直播间的房间ID,并根据该房间ID获取选取的清晰度对应的URL。
通过在缓冲子线程中获取切换清晰度后的码流信息,从而保证播放器对象暂时不进入切换清晰度准备状态,不打断视图承载控件继续播放切换清晰度前的码流信息,保证了无缝切换的实现。并且缓冲数组中只能存储比准备阶段所获取的码流信息更小的一段码流信息,使得将获取到的切换清晰度后的码流信息写入缓冲数组的时间相应缩短,当缓冲数组获取到一小段码流信息后便可使视图承载控件首先播放该一小段码流信息,从而保证了切换清晰度的时间缩短。且在该一小段码流信息播放期间,播放器对象进入切换清晰度准备状态,获取切换清晰度后的码流信息,当准备完成后视图承载控件开始播放准备状态获取的码流信息,从而完成清晰度切换的整个流程。
S130、根据缓冲定时器状态以及缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态。
其中,缓冲定时器状态以及缓冲数组的填充状态,都可以用于控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息。并且在视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息的同时,播放器对象可以进入现有的切换清晰度准备状态,用于获取切换清晰度后的码流信息。
可选的,根据缓冲定时器状态以及缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,包括:
当缓冲数组填充满时,若缓冲定时器未超时,则停止缓冲定时器,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;当缓冲定时器超时时,若缓冲数组未填充满,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息。
其中,缓冲数组的填充过程与缓冲定时器计时过程是同步进行的,因此会出现三种情况:缓冲数组先填充满、缓冲定时器先超时以及缓冲数组填充满时恰好缓冲定时器超时。
其中,当缓冲子线程中获取切换清晰度后的码流信息速度较快时,会出现缓冲数组填充满但缓冲定时器还未超时的情况,说明子线程提前完成了切换清晰度后的码流信息的获取工作,此时可直接调用Timer.stop()方法来停止缓冲定时器,并将视图承载控件对应的播放器对象的播放资源设置为缓冲数组的地址,以使视图承载控件可以播放该地址下缓冲数组中的码流信息。
其中,当缓冲子线程中获取切换清晰度后的码流信息速度较慢时,会出现缓冲定时器已经超时但缓冲数组还未填充满的情况,说明子线程在规定时间内并没有完成切换清晰度后的码流信息的获取工作,此时可不用等待缓冲数组填满,而播放缓冲数组中已有的码流信息,从而保证了视图承载控件从播放切换清晰度前的码流信息切换为播放切换清晰度后的码流信息之间不用等待过长时间。
其中,若缓冲数组填充满时恰好缓冲定时器超时,则说明子线程在规定时间内恰好完成切换清晰度后的码流信息的获取工作,此时可直接播放缓冲数组中已有的码流信息。
可选的,在控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息的过程中,还包括:
将缓冲数组中已经播放的切换清晰度后的码流信息清空,并获取的切换清晰度后的码流信息持续存储至缓冲数组,直到视图承载控件对应的播放器对象准备完成时停止存储。
其中,若在视图承载控件对应的播放器对象还没有准备完成时,缓冲数组内码流信息已播放完毕,必然会导致播放过程的中断等异常情况。因此在视图承载控件对应的播放器对象准备完成前,可以将缓冲数组中已经播放的切换清晰度后的码流信息清空,并获取的切换清晰度后的码流信息持续存储至缓冲数组,从而避免了播放过程的中断等异常情况。
可选的,控制视图承载控件对应的播放器对象进入切换清晰度准备状态,包括:
获取切换清晰度后的码流信息对应的统一资源定位符URL;通过调用URL设置方法,将切换清晰度后的码流信息对应的URL设置到视图承载控件对应的播放器对象中;控制视图承载控件对应的播放器对象接收切换清晰度后的码流信息。
其中,可以在点击清晰度切换按钮控件后获取到清晰度切换后码流信息对应的URL,还可以通过其他方式获取到清晰度切换后码流信息对应的URL;其中,URL设置方法具体可以是mMediaPlayer.setUrl()方法,其中mMediaPlayer可以表示播放器对象,其中通过setUrl方法可以将清晰度切换后码流信息对应的URL设置到播放器对象中;其中,播放器对象可以通过访问URL下载码流信息,并对码流信息进行存储。
S140、当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;其中,缓冲数组中存储的切换清晰度后的码流信息的占用内存小于播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
其中,视图承载控件对应的播放器对象准备完成时,可以理解为下载并存储好切换清晰度码流信息时。其中,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息可以理解为,控制视图承载控件播放切换清晰度后的码流信息。其中,控制视图承载控件播放切换清晰度后的码流信息,具体可以是,通过调用播放器对象mMediaPlayer中的mMediaPlayer.start()方法开始播放逻辑,并且可以定位播放缓冲数组内码流信息的播放进度,并根据缓冲数组内码流信息的播放进度播放播放器对象在准备状态时获取的的码流信息。
其中,缓冲数组中存储的切换清晰度后的码流信息的占用内存小于播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存,可以理解为缓冲数组中存储比准备阶段所获取的码流信息更小的一段码流信息,使得将获取到的切换清晰度后的码流信息写入缓冲数组的时间相应缩短,当缓冲数组获取到一小段码流信息后便可使视图承载控件首先播放该一小段码流信息,从而保证了切换清晰度的时间缩短。且在该一小段码流信息播放期间,播放器对象进入切换清晰度准备状态,获取切换清晰度后的码流信息,当准备完成后视图承载控件开始播放准备状态获取的码流信息,从而实现了Android清晰度的快速切换,提高了用户的清晰度切换体验。
可选的,在监听到清晰度切换事件之前,包括:通过数组定义方法在播放器类中定义缓冲数组。其中,具体可以通过调用private byte[1024*1024*5]={};的方法定义缓冲数组,其中1024*1024*5表示缓冲数组大小为5M,该缓冲数组大小可根据实际需求进行更改,并不限于5M。
可选的,在监听到清晰度切换事件之前,还包括:
在页面布局文件中定义视图承载控件,并设置视图承载控件的布局参数及ID信息;根据视图承载控件的ID信息调用视图承载控件获取方法,获取视图承载控件;通过播放器对象的视图绑定方法,将视图承载控件与播放器对象进行绑定;其中,视图承载控件播放所绑定的播放器对象获取的码流信息。
其中,视图承载控件可以是SurfaceView类的视图承载控件,也可以是TextureView类的视图承载控件,还可以是其他满足“播放绑定的播放器对象获取的码流信息”条件的其他类型的视图承载控件,在此不做具体限定。
其中,在页面布局文件中定义视图承载控件,具体可以设定标签<xxxx View></xxxx View>,通过该标签就可以在XML布局文件中声明一个xxxx View类的视图承载控件,其中xxxx View可以表示各类型的视图承载控件,例如可以是TextureView。
其中,视图承载控件的布局参数包括视图承载控件的宽度及高度信息等,具体的可以通过在视图承载控件中写入语句android:width=100dp以及android:height=80dp来分别定义视图承载控件的宽度和高度;其中,100以及80可以表示视图承载控件宽度和高度的数值,且这两个数值可以根据实际需求进行更改;其中,dp可以理解为虚拟像素px,在不同的像素密度的设备上会自动适配,比如:在320×480分辨率,像素密度为160的设备上,1dp=1px;在480×800分辨率,像素密度为240的设备上,1dp=1.5px;其中,dp与px计算公式:1dp*像素密度/160=实际像素数。其中,视图承载控件的布局参数可以继承到TextureView对象中去。
其中,视图承载控件可以通过android:id=”@+id/xxxx_view”来指定ID信息,且视图承载控件的ID信息为代码层与视图层构建联系的一个纽带。其中,根据视图承载控件的ID信息调用视图承载控件获取方法,具体可以是findViewById(R.id.xxxx_view),通过查找视图承载控件的ID信息可以获取到视图承载控件。
其中,播放器对象的视图绑定方法,具体可以是mMediaPlayer.bindView(mxxxxView),其中mMediaPlayer可以表示播放器对象,其中通过bindView方法可以将TextureView对象m xxxxView绑定到到播放器对象mMediaPlayer中,以使xxxxView对象可以播放mMediaPlayer获取的码流信息。
本实施例提供的Android清晰度切换方法,当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器;在所开辟的缓冲子线程中获取切换清晰度后的码流信息后,将其存储至预设的缓冲数组中;根据缓冲定时器状态以及缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;其中,缓冲数组中存储的切换清晰度后的码流信息的占用内存小于播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
可以理解为,通过设置缓冲数组,可以在缓冲数组中存储比准备阶段所获取的码流信息更小的一段码流信息。从而在切换清晰度时,当缓冲数组获取到一小段码流信息后便可使视图承载控件首先播放该一小段码流信息,且在该一小段码流信息播放期间,播放器对象进入切换清晰度准备状态,获取切换清晰度后的码流信息,当准备完成后视图承载控件开始播放准备状态获取的码流信息,从而完成清晰度切换的整个流程。通过设置缓冲数组实现了Android清晰度的快速切换,提高了用户的清晰度切换体验。
实施例二
图2是本发明实施例二提供的一种Android清晰度切换装置结构示意图,本实施例可适用于Android清晰度切换的情况。
参见图2,本实施例中Android清晰度切换装置,包括:
清晰度切换事件监听模块210,用于当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器,并开辟缓冲子线程;
缓冲数组码流存储模块220,用于在缓冲子线程中获取切换清晰度后的码流信息,并将获取的切换清晰度后的码流信息存储至预设的缓冲数组中;
缓冲数组码流播放模块230,用于根据缓冲定时器状态以及缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;
准备状态码流播放模块240,用于当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;
其中,缓冲数组中存储的切换清晰度后的码流信息的占用内存小于播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
其中,缓冲数组码流存储模块220,包括:
子线程获取码流子模块,用于在缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL;将切换清晰度后的码流信息对应的URL转换成统一资源标识符URI;将URI转化为下载请求对象,并调用下载请求对象的开始方法获取切换清晰度后的码流信息。
进一步的,子线程获取码流子模块,应用于观看直播间时进行清晰度切换的情况,具体用于:
在缓冲子线程中获取直播间的房间ID,根据房间ID获取切换清晰度后的码流信息对应的统一资源定位符URL。
可选的,缓冲数组码流播放模块230,具体用于:
当缓冲数组填充满时,若缓冲定时器未超时,则停止缓冲定时器,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;当缓冲定时器超时时,若缓冲数组未填充满,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息。
进一步的,缓冲数组码流播放模块230,还具体用于:
将缓冲数组中已经播放的切换清晰度后的码流信息清空,并获取的切换清晰度后的码流信息持续存储至缓冲数组,直到视图承载控件对应的播放器对象准备完成时停止存储。
可选的,缓冲数组码流播放模块230,还具体用于:
获取切换清晰度后的码流信息对应的统一资源定位符URL;通过调用URL设置方法,将切换清晰度后的码流信息对应的URL设置到视图承载控件对应的播放器对象中;控制视图承载控件对应的播放器对象接收切换清晰度后的码流信息。
可选的,Android清晰度切换装置,还包括:
缓冲数组定义模块,用于通过数组定义方法在播放器类中定义缓冲数组。
可选的,Android清晰度切换装置,还包括:
视图承载控件定义模块,用于在页面布局文件中定义视图承载控件,并设置视图承载控件的布局参数及ID信息;
视图承载控件获取模块,用于根据视图承载控件的ID信息调用视图承载控件获取方法,获取视图承载控件;
绑定模块,用于通过播放器对象的视图绑定方法,将视图承载控件与播放器对象进行绑定;其中,视图承载控件播放所绑定的播放器对象获取的码流信息。
本实施例提供的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-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种Android清晰度切换方法,其特征在于,包括:
当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器,并开辟缓冲子线程;
在所述缓冲子线程中获取切换清晰度后的码流信息,并将获取的切换清晰度后的码流信息存储至预设的缓冲数组中;
根据所述缓冲定时器状态以及所述缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;
所述根据所述缓冲定时器状态以及所述缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,包括:
当缓冲数组填充满时,若缓冲定时器未超时,则停止所述缓冲定时器,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;
当缓冲定时器超时时,若缓冲数组未填充满,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;
当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;
其中,所述缓冲数组中存储的切换清晰度后的码流信息的占用内存小于所述播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
2.根据权利要求1所述的方法,其特征在于,所述在所述缓冲子线程中获取切换清晰度后的码流信息,包括:
在所述缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL;
将切换清晰度后的码流信息对应的URL转换成统一资源标识符URI;
将URI转化为下载请求对象,并调用下载请求对象的开始方法获取切换清晰度后的码流信息。
3.根据权利要求2所述的方法,其特征在于,应用于观看直播间时进行清晰度切换的情况,所述在所述缓冲子线程中获取切换清晰度后的码流信息对应的统一资源定位符URL,包括:
在所述缓冲子线程中获取直播间的房间ID,根据所述房间ID获取切换清晰度后的码流信息对应的统一资源定位符URL。
4.根据权利要求1所述的方法,其特征在于,在所述控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息的过程中,还包括:
将缓冲数组中已经播放的切换清晰度后的码流信息清空,并获取的切换清晰度后的码流信息持续存储至缓冲数组,直到视图承载控件对应的播放器对象准备完成时停止存储。
5.根据权利要求1所述的方法,其特征在于,所述控制视图承载控件对应的播放器对象进入切换清晰度准备状态,包括:
获取切换清晰度后的码流信息对应的统一资源定位符URL;
通过调用URL设置方法,将切换清晰度后的码流信息对应的URL设置到视图承载控件对应的播放器对象中;
控制视图承载控件对应的播放器对象接收切换清晰度后的码流信息。
6.根据权利要求1所述的方法,其特征在于,在所述监听到清晰度切换事件之前,包括:通过数组定义方法在播放器类中定义缓冲数组。
7.一种Android清晰度切换装置,其特征在于,包括:
清晰度切换事件监听模块,用于当监听到清晰度切换事件时,控制视图承载控件继续播放切换清晰度前的码流信息,构建并开启缓冲定时器,并开辟缓冲子线程;
缓冲数组码流存储模块,用于在所述缓冲子线程中获取切换清晰度后的码流信息,并将获取的切换清晰度后的码流信息存储至预设的缓冲数组中;
缓冲数组码流播放模块,用于根据所述缓冲定时器状态以及所述缓冲数组的填充状态,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息,并控制视图承载控件对应的播放器对象进入切换清晰度准备状态;
所述缓冲数组码流播放模块,用于:
当缓冲数组填充满时,若缓冲定时器未超时,则停止所述缓冲定时器,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;
当缓冲定时器超时时,若缓冲数组未填充满,控制视图承载控件播放缓冲数组中存储的切换清晰度后的码流信息;
准备状态码流播放模块,用于当视图承载控件对应的播放器对象准备完成时,控制视图承载控件播放播放器对象在准备状态时获取的切换清晰度后的码流信息;
其中,所述缓冲数组中存储的切换清晰度后的码流信息的占用内存小于所述播放器对象在准备状态时获取的切换清晰度后的码流信息的占用内存。
8.一种移动终端,其特征在于,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的Android清晰度切换方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的Android清晰度切换方法。
CN201811021014.6A 2018-09-03 2018-09-03 Android清晰度切换方法、装置、终端及可读介质 Active CN109144613B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811021014.6A CN109144613B (zh) 2018-09-03 2018-09-03 Android清晰度切换方法、装置、终端及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811021014.6A CN109144613B (zh) 2018-09-03 2018-09-03 Android清晰度切换方法、装置、终端及可读介质

Publications (2)

Publication Number Publication Date
CN109144613A CN109144613A (zh) 2019-01-04
CN109144613B true CN109144613B (zh) 2021-10-15

Family

ID=64826485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811021014.6A Active CN109144613B (zh) 2018-09-03 2018-09-03 Android清晰度切换方法、装置、终端及可读介质

Country Status (1)

Country Link
CN (1) CN109144613B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113556621B (zh) * 2021-07-22 2023-09-08 乐视网信息技术(北京)股份有限公司 码流切换的方法、服务器、客户端、设备以及存储介质
CN115052191A (zh) * 2022-06-10 2022-09-13 广州博冠信息科技有限公司 码流切换处理方法、装置、存储介质与电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150281751A1 (en) * 2014-03-31 2015-10-01 Arris Enterprises, Inc. Adaptive streaming transcoder synchronization
CN105657520A (zh) * 2014-11-18 2016-06-08 乐视网信息技术(北京)股份有限公司 一种视频清晰度切换方法和视频播放器
US20170026445A1 (en) * 2011-08-30 2017-01-26 Sonic Ip, Inc. Selection of Resolutions for Seamless Resolution Switching of Multimedia Content
CN106375836A (zh) * 2016-09-27 2017-02-01 广东小天才科技有限公司 一种视频的分辨率切换方法及装置
CN107071536A (zh) * 2017-03-29 2017-08-18 武汉斗鱼网络科技有限公司 用户切换清晰度加载视频流的方法及系统
CN107197371A (zh) * 2016-03-15 2017-09-22 广州市动景计算机科技有限公司 视频清晰度的切换方法及装置
CN107979777A (zh) * 2016-10-25 2018-05-01 央视国际网络无锡有限公司 一种直播流无缝切换方法及装置
CN108174280A (zh) * 2018-01-18 2018-06-15 湖南快乐阳光互动娱乐传媒有限公司 一种音视频在线播放方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170026445A1 (en) * 2011-08-30 2017-01-26 Sonic Ip, Inc. Selection of Resolutions for Seamless Resolution Switching of Multimedia Content
US20150281751A1 (en) * 2014-03-31 2015-10-01 Arris Enterprises, Inc. Adaptive streaming transcoder synchronization
CN105657520A (zh) * 2014-11-18 2016-06-08 乐视网信息技术(北京)股份有限公司 一种视频清晰度切换方法和视频播放器
CN107197371A (zh) * 2016-03-15 2017-09-22 广州市动景计算机科技有限公司 视频清晰度的切换方法及装置
CN106375836A (zh) * 2016-09-27 2017-02-01 广东小天才科技有限公司 一种视频的分辨率切换方法及装置
CN107979777A (zh) * 2016-10-25 2018-05-01 央视国际网络无锡有限公司 一种直播流无缝切换方法及装置
CN107071536A (zh) * 2017-03-29 2017-08-18 武汉斗鱼网络科技有限公司 用户切换清晰度加载视频流的方法及系统
CN108174280A (zh) * 2018-01-18 2018-06-15 湖南快乐阳光互动娱乐传媒有限公司 一种音视频在线播放方法及系统

Also Published As

Publication number Publication date
CN109144613A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
CN110557670B (zh) 在网页页面中播放视频的方法、装置、终端和存储介质
CN111010614A (zh) 一种显示直播字幕的方法、装置、服务器及介质
US20180103296A1 (en) Method and apparatus for video playing processing and television
CN107071502B (zh) 视频播放方法和装置
US11039187B2 (en) Self-adaptive software background update method and device
CN108769727A (zh) 一种直播视频预加载方法及装置
CN111447455A (zh) 直播视频流回放处理方法、装置及计算设备
CN109428864B (zh) 提高nginx-rtmp拉流服务质量的方法及装置
CN105898395A (zh) 一种网络视频播放方法、装置及系统
CN109144613B (zh) Android清晰度切换方法、装置、终端及可读介质
CN109803151B (zh) 多媒体数据流切换方法、装置、存储介质及电子装置
CN105469381B (zh) 一种信息处理方法及终端
CN108174280A (zh) 一种音视频在线播放方法及系统
WO2017101393A1 (zh) 一种视频的连播方法及装置
CN110858910B (zh) 直播视频的显示方法、装置、设备及存储介质
CN111381749A (zh) 一种图像显示和处理方法、装置、设备和存储介质
CN109561337A (zh) 预览视频的播放方法和装置
CN112243136B (zh) 内容播放方法、视频存储方法和设备
CN109144612B (zh) Android清晰度切换方法、装置、终端及可读介质
CN105760377A (zh) 一种信息处理方法和装置
CN111212331A (zh) 一种iptv播放器的调度方法及系统
CN109144611B (zh) Android清晰度切换方法、装置、终端及可读介质
CN113573114B (zh) 一种投屏方法、装置、电子设备及存储介质
CN114268830A (zh) 云导播同步方法、装置、设备及存储介质
CN109413457B (zh) Android系统的码流清晰度切换方法、装置、终端及可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240509

Address after: Room A3, Unit 3, Building 1, Donghong Building, No. 28 Hongmian Road, Nancheng District, Dongguan City, Guangdong Province, 523000

Patentee after: Zhou Suling

Country or region after: China

Address before: 11 / F, building B1, phase 4.1, software industry, No.1, Software Park East Road, Wuhan East Lake Development Zone, Wuhan City, Hubei Province, 430070

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240604

Address after: 523077, No. 601, 6th Floor, Huangfu Building, No. 239 Gu Wang Fang, Xinji Community, Nancheng Street, Dongguan City, Guangdong Province

Patentee after: Guangdong Yicheng Cultural Communication Co.,Ltd.

Country or region after: China

Address before: Room A3, Unit 3, Building 1, Donghong Building, No. 28 Hongmian Road, Nancheng District, Dongguan City, Guangdong Province, 523000

Patentee before: Zhou Suling

Country or region before: China