Comment les applications Android Media Player comme MXPlayer et MoboPlayer lisent-elles les formats de fichiers non pris en charge comme MKV ?

StackOverflow https://stackoverflow.com//questions/9654714

  •  11-12-2019
  •  | 
  •  

Question

Android ne prend pas en charge par défaut de nombreux formats de fichiers multimédias (fichiers tels que .mkv).Mais des lecteurs comme MXPlayer et MoboPlayer vous permettent de lire de tels fichiers.Comment fonctionnent ces applications ?Existe-t-il des tutoriels de programmation ou des articles expliquant comment procéder ?

Était-ce utile?

La solution

Android ne prend pas en charge tous les formats multimédias par défaut.Par conséquent, pour prendre en charge un format non pris en charge, des applications telles que MoboPlayer effectuent elles-mêmes les tâches standard du lecteur multimédia en utilisant une combinaison de Java et de code natif via JNI.

Pour mieux comprendre, voyons ce que fait un lecteur multimédia pour lire un fichier multimédia et comment ceux-ci sont exécutés par MoboPlayer comme les applications sous Android.

Typical tasks of a Media Player

Un lecteur doit effectuer les tâches suivantes (a) Démultiplexer le format de fichier et extraire la vidéo/audio (b) Décoder la vidéo et l'audio (c) Afficher la vidéo et lire l'audio.Voyons comment ces trois domaines peuvent être gérés dans le cas d'un joueur de type MoboPlayer.

File format Demux

Android ne prend pas en charge tous les conteneurs de formats de fichiers par défaut.Par exemple, ASF (format de fichier WMV) n'est pas pris en charge.Par conséquent, un joueur doit disposer de son propre démultiplexeur pour faire le travail.libavformat (utilisé par FFMPEG) est une bibliothèque de démultiplexage open source leader.

Video/Audio decode

libavcodec (utilisé par FFMPEG) est une bibliothèque de décodage open source leader qui décode le flux démultiplexé et produit des images de sortie brutes non compressées.Il est donc souvent utilisé par des joueurs comme MoboPlayer.

Video display

Il existe deux options pour afficher une vidéo.Les joueurs utilisent soit SurfaceView tampons ou tampons accélérés OpenGL.Android fournit une conversion de l'objet Java Surface (abstraction de l'objet Flinger de surface sous-jacent) vers un objet natif interne appelé NativeWindow, auquel on peut ensuite accéder par le code natif.

À partir d'ICS (Android 4.0), Android donne accès aux tampons accélérés OpenGL (SurfaceTexure et TextureView) aussi.Ceux-ci peuvent également être utilisés pour afficher la vidéo.

Audio playout

Les joueurs peuvent interagir directement avec le AudioTrack objet fourni au niveau Java pour lire les échantillons audio décodés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top