4

我已成功使用mediaRecorderAndroid 上的课程录制视频。

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

例如,如果我在 time=0(秒)开始录制,并且我将其设置为最多录制 10 秒,如果我在 time=20(秒)停止录制,录制的视频将是10..20 秒周期。

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

4

3 回答 3

3

要让媒体记录器记录 X 秒,您必须将此代码简单地放入您的视频记录代码中

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);
于 2013-03-15T13:24:02.370 回答
0

I'm not aware of any way to accomplish what you need using just the SDKs. You could have it record a video and then when you determine it cut the video down to the last 10 seconds.

I haven't used it, but this guy suggests his library in this answer

于 2012-12-02T00:41:31.980 回答
0

搜索它的正确关键字是“循环缓冲区”。您将看到一些方法,这些方法并不简单。有些使用 NDK 解决方案。

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

所以最大存储和视频长度可以是 X * 2。最小可以是 X。

要使用循环录制,我认为它必须将其解码为帧,存储它,对其进行编码,使用大量的处理能力,结果是电池耗尽和设备发热!

于 2017-08-16T14:11:31.243 回答