Android обрабатывает видео, кадры YCrCb к видео - PullRequest
3 голосов
/ 01 декабря 2011

Я хочу обработать видео, которое записываю на телефон Android, изменив цвет пикселей.Я знаю, как выполнять обработку, которую я хочу, но я не знаю лучшего способа собрать все воедино.

Пока что вещи, которые я могу сделать, таковы:

  • Получить один кадр из видео как YCrCb (YUV)
  • Изменить байты в YCrCb, как я хочу
  • Преобразовать YCrCb в массив RGB
  • Преобразование массива RGB в растровое изображение

Как собрать все вместе и сохранить обратно как видео, которое я могу воспроизвести на Android?Могу ли я перейти прямо от информации YCrCb?Или мне нужно сначала конвертировать в RGB или другой формат?

Мне не нужно делать это в режиме реального времени, цель состоит в том, чтобы записать видео, сохранить его, затем обработать и сохранитьобработанное видео.Однако я имею в виду скорость.Есть ли их библиотеки, которые я могу использовать для ускорения процесса?Я знаю, что Android использует OpenGL, и я читал о ffmpeg, но я не уверен, какой путь выбрать.

Если бы кто-то мог указать мне правильное направление, я был бы признателен!= D

Спасибо !!= D

1 Ответ

2 голосов
/ 01 декабря 2011

Кадры, полученные с камеры, распакованы.Обычно это не тот способ хранения видео, поскольку несжатые кадры слишком велики, чтобы проигрыватель мог их читать и отображать в реальном времени.Вместо этого вы хотите кодировать кадры yuv или rgb, чтобы они были намного меньше, а нагрузка ввода-вывода во время воспроизведения была небольшой.

Формат кодирования, который вы должны использовать, должен быть тем, который ваше устройство может декодировать аппаратно, поскольку декодирование в ЦП также непомерно дорого.В наши дни вам будет хорошо, если вы используете H.264 для видео и AAC для аудио и используете контейнер MP4.К сожалению, если вы включите кодировщики H.264 / AAC (даже с открытым исходным кодом) в свое приложение и планируете зарабатывать на этом деньги, то вы можете посетить MPEG LA , который может захотеть получить отВы, так как H.264 и AAC требуют лицензирования.Я считаю, что этого избежать, если вы используете кодек, который уже лицензирован и установлен на устройстве, например, тот, который используется приложением камеры для записи.Я не знаю, позволяет ли платформа Android получать доступ к кодекам камеры.

Что касается библиотек, я думаю, что libavcodec и libavformat из проекта ffmpeg являются наиболее полными.С помощью этих библиотек вы можете кодировать файлы H.264 / AAC / MP4, предполагая, что проблема с лицензированием не затрагивает вас.

...