2014-10-13 3 views
1

Я пытаюсь передать видео в android через ffmpeg, выход, который я получаю после декодирования, является форматом YUV. Можно ли отображать YUV-формат изображения прямо на экране Android?Рендеринг формата YUV в android?

ответ

1

Да и нет.

Выходной сигнал камеры и аппаратных видеодекодеров, как правило, YUV. Кадры из этих источников обычно отправляются непосредственно на дисплей. Они могут быть преобразованы драйвером, как правило, с помощью аппаратного масштабирования и преобразователя формата. Это необходимо для эффективности.

Существует не API, позволяющий приложению пропускать кадры YUV одинаково. Основная проблема заключается в том, что «ЮВ» покрывает много земли. Формат буфера, используемый видеодекодером, может быть внутренним внутренним форматом, который может обрабатывать различные аппаратные модули; для вашего приложения, чтобы создать поверхность в этом формате, она должна была бы выполнить преобразование, и вы вернетесь туда, где вы были по производительности.

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

Update: ответ на this question имеет ссылку на WebRTC source file, который демонстрирует делает преобразование YUV в шейдере GLES2.

+0

Спасибо за ваш повтор, на самом деле я пробовал это с помощью GLES1.Can вы поможете мне с тем, что я продолжаю с GLES1, теперь у меня есть мои декодированные кадры, готовые к отображению экрана. – vgokul129

+0

Шейдеры не существуют до GLES2. В GLES1 может быть способ, но я не знаю, что это такое. – fadden

+0

Поскольку существует много форматов YUV, можете ли вы знать что-либо, связанное с этими форматами, которые поддерживает именно андроид? – vgokul129