Возможно ли декодирование VP9 с помощью альфа-канала в Android?

#android #webm #vp9

#Android #webm #vp9

Вопрос:

В настоящее время FFmpeg поддерживает сжатие VP9 до yuv a 420p.

Используя grafika в качестве базы кода, я реализовал воспроизведение видео в кодировке VP9 yuva420p в Android (используя SurfaceTexture и MediaCodec), но я не могу получить альфа-канал из видео.

Я проверил, что видео закодировано с помощью VideoAlphaMode; ID: 0x53c0 размер: 4, поэтому я уверен, что видео содержит альфа-канал.

Итак, вопрос в том, поддерживает ли декодер Android 4.4 VP9 с альфа-каналом?

Комментарии:

1. Это может быть проблемой декодера; многие декодеры VP9 не поддерживают декодирование альфа-канала.

Ответ №1:

Попробуйте

  ffmpeg -i input.mov -c:v libvpx -pix_fmt yuva420p out.webm
  

Комментарии:

1. Пожалуйста, объясните, что это значит, а не только скажите «попробуйте это» и укажите код. Объясните, что это такое, что для чего и почему это (или) правильный способ сделать это

Ответ №2:

Рекомендуем начать с сборки последней версии самого libvpx на 64-разрядной рабочей станции Linux. Набор тестов libvpx должен включать тест на альфа-канал. Убедитесь, что тест пройден. Если это не так, это плохой знак, потому что libvpx является эталонной реализацией для VP9.

Если это произойдет, следующим шагом будет попытка альфа-декодирования и наложения с использованием библиотеки более высокого уровня, все еще в Linux. Я предлагаю использовать GStreamer 1.8.2 или выше. Наложите свой клип поверх генератора «videotestsrc», который будет генерировать большинство видеоформатов.

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

Причина запуска в Linux заключается в том, что вам будет проще создавать и устранять неполадки, и я подозреваю, что вы можете столкнуться с ограничением спецификации, которая даже не была реализована в эталонной реализации (libvpx) или которую трудно интегрировать в библиотеки более высокого уровня (отсюда и предложение GStreamer).

Тем не менее, хотя у меня есть значительный опыт работы с VP8 и libvpx, я не использовал набор функций, специфичный для VP9. Однако мне любопытно следить за вашими усилиями и, возможно, смогу дать совет по мере вашего прогресса.