视频播放器优化方法、装置、播放终端及存储介质与流程

文档序号:17431067发布日期:2019-04-17 03:30阅读:576来源:国知局
视频播放器优化方法、装置、播放终端及存储介质与流程

本发明属于电视技术领域,尤其涉及一种视频播放器优化方法、装置、播放终端及存储介质。



背景技术:

随着电视机智能化和多元化快速发展,android系统在电视领域开始大量使用。视频播放器是电视多媒体部分的核心,android原生的播放器解码效率较低,视频播放质量不高。当前,android原生播放器通过omx(openmax,多媒体应用程序的标准)调用音视频解码器进行解码播放,但是这种解码方法支持的音视频格式较少。尤其是现在主流电视机屏体的物理分辨率已经达到3840x2160,使用android原生播放器解码播放4k高码率的码流会出现卡顿、花屏、重启等问题。并且视频播放不支持快进快退、字幕显示、字幕字体大小、字幕颜色等设置功能,无法满足客制化要求。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种视频播放器优化方法,旨在解决采用android原生的播放器播放高码率的码流会出现卡顿、花屏、重启等问题,且不支持快进快退,字幕显示,设置字幕字体大小以及颜色等功能的技术问题。

为了实现上述目的,本发发明提供一种视频播放器优化方法,所述视频播放器优化方法包括以下步骤:

基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令;

视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器;

视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放。

可选地,所述视频播放器包括多媒体播放器和多媒体播放器服务层;

所述视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器的步骤包括:

多媒体播放器服务层的函数文件中定义各个类型的播放器的枚举值;

多媒体播放器服务层的函数文件中,将选择的播放器类型赋值为芯片扩展定义的硬解码播放器的枚举值;

多媒体播放器基于所述播放指令调用多媒体播放器服务层,以实现调用所述硬解码播放器。

可选地,所述视频播放器还包括硬解码播放器管理层;

所述视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放的步骤之前还包括:

多媒体播放器获取扩展功能的执行参数;

硬解码播放器管理层调用硬解码播放器的功能执行函数;

多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能。

可选地,所述多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能的步骤包括:

多媒体播放器基于所述功能执行函数根据所述执行参数,确定待调用的目标扩展功能;

多媒体播放器基于所述功能执行函数调用功能类文件中所述目标扩展功能的执行命令进行处理,以实现扩展功能。

可选地,所述多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能的步骤之前还包括:

视频播放器基于播放插件从芯片中获取扩展功能定义的功能类文件。

可选地,所述多媒体播放器获取扩展功能的执行参数的步骤包括:

多媒体播放器获取播放插件调用多媒体播放器的标准接口的调用指令;

基于所述调用指令,所述标准接口获取扩展功能的执行参数。

可选地,所述基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令的步骤包括:

视频播放器界面接收到文件浏览界面基于接收用户的操作指令发送的待播放文件位置后,启动视频播放器并获取待播放文件位置;

视频播放器界面根据所述待播放文件位置,向多媒体服务层发送获取待播放文件的获取指令;

视频播放器界面获取多媒体服务层基于所述获取指令反馈的待播放文件以及播放指令。

此外,为实现上述目的,本发明还提供一种视频播放器优化装置,其特征在于,所述视频播放器优化装置包括:

获取模块,用于基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令;

调用模块,用于视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器;

硬解码模块,用于视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放。

此外,为实现上述目的,本发明还提供一种播放终端,所述播放终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的视频播放器优化程序,所述视频播放器优化程序被所述处理器执行时实现如上所述的视频播放器优化方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有视频播放器优化程序,所述视频播放器优化程序被处理器执行时实现如上所述的视频播放器优化方法的步骤。

本发明实施例提出的一种视频播放器优化方法,通过视频播放器的多媒体播放器服务层选择芯片定义的硬解码播放器,采用硬解码播放器对待播放的视频文件进行gpu硬解码播放。基于android原生播放器的标准接口进行功能扩展,视频播放还可以支持快进快退、字幕显示、字幕字体大小以及颜色等设置功能,满足客制化需求。避免了采用android原生播放器的音视频解码器进行解码播放,当待播放视频文件的码率过高时,会出现卡顿、花屏、重启等问题,提高了视频文件的播放质量。同时也避免了采用android原生播放器视频播放不支持快进快退、字幕显示、设置字幕字体大小以及颜色等设置功能的问题。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的播放终端结构示意图;

图2为本发明视频播放器优化方法第一实施例的流程示意图;

图3为播放终端播放过程的界面调用的示意图;

图4为本发明视频播放器优化方法客户端和服务端中各层调用关系的示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案是:基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令;视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器;视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放。

由于现有技术中,使用android原生的播放器解码播放4k高码率的码流会出现卡顿、花屏、重启等问题,android原生的播放器视频播放不支持快进快退、字幕显示、字幕字体大小、字幕颜色等设置功能,无法满足客制化要求。

本发明提供一种解决方案,通过视频播放器的多媒体播放器服务层选择芯片定义的硬解码播放器,采用硬解码播放器对待播放的视频文件进行gpu硬解码播放。基于android原生播放器的标准接口进行功能扩展,视频播放可以支持快进快退、字幕显示、字幕字体大小以及颜色等设置功能,满足客制化需求。避免了采用android原生播放器的音视频解码器进行解码播放,当待播放视频文件的码率过高时,会出现卡顿、花屏、重启等问题,提高了视频文件的播放质量。同时也避免了采用android原生播放器视频播放不支持快进快退、字幕显示、设置字幕字体大小以及颜色等设置功能的问题。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的播放终端结构示意图。

如图1所示,本发明实施例播放终端可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,播放终端还可以包括摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块等等。其中,传感器比如红外传感器、光传感器、运动传感器以及其他传感器。当然,播放终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的播放终端结构并不构成对播放终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及视频播放器优化程序。

在图1所示的播放终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的视频播放器优化程序,并执行以下操作:

基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令;

视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器;

视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放。

进一步地,所述视频播放器包括多媒体播放器和多媒体播放器服务层;

所述视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器的步骤包括:

多媒体播放器服务层的函数文件中定义各个类型的播放器的枚举值;

多媒体播放器服务层的函数文件中,将选择的播放器类型赋值为芯片扩展定义的硬解码播放器的枚举值;

多媒体播放器基于所述播放指令调用多媒体播放器服务层,以实现调用所述硬解码播放器。

进一步地,所述视频播放器还包括硬解码播放器管理层;所述视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放的步骤之前,处理器1001可以调用存储器1005中存储的视频播放器优化程序,还执行以下操作:

多媒体播放器获取扩展功能的执行参数;

硬解码播放器管理层调用硬解码播放器的功能执行函数;

多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能。

进一步地,所述多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能的步骤包括:

多媒体播放器基于所述功能执行函数根据所述执行参数,确定待调用的目标扩展功能;

多媒体播放器基于所述功能执行函数调用功能类文件中所述目标扩展功能的执行命令进行处理,以实现扩展功能。

进一步地,所述多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能的步骤之前,处理器1001可以调用存储器1005中存储的视频播放器优化程序,还执行以下操作:

视频播放器基于播放插件从芯片中获取扩展功能定义的功能类文件。

进一步地,所述多媒体播放器获取扩展功能的执行参数的步骤包括:

多媒体播放器获取播放插件调用多媒体播放器的标准接口的调用指令;

基于所述调用指令,为所述标准接口获取扩展功能的执行参数。

进一步地,所述基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令的步骤包括:

视频播放器界面接收到文件浏览界面基于接收用户的操作指令发送的待播放文件位置后,启动视频播放器并获取待播放文件位置;

视频播放器界面根据所述待播放文件位置,向多媒体服务层发送获取待播放文件的获取指令;

视频播放器界面获取多媒体服务层基于所述获取指令反馈的待播放文件以及播放指令。

基于上述硬件结构,提出本发明方法实施例。

