2017-01-09 13 views
0

Я использую 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 не показывает цветовой диапазон.

Пробовал почти все предложения, доступные в Интернете безрезультатно. Пожалуйста помоги.

Заранее спасибо.

+0

Какой формат фреймбуфера вы визуализируете для просмотра поверхности? Обычно полоса указывает на то, что вы выполняете рендеринг в 16-битной цели рендеринга (например, RGB 565), а не в более обычную 32-битную цель (RBGA8). – solidpixel

+0

@solidpixel ... Для представления рендеринга OpenGL в основном я использовал код по адресу http://code.metager.de/source/xref/android/4.0.3/cts/tests/src/android/media/cts/ VideoSurfaceView.java с некоторыми незначительными изменениями для подключения к остальной части приложения. Позорно, я не знаю, где установить формат фреймбуфера. Пожалуйста, укажите мне в правильном направлении. – mishow

+0

@solidpixel ... Кстати, рендеринг видео с использованием TextureView или даже SurfaceView представляет проблему с тем же цветом. Кажется, что, пока я использую декодер в режиме Surface, у меня возникает эта проблема. Используя декодер в режиме ByteBuffer, сохранение изображения и просмотр его кажется прекрасным. – mishow

ответ

0

Удалено с помощью MediaCodec в режиме ByteBuffer (программное обеспечение).