Android视频录制2160p

时间:2015-03-19 17:27:21

标签: android android-camera

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

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

CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_2160P)

返回false。没有这样的个人资料。

我也试过这个:

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

3 个答案:

答案 0 :(得分:4)

尝试使用:

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

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

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

答案 1 :(得分:0)

getSupportedVideoSizes()方法是指Android SDK。因此,它返回相应SDK版本下支持的视频大小的预定义列表。但实际的设备因设备而异。

与最高可用分辨率相对应的质量等级:

camProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

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

camProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);

答案 2 :(得分:0)

由于黑客可以使用以下方式录制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);