参照图2,在本发明视频播放器优化方法第一实施例中,视频播放器优化方法包括:

步骤s10,基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令;

为了方便理解,可进一步参照图3和图4,图3为播放终端播放过程的界面调用的示意图本发明实施例中的播放终端为android系统的播放终端,播放终端包括文件浏览界面和视频播放器界面,以及多媒体服务层。其中,文件浏览界面是单独的一个android应用程序,文件浏览界面是视频播放器界面的入口;文件浏览界面的作用是让用户选择视频文件,并传递相应的值给视频播放器界面,以启动视频播放器。视频播放器界面也是单独的一个android应用程序,视频播放器界面的启动由文件浏览界面完成。视频播放器界面和文件浏览界面之间的通信通过intent的putextra方式实现。多媒体服务层为播放终端的后台服务程序,用于服务视频播放器播放视频文件。视频播放器启动后从多媒体服务层获取待播放文件,接收多媒体服务层的播放指令。

如图4所示,其中,客户端与服务端之间通过binder建立通信,binder的实现模式是基于cs(客户端—服务端)的调用模式,所以可以简单的将binder理解为连接客户端进程与服务端进程的接口。使用android原生播放器,多媒体播放器服务层就会通过nuplayer或者stagefright调用omx接口进行音视频解码,最后输出音视频;基于android原生播放器的标准接口进行扩展改造,就会使用芯片扩展定义的硬解码播放器对音视频进行硬解码播放,图4中多媒体播放器服务层通过himediaplayermanage(即硬解码播放器管理层)调用硬解码播放器进行音视频解码播放;硬解码播放器是以so库的方式发布的,在lib目录下有

libha.audio.ffmpeg_adec.decode.so,libhv.video.ffmpeg_vdec.decode.so,libffmpegformat.so,这些都是ffmpeg硬解码库文件,libhiplayer_utils.so,libplayer.so等是硬解码播放器相关的库文件。硬解码播放器使用ffmpeg硬解码库进行音视频硬解码,因为ffmpeg本身注册了很多解码器,所以支持很多的音视频编码格式,比android原生播放器支持的音视频格式要多。此外使用ffmpeg硬解码,执行效率高,尤其是播放高码率的码流时,在播放过程中基本不会出现卡顿,花屏,重启等问题;而使用android原生播放器在播放过程中会出现卡顿,花屏,重启等问题。

可选地,步骤s10包括:

步骤s11,视频播放器界面接收到文件浏览界面基于接收用户的操作指令发送的待播放文件位置后,启动视频播放器并获取待播放文件位置;

具体地,用户选择需要播放的视频后,用户选择需要播放的视频即待播放文件,文件浏览界面首先是将用户选择的、存储设备当前路径下的视频文件添加到播放列表,播放列表添加到多媒体服务层,播放列表由多媒体服务层保存、维护以及控制。文件浏览界面会传递一个当前文件的文件列表位置到视频播放器界面,视频播放器界面启动并接收当前文件的文件列表位置;文件浏览界面传递到视频播放器界面的当前文件的文件列表位置即待播放文件位置。文件浏览界面将选中的视频文件所在列表的位置index通过putextra方法附加到intent,最后文件浏览界面通过startactivity的方式启动视频播放器。

步骤s12,视频播放器界面根据待播放文件位置,向多媒体服务层发送获取待播放文件的获取指令;

视频播放器界面启动并接收当前文件的文件列表位置,即视频播放器界面接收到文件浏览界面传递的播放文件位置后,向多媒体服务层发送获取待播放文件的获取指令。具体地,视频播放器界面调用多媒体服务层的播放方法,多媒体服务层进一步调用视频播放plugin的播放方法;在视频播放plugin的播放方法中通过回调方式调用待播放文件。

具体地,视频播放器界面调用多媒体服务层的play(intmediaindex)方法,多媒体服务层会去调用视频播放plugin,如果plugin是视频播放的plugin,则继续调用plugin里面的play(stringurl)方法;在plugin里面的play(stringurl)方法,通过回调的方式去调用videoplaylistener.begin(videopath),告诉多媒体服务层视频即将开始播放。

