2012-03-11 14 views
11

Android no admite muchos formatos de archivos multimedia (archivos como .mkv) de forma predeterminada. Pero jugadores como MXPlayer y MoboPlayer te permiten jugar esos archivos. ¿Cómo funcionan estas aplicaciones? ¿Hay tutoriales de programación o artículos que explican cómo se hace?¿Cómo juegan las aplicaciones de Media Player de Android, como MXPlayer y MoboPlayer, formatos de archivo no compatibles como MKV?

+0

mkv es solo un contenedor. puede usar muchos códecs de video/audio diferentes dentro de ... – Goddchen

Respuesta

10

Android no es compatible con todos los formatos de medios de forma predeterminada. Por lo tanto, para admitir un formato no compatible, las aplicaciones como MoboPlayer realizan tareas estándar de reproductores multimedia utilizando una combinación de Java y código nativo a través de JNI.

Para comprender más, veamos qué hace un reproductor de medios para reproducir un archivo multimedia y cómo estos son ejecutados por MoboPlayer, como las aplicaciones en Android.

Typical tasks of a Media Player

un jugador necesita para llevar a cabo las tareas siguientes (a) Demux el formato de archivo y extraer el vídeo/audio (b) decodificar el vídeo y el audio (c) Visualizar el vídeo y reproducir el audio. Consideremos cómo se pueden manejar estas tres áreas en el caso de MoboPlayer como jugador.

File format Demux

Android no es compatible con todos los contenedores de formato de archivo por defecto. Por ejemplo, ASF (formato de archivo de archivos WMV) no es compatible. Por lo tanto, un jugador necesita tener su propio demuxer para hacer el trabajo. libavformat (utilizado por FFMPEG) es una biblioteca líder de código abierto demux.

Video/Audio decode

libavcodec (utilizado por FFMPEG) es una biblioteca decodificador de fuente abierta que conduce que decodifica corriente demuxed y produce tramas de salida en bruto sin comprimir. Por lo tanto, es utilizado a menudo por jugadores como MoboPlayer.

Video display

Hay dos opciones para visualizar un video. Los jugadores usan búferes SurfaceView o búferes acelerados OpenGL. Android proporciona un elenco de objeto Surface java (abstracción del objeto flinger de superficie subyacente) a un objeto nativo interno llamado NativeWindow, que luego se puede acceder mediante el código nativo.

ICS (Android 4.0) en adelante, Android proporciona acceso a los búferes acelerados OpenGL (SurfaceTexure y TextureView) también. Estos se pueden usar para mostrar el video también.

Audio playout

Los jugadores pueden interactuar directamente con el objeto AudioTrack proporcionada a nivel de Java para reproducir las muestras de audio decodificadas.

+1

OakBytes tiene razón. Estos jugadores usan analizadores de programas/decodificadores de terceros, ya sean patentados o FFMPEG. Algunos jugadores también usan OpenGL para su visualización. La mayoría de ellos usa SuraceView y su contraparte nativa NativeWindow para mostrar video decodificado. Esto funciona sin el marco nativo y se sienta en paralelo a él. Por lo tanto, moboplayer también proporciona una opción para usar decodificadores de software o hardware. – peasea

Cuestiones relacionadas