Возможно ли декодирование VP9 с помощью альфа-канала в Android?
В настоящее время FFmpeg поддерживает сжатие VP9 до 420p.
Используя графику в качестве кодовой базы, я реализовал проигрывание видео в кодировке VP9 yuva420p в Android (используя SurfaceTexture и MediaCodec), но я не могу получить альфа-канал из видео.
Я проверил это видео, закодированное с VideoAlphaMode; ID: 0x53c0 размер: 4, поэтому я уверен, что видео содержит альфа-канал.
Вопрос в том, поддерживает ли Android 4.4+ декодер VP9 с альфа-каналом?
2 ответа
Попытайся
ffmpeg -i input.mov -c:v libvpx -pix_fmt yuva420p out.webm
Рекомендуем начать с создания самой последней версии libvpx на 64-битной рабочей станции Linux. Набор тестов libvpx должен включать тестирование альфа-канала. Убедитесь, что тест пройден. Если это не так, это плохой знак, потому что libvpx является эталонной реализацией для VP9.
Если это произойдет, следующим шагом будет попытка альфа-декодирования и наложения с использованием библиотеки более высокого уровня, все еще в Linux. Я предлагаю использовать GStreamer 1.8.2 или выше. Наложите свой клип поверх генератора "videotestsrc", который будет генерировать большинство видеоформатов.
Если какой-либо из этих тестов не пройден, я рекомендую вам внимательно изучить причину, прежде чем продолжить.
Причина запуска в Linux заключается в том, что вам будет проще создавать и устранять неполадки, и я подозреваю, что вы можете столкнуться с гранью спецификации, которая даже не была реализована в эталонной реализации (libvpx), или которую трудно интегрировать в библиотеки более высокого уровня (отсюда и предложение GStreamer).
Тем не менее, хотя у меня есть значительный опыт работы с VP8 и libvpx, я не использовал специфичный для VP9 набор функций. Тем не менее, мне любопытно следить за вашими усилиями, и, возможно, вы сможете дать совет по мере вашего прогресса.