我想在AVAssetWriter
. 问题出现了,从 OpenGL 帧缓冲区访问像素的唯一方法是使用 glReadPixels,它仅支持 iOS 上的 RGBA 像素格式。但AVAssetWriter
不支持这种格式。在这里,我可以使用 ARGB 或 BGRA。由于可以忽略 alpha 值,我得出的结论是,将 RGBA 转换为 ARGB 的最快方法是给 glReadPixels 缓冲区移动一个字节:
UInt8 *buffer = malloc(width*height*4+1);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer+1);
问题是,glReadPixels
调用会导致EXC_BAD_ACCESS
崩溃。如果我不将缓冲区移动一个字节,它就可以完美地工作(但显然视频文件中的颜色错误)。这里有什么问题?