plugin,译为插件,是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能。应用程序支持plugin有许多原因,一些主要原因包括:使得第三方开发者有能力扩展应用程序,以提供无法先期预料的特色;减小应用程序的大小;由于软件版权之间的不兼容性将源代码和应用程序分享。

步骤s13,视频播放器界面获取多媒体服务层基于获取指令反馈的待播放文件以及播放指令。

多媒体服务层在接收到获取待播放文件的获取指令后,向视频播放器界面反馈待播放文件并发出播放指令;视频播放器界面接收多媒体服务层反馈的待播放文件,准备开始播放视频。

具体地,多媒体服务层在被回调begin(stringurl)后,会发送一个bct_mediaplayer_begin广播出来,通知其它应用,视频即将开始播放。视频播放器界面会接收多媒体服务层发出的广播,准备开始播放视频。

在本发明实施例中,视频播放器界面通过接收文件浏览界面发送的待播放文件位置来启动视频播放器,并根据待播放文件位置从多媒体服务层获取待播放文件以及播放指令,使得视频播放器界面可以快速启动,并可以根据根据待播放文件位置从多媒体服务层快速获取到待播放文件进行播放;保证了视频播放器界面的正常启动并进行音视频的播放。

步骤s20,视频播放器根据播放指令调用芯片扩展定义的硬解码播放器;

其中,视频播放器包括视频播放器界面。视频播放器界面接收到多媒体服务层反馈的待播放文件和播放指令后,调用芯片扩展定义的硬解码播放器。其中,芯片定义了硬解码播放器。具体地,首先通过更改framework的框架逻辑实现对播放终端的播放器进行切换,切换成芯片定义的硬解码播放器,采用硬解码播放器实现gpu硬解码播放,而不使用android原生的omx(openmax,多媒体应用程序的标准)调用音视频解码器进行解码播放。

可选地,视频播放器包括多媒体播放器和多媒体播放器服务层;步骤s20包括:

步骤s21,多媒体播放器服务层的函数文件中定义各个类型的播放器的枚举值;

在本发明实施例中,多媒体播放器指android原生播放器。多媒体播放器服务层的函数文件中通过枚举的方式,将一个或多个类型的播放器定义为一个或多个枚举值。其中,一个或多个类型的播放器中包括硬解码播放器,硬解码播放器被赋予了一个枚举值。

步骤s22,多媒体播放器服务层的函数文件中,将选择的播放器类型赋值为芯片扩展定义的硬解码播放器的枚举值;

多媒体播放器服务层的函数文件中,在播放器的调用函数中将调用的播放器类型赋值为硬解码播放器的枚举值,从而实现将播放器切换为硬解码播放器。

步骤s23,多媒体播放器基于播放指令调用多媒体播放器服务层,以实现调用硬解码播放器。

视频播放器界面接收到多媒体服务层反馈的待播放文件和播放指令后,多媒体播放器调用多媒体播放器服务层,通过多媒体播放器服务层调用硬解码播放器。

为了方便理解,举例进行说明。例如,多媒体播放器使用了nu_player,选择何种播放器是在framework层的mediaplayerservice.cpp文件内,mediaplayerservice::decode函数定义里面通过调用函数mediaplayerfactory::getplayertype()对playertype进行赋值,playertype是一个枚举类型,其内容如下:

enumplayer_type{

pv_player=1,

sonivox_player=2,

stagefright_player=3,

nu_player=4,

test_player=5,

himedia_player=6,

};

其中,himedia_player=6是新增加的枚举,为硬解码播放器;而在此playertype将赋值成himedia_player,从而实现将播放器切换为硬解码播放器。android启动时会将各个mediaplayertype注册到mediaplayerfactory里面在启动视频播放的时候,在调用setdatasource的时候,会去获取播放器类型;如果没有明确指定player的type这个时候会遍历在mediaplayerfactory里面注册的每个player的scorefactory函数,得分最高的为当前播放视频使用的播放器,从目前代码设置来看,himediaplayer里面设定的score最高为1.0,目前基本上默认的播放器都是himediaplayer。

