camera2的setVideoFramerate()无效

问题描述 投票:3回答:1

我正在为LG G4开发我的相机应用程序,但我找不到一种以恒定帧率进行记录的方法。我以Google样本Camera2 app添加了我的功能。

当我想以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等。我试图将比特率提高到50Mbps,将其降低到30Mbps,但没有任何改变。

最奇怪的部分是我什至无法以1080p的速度录制30fps以上的帧:

mMediaRecorder.setVideoSize(1920, 1080);
mMediaRecorder.setVideoFrameRate(60);

[我上次尝试以29.69录制FHD素材,但它与UHD素材一样随机。我究竟做错了什么 ?

我已经签出Recording 60fps video with Camera2(on Android version 21) API,但它也不起作用。我也找到了一些答案,但他们使用的是旧相机API(带有Camera.Parameters),现已弃用。

还有另一个参数吗?

android frame-rate android-camera2 camera2
1个回答
0
投票

注意:在某些具有自动帧速率的设备上,这将设置最大帧速率,而不是恒定帧速率。实际帧频将根据照明条件而变化。

尝试一下:

mediaRecorder.setCaptureRate(30);
© www.soinside.com 2019 - 2024. All rights reserved.