gpt4 book ai didi

android - 视频录制到 Android 上的循环缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:07:14 26 4
gpt4 key购买 nike

我正在寻找将连续视频捕获到 SD 卡上的循环缓冲区的最佳方法(如果有的话......),允许用户在事件发生后捕获事件。

标准视频录制 API 允许您直接写入文件,当达到限制(由用户设置,或 SD 卡的容量)时,您必须停止并重新开始录制。这会创建一个长达 2 秒的窗口,其中记录未运行。这就是 DailyRoads Voyager 等一些现有应用程序已经在做的事情。为了最大限度地减少丢失重要内容的机会,您可以将拆分时间设置为较长的​​时间,例如 10 分钟,但如果在此时间跨度快结束时发生事件,那么您在开始时存储 9 分钟的空白是在浪费空间。

所以,我现在的想法如下:我将有一个大文件作为缓冲区。我将使用我发现的一些代码来捕获帧并将它们保存到文件中,最后环绕。当用户想要保留某个部分时,我会在缓冲区中用指向开始和结束的指针来标记它。录制可以像以前一样继续,跳过标记为保留的区域。

在录制停止后,或者可能在后台线程中(取决于手机/卡速度),我会将标记的区域复制到另一个文件并取消覆盖保护。

主要问题,如果您不关心上面的详细信息:我似乎无法在 Android SDK 中找到将单个帧转换为视频文件的方法。可能吗?如果没有,是否有可用的库(可能是 native 代码)可以执行此操作?

我真的不关心未压缩帧的大缓冲区,但导出的视频应该以 Android 友好的格式压缩。但是,如果有一种压缩缓冲区的方法,我很想听听。

谢谢。

最佳答案

在 Android 的 MediaRecorder 中,有两种指定输出的方法。一个是文件名,另一个是 FileDescriptor

使用ParcelFileDescriptor 的静态方法fromSocket,您可以创建一个指向套接字的ParcelFileDescriptor 实例。然后,调用 getFileDescriptor 获取要传递给 MediaRecorderFileDescriptor

由于您可以从套接字中获取编码视频(就像您正在创建本地网络服务器一样),您将能够访问视频的各个帧,尽管不是那么直接,因为您需要先对其进行解码.

关于android - 视频录制到 Android 上的循环缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8974035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com