【问题标题】:How to programmatically record high speed videos (60-120fps) on android如何以编程方式在 android 上录制高速视频 (60-120fps)
【发布时间】:2016-01-19 16:23:35
【问题描述】:

我有一段代码可以使用 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,所以我很确定该设备可以录制高速视频,但似乎缺少一些东西。

【问题讨论】:

  • 您使用的是什么设备?什么API?您打算只使用该设备吗?
  • S6 和 api 1(我们可以移至 2)。目前我们只打算使用该设备
  • 您好,感谢您的回答,您知道已经以 120 fps 速率拍摄的安卓相机应用程序(第三方)吗?谢谢

标签: android video camera slowmotion


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2014-02-09
    • 1970-01-01
    • 2014-07-11
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多