【发布时间】:2023-03-10 06:26:02
【问题描述】:
我正在使用glReadPixels 将数据读入CVPixelBufferRef。我使用CVPixelBufferRef 作为AVAssetWriter 的输入。不幸的是,像素格式似乎不匹配。
我认为glReadPixels 正在返回 RGBA 格式的像素数据,而 AVAssetWriter 想要 ARGB 格式的像素数据。将 RGBA 转换为 ARGB 的最佳方法是什么?
这是我迄今为止尝试过的:
- 沿 argb = (rgba >> 8) | 行的位操作(rgba
- 使用
CGImageRef作为中间步骤
位操作不起作用,因为 CVPixelBufferRef 似乎不支持下标。 CGImageRef 中间步骤确实有效...但我不希望有 50 行额外的代码可能会影响性能。
【问题讨论】:
-
您是如何获得 CVPixelBufferRef 的?你是在调用 CVPixelBufferCreate 吗?如果是这样,您将传递什么作为 pixelFormatType 参数?你传递给 glReadPixels 的格式是什么?
-
我将
kCVPixelFormatType_32ARGB传递给CVPixelBufferCreate。我将GL_RBGA传递给glReadPixels。我尝试将 RBGA 格式传递给CVPixelBufferCreate,但它不起作用(颜色不好或应用程序崩溃)。
标签: ios avassetwriter glreadpixels