CN103366780A - 多媒体播放器引擎系统及其使用方法和多媒体播放器 - Google Patents

多媒体播放器引擎系统及其使用方法和多媒体播放器 Download PDF

Info

Publication number
CN103366780A
CN103366780A CN 201210093364 CN201210093364A CN103366780A CN 103366780 A CN103366780 A CN 103366780A CN 201210093364 CN201210093364 CN 201210093364 CN 201210093364 A CN201210093364 A CN 201210093364A CN 103366780 A CN103366780 A CN 103366780A
Authority
CN
China
Prior art keywords
multimedia
standard
engine
thread
decoding
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.)
Pending
Application number
CN 201210093364
Other languages
English (en)
Inventor
武海滨
金尹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shengle Information Technolpogy Shanghai Co Ltd
Original Assignee
Shengle Information Technolpogy Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shengle Information Technolpogy Shanghai Co Ltd filed Critical Shengle Information Technolpogy Shanghai Co Ltd
Priority to CN 201210093364 priority Critical patent/CN103366780A/zh
Publication of CN103366780A publication Critical patent/CN103366780A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明提供一种多媒体播放器引擎系统及其使用方法和多媒体播放器及其使用方法,通过API集成了标准OpenCore引擎和非标准扩展解码引擎两种多媒体播放引擎,因此在包含OpenCore所提供的多媒体播放器引擎所具有的优点的同时,通过非标准扩展解码引擎解决支持多媒体格式有限、难以扩展其所支持的多媒体格式的问题,结构清晰、简单、可执行性高、兼容性好。

Description

