媒体记录器记录最后X秒



我已经成功地在Android上使用mediaRecorder类录制了视频。

但是,我现在需要做的是让它记录下来,直到我告诉它停止,但最多只记录 X 秒。

例如,如果我在 time=0(秒)开始录制,并将其设置为最大录制 10 秒,

如果我在 time=20(秒)时停止录制,则录制的视频将为 10..20 秒。

唯一与我发现的类似的东西是setMaxDuration,但它在设置指定时间后自动停止,所以在我的情况下,它只会记录前10秒。

对于要录制 X 秒的媒体录像机,您必须简单地将此代码放入 YOR 视频录制代码中

Intent captureVideoIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
captureVideoIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
captureVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(captureVideoIntent, VIDEO_CAPTURED);
我不知道

有什么方法可以仅使用SDK来完成您需要的工作。您可以让它录制视频,然后当您确定它时将视频剪切到最后 10 秒。

我没有用过,但是这家伙在这个答案中建议了他的图书馆

搜索它的正确关键字是"循环缓冲区"。您将看到几种方法,这些方法并非微不足道。有些使用 NDK 解决方案。

我的想法是:你知道要记录X秒。比录制到fileX_1,之后结束录制。自动开始并记录fileX_2直到结束。当它结束时,记录到fileX_3并删除fileX_2以节省空间。

因此,最大存储和视频长度可以是X * 2。最小值可以是 X。

要使用循环录音,我认为它必须将其解码为帧,存储,编码,使用大量的处理能力,结果是面糊消耗和加热设备!

最新更新