CN106791546A - 媒体数据播放方法和装置 - Google Patents
媒体数据播放方法和装置 Download PDFInfo
- Publication number
- CN106791546A CN106791546A CN201710005498.4A CN201710005498A CN106791546A CN 106791546 A CN106791546 A CN 106791546A CN 201710005498 A CN201710005498 A CN 201710005498A CN 106791546 A CN106791546 A CN 106791546A
- Authority
- CN
- China
- Prior art keywords
- media
- media data
- primary
- factory
- play
- 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.)
- Granted
Links
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
- H04N21/4431—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
-
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/765—Interface circuits between an apparatus for recording and another apparatus
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明涉及一种媒体数据播放方法和装置,该方法包括:获取媒体数据地址;以所述媒体数据地址为调用参数,调用标准媒体数据播放接口;通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,为所述媒体数据匹配原生的媒体播放方式;当检测到不支持播放时,为所述媒体数据匹配扩展的媒体播放方式;根据匹配的所述媒体播放方式播放所述媒体数据。本发明提供的媒体数据播放方法和装置提高了对媒体数据的兼容性。
Description
技术领域
本发明涉及媒体数据处理技术领域,特别是涉及一种媒体数据播放方法和装置。
背景技术
媒体数据包括音频数据、视频数据或者其结合,是用于存储和传递信息的一种重要媒介。目前操作***可以提供处理媒体数据的能力,运行于操作***上的应用程序就可以借助操作***提供的媒体数据处理能力来播放媒体数据。
然而,操作***提供的媒体数据处理能力是有限的,并不能支持所有媒体数据格式的播放。比如某些版本的安卓操作***就不支持MPEG2编码格式的视频,其中MPEG表示Moving Picture Experts Group,意为活动图像专家组。这种情况下需要用户手动安装可以播放操作***不支持的媒体数据格式的播放应用程序,并每次在需要播放该不支持的媒体数据格式时跳转到该播放应用程序进行播放,导致操作***对媒体数据的兼容性差。
发明内容
基于此,有必要针对目前实现对操作***所不支持媒体数据的播放效率低的技术问题,提供一种媒体数据播放方法和装置。
一种媒体数据播放方法,包括:
获取媒体数据地址;
以所述媒体数据地址为调用参数,调用标准媒体数据播放接口;
通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据;
当检测到支持播放时,为所述媒体数据匹配原生的媒体播放方式;
当检测到不支持播放时,为所述媒体数据匹配扩展的媒体播放方式;
根据匹配的所述媒体播放方式播放所述媒体数据。
一种媒体数据播放装置,包括:
地址获取模块,用于获取媒体数据地址;
标准媒体数据播放接口调用模块,用于以所述媒体数据地址为调用参数,调用标准媒体数据播放接口;
媒体播放方式匹配模块,用于通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,为所述媒体数据匹配原生的媒体播放方式;当检测到不支持播放时,为所述媒体数据匹配扩展的媒体播放方式;
播放模块,用于根据匹配的所述媒体播放方式播放所述媒体数据。
上述媒体数据播放方法和装置,对于原生的媒体播放方式支持播放或者不支持播放媒体数据地址所对应的媒体数据的情况,都可以实现播放,实现了播放能力的扩展,提高了兼容性。而且在播放时优先采用原生的媒体播放方式,在原生的媒体播放方式不支持播放时,才采用扩展的媒体播放方式,可尽可能保证播放的稳定性。再者,统一通过调用标准媒体数据播放接口,就可以实现对原生的媒体播放方式支持播放以及不支持播放的媒体数据的播放,具有播放媒体数据需求的应用程序不需要做额外改进,提高了通用性。
附图说明
图1为一个实施例中用于实现媒体数据播放方法的电子设备的内部结构示意图;
图2为一个实施例中媒体数据播放方法的流程示意图;
图3为另一个实施例中媒体数据播放方法的流程示意图;
图4为一个实施例中通过调用标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据的步骤的流程示意图;
图5为一个实施例中向原生媒体服务进程注入自定义代码以添加扩展的媒体工厂的步骤的流程示意图;
图6为一个实施例中通过调用标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放媒体数据地址所对应的媒体数据的步骤的流程示意图;
图7为一个具体应用场景中向原生媒体服务进程注入自定义代码以添加扩展的媒体工厂的步骤的流程示意图;
图8为一个具体应用场景中媒体数据播放方法的流程示意图。
图9为一个实施例中媒体数据播放装置的结构框图;
图10为另一个实施例中媒体数据播放装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中用于实现媒体数据播放方法的电子设备的内部结构示意图。参照图1,该电子设备包括通过***总线连接的处理器、非易失性存储介质、内存储器、网络接口、显示屏和输入装置。其中,电子设备的非易失性存储介质存储有操作***,还存储有一种媒体数据播放装置,该媒体数据播放装置用于实现一种媒体数据播放方法。电子设备的处理器用于提供计算和控制能力,支撑整个电子设备的运行。电子设备中的内存储器为非易失性存储介质中的媒体数据播放装置的运行提供环境。该内存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种媒体数据播放方法。电子设备的网络接口用于下载文件形式或者流式的媒体数据。电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。该电子设备可以是个人计算机或者移动电子设备,移动电子设备包括手机、平板电脑、个人数字助理或者穿戴式设备等中的至少一种。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图1中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例中媒体数据播放方法的流程示意图。本实施例主要以该方法应用于上述图1中的电子设备来举例说明。参照图2,该媒体数据播放方法具体包括如下步骤:
S202,获取媒体数据地址。
其中,媒体数据地址是表示媒体数据所在位置的数据,可以是媒体数据在电子设备本地的存储路径,也可以是媒体数据的URL。URL是Uniform Resource Locator的缩写,表示统一资源定位符,是对可以从网络上得到的资源的位置和访问方式的表示,是网络上标准资源的地址。媒体数据地址可从电子设备本地或网络获取。媒体可以称为media。
S204,以媒体数据地址为调用参数,调用标准媒体数据播放接口。
其中,标准媒体数据播放接口是操作***提供的一种标准的应用程序编程接口(Application Programming Interface,API),用于提供媒体数据处理能力。在安卓(Android)操作***中,标准媒体数据播放接口为安卓操作***的SDK(SoftwareDevelopment Kit,软件开发工具包)所提供的MediaPlayer接口。在视窗(Windows)操作***、苹果桌面操作***(Mac OS)以及苹果移动操作***(iOS)中也存在相应的标准媒体数据播放接口。
具体地,电子设备可通过运行于操作***上的应用程序获取媒体数据地址,通过该应用程序调用标准媒体数据播放接口,并向该标准媒体数据播放接口传入媒体数据地址。调用标准媒体数据播放接口会生成相应的媒体数据播放对象,该媒体数据播放对象运行在应用程序的进程中。
S206,通过调用标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放媒体数据地址所对应的媒体数据。
其中,媒体数据地址所对应的媒体数据,是媒体数据地址所表示的媒体数据。媒体播放方式是指播放媒体数据的计算机处理逻辑。原生是指由操作***自身所集成。原生的概念用来表示与操作***的关系,并不表示所涉及的技术为现有技术。原生的媒体播放方式,是指操作***自带的媒体播放方式。支持播放媒体数据,是指能够播放相应的媒体数据。
具体地,电子设备具体可通过标准媒体数据播放接口,直接检测原生的媒体播放方式是否支持播放媒体数据地址所对应的媒体数据。电子设备也可以通过标准媒体数据播放接口调用其它函数,以检测原生的媒体播放方式是否支持播放媒体数据地址所对应的媒体数据。
S208,当检测到支持播放时,为媒体数据匹配原生的媒体播放方式。
具体地,电子设备在检测到原生的媒体播放方式支持播放媒体数据地址所对应的媒体数据时,将原生的媒体播放方式作为与媒体数据匹配的媒体播放方式。
S210,当检测到不支持播放时,为媒体数据匹配扩展的媒体播放方式。
具体地,电子设备在检测到原生的媒体播放方式不支持播放媒体数据地址所对应的媒体数据时,将扩展的媒体播放方式作为与媒体数据匹配的媒体播放方式。
其中,扩展的媒体播放方式是非原生的媒体播放方式,可以通过运行于操作***上的应用程序添加扩展的媒体播放方式。扩展的媒体播放方式,包括播放原生的媒体播放方式所不支持的媒体数据的计算机处理逻辑,还可以进一步包括播放原生的媒体播放方式所支持的媒体数据的计算机处理逻辑。
S212,根据匹配的媒体播放方式播放媒体数据。
具体地,电子设备在检测到原生的媒体播放方式支持播放媒体数据地址所对应的媒体数据时,采用原生的媒体播放方式,实现对媒体数据的播放。电子设备在检测到原生的媒体播放方式不支持播放媒体数据地址所对应的媒体数据时,采用扩展的媒体播放方式,实现对媒体数据的播放。
上述媒体数据播放方法,对于原生的媒体播放方式支持播放或者不支持播放媒体数据地址所对应的媒体数据的情况,都可以实现播放,实现了播放能力的扩展,提高了兼容性。而且在播放时优先采用原生的媒体播放方式,在原生的媒体播放方式不支持播放时,才采用扩展的媒体播放方式,可尽可能保证播放的稳定性。再者,统一通过调用标准媒体数据播放接口,就可以实现对原生的媒体播放方式支持播放以及不支持播放的媒体数据的播放,具有播放媒体数据需求的应用程序不需要做额外改进,提高了通用性。
在一个实施例中,原生的媒体播放方式采用原生的媒体工厂;扩展的媒体播放方式采用扩展的媒体工厂。
其中,媒体工厂是用于处理媒体数据的工厂。媒体工厂可以是简单工厂模式(Simple Factory)、工厂方法模式(Factory Method)或者抽象工厂模式(AbstractFactory)。工厂方法模式是一种面向对象设计模式,可用于在不指定对象具体类型的情况下创建对象。工厂方法模式定义一个创建对象的接口,让实现该接口的类来决定实例化哪个类,将类的实例化推迟到子类中进行。媒体工厂用于创建播放器实例,该播放器实例用于播放媒体数据。
原生的不同媒体工厂,分别用于创建不同场景下的播放器实例。安卓操作***中,原生的媒体工厂如StagefrightPlayerFactory、NuPlayerFactory或者SonivoxPlayerFactory。其中StagefrightPlayerFactory是安卓操作***默认的媒体工厂,用于一般的本地视频播放。NuPlayerFactory用于流媒体播放,如RTSP(Real TimeStreaming Protocol,实时流传输协议)或m3u8格式的流媒体。SonivoxPlayerFactory用于MIDI(Musical Instrument Digital Interface)格式等媒体文件的播放。
扩展的媒体工厂,可以仅用于创建播放操作***所不支持媒体数据的播放器实例。扩展的媒体工厂,也可以用于创建即能播放操作***所支持媒体数据,又能播放操作***所不支持媒体数据的播放器实例。通过扩展的媒体工厂所创建的播放器实例,能够播放操作***所不支持的媒体数据。
本实施例中,采用媒体工厂,利用操作中***原生的播放逻辑,可以通过小的改动实现操作***播放能力的扩展。
在一个实施例中,步骤S212包括:采用匹配的媒体工厂创建相应的播放器实例,通过创建的播放器实例播放媒体数据。具体地,电子设备可通过播放器实例打开媒体数据地址所对应的媒体数据并读取,解码媒体数据并播放,输出视频和/或音频。电子设备还可以通过播放器实例对播放的音频和视频进行同步。在安卓操作***中,播放器实例是MediaPlayerBase类型的实例。
在一个实施例中,步骤S206包括:通过调用标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据。
具体地,扩展的媒体工厂包括检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据的计算机处理逻辑。扩展的媒体工厂具体可通过自身逻辑检测,也可以调用原生的函数检测。
进一步地,扩展的媒体工厂可以在检测到原生的媒体播放方式支持播放媒体数据时,为媒体数据匹配原生的媒体播放方式;扩展的媒体工厂可以在检测到原生的媒体播放方式不支持播放媒体数据时,为媒体数据匹配扩展的媒体播放方式。
本实施例中,通过调用扩展的媒体工厂,实现原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据的检测,对操作***改动小。
在一个实施例中,所述通过调用所述标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据,包括:通过调用所述标准媒体数据播放接口,遍历媒体工厂集合中的媒体工厂,对所述媒体数据进行支持能力评分;所述媒体工厂集合包括原生的媒体工厂和扩展的媒体工厂;根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据。
在一个实施例中,所述根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据之前,所述方法包括:通过遍历至的扩展的媒体工厂,检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予所述媒体数据的支持能力评分;当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予所述媒体数据的支持能力评分。
在一个实施例中,所述当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予所述媒体数据的支持能力评分,包括:当检测到支持播放时,将支持能力评分范围中的最小值,作为对应于扩展的媒体工厂的支持能力评分。所述当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予所述媒体数据的支持能力评分,包括:当检测到不支持播放时,将支持能力评分范围中的最大值,作为对应于扩展的媒体工厂的支持能力评分。
在一个实施例中,所述根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据之前,所述方法包括:通过遍历至的原生的媒体工厂,检测遍历至的原生的媒体工厂自身是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以不将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分。其中,用于据以将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分比如为1,用于据以不将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分比如为0。
在一个实施例中,所述根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据,包括:从遍历的各媒体工厂对应的支持能力评分中筛选出最大的支持能力评分;当最大的支持能力评分对应原生的媒体工厂时,确定所述原生的媒体播放方式支持播放所述媒体数据地址所对应的媒体数据;当最大的支持能力评分对应扩展的媒体工厂时,确定所述原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据。
图3为另一个实施例中媒体数据播放方法的流程示意图。参照图3,该方法具体包括如下步骤:
S302,获取媒体数据地址。
S304,以媒体数据地址为调用参数,调用标准媒体数据播放接口。
S306,通过调用标准媒体数据播放接口,遍历媒体工厂集合中的媒体工厂,对媒体数据进行支持能力评分;媒体工厂集合包括原生的媒体工厂和扩展的媒体工厂。
其中,媒体工厂集合是多于一个的媒体工厂构成的集合,包括至少一个原生的媒体工厂和至少一个扩展的媒体工厂。媒体工厂集合中的每个媒体工厂包括评分函数和播放器实例创建函数。评分函数用于对输入的媒体数据地址进行支持能力评分,输出相应的支持能力评分。播放器实例创建函数用于创建相应的播放器实例。
具体地,电子设备在调用标准媒体数据播放接口时,可通过原生媒体服务进程遍历媒体工厂集合,通过媒体工厂集合中的每个媒体工厂的评分函数对媒体数据地址所对应的媒体数据进行支持能力评分,得到相应的支持能力评分。在遍历至原生的媒体工厂时,则对应输出表示原生的媒体工厂是否支持媒体数据地址所对应的媒体数据的支持能力评分。支持能力评分具有支持能力评分范围,该支持能力评分范围可以包括两种或多于两种的取值。
S308,通过遍历至的原生的媒体工厂,检测遍历至的原生的媒体工厂自身是否支持播放媒体数据地址所对应的媒体数据;检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以将遍历至的原生的媒体工厂分配予媒体数据的支持能力评分;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以不将遍历至的原生的媒体工厂分配予媒体数据的支持能力评分。
S310,通过遍历至的扩展的媒体工厂,检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予媒体数据的支持能力评分;当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予媒体数据的支持能力评分。
具体地,若支持能力评分与支持能力正相关,则电子设备可在判定媒体数据地址所对应的媒体数据被原生的媒体工厂支持时,对应于遍历的扩展的媒体工厂,输出小于对应于原生的媒体工厂的支持能力评分的支持能力评分。
在一个实施例中,若支持能力评分与支持能力负相关,则电子设备可在判定媒体数据地址所对应的媒体数据被原生的媒体工厂支持时,对应于遍历的扩展的媒体工厂,输出大于对应于原生的媒体工厂的支持能力评分的支持能力评分。
若支持能力评分与支持能力正相关,则电子设备可在判定媒体数据地址所对应的媒体数据不被原生的媒体工厂支持时,对应于遍历的扩展的媒体工厂输出大于对应于原生的媒体工厂的支持能力评分的支持能力评分。
在一个实施例中,若支持能力评分与支持能力负相关,则电子设备可在判定媒体数据地址所对应的媒体数据不被原生的媒体工厂支持时,对应于遍历的扩展的媒体工厂输出小于对应于原生的媒体工厂的支持能力评分的支持能力评分。
S312,根据媒体工厂集合中遍历的各媒体工厂对应的支持能力评分,为媒体数据匹配相应的媒体工厂。
具体地,若支持能力评分与支持能力正相关,则电子设备可取遍历媒体工厂集合得到的支持能力评分中的最大值,将该最大值对应的媒体工厂匹配予媒体数据地址所对应的媒体数据。若支持能力评分与支持能力负相关,则电子设备可取遍历媒体工厂集合得到的支持能力评分中的最小值,将该最小值对应的媒体工厂匹配予媒体数据地址所对应的媒体数据。
S314,根据匹配的媒体工厂播放媒体数据。
具体地,电子设备可根据匹配的媒体工厂创建相应的播放器实例,从而通过创建的播放器实例播放媒体数据。
本实施例中,通过扩展的媒体工厂对媒体数据的评分逻辑,就可以利用原生的确定匹配媒体工厂的逻辑,实现对操作***媒体数据处理能力的扩展。减少了开发工作量,对操作***原生逻辑介入比较少,可减少因修改操作***原生逻辑带来新缺陷的情况。
在一个实施例中,步骤S310包括:当检测到支持播放时,将支持能力评分范围中的最小值,作为对应于扩展的媒体工厂的支持能力评分;当检测到不支持播放时,将支持能力评分范围中的最大值,作为对应于扩展的媒体工厂的支持能力评分。
具体地,假设支持能力评分范围中的最大值为1,最小值为0,则在遍历至扩展的媒体工厂时,若判定媒体数据地址所对应的媒体数据被原生的媒体工厂支持,则输出该扩展的媒体工厂对该媒体数据的支持能力评分为0。即使扩展的媒体工厂支持媒体数据地址所对应的媒体数据,也仍然输出支持能力评分范围中的最小值。在遍历至扩展的媒体工厂时,若判定媒体数据地址所对应的媒体数据不被原生的媒体工厂支持,则输出该扩展的媒体工厂对该媒体数据的支持能力评分为1。
若媒体数据地址所对应的媒体数据被原生的媒体工厂支持,则遍历得到的支持能力评分中的最大值为一个原生的媒体工厂对媒体数据的支持能力评分。若媒体数据地址所对应的媒体数据不被原生的媒体工厂支持,则遍历得到的支持能力评分中的最大值为一个扩展的媒体工厂对媒体数据的支持能力评分。
本实施例中,通过修改扩展的媒体工厂对媒体数据的评分逻辑,就可以利用原生的确定匹配媒体工厂的逻辑实现对操作***媒体数据处理能力的扩展,减少了开发工作量,对操作***原生逻辑介入比较少,可减少因修改操作***原生逻辑带来新缺陷的情况。
如图4所示,在一个实施例中,通过调用标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据的步骤具体包括如下步骤:
S402,通过调用标准媒体数据播放接口,向原生媒体服务进程传入媒体数据地址。
具体地,电子设备在调用标准媒体数据播放接口时,通过该标准媒体数据播放接口向原生媒体服务进程传入媒体数据地址。在安卓操作***中,原生媒体服务进程为MediaServer进程,电子设备通过标准媒体数据播放接口MediaPlayer向MediaServer进程传入媒体数据地址。
S404,调用通过原生媒体服务进程的全局地址空间中所添加的扩展的媒体工厂,以检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据。
具体地,原生的媒体工厂和扩展的媒体工厂,存储在原生媒体服务进程的全局地址空间中。电子设备可通过原生媒体服务进程,判断媒体数据地址所对应的媒体数据是否被原生的媒体工厂支持播放。其中,原生媒体服务进程的全局地址空间,是原生媒体服务进程所申请的地址空间,且该地址空间中的数据可被该原生媒体服务进程操作。
本实施例中,将扩展的媒体工厂添加到原生媒体服务进程的全局地址空间中,以实现对原生的媒体工厂所支持和所不支持媒体数据的播放,减少了开发工作量,对操作***原生逻辑介入比较少,可减少因修改操作***原生逻辑带来新缺陷的情况。
在一个实施例中,步骤S402之前,该媒体数据播放方法还包括向原生媒体服务进程注入自定义代码以添加扩展的媒体工厂的步骤。参照图5,该向原生媒体服务进程注入自定义代码以添加扩展的媒体工厂的步骤具体包括如下步骤:
S502,向原生媒体服务进程注入自定义代码。
具体地,电子设备可通过自定义进程,向原生媒体服务进程注入自定义代码。在需要获取到管理权限以执行注入代码操作的操作***,可以在获得相应的管理权限后执行步骤S502。
其中,自定义进程是非操作***原生的进程。自定义代码是非操作***原生的代码,用于扩展操作***的媒体数据处理能力。在安卓操作***中,可通过Ptrace()函数实现自定义代码的注入。初始进程是操作***在启动完毕后启动的第一个用户级进程。在安卓操作***中,初始进程为init进程。
在一个实施例中,自定义进程可在操作***启动完毕后启动。在一个实施例中,自定义进程可跟随操作***启动而启动。
在一个实施例中,当操作***启动完毕并启动初始进程后,初始进程可根据启动配置文件中配置的自定义程序路径启动自定义进程。初始进程具体可在接收到启动配置文件中配置的操作***启动完毕通知后,根据启动配置文件中配置的自定义程序路径启动自定义进程。
在安卓操作***中,初始进程为init进程,启动配置文件为init.rc文件。在init.rc文件中,自定义进程可在启动配置文件中被配置为service;自定义进程被配置为disabled,表示不跟随操作***启动而启动;自定义进程被配置为在接收到操作***启动完毕通知后启动。
在一个实施例中,电子设备通过自定义进程获取原生媒体服务进程的内存分配函数的地址,并将原生媒体服务进程暂停,从而按照获取的地址调用原生媒体服务进程的内存分配函数分配内存空间,该内存空间属于原生媒体服务进程的全局地址空间。电子设备通过自定义进程将自定义代码复制到分配的内存空间中,并修改原生媒体服务进程的执行位置到分配的内存空间中自定义代码的起始地址,进而恢复原生媒体服务进程。
S504,通过自定义代码,在原生媒体服务进程的全局地址空间中添加扩展的媒体工厂。
在一个实施例中,原生媒体服务进程在从暂停恢复后就会执行自定义代码。该自定义代码在执行时,先保存媒体服务进程的状态,然后加载指定的代码文件,执行该代码文件中的自定义逻辑,以在原生媒体服务进程的全局地址空间中添加扩展的媒体工厂,卸载代码文件,并恢复保存的媒体服务进程的状态。
S506,监测到原生媒体服务进程关闭,则待原生媒体服务进程重启后,返回步骤S502。
具体地,电子设备可通过自定义进程监听操作***在原生媒体服务进程关闭时发出的进程关闭通知。响应于进程关闭通知,待原生媒体服务进程重启后,返回步骤S502。其中,原生媒体服务进程在关闭后,会由操作***重启该原生媒体服务进程。自定义进程在接收到关闭通知后,等待操作***将原生媒体服务进程重启后,返回步骤S502,继续通过自定义进程向原生媒体服务进程注入定义代码。
本实施例中,通过向原生媒体服务进程注入自定义代码就可以实现对操作***媒体数据处理能力的扩展,不需要在操作***源码基础上进行修改,在无法获取到操作***源码的情况下也可以实现对操作***媒体数据处理能力的扩展。而且,可自动发现原生媒体服务进程关闭的情况,并在原生媒体服务进程重启后重新注入自定义代码,保证了对操作***媒体数据处理能力进行扩展的有效性。
如图6所示,在一个实施例中,步骤S206包括以下步骤:
S602,通过调用命名为标准媒体数据播放接口的自定义接口,调用易名的原生标准媒体数据播放接口。
S604,通过调用易名的原生标准媒体数据播放接口,检测原生媒体播放方式是否支持播放媒体数据地址所对应的媒体数据。
其中,自定义接口被命名为与标准媒体数据播放接口相同的名称,因此在调用标准媒体数据播放接口时会调用该自定义接口。易名的原生标准媒体数据播放接口,保留了标准媒体数据播放接口的内容,其名称换为与标准媒体数据播放接口原本的名称不同的名称。
进一步地,电子设备可通过自定义接口调用易名的标准媒体数据播放接口,从而调用各原生的媒体工厂的评分函数,得到对媒体数据地址所对应的媒体数据的支持能力评分。电子设备可根据该支持能力评分,判断原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据。
本实施例中,巧妙地利用了接口名称实现了对操作***媒体数据处理能力的扩展,在原生的媒体工厂支持媒体数据时,处理逻辑发生的变化少,尽量减少对操作***原生逻辑的介入,可减少因修改操作***原生逻辑带来新缺陷的情况。
在一个实施例中,步骤S208包括:当检测到支持播放时,通过易名的原生标准媒体数据播放接口,为媒体数据匹配原生的媒体播放方式。步骤S210包括:当检测到不支持播放时,通过自定义接口,为媒体数据匹配扩展的媒体播放方式。
具体地,电子设备可在通过易名的原生标准媒体数据播放接口,检测到原生的媒体工厂支持播放媒体数据时,直接通过易名的原生标准媒体数据播放接口。电子设备在通过易名的原生标准媒体数据播放接口,检测到原生的媒体工厂不支持播放媒体数据时,再通过命名为标准媒体数据播放接口的自定义接口中定义的计算机处理逻辑,指定该自定义接口所定义的扩展的媒体播放方式。
本实施例中,通过易名的原生标准媒体数据播放接口,检测原生的媒体工厂是否支持媒体数据,在检测到支持时仍然通过易名的原生标准媒体数据播放接口,为媒体数据匹配原生的媒体播放方式。而在通过易名的原生标准媒体数据播放接口判断出原生的媒体工厂不支持媒体数据时,才通过自定义接口,为媒体数据匹配扩展的媒体播放方式。尽量减少对操作***原生逻辑的介入,可减少因修改操作***原生逻辑带来新缺陷的情况。
在一个实施例中,检测原生的媒体播放方式是否支持播放媒体数据地址所对应的媒体数据包括:当满足以下至少一者时,判定原生的媒体播放方式不支持播放媒体数据地址所对应的媒体数据:
1),通过原生的媒体参数获取函数,获取到媒体数据地址所对应的媒体数据的通道数目为0。
具体地,在安卓操作***中,可通过媒体播放框架StagefrightPlayer中的MediaExtractor函数(一种提取媒体信息的函数)获取媒体数据的通道数目。一般视频有两个通道,一个是音频通道,另一个是视频通道。如果MediaExtractor函数返回的媒体数据的通道数目为0,则说明电子设备不支持该媒体数据,也就是原生的媒体工厂不支持该媒体数据。
2),通过原生的媒体参数获取函数,获取媒体数据地址所对应的媒体数据的编码格式失败。
具体地,在安卓操作***中,可通过MediaExtractor函数获取媒体数据的编码格式,具体可以是音频和/或视频的编码格式。如果MediaExtractor函数返回表示获取编码格式失败的信息,则说明电子设备不支持该媒体数据,也就是原生的媒体工厂不支持该媒体数据。
3),获取到媒体数据地址所对应的媒体数据的编码格式后,判定获取的编码格式不被原生解码器所支持。
具体地,在安卓操作***中,可通过OMX接口(一种用于解码的接口)的函数来判断获取的编码格式是否被原生解码器所支持,若否,则判定获取的编码格式不被原生解码器所支持。终端具体可先判断条件1)和2)是否成立,在条件1)和2)不成立的情况下再判断条件3)是否成立。
进一步地,若上述条件1)、2)和3)均不成立,则可以判定媒体数据地址所对应的媒体数据被原生的媒体工厂所支持。
本实施例中,提供了多个可快速判断媒体数据是否被原生的媒体工厂所支持的判断条件,可以实现对媒体数据是否被原生的媒体工厂所支持的高效判断。
下面用一个具体应用场景来说明上述媒体数据播放方法的原理。本应用场景中以上述媒体数据播放方法应用于安卓操作***来详细说明。参照图7,自定义进程向MediaServer进程注入自定义代码,并通过自定义代码在MediaServer进程的全局地址空间中添加扩展的媒体工厂。自定义进程若监听到操作***在原生媒体服务进程关闭时发出的进程关闭通知,响应于进程关闭通知,待原生媒体服务进程重启后,继续向MediaServer进程注入自定义代码。
进一步地,参照图8,应用程序产生播放媒体数据的需求时,调用安卓操作***的SDK所提供的MediaPlayer接口,通过该MediaPlayer接口向MediaServer进程中的MediaPlayerService传入媒体数据地址。MediaServer进程中的MediaPlayerService调用媒体工厂接口MediaPlayerFactory,由MediaPlayerFactory遍历媒体工厂集合分别对媒体数据地址所对应的媒体数据进行支持能力评分。在遍历至原生的媒体工厂时,若该原生的媒体工厂支持播放该媒体数据,则对应输出大于0且小于等于1的支持能力评分。若该原生的媒体工厂不支持播放该媒体数据,则输出大于等于0且小于1的支持能力评分。在遍历至扩展的媒体工厂MyPlayerFactory时,若判定原生的媒体工厂支持播放媒体数据,则输出值为0的支持能力评分;若判定原生的媒体工厂不支持播放媒体数据,则输出值为1的支持能力评分。MediaPlayerFactory最终选择最大的支持能力评分对应的媒体工厂创建播放器实例MediaplayerBase,由MediaServer进程通过该播放器实例解码媒体数据并通过SDK输出至应用程序,由应用程序输出。
图9为一个实施例中媒体数据播放装置900的结构框图。参照图9,该媒体数据播放装置900包括:地址获取模块901、标准媒体数据播放接口调用模块902、媒体播放方式匹配模块903和播放模块904。
地址获取模块901,用于获取媒体数据地址。
标准媒体数据播放接口调用模块902,用于以媒体数据地址为调用参数,调用标准媒体数据播放接口。
媒体播放方式匹配模块903,用于通过调用标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放媒体数据地址所对应的媒体数据;当检测到支持播放时,为媒体数据匹配原生的媒体播放方式;当检测到不支持播放时,为媒体数据匹配扩展的媒体播放方式。
播放模块904,用于根据匹配的媒体播放方式播放媒体数据。
上述媒体数据播放装置900,对于原生的媒体播放方式支持播放或者不支持播放媒体数据地址所对应的媒体数据的情况,都可以实现播放,实现了播放能力的扩展,提高了兼容性。而且在播放时优先采用原生的媒体播放方式,在原生的媒体播放方式不支持播放时,才采用扩展的媒体播放方式,可尽可能保证播放的稳定性。再者,统一通过调用标准媒体数据播放接口,就可以实现对原生的媒体播放方式支持播放以及不支持播放的媒体数据的播放,具有播放媒体数据需求的应用程序不需要做额外改进,提高了通用性。
在一个实施例中,原生的媒体播放方式采用原生的媒体工厂;扩展的媒体播放方式采用扩展的媒体工厂。
本实施例中,采用媒体工厂,利用操作中***原生的播放逻辑,可以通过小的改动实现操作***播放能力的扩展。
媒体播放方式匹配模块903还用于通过调用标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据。
本实施例中,通过调用扩展的媒体工厂,实现原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据的检测,对操作***改动小。
在一个实施例中,所述媒体播放方式匹配模块903还用于通过调用所述标准媒体数据播放接口,遍历媒体工厂集合中的媒体工厂,对所述媒体数据进行支持能力评分;所述媒体工厂集合包括原生的媒体工厂和扩展的媒体工厂;根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据。
在一个实施例中,所述媒体播放方式匹配模块903还用于通过遍历至的扩展的媒体工厂,检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予所述媒体数据的支持能力评分;当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予所述媒体数据的支持能力评分。
在一个实施例中,所述媒体播放方式匹配模块903还用于当检测到支持播放时,将支持能力评分范围中的最小值,作为对应于扩展的媒体工厂的支持能力评分;当检测到不支持播放时,将支持能力评分范围中的最大值,作为对应于扩展的媒体工厂的支持能力评分。
在一个实施例中,所述媒体播放方式匹配模块903还用于通过遍历至的原生的媒体工厂,检测遍历至的原生的媒体工厂自身是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以不将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分。
在一个实施例中,所述媒体播放方式匹配模块903还用于从遍历的各媒体工厂对应的支持能力评分中筛选出最大的支持能力评分;当最大的支持能力评分对应原生的媒体工厂时,确定所述原生的媒体播放方式支持播放所述媒体数据地址所对应的媒体数据;当最大的支持能力评分对应扩展的媒体工厂时,确定所述原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据。
在一个实施例中,媒体播放方式匹配模块903还用于通过调用标准媒体数据播放接口,向原生媒体服务进程传入媒体数据地址;通过原生媒体服务进程,调用在其全局地址空间中所添加的扩展的媒体工厂,以检测原生的媒体工厂是否支持播放媒体数据地址所对应的媒体数据。
本实施例中,将扩展的媒体工厂添加到原生媒体服务进程的全局地址空间中,以实现对原生的媒体工厂所支持和所不支持媒体数据的播放,减少了开发工作量,对操作***原生逻辑介入比较少,可减少因修改操作***原生逻辑带来新缺陷的情况。
图10为另一个实施例中媒体数据播放装置900的结构框图。参照图10,该媒体数据播放装置900还包括:注入模块905,用于向原生媒体服务进程注入自定义代码;通过自定义代码,在原生媒体服务进程的全局地址空间中添加扩展的媒体工厂;监测到原生媒体服务进程关闭,则待原生媒体服务进程重启后,继续向原生媒体服务进程注入自定义代码。
本实施例中,通过向原生媒体服务进程注入自定义代码就可以实现对操作***媒体数据处理能力的扩展,不需要在操作***源码基础上进行修改,在无法获取到操作***源码的情况下也可以实现对操作***媒体数据处理能力的扩展。而且,可自动发现原生媒体服务进程关闭的情况,并在原生媒体服务进程重启后重新注入自定义代码,保证了对操作***媒体数据处理能力进行扩展的有效性。
在一个实施例中,媒体播放方式匹配模块903还用于通过调用命名为标准媒体数据播放接口的自定义接口,调用易名的原生标准媒体数据播放接口;通过调用易名的原生标准媒体数据播放接口,检测原生媒体播放方式是否支持播放媒体数据地址所对应的媒体数据。
本实施例中,巧妙地利用了接口名称实现了对操作***媒体数据处理能力的扩展,在原生的媒体工厂支持媒体数据时,处理逻辑发生的变化少,尽量减少对操作***原生逻辑的介入,可减少因修改操作***原生逻辑带来新缺陷的情况。
在一个实施例中,媒体播放方式匹配模块903还用于当检测到支持播放时,通过易名的原生标准媒体数据播放接口,为媒体数据匹配原生的媒体播放方式;当检测到不支持播放时,为媒体数据匹配扩展的媒体播放方式包括:当检测到不支持播放时,通过自定义接口,为媒体数据匹配扩展的媒体播放方式。
本实施例中,通过易名的原生标准媒体数据播放接口,检测原生的媒体工厂是否支持媒体数据,在检测到支持时仍然通过易名的原生标准媒体数据播放接口,为媒体数据匹配原生的媒体播放方式。而在通过易名的原生标准媒体数据播放接口判断出原生的媒体工厂不支持媒体数据时,才通过自定义接口,为媒体数据匹配扩展的媒体播放方式。尽量减少对操作***原生逻辑的介入,可减少因修改操作***原生逻辑带来新缺陷的情况。
在一个实施例中,媒体播放方式匹配模块903还用于当满足以下至少一者时,判定原生的媒体播放方式不支持播放媒体数据地址所对应的媒体数据;
1),通过原生的媒体参数获取函数,获取到媒体数据地址所对应的媒体数据的通道数目为0。
2),通过原生的媒体参数获取函数,获取媒体数据地址所对应的媒体数据的编码格式失败。
3),获取到媒体数据地址所对应的媒体数据的编码格式后,判定获取的编码格式不被原生解码器所支持。
本实施例中,提供了多个可快速判断媒体数据是否被原生的媒体工厂所支持的判断条件,可以实现对媒体数据是否被原生的媒体工厂所支持的高效判断。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (24)
1.一种媒体数据播放方法,包括:
获取媒体数据地址;
以所述媒体数据地址为调用参数,调用标准媒体数据播放接口;
通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据;
当检测到支持播放时,为所述媒体数据匹配原生的媒体播放方式;
当检测到不支持播放时,为所述媒体数据匹配扩展的媒体播放方式;
根据匹配的所述媒体播放方式播放所述媒体数据。
2.根据权利要求1所述的方法,其特征在于,所述原生的媒体播放方式采用原生的媒体工厂;所述扩展的媒体播放方式采用扩展的媒体工厂;
所述通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据,包括:
通过调用所述标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据。
3.根据权利要求2所述的方法,其特征在于,所述通过调用所述标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据,包括:
通过调用所述标准媒体数据播放接口,遍历媒体工厂集合中的媒体工厂,对所述媒体数据进行支持能力评分;所述媒体工厂集合包括原生的媒体工厂和扩展的媒体工厂;
根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据。
4.根据权利要求3所述的方法,其特征在于,所述根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据之前,所述方法包括:
通过遍历至的扩展的媒体工厂,检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据;
当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予所述媒体数据的支持能力评分;
当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予所述媒体数据的支持能力评分。
5.根据权利要求4所述的方法,其特征在于,所述当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予所述媒体数据的支持能力评分,包括:
当检测到支持播放时,将支持能力评分范围中的最小值,作为对应于扩展的媒体工厂的支持能力评分;
所述当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予所述媒体数据的支持能力评分,包括:
当检测到不支持播放时,将支持能力评分范围中的最大值,作为对应于扩展的媒体工厂的支持能力评分。
6.根据权利要求3所述的方法,其特征在于,所述根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据之前,所述方法包括:
通过遍历至的原生的媒体工厂,检测遍历至的原生的媒体工厂自身是否支持播放所述媒体数据地址所对应的媒体数据;
当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分;
当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以不将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分。
7.根据权利要求3至6中任一项所述的方法,其特征在于,所述根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据,包括:
从遍历的各媒体工厂对应的支持能力评分中筛选出最大的支持能力评分;
当最大的支持能力评分对应原生的媒体工厂时,确定所述原生的媒体播放方式支持播放所述媒体数据地址所对应的媒体数据;
当最大的支持能力评分对应扩展的媒体工厂时,确定所述原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据。
8.根据权利要求2所述的方法,其特征在于,所述通过调用所述标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据,包括:
通过调用所述标准媒体数据播放接口,向原生媒体服务进程传入所述媒体数据地址;
调用所述原生媒体服务进程的全局地址空间中所添加的扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据。
9.根据权利要求8所述的方法,其特征在于,所述调用所述原生媒体服务进程的全局地址空间中所添加的扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据之前,所述方法包括:
向原生媒体服务进程注入自定义代码;
通过所述自定义代码,在所述原生媒体服务进程的全局地址空间中添加扩展的媒体工厂;
监测到所述原生媒体服务进程关闭,则待所述原生媒体服务进程重启后,返回所述向原生媒体服务进程注入自定义代码的步骤。
10.根据权利要求1所述的方法,其特征在于,所述通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据,包括:
通过调用命名为标准媒体数据播放接口的自定义接口,调用易名的原生标准媒体数据播放接口;
通过调用所述易名的原生标准媒体数据播放接口,检测原生媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据。
11.根据权利要求10所述的方法,其特征在于,所述当检测到支持播放时,为所述媒体数据匹配原生的媒体播放方式,包括:
当检测到支持播放时,通过所述易名的原生标准媒体数据播放接口,为所述媒体数据匹配原生的媒体播放方式;
所述当检测到不支持播放时,为所述媒体数据匹配扩展的媒体播放方式包括:
当检测到不支持播放时,通过所述自定义接口,为所述媒体数据匹配扩展的媒体播放方式。
12.根据权利要求1所述的方法,其特征在于,所述检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据,包括:
当满足以下至少一者时,判定原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据;
通过原生的媒体参数获取函数,获取到所述媒体数据地址所对应的媒体数据的通道数目为0;
通过原生的媒体参数获取函数,获取所述媒体数据地址所对应的媒体数据的编码格式失败;
获取到所述媒体数据地址所对应的媒体数据的编码格式后,判定获取的编码格式不被原生解码器所支持。
13.一种媒体数据播放装置,其特征在于,包括:
地址获取模块,用于获取媒体数据地址;
标准媒体数据播放接口调用模块,用于以所述媒体数据地址为调用参数,调用标准媒体数据播放接口;
媒体播放方式匹配模块,用于通过调用所述标准媒体数据播放接口,触发检测原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,为所述媒体数据匹配原生的媒体播放方式;当检测到不支持播放时,为所述媒体数据匹配扩展的媒体播放方式;
播放模块,用于根据匹配的所述媒体播放方式播放所述媒体数据。
14.根据权利要求13所述的装置,其特征在于,所述原生的媒体播放方式采用原生的媒体工厂;所述扩展的媒体播放方式采用扩展的媒体工厂;
所述媒体播放方式匹配模块还用于通过调用所述标准媒体数据播放接口,调用扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据。
15.根据权利要求14所述的装置,其特征在于,所述媒体播放方式匹配模块还用于通过调用所述标准媒体数据播放接口,遍历媒体工厂集合中的媒体工厂,对所述媒体数据进行支持能力评分;所述媒体工厂集合包括原生的媒体工厂和扩展的媒体工厂;根据遍历的各媒体工厂所对应的支持能力评分,确定所述原生的媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据。
16.根据权利要求15所述的装置,其特征在于,所述媒体播放方式匹配模块还用于通过遍历至的扩展的媒体工厂,检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与扩展的媒体工厂对应,且用于据以将原生的媒体工厂分配予所述媒体数据的支持能力评分;当检测到不支持播放时,获得与扩展的媒体工厂对应,且用于据以将扩展的媒体工厂分配予所述媒体数据的支持能力评分。
17.根据权利要求16所述的装置,其特征在于,所述媒体播放方式匹配模块还用于当检测到支持播放时,将支持能力评分范围中的最小值,作为对应于扩展的媒体工厂的支持能力评分;当检测到不支持播放时,将支持能力评分范围中的最大值,作为对应于扩展的媒体工厂的支持能力评分。
18.根据权利要求15所述的装置,其特征在于,所述媒体播放方式匹配模块还用于通过遍历至的原生的媒体工厂,检测遍历至的原生的媒体工厂自身是否支持播放所述媒体数据地址所对应的媒体数据;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分;当检测到支持播放时,获得与遍历至的原生的媒体工厂对应,且用于据以不将遍历至的原生的媒体工厂分配予所述媒体数据的支持能力评分。
19.根据权利要求15至18中任一项所述的装置,其特征在于,所述媒体播放方式匹配模块还用于从遍历的各媒体工厂对应的支持能力评分中筛选出最大的支持能力评分;当最大的支持能力评分对应原生的媒体工厂时,确定所述原生的媒体播放方式支持播放所述媒体数据地址所对应的媒体数据;当最大的支持能力评分对应扩展的媒体工厂时,确定所述原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据。
20.根据权利要求14所述的装置,其特征在于,所述媒体播放方式匹配模块还用于通过调用所述标准媒体数据播放接口,向原生媒体服务进程传入所述媒体数据地址;调用所述原生媒体服务进程的全局地址空间中所添加的扩展的媒体工厂,以检测原生的媒体工厂是否支持播放所述媒体数据地址所对应的媒体数据。
21.根据权利要求20所述的装置,其特征在于,所述装置还包括:
注入模块,用于向原生媒体服务进程注入自定义代码;通过所述自定义代码,在所述原生媒体服务进程的全局地址空间中添加扩展的媒体工厂;监测到所述原生媒体服务进程关闭,则待所述原生媒体服务进程重启后,继续向原生媒体服务进程注入自定义代码。
22.根据权利要求13所述的装置,其特征在于,所述媒体播放方式匹配模块还用于通过调用命名为标准媒体数据播放接口的自定义接口,调用易名的原生标准媒体数据播放接口;通过调用所述易名的原生标准媒体数据播放接口,检测原生媒体播放方式是否支持播放所述媒体数据地址所对应的媒体数据。
23.根据权利要求22所述的装置,其特征在于,所述媒体播放方式匹配模块还用于当检测到支持播放时,通过所述易名的原生标准媒体数据播放接口,为所述媒体数据匹配原生的媒体播放方式;当检测到不支持播放时,通过所述自定义接口,为所述媒体数据匹配扩展的媒体播放方式。
24.根据权利要求13所述的装置,其特征在于,所述媒体播放方式匹配模块还用于当满足以下至少一者时,判定原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据;
当满足以下至少一者时,判定原生的媒体播放方式不支持播放所述媒体数据地址所对应的媒体数据;
通过原生的媒体参数获取函数,获取到所述媒体数据地址所对应的媒体数据的通道数目为0;
通过原生的媒体参数获取函数,获取所述媒体数据地址所对应的媒体数据的编码格式失败;
获取到所述媒体数据地址所对应的媒体数据的编码格式后,判定获取的编码格式不被原生解码器所支持。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710005498.4A CN106791546B (zh) | 2017-01-04 | 2017-01-04 | 媒体数据播放方法和装置 |
PCT/CN2017/115568 WO2018126852A1 (zh) | 2017-01-04 | 2017-12-12 | 媒体数据播放方法、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710005498.4A CN106791546B (zh) | 2017-01-04 | 2017-01-04 | 媒体数据播放方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106791546A true CN106791546A (zh) | 2017-05-31 |
CN106791546B CN106791546B (zh) | 2019-08-23 |
Family
ID=58950047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710005498.4A Active CN106791546B (zh) | 2017-01-04 | 2017-01-04 | 媒体数据播放方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106791546B (zh) |
WO (1) | WO2018126852A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018126852A1 (zh) * | 2017-01-04 | 2018-07-12 | 腾讯科技(深圳)有限公司 | 媒体数据播放方法、电子设备和计算机可读存储介质 |
CN109640192A (zh) * | 2018-12-26 | 2019-04-16 | 深圳创维-Rgb电子有限公司 | 视频播放器优化方法、装置、播放终端及存储介质 |
CN110891189A (zh) * | 2018-09-07 | 2020-03-17 | 迪斯尼企业公司 | 用于检测视频内容的基于硬件或基于软件的解码的配置 |
CN116560879A (zh) * | 2023-07-10 | 2023-08-08 | 深圳市慧为智能科技股份有限公司 | 人脸识别服务的调用方法、装置、终端设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110858918B (zh) * | 2018-08-22 | 2021-11-23 | 深圳Tcl数字技术有限公司 | Mds数据获取方法、数字电视及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005327349A (ja) * | 2004-05-12 | 2005-11-24 | Funai Electric Co Ltd | ディスク再生装置 |
CN1716242A (zh) * | 2004-06-28 | 2006-01-04 | 千乡万才科技(中国)有限公司 | 计算机多媒体文件播放方法及*** |
CN1749953A (zh) * | 2005-06-30 | 2006-03-22 | 无敌科技(西安)有限公司 | 格式支持能力可无限扩充式多媒体播放*** |
CN103366780A (zh) * | 2012-03-31 | 2013-10-23 | 盛乐信息技术(上海)有限公司 | 多媒体播放器引擎***及其使用方法和多媒体播放器 |
CN104104972A (zh) * | 2013-04-10 | 2014-10-15 | 深圳市快播科技有限公司 | 多媒体播放方法、装置及*** |
CN105407407A (zh) * | 2014-06-26 | 2016-03-16 | 广州市动景计算机科技有限公司 | 视频的播放方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304433B (zh) * | 2008-04-17 | 2011-02-02 | 北京大学 | 向播放器提供数据的方法、装置及多媒体播放*** |
CN106791546B (zh) * | 2017-01-04 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 媒体数据播放方法和装置 |
-
2017
- 2017-01-04 CN CN201710005498.4A patent/CN106791546B/zh active Active
- 2017-12-12 WO PCT/CN2017/115568 patent/WO2018126852A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005327349A (ja) * | 2004-05-12 | 2005-11-24 | Funai Electric Co Ltd | ディスク再生装置 |
CN1716242A (zh) * | 2004-06-28 | 2006-01-04 | 千乡万才科技(中国)有限公司 | 计算机多媒体文件播放方法及*** |
CN1749953A (zh) * | 2005-06-30 | 2006-03-22 | 无敌科技(西安)有限公司 | 格式支持能力可无限扩充式多媒体播放*** |
CN103366780A (zh) * | 2012-03-31 | 2013-10-23 | 盛乐信息技术(上海)有限公司 | 多媒体播放器引擎***及其使用方法和多媒体播放器 |
CN104104972A (zh) * | 2013-04-10 | 2014-10-15 | 深圳市快播科技有限公司 | 多媒体播放方法、装置及*** |
CN105407407A (zh) * | 2014-06-26 | 2016-03-16 | 广州市动景计算机科技有限公司 | 视频的播放方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018126852A1 (zh) * | 2017-01-04 | 2018-07-12 | 腾讯科技(深圳)有限公司 | 媒体数据播放方法、电子设备和计算机可读存储介质 |
CN110891189A (zh) * | 2018-09-07 | 2020-03-17 | 迪斯尼企业公司 | 用于检测视频内容的基于硬件或基于软件的解码的配置 |
CN110891189B (zh) * | 2018-09-07 | 2021-12-24 | 迪斯尼企业公司 | 用于检测视频内容的基于硬件或基于软件的解码的配置 |
CN109640192A (zh) * | 2018-12-26 | 2019-04-16 | 深圳创维-Rgb电子有限公司 | 视频播放器优化方法、装置、播放终端及存储介质 |
CN109640192B (zh) * | 2018-12-26 | 2021-07-20 | 深圳创维-Rgb电子有限公司 | 视频播放器优化方法、装置、播放终端及存储介质 |
CN116560879A (zh) * | 2023-07-10 | 2023-08-08 | 深圳市慧为智能科技股份有限公司 | 人脸识别服务的调用方法、装置、终端设备及存储介质 |
CN116560879B (zh) * | 2023-07-10 | 2024-04-09 | 深圳市慧为智能科技股份有限公司 | 人脸识别服务的调用方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106791546B (zh) | 2019-08-23 |
WO2018126852A1 (zh) | 2018-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106791546A (zh) | 媒体数据播放方法和装置 | |
US10200634B2 (en) | Video generation method, apparatus and terminal | |
CN107690078A (zh) | 弹幕信息显示方法、提供方法以及设备 | |
CN108965397A (zh) | 云端视频编辑方法及装置、编辑设备及存储介质 | |
US20170249934A1 (en) | Electronic device and method for operating the same | |
CN103577479B (zh) | 网页内容显示方法及*** | |
CN105611379B (zh) | 利用网页浏览器播放视频的方法、装置及电子设备 | |
CN102055845A (zh) | 移动通信终端及其音乐播放器图片切换方法 | |
CN103517135B (zh) | 一种连续播放mp4格式视频文件的方法、***及电视 | |
CN104093085B (zh) | 信息显示方法和装置 | |
CN106131646A (zh) | 一种基于Android***的开机视频处理方法及*** | |
CN109240833A (zh) | 资源配置方法、装置、终端及存储介质 | |
CN111970401A (zh) | 一种通话内容处理方法和电子设备 | |
CN104601535B (zh) | 视频处理方法和*** | |
CN108882015B (zh) | 回忆视频的播放速度调整方法、装置、电子设备及存储介质 | |
CN107247676A (zh) | 动态图播放方法、装置、存储介质和计算机设备 | |
CN102065174A (zh) | 移动终端多媒体资源推送方法及*** | |
CN104376859B (zh) | 一种播放列表自动调整的方法和网络音乐播放器 | |
CN103051953A (zh) | 一种利用视频播放器对视频文件进行解码方法 | |
CN103647761B (zh) | 录音标记方法、装置、终端、服务器及*** | |
CN104681049B (zh) | 提示信息的显示方法及装置 | |
CN103218283B (zh) | 电子设备、记录介质管理方法及程序 | |
CN106294660A (zh) | 信息交互方法和装置 | |
CN104991950A (zh) | 一种图片生成方法、显示方法及相应装置 | |
CN104714624B (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 |