我正在寻找一种简单的方法来将视频(包括音频)录制到存储在 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/