CN110147512B - 播放器预加载、运行方法、装置、设备及介质 - Google Patents
播放器预加载、运行方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110147512B CN110147512B CN201910408787.8A CN201910408787A CN110147512B CN 110147512 B CN110147512 B CN 110147512B CN 201910408787 A CN201910408787 A CN 201910408787A CN 110147512 B CN110147512 B CN 110147512B
- Authority
- CN
- China
- Prior art keywords
- player
- surface object
- screen
- graphics processing
- creating
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开了播放器预加载、运行方法、装置、设备及介质,所述方法包括在预加载阶段:创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放所述视频文件所生成的实际渲染表面对象中绘制所述解码数据;基于所述离屏渲染表面对象启动解码器;在运行阶段:创建视图对象;将所述视图对象传输至图形处理线程,以便于所述图形处理线程获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;由解码器解码以便于所述图形处理线程中的离屏渲染表面对象接收并输出解码数据。本发明可以达到瞬间显示出图像的效果,从而提升用户粘度。
Description
技术领域
本发明涉及播放器优化领域,尤其涉及播放器预加载、运行方法、装置、设备及介质。
背景技术
在安卓系统中,播放器依赖解码器解码音视频文件,并将解码结果渲染出来以实现音视频文件的播放。在播放器的工作过程中,其解码器只有在获取表面对象后才可以被启动。为了提升播放器播放音视频文件的速度,现有技术提出了两种播放器预加载方案:
第一种预加载方案为直接启动一个播放器,开始读取播放数据并启动音视频分离器(Demuxer),但是由于不存在表面对象,因此并没有启动解码器,等到真正需要进行播放时,即具备生成表面对象的条件后,才生成并获取表面对象并将所述表面对象设置给播放器,播放器再行启动解码器进行解码,这一预加载方案虽然可以提前进行部分预加载工作,但是真正开始播放的时候还需要初始化解码器,然后才开始解码,而这个过程需要花费几百毫秒的时间,达不到瞬间启播的效果。
第二种预加载方案为预先设置空的表面对象,并将所述空的表面对象用于触发解码器的启动。等到真正需要播放时,再生成的实际的表面对象。但是,因为解码器只能够在初始化的时候才能够接收表面对象,为了使得实际生成的表面对象生效,需要重启解码器。但是这一过程重启解码器依然耗费较多时间。
发明内容
为了解决现有技术中无法基于播放器预加载实现瞬间启播的技术问题,本发明实施例提供播放器预加载、运行方法、装置、设备及介质。
一方面,本发明提供了一种播放器预加载方法,所述方法包括:
创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放所述视频文件所生成的实际渲染表面对象中绘制所述解码数据;
基于所述离屏渲染表面对象启动解码器。
另一方面,本发明提供一种播放器运行方法,包括:
响应于播放指令,创建视图对象;
将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;
由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
另一方面,本发明提供一种播放器预加载装置,所述装置包括:
图形处理线程创建模块,用于创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放所述视频文件所生成的实际渲染表面对象中绘制所述解码数据;
解码器启动模块,用于基于所述离屏渲染表面对象启动解码器。
另一方面,本发明提供一种播放器运行装置,所述装置包括:
视图对象创建模块,用于响应于播放指令,创建视图对象;
视图对象传输模块,用于将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;
解码模块,用于由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
另一方面,本发明提供了一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现一种播放器预加载方法及播放器运行方法。
另一方面,本发明提供了一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行一种播放器预加载方法及播放器运行方法。
本发明提供了播放器预加载、运行方法、装置、设备及介质。本发明中可以直接使用播放器预加载阶段创建的图形处理线程以及离屏渲染表面对象,并且不需要进行解码器的重启。由此可知,在播放器预加载完成后,播放器就处于可播状态,用户需要播放的时候直接启动就可以做到瞬间启播,即待播出的图像瞬间上屏,达到瞬间显示出图像的效果,从而提升用户粘度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明提供的一种播放器预加载方法流程图;
图2是本发明提供的图形处理线程预加载阶段流程图;
图3是本发明提供的创建离屏渲染表面对象流程图;
图4是本发明提供的基于所述离屏渲染表面对象启动解码器的之前流程图;
图5是本发明提供的一种播放器预加载方法的示意图;
图6是本发明提供的一种播放器运行方法流程图;
图7是本发明提供的图形处理线程播放阶段流程图;
图8是本发明提供的播放器运行的示意图;
图9是本发明提供的一种播放器预加载装置框图;
图10是本发明提供的一种播放器运行装置框图;
图11是本发明提供的一种用于实现本发明实施例所提供的方法的设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了使本发明实施例公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明实施例进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明实施例,并不用于限定本发明实施例。为了更清楚地说明本发明实施例中的技术方案及其所取得的技术进步,本发明实施例首先对本发明实施例中用到的或实现的技术术语与技术背景做下述阐述:
安卓操作系统(Android):Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由谷歌(Google)公司和开放手机联盟领导及开发。
视图对象(View):Android的一种用户界面(UserInterface,UI)控件,一般用于复杂图像显示,视频播放时可以用视图对象作为图像的载体以便于后期实现图像的显示。视图对象包含表面视图(SurfaceView)和纹理视图(TextureView)两种方式。
表面视图(SurfaceView):在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面,由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行行绘制。SurfaceView相较于Android的普通窗口,其刷新的时候不需要重绘应用程序的窗口,因此绘制方式效率高。SurfaceView虽然继承自View,但拥有独立的表面对象(Surface),即它不与其宿主窗口共享同一个Surface,可以单独在一个线程进行绘制,并不会占用主线程的资源,绘制更为高效,游戏,视频播放,直播,都可以用SurfaceView来实现。
纹理视图(TextureView):TextureView是一个由于显示数据流的视图控件。其在播放视频和显示相机预览的场景中获得了广泛的应用。TextureView既然作为一个控件,可以像普通的控件一样进行布局、动画等设置,其当做普通的View控件使用,在布局、动画和变换(平移、缩放、旋转等)中非常方便,但是由于TextureView是作为普通控件使用,因此所处理的数据流也在应用程序的主线程进行处理,会比较占用内存。
表面对象(Surface):Android的一种图像缓冲区的句柄,作为播放器和View交互的媒介,播放器可以通过Surface将播放器的解码后的图像绘制到视频View上。
表面纹理对象(SurfaceTexture):SurfaceTexture可以被理解为一个以应用作为消费者的缓冲区队列。当一个新的缓冲区由生产者进入缓冲区队列时,应用将通过回调被通知。从而使得EGL有机会获得新的数据。Surface的主要创建方法是通过接收一个SurfaceTexture作为单独的参数的构造函数,因此,可以将SurfaceTexture理解为用来生成Surface的必要条件。
扩展图形库(EGL):针对Android扩展的开放图形库(OpenGraphicsLibrary,OpenGL)。EGL是一组平台无关的应用程序接口(ApplicationProgrammingInterface,API),它的主要功能包括:和本地窗口系统(NativeWindowingSystem)通讯;查询可用的配置;创建OpenGLES可用的表面对象;同步不同类别的API之间的渲染;管理渲染资源。
解码器(Mediacodec):Android系统的硬件解码器,用来解码视频数据,其可以内置于播放器作为播放器中的独立组件。
本发明实施例公开一种播放器预加载方法,如图1所示,所述方法以播放器为执行主体,包括:
S101.创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放所述视频文件所生成的实际渲染表面对象中绘制所述解码数据。
具体地,所述图形处理线程在预加载阶段被创建,其可以用于处理与OpenGL相关的任务。在播放器预加载阶段,所述图形处理线程如图2所示,执行下述逻辑:
S1011.初始化开放图形库。
首先,在所述图形处理线程中首先初始化OpenGL,以便于后续基于OpenGL以及EGL执行相关图形处理动作。
S1013.创建离屏渲染表面对象。
具体地,本发明实施例中离屏渲染表面对象的作用主要有两个,一个是用于启动解码器,从而将解码器的启动在播放器预加载阶段完成,从而缩短在播放器启播阶段的耗时,另一个是用于作为解码器解码出的解码数据的载体,以便于在播放阶段生成的实际渲染表面对象基于解码数据进行绘图。
离屏渲染表面对象是连接预加载阶段与播放阶段的桥梁,并且在预加载阶段和播放阶段的作用是不一样的,通过灵活的作用切换达到了既完成了解码器预启动,又完成了解码器文件输出的双重作用。
具体地,所述创建离屏渲染表面对象如图3所示,包括:
S10131.创建离屏渲染环境。
具体地,所述离屏渲染环境通过eglCreatePbufferSurface的方式进行创建,eglCreatePbufferSurface属于扩展图形库中的接口。eglCreatePbufferSurface用于在内存中创建1个用于后台显示的框架缓冲区,其可以作为图片绘制的载体,通过设置其相关参数,比如绘图区形状,像素以及类型等来创建一个离屏渲染环境。
S10133.将所述离屏渲染环境绑定到目标纹理标识。
具体地,可以通过glBindTexture来实现,glBindTexture是OpenGL核心函数库中的一个函数。其允许建立一个绑定到目标纹理的有名称的纹理。一幅具有真实感的图像或者照片作为纹理贴到一个矩形上,就可以在定义纹理对象生成纹理对象数组后,通过使用glBindTexture选择纹理对象,来完成该纹理对象的定义。
具体地,所述目标纹理标识对应的目标纹理的类型为通过宏GL_TEXTURE_EXTERNAL_OES表征。纹理对象使用GL_TEXTURE_EXTERNAL_OES作为纹理目标,其是OpenGLES扩展GL_OES_EGL_image_external定义的。这种纹理目标会对纹理的使用方式造成一些限制。每次纹理绑定的时候,都要绑定到GL_TEXTURE_EXTERNAL_OES,而不是GL_TEXTURE_2D。而且,任何需要从纹理中采样的OpenGL ES 2.0shader都需要声明其对此扩展的使用,例如,使用指令”#extension GL_OES_EGL_image_external:require”。
其中,OpenGL ES(OpenGL for Embedded Systems)是开放图形库三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由图形软硬件行业协会Khronos集团定义推广,该协会主要关注图形和多媒体方面的开放标准。
S10135.基于所述目标纹理标识生成表面纹理对象。
S10137.基于所述表面纹理对象生成离线渲染纹理对象。
S1015.将离屏渲染表面对象传输至解码器。
S103.基于所述离屏渲染表面对象启动解码器。
本发明实施例中解码器需要在获取某个表面对象后才能够进行初始化启动,并且只有在初始化的过程中才能够为解码器设置对象,因此,解码器需要基于离屏渲染表面对象启动解码器,即解码器与离屏渲染表面对象构成了某种绑定关系。
在实际的播放阶段中,需要生成用于进行图形渲染的实际渲染表面对象,不同于现有技术中通过重启解码器的方式建立实际渲染表面对象与解码器绑定关系的技术方案,本发明实施例并不需要解除离屏渲染表面对象与解码器的绑定关系,而是保留离屏渲染表面对象并将其作为解码器得到的解码数据的存储器,通过离屏渲染表面对象与实际渲染表面对象的联合作用完成图形绘制。可见,本发明实施例避免了实际的播放阶段重启解码器带来的时间消耗。
在一个优选的实施例中,所述图形处理线程与预加载播放器的线程可以为不同线程,所述启动解码器由所述预加载播放器的线程执行,只需要在预加载播放器的线程启动解码器时能够获取到图形处理线程创建的离线渲染表面对象即可。
在一个优选的实施例中,所述基于所述离屏渲染表面对象启动解码器之前,如图4所示,还包括:
S10.读取视频文件。
具体地,所述读取视频文件的动作可以由播放器的数据读取器(DataReader)实现。
S30.将所述视频文件解封装并缓存解封装后得到的视频帧数据。
具体地,所述解封装动作可以有播放器的音视频分离器(Demuxer)来实现。
具体地,所述步骤S102和步骤S104可以在所述预加载播放器线程中执行。
请参考图5,其示出了本发明实施例中一种播放器预加载方法的示意图,其中虚线框部分为图形处理线程,实线框部分为预加载播放器的线程,通过两个线程的并行作用实现了解码器的启动和播放器的预加载。
本发明实施例中公开的一种播放器预加载方法在预加载播放器阶段通过扩展图形库来创建离屏渲染环境,进而得到离屏渲染表面对象,并通过离屏渲染表面对象触发解码器的启动。并且由于创建的离屏渲染表面对象基于离屏渲染环境,因此,其并不将图像显示出来,不会在实际播放过程过程中的产生显示问题,通过离屏渲染表面对象的创建建立了播放器与扩展图形库的联系,以便于在后续的实际播放过程中依托于离屏渲染表面对象渲染实际渲染表面对象。
进一步地,可以将包括离屏渲染表面对象创建在内的与图形处理有关的动作使用独立的图形处理线程执行,图形处理线程与现有的播放器的预加载逻辑之间解耦合,从而使得本发明实施例中的技术方案可以通用于Andorid系统上所有的播放器,包括系统播放器,兼容性比较强,对现有方案的改动较小。
在播放器预加载完成的基础上,本发明实施例公开了一种播放器运行方法,如图6所示,所述方法包括:
S201.响应于播放指令,创建视图对象。
具体地,所述视图对象可以选择纹理视图对象或表面视图对象,并将所述视图对象是设置于可显示的页面中。
S203.将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象。
具体地,所述图形处理线程以及图形处理线程中的离线渲染表面对象均在播放器预加载阶段实现。
S205.由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
所述视频帧数据可以在预加载阶段通过将视频文件解封装并缓存而得到。
具体地,所述创建视图对象、将所述视图对象传输至图形处理线程以及解码器解码的动作可以由播放器线程实施,播放器线程与图形处理线程的双线程设计可以最大限度保证本发明实施例中图形处理线程逻辑与播放器线程逻辑的解耦合,提升本发明实施例中播放器运行方法的兼容性。其中,所述播放器线程与预加载播放器的线程可以为同一个线程。
具体地,在播放器运行阶段,图形处理线程如图7所示,实施下述逻辑:
S1.释放离屏渲染环境,并基于所述视图对象创建实际渲染表面对象。
具体地,所述实际渲染表面对象可以通过扩展图形库的接口eglCreateWindowSurface创建。
S2.激活所述实际渲染表面对象。
具体地,所述激活所述实际渲染表面对象基于扩展图形库中的eglMakeCurrent接口实现。在完成扩展图形库的初始化之后,需要通过eglMakeCurrent函数来将当前的上下文切换,这样开发图形库中的函数才能启动作用。
eglMakeCurrent接口将实际渲染表面对象和播放器上下文进行了绑定。也就是说,从而使得实际渲染表面对象可以作为对播放器解码数据的渲染最终目的地,在所述实际渲染表面对象绘制的图形也可以被显示出来。
S3.响应于离屏渲染表面对象接收的解码数据,由实际渲染表面对象绘制所述解码数据。
在播放器预加载阶段解码器初始化过程中与离屏渲染表面对象建立了绑定关系,因此,当解码器输出的解码数据会导致离屏渲染表面对象中的数据被更新,即离屏渲染表面对象将作为解码数据的存储容器。
离屏渲染表面对象中数据的更新触发所述图形处理线程被回调,使得实际渲染表面对象可以绘制离屏渲染表面对象输出的解码数据。具体地,所述回调可以通过开放图形库中的onFrameAvailable接口实现。本发明实施例中使用回调作为基于离屏渲染表面对象中数据的更新来触发实际渲染表面对象绘制的优选方案,但不是唯一方案。
本发明实施例中提供的播放器运行方法可以直接使用播放器预加载阶段创建的图形处理线程以及离屏渲染表面对象,并且不需要进行解码器的重启。由此可知,在播放器预加载完成后,播放器就处于可播状态,用户需要播放的时候直接启动就可以做到瞬间启播,即待播出的图像瞬间上屏,这是现有技术中需要在播放阶段启动解码器而无法达到的技术效果。
请参考图8,其示出了播放器运行的示意图,其中虚线框部分为图形处理线程,实线框部分为播放器线程,通过两个线程的并行作用实现了播放。
本发明实施例中通过提出播放器预加载方法和运行方法实现了实现播放器的瞬间启播,而不用等待;可以极大的提升用户体验。同时该技术方案也同样适用于系统播放器,有强大的兼容性。其可以应用于多种场景,比如,在各种视频播放场景中,当用户处于某沉寂式播放体验中时,后台即可得到用户即将要观看的目标视频,从而使用本发明实施例提出的播放器预加载方法进行播放器准备,比如对目标视频进行解封装,并进行播放环境的准备,并在用户在当前视频结束要开始观看目标视频时实现目标视频的瞬时播放,其瞬间显示出图像的效果可以极大提升用户粘度。
本发明实施例提供了一种播放器预加载装置,如图9所示,所述装置包括:
图形处理线程创建模块301,用于创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放所述视频文件所生成的实际渲染表面对象中绘制所述解码数据;
解码器启动模块303,用于基于所述离屏渲染表面对象启动解码器。
具体地,本发明实施例所述一种播放器预加载装置与方法实施例均基于相同发明构思。
本发明实施例提供了一种播放器运行装置,如图10所示,所述装置包括:
视图对象创建模块401,用于响应于播放指令,创建视图对象;
视图对象传输模块403,用于将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;
解码模块405,用于由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
具体地,本发明实施例所述一种播放器运行装置与方法实施例均基于相同发明构思。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行本发明实施例所述的一种播放器预加载方法的各种步骤,具体执行过程包括:
创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放所述视频文件所生成的实际渲染表面对象中绘制所述解码数据;
基于所述离屏渲染表面对象启动解码器。
进一步地,所述基于所述离屏渲染表面对象启动解码器,包括:
读取视频文件;
将所述视频文件解封装并缓存解封装后得到的视频帧数据。
进一步地,还包括:
初始化开放图形库;
创建离屏渲染表面对象;
将离屏渲染表面对象传输至解码器。
进一步地,所述创建离屏渲染表面对象,包括:
创建离屏渲染环境;
将所述离屏渲染环境绑定到目标纹理标识;
基于所述目标纹理标识生成表面纹理对象;
基于所述表面纹理对象生成离线渲染纹理对象。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行本发明实施例所述的一种播放器运行方法的各种步骤,具体执行过程包括:
响应于播放指令,创建视图对象;
将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;
由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
进一步地,还包括:
释放离屏渲染环境,并基于所述视图对象创建实际渲染表面对象;
激活所述实际渲染表面对象;
响应于离屏渲染表面对象接收的解码数据,由实际渲染表面对象绘制所述解码数据。
进一步地,图11示出了一种用于实现本发明实施例所提供的方法的设备的硬件结构示意图,所述设备可以参与构成或包含本发明实施例所提供的装置。如图11所示,设备10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种播放器预加载方法或一种播放器运行方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种播放器预加载方法,其特征在于,所述方法包括:
在播放器预加载阶段,创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放视频文件所生成的实际渲染表面对象中绘制所述解码数据;其中,所述创建离屏渲染表面对象,包括:创建离屏渲染环境;将所述离屏渲染环境绑定到目标纹理标识;基于所述目标纹理标识生成表面纹理对象;基于所述表面纹理对象生成离线渲染纹理对象;
基于所述离屏渲染表面对象启动解码器。
2.根据权利要求1所述的方法,其特征在于,所述基于所述离屏渲染表面对象启动解码器之前,包括:
读取视频文件;
将所述视频文件解封装并缓存解封装后得到的视频帧数据。
3.根据权利要求1所述的方法,其特征在于,所述图形处理线程还用于执行下述步骤:
初始化开放图形库;
创建离屏渲染表面对象;
将离屏渲染表面对象传输至解码器。
4.一种播放器运行方法,其特征在于,包括:
响应于播放指令,创建视图对象;
将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;所述图形处理线程用于在播放器预加载阶段创建离屏渲染表面对象,所述创建离屏渲染表面对象包括:创建离屏渲染环境;将所述离屏渲染环境绑定到目标纹理标识;基于所述目标纹理标识生成表面纹理对象;基于所述表面纹理对象生成离线渲染纹理对象;
由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
5.根据权利要求4所述的方法,其特征在于,所述图形处理线程还用于执行下述步骤:
释放离屏渲染环境,并基于所述视图对象创建实际渲染表面对象;
激活所述实际渲染表面对象;
响应于离屏渲染表面对象接收的解码数据,由实际渲染表面对象绘制所述解码数据。
6.一种播放器预加载装置,其特征在于,所述装置包括:
图形处理线程创建模块,用于在播放器预加载阶段,创建图形处理线程,使用所述图形处理线程创建离屏渲染表面对象,所述离屏渲染表面对象用于输出由解码器解码得到的解码数据,以便于在为播放视频文件所生成的实际渲染表面对象中绘制所述解码数据;其中,所述创建离屏渲染表面对象,包括:创建离屏渲染环境;将所述离屏渲染环境绑定到目标纹理标识;基于所述目标纹理标识生成表面纹理对象;基于所述表面纹理对象生成离线渲染纹理对象;
解码器启动模块,用于基于所述离屏渲染表面对象启动解码器。
7.一种播放器运行装置,其特征在于,所述装置包括:
视图对象创建模块,用于响应于播放指令,创建视图对象;
视图对象传输模块,用于将所述视图对象传输至图形处理线程,以便于所述图形处理线程从所述视图对象中获取实际渲染表面对象,并基于离屏渲染表面对象输出的解码数据绘制所述实际渲染表面对象;所述图形处理线程用于在播放器预加载阶段创建离屏渲染表面对象,所述创建离屏渲染表面对象包括:创建离屏渲染环境;将所述离屏渲染环境绑定到目标纹理标识;基于所述目标纹理标识生成表面纹理对象;基于所述表面纹理对象生成离线渲染纹理对象;
解码模块,用于由解码器解码视频帧数据以得到解码数据以便于所述图形处理线程中的离屏渲染表面对象接收并输出所述解码数据。
8.一种电子设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-3任一项所述的一种播放器预加载方法和权利要求4-5中任一项所述的一种播放器运行方法。
9.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如权利要求1-3任一项所述的一种播放器预加载方法和权利要求4-5中任一项所述的一种播放器运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910408787.8A CN110147512B (zh) | 2019-05-16 | 2019-05-16 | 播放器预加载、运行方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910408787.8A CN110147512B (zh) | 2019-05-16 | 2019-05-16 | 播放器预加载、运行方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110147512A CN110147512A (zh) | 2019-08-20 |
CN110147512B true CN110147512B (zh) | 2022-12-20 |
Family
ID=67595417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910408787.8A Active CN110147512B (zh) | 2019-05-16 | 2019-05-16 | 播放器预加载、运行方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110147512B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110891178B (zh) * | 2019-10-29 | 2022-05-24 | 瑞芯微电子股份有限公司 | 一种视频实时渲染的方法和装置 |
CN111327695B (zh) * | 2020-02-13 | 2022-08-02 | 腾讯科技(深圳)有限公司 | 一种资源下载方法和相关装置 |
CN113411660B (zh) * | 2021-01-04 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 视频数据的处理方法、装置和电子设备 |
CN112950757B (zh) * | 2021-03-30 | 2023-03-14 | 上海哔哩哔哩科技有限公司 | 图像渲染方法及装置 |
CN113395572B (zh) * | 2021-06-15 | 2023-05-16 | 北京字跳网络技术有限公司 | 一种视频处理方法、装置、存储介质及电子设备 |
CN113411683B (zh) * | 2021-06-23 | 2022-07-22 | 北京奇艺世纪科技有限公司 | 一种视频播放方法及装置 |
CN113613064B (zh) * | 2021-07-19 | 2023-06-27 | 深圳Tcl新技术有限公司 | 视频处理方法、装置、存储介质及终端 |
CN113825014A (zh) * | 2021-09-10 | 2021-12-21 | 网易(杭州)网络有限公司 | 多媒体内容播放方法、装置、计算机设备和存储介质 |
CN117041668B (zh) * | 2023-10-08 | 2023-12-08 | 海马云(天津)信息技术有限公司 | 优化终端渲染性能的方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007015047A2 (en) * | 2005-08-04 | 2007-02-08 | Nds Limited | Advanced digital tv system |
CN102907110A (zh) * | 2010-01-07 | 2013-01-30 | 迪维克斯公司 | 用于媒体回放装置的基于实时Flash的用户界面 |
CN104202546A (zh) * | 2014-08-22 | 2014-12-10 | 湖南华凯文化创意股份有限公司 | Cave沉浸式虚拟显示系统与显示方法 |
US8928680B1 (en) * | 2012-07-10 | 2015-01-06 | Google Inc. | Method and system for sharing a buffer between a graphics processing unit and a media encoder |
CN105933724A (zh) * | 2016-05-23 | 2016-09-07 | 福建星网视易信息系统有限公司 | 视频制作方法、装置及系统 |
CN107249144A (zh) * | 2017-05-12 | 2017-10-13 | 北京小鸟看看科技有限公司 | 多媒体文件解码的方法、多媒体播放器和播放设备 |
CN107948735A (zh) * | 2017-12-06 | 2018-04-20 | 北京金山安全软件有限公司 | 一种视频播放方法、装置及电子设备 |
CN109194960A (zh) * | 2018-11-13 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种图像帧渲染方法、装置及电子设备 |
CN109218802A (zh) * | 2018-08-23 | 2019-01-15 | Oppo广东移动通信有限公司 | 视频处理方法、装置、电子设备及计算机可读介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9213556B2 (en) * | 2012-07-30 | 2015-12-15 | Vmware, Inc. | Application directed user interface remoting using video encoding techniques |
-
2019
- 2019-05-16 CN CN201910408787.8A patent/CN110147512B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007015047A2 (en) * | 2005-08-04 | 2007-02-08 | Nds Limited | Advanced digital tv system |
CN102907110A (zh) * | 2010-01-07 | 2013-01-30 | 迪维克斯公司 | 用于媒体回放装置的基于实时Flash的用户界面 |
US8928680B1 (en) * | 2012-07-10 | 2015-01-06 | Google Inc. | Method and system for sharing a buffer between a graphics processing unit and a media encoder |
CN104202546A (zh) * | 2014-08-22 | 2014-12-10 | 湖南华凯文化创意股份有限公司 | Cave沉浸式虚拟显示系统与显示方法 |
CN105933724A (zh) * | 2016-05-23 | 2016-09-07 | 福建星网视易信息系统有限公司 | 视频制作方法、装置及系统 |
CN107249144A (zh) * | 2017-05-12 | 2017-10-13 | 北京小鸟看看科技有限公司 | 多媒体文件解码的方法、多媒体播放器和播放设备 |
CN107948735A (zh) * | 2017-12-06 | 2018-04-20 | 北京金山安全软件有限公司 | 一种视频播放方法、装置及电子设备 |
CN109218802A (zh) * | 2018-08-23 | 2019-01-15 | Oppo广东移动通信有限公司 | 视频处理方法、装置、电子设备及计算机可读介质 |
CN109194960A (zh) * | 2018-11-13 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种图像帧渲染方法、装置及电子设备 |
Non-Patent Citations (5)
Title |
---|
A flexible processor architecture for MPEG-4 image compositing;Berekovic, M等;《PROCEEDINGS OF THE 1998 IEEE INTERNATIONAL CONFERENCE ON ACOUSTICS, SPEECH AND SIGNAL PROCESSING, VOLS 1-6》;19980101;第3153-3156页 * |
Selective frame dropping based on hypothetical reference decoder buffer model for initial buffering delay reduction;Deshpande, Sachin;《MULTIMEDIA ON MOBILE DEVICES 2008》;20080101;第1-9页 * |
基于Android平台远程视频监控加密的设计与实现;何张和;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170415;I136-172 * |
基于GPU的高清游戏视频实时编解码技术的研究;姜鑫;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150815;I136-323 * |
面向Android移动设备的多媒体协作显示研究;杨静;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150215;I136-533 * |
Also Published As
Publication number | Publication date |
---|---|
CN110147512A (zh) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147512B (zh) | 播放器预加载、运行方法、装置、设备及介质 | |
US11868785B2 (en) | Application program page processing method and device | |
JP7101780B2 (ja) | App遠隔制御方法及び関連するデバイス | |
CN103345405B (zh) | 应用程序的启动方法、装置和客户端 | |
CN103617027B (zh) | 基于安卓系统的图像渲染引擎构建方法及系统 | |
US10860303B2 (en) | Selective operating system patching/updating | |
CN107748687B (zh) | 一种对智能设备开机显示画面进行控制的方法及智能设备 | |
CN107301038B (zh) | 应用生产设备、系统、方法和非临时性计算机可读媒介 | |
WO2022007724A1 (zh) | 视频处理方法、装置、设备及存储介质 | |
KR20230164234A (ko) | 애플리케이션을 위한 페이지 디스플레이의 방법, 기기 및 전자 장치 | |
CN111522620B (zh) | 基于双进程hmi的快速显示和高渲染帧率全液晶仪表 | |
CN111679738B (zh) | 一种屏幕切换方法、装置、电子设备及存储介质 | |
CN112291590A (zh) | 视频处理方法及设备 | |
TWI441091B (zh) | 借助圖形處理單元執行影像信號處理的方法以及用於執行影像信號處理的裝置 | |
US20170171277A1 (en) | Method and electronic device for multimedia recommendation based on android platform | |
CN112190943A (zh) | 游戏展示方法及装置、处理器、电子设备 | |
CN114710702A (zh) | 一种视频的播放方法和装置 | |
Lee et al. | A-mash: providing single-app illusion for multi-app use through user-centric UI mashup | |
CN113079408A (zh) | 视频播放方法、装置和系统 | |
CN107145322A (zh) | 组态串口屏及其实现方法 | |
CN112799801A (zh) | 一种模拟鼠标指针绘制方法、装置、设备和介质 | |
CN116962813A (zh) | 一种yuv数据渲染系统及方法、电子设备和存储介质 | |
CN113825022B (zh) | 一种播放控制状态检测方法、装置、存储介质及电子设备 | |
CN114598920B (zh) | 一种视频播放控制方法、装置、设备以及存储介质 | |
CN114820318A (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 |