繁体   English   中英

Media Player Android应用程序(如MXPlayer和MoboPlayer)如何播放不受支持的文件格式,如MKV?

[英]How do Media Player Android apps like MXPlayer and MoboPlayer play unsupported file formats like MKV?

默认情况下,Android不支持许多媒体文件格式(如.mkv等文件)。 但是像MXPlayer和MoboPlayer这样的玩家可以让你播放这些文件。 这些应用程序如何工作? 是否有任何编程教程或文章解释它是如何完成的?

Android默认情况下不支持所有媒体格式。 因此,为了支持不受支持的格式,MoboPlayer等应用程序通过JNI结合使用Java和本机代码来执行标准的媒体播放器任务。

要了解更多信息,让我们看看媒体播放器播放媒体文件的方式以及MoboPlayer如何在Android中执行这些操作。

Typical tasks of a Media Player

玩家需要执行以下任务(a)解复用文件格式并提取视频/音频(b)解码视频和音频(c)显示视频和播放音频。 让我们考虑如何像MoboPlayer一样处理这三个区域。

File format Demux

默认情况下,Android不支持所有文件格式容器。 例如,不支持ASF(WMV文件的文件格式)。 因此,玩家需要拥有自己的分离器来完成这项工作。 libavformat(由FFMPEG使用)是一个领先的开源demux库。

Video/Audio decode

libavcodec(由FFMPEG使用)是一个领先的开源解码器库,它解码解复用的流并产生未压缩的原始输出帧。 因此它经常被像MoboPlayer这样的玩家使用。

Video display

显示视频有两种选择。 玩家使用SurfaceView缓冲区或OpenGL加速缓冲区。 Android将一个java Surface对象(底层表面flinger对象的抽象)转换为一个名为NativeWindow的内部本机对象,然后可以通过本机代码访问它。

从ICS(Android 4.0)开始,Android也提供对OpenGL加速缓冲区( SurfaceTexureTextureView )的访问。 这些也可用于显示视频。

Audio playout

玩家可以直接与Java级别提供的AudioTrack对象进行交互,以播放解码的音频样本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM