Кодирование и декодирование Android MediaCodec с использованием формата vp8

Я хочу разработать приложение, которое будет иметь 2 кнопки и SurfaceView (на самом деле класс расширяет SurfaceView, реализует SurfaceHolder.Callback).

Когда пользователь нажимает кнопку 1 - с помощью ScreenCapture я получаю изображение и использую медиа-кодек, я выполняю кодирование vp8 и сохраняю вывод в байтовом буфере (я не сохраняю в месте расположения файла)

Когда пользователь нажимает кнопку 2 - мне нужно показать это на SurfaceView с тем выводом байтового буфера, который был захвачен.

я пробовал как

Декодер MediaCodec = MediaCodec.createDecoderByType ("видео / x-vnd.on2.vp8"); decoder.dequeueOutputBuffer (mBufferInfo, DEFAULT_TIMEOUT_US);

.....

но не может обновить вид поверхности.

Как я могу обновить вид поверхности, используя данные байтового буфера?


person user2318724    schedule 27.02.2015    source источник
comment
Удалось ли вам заставить это работать с AVC? Может быть полезно заставить все работать с .mp4, чтобы гарантировать, что любые проблемы, с которыми вы сталкиваетесь, не связаны с VP8.   -  person fadden    schedule 27.02.2015
comment
Нет .. Я чувствую, что делаю ошибку в MediaProjection.createVirtualDisplay (..); с этим api я могу сделать снимок экрана. mMediaProjection.createVirtualDisplay (SCREEN_CAPTURE, Ширина, высота, плотность, 0, поверхность, новый VirtualDisplay.Callback () {}, обработчик); поверхность содержит захваченные данные экрана. это верно?   -  person user2318724    schedule 02.03.2015


Ответы (1)


Я получил ответ ... mMediaCOdec.releaseOutputBuffer (index, true) ... - здесь я установил рендеринг как false. Если установить значение рендеринга как true, то я смогу нарисовать или установить захваченное изображение. С помощью releaseOutputBuffer (int index, long renderTimestampNs) мы можем визуализировать изображение. Но поддерживается только на уровне API 21. Спасибо..

person user2318724    schedule 05.03.2015