在本发明实施例中,通过多媒体播放器服务层的函数文件中定义各个类型的播放器的枚举值;并将选择的播放器类型赋值为芯片扩展定义的硬解码播放器的枚举值,从而实现将多媒体播放器切换成硬解码播放器,进而可以采用硬解码播放器对待播放文件进行gpu硬解码播放,避免了采用android原生播放器进行解码播放,解决了播放终端播放高码率的码流会出现卡顿、花屏、重启等问题。

步骤s30,视频播放器采用硬解码播放器对待播放文件进行硬解码播放。

视频播放器通过多媒体播放器服务层调用硬解码播放器后,采用硬解码播放器对待播放文件进行gpu硬解码播放。

在本实施例中,通过将多媒体播放器的解码播放方式切换为硬解码播放方式进行硬解码播放,具体地,在解码过程将多媒体播放器切换为芯片扩展定义的硬解码播放器,采用硬解码播放器对待播放文件进行gpu硬解码播放,而不采用多媒体播放器的omx调用音视频解码器进行解码播放;避免了采用多媒体播放器解码播放,播放高码率的码流会出现卡顿、花屏、重启等问题。采用硬解码播放器进行硬解码播放还可以支持多种不同音视频格式,极大地提高了播放终端的音视频播放质量;同时采用硬解码播放器进行硬解码播放可以进一步扩展快进快退、字幕显示、字幕字体大小、字幕颜色等设置功能,满足客制化需求。

进一步地,基于上述图2所示的实施例,在本发明视频播放器优化方法第二实施例中,视频播放器还包括硬解码播放器管理层;步骤s20之后,步骤s30之前还包括:

步骤s40,多媒体播放器获取扩展功能的执行参数;

用户可以通过操作对视频播放器界面正在播放的音视频进行播放设置,如快进快退、字幕显示、字幕字体大小、字幕颜色等扩展功能的设置。多媒体播放器的标准接口获取基于用户操作生成的扩展功能的执行参数。其中,执行参数,是指基于用户操作自动生成的参数值。

可选地,可选地,步骤s40包括:

步骤s41,多媒体播放器获取播放插件调用多媒体播放器的标准接口的调用指令;

在本发明实施例中,基于android原生播放器的标准接口进行功能扩展,是基于播放插件完成的。播放插件的java文件直接获取芯片中扩展定义的功能类文件、并调用多媒体播放器的标准接口,调用多媒体播放器的标准接口用于传递扩展功能的执行参数、并对执行参数进行处理。在播放插件的java文件的方法函数中,向多媒体播放器发出调用多媒体播放器的标准接口的调用指令,多媒体播放器获取播放插件的调用指令。

步骤s42,基于调用指令,为标准接口获取扩展功能的执行参数。

多媒体播放器获取播放插件的调用指令后,基于多媒体播放器的标准接口获取扩展功能的执行参数,以便进一步在多媒体播放器的标准接口上对执行参数进行处理实现对应的扩展功能。

在本发明实施例中,基于播放插件调用多媒体播放器的标准接口,通过多媒体播放器的标准接口获取用户操作生成的执行参数,使得播放终端可以获取到用户设置快进快退、字幕显示、字幕字体大小、字幕颜色等扩展功能时生成的执行参数,进而对扩展功能的执行参数进行处理,从而使播放终端可以实现快进快退、字幕显示、字幕字体大小、字幕颜色等扩展功能,用户可以根据需求选择对播放的视频进行播放设置,满足客制化的需求,提高用户体验。

步骤s50,硬解码播放器管理层调用硬解码播放器的功能执行函数;

