我正在使用
我认为
到目前为止,我尝试过以下方法:
glReadPixels
将数据读入CVPixelBufferRef
中。我将CVPixelBufferRef
用作AVAssetWriter
的输入。不幸的是,像素格式似乎不匹配。我认为
glReadPixels
返回的像素数据是RGBA格式,而AVAssetWriter
想要ARGB格式的像素数据。最好的方法是将RGBA转换为ARGB?到目前为止,我尝试过以下方法:
- 位操作,类似于argb = (rgba >> 8) | (rgba << 24)
- 使用
CGImageRef
作为中间步骤
CGImageRef
作为中间步骤确实有效...但我宁愿不要多出50行可能会影响性能的代码。
kCVPixelFormatType_32ARGB
传递给CVPixelBufferCreate
。我将GL_RBGA
传递给glReadPixels
。我尝试将 RBGA 格式传递给CVPixelBufferCreate
,但它没有起作用(要么颜色不正确,要么应用程序崩溃)。 - MrDatabase