多媒体播放器引擎系统及其使用方法和多媒体播放器
技术领域
本发明涉及多媒体播放器引擎技术领域,尤其涉及一种多媒体播放器引擎及其使用方法和多媒体播放器及其使用方法。
背景技术
OpenCore是Android的多媒体核心,它是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。OpenCore是一个多媒体的框架,从宏观上来看,它主要包含了两大方面的内容:
PVPlayer:提供媒体播放器的功能,完成各种音频(Audio)、视频(Video)流的回放(Playback)功能;
PVAuthor:提供媒体流记录的功能,完成各种音频(Audio)、视频(Video)流的以及静态图像捕获功能。
PVPlayer和PVAuthor以SDK的形式提供给开发者,可以在这个SDK之上构建多种应用程序和服务。在移动终端中常常使用的多媒体应用程序,例如媒体播放器、照相机、录像机、录音机等等。
目前,Android系统OpenCore的多媒体播放引擎所支持的多媒体格式大多采用硬件解码,具有速度快,CPU占用率低等优点,因而,应用于Android系统的传统多媒体播放器大多选择直接调用Android OpenCore的API(ApplicationProgramming Interface,应用程序编程接口),降低开发难度,但是这样的做法将出现以下的问题:
1、能够支持的多媒体格式有限,主要为OpencCore的多媒体播放引擎所支持的Mp3、Wma、Wav等;
2、无法很好地支持现在常用的无损编码格式文件,如:Ape、Ogg、Flac、Dts等;
3、由于OpencCore已经封装好,很难对其支持的多媒体格式进行扩展;
4、在传统多媒体播放器设计完成后,架构不够清晰,耦合程度高,扩展性不够,很难追加其支持的多媒体格式。
而将多媒体解码器移植入Android系统可以较好地解决上述问题,但是,这一做法的缺点是会使播放器的结构很复杂。因此,需要一种新的多媒体播放器引擎解决方案,既可包含OpenCore所提供的多媒体播放引擎所具有的优点,又能解决支持多媒体格式有限、难以扩展其所支持的多媒体格式等问题,同时还具有结构清晰、简单、可执行性高、兼容性好等优点。
发明内容
本发明的目的在于提供一种多媒体播放器引擎系统及其使用方法和多媒体播放器及其使用方法,可以既可包含OpenCore所提供标准多媒体播放器引擎所具有的优点,又能解决支持多媒体格式有限、难以扩展其所支持的多媒体格式的问题,结构清晰、简单、可执行性高、兼容性好。
为解决上述问题,本发明提供一种多媒体播放器引擎系统,包括:
标准OpenCore引擎,用于对多媒体进行OpenCore标准解码,以支持标准多媒体格式;以及
非标准扩展解码引擎,用于对所述标准多媒体频式以外的多媒体进行解码,以支持非标准多媒体格式。
进一步的,所述标准多媒体格式包括Mp3、Wma、Wav。
进一步的,所述非标准多媒体格式包括:Ape、Ogg、Flac、Dts。
进一步的,所述多媒体播放器引擎系统通过API提供一标志位,用于预先选定使用所述标准OpenCore引擎或者所述非标准扩展解码引擎对所述多媒体进行解码。
进一步的,所述标志位包含三个状态:未选定引擎状态、选定所述非标准扩展解码引擎状态以及选定所述标准OpenCore引擎状态
进一步的,所述标志位为未选定引擎状态时时,先使用标准OpenCore引擎来对多媒体进行解码,若标准OpenCore引擎无法支持该多媒体格式时,则再使用非标准扩展解码引擎对多媒体进行解码。
进一步的,所述非标准扩展解码引擎包括多媒体解码器、JAVA层以及JNI层三层结构,所述JAVA层根据其读线程、解码线程和播放线程的需求,调用不同的JNI层函数,JNI层函数再调用所述多媒体解码器完成多媒体的读取、解码及播放任务。
进一步的,所述JIN层包括:
Raw Buffer,用于存放从给定地址(本地或网络)中获取并经过解析的待解码数据;
Pcm Buffer,用于存放经过解码后获得的PCM数据;
读函数,用于从根据给定地址获取多媒体文件,并调用所述多媒体解码器解析多媒体文件头部信息,并根据获取的头部信息,逐帧从给定地址读取多媒体文件,并按序保存到Raw buffer中;
解码函数,用于从所述Raw buffer中按序逐帧读取多媒体文件,并调用所述多媒体解码器将读取到的多媒体文件进行解码,并按序将解码后的PCM数据保存到Pcm buffer中;
播放函数,用于从Pcm buffer中按序逐帧读取PCM数据流,并返回给所述JAVA层。
进一步的,所述读函数在发生seek时,将从seek到的位置开始读取多媒体文件。
进一步的,所述JAVA层包括:
读线程,用于通过调用JNI层的读函数从网络和本地读取多媒体文件的数据,然后对所述数据进行解析,得到送入多媒体解码器之前的数据;
解码线程,用于通过调用JNI层的解码函数从Raw Buffer里读取数据并送入多媒体解码器去解码,以及将解码后的PCM数据送入Pcm Buffer中;
播放线程,用于通过调用JNI层的播放函数从Pcm Buffer中读取PCM数据进行播放;
接口和控制模块,用于及时响应用户命令,并把所述命令发送到所述读线程、解码线程以及播放线程,同时也返回多媒体当前播放的状态给用户。
相应地,本发明提供一种上述的多媒体播放器引擎系统的使用方法,包括:
通过API提供一用于预先选定使用所述标准OpenCore引擎或非标准扩展解码引擎对多媒体进行解码的标志位;
若所述标志位未选定引擎,先调用标准OpenCore引擎来对多媒体进行解码,当标准OpenCore引擎无法支持所述多媒体的格式时,则再使用非标准扩展解码引擎对多媒体进行解码;
若所述标志位选定非标准扩展解码引擎,选择调用所述非标准扩展解码引擎对所述多媒体进行解码;
若所述标志位选定标准OpenCore引擎,选择使用所述标准OpenCore引擎对所述多媒体进行解码。
进一步的,所述非标准扩展解码引擎包括多媒体解码器、JAVA层以及JNI层三层结构,所述JAVA层根据其读线程、解码线程和播放线程的需求,调用不同的JNI层函数,JNI层函数再调用所述多媒体解码器完成多媒体的读取、解码及播放任务。
进一步的,所述非标准扩展解码引擎对多媒体进行解码的步骤包括:
所述JAVA层的接口和控制模块及时响应用户命令,并将所述用户命令传递给所述JAVA层的读线程、解码线程和播放线程三个线程,同时返回多媒体的当前播放状态给用户;
所述读线程通过调用JNI层的读函数从网络和本地读取多媒体文件的数据,然后对所述数据进行解析得到送入多媒体解码器之前的数据;
所述解码线程通过调用JNI层的解码函数从JNI层的Raw Buffer里读取数据并送入多媒体解码器去解码,最后将解码后的PCM数据送入Pcm Buffer中;
所述播放线程通过调用JNI层的播放函数从Pcm Buffer中读取PCM数据进行播放。
此外,本发明还提供一种多媒体播放器,所述多媒体播放器使用上述的多媒体播放器引擎系统及其使用方法播放多媒体文件。
此外,本发明还提供一种多媒体播放器的使用方法,使用上述的多媒体播放器引擎系统的使用方法。
与现有技术相比,本发明提供的多媒体播放器引擎系统及其使用方法和多媒体播放器其使用方法,通过API集成了标准OpenCore引擎和非标准扩展解码引擎两种多媒体播放引擎,因此在包含OpenCore所提供的多媒体播放器引擎所具有的优点的同时,通过非标准扩展解码引擎解决支持多媒体格式有限、难以扩展其所支持的多媒体格式的问题,结构清晰、简单、可执行性高、兼容性好。
附图说明
图1是本发明一实施例的多媒体播放器引擎系统架构示意图;
图2是本发明一实施例的非标准扩展解码引擎的架构示意图;
图3是本发明一实施例的JAVA层的三个线程执行流程图;
图4是本发明一实施例的读线程调用读函数的流程图;
图5是本发明一实施例的解码线程调用解码函数的流程图;
图6是本发明一实施例的播放线程调用播放函数的流程图;
图7是本发明一实施例的多媒体播放器引擎系统使用方法流程图。
具体实施方式
以下结合附图和具体实施例对本发明提出的多媒体播放器引擎系统及其使用方法和多媒体播放器作进一步详细说明。
如图1所示,本发明提供一种多媒体播放器引擎系统,包括:
标准OpenCore引擎1,用于对多媒体进行OpenCore标准解码,以支持如Mp3、Wma、Wav等的标准多媒体格式;以及
非标准扩展解码引擎2,用于对标准多媒体频式以外的多媒体进行解码,以支持如Ape、Ogg、Flac、Dts等的非标准多媒体格式。
其中标准OpenCore引擎1为现有的Android系统的OpenCore,即本发明提供的多媒体播放器引擎系统可以选择直接调用Android OpenCore的API(Application Programming Interface,应用程序编程接口),来对如Mp3、Wma、Wav等的传统多媒体格式(即上述定义的标准多媒体格式)进行解码和播放。
非标准扩展解码引擎2主要是针对标准OpenCore引擎1不能扩展的问题而设计的,优选的,它不仅可以支持如Mp3、Wma、Wav等的标准多媒体格式,也可以支持Ape、Ogg、Flac、Dts等的标准OpenCore引擎1不支持的非标准多媒体格式。本发明提供的多媒体播放器引擎系统在使用时,可以根据多媒体格式在标准OpenCore引擎1和非标准扩展解码引擎2中选择合适多媒体播放引擎来对多媒体进行解码和播放。
如图2所示,所述非标准扩展解码引擎2包括多媒体解码器ffmpeg 23、JAVA层21以及JNI层22共三层结构。所述JAVA层21根据其读线程222、解码线程223和播放线程224的需求,调用不同的JNI层22函数,JNI层22函数再调用所述多媒体解码器23完成多媒体的读取、解码及播放任务。这样的设计,可以简化线程的开发,使其同步更加有效,从而是三个线程互相配合,高效、合理的完成多媒体解码播放任务。
请继续参考图2,所述JIN层22包括:
Raw Buffer 221,用于存放从给定地址(本地或网络)中获取并经过解析的待解码数据;
Pcm Buffer 225,用于存放经过解码后获得的PCM数据;
读函数ReadFrame 222,用于从根据给定地址获取多媒体文件,并调用所述多媒体解码器23解析多媒体文件头部信息,并根据获取的头部信息,逐帧从给定地址读取多媒体文件,并按序保存到Raw buffer 221中,如果在发生seek(即逐帧从给定地址读取多媒体文件失败)时,所述读函数将从seek到的位置(即发生错误的当前帧)开始读取多媒体文件;
解码函数DecodeFrame 223用于从所述Raw buffer 221中按序逐帧读取多媒体文件,并调用所述多媒体解码器23将读取到的多媒体文件进行解码,并按序将解码后的PCM数据保存到Pcm buffer 225中;
播放函数Copy2JBuffe224,用于从Pcm buffer 225中按序逐帧读取PCM数据流,并返回给所述JAVA层21。
其中,所述JAVA层21主要完成如下几个任务:(1)从给定源地址(本地和网络)读取文件,并能有序的进行存储;(2)将获取的文件进行正确的解码,并能有序的进行存储;(3)将解码后的文件进行播放,并及时通知相应线程,释放存储空间。请继续参考图2,本实施例中,JAVA层21总共分成四大块:接口和控制模块211、读线程212、解码线程213和播放线程214。JNI层22实现的函数对应JAVA层21的三个线程,供三个线程调用。AVA层21的四大块的作用分别是:
接口和控制模块211主要用于及时响应用户命令,并把所述命令发送到所述读线程212、解码线程213以及播放线程214,同时也返回多媒体当前播放的状态给用户;
读线程212主要用于通过调用JNI层22的读函数222从网络和本地读取多媒体文件的数据,然后对所述数据进行解析,得到送入多媒体解码器23之前的数据;
解码线程213主要用于通过调用JNI层22的解码函数21从Raw Buffer 221里读取数据并送入多媒体解码器去解码,以及将解码后的PCM数据送入PcmBuffer 225中;
播放线程214主要用于通过调用JNI层22的播放函数224从Pcm Buffer 225中读取PCM数据进行播放。
如图3所示,在所述非标准扩展解码引擎2工作过程中,JAVA层21三个线程的流程,包括:
S31,接口和控制模块211解析传递下来的命令;
S32,接口和控制模块211判断所述命令是否是退出,若是就直接退出,否则跳入S33步骤;
S33,接口和控制模块211判断命令是否是暂停,若是就跳到S36步骤,否则跳入S34步骤;
S34,读线程212、解码线程213和播放线程214三个线程根据命令需要调用JNI层的函数;
S35,接口和控制模块211分析JNI层的函数的返回值,并返回给上一层;
S36,计算休眠时间,调用sleep函数进行休眠;
S37,当有新命令时跳到S31步骤,若无新命令,就结束操作。
如图4所示,读函数(ReadFrame)222是读线程212调用的,本实施例的读函数(ReadFrame)222中定义全局整型变量frame_exist,初始化为0。如果成功从给定地址(本地或网络)读取一帧数据,将frame_exist设置为1,否则设置为0。将读取到的数据存入Raw Buffer 221后,将frame_exist设置为0。读线程212在非标准扩展解码引擎2中的作用也是通过读函数222实现的,读线程212调用读函授222的流程包括:
S40,判断现在是否做seek(即seek命令),若是是,跳入S41步骤,否则跳入S44步骤;
S41,调用seek函数做seek;
S42,判断调用seek函数做seek是否成功,若是,跳入S43步骤,否则跳入S44步骤;
S43,向JNI层的其他函数发送已经做seek的消息;
S44,判断frame_exist=0与否,若是,跳入S45步骤,否则跳入S47步骤;
S45,调用读取一帧数据的读函数;
S46,设置frame_exist=1;
S47,判断Raw Buffer还有空间并且frame_exits=1与否,若是,跳入S48步骤,否则什么都不做,结束;
S48,将数据放入Raw buffer 221中
S49,将frame_exist设置成0,结束读取。
如图5所示,解码函数(DecodeFrame函数)223是解码线程213调用的,本实施例的解码函数(DecodeFrame函数)223中定义全局整型变量raw_frame_exist,初始化为0。如果成功从Raw buffer 221中读取一帧数据,将raw_frame_exist设置为1,否则设置为0。解码函数将数据解码完毕后,将raw_frame_exist设置为0;同时定义全局整型变量dec_space_exist,初始化为0。解码函数将数据解码后,将dec_space_exist设置为1。将解码后获得的数据存放到Pcm Buffer中后,将dec_space_exist设置为0。解码线程213调用解码函数223的流程包括:
S501,判断是否有seek消息存在系统中,若是,跳到S502,否则跳到S503。
S502,更新RawBuffer 221里的数据,直到新数据出现,跳到S503;
S503,判断raw_frame_exist=0与否,若是,跳到S504,否则跳到S502;
S504,读线程212调用读函数222从RawBuffer 221里读取一帧,跳到S505;
S505,判断读取是否成功,若是,跳到S506,否则跳到S507;
S506,设置raw_frame_exist=1,跳到S507;
S507,判断raw_frame_exist=1并且dec_space_exist=0与否,若是,跳到S508,否则跳到S509;
S508,调用解码函数(DecodeFrame函数)去解码,跳到S509;
S509,设置raw_frame_exist=0和dec_space_exist=1,跳到S510;
S510,判断dec_space_exist=1与否,若是,跳到S511,否则返回;
S511,从Pcm Buffer 225里面找到空间,跳到S512;
S512,判断是否找到空间,若是,跳到S513,否则,返回;
S513,将解码后的PCM数据写入Pcm Buffer 225;
S514,设置dec_space_exist=0。
如图6所示,播放函数(Copy2JBuffer函数)224是播放线程214调用的JNI函数,即将Pcm Buffer 225里面的PCM数据读取并播放出来,流程包括:
S61,判断现在需要做Fade In(淡入)和Fade Out(淡出)吗(如果正在做seek就要做淡入淡出);若是,跳入S62,否则跳入S64;
S62,做淡入淡出函数。跳入S63;
S63,播放Buffer是否已经满了,是,跳入S67,否则跳入S64;
S64,Pcm Buffer里面还有数据?是跳入S66,否则返回;
S65,调用播放函数224拷贝Pcm Buffer数据到Java Buffer(缓冲区)中,跳入S66;
S66,播放buffer是否已经满了,是,跳入S67,否则返回;
S67,调用播放函数224播放播放Buffer里的PCM数据。
相应地,如图7所示,本发明提供一种上述的多媒体播放器引擎系统的使用方法,包括:
通过API提供一用于预先选定使用所述标准OpenCore引擎或非标准扩展解码引擎对多媒体进行解码的标志位;
若所述标志位等于0,先调用标准OpenCore引擎来对多媒体进行解码,当标准OpenCore引擎无法支持所述多媒体的格式时,则再使用非标准扩展解码引擎对多媒体进行解码;
若所述标志位等于1,选择调用所述非标准扩展解码引擎对所述多媒体进行解码;
若所述标志位等于2,选择使用所述标准OpenCore引擎对所述多媒体进行解码。
本实施例中,所述非标准扩展解码引擎包括多媒体解码器、JAVA层以及JNI层三层结构,所述JAVA层根据其读线程、解码线程和播放线程的需求,调用不同的JNI层函数,JNI层函数再调用所述多媒体解码器完成多媒体的读取、解码及播放任务;具体步骤包括:
所述JAVA层的接口和控制模块及时响应用户命令,并将所述用户命令传递给所述JAVA层的读线程、解码线程和播放线程三个线程,同时返回多媒体的当前播放状态给用户;
所述读线程通过调用JNI层的读函数从网络和本地读取多媒体文件的数据,然后对所述数据进行解析得到送入多媒体解码器之前的数据;
所述解码线程通过调用JNI层的解码函数从JNI层的Raw Buffer里读取数据并送入多媒体解码器去解码,最后将解码后的PCM数据送入Pcm Buffer中;
所述播放线程通过调用JNI层的播放函数从Pcm Buffer中读取PCM数据进行播放。
此外,本发明还提供一种多媒体播放器,该多媒体播放器使用本发明的多媒体播放器引擎系统,并通过本发明的多媒体播放器引擎系统的使用方法来播放输入的各种多媒体文件。
此外,本发明还提供一种多媒体播放器的使用方法,该使用方法使用到本发明多媒体播放器引擎系统的使用方法。
综上所述,本发明提供的多媒体播放器引擎系统及其使用方法和多媒体播放器及其使用方法,通过API集成了标准OpenCore引擎和非标准扩展解码引擎两种多媒体播放引擎,因此在包含OpenCore所提供的多媒体播放器引擎所具有的优点的同时,通过非标准扩展解码引擎解决支持多媒体格式有限、难以扩展其所支持的多媒体格式的问题;对于用户而言,是不需要对所调用的多媒体播放器引擎进行区分的,多媒体播放器引擎系统本身能够灵活地选择两种多媒体播放引擎,其多媒体编码器嵌入在非标准扩展解码引擎中,能很好地支持多格式软件解码和播放,播放效果好,结构清晰、简单、可执行性高、兼容性好,系统资源占用率低。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (15)

