我正在为我的LG G4开发我的相机应用程序,但我找不到以恒定帧速率录制的方法。我采用了谷歌示例Camera2应用程序来添加我的功能。
当我想用UHD录制时:
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
if (mNextVideoAbsolutePath == null || mNextVideoAbsolutePath.isEmpty()) {
mNextVideoAbsolutePath = getVideoFilePath(getActivity());
}
mMediaRecorder.setOutputFile(mNextVideoAbsolutePath);
mMediaRecorder.setVideoEncodingBitRate(35 * 1000 * 1000);
mMediaRecorder.setVideoSize(3840, 2160);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
3个不同输出视频的帧速率为27.61,28.39,26.24等。我无法在 29.97 fps 的 30 帧率下获得恒定的 framterate。我试图将比特率提高到 50Mbps,将其降低到 30Mbps,但它没有改变任何东西。
最奇怪的是,我什至无法以30p录制超过1080fps:
mMediaRecorder.setVideoSize(1920, 1080);
mMediaRecorder.setVideoFrameRate(60);
我上次尝试时,它会以 29.69 录制 FHD 素材,但它与 UHD 素材一样随机。我做错了什么?
我已经检查了使用 Camera2(在 Android 版本 60 上(API 录制 21fps 视频,但它也不起作用。我也找到了一些答案,但他们使用的是旧的相机API(带有Camera.Parameters(,现在已经不推荐使用。
有没有另一个参数?
注意:在某些具有自动帧速率的设备上,这将设置最大帧速率,而不是恒定帧速率。实际帧速率将根据照明条件而有所不同。
试试这个:
mediaRecorder.setCaptureRate(30);