Ios 将CVPixelBuffer转换为MTLTexture的意外输出

Ios 将CVPixelBuffer转换为MTLTexture的意外输出,ios,swift,avfoundation,metal,Ios,Swift,Avfoundation,Metal,我正在使用Avassetrader从AVAsset提取样本缓冲区。在每次迭代中,我都使用下面的代码片段将每个CMSampleBuffer转换为MTLTexture。然而,我得到了预期的CVPixelBuffer,但当我尝试转换它时,我得到了。预期产量为 我已经试着调试宽度和高度是否准确,我试着使用不同的视频出现相同的问题,试着创建不同的textureCache。同样的问题 func convertToMTLTexture(sampleBuffer:CMSampleBuffer?->MTLText

我正在使用Avassetrader从AVAsset提取样本缓冲区。在每次迭代中,我都使用下面的代码片段将每个CMSampleBuffer转换为MTLTexture。然而,我得到了预期的CVPixelBuffer,但当我尝试转换它时,我得到了。预期产量为

我已经试着调试宽度和高度是否准确,我试着使用不同的视频出现相同的问题,试着创建不同的textureCache。同样的问题

func convertToMTLTexture(sampleBuffer:CMSampleBuffer?->MTLTexture?{
如果让textureCache=textureCache,
设sampleBuffer=sampleBuffer,
let imageBuffer:CVPixelBuffer=CMSampleBufferGetImageBuffer(sampleBuffer){
let width=CVPixelBufferGetWidth(imageBuffer)
let height=CVPixelBufferGetHeight(imageBuffer)
var纹理:CVMetalTexture?
CVMetalTextureCacheCreateTextureFromImage(kCFAllocatorDefault,textureCache,
图像缓冲区、零、.bgra8Unorm、宽度、高度、0和纹理)
如果让纹理=纹理{
返回CVMetalTextureGetTexture(纹理)
}
}
归零
}

CMSampleBuffers的像素格式是什么?(我的猜测:YCbCr)您可以在这里找到这类问题的工作示例代码: