【问题标题】:Recording a 1280x720 video holding the phone in portrait orientation以纵向手持手机录制 1280x720 视频
【发布时间】:2020-08-18 01:25:35
【问题描述】:

我正在努力使用 cameraX 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
 );

【问题讨论】:

    标签: java android android-camerax


    【解决方案1】:

    设备不太可能支持您正在寻找的分辨率。

    基本上,您需要如下所示的分辨率:

    4:3 full sensor
       |---------+========+---------|
       |         : 9:16   :         |
       |         : 720p   :         |
       |         : crop   :         |
       |         :        :         |
       |         :        :         |
       |         :        :         |
       |         :        :         |
       |         :        :         |
       |---------+========+---------|
    

    这不是大多数设备支持的。它们仅支持与图像传感器对齐的作物:

    4:3 full sensor
       |----------------------------|
       |                            |
       +============================+
       : 16:9 720p crop             :
       :                            :
       :                            :
       :                            :
       +============================+
       |                            |
       |----------------------------|
    
    

    如果您想这样做,您可能需要自己裁剪相机中的帧。 这需要对 GPU 使用 ImageAnalysis 或 Preview 之类的东西,并直接将结果提供给 MediaRecorder 或 MediaCodec/MediaMuxer。

    另外,CameraX 还没有正式支持视频录制,所以当它正式可用时它可能会支持这种用例,但我不会指望这一点。

    【讨论】:

    • 如果你说只有在与传感器对齐的情况下才支持裁剪,那么预览和 ImageCapture 用例怎么做呢?我不知道还没有完全支持视频录制,所以也许我将来仍然可以期待一些东西。访问我发现的视频或预览流的唯一可能性是在 PreviewView 上调用“getBitmap()”?还有其他可能吗?
    • 这些用例在应用程序端裁剪(PreviewView 通过设置一个删除多余区域的变换矩阵)。您可以使用 ImageAnalysis 用例直接从相机接收图像帧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多