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

标签 java android opencv video-capture video-recording

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

因此我可以保留视频录制,它会将最后 2 分钟的内容保留在 RAM 中,然后可以选择将其提交到内存(如果需要)。

不幸的是,我看不到一种简单的方法来做到这一点。到目前为止,我已经研究过使用:

  • MediaRecorder - 我找不到将输出数据存储在 缓冲。唯一的选项是 setOutputFile()

  • JavaCV FFmpegFrameRecorder - 同样,其构造函数需要 传入一个文件。

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

我觉得一定有一种简单的方法可以做到这一点,但到目前为止我还没有太多运气。 任何有关此问题的帮助将不胜感激。

最佳答案

JavaCV提供cvCreateCameraCapture()来打开相机界面。 <强> This code演示如何从相机捕获帧并将其显示在窗口上。

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

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

关于java - Android 将视频录制到循环缓冲区中并将其存储在 RAM 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20277255/

相关文章:

java - 实例 boolean 变量的 NullPointerException

java - 如何使用PrintWriter和flush()在文本文件上打印内容?

java - 默认 Android 抽屉可容纳更多 Activity

android - 修复了水平 ScrollView 两侧的左右箭头按钮

c++ - gpumat 的 opencv 矩阵减少中可能存在的错误

java - 使用 servlet 上下文从 Spring Boot 应用程序获取资源的路径

java - 删除 JProgressBar 的不确定模式

java - RxJava 2 Activity 销毁时可处置

python - 如何使用OpenCV-Python顺利检测焊接接头?

database - 使用 openCV 从图像创建人脸数据库?