如何在安卓上以编程方式录制高速视频(60-120fps)



我有一段代码可以使用安卓相机在QUALITY_HIGH使用MediaRecorder和相机api 1录制视频。

相机代码基于:https://github.com/Glamdring/EasyCamera

视频录制可能类似于以下内容:如何在三星设备Android上录制特定宽度和高度的视频?

我可以从文档中看到 http://developer.android.com/intl/es/reference/android/media/CamcorderProfile.html#QUALITY_HIGH_SPEED_HIGH 有一个用于高速视频的配置文件,但是......称呼这个:

 CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);

抛出异常说:

"E/媒体配置文件:给定的摄像机配置文件相机 0 质量 2000 是 未找到"

叫:

 mMediaRecorder.setVideoFrameRate(100);

运行,但输出视频不是 100fps。

和呼叫:

 mMediaRecorder.setVideoFrameRate(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);

引发异常:

媒体录像机:设置视频帧速率失败:-22

我可以使用内置的相机应用程序来录制"慢动作视频",该视频将以 4fps 的速度生成 mp120,因此我很确定该设备可以录制高速视频,但似乎缺少一些东西。

首先使用 getSupportedPreviewFpsRange 检查相机设备支持的 fps 范围。

我还在智能手机内置的相机应用程序上进行了测试,该应用程序支持慢动作,并且确实可以以高帧率(120fps)进行录制。但从getSupportedPreviewFpsRange的结果来看,帧率不超过30fps。

我认为供应商最初不提供以高帧速率录制的接口,尽管内置相机应用程序显示了其硬件能力。我想这是因为如果使用不当,可能会导致意外结果,例如硬件损坏。

录制高速视频的硬件要求高于录制常规视频。内置相机应用可能会对慢动作视频使用不同的录制策略。例如,它可能使用较低的分辨率和对光的不同响应。因此,不会公开以编程方式录制高速视频的访问。

但是,这里有一个利用新的camera2 API的黑客解决方案。你需要根,它可能不稳定。

相关内容

  • 没有找到相关文章

最新更新