Android将视频录制到循环缓冲区并将其存储在RAM中

时间:2013-11-29 01:59:26

标签: java android opencv video-capture video-recording

我正在寻找一种简单的方法将视频(包括音频)录制到存储在RAM中的循环缓冲区中。

所以我可以保留视频录制,它会在最后2分钟内将Feed保留在RAM中,然后在需要时可以选择将其提交到内存中。

不幸的是,我看不到一个简单的方法。到目前为止,我已经调查过:

  • MediaRecorder - 我看不到将输出数据存储在a中的方法 缓冲。只有选项是setOutputFile()

  • JavaCV FFmpegFrameRecorder - 再次需要构造函数 传入一个文件。

  • android.hardware.Camera.PreviewCallback - 这给出了一个字节数组 我可以添加到缓冲区的每一帧。但是,此方法不提供任何音频数据。

我觉得必须有一个简单的方法来做到这一点,但到目前为止我没有太多运气。 对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

JavaCV提供cvCreateCameraCapture()打开与相机的界面。 This code演示如何从相机捕捉帧并将其显示在窗口上。

有趣的部分位于while循环中:循环的每次迭代都会使用cvQueryFrame()从摄像机中检索单个帧。请注意,此函数返回的数据类型为IplImage,此类型负责存储从摄像头抓取的图像。

您需要做的就是将IplImage返回的cvQueryFrame()存储在循环缓冲区中。