4

У меня есть задача, которая включает интеграцию видеодекодера в Stagefright (мультимедийная инфраструктура Android). Я искал и нашел следующее о создании нового плагина для Stagefright:Как создать плагин stagefright

Чтобы добавить поддержку нового формата, вам необходимо:

  • Разработка нового класса Extractor, если контейнер не поддерживается.

  • Разработайте новый класс декодера, который реализует интерфейс, необходимый для ядра StageFright, для считывания данных.

  • Связать файлы типа mime с файлами для чтения в новом декодере в файле OMXCodec.cpp в массиве kDecoderInfo.

static const CodecInfo kDecoderInfo[] = { 
     {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode"}, 
     {MEDIA_MIMETYPE_AUDIO_AAC, "AACDecoder"}, 
    }; 

Приведенные выше данные все я мог бы узнать в сети. Прямо сейчас у меня есть простое приложение, которое возьмет файл в качестве ввода и отобразит его на экране с использованием встроенного API в Android. Может кто-нибудь, пожалуйста, скажите мне, как двигаться дальше. И откуда все эти OMXCodec.cpp и другие приходят в картину и в какой каталог моего проекта я должен иметь их. Просьба предоставить решения относительно того же. Заранее спасибо.

ответ

10

С вашего вопроса, похоже, что вы ищете рекомендацию, которая предназначена для Ice-Cream Sandwich или более ранних версий Android. Первое, о чем вам следует говорить, это версия андроида i.e. Ice-Cream Sandwich или до или JellyBean и после. Интеграция кодеков различна в разных версиях Android.

Я уже прокомментировал ваш другой вопрос, который является специфичным для JellyBean и позже (Ссылка: Android: How to integrate a decoder to multimedia framework)

Если вы хотели бы интегрировать кодек в Ice-Cream Sandwich или раньше, шаги уже доступны в вашем вопросе. В дополнение к добавлению декодера в список kDecoderInfo, вы можете настроить некоторые причуды, как показано на рисунке here.

На вопрос о OMXCodec.cpp, вы можете найти этот файл на frameworks/base/media/libstagefright/ в случае Ice-Cream Sandwich и frameworks/av/media/libstagefright/ в случае JellyBean.

Если вы выполнили все шаги для интеграции видеодекодер в Stagefright рамки, то самый простой тест будет выполнить следующие действия:

  1. Копирование медиа-файлов в SD-Card

  2. В OMXCodec.cpp включите журналы, удалив комментарий в этом операторе //#define LOG_NDEBUG 0 и запустите mm в каталоге. Скопируйте восстановленный libstagefright.so на номер /system/lib на ваше устройство.

  3. Включите logcat и начните записывать журналы.

  4. Перейти к галерее, выберите файл и разрешите стандартным проигрывателям проигрывать файл.

  5. Проверьте файл журнала, если игрок выбрал ваш компонент OMX, выполнив поиск имени вашего компонента. Если вы нашли, ваша интеграция кодека в Stagefright будет успешной. Иначе вам придется отлаживать и выяснять, в чем проблема.

Постскриптум:

  1. на основе ваших запросов, я полагаю, вы не знакомы с Android источников. Пожалуйста, обратитесь к сайту androidxref, чтобы ознакомиться с AOSP дистрибутивами.

  2. Если вы не планируете поддерживать новый мультимедийный файловый формат, вам не потребуется поддерживать класс Extractor. MediaExtractor абстрагирует синтаксический анализатор формата файла и помогает демультиплексировать разные дорожки в медиафайле.

Надеюсь, что с этой информацией вы сможете интегрировать и использовать свой кодек в Android.

+0

Большое спасибо ... С этой информацией я уверен, что смогу продолжить. Если возможно, вы можете указать конкретную ссылку, где я могу узнать из основ об источниках Android. В приведенной выше ссылке http://androidxref.com/ я не могу найти основы для того, чтобы начать использовать источники Android в моем проекте. Я был бы вам очень полезен, если бы вы могли предоставить источник использования источников Android в любом приложении. Также небольшой запрос: мы модифицируем исходный код Android и просто создаем автономный плагин для существующего исходного кода.? – Zax

+1

@ Zax Если вы ищете введение уровня Java, вы можете начать здесь: http://developer.android.com/training/index.html. Однако, если вы смотрите на примечания по интеграции, вы можете прочитать больше в архивах stackoverflow. Для интеграции кодека в «Ice-Cream Sandwich» вам придется модифицировать Android-источники. Для интеграции в 'JellyBean' вы обновляете конкретный файл платформы, а не источники, который является ожидаемым способом интеграции. – Ganesh

+0

Наконец, я понял, что мне нужно перестроить часть исходного кода Android и создать libstagefright.so, используя Android.mk и замените его на существующий в/system/libs на моем устройстве. Теперь, чтобы создать этот файл * .so, мне нужно загрузить весь исходный код Android, или мне просто нужно загрузить фреймворки/base/media/libstagefright/contents? – Zax

Смежные вопросы