7 Stimmen

Ersetzen des Standard-H264-Software-Encoders von Android durch einen ffmpeg-basierten Encoder

Ab Android ICS wird eine neue Version der OpenMax IL API verwendet, wodurch die alten Binärblöcke unbrauchbar/unverwendet werden. Dies führt zu älteren Geräten, die sonst ICS laufen gut und schön, um gebrochene Videowiedergabe (YouTube HQ und IMBD, zum Beispiel) haben, weil Androids Fallback-Software-Decoder saugt im Vergleich zu dem, was ffmpeg auf dem gleichen Gerät tun können (Ich testete MXPlayer + arm6vfp ffmpeg und ein 720p-Film wiedergegeben groß).

Ich versuche, durch den Android-Quellcode zu graben, um zu sehen, wo und was genau könnte ich hinzufügen/ersetzen Code, damit die ffmpeg-Bibliothek die awesomeness verwendet werden. Das Problem ist, dass ich nicht genau weiß, welcher Code zum Beispiel in der YouTube-App verwendet wird, um Videos zu dekodieren, oder wie das entschieden wird.

Ich habe also zwei Möglichkeiten, soweit ich das beurteilen kann:

  1. Finde heraus, welcher Software-Decoder derzeit verwendet wird, und versuche, seine externe Schnittstelle um ffmpeg zu wickeln, um den derzeit verwendeten langsamen Software-Decoder effektiv zu ersetzen. Das Endergebnis wäre ein einziges .so könnte ich auf das Gerät drücken.

  2. Finde heraus, wie man Android austrickst, damit es denkt, dass eine OMX-Bibliothek auf ffmpeg basiert (ich habe eine erfolgreich für Android gebaut: limoa ) und fügen Sie diese irgendwo in die Liste der berücksichtigten Bibliotheken ein (oder besser: ersetzen Sie den unbrauchbaren Hardware-Codec).

Als Erweiterung würde ich gerne auch die Videocodierung von Camcordern damit ermöglichen, daher wäre eine echte integrierte Lösung sehr wünschenswert. Die Frage ist: wie und wo und was? Das Durchsuchen des Android-Quellbaums ergibt zahlreiche Zählungen von "H264" und ähnlichem Zeug an vielen verschiedenen Stellen. Ich brauche die niedrigste und einfachste möglich, so kann ich einfach wickeln die hypothetische decode(buffer) Funktionsaufruf zur Verwendung von ffmpeg (libavcodec).

4voto

hrk Punkte 56

Es scheint mir, dass diese Präsentation ("Integration eines Hardware-Video-Codecs in Android Stagefright mit OpenMAX IL") ist genau das, was Sie tun möchten. Viel Glück mit Ihrem Projekt!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X