录制一个 1280x720 的视频,并保持 phone 为纵向
Recording a 1280x720 video holding the phone in portrait orientation
我正在努力录制横向分辨率 (1280x720) 的视频,并使用 cameraX API 将我的 phone 保持在纵向(我也无法使用任何APIs,既不是 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 还没有正式支持视频录制,所以当它正式可用时,它可能会支持这种用例,但我不会指望这一点。
我正在努力录制横向分辨率 (1280x720) 的视频,并使用 cameraX API 将我的 phone 保持在纵向(我也无法使用任何APIs,既不是 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 还没有正式支持视频录制,所以当它正式可用时,它可能会支持这种用例,但我不会指望这一点。