2012-03-11 5 views
11

System Android nie obsługuje domyślnie wielu formatów plików multimedialnych (takich jak .mkv). Ale gracze tacy jak MXPlayer i MoboPlayer umożliwiają odtwarzanie takich plików. Jak działają te aplikacje? Czy są jakieś tutoriale do programowania lub artykuły opisujące, jak to się robi?W jaki sposób aplikacje Media Player dla systemu Android, takie jak MXPlayer i MoboPlayer, odtwarzają nieobsługiwane formaty plików, takie jak MKV?

+0

mkv to tylko pojemnik. możesz użyć wielu różnych kodeków wideo/audio wewnątrz ... – Goddchen

Odpowiedz

10

System Android nie obsługuje domyślnie wszystkich formatów multimediów. W związku z tym, aby obsługiwać nieobsługiwany format, aplikacje takie jak MoboPlayer same wykonują standardowe zadania odtwarzacza multimediów za pomocą kombinacji Java i kodu natywnego za pośrednictwem interfejsu JNI.

Aby lepiej zrozumieć, zobaczmy, co robi odtwarzacz multimedialny, aby odtworzyć plik multimedialny i jak są one wykonywane przez MoboPlayer, takie jak aplikacje w systemie Android.

Typical tasks of a Media Player

Gracz musi wykonać następujące zadania (a) demultiplekser format pliku i wyodrębnić audio/video (b) dekodowania wideo i audio (c) Wyświetla filmy i odtwarzać dźwięk. Zastanówmy się, jak te trzy obszary mogą być obsługiwane w przypadku odtwarzacza MoboPlayer.

File format Demux

Android nie obsługuje wszystkich pojemników format pliku, domyślnie. Na przykład ASF (format plików WMV) nie jest obsługiwany. Dlatego gracz musi mieć własnego demuxera, który wykona zadanie. libavformat (używany przez FFMPEG) jest wiodącą biblioteką demultipleksu open source.

Video/Audio decode

Libavcodec (używany przez FFMPEG) jest wiodącą biblioteki dekoder open source dekoduje demuxed i wytwarza nieskompresowane ramek wyjściowych surowe. Dlatego jest często używany przez graczy takich jak MoboPlayer.

Video display

Istnieją dwie opcje do wyświetlenia filmu. Gracze używają buforów SurfaceView lub przyspieszonych buforów OpenGL. Android dostarcza rzut obiektu java Surface (abstrakcja leżącego poniżej obiektu flinger) do wewnętrznego obiektu natywnego o nazwie NativeWindow, do którego można uzyskać dostęp za pomocą natywnego kodu.

System ICS (system Android 4.0) umożliwia także dostęp do przyspieszonych buforów OpenGL (SurfaceTexure i TextureView). Mogą one również służyć do wyświetlania wideo.

Audio playout

Gracze mogą bezpośrednio współdziałać z obiektem AudioTrack przewidzianym na poziomie Java, aby odtworzyć zakodowane próbki audio.

+1

OakBytes ma rację. Gracze używają parserów/oprogramowania-dekoderów innych firm, własnościowych lub FFMPEG. Niektórzy gracze używają również OpenGL do wyświetlania. Większość z nich korzysta z SuraceView i rodzimego odpowiednika NativeWindow do wyświetlania dekodowanego wideo. Działa to bez rodzimej architektury i jest równoległe do niego. W związku z tym moboplayer przewiduje również opcję używania dekoderów programowych lub sprzętowych. – peasea

Powiązane problemy