我尝试创建具有视频录制功能的视频应用,并使用具有1440x1080屏幕分辨率的小米Redmi 5进行测试。当我尝试使用MediaRecorder录制视频时,我得到1440x1080的视频:
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile(videoFileName);
mediaRecorder.setVideoEncodingBitRate(1000000);
mediaRecorder.setVideoFrameRate(30);
mediaRecorder.setVideoSize(videoSize.getWidth(), videoSize.getHeight());
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//mediaRecorder.setOrientationHint(totalRotation);
mediaRecorder.prepare();
当我尝试将视频大小设置为:
videoSize = new Size(1920, 1080);
Android Studio出错:
Surface with size (w=1920, h=1080) and format 0x22 is not valid, size not in valid set: [1440x1080, 1440x720, 1280x720, 960x720, 960x540, 800x600, 864x480, 800x480, 720x480, 640x480, 640x360, 640x320, 480x368, 480x320, 352x288, 320x240, 176x144]
我可以用小米操作系统的摄像机录制1920x1080的视频,但不能用我的应用程序录制。
如何使用Camera2 API录制更好的智能手机质量视频?
您可以在Android Studio错误消息中找到答案:不支持所需的分辨率,因为它不在给定集中
[1440x1080, 1440x720, 1280x720, 960x720, 960x540, 800x600, 864x480, 800x480, 720x480, 640x480, 640x360, 640x320, 480x368, 480x320, 352x288, 320x240, 176x144]
。
-编辑
这可能意味着两件事:设备不支持1980x1020分辨率,或者camera2api不支持该分辨率。由于您可以使用OS摄像头软件录制1920x1080视频,因此问题与readmi 5上的camera2api有关。在Google“ readmi 5和camera2api”上搜索时,我发现默认情况下在readmi 5上禁用了camera2api。此api(与您的api一样),用户必须安装来自未知来源的mod才能启用camera2api。我指的是从2018年开始的mod:您可以搜索小米是否发布了等效更新,因此您只需要告诉用户更新操作系统即可。我唯一建议的替代方法是放弃使用camera2api,即不要将SURFACE
用作录音输入。代替mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
尝试
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
或更明确地讲
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);