【问题标题】:Android record video into a circular buffer and storing it in RAMAndroid 将视频录制到循环缓冲区并将其存储在 RAM 中
【发布时间】:2013-11-29 01:59:25
【问题描述】:

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

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

不幸的是,我看不到一个简单的方法来做到这一点。到目前为止,我已经使用以下方法进行了调查:

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

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

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

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

【问题讨论】:

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


【解决方案1】:

JavaCV 提供cvCreateCameraCapture() 以打开与相机的接口。 This code 演示了如何从相机中捕获帧并将它们显示在窗口上。

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

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

【讨论】:

  • 谢谢。我也需要音频数据,这种方法也能捕获音频数据吗?
  • OpenCV 不处理音频流(因此,JavaCV 也不处理)。
  • JavaCV 也处理音频。请看一下 FFmpegFrameRecorder, record(..) 方法。您也可以创建一个循环缓冲区来存储音频样本。
猜你喜欢
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 2014-11-14
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
相关资源
最近更新 更多