1

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

相机代码基于: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/MediaProfiles:未找到给定的摄像机配置文件摄像机 0 质量 2000”

调用:

 mMediaRecorder.setVideoFrameRate(100);

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

并调用:

 mMediaRecorder.setVideoFrameRate(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);

抛出异常:

MediaRecorder:setVideoFrameRate 失败:-22

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

4

1 回答 1

2

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

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

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

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

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

于 2016-02-01T18:41:51.590 回答