FFMPEG с поддержкой аппаратного кодека

Я создал простой медиаплеер, используя ffmpeg на Android 2.2. Аппаратное обеспечение представляет собой процессор на основе ядра cortex-a8 на базе 1 ГГц, 512 МБ ОЗУ. Я получаю низкую производительность, около 15 FPS для видео 800x600 mp4. У меня есть несколько вопросов о том, как я могу улучшить производительность.

  • Как я могу использовать аппаратные кодеки, доступные на моем целевом устройстве. Как настроить ffmpeg для использования доступных аппаратных декодеров? Требуется ли для GPU или графического драйвера некоторый стандартный API, такой как OpenMax IL?

  • Каковы параметры, которые должны быть включены при создании ffmpeg, чтобы его можно было оптимизировать для моего целевого оборудования? Что-то вроде: --cpu=cortex=a8 --extra-cflags="-mfpu=neon" ...

Я уже просмотрел сеть, но я не мог найти ответы, которые я ищу. Надеюсь, кто-то может посоветовать мне об этом.

Спасибо заранее!

Ответы

Ответ 1

В libav/ffmpeg должен быть определенный код, соответствующий вашему оборудованию. Прямо сейчас я вижу поддержку некоторых декодеров HW и оборудования, в котором есть драйверы, которые предоставляют API VPAPI или VDPAU (в основном NVidia).

Ваше аппаратное обеспечение не поддерживается на родном пути с помощью запасных драйверов libavcodec. Вы можете получить ускоренное декодирование, если вы можете получить либо исходные патчи для libavcodec, либо драйверы, которые предоставляют один из поддерживаемых API ускорения декодирования.

Другими словами, вы должны спросить своего поставщика HW.