Android 视频录制 2160p

Android video recording 2160p

我想录制最高质量的视频。对于我的设备 (LG G Flex 2),它是 3840x2160。此分辨率提供库存相机。除了相机参数信息之外,第 3 方应用程序的视频大小也是可能的。

如果我尝试使用配置文件:

CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_2160P)

它returns 错误。没有这样的配置文件。

我也试过这个:

CamcorderProfile prof = CamcorderProfile.get(CamcorderProfile.QUALITY_1080P);
prof.videoFrameHeight = 2160;
prof.videoFrameWidth = 3840;
mMediaRecorder.setProfile(prof);

但是还是不行。

最后:

mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoSize(3840, 2160);

也不行。

错误是

03-20 01:53:02.800: E/MediaRecorder(17459): start failed: -19

还有其他录制视频的方法吗? 我正在使用 camera1 api 并且 camera.getParameters().getSupportedVideoSizes() 包含 3840x2160

尝试使用:

mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

它会自动录制设备支持的最高分辨率的视频。您不需要为此指定任何其他参数,它将使用该设备可用的最佳参数。

如果您需要录制视频的工作代码,我也可以提供。

getSupportedVideoSizes()方法引用了AndroidSDK。因此它返回相应 SDK 版本下支持的视频尺寸的预定义列表。但实际情况因设备而异。

最高可用分辨率对应的质量级别:

camProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

最低可用分辨率对应的质量级别:

camProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);

作为黑客可以使用以下方式录制 4K 视频:

// Get maximum available quality. And set width and height manually.
// To make new size have effect, we need also increase encoding bit rate.
CamcorderProfile prof = CamcorderProfile.get(CameraController.getCameraIndex(), CamcorderProfile.QUALITY_HIGH);
prof.videoFrameWidth = 3840;
prof.videoFrameHeight = 2160;
prof.videoBitRate = (int)(prof.videoBitRate*2.8);
mMediaRecorder.setProfile(prof);