1.一种多媒体播放器引擎系统,其特征在于,包括:
标准OpenCore引擎,用于对多媒体进行OpenCore标准解码,以支持标准多媒体格式;以及
非标准扩展解码引擎,用于对所述标准多媒体频式以外的多媒体进行解码,以支持非标准多媒体格式。
2.如权利要求1所述的多媒体播放器引擎系统,其特征在于,所述标准多媒体格式包括Mp3、Wma、Wav。
3.如权利要求1所述的多媒体播放器引擎系统,其特征在于,所述非标准多媒体格式包括:Ape、Ogg、Flac、Dts。
4.如权利要求1所述的多媒体播放器引擎系统,其特征在于,所述多媒体播放器引擎系统通过API提供一标志位,用于预先选定使用所述标准OpenCore引擎或者所述非标准扩展解码引擎对所述多媒体进行解码。
5.如权利要求4所述的多媒体播放器引擎系统,其特征在于,所述标志位包含三个状态:未选定引擎状态、选定所述非标准扩展解码引擎状态以及选定所述标准OpenCore引擎状态。
6.如权利要求5所述的多媒体播放器引擎系统,其特征在于,所述标志位为未选定引擎状态时,先使用标准OpenCore引擎来对多媒体进行解码,若标准OpenCore引擎无法支持该多媒体格式时,则再使用非标准扩展解码引擎对多媒体进行解码。
7.如权利要求1所述的多媒体播放器引擎系统,其特征在于,所述非标准扩展解码引擎包括多媒体解码器、JAVA层以及JNI层三层结构,所述JAVA层根据其读线程、解码线程和播放线程的需求,调用不同的JNI层函数,JNI层函数再调用所述多媒体解码器完成多媒体的读取、解码及播放任务。
8.如权利要求7所述的多媒体播放器引擎系统,其特征在于,所述JIN层包括:
Raw Buffer,用于存放从给定地址中获取并经过解析的待解码多媒体数据;
Pcm Buffer,用于存放经过解码后获得的PCM数据;
读函数,用于从根据所述给定地址获取多媒体文件,并调用所述多媒体解码器解析多媒体文件头部信息,并根据获取的头部信息,逐帧从给定地址读取多媒体文件,并按序保存到Raw buffer中;
解码函数,用于从所述Raw buffer中按序逐帧读取多媒体文件,并调用所述多媒体解码器将读取到的多媒体文件进行解码,并按序将解码后的PCM数据保存到Pcm buffer中;
播放函数,用于从Pcm buffer中按序逐帧读取PCM数据流,并返回给所述JAVA层。
9.如权利要求8所述的多媒体播放器引擎系统,其特征在于,所述读函数在发生seek时,将从seek到的位置开始读取多媒体文件。
10.如权利要求7所述的多媒体播放器引擎系统,其特征在于,所述JAVA层包括:
读线程,用于通过调用JNI层的读函数从网络和本地读取多媒体文件的数据,然后对所述数据进行解析,得到送入多媒体解码器之前的数据;
解码线程,用于通过调用JNI层的解码函数从Raw Buffer里读取数据并送入多媒体解码器去解码,以及将解码后的PCM数据送入Pcm Buffer中;
播放线程,用于通过调用JNI层的播放函数从Pcm Buffer中读取PCM数据进行播放;
接口和控制模块,用于及时响应用户命令,并把所述命令发送到所述读线程、解码线程以及播放线程,同时也返回多媒体当前播放的状态给用户。
11.一种如权利要求1所述的多媒体播放器引擎系统的使用方法,其特征在于,包括:
通过API提供一用于预先选定使用所述标准OpenCore引擎或非标准扩展解码引擎对多媒体进行解码的标志位;
若所述标志位未选定引擎,则先调用标准OpenCore引擎来对多媒体进行解码,当标准OpenCore引擎无法支持所述多媒体的格式时,则再使用非标准扩展解码引擎对多媒体进行解码;
若所述标志位选定所述非标准扩展解码引擎,则选择调用所述非标准扩展解码引擎对所述多媒体进行解码;
若所述标志位选定所述标准OpenCore引擎状态,选择使用所述标准OpenCore引擎对所述多媒体进行解码。
12.如权利要求11所述的使用方法,其特征在于,所述非标准扩展解码引擎包括多媒体解码器、JAVA层以及JNI层三层结构,所述JAVA层根据其读线程、解码线程和播放线程的需求,调用不同的JNI层函数,JNI层函数再调用所述多媒体解码器完成多媒体的读取、解码及播放任务。
13.如权利要求12所述的使用方法,其特征在于,所述非标准扩展解码引擎对多媒体进行解码的步骤包括:
所述JAVA层的接口和控制模块及时响应用户命令,并将所述用户命令传递给所述JAVA层的读线程、解码线程和播放线程三个线程,同时返回多媒体的当前播放状态给用户;
所述读线程通过调用JNI层的读函数从网络和本地读取多媒体文件的数据,然后对所述数据进行解析得到送入多媒体解码器之前的数据;
所述解码线程通过调用JNI层的解码函数从JNI层的Raw Buffer里读取数据并送入多媒体解码器去解码,最后将解码后的PCM数据送入Pcm Buffer中;
所述播放线程通过调用JNI层的播放函数从Pcm Buffer中读取PCM数据进行播放。
14.一种多媒体播放器,其特征在于,所述多媒体播放器使用权利要求1至10中任一项所述的多媒体播放器引擎系统,并通过权利要求11至13中任一项所述的使用方法播放多媒体文件。
15.一种多媒体播放器的使用方法,其特征在于,使用权利要求11至13中任一项所述的使用方法。
CN 201210093364 2012-03-31 2012-03-31 多媒体播放器引擎系统及其使用方法和多媒体播放器 Pending CN103366780A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201210093364 CN103366780A (zh) 2012-03-31 2012-03-31 多媒体播放器引擎系统及其使用方法和多媒体播放器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201210093364 CN103366780A (zh) 2012-03-31 2012-03-31 多媒体播放器引擎系统及其使用方法和多媒体播放器

