CN112887798B - 显示装置及应用于安卓系统的多媒体资源播放方法 - Google Patents
显示装置及应用于安卓系统的多媒体资源播放方法 Download PDFInfo
- Publication number
- CN112887798B CN112887798B CN202110034138.3A CN202110034138A CN112887798B CN 112887798 B CN112887798 B CN 112887798B CN 202110034138 A CN202110034138 A CN 202110034138A CN 112887798 B CN112887798 B CN 112887798B
- Authority
- CN
- China
- Prior art keywords
- layer
- resource
- video
- playing
- picture
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请实施例提供了一种显示装置及应用于安卓系统的多媒体资源播放方法,通过安卓系统的显示装置在开机启动时,Native层服务启动后自动获取预存视频资源的位置信息。并在获取到视频资源的位置信息后申请第一图层以及图形缓存区。根据视频资源的位置信息获取视频资源的源数据,并对视频资源的源数据执行解码操作,以此得到视频资源的解码数据。将视频资源的解码数据缓存到图形缓存区中,并将图形缓存区中的解码数据在第一图层中播放。通过上述方法,尽可能的解决相关技术中显示装置上电启动后,需要等待一段时间才能展示开机画面,故此开机动画展示较慢的问题。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种显示装置及应用于安卓系统的多媒体资源播放方法。
背景技术
安卓系统(Android)的显示装置现已被广泛应用,以智能电视为例,采用智能电视能够观看网络资源,有些智能电视还可以提供人机交互功能。
智能电视启动播放时,往往会展示开机画面。然后用户才能对智能电视执行相应的操作。然而,发明人研究发现,相关技术中显示装置上电启动后,需要等待一段时间才能展示开机画面,故此开机动画展示慢的问题有待解决。
发明内容
本申请的目的是提供一种显示装置及应用于安卓系统的多媒体资源播放方法,用于解决相关技术中显示装置上电启动后,需要等待一段时间才能展示开机画面,故此开机动画展示较慢的问题。
第一方面,本申请实施例提供了一种显示装置,包括:显示器、存储器和控制器,其中:
所述显示器,用于显示信息;
所述存储器,用于存储可被所述控制器执行的计算机程序;
所述控制器连接所述存储器,被配置为:
响应于开机动画的播放请求,获取视频资源的位置信息;
生成第一图层以及申请图形缓存区;
根据所述位置信息获取所述视频资源的源数据,并对所述源数据执行解码操作,得到解码数据;
将所述解码数据缓存到所述图形缓存区;
从所述图形缓存区中获取所述解码数据并在所述第一图层中播放。
在一些可能的实施例中,所述控制器还被配置为:
响应于所述开机动画的播放请求,若检测到所述图片资源,则将所述图片资源在第二图层中播放,所述第二图层覆盖在所述第一图层之上。
在一些可能的实施例中,所述控制器执行将所述图片资源在第二图层中播放之前,还被配置为:
将所述图片资源中的各帧图像转换为位图。
在一些可能的实施例中,所述控制器还被配置为:
获取播放控制信息,所述播放控制信息用于指示所述视频资源的起播条件;
所述从所述图形缓存区中获取所述解码数据并在所述第一图层中播放之前,所述方法还包括:
基于所述播放控制信息确定满足所述视频资源的所述起播条件。
在一些可能的实施例中,所述控制器还被配置为:
获取展示控制信息,所述展示控制信息用于指示播放所述图片资源的起播条件;
所述将所述图片资源在所述第二图层中播放之前,所述方法还包括:
基于所述展示控制信息确定满足所述图片资源的所述起播条件。
在一些可能的实施例中,所述起播条件用于确定所述视频资源和所述图片资源在所述Native层中的播放顺序。
在一些可能的实施例中,所述视频资源和所述图片资源均关联有优先级,所述控制器执行将所述图片资源在所述第二图层中展示之前,还被配置为:
确定所述图片资源的优先级高于所述视频资源的优先级。
在一些可能的实施例中,所述视频资源包括供用户观看的视频内容和用于播放的音频资源,所述视频内容为纯色图片。
第二方面,本申请实施例提供了一种应用于安卓系统的多媒体资源播放方法,所述方法包括:
响应于开机动画的播放请求,获取视频资源的位置信息;
生成第一图层以及申请图形缓存区;
根据所述位置信息获取所述视频资源的源数据,并对所述源数据执行解码操作,得到解码数据;
将所述解码数据缓存到所述图形缓存区;
从所述图形缓存区中获取所述解码数据并在所述第一图层中播放。
在一些可能的实施例中,所述方法还包括:
响应于所述开机动画的播放请求,若检测到所述图片资源,则将所述图片资源在第二图层中播放,所述第二图层覆盖在所述第一图层之上。
在一些可能的实施例中,所述将所述图片资源在第二图层中播放之前,所述方法还包括:
将所述图片资源中的各帧图像转换为位图。
在一些可能的实施例中,所述方法还包括:
获取播放控制信息,所述播放控制信息用于指示所述视频资源的起播条件;
所述从所述图形缓存区中获取所述解码数据并在所述第一图层中播放之前,所述方法还包括:
基于所述播放控制信息确定满足所述视频资源的所述起播条件。
在一些可能的实施例中,所述方法还包括:
获取展示控制信息,所述展示控制信息用于指示播放所述图片资源的起播条件;
所述将所述图片资源在所述第二图层中播放之前,所述方法还包括:
基于所述展示控制信息确定满足所述图片资源的所述起播条件。
在一些可能的实施例中,所述起播条件用于确定所述视频资源和所述图片资源在所述Native层中的播放顺序。
在一些可能的实施例中,所述视频资源和所述图片资源均关联有优先级,所述将所述图片资源在所述第二图层中展示之前,所述方法还包括:
确定所述图片资源的优先级高于所述视频资源的优先级。
在一些可能的实施例中,所述视频资源包括视频内容和用于播放的音频资源,所述视频内容为纯色图片。
第三方面,本申请另一实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行本申请实施例提供的第二方面的方法。
本申请实施例,安卓系统的显示装置在开机启动时,Native层服务启动后自动获取预存视频资源的位置信息。并在获取到视频资源的位置信息后申请第一图层以及图形缓存区。根据视频资源的位置信息获取视频资源的源数据,并对视频资源的源数据执行解码操作,以此得到视频资源的解码数据。将视频资源的解码数据缓存到图形缓存区中,并将图形缓存区中的解码数据在第一图层中播放。通过上述方法,尽可能的解决相关技术中显示装置上电启动后,需要等待一段时间才能展示开机画面,故此开机动画展示较慢的问题。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请一些实施例提供的安卓系统架构示意图;
图1b为本申请一些实施例提供的应用场景图;
图1c示出了根据一些实施例提供的智能电视200中软件配置图;
图2a为本申请一些实施例提供的应用于安卓系统的多媒体资源播放方法流程图;
图2b为本申请一些实施例提供的Native层实现视频资源播放示意图;
图2c为本申请一些实施例提供的Native层实现图片资源播放示意图;
图3a为本申请一些实施例提供的Native层实现视频资源播放另一示意图;
图3b为本申请一些实施例提供的一种开机广告播放示意图;
图4为本申请一些实施例提供的图1b中安卓系统的智能电视200硬件配置框图;
图5为本申请一些实施例提供的图1b中服务器300的结构图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。在本申请实施例的描述中,除非另有说明,″/″表示或的意思,例如,A/B可以表示A或B;文本中的″和/或″仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,″多个″是指两个或多于两个。
在本申请实施例的描述中,除非另有说明,术语″多个″是指两个或两个以上,其它量词与之类似应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者控制设备执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
如何解决开机动画展示慢的问题发明人进行了研究和分析提供了解决方案。发明人经研究发现由于安卓系统的Native层不具备显示功能,安卓系统的显示装置在不采用方案供应商所提供的视频播放接口显示开机广告的情况下,多需要在Java层服务启动后由Java层提供显示功能。以安卓系统的智能电视作为安卓系统的显示装置举例说明,具体可如图1a所示,安卓系统的智能电视在开机启动时,先启动处于底层的Native层服务。由于Native层不具备显示功能,需要继续启动处于Native层之上的Java层。在Java层服务启动后,调用已集成的多媒体播放服务中的多媒体播放类Mediaplayer.java。已集成的多媒体播放服务中包含有具备显示功能的窗口系统Window。Java层的Window会在Java层启动后传给Native层,以提供给Native层中的多媒体播放器Mediaplayer.cpp显示系统。根据安卓系统的架构原则,Java层启动后,原则上智能电视已经完成开机。但相关技术中需要在Java层服务启动后,由Java层提供显示窗口以供Native层完成开机广告的播放,在开机广告播放结束后智能电视完成开机。这导致了开机速度缓慢,影响开机性能等问题。为了规避Java层启动带来的耗时,本申请实施例提供了一种可由Native层独立完成的播放功能。基于此,本申请的发明构思为:在安卓系统的智能电视开机启动时,Native层服务启动后,自动获取存储视频资源(如开机广告、动画以及音乐等)的位置信息。在获取到存储视频资源的存储路径后,调用系统服务SurfaceFlinger申请具备显示功能的第一图层以及图形缓存区。在申请完成后,根据视频资源的存储路径获取该视频资源的源数据,并对视频资源的源数据执行解码操作。将获取的解码数据缓存到图形缓存区中,并将图形缓存区中的解码数据在第一图层中进行播放。通过上述方案执行开机启动时,仅需启动Native层服务即可实现开机广告的播放。以此尽可能的解决相关技术中显示装置上电启动后,需要等待一段时间才能展示开机画面,故此开机动画展示较慢的问题。
图1b示出了本申请一个实施例提供的应用环境的示意图。
如图1b所示,包括服务器300、安卓系统的智能电视200,以及用于控制智能电视的控制装置100。控制装置100和安卓系统的智能电视200之间可以有线或无线方式进行通信。
其中,控制装置100被配置为控制安卓系统的智能电视200,其可接收目标对象输入的操作指令,且将操作指令转换为安卓系统的智能电视200可识别和响应的指令,起着目标对象与安卓系统的智能电视200之间交互的中介作用。如:目标对象通过操作控制装置100上的频道加减键,安卓系统的智能电视200响应频道加减的操作。
控制装置100可以是遥控器100A,包括红外协议通信或蓝牙协议通信,及其他短距离通信方式等,通过无线或其他有线方式来控制安卓系统的智能电视200。目标对象可以通过遥控器上按键、语音输入、控制面板输入等输入目标对象指令,来控制安卓系统的智能电视200。如:目标对象可以通过遥控器上音量加减键、频道控制键、上/下/左/右的移动按键、语音输入按键、菜单键、开关机按键等输入相应控制指令,来实现控制安卓系统的智能电视200的合照功能。
控制装置100也可以是智能设备,如移动终端100B、平板电脑、计算机、笔记本电脑等。例如,使用在智能设备上运行的应用程序控制安卓系统的智能电视200。该应用程序通过配置可以在与智能设备关联的屏幕上,通过直观的目标对象界面(UI)为目标对象提供各种控制。
示例性的,移动终端100B可与安卓系统的智能电视200安装软件应用,通过网络通信协议实现连接通信,实现一对一控制操作的和数据通信的目的。如:可以使移动终端100B与安卓系统的智能电视200建立控制指令协议,通过操作移动终端100B上提供的目标对象界面的各种功能键或虚拟控件,来实现如遥控器100A布置的实体按键的功能。例如,根据智能设备上的按键可以发起合照、确认参与合照,以及控制何时采集图像并上传自己的照片给服务器。还可以通过智能设备选择合照背景图、合照模板。也可以将移动终端100B上显示的音视频内容传输到安卓系统的智能电视200上,实现同步显示功能。
安卓系统的智能电视200可提供广播接收功能和计算机支持功能的网络电视功能。智能电视可以实施为,数字电视、网络电视、互联网协议电视(IPTV)等。
安卓系统的智能电视200,可以是液晶显示器、有机发光显示器、投影设备。具体智能电视类型、尺寸大小和分辨率等不作限定。
安卓系统的智能电视200还与服务器300通过多种通信方式进行数据通信。这里可允许安卓系统的智能电视200通过局域网(LAN)、无线局域网(WLAN)和其他网络进行通信连接。服务器300可以向安卓系统的智能电视200提供各种内容和互动。示例的,安卓系统的智能电视200可以发送和接收信息,例如:接收电子节目指南(EPG)数据、接收软件程序更新、或访问远程储存的数字媒体库。服务器300可以一组,也可以多组,可以一类或多类服务器。通过服务器300提供视频点播和广告服务等其他网络服务内容。
此外,本申请还提供了安卓系统的智能电视200的软件配置框图,具体如图1c所示,在一些实施例中,将系统分为四层,从上至下分别为应用程序(Applications)层(简称″应用层″),应用程序框架(Application Framework)层(简称″框架层″),安卓运行时(Android runtime)和系统库层(简称″系统运行库层″),以及内核层。
在一些实施例中,应用程序层中运行有至少一个应用程序,这些应用程序可以是操作系统自带的窗口(Window)程序、系统设置程序或时钟程序等;也可以是第三方开发者所开发的应用程序。在具体实施时,应用程序层中的应用程序包不限于以上举例。
框架层为应用程序层的应用程序提供应用编程接口(application programminginterface,API)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层相当于一个处理中心,这个中心决定让应用层中的应用程序做出动作。应用程序通过API接口,可在执行中访问系统中的资源和取得系统的服务。
如图1c所示,本申请实施例中应用程序框架层包括管理器(Managers),内容提供者(Content Provider)等,其中管理器包括以下模块中的至少一个:活动管理器(ActivityManager)用与和系统中正在运行的所有活动进行交互;位置管理器(Location Manager)用于给系统服务或应用提供了系统位置服务的访问;文件包管理器(Package Manager)用于检索当前安装在设备上的应用程序包相关的各种信息;通知管理器(NotificationManager)用于控制通知消息的显示和清除;窗口管理器(Window Manager)用于管理用户界面上的括图标、窗口、工具栏、壁纸和桌面部件。
在一些实施例中,活动管理器用于管理各个应用程序的生命周期以及通常的导航回退功能,比如控制应用程序的退出、打开、后退等。窗口管理器用于管理所有的窗口程序,比如获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕,控制显示窗口变化(例如将显示窗口缩小显示、抖动显示、扭曲变形显示等)等。
在一些实施例中,系统运行库层为上层即框架层提供支撑,当框架层被使用时,安卓操作系统会运行系统运行库层中包含的C/C++库以实现框架层要实现的功能。
在一些实施例中,内核层是硬件和软件之间的层。如图1c所示,内核层至少包含以下驱动中的至少一种:音频驱动、显示驱动、蓝牙驱动、摄像头驱动、WIFI驱动、USB驱动、HDMI驱动、传感器驱动(如指纹传感器,温度传感器,压力传感器等)、以及电源驱动等。
发明人发现,安卓系统的智能电视在开机时,多需要在Java层服务启动之后,采用Apk(Android application package,安卓应用程序包)调用多媒体播放器来播放开机广告。由于Java层服务启动后,原则上智能电视已处于开机状态,但由于开机动画未播放完毕故此需要将开机动画播放完毕后才能进入开机状态,因此该方式会导致开机速度缓慢,影响用户体验。该方式需要Java层服务启动后才能播放开机动画的原因是,由于Native层不具备显示功能,所以需要Java层提供显示窗口以供Native层播放开机动画。而相关技术中,在仅启动Native层的情况下,若想播放开机动画则需要Native层依赖方案供应商所提供的接口来提供显示功能。由于该方式的播放依赖于方案供应商所提供的接口,降低了设计的可靠性。为解决上述问题,本申请一个实施例提供的一种应用于安卓系统的多媒体资源播放方法,能够在仅启用Native层的情况下,不依赖于方案商提供的接口完成开机动画的播放操作。具体可如图2a所示,包括:
安卓系统的智能电视在启动时,首先启动Native层服务。在Native层服务启动后,执行步骤201:响应于开机动画的播放请求,获取视频资源的位置信息。由于多媒体播放器Mediaplayer仅支持对视频的解码功能,故此上述视频资源可包括智能电视开机时所播放的动画、广告等视频,以及不具备视频画面的音频。
多媒体播放服务包括用于获取视频资源存储路径的SetDataSource类、用于告知多媒体播放服务视频资源播放区域的setVideoSurfaceTexture类、用于对视频资源的源数据进行解码操作的Prepare类以及对视频资源的解码数据进行渲染播放的startPlay类,具体如图2b所示。
Native层服务启动后,多媒体播放服务开始运行,并执行步骤O1:多媒体播放服务中的SetDataSource类自动执行获取视频资源存储路径操作。在获取到视频资源的存储路径(即,位置信息)后,调用系统服务SurfaceFlinger执行图2a中步骤202:生成第一图层以及申请图形缓存区。
基于安卓系统的架构原则,在对图像、视频等资源进行展示时需要获取该资源对应的图层(Surface)。由于Java层服务未启动,无法获取图层。为使在Java层服务未启动时,视频资源能够在Native层中播放。考虑到系统服务SurfaceFlinger具备申请图层的能力,可通过获取系统服务SurfaceFlinger的客户端SurfaceComposerClient,并基于客户端SurfaceComposerClient申请图层和图形缓存区,此时,SurfaceFlinger的服务端会分配出相应的区域以供视频资源播放。基于此,实施时可构建视频自定义类(图2b中的SurfaceModule),在步骤201中获取到视频资源的存储路径后,多媒体播放服务可调用该视频自定义类。具体可如图2b所示,视频自定义类被调用时,首先执行步骤A0:获取SurfaceFlinger的客户端SurfaceComposerClient。基于该客户端执行步骤A1:通过调用客户端SurfaceComposerClient中的CreatSurface方法创建视频资源对应的第一图层Sp<SurfaceContrl>。在创建第一图层后,需执行步骤A2:通过调用客户端SurfaceComposerClient中的GetSurface方法获取到步骤A1中创建的第一图层Surface。在获取第一图层后,执行步骤A3:通过调用客户端SurfaceComposerClient中的GetIGraphicBufferProducer方法构建第一图层对应的图形缓存区IGraphicBufferProducter,该图形缓存区用于缓存视频资源的解码数据。
在获取到第一图层以及图形缓存区后,执行图2b中的步骤O2:视频自定义类将获取到第一图层以及图形缓存区的信息发送给多媒体播放服务中的setVideoSurfaceTexture类。
setVideoSurfaceTexture类在获取视频自定义类发送的第一图层和图形缓存区后,即获取到视频资源的播放区域,此时执行图2a中步骤203:根据所述位置信息获取所述视频资源的源数据,并对所述源数据执行解码操作,得到解码数据。
多媒体播放服务在获取到第一图层以及图形缓存区后,根据视频资源的存储路径获取该视频资源的源数据,并执行图2b中的步骤O3:调用Prepare类对该视频资源的源数据执行解码操作。得到解码数据后执行图2a中的步骤204:将所述解码数据缓存到所述图形缓存区;从所述图形缓存区中获取所述解码数据并在所述第一图层中播放。
实施时,多媒体播放服务通过调用Prapare类将视频资源对应的解码数据缓存到图形缓存区中,并执行图2b中的步骤O4:调用startPlay类,将缓存在图形缓存区中的解码数据在第一图层中进行播放。
视频播放时,可理解为连续帧的图片在播放,并配有音频。发明人发现,在实际应用场景中存在将视频资源的视频内容替换成自定义图片的需求(即,保留视频资源中的音频,将播放画面替换为自定义图片)。考虑到Mediaplayer仅能够对视频资源进行解码,无法对图片进行解码,为解决该问题,可创建图片自定义类(ResourceManager)。图片自定义类中包括用于将图片资源从磁盘空间映射到进程空间的Filemap类、用于将进程空间中的图片资源提取出位图的Skia图库以及用于将图片资源进行展示的Render类,具体如图2c所示。
在Native层服务启动后,图片自定义类开始运行,首先执行步骤B0:获取图片资源的存储路径。在获取到图片资源的存储路径后,执行步骤B1:调用Filemap类来获取图片资源的数据大小,并根据图片资源的数据大小将存储于磁盘中的图片资源映射到进程空间中,以供进程访问。接下来执行步骤B2:调用Skia图库根据进程空间中的图片资源提取出该图片资源对应的位图(bitmap)。在获取位图后,执行步骤B3:调用Render类将图片资源进行展示。
其中,在调用Render类将图片资源进行展示时,Render类使用画笔(Panit)将位图的像素画到画布(Canvas)上,并通过EGL(Enterprise Generation Language,业务编程将画布上的数据通过SurfaceFlinger显示出来,由于SurfaceFlinger在前文已有介绍,此处不再赘述。
在展示图片资源时,可通过获取SurfaceFlinger获取用于展示图片资源的第二图层,为了达到由自定义图片代替原视频中的图像的目的,可将第二图层覆盖在第一图层之上。在播放视频资源和图片资源时,可通过在第二图层播放图片资源,在第一图层播放视频资源的方式,实现保留视频资源中的音频,并将播放画面替换为自定义图片的需求。
考虑到在实际应用场景中存在视频资源和图片资源非同步播放的需求,如音频先行播放后再显示画面以及结束画面需在音频结束后若干秒内出现等。故此在采用自定义图片替换视频资源中的视频内容时,可预先自定义图片的显示时长以及视频资源中的音频时长,并根据上述显示时长和音频时长确定图片资源以及视频资源播放的起播条件。该起播条件可根据实际需求自定义,如,图片资源直接播放,视频资源在图片资源播放后,间隔2s播放等。
在一些可能的实施例中,视频自定义类中包含播放控制信息,该播放控制信息包含视频资源播放的起播条件。在将缓存于图形缓存区的解码数据进行播放之前需要确定当前已满足视频资源的起播条件时,才可将解码数据进行播放。
在一些可能的实施例中,图片自定义类中包含展示控制信息,该展示控制信息包含图片资源播放的起播条件。在将图片资源在SurfaceFlinger所申请的第二图层展示之前需要确定当前已满足图片资源的起播条件时,才将图片在第二图层中展示。
此外,发明人考虑到用于展示图片资源的第二图层覆盖在用于播放视频资源的第一图层之上,若同时进行图片资源的展示和视频资源的播放则不会看到视频资源中的视频内容。为适用更多的应用场景,在一些可能的实施例中,在视频资源和图片资源的存储路径中添加用于表示视频资源和图片资源播放先后顺序的优先级标签,将图片资源在第二图层进行展示之前,需要确定图片资源的优先级高于视频资源的优先级。也即,当获取到视频资源的存储路径,也获取到图片资源的存储路径时,可以根据优先级来确定展示给用户的是视频资源的图片还是图片资源的图片。
为了便于理解本申请中如何图片资源进行展示的,具体可如图3a所示包括以下步骤:
在Native层服务启动后,需要根据图片资源的数据大小将该图片资源映射到进程空间中,以便于Skia图库运行时能够根据进程空间中的映射图片资源确定该图片资源的位图。实施时,Native层启动时,图片自定义类自动运行。在图片自定义类运行时会自动获取图片资源的存储路径,当图片自定义类识别到图片资源的存储路径后,执行步骤301:根据图片资源的数据大小,调用Filemap类将图片资源从存储图片资源的磁盘空间中映射到进程空间。当进程空间存在映射的图片资源时,Skia图库能够识别到该映射的图片资源,执行步骤302:调用Skia图库,根据进程空间中的图片资源提取出该图片资源对应的位图。
图片资源的显示需要基于位图进行,通过上述步骤根据图片资源的大小确定位图的大小。确定图片资源对应的位图后,执行步骤303:调用Render类中的画笔Panit,将位图的像素画到画布Canvas上。其中,画笔Panit和画布Canvas均为安卓系统中的原生对象,应用于通过画笔将位图上的像素提取到画布上,画布上的内容可通过一些系统服务进行显示。在将画布上的内容进行显示时,可执行步骤304:通过EGL工具,将Canvas上的数据通过系统服务SurfaceFlinger显示。
在一些可能的实施例中,以视频资源A和图片资源B同时播放的方式作为开机广告,其中,视频资源A中视频内容为纯色图片(例如纯黑色图片)。图片资源B包括7副相同尺寸的图片,每一图片对应有唯一序号标识(如第一、第二等)。在播放图片资源B时将每一图片的序号排序作为图片资源B的播放顺序,并在播放时每隔3秒切换到下一幅图片。当安卓系统的智能电视启动时Native层服务启动,图片自定义类将索获取的图片资源B在第二图层进行展示,同时视频自定义类将所获取的视频资源A缓存到基于系统服务SurfaceFlinger所申请的图形缓存区,并渲染到第一图层中。此时,开机广告展示给用户的画面是第二图层所展示的图片资源B,开机广告所播放的声音则是在第一图层播放的视频资源A,开机画面具体可如图3b所示。
在一些可能的实施例中,图片资源和视频资源固定存储在本地。Native层服务启动时,图片自定义类和视频自定义类分别获取图片资源和视频资源的本地存储路径,图片自定义类基于图片资源的存储路径获取图片资源,并将图片资源在第二图层展示。视频自定义类基于视频资源的存储路径获取视频资源,并将解码后的视频资源渲染到第一图层中播放。
在一些可能的实施例中,图片资源和/或视频资源可从远程服务器下载。为了便于理解,仅以视频资源的播放进行说明,Native层服务启动时,视频自定义类获取视频资源的存储路径后根据该路径从远程服务器下载视频资源,并将解码后的视频资源渲染到第一图层中播放。为适用更多的应用场景,视频自定义类可将从远程服务器下载的视频资源存储在本地,在下一次开机时直接播放本地存储的视频资源。进一步的,还可以设置视频资源更新选项。若用户不选择启用该选项,则仅在首次开机时从远程服务器下载视频资源,下次播放时仅需播放本地存储的视频资源。若用户选择启用该选项,则每次开机时,视频自定义类均根据存储路径去检测远程服务器中的视频资源是否更新,若未检测到更新的视频资源,则播放本地视频资源。若检测到存在更新的视频资源,则下载更新的视频资源并播放更新的视频资源。
图4中示例性示出了智能电视200的硬件配置框图。如图4所示,安卓系统的智能电视200中可以包括调谐解调器210、通信器220、检测器230、外部装置接口240、控制器250、存储器260、目标对象接口265、视频处理器270、显示器275、旋转组件276、音频处理器280、音频输出接口285、供电电源290。
旋转组件276还可以包括其他部件,如传动部件、检测部件等。其中,传动部件可以通过特定传动比,调整旋转组件276输出的转速和力矩,可以为齿轮传动方式;检测部件可以由设置在旋转轴上的传感器组成,例如角度传感器、姿态传感器等。这些传感器可以对旋转组件276旋转的角度等参数进行检测,并将检测的参数发送给控制器250,以使控制器250能够根据检测的参数判断或调整安卓系统的智能电视200的状态。实际应用中,旋转组件276可以包括但不限于上述部件中的一种或多种。
调谐解调器210,通过有线或无线方式接收广播电视信号,可以进行放大、混频和谐振等调制解调处理,用于从多个无线或有线广播电视信号中解调出目标对象所选择的电视频道的频率中所携带的音视频信号,以及附加信息(例如EPG数据)。
调谐解调器210,可根据目标对象选择,以及由控制器250控制,响应目标对象选择的电视频道的频率以及该频率所携带的电视信号。
调谐解调器210,根据电视信号的广播制式不同,可以接收信号的途径有很多种,诸如:地面广播、有线广播、卫星广播或互联网广播等;以及根据调制类型不同,可以数字调制方式或模拟调制方式;以及根据接收电视信号的种类不同,可以解调模拟信号和数字信号。
通信器220,是用于根据各种通信协议类型与外部设备或外部服务器进行通信的组件。例如安卓系统的智能电视200可将内容数据发送至经由通信器220连接的外部设备,或者,从经由通信器220连接的外部设备浏览和下载内容数据。通信器220可以包括WIFI模块221、蓝牙通信协议模块222、有线以太网通信协议模块223等网络通信协议模块或近场通信协议模块,从而通信器220可根据控制器250的控制接收控制装置100的控制信号,并将控制信号实现为WIFI信号、蓝牙信号、射频信号等。
检测器230,是智能终端200用于采集外部环境或与外部交互的信号的组件。检测器230可以包括声音采集器231,如麦克风,可以用于接收目标对象的声音,如目标对象控制安卓系统的智能电视200的控制指令的语音信号;或者,可以采集用于识别环境场景类型的环境声音,实现安卓系统的智能电视200可以自适应环境噪声。
在其他一些示例性实施例中,检测器230,还可以包括图像采集器232,如相机、摄像头等,可以用于采集外部环境场景,以自适应变化安卓系统的智能电视200的显示参数;以及用于采集目标对象的属性或与目标对象交互手势,以实现智能电视与目标对象之间互动的功能。在本申请中还可以根据目标对象的指示采集目标对象的图像,用于和其他目标对象的图像进行融合得到合照。
外部装置接口240,是提供控制器250控制安卓系统的智能电视200与外部设备间数据传输的组件。外部装置接口240可按照有线/无线方式与诸如机顶盒、游戏装置、笔记本电脑等外部设备连接,可接收外部设备的诸如视频信号(例如运动图像)、音频信号(例如音乐)、附加信息(例如EPG)等数据。
控制器250,通过运行存储在存储器260上的各种软件控制程序(如操作系统和各种应用程序),来控制安卓系统的智能电视200的工作和响应目标对象的操作。
其中,控制器250包括随机存取存储器(RAM)251、只读存储器(ROM)252、图形处理器253、CPU处理器254、通信接口255、以及通信总线256。其中,RAM251、ROM252以及图形处理器253、CPU处理器254通信接口255通过通信总线256相连接。
ROM252,用于存储各种系统启动指令。如在接收到开机信号时,安卓系统的智能电视200电源开始启动,CPU处理器254运行ROM252中的系统启动指令,将存储在存储器260的操作系统拷贝至RAM251中,以开始运行启动操作系统。当操作系统启动完成后,CPU处理器254再将存储器260中各种应用程序拷贝至RAM251中,然后,开始运行启动各种应用程序。
图形处理器253,用于产生各种图形对象,如图标、操作菜单、以及目标对象输入指令显示图形等。图形处理器253可以包括运算器,用于通过接收目标对象输入各种交互指令进行运算,进而根据显示属性显示各种对象;以及包括渲染器,用于产生基于运算器得到的各种对象,将进行渲染的结果显示在显示器275上。
CPU处理器254,用于执行存储在存储器260中的操作系统和应用程序指令。以及根据接收的目标对象输入指令,来执行各种应用程序、数据和内容的处理,以便最终显示和播放各种音视频内容。
通信接口255,可包括第一接口到第n接口。这些接口可以是经由网络被连接到外部设备的网络接口。
控制器250可以控制安卓系统的智能电视200的整体操作。例如:响应于接收到用于选择在显示器275上显示的GUI对象的目标对象输入命令,控制器250便可以执行与由目标对象输入命令选择的对象有关的操作。
其中,该对象可以是可选对象中的任何一个,例如超链接或图标。该与所选择的对象有关的操作,例如显示连接到超链接页面、文档、图像等操作,或者执行与对象相对应的程序的操作。该用于选择GUI对象的目标对象输入命令,可以是通过连接到安卓系统的智能电视200的各种输入装置(例如,鼠标、键盘、触摸板等)输入命令或者与由目标对象说出语音相对应的语音命令。
存储器260,用于存储驱动和控制安卓系统的智能电视200运行的各种类型的数据、软件程序或应用程序。存储器260可以包括易失性和/或非易失性存储器。而术语″存储器″包括存储器260、控制器250的RAM251和ROM252、或安卓系统的智能电视200中的存储卡。
图5中示例性示出了服务器300的硬件配置框图。如图5所示,服务器300的组件可以包括但不限于:至少一个处理器131、至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
服务器300也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与服务器300交互的设备通信,和/或与使得该服务器300能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,服务器300还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于服务器300的其它模块通信。应当理解,尽管图中未示出,可以结合服务器300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些实施方式中,本申请提供的一种应用于安卓系统的多媒体资源播放方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种应用于安卓系统的多媒体资源播放方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于应用于安卓系统的多媒体资源播放的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本申请中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
Claims (6)
1.一种显示装置,其特征在于,包括:显示器、存储器和控制器,其中:
所述显示器用于显示信息;
所述存储器,用于存储可被所述控制器执行的计算机程序;
所述控制器分别连接所述显示器和所述存储器,被配置为:
响应于开机动画的播放请求,获取视频资源的位置信息;
调用所述显示装置的系统服务SurfaceFlinger生成第一图层,并申请与所述第一图层相关联的图形缓存区;所述图形缓存区用于缓存视频资源的解码数据;
调用视频自定义类将所述第一图层和所述图形缓存区发送给多媒体播放服务的setVideoSurfaceTexture类以获取所述视频资源的播放区域;并在获取所述播放区域后,根据所述位置信息获取所述视频资源的源数据并对所述视频资源的源数据执行解码操作,得到所述视频资源的解码数据;
将所述解码数据缓存到所述图形缓存区,从所述图形缓存区中获取所述解码数据并在所述第一图层中播放;
所述控制器还被配置为:响应于所述开机动画的播放请求,若检测到所述开机动画中包含待播放的图片资源则获取所述图片资源的存储路径;
调用Filemap类根据所述存储路径获取所述图片资源的数据大小,并根据所述数据大小将存储在磁盘中的图片资源映射到进程空间中;并调用Skia图库根据所述进程空间中的图片资源提取所述图片资源中各帧图像的位图;
控制所述SurfaceFlinger申请第二图层;调用Render类通过画笔将所述位图的像素画至对应画布,并根据业务编程将所述画布上的数据通过所述SurfaceFlinger显示于所述第二图层;其中,所述第二图层覆盖在所述第一图层之上;
所述控制器还被配置为:获取展示控制信息,所述展示控制信息用于指示所述图片资源的起播条件;
将所述画布上的数据通过所述SurfaceFlinger显示于所述第二图层之前,确定满足所述图片资源的起播条件。
2.根据权利要求1所述的显示装置,其特征在于,所述控制器还被配置为:
获取播放控制信息,所述播放控制信息用于指示所述视频资源的起播条件;
所述从所述图形缓存区中获取所述解码数据并在所述第一图层中播放之前,所述控制器还被配置为:
基于所述播放控制信息确定满足所述视频资源的所述起播条件。
3.根据权利要求1或2中所述的显示装置,其特征在于,所述起播条件用于确定所述视频资源和所述图片资源在Native层中的播放顺序。
4.根据权利要求1所述的显示装置,其特征在于,所述视频资源和所述图片资源均关联有优先级,所述控制器执行在所述第二图层中展示所述图片资源之前,还被配置为:
确定所述图片资源的优先级高于所述视频资源的优先级。
5.根据权利要求2所述的显示装置,其特征在于,所述视频资源包括视频内容和用于播放的音频资源,所述视频内容为纯色图片。
6.一种应用于安卓系统的多媒体资源播放方法,其特征在于,所述方法包括:
响应于开机动画的播放请求,获取视频资源的位置信息;
调用显示装置的系统服务SurfaceFlinger生成第一图层,并申请与所述第一图层相关联的图形缓存区;所述图形缓存区用于缓存视频资源的解码数据;
调用视频自定义类将所述第一图层和所述图形缓存区发送给多媒体播放服务的setVideoSurfaceTexture类以获取所述视频资源的播放区域;并在获取所述播放区域后,根据所述位置信息获取所述视频资源的源数据并对所述视频资源的源数据执行解码操作,得到所述视频资源的解码数据;
将所述解码数据缓存到所述图形缓存区,从所述图形缓存区中获取所述解码数据并在所述第一图层中播放;
所述方法还包括:响应于所述开机动画的播放请求,若检测到所述开机动画中包含待播放的图片资源则获取所述图片资源的存储路径;
调用Filemap类根据所述存储路径获取所述图片资源的数据大小,并根据所述数据大小将存储在磁盘中的图片资源映射到进程空间中;并调用Skia图库根据所述进程空间中的图片资源提取所述图片资源中各帧图像的位图;
控制所述SurfaceFlinger申请第二图层;调用Render类通过画笔将所述位图的像素画至对应画布,并根据业务编程将所述画布上的数据通过所述SurfaceFlinger显示于所述第二图层;其中,所述第二图层覆盖在所述第一图层之上;
所述方法还包括:获取展示控制信息,所述展示控制信息用于指示所述图片资源的起播条件;将所述画布上的数据通过所述SurfaceFlinger显示于所述第二图层之前,确定满足所述图片资源的起播条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110034138.3A CN112887798B (zh) | 2021-01-12 | 2021-01-12 | 显示装置及应用于安卓系统的多媒体资源播放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110034138.3A CN112887798B (zh) | 2021-01-12 | 2021-01-12 | 显示装置及应用于安卓系统的多媒体资源播放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112887798A CN112887798A (zh) | 2021-06-01 |
CN112887798B true CN112887798B (zh) | 2023-04-21 |
Family
ID=76045031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110034138.3A Active CN112887798B (zh) | 2021-01-12 | 2021-01-12 | 显示装置及应用于安卓系统的多媒体资源播放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112887798B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905901A (zh) * | 2014-03-24 | 2014-07-02 | 珠海全志科技股份有限公司 | 基于android系统的视频开机方法、装置及播放设备 |
CN107566902A (zh) * | 2017-09-19 | 2018-01-09 | 青岛海信电器股份有限公司 | 一种显示设备开机的方法和显示设备 |
CN109195018A (zh) * | 2018-08-28 | 2019-01-11 | 四川长虹电器股份有限公司 | 用于Android智能电视的加速系统启动的方法 |
CN110213657B (zh) * | 2019-06-12 | 2021-07-27 | 海信视像科技股份有限公司 | 一种开机方法及智能电视 |
CN111694606B (zh) * | 2020-05-18 | 2023-11-07 | 苏宁智能终端有限公司 | 个性化开机启动方法、系统、计算机设备及可读存储介质 |
-
2021
- 2021-01-12 CN CN202110034138.3A patent/CN112887798B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112887798A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112135180B (zh) | 一种内容显示方法和显示设备 | |
CN111836115B (zh) | 一种屏保展示方法、屏保跳转方法及显示设备 | |
CN111897478A (zh) | 一种页面显示方法及显示设备 | |
CN113141529B (zh) | 显示设备及媒资播放方法 | |
US11960674B2 (en) | Display method and display apparatus for operation prompt information of input control | |
CN112165641A (zh) | 一种显示设备 | |
CN112612525A (zh) | 显示设备及显示设备开机方法 | |
CN111954059A (zh) | 屏保的展示方法及显示设备 | |
CN112165642B (zh) | 一种显示设备 | |
CN112269668A (zh) | 一种应用资源共享及显示设备 | |
CN112040340A (zh) | 资源文件获取方法及显示设备 | |
CN111984167A (zh) | 一种快捷命名的方法及显示设备 | |
CN112017415A (zh) | 虚拟遥控器的推荐方法、显示设备及移动终端 | |
CN112887798B (zh) | 显示装置及应用于安卓系统的多媒体资源播放方法 | |
CN112911359B (zh) | 一种资源显示方法、显示设备及遥控器 | |
CN112363683B (zh) | 一种网页应用支持多图层显示的方法及显示设备 | |
CN113971049A (zh) | 一种后台服务管理方法及显示设备 | |
CN112261463A (zh) | 显示设备及节目推荐方法 | |
CN111787350A (zh) | 显示设备及视频通话中的截图方法 | |
CN113825007B (zh) | 视频播放方法、装置及显示设备 | |
CN112291600B (zh) | 一种缓存方法及显示设备 | |
CN112199612B (zh) | 一种书签添加和合并的方法及显示设备 | |
CN114071187B (zh) | 显示设备、服务器及分辨率快速切换方法 | |
CN112231088B (zh) | 一种浏览器进程优化方法及显示设备 | |
CN111913755B (zh) | 一种应用程序的扫描方法和显示设备 |
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 |