具体地,在frameworks\av\media\libmediaplayerservice\himediaplayer\目录下有himediaplayermanage.h以及himediaplayermanage.cpp。基于多媒体播放器的标准接口进行功能扩展himediaplayermanage.h以及himediaplayermanage.cpp这两个文件,硬解码播放器管理层通过himediaplayermanage.h以及himediaplayermanage.cpp这两个文件去调用硬解码播放器的himediaplayer.cpp里面的功能执行函数doinvoke函数。

步骤s60,多媒体播放器基于功能执行函数,根据执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能。

其中,功能类文件为芯片中定义的包含多个功能接口的文件。

多媒体播放器的标准接口获取基于用户操作生成的扩展功能的执行参数后,通过硬解码播放器管理层调用的硬解码播放器的功能执行函数,利用功能执行函数确定该执行参数对应的扩展功能;然后通过硬解码播放器管理层调用的硬解码播放器的功能执行函数,利用功能执行函数从功能类文件中获取对应的扩展功能的执行命令,对执行命令进行处理,实现对应的扩展功能。

为了方便理解,举例进行说明。例如,用户在视频播放器界面对正在播放的视频进行“快进”操作,多媒体播放器的标准接口将接收到基于用户操作生成的快进的执行参数。基于多媒体播放器的标准接口进行扩展,调用硬解码播放器的功能执行函数,功能执行函数对功能类文件中“快进”功能的执行命令进行处理,进而实现快进功能。

在本发明实施例中,通过多媒体播放器的标准接口获取扩展功能的执行参数、硬解码播放器管理层调用硬解码播放器的功能执行函数,并基于功能执行函数,根据执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能。保证播放终端的播放质量的同时,视频播放器界面可以根据快进快退、字幕显示、字幕字体大小、字幕颜色等用户设置生成的执行参数,获取不同的执行命令进行处理实现对应的扩展功能。从而使播放终端可以实现快进快退、字幕显示、字幕字体大小、字幕颜色等扩展功能,用户可以根据需求选择对播放的音视频进行播放设置,满足客制化的需求,提高了用户体验。

可选地,步骤s40之后,步骤s60之前还包括:

步骤s70,视频播放器基于播放插件从芯片中获取扩展功能定义的功能类文件。

从功能类文件中获取对应的扩展功能的执行命令之前,需要获取功能类文件,才能使用功能类文件中对应的扩展功能的执行命令进行处理。视频播放器基于播放插件从芯片中获取定义的功能类文件,功能类文件中包含了多个功能接口。

在本实施例中,多媒体播放器的标准接口获取扩展功能的执行参数,并在多媒体播放器的标准接口上对执行参数进行处理实现对应的扩展功能;整个过程实际为:播放插件的java文件直接获取芯片中扩展定义的功能类文件、并调用多媒体播放器的标准接口,调用多媒体播放器的标准接口用于传递扩展功能的执行参数、并对执行参数进行处理。

具体地,播放插件中的java文件直获取功能类文件,如:importcom.hisilicon.android.himediaplayer.himediaplayerinvoke,进而获取各个扩展功能的执行命令;在播放插件对应的方法函数里面通过调用多媒体播放器的标准接口,进而传递扩展功能的执行参数;然后,在多媒体播放器的标准接口上根据执行参数获取执行命令进行处理;最后,按照多媒体播放器的播放流程执行,解码待播放文件时,将多媒体播放器切换为硬解码播放器解码。device\hisilicon\bigfish\frameworks\himediaplayer\java\com\hisilicon\android\himediaplayer\himediaplayerinvoke.java(功能类文件)里面定义了硬解码播放器提供的功能接口,通过调用这些功能接口可以实现一些android原生播放器(多媒体播放器)不支持的接口功能,例如字幕解析和显示,打开或关闭字幕,设置字幕字体大小以及颜色,快进快退等。这些新增的功能是基于android原生播放器(多媒体播放器)的标准接口进行的扩展,在frameworks\av\media\libmediaplayerservice\himediaplayer\目录下有himediaplayermanage.h以及himediaplayermanage.cpp两个文件,himediaplayermanage.h以及himediaplayermanage.cpp这两个文件基于android原生播放器(多媒体播放器)的标准接口进行扩展,通过这两个文件可以调用himediaplayer.cpp文件里面的doinvoke函数,doinvoke函数会对播放插件的java文件调用的android原生播放器(多媒体播放器)的标准接口传递的执行参数进行处理,再调用主芯片的硬解码播放器使用底层解码器对音视频进行gpu硬解码,最后输出音视频。

