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

标签 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: 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/

相关文章:

android - 如何在 android 中的 aChartEngine 折线图中正确设置 XAxis 值的格式

android - 在Android中播放立体声WAV文件

c# - 用于 Linux 的单声道 VLC API

ios - 质量 : Custom AVFoundation Camera App VS. iOS 标准相机应用

android - 三星 Galaxy 的运行时异常——手电筒

java - 与简单条件混淆

android - 使用 HockeyApp SDK 自动更新应用程序

c# - 使用 FFMPEG/Splicer 和 C#

video - 为什么youtube的 “still”屏幕模糊?

Android:前置摄像头的手势识别