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