我使用Metal来显示相机框架。我使用id<MTLTexture>
将输出的样本缓冲区转换为CVMetalTextureCacheCreateTextureFromImage
,这很有效......除了帧顺时针旋转90度。
如何逆时针旋转id<MTLTexture>
90度?
当我显示纹理时(MTKView
),我考虑过这样做,但是当我录制视频时,它仍会以错误的方式旋转。
答案 0 :(得分:2)
这里至少有几个不同的选择。
最简单的可能就是要求&#34;物理&#34;从AVFoundation旋转帧。假设您使用的是AVCaptureConnection
,则可以使用setVideoOrientation
API(如果可用)指定您希望帧在传送之前进行轮换。然后,您可以统一处理显示和录制,而无需您做进一步的工作。
或者,您可以在将框架绘制到“金属”视图和录制影片时应用旋转变换。听起来你已经知道如何做前者了。后者仅相当于在transform
上设置AVAssetWriterInput
属性,假设您正在使用它。类似的API存在于较低级别的AVFoundation类中,例如AVMutableComposition
。