如何解决录制以纵向方式握住手机的1280x720视频
我正在努力使用cameraX API(以肖像API将相机保持为纵向)以横向分辨率(1280x720)录制手机视频(我也无法使用任何API(camera1和camera2都无法做到这一点)来录制视频。我能够使其适用于ImageCapture用例和预览。视频将以最接近的纵向分辨率进行录制。任何帮助表示赞赏!
CameraSelector cameraSelector = new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build();
Preview preview = new Preview.Builder()
.setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
.setTargetResolution(new Size(1280,720))
.build();
preview.setSurfaceProvider(mVideoView.createSurfaceProvider());
ImageCapture.Builder imageCaptureBuilder = new ImageCapture.Builder();
mImageCapture = imageCaptureBuilder
.setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
.setTargetResolution(new Size(1280,720))
.build();
VideoCapture.Builder videoCaptureBuilder = new VideoCapture.Builder();
mVideoCapture = videoCaptureBuilder
.setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
.setTargetResolution(new Size(1280,720))
.build();
ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
Camera camera = cameraProvider.bindToLifecycle(
RecordMediaCameraXActivity.this,cameraSelector,preview,mImageCapture,mVideoCapture
);
解决方法
设备不太可能支持所需的分辨率。
基本上,您需要这样的分辨率:
4:3 full sensor
|---------+========+---------|
| : 9:16 : |
| : 720p : |
| : crop : |
| : : |
| : : |
| : : |
| : : |
| : : |
|---------+========+---------|
但这并不是大多数设备支持的功能。它们仅支持与图像传感器对齐的作物:
4:3 full sensor
|----------------------------|
| |
+============================+
: 16:9 720p crop :
: :
: :
: :
+============================+
| |
|----------------------------|
如果需要,您可能需要自己修剪相机中的画框。 这就需要在GPU上使用诸如ImageAnalysis或Preview之类的东西,并直接将结果提供给MediaRecorder或MediaCodec / MediaMuxer。
此外,CameraX尚未正式支持视频录制,因此,当正式可用时,它可能会支持这种用例,但我不会指望。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。