我有一段代码可以使用 android 相机使用 MediaRecorder 和相机 api 1 以 QUALITY_HIGH 录制视频。
相机代码基于:https://github.com/Glamdring/EasyCamera
视频录制可能类似于:How to record video of particular width and height on samsung device 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: The given camcorder profile camera 0 quality 2000 is not found"
调用:
mMediaRecorder.setVideoFrameRate(100);
运行但输出视频不是 100fps。
并调用:
mMediaRecorder.setVideoFrameRate(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);
抛出异常:
MediaRecorder: setVideoFrameRate failed: -22
我可以使用内置的相机应用程序录制“慢动作视频”,该视频将以 120fps 的速度生成 mp4,因此我非常确定该设备可以录制高速视频,但似乎缺少某些内容。
最佳答案
首先使用 getSupportedPreviewFpsRange 检查相机设备支持的 fps 范围.
我还在智能手机内置的相机应用程序上进行了测试,该应用程序支持慢动作并且确实可以以高帧率(120fps)进行录制。但是从getSupportedPreviewFpsRange
的结果来看,帧率不超过30fps。
我认为供应商最初并没有提供以高帧率录制的接口(interface),尽管内置的相机应用程序显示了它的硬件能力。我猜这是因为如果使用不当可能会导致意想不到的结果,例如硬件损坏。
录制高速视频的硬件要求高于录制传统视频的硬件要求。内置相机应用程序可能会对慢动作视频使用不同的录制策略。例如,它可能使用较低的分辨率和对光的不同响应。因此,不会暴露以编程方式录制高速视频的权限。
但是,here 中有一个 hack 解决方案它利用了新的 camera2 API。您需要 root,它可能不稳定。
关于android - 如何以编程方式在 Android 上录制高速视频 (60-120fps),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881847/