gpt4 book ai didi

android - 在 SurfaceTexture 中渲染时,谁会旋转相机的帧?

转载 作者:行者123 更新时间:2023-11-29 19:13:54 29 4
gpt4 key购买 nike

更新:问题是关于 Camera2

当在 SurfaceTexture 上绘制相机预览时,我试图找出谁应用了旋转变换。

当从相机请求预览尺寸时,您总是会得到宽度大于高度的对(因为横向是拍照时的通常方向)。

在纵向模式下使用设备并设置预览尺寸(例如 1600 x1200)时,相机的帧正确旋转但我无法找到它完成的位置,是不是 CameraDevice 是否自动基于 Surface 类型?还是旋转图像的 SurfaceTexture

最佳答案

答案在一定程度上取决于您使用的相机 API;既然你提到了 CameraDevice,我假设你指的是 camera2。

在 camera2 中,目标之一是尽可能简化旋转处理;因此,如果您将预览绘制到 SurfaceView 中,相机服务和硬件合成器/GPU 会合作并为您处理所有旋转。你总是从传感器请求横向分辨率(它与传感器的长边对齐,与设备的长边相匹配),你只需要确保你的 SurfaceView 的纵横比与请求的分辨率相匹配(所以在纵向,您需要 9:16 的 View 才能正确显示 1080p;在风景中您需要 16:9 的 View )。

对于 TextureView,以及使用 SurfaceTexture 完全自定义的 GL 绘图,API 无法为您完成所有工作。 SurfaceTexture 的转换由相机 API 设置,以将相机输出旋转到设备的 native 方向(通常是手机的纵向,某些平板电脑的横向),但如果您的应用程序的 UI 不在 native 方向,它无法处理额外的旋转.

在这种情况下,您需要从 SurfaceTexure 获取变换矩阵,应用额外的旋转以匹配您的应用程序 UI,并将其设置为 TextureView 矩阵。

关于android - 在 SurfaceTexture 中渲染时,谁会旋转相机的帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44226206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com