Замена стандартного программного кодировщика Android H264 кодировщиком на основе ffmpeg

В Android ICS и более поздних версиях используется новая версия OpenMax IL API, что делает старые бинарные большие двоичные объекты бесполезными или неиспользуемыми. Это приводит к тому, что старые устройства, которые в остальном работают с ICS просто отлично и денди, не могут воспроизводить видео (YouTube HQ и IMBD, например ), потому что резервный программный декодер Android отстой по сравнению с тем, что ffmpeg может делать на том же устройстве (. ] Я протестировал MXPlayer+arm6vfp ffmpeg, и фильм с разрешением 720p отлично воспроизводился ).

Я пытаюсь копаться в исходном коде Android, чтобы увидеть, где и что именно я могу добавить / заменить код, чтобы можно было использовать удивительную библиотеку ffmpeg. Проблема в том, что я точно не знаю, какой код используется, например, в приложении YouTube для декодирования видео или как это решается.

Так что у меня есть два варианта, насколько я могу судить:

  1. Выясните, какой программный декодер используется в настоящее время, и попытайтесь обернуть его внешний интерфейс вокруг ffmpeg, эффективно заменив используемый в настоящее время медленный программный декодер. Конечным результатом будет один файл.so, который я мог бы нажать на устройство.

  2. Выясните, как обмануть Android, заставив его думать о библиотеке OMX на основе ffmpeg (Я успешно создал ее для Android:лимуа)и добавьте это куда-нибудь в список рассматриваемых библиотек (или лучше :замените непригодный аппаратный кодек ).

В качестве расширения я также хотел бы, чтобы через это работало кодирование видео с видеокамеры, поэтому очень хотелось бы получить истинно интегрированное решение. Вопрос :как, где и что? Поиск в дереве исходных кодов Android дает многочисленные подсчеты «H264» и связанных с ними вещей во многих разных местах. Мне нужен самый низкий и простой из возможных, поэтому я могу просто обернуть гипотетический вызов функции decode(buffer)для использования ffmpeg (libavcodec ).

7
задан rubenvb 11 July 2012 в 12:39
поделиться