录制以纵向方式握住手机的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尚未正式支持视频录制,因此,当正式可用时,它可能会支持这种用例,但我不会指望。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...