我正在寻找将连续视频捕获到 SD 卡上的循环缓冲区的最佳方法(如果有的话……),从而允许用户在事件发生后捕获事件。
标准的视频录制 API 允许您直接写入文件,当您达到限制(由用户设置,或 SD 卡的容量)时,您必须停止并重新开始录制。这将创建一个长达 2 秒的长窗口,其中不运行录制。这就是 DailyRoads Voyager 等现有应用程序已经在做的事情。为了最大程度地减少错过重要内容的机会,您可以将拆分时间设置为较长的时间,例如 10 分钟,但如果事件发生在此时间跨度的末尾附近,您会在开始时存储 9 分钟的空内容,从而浪费空间。
所以,我现在的想法如下:我将有一个大文件作为缓冲区。我将使用我找到的一些代码来捕获帧并将它们自己保存到文件中,最后环绕。当用户想要保留某些部分时,我将通过指向缓冲区开始和结束的指针来标记它。记录可以像以前一样继续,跳过标记为保留的区域。
在录制停止后,或者可能在后台线程上(取决于电话/卡速度)我会将标记的区域复制到另一个文件并删除覆盖保护。
主要问题,如果您不关心上面的细节:我似乎无法找到将单个帧转换为 Android SDK 中的视频文件的方法。是否可以?如果没有,是否有任何可用的库(可能是本机代码)可以做到这一点?
我真的不关心未压缩帧的大缓冲区,但导出的视频应该以 Android 友好的格式压缩。但是,如果有办法压缩缓冲区,我想听听。
谢谢你。