本发明涉及信息技术领域,尤其涉及一种播放多媒体文件的方法及装置。
背景技术:
多媒体文件的封装格式包括MP4、MOV、FLV、AVI、MKV、RMVB和F4V等。针对不同的封装格式,其编码规则和文件封装协议存在诸多不同。
多媒体文件通常按照不同的封装协议进行基本媒体单元的封装。例如,FLV文件由基础FLV标识(0x46 0x4C 0x56)开头,后跟元数据,元数据中包括是否含有音频的信息、是否含有视频的信息、关键帧信息以及视频帧的宽高等必要的多媒体文件信息,如图1所示。再例如,MP4文件由多个容器(box)进行排列封装,并通过各个容器表示该文件的基础信息,如图2所示。结合图1和图2可知,不同的封装协议之间存在着巨大的差异,且几乎每种封装格式都拥有其自身的显著特点。
多媒体文件的编码格式包括H264、RV30、RV40、H263和AAC(Advanced Audio Coding,高级音频编码)等。文件编码格式出现在文件封装协议的下层,由封装协议头Header所包裹。Header字段明确指出该多媒体文件由何种编码协议进行编码压缩,如图3所示。
现有的多媒体文件的播放模式主要分为完全软解模式、完全硬解模式和混合解码模式。以Android操作系统为例,完全软解模式由NDK(Native Development Kit,原生开发工具包)层独立进行解码和渲染处理;完全硬解模式由SDK(Software Development Kit,软件开发工具包)层独立进行解码和渲染处理;混合解码模式由SDK层与NDK层共同完成解码和渲染处理。其中,NDK层为Android框架底层,位于Android系统的核心层位置,通常以C语言或者C++语言编写,更接近系统内核层;SDK层为Android框架上层,位于Android系统顶层,通常使用Java语言开发,处理UI(User Interface,用户界面)和Android标准系统API(Application Programming Interface,应用程序编程接口)等。
现有的播放器在播放多媒体文件时,通常根据多媒体文件的后缀名选择播放模式。现有的播放器播放多媒体文件具有以下共同点:第一,无论该多媒体文件采用何种格式,默认播放模式为完全软解模式,从而占用大量系统内存和CPU(Central Processing Unit,中央处理器)等资源,导致对设备产生了较高的负载;第二,播放模式的切换均为用户手动切换,导致操作便捷性较低;第三,如果用户手动选择的播放模式不被该多媒体文件所支持,则将提示无法播放,并直接退出播放界面,从而影响用户体验。
技术实现要素:
技术问题
有鉴于此,本发明要解决的技术问题是,现有的多媒体文件的播放技术占用大量的系统内存和CPU资源,且切换播放模式的操作便捷性较低。
解决方案
为了解决上述技术问题,根据本发明的一实施例,提供了一种播放多媒体文件的方法,包括:
在接收到播放多媒体文件的请求信息的情况下,获取待播放的所述多媒体文件;
获取所述多媒体文件对应的指定信息,所述指定信息包括所述多媒体文件的封装格式;
在所述请求信息未携带指定播放模式,或者所述指定播放模式不能用于播放所述多媒体文件的情况下,根据所述指定信息确定所述多媒体文件对应的最优播放模式,其中,所述最优播放模式为硬件解码模式、软件解码模式或者混合解码模式;
采用所述最优播放模式播放所述多媒体文件。
对于上述方法,在一种可能的实现方式中,在获取所述多媒体文件对应的指定信息之后,所述方法还包括:
在所述请求信息携带所述指定播放模式,且所述指定播放模式能够用于播放所述多媒体文件的情况下,采用所述指定播放模式播放所述多媒体文件。
对于上述方法,在一种可能的实现方式中,所述指定信息还包括以下至少一项:
所述多媒体文件的编码格式、所述多媒体文件的扩展名和播放所述多媒体文件的操作系统信息。
对于上述方法,在一种可能的实现方式中,根据所述指定信息确定所述多媒体文件对应的最优播放模式,包括:
在所述封装格式属于第一预设封装格式集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述封装格式属于第二预设封装格式集合的情况下,确定所述最优播放模式为混合解码模式;
在所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合的情况下,确定所述最优播放模式为软件解码模式。
对于上述方法,在一种可能的实现方式中,根据所述指定信息确定所述多媒体文件对应的最优播放模式,包括:
在所述封装格式属于第一预设封装格式集合且所述编码格式属于预设编码格式集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述封装格式属于第二预设封装格式集合且所述编码格式属于所述预设编码格式集合的情况下,确定所述最优播放模式为混合解码模式;
在所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,或者所述编码格式不属于所述预设编码格式集合的情况下,确定所述最优播放模式为软件解码模式。
对于上述方法,在一种可能的实现方式中,根据所述指定信息确定所述多媒体文件对应的最优播放模式,包括:
在所述扩展名属于预设扩展名集合、所述封装格式属于第一预设封装格式集合且所述编码格式属于预设编码格式集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述扩展名属于所述预设扩展名集合、所述封装格式属于第二预设封装格式集合且所述编码格式属于所述预设编码格式集合的情况下,确定所述最优播放模式为混合解码模式;
在所述扩展名不属于所述预设扩展名集合,所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,或者所述编码格式不属于所述预设编码格式集合的情况下,确定所述最优播放模式为软件解码模式。
对于上述方法,在一种可能的实现方式中,根据所述指定信息确定所述多媒体文件对应的最优播放模式,包括:
在所述扩展名属于预设扩展名集合、所述封装格式属于第一预设封装格式集合,所述编码格式属于预设编码格式集合且所述操作系统信息属于预设操作系统信息集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述扩展名属于所述预设扩展名集合、所述封装格式属于第二预设封装格式集合,所述编码格式属于所述预设编码格式集合且所述操作系统信息属于所述预设操作系统信息集合的情况下,确定所述最优播放模式为混合解码模式;
在所述扩展名不属于所述预设扩展名集合,所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,所述编码格式不属于所述预设编码格式集合,或者所述操作系统信息不属于所述预设操作系统信息集合的情况下,确定所述最优播放模式为软件解码模式。
为了解决上述技术问题,根据本发明的另一实施例,提供了一种播放多媒体文件的装置,包括:
多媒体文件获取模块,用于在接收到播放多媒体文件的请求信息的情况下,获取待播放的所述多媒体文件;
指定信息获取模块,用于获取所述多媒体文件对应的指定信息,所述指定信息包括所述多媒体文件的封装格式;
最优播放模式确定模块,用于在所述请求信息未携带指定播放模式,或者所述指定播放模式不能用于播放所述多媒体文件的情况下,根据所述指定信息确定所述多媒体文件对应的最优播放模式,其中,所述最优播放模式为硬件解码模式、软件解码模式或者混合解码模式;
第一播放模块,用于采用所述最优播放模式播放所述多媒体文件。
对于上述装置,在一种可能的实现方式中,所述装置还包括:
第二播放模块,用于在所述请求信息携带所述指定播放模式,且所述指定播放模式能够用于播放所述多媒体文件的情况下,采用所述指定播放模式播放所述多媒体文件。
对于上述装置,在一种可能的实现方式中,所述指定信息还包括以下至少一项:
所述多媒体文件的编码格式、所述多媒体文件的扩展名和播放所述多媒体文件的操作系统信息。
对于上述装置,在一种可能的实现方式中,所述最优播放模式确定模块包括第一最优播放模式确定子模块,所述第一最优播放模式确定子模块具体用于:
在所述封装格式属于第一预设封装格式集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述封装格式属于第二预设封装格式集合的情况下,确定所述最优播放模式为混合解码模式;
在所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合的情况下,确定所述最优播放模式为软件解码模式。
对于上述装置,在一种可能的实现方式中,所述最优播放模式确定模块包括第二最优播放模式确定子模块,所述第二最优播放模式确定子模块具体用于:
在所述封装格式属于第一预设封装格式集合且所述编码格式属于预设编码格式集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述封装格式属于第二预设封装格式集合且所述编码格式属于所述预设编码格式集合的情况下,确定所述最优播放模式为混合解码模式;
在所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,或者所述编码格式不属于所述预设编码格式集合的情况下,确定所述最优播放模式为软件解码模式。
对于上述装置,在一种可能的实现方式中,所述最优播放模式确定模块包括第三最优播放模式确定子模块,所述第三最优播放模式确定子模块具体用于:
在所述扩展名属于预设扩展名集合、所述封装格式属于第一预设封装格式集合且所述编码格式属于预设编码格式集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述扩展名属于所述预设扩展名集合、所述封装格式属于第二预设封装格式集合且所述编码格式属于所述预设编码格式集合的情况下,确定所述最优播放模式为混合解码模式;
在所述扩展名不属于所述预设扩展名集合,所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,或者所述编码格式不属于所述预设编码格式集合的情况下,确定所述最优播放模式为软件解码模式。
对于上述装置,在一种可能的实现方式中,所述最优播放模式确定模块包括第四最优播放模式确定子模块,所述第四最优播放模式确定子模块具体用于:
在所述扩展名属于预设扩展名集合、所述封装格式属于第一预设封装格式集合,所述编码格式属于预设编码格式集合且所述操作系统信息属于预设操作系统信息集合的情况下,确定所述最优播放模式为硬件解码模式;
在所述扩展名属于所述预设扩展名集合、所述封装格式属于第二预设封装格式集合,所述编码格式属于所述预设编码格式集合且所述操作系统信息属于所述预设操作系统信息集合的情况下,确定所述最优播放模式为混合解码模式;
在所述扩展名不属于所述预设扩展名集合,所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,所述编码格式不属于所述预设编码格式集合,或者所述操作系统信息不属于所述预设操作系统信息集合的情况下,确定所述最优播放模式为软件解码模式。
有益效果
通过在接收到播放多媒体文件的请求信息的情况下,若请求信息未携带指定播放模式,或者请求信息中携带的指定播放模式不能用于播放该多媒体文件,则根据该多媒体文件对应的指定信息确定该多媒体文件对应的最优播放模式,并采用该最优播放模式播放该多媒体文件,根据本发明实施例的播放多媒体文件的方法及装置能够从硬件解码模式、软件解码模式和混合解码模式中自动为用户选择最优播放模式,由此在硬件解码模式或者混合解码模式能够用于播放用户请求播放的多媒体文件时,采用硬件解码模式或者混合解码模式替代软件解码模式,从而能够降低系统内存开销、设备负载和CPU占用率,并且在用户手动选择的指定播放模式不能用于播放该多媒体文件时,自动为用户选择能够用于播放该多媒体文件的播放模式,从而大大提高了用户体验。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出了FLV文件的封装格式的示意图;
图2示出了MP4文件的封装格式的示意图;
图3示出了Header字段的示意图;
图4示出根据本发明一实施例的播放多媒体文件的方法的实现流程图;
图5示出根据本发明一实施例的播放多媒体文件的方法的一示例性的实现流程图;
图6示出根据本发明另一实施例的播放多媒体文件的装置的结构框图;
图7示出根据本发明另一实施例的播放多媒体文件的装置的一示例性的结构框图;
图8示出了本发明的另一个实施例的一种播放多媒体文件的设备的结构框图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
实施例1
图4示出根据本发明一实施例的播放多媒体文件的方法的实现流程图。如图4所示,该方法主要包括:
在步骤S401中,在接收到播放多媒体文件的请求信息的情况下,获取待播放的多媒体文件。
在步骤S402中,获取该多媒体文件对应的指定信息,该指定信息包括该多媒体文件的封装格式。
其中,多媒体文件的封装格式可以从多媒体文件的数据头中获取。
在步骤S403中,在请求信息未携带指定播放模式,或者指定播放模式不能用于播放该多媒体文件的情况下,根据指定信息确定该多媒体文件对应的最优播放模式,其中,最优播放模式为硬件解码模式、软件解码模式或者混合解码模式。
在步骤S404中,采用最优播放模式播放该多媒体文件。
作为本发明实施例的一个示例,在最优播放模式为硬件解码模式的情况下,采用最优播放模式播放该多媒体文件包括:对硬件解码器进行初始化,采用硬件解码器进行解码,采用硬件渲染器进行渲染。以Android操作系统为例,硬件解码模式可以调用Android的系统播放器的API来进行播放。若在Android操作系统上采用硬件解码模式,则由SDK层独立进行解码和渲染,由此节约NDK层的代码运行开销。硬件解码模式由于舍弃了框架层的计算,从而降低了系统内存使用量。
作为本发明实施例的另一个示例,在最优播放模式为软件解码模式的情况下,采用最优播放模式播放该多媒体文件包括:对软件解码器进行初始化,采用软件解码器进行解码,采用软件渲染器进行渲染。
作为本发明实施例的另一个示例,在最优播放模式为混合解码模式的情况下,采用最优播放模式播放该多媒体文件包括:对硬件解码器和软件解码器进行初始化,采用硬件解码器和软件解码器进行解码,采用软件渲染器进行渲染。混合解码模式可以采用工厂模式作为内部接口,从而使使用者与实现者低耦合。
图5示出根据本发明一实施例的播放多媒体文件的方法的一示例性的实现流程图。如图5所示,该方法主要包括:
在步骤S501中,在接收到播放多媒体文件的请求信息的情况下,获取待播放的该多媒体文件。
在步骤S502中,获取该多媒体文件对应的指定信息,指定信息包括该多媒体文件的封装格式。
在步骤S503中,在请求信息未携带指定播放模式,或者指定播放模式不能用于播放该多媒体文件的情况下,根据指定信息确定该多媒体文件对应的最优播放模式,其中,最优播放模式为硬件解码模式、软件解码模式或者混合解码模式。
在步骤S504中,采用最优播放模式播放该多媒体文件。
在步骤S505中,在请求信息携带指定播放模式,且指定播放模式能够用于播放该多媒体文件的情况下,采用指定播放模式播放该多媒体文件。
作为本发明实施例的一个示例,在接收到播放多媒体文件的请求信息的情况下,判断该请求信息中是否携带指定播放模式。该指定播放模式可以为用户指定的播放模式。该指定播放模式可以为硬件解码模式、软件解码模式或者混合解码模式。若请求信息中携带指定播放模式,则根据该多媒体文件对应的指定信息判断该指定播放模式是否能用于播放该多媒体文件。若该指定播放模式能够用于播放该多媒体文件,则采用指定播放模式播放该多媒体文件。若请求信息中携带的指定播放模式不能用于播放该多媒体文件,则通过消息机制通知SDK层,SDK接收到消息后,重新传入矫正后的参数给NDK层,再自动为用户选择最优播放模式,并采用最优播放模式播放该多媒体文件。在该示例中,虽然用户选择的指定播放模式不能用于播放该多媒体文件,但该示例为用户主动选择能够用于播放该多媒体文件的播放模式,从而不影响用户的播放体验。
其中,根据该多媒体文件对应的指定信息判断该指定播放模式是否能用于播放该多媒体文件,可以为:若指定播放模式为软件解码模式,则判定该指定播放模式能够用于播放该多媒体文件;若指定播放模式为硬件解码模式,且该多媒体文件的封装格式属于第一预设封装格式集合,则判定该指定播放模式能够用于播放该多媒体文件;若指定播放模式为硬件解码模式,且该多媒体文件的封装格式不属于第一预设封装格式集合,则判定该指定播放模式不能用于播放该多媒体文件;若该指定播放模式为混合解码模式,且该多媒体文件的封装格式属于第一预设封装格式集合或者第二预设封装格式集合,则判定该指定播放模式能够用于播放该多媒体文件;若该指定播放模式为混合解码模式,且该多媒体文件的封装格式既不属于第一预设封装格式集合也不属于第二预设封装格式集合,则判定该指定播放模式不能用于播放该多媒体文件。
根据该多媒体文件对应的指定信息判断该指定播放模式是否能用于播放该多媒体文件,还可以为:若指定播放模式为软件解码模式,则判定该指定播放模式能够用于播放该多媒体文件;若指定播放模式为硬件解码模式,该多媒体文件的扩展名属于预设扩展名集合,封装格式属于第一预设封装格式集合,编码格式属于预设编码格式集合且操作系统信息属于预设操作系统信息集合,则判定该指定播放模式能够用于播放该多媒体文件;若指定播放模式为硬件解码模式,但以下至少一项不满足,则判定该指定播放模式不能用于播放该多媒体文件:扩展名属于预设扩展名集合,封装格式属于第一预设封装格式集合,编码格式属于预设编码格式集合和操作系统信息属于预设操作系统信息集合;若指定播放模式为混合解码模式,该多媒体文件的扩展名属于预设扩展名集合,封装格式属于第一预设封装格式集合或者第二预设封装格式集合,编码格式属于预设编码格式集合且操作系统信息属于预设操作系统信息集合,则判定该指定播放模式能够用于播放该多媒体文件;若指定播放模式为混合解码模式,但以下至少一项不满足,则判定该指定播放模式不能用于播放该多媒体文件:扩展名属于预设扩展名集合,封装格式属于第一预设封装格式集合或者第二预设封装格式集合,编码格式属于预设编码格式集合且操作系统信息属于预设操作系统信息集合。
需要说明的是,在根据该多媒体文件对应的指定信息判断该指定播放模式是否能用于播放该多媒体文件时,指定信息包括多媒体文件的封装格式,还可以包括该多媒体文件的编码格式、该多媒体文件的扩展名和播放该多媒体文件的操作系统信息中的至少一项。为了便于说明,在此不再在指定信息所包含的信息不同的情况下,分别对根据该多媒体文件对应的指定信息判断该指定播放模式是否能用于播放该多媒体文件的具体判断过程进行赘述。
在一种可能的实现方式中,指定信息还包括以下至少一项:该多媒体文件的编码格式、该多媒体文件的扩展名和播放该多媒体文件的操作系统信息。其中,多媒体文件的编码格式可以从多媒体文件的metadata(元数据)中获取。
在一种可能的实现方式中,根据指定信息确定该多媒体文件对应的最优播放模式,包括:在封装格式属于第一预设封装格式集合的情况下,确定最优播放模式为硬件解码模式;在封装格式属于第二预设封装格式集合的情况下,确定最优播放模式为混合解码模式;在封装格式既不属于第一预设封装格式集合也不属于第二预设封装格式集合的情况下,确定最优播放模式为软件解码模式。其中,第一预设封装格式集合可以包括MP4和MOV;第二预设封装格式集合可以包括FLV、AVI和MKV;第一预设封装格式集合和第二预设封装格式集合均不包括RMVB。
在一种可能的实现方式中,根据指定信息确定该多媒体文件对应的最优播放模式,包括:在封装格式属于第一预设封装格式集合且编码格式属于预设编码格式集合的情况下,确定最优播放模式为硬件解码模式;在封装格式属于第二预设封装格式集合且编码格式属于预设编码格式集合的情况下,确定最优播放模式为混合解码模式;在封装格式既不属于第一预设封装格式集合也不属于第二预设封装格式集合,或者编码格式不属于预设编码格式集合的情况下,确定最优播放模式为软件解码模式。其中,预设编码格式集合可以包括H264。
在一种可能的实现方式中,根据指定信息确定该多媒体文件对应的最优播放模式,包括:在扩展名属于预设扩展名集合、封装格式属于第一预设封装格式集合且编码格式属于预设编码格式集合的情况下,确定最优播放模式为硬件解码模式;在扩展名属于预设扩展名集合、封装格式属于第二预设封装格式集合且编码格式属于预设编码格式集合的情况下,确定最优播放模式为混合解码模式;在扩展名不属于预设扩展名集合,封装格式既不属于第一预设封装格式集合也不属于第二预设封装格式集合,或者编码格式不属于预设编码格式集合的情况下,确定最优播放模式为软件解码模式。其中,预设扩展名集合可以包括avi和mkv。
在一种可能的实现方式中,根据指定信息确定该多媒体文件对应的最优播放模式,包括:在扩展名属于预设扩展名集合、封装格式属于第一预设封装格式集合,编码格式属于预设编码格式集合且操作系统信息属于预设操作系统信息集合的情况下,确定最优播放模式为硬件解码模式;在扩展名属于预设扩展名集合、封装格式属于第二预设封装格式集合,编码格式属于预设编码格式集合且操作系统信息属于预设操作系统信息集合的情况下,确定最优播放模式为混合解码模式;在扩展名不属于预设扩展名集合,封装格式既不属于第一预设封装格式集合也不属于第二预设封装格式集合,编码格式不属于预设编码格式集合,或者操作系统信息不属于预设操作系统信息集合的情况下,确定最优播放模式为软件解码模式。其中,预设操作系统信息集合可以包括Android 4.0以上的操作系统。
需要说明的是,在本发明实施例中,指定信息包括多媒体文件的封装格式,还可以包括该多媒体文件的编码格式、该多媒体文件的扩展名和播放该多媒体文件的操作系统信息中的至少一项。为了便于说明,在此不再在指定信息所包含的信息不同的情况下,分别对根据指定信息确定该多媒体文件对应的最优播放模式的具体过程进行赘述。
这样,通过在接收到播放多媒体文件的请求信息的情况下,若请求信息未携带指定播放模式,或者请求信息中携带的指定播放模式不能用于播放该多媒体文件,则根据该多媒体文件对应的指定信息确定该多媒体文件对应的最优播放模式,并采用该最优播放模式播放该多媒体文件,根据本发明实施例的播放多媒体文件的方法能够从硬件解码模式、软件解码模式和混合解码模式中自动为用户选择最优播放模式,由此在硬件解码模式或者混合解码模式能够用于播放用户请求播放的多媒体文件时,采用硬件解码模式或者混合解码模式替代软件解码模式,从而能够降低系统内存开销、设备负载和CPU占用率,并且在用户手动选择的指定播放模式不能用于播放该多媒体文件时,自动为用户选择能够用于播放该多媒体文件的播放模式,从而大大提高了用户体验。
实施例2
图6示出根据本发明另一实施例的播放多媒体文件的装置的结构框图。该装置可以用于运行图4或图5所示的播放多媒体文件的方法。为了便于说明,仅示出了与本发明实施例相关的部分。
如图6所示,该装置包括:多媒体文件获取模块61,用于在接收到播放多媒体文件的请求信息的情况下,获取待播放的所述多媒体文件;指定信息获取模块62,用于获取所述多媒体文件对应的指定信息,所述指定信息包括所述多媒体文件的封装格式;最优播放模式确定模块63,用于在所述请求信息未携带指定播放模式,或者所述指定播放模式不能用于播放所述多媒体文件的情况下,根据所述指定信息确定所述多媒体文件对应的最优播放模式,其中,所述最优播放模式为硬件解码模式、软件解码模式或者混合解码模式;第一播放模块64,用于采用所述最优播放模式播放所述多媒体文件。
图7示出根据本发明另一实施例的播放多媒体文件的装置的一示例性的结构框图。图7中标号与图6相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。为了便于说明,仅示出了与本发明实施例相关的部分。如图7所示:
在一种可能的实现方式中,所述装置还包括:第二播放模块65,用于在所述请求信息携带所述指定播放模式,且所述指定播放模式能够用于播放所述多媒体文件的情况下,采用所述指定播放模式播放所述多媒体文件。
在一种可能的实现方式中,所述指定信息还包括以下至少一项:所述多媒体文件的编码格式、所述多媒体文件的扩展名和播放所述多媒体文件的操作系统信息。
在一种可能的实现方式中,所述最优播放模式确定模块63包括第一最优播放模式确定子模块631,所述第一最优播放模式确定子模块631具体用于:在所述封装格式属于第一预设封装格式集合的情况下,确定所述最优播放模式为硬件解码模式;在所述封装格式属于第二预设封装格式集合的情况下,确定所述最优播放模式为混合解码模式;在所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合的情况下,确定所述最优播放模式为软件解码模式。
在一种可能的实现方式中,所述最优播放模式确定模块63包括第二最优播放模式确定子模块632,所述第二最优播放模式确定子模块632具体用于:在所述封装格式属于第一预设封装格式集合且所述编码格式属于预设编码格式集合的情况下,确定所述最优播放模式为硬件解码模式;在所述封装格式属于第二预设封装格式集合且所述编码格式属于所述预设编码格式集合的情况下,确定所述最优播放模式为混合解码模式;在所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,或者所述编码格式不属于所述预设编码格式集合的情况下,确定所述最优播放模式为软件解码模式。
在一种可能的实现方式中,所述最优播放模式确定模块63包括第三最优播放模式确定子模块633,所述第三最优播放模式确定子模块633具体用于:在所述扩展名属于预设扩展名集合、所述封装格式属于第一预设封装格式集合且所述编码格式属于预设编码格式集合的情况下,确定所述最优播放模式为硬件解码模式;在所述扩展名属于所述预设扩展名集合、所述封装格式属于第二预设封装格式集合且所述编码格式属于所述预设编码格式集合的情况下,确定所述最优播放模式为混合解码模式;在所述扩展名不属于所述预设扩展名集合,所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,或者所述编码格式不属于所述预设编码格式集合的情况下,确定所述最优播放模式为软件解码模式。
在一种可能的实现方式中,所述最优播放模式确定模块63包括第四最优播放模式确定子模块634,所述第四最优播放模式确定子模块634具体用于:在所述扩展名属于预设扩展名集合、所述封装格式属于第一预设封装格式集合,所述编码格式属于预设编码格式集合且所述操作系统信息属于预设操作系统信息集合的情况下,确定所述最优播放模式为硬件解码模式;在所述扩展名属于所述预设扩展名集合、所述封装格式属于第二预设封装格式集合,所述编码格式属于所述预设编码格式集合且所述操作系统信息属于所述预设操作系统信息集合的情况下,确定所述最优播放模式为混合解码模式;在所述扩展名不属于所述预设扩展名集合,所述封装格式既不属于所述第一预设封装格式集合也不属于所述第二预设封装格式集合,所述编码格式不属于所述预设编码格式集合,或者所述操作系统信息不属于所述预设操作系统信息集合的情况下,确定所述最优播放模式为软件解码模式。
需要说明的是,这样,通过在接收到播放多媒体文件的请求信息的情况下,若请求信息未携带指定播放模式,或者请求信息中携带的指定播放模式不能用于播放该多媒体文件,则根据该多媒体文件对应的指定信息确定该多媒体文件对应的最优播放模式,并采用该最优播放模式播放该多媒体文件,根据本发明实施例的播放多媒体文件的装置能够从硬件解码模式、软件解码模式和混合解码模式中自动为用户选择最优播放模式,由此在硬件解码模式或者混合解码模式能够用于播放用户请求播放的多媒体文件时,采用硬件解码模式或者混合解码模式替代软件解码模式,从而能够降低系统内存开销、设备负载和CPU占用率,并且在用户手动选择的指定播放模式不能用于播放该多媒体文件时,自动为用户选择能够用于播放该多媒体文件的播放模式,从而大大提高了用户体验。
实施例3
图8示出了本发明的另一个实施例的一种播放多媒体文件的设备的结构框图。所述播放多媒体文件的设备1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述播放多媒体文件的设备1100包括处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:实现实施例1中各步骤的操作。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。