2017-10-23 1 views
1

저는 금속을 사용하여 카메라 프레임을 표시하고 있습니다. 출력 된 샘플 버퍼를 id<MTLTexture>으로 바꾸고 CVMetalTextureCacheCreateTextureFromImage을 사용하면 큰 효과가 있습니다 ... 프레임이 시계 방향으로 90도 회전했음을 제외하고는 훌륭합니다.회전 MTLTexture

id<MTLTexture>을 시계 반대 방향으로 90도 회전하려면 어떻게해야합니까?

텍스처를 표시 할 때 (MTKView)이 작업을 고려했지만 비디오를 녹화 할 때 여전히 잘못된 방향으로 회전됩니다.

답변

1

여기에는 최소한 두 가지 옵션이 있습니다.

가장 쉬운 방법은 아마 AVFoundation에서 "물리적으로"회전 된 프레임을 요청하는 것입니다. AVCaptureConnection을 사용한다고 가정하면 setVideoOrientation API (사용 가능한 경우)를 사용하여 프레임이 전달되기 전에 회전되도록 지정할 수 있습니다. 그런 다음 표시 및 녹음은 더 이상 작업하지 않고 일관된 방식으로 처리 할 수 ​​있습니다.

또는 프레임을 금속보기로 그릴 때와 동영상을 녹화 할 때 모두 회전 변환을 적용 할 수 있습니다. 예전에 어떻게하는지 잘 알고있는 것 같습니다. 후자는 AVAssetWriterInput에있는 transform 속성을 사용하는 것으로 가정합니다. 유사한 API는 AVMutableComposition과 같은 하위 수준의 AVFoundation 클래스에도 있습니다.