/ / Nagrywanie wideo w systemie Android w okrągłym buforze i przechowywanie go w pamięci RAM - java, android, opencv, przechwytywanie wideo, nagrywanie wideo

Android nagrywaj wideo do okrągłego bufora i przechowuj go w pamięci RAM - java, android, opencv, przechwytywanie wideo, nagrywanie wideo

Szukam łatwego sposobu nagrywania wideo (w tym dźwięku) w okrągłym buforze przechowywanym w pamięci RAM.

Mogę więc zostawić nagranie wideo, które będzie utrzymywało kanał w pamięci RAM przez ostatnie 2 minuty, a następnie, jeśli zajdzie taka potrzeba, będę miał możliwość zatwierdzenia go do pamięci.

Niestety, nie widzę łatwego sposobu, aby to zrobić. Do tej pory badałem za pomocą:

  • MediaRecorder - nie widziałem sposobu przechowywania danych wyjściowych w a bufor. Jedyną opcją jest setOutputFile ()

  • JavaCV FFmpegFrameRecorder - ponownie wymaga tego konstruktor przekazywanie pliku.

  • android.hardware.Camera.PreviewCallback - daje tablicę bajtów dla każda ramka, którą mógłbym dodać do bufora. Jednak to podejście nie zapewnia żadnych danych audio.

Czuję, że musi to być łatwy sposób, ale jak dotąd nie miałem dużo szczęścia. Każda pomoc w tym zakresie byłaby bardzo mile widziana.

Odpowiedzi:

1 dla odpowiedzi № 1

JavaCV oferuje cvCreateCameraCapture() otworzyć interfejs z kamerą. Ten kod pokazuje, jak przechwytywać ramki z kamery i wyświetlać je w oknie.

Interesująca część znajduje się w while loop: każda iteracja pętli pobiera pojedynczą klatkę z kamery za pomocą cvQueryFrame(). Zauważ, że typ danych zwracany przez tę funkcję to IplImagei ten typ jest odpowiedzialny za przechowywanie obrazu uchwyconego z kamery.

Wszystko, co musisz zrobić, to zapisać IplImage zwracane przez cvQueryFrame() w twoim buforze kołowym.