如何在Android Studio中从1440x1080 Surface获取1920x1080视频

问题描述 投票:0回答:1

我尝试创建具有视频录制功能的视频应用,并使用具有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 android-mediarecorder xiaomi
1个回答
0
投票

您可以在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);
© www.soinside.com 2019 - 2024. All rights reserved.