在本发明实施例中,视频播放器基于播放插件从芯片中获取扩展功能定义的功能类文件,使得视频播放器可以根据不同的执行参数从功能类文件中获取不同执行命令进行处理,从而实现不同的扩展功能,用户可以根据使用习惯和需求对播放的视频进行播放设置,满足不同用户的播放设置需求,提高了用户体验。

进一步地,基于上述图2所示的实施例,在本发明视频播放器优化方法第三实施例中,步骤s60包括:

步骤s61,多媒体播放器基于功能执行函数根据执行参数,确定待调用的目标扩展功能;

多媒体播放器的标准接口获取基于用户操作生成的扩展功能的执行参数后,通过硬解码播放器管理层调用的硬解码播放器的功能执行函数,基于功能执行函数确定该执行参数对应的目标扩展功能。例如,若用户进行“快进”操作,则在播放终端生成执行参数,通过硬解码播放器管理层调用的硬解码播放器的功能执行函数,基于功能执行函数确定执行参数对应的目标扩展功能为“快进”。若用户进行“字幕显示”操作,则在播放终端生成执行参数,通过硬解码播放器管理层调用的硬解码播放器的功能执行函数,基于功能执行函数确定执行参数对应的目标扩展功能为“字幕显示”。

步骤s62,多媒体播放器基于功能执行函数调用功能类文件中目标扩展功能的执行命令进行处理,以实现扩展功能;

然后,多媒体播放器通过硬解码播放器管理层调用的硬解码播放器的功能执行函数,利用功能执行函数获取功能类文件中对应的扩展功能的执行命令。例如,若目标扩展功能为“快进”,则利用功能执行函数获取功能类文件中扩展功能为“快进”对应的执行命令。若目标扩展功能为“字幕显示”,则利用功能执行函数从功能类文件中获取扩展功能为“字幕显示”对应的执行命令。

在多媒体播放器的标准接口上,对目标扩展功能的执行命令进行处理,实现对应的扩展功能。例如,若目标扩展功能为“快进”,则利用功能执行函数从功能类文件中获取扩展功能为“快进”对应的执行命令,对“快进”的执行命令进行处理,从而实现“快进”这个扩展功能。若目标扩展功能为“字幕显示”,则利用功能执行函数从功能类文件中获取扩展功能为“字幕显示”对应的执行命令,对“字幕显示”的执行命令进行处理,从而实现“字幕显示”这个扩展功能。其中,字幕分为文本字幕(外挂字幕)与图形字幕(内嵌字幕)两种。首先要判断当前片源是否有字幕,如果有字幕就要区分是文本字幕还是图形字幕,这两种字幕处理方法是不一样的。图形字幕全部由硬解码播放器来显示。针对文本字幕的显示,通过:

himediaplayerinvoke.cmd_set_sub_mode

这个cmd(即执行命令)可以选择字幕到底是在硬解码播放器中显示还是回传给上层app显示。选择“模式1”为硬解码播放器显示,“模式0”为硬解码播放器回传字幕给app,由app自己显示。默认为“模式0”,也就是文本字幕送给app显示。如果需要硬解码播放器显示字幕,则需要将字幕显示模式切换为“模式1”。设置字幕显示模式的invoke接口(即功能接口)在prepare之前调用。

具体地,功能类文件里面定义的功能接口,如下:

publicfinalstaticintcmd_set_audio_track_pid=cmd_invoke_base+12;//设置音轨

publicfinalstaticintcmd_set_stop_fastplay=cmd_invoke_base+199;//设置快进

publicfinalstaticintcmd_set_forword=cmd_invoke_base+200;//设置快退

