Я использую Android MediaCodec API для декодирования и воспроизведения видео в реальном времени и необработанного видео H.264. Мое целевое устройство - это ПК, работающий на Android-x86 6.0. ПК работает на процессоре Intel® Celeron® N2930.Android MediaCodec h.264 Декодирование Поверхностный режим Цветовое кодирование
Когда я устанавливаю декодер в режим поверхности и визуализирую видео в TextureView, у меня возникают проблемы с цветовым диапазоном.
Когда я установил декодер для использования режима ByteBuffer, а затем сохранил декодированные видеокадры в файле, затем откройте файл на другом компьютере, я не обнаружил проблем с цветовым диапазоном с видеокадрами.
Выполняя идеи, я попытался реализовать свое собственное представление OpenGL ES для рендеринга видео. Получил его на работу, но цветовая гамма все еще там. Затем я сохраняю декодированные кадры из рендеринга представлений OpenGL ES с помощью GLES20.glReadPixels(), и когда я открываю эти кадры на другом компьютере, я вижу цветовой диапазон в кадрах.
Другие наблюдения: 1) Я использовал подключенный видеоплеер (видеоплеер) и проигрыватель MX для воспроизведения некоторых видеофайлов. Как связанный видеопроигрыватель, так и MX Player (в режиме декодирования HW) столкнулись с тем же цветом.
2) Воспроизведение в режиме SW-декодирования в MX Player не показывает цветовой диапазон.
Пробовал почти все предложения, доступные в Интернете безрезультатно. Пожалуйста помоги.
Заранее спасибо.
Какой формат фреймбуфера вы визуализируете для просмотра поверхности? Обычно полоса указывает на то, что вы выполняете рендеринг в 16-битной цели рендеринга (например, RGB 565), а не в более обычную 32-битную цель (RBGA8). – solidpixel
@solidpixel ... Для представления рендеринга OpenGL в основном я использовал код по адресу http://code.metager.de/source/xref/android/4.0.3/cts/tests/src/android/media/cts/ VideoSurfaceView.java с некоторыми незначительными изменениями для подключения к остальной части приложения. Позорно, я не знаю, где установить формат фреймбуфера. Пожалуйста, укажите мне в правильном направлении. – mishow
@solidpixel ... Кстати, рендеринг видео с использованием TextureView или даже SurfaceView представляет проблему с тем же цветом. Кажется, что, пока я использую декодер в режиме Surface, у меня возникает эта проблема. Используя декодер в режиме ByteBuffer, сохранение изображения и просмотр его кажется прекрасным. – mishow