如何以编程方式在Android

时间:2016-01-19 16:23:36

标签: android video camera slowmotion

我有一段代码可以使用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:给定的摄像机配置文件相机0质量2000是   找不到"

主叫:

 mMediaRecorder.setVideoFrameRate(100);

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

并致电:

 mMediaRecorder.setVideoFrameRate(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);

抛出异常:

  

MediaRecorder:setVideoFrameRate失败:-22

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

然而,here中有一个使用新camera2 API的黑客解决方案。你需要root,它可能不稳定。