publicfinalstaticintcmd_set_sub_font_size=cmd_invoke_base+104;//设置字幕字体大小

publicfinalstaticintcmd_set_sub_font_color=cmd_invoke_base+114;//设置字幕字体颜色

publicfinalstaticintcmd_set_sub_enable=cmd_invoke_base+135;//打开或关闭字幕

以接口功能为设置音轨为例,对应的代码实现如下:

以上是实现设置音轨的代码实现,其它扩展功能只是对应的功能接口不一样,但都会通过调用播放插件的方法函数来实现对应的扩展功能。播放插件调用多媒体播放器的标准接口(即标准invoke接口):

status_tinvoke(constparcel&request,parcel*reply)

这些扩展的功能接口都是调用invoke接口,android层之间的数据传输用的是parcel。简单点来说,parcel就是一个存放读取数据的容器,android系统中的binder进程间通信(ipc)就使用了parcel类来进行客户端与服务端数据的交互,而且aidl(androidinterfacedefinitionlanguage,android接口定义语言)的数据也是通过parcel来交互的。在java空间和c++都实现了parcel,由于parcel在c/c++中,直接使用了内存来读取数据,因此,parcel更有效率。

在本发明实施例中,根据用户设置生成的执行参数,确定用户设置的扩展功能,并获取对应的执行命令实现对用户设置的扩展功能;从而准确地确定用户设置的扩展功能,并实现用户设置的扩展功能、按照用户设置的扩展功能输出音视频,满足了客户对音视频的播放设置要求,提高了用户体验。

此外,本发明实施例还提出一种视频播放器优化装置,视频播放器优化装置包括:

获取模块,用于基于播放终端的文件浏览界面接收用户的操作指令,视频播放器界面从多媒体服务层中获取待播放文件以及播放指令;

调用模块,用于视频播放器根据所述播放指令调用芯片扩展定义的硬解码播放器;

硬解码模块,用于视频播放器采用所述硬解码播放器对所述待播放文件进行硬解码播放。

可选地,调用模块还用于:

多媒体播放器服务层的函数文件中定义各个类型的播放器的枚举值;

多媒体播放器服务层的函数文件中,将选择的播放器类型赋值为芯片扩展定义的硬解码播放器的枚举值;

多媒体播放器基于所述播放指令调用多媒体播放器服务层,以实现调用所述硬解码播放器。

可选地,视频播放器优化装置包括扩展功能模块,扩展功能模块用于:

多媒体播放器获取扩展功能的执行参数;

硬解码播放器管理层调用硬解码播放器的功能执行函数;

多媒体播放器基于所述功能执行函数,根据所述执行参数从功能类文件中获取对应的扩展功能的执行命令进行处理,以实现扩展功能。

可选地,模块还用于:

多媒体播放器基于所述功能执行函数根据所述执行参数,确定待调用的目标扩展功能;

多媒体播放器基于所述功能执行函数调用功能类文件中所述目标扩展功能的执行命令进行处理,以实现扩展功能。

可选地,扩展功能模块还用于:

视频播放器基于播放插件从芯片中获取扩展功能定义的功能类文件。

可选地,扩展功能模块还用于:

多媒体播放器获取播放插件调用多媒体播放器的标准接口的调用指令;

基于所述调用指令,为所述标准接口获取扩展功能的执行参数。

可选地,获取模块还用于:

视频播放器界面接收到文件浏览界面基于接收用户的操作指令发送的待播放文件位置后,启动视频播放器并获取待播放文件位置;

视频播放器界面根据所述待播放文件位置,向多媒体服务层发送获取待播放文件的获取指令;

视频播放器界面获取多媒体服务层基于所述获取指令反馈的待播放文件以及播放指令。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有视频播放器优化程序,所述视频播放器优化程序被处理器执行时实现如上所述的视频播放器优化方法的步骤。

本发明存储介质具体实施方式可以参照上述视频播放器优化方法各实施例,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台播放终端设备(可以是电视,手机,计算机等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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