Я использую класс MediaCodec
для декодирования видео в формате .mp4, используя код, приведенный в этом link.outputBuffers возвращает нулевой указатель, хотя кадр отображается на экране, используя MediaCodec в Android
Я могу получить визуализированный вывод на экране, но когда я пытаюсь получить доступ к outputBuffers[outIndex]
, я получаю ошибку с нулевым указателем. Я не могу понять, как получить доступ к буфере кадров, чтобы выполнить некоторую обработку.
Спасибо за разъяснение. Мне действительно хотелось бы получить доступ к данным буфера, преобразовать его в формат Mat Matrix и выполнить некоторую обработку на нем, а затем отобразить его на экране. Любые предложения о том, как это сделать? – Vinodh
Вы можете отобразить его на поверхности pbuffer Surface, извлечь пиксели в виде RGB с помощью 'glReadPixels', выполнить свою обработку, а затем преобразовать результат обратно в текстуру с помощью' glTexImage2D'. Начиная с Android 4.3, нет никакого переносимого способа интерпретации данных в 'ByteBuffer', поэтому GLES - ваш лучший выбор. – fadden
Я заметил, что если мы хотим визуализировать SurfaceTexture, нам нужно использовать createInputSurface(), который доступен только с уровня API 18. Так значит ли это, что если мы хотим разорвать видео на фреймы, мы можем использовать MediaCodec только с Уровень API 18? – Nativ