繁体   English   中英

使用 CameraX 旋转预览

[英]Rotating the preview with CameraX

我有一个带有旋转相机的专有设备,它不会向操作系统报告其旋转情况。

我们将CameraXPreviewView一起使用,我将图像旋转 90 度并进行镜像。

有没有一种有效的方法来旋转预览?

我们尝试了:

  1. 设置相机、分析器、预览的 setTargetOrientation。 没有工作。
  2. 旋转PreviewView当然不起作用,它只是修改了 ViewPort,因为它不会旋转表面。
  3. ViewFinder库 - 输出位图但不连接到Preview (或者有人对此有解决方案吗?)。 没有setSurfaceProvider ,什么都不会清空帧管道,也不会显示任何内容。

丑陋的“解决方案”:

我们目前使用位图(通过分析器),然后我们显示位图。 那很丑,而且 CPU 很贵。

Camera2 是唯一可以很好地旋转预览的方法吗? Camera2 无论如何都会做位图,但它可能会在硬件上进行 YUV 转换。

笔记

这里这样的解决方案不起作用。 设置预览的目标方向只会修改比例以补偿纵横比。 它实际上并不旋转。 也不起作用,因为它已经过时并且不再有效。

Preview#setTargetRotation API 应该可以工作: https://developer.android.com/reference/androidx/camera/core/Preview#setTargetRotation(int)

要使此 API 正常工作,您的PreviewView必须处于COMPATIBLE模式:

PreviewView#setImplementationMode(ImplementationMode.COMPATIBLE);

您可以在 GitHub 上找到完整的示例: https ://github.com/androidx/androidx/blob/androidx-main/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/PreviewViewFragment .java

我上传了预览旋转的屏幕记录。 如果这不是您想要的结果,请看一下并告诉我: https ://github.com/xizhang/public-files/blob/main/stackoverflow74798791/preview_rotation.mp4

也可以下载APK自己测试: https ://github.com/xizhang/public-files/blob/main/stackoverflow74798791/camera-testapp-view-debug.apk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM