我想录制最高质量的视频。对于我的设备(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
答案 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);