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

Я ищу простой способ записи видео (включая аудио) в кольцевой буфер, хранящийся в оперативной памяти.

Таким образом, я могу оставить видеозапись, она будет хранить канал в ОЗУ последние 2 минуты, а затем иметь возможность зафиксировать его в памяти, если это необходимо.

К сожалению, я не вижу простого способа сделать это. До сих пор я исследовал использование:

  • MediaRecorder - я не нашел способа сохранить выходные данные в буфере. Единственная опция setOutputFile()

  • JavaCV FFmpegFrameRecorder — снова конструктор для этого требует передачи файла.

  • android.hardware.Camera.PreviewCallback - это дает массив байтов для каждого кадра, который я мог бы добавить в буфер. Однако этот подход не предоставляет никаких аудиоданных.

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


person Smalesy    schedule 29.11.2013    source источник
comment
Возможный дубликат stackoverflow .com/questions/8974035/ .   -  person Jonathan Ben-Avraham    schedule 15.08.2016


Ответы (1)


JavaCV предлагает cvCreateCameraCapture() открыть интерфейс с камерой. В этом коде показано, как захватывать кадры с камеры и отображать их в окне.

Интересная часть находится в цикле while: каждая итерация цикла извлекает один кадр с камеры с помощью cvQueryFrame(). Обратите внимание, что тип данных, возвращаемый этой функцией, — IplImage, и этот тип отвечает за сохранение изображения, полученного с камеры.

Все, что вам нужно сделать, это сохранить IplImage, возвращенный cvQueryFrame(), в циклическом буфере.

person karlphillip    schedule 29.11.2013
comment
Спасибо за это. Мне также нужны аудиоданные, захватывает ли этот подход и аудиоданные? - person Smalesy; 29.11.2013
comment
OpenCV не работает с аудиопотоками (следовательно, и с JavaCV). - person karlphillip; 29.11.2013
comment
JavaCV обрабатывает также звук. Пожалуйста, взгляните на FFmpegFrameRecorder, метод записи (..). Вы также можете создать кольцевой буфер для хранения аудиосэмплов. - person user1592546; 16.06.2014