Publications (1)

Publication Number Publication Date
CN103366780A true CN103366780A (zh) 2013-10-23

Family

ID=49367962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201210093364 Pending CN103366780A (zh) 2012-03-31 2012-03-31 多媒体播放器引擎系统及其使用方法和多媒体播放器

Country Status (1)

Country Link
CN (1) CN103366780A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015196756A1 (zh) * 2014-06-25 2015-12-30 中兴通讯股份有限公司 一种运行应用程序的方法及设备
CN105245795A (zh) * 2014-06-24 2016-01-13 艾杜菲尔传媒有限公司 多媒体数据复合法及安卓系统中播放动图的视频播放器
WO2016154855A1 (zh) * 2015-03-30 2016-10-06 联发科技(新加坡)私人有限公司 Android自带多媒体播放器的功能扩展方法和多媒体播放系统
CN106791546A (zh) * 2017-01-04 2017-05-31 腾讯科技(深圳)有限公司 媒体数据播放方法和装置
CN110062296A (zh) * 2019-04-09 2019-07-26 南昌嘉研科技有限公司 一种实时流媒体播放器及其架构方法
CN111314646A (zh) * 2020-02-27 2020-06-19 Oppo(重庆)智能科技有限公司 图像获取方法、图像获取装置、终端设备及可读存储介质
CN111797270A (zh) * 2019-08-07 2020-10-20 厦门雅基软件有限公司 音频播放方法、装置、电子设备及计算机可读存储介质

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245795A (zh) * 2014-06-24 2016-01-13 艾杜菲尔传媒有限公司 多媒体数据复合法及安卓系统中播放动图的视频播放器
WO2015196756A1 (zh) * 2014-06-25 2015-12-30 中兴通讯股份有限公司 一种运行应用程序的方法及设备
US20180107496A1 (en) * 2015-03-30 2018-04-19 Xutong Hu Method of expanding function of android standard multimedia player and multimedia playing system
WO2016154855A1 (zh) * 2015-03-30 2016-10-06 联发科技(新加坡)私人有限公司 Android自带多媒体播放器的功能扩展方法和多媒体播放系统
CN107077872A (zh) * 2015-03-30 2017-08-18 联发科技(新加坡)私人有限公司 Android自带多媒体播放器的功能扩展方法和多媒体播放系统
WO2018126852A1 (zh) * 2017-01-04 2018-07-12 腾讯科技(深圳)有限公司 媒体数据播放方法、电子设备和计算机可读存储介质
CN106791546A (zh) * 2017-01-04 2017-05-31 腾讯科技(深圳)有限公司 媒体数据播放方法和装置
CN106791546B (zh) * 2017-01-04 2019-08-23 腾讯科技(深圳)有限公司 媒体数据播放方法和装置
CN110062296A (zh) * 2019-04-09 2019-07-26 南昌嘉研科技有限公司 一种实时流媒体播放器及其架构方法
CN110062296B (zh) * 2019-04-09 2021-06-29 南昌嘉研科技有限公司 一种实时流媒体播放器及其架构方法
CN111797270A (zh) * 2019-08-07 2020-10-20 厦门雅基软件有限公司 音频播放方法、装置、电子设备及计算机可读存储介质
CN111314646A (zh) * 2020-02-27 2020-06-19 Oppo(重庆)智能科技有限公司 图像获取方法、图像获取装置、终端设备及可读存储介质
CN111314646B (zh) * 2020-02-27 2021-04-23 Oppo(重庆)智能科技有限公司 图像获取方法、图像获取装置、终端设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN103366780A (zh) 多媒体播放器引擎系统及其使用方法和多媒体播放器
TWI328801B (zh)
JP4867235B2 (ja) 情報処理装置および情報処理方法、記録媒体、並びに、プログラム
JP5284510B2 (ja) データ記録システム、データ記録方法およびデータ記録プログラム
US20120185861A1 (en) Media foundation media processor
CN101512656A (zh) 具有提前渲染队列的gpu时间线
CN100477766C (zh) 音频/视频信息记录再现装置及方法
KR20120049604A (ko) 모바일 디바이스의 메모리 관리 방법 및 장치
KR20010040207A (ko) 데이터 기록재생장치 및 그 방법
KR101408021B1 (ko) 멀티미디어 파일 제어 과정에서 빠른 응답을 구현하는 방법 및 재생 장치
CN104424970A (zh) 一种多媒体播放信息的同步方法及装置
KR100626101B1 (ko) 정보 기록 방법 및 장치와 정보 재생 방법 및 장치
CN105142004A (zh) 多媒体文件读取方法及装置
JPWO2008068940A1 (ja) 映像音声再生装置
JP2007036495A (ja) 再生装置、圧縮装置、記録装置及び再生方法
TW200425079A (en) Information storage medium storing moving picture data and additional data, reproducing apparatus and method therefor
US7149757B2 (en) Information processing apparatus, method of controlling information processing apparatus, control program for information processing apparatus and recording medium having control program recorded thereon for information processing apparatus
EP1401206A2 (en) Stream Data Processing Apparatus
KR20050078498A (ko) 이벤트 정보가 포함된 동영상 데이터가 기록된 저장 매체,재생 장치, 및 그 재생 방법
JPH1145518A (ja) 映像記録装置及びコンピュータ読み取り可能な記録媒体
JP2004227676A (ja) 記録装置および記録制御方法、ならびに、記録再生装置
CN103501443A (zh) 一种流媒体数据的处理方法及装置
KR101022479B1 (ko) 이벤트 정보가 포함된 동영상 데이터가 기록된 저장 매체, 재생 장치 및 재생 방법
WO2024067645A1 (zh) 一种处理方法及相关装置
JP2001169238A (ja) ノンリニア編集装置、ノンリニア編集方法、記録媒体、テスト方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20131023