2016-09-28 3 views
8

Я работаю над чат-приложением вроде WhatsApp, я хочу перекодировать файл мультимедиа перед загрузкой на сервер, я прошел через так много ссылок, но не смог решить, какой метод я должен использовать, есть ли прямой способ перекодирования в android?Транскодирование Аудио/Видео/Файл изображения на устройстве Android

  • FFMPEG я нашел это очень ресурсоемкий процесс, он будет потреблять больше энергии батареи

  • Media Codec я хочу сделать перекодирование с помощью mediacodec, но не в состоянии получить надлежащие меры для понять процесс.

Best link to give idea about transcoding

Library to transcode using media codec (Он имеет множество ошибок)

ответ

1

Мы использовали как реализацию для нашего приложения для редактирования видео. В основном мы использовали реализацию MediaCodec, если версия для Android> = 4.3 и использовать FFMPEG в противном случае.

Проблема с использованием FFMPEG:

  1. Как вы сказали, процессор интенсивный процесс, таким образом, потребляют больше энергии
  2. x264 кодер под лицензией GPL, так что вы можете захотеть использовать OpenH264 кодер вместо которые поддерживают только Baseline Профиль, поэтому качество видео не является лучшим
  3. Поскольку используется программный кодировщик, скорость обработки данных относительно медленно, по крайней мере, по сравнению с реализацией MediaCodec

MediaCodec также имеют некоторые недостатки, хотя, например:

  1. Если вы хотите сделать транскодирование, андроид версии должны быть> = 4.3, если вы не хотите иметь дело с преобразованием формата цвета самостоятельно, совершенно беспорядок, так как каждый у поставщика может быть собственная реализация цветового формата. (Начиная с версии 4.3, поддержка MediaCodec с использованием входной поверхности)
  2. Аппаратный кодер может вести себя по-разному для разных моделей. (Например, некоторые кодер может производит B кадры, которые еще не поддерживаются андроид MediaMuxer, так что вы можете использовать FFmpeg для мультиплексирования части)

Так что я должен сказать, если вы только поддержать новый андроид версии, вы должны используйте mediacodec, но если вы хотите быть в безопасности (проще писать код, который работает на всех устройствах) и не имеет против производительности, используйте FFMPEG с OpenH264

0

MediaCodec Android является относительно лучшим способом перекодировать на клиенте, так как он использует свою собственную обработку буфера низкого уровня. Но тогда это не обеспечивает сложную свободу настройки, как это делает FFMpeg. Что касается исходного кода MediaCodec, он также имеет интенсивность процессора для хранения буферов и обработки их, но на самом деле он меньше, чем FFmpeg.

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