CVPixelBuffer到NSData和Back

Jus*_*ime 5 opengl-es objective-c avfoundation ios

视频处理的新手,我被困在这里几天.

我有一个CVVixelBufferRef,它是YUV(YCbCr 4:2:0)格式.我使用CVPixelBufferGetBaseAddress获取基地址.

如何获取基址的字节并创建一个新的CVPixelBufferRef,它也是同一个YUV格式?

我试过了:

CVPixelBufferCreateWithBytes(CFAllocatorGetDefault(), 1440, 900, kCVPixelFormatType_420YpCbCr8BiPlanarFullRange, currentFrame, 2208, NULL, NULL, (pixelBufferAttributes), &imageBuffer);

这创建了一个CVPixelBufferRef,但我不能用它做任何事情(即将它转换为CIImage,渲染它等).

最终,我的目标是从基地址调用获取我收到的字节,并在屏幕上显示它们.我知道我可以在没有基地址调用的情况下直接执行此操作,但我有一个限制,只允许我接收基址字节.

Jus*_*ime 9

以供参考,

我无法从CVPixelBuffer获得CIImage的原因是因为它不是IOSurface支持的.要确保它支持IOSurface,请使用CVPixelBufferCreate,然后使用CVPixelBufferGetBaseAddress(如果是平面数据,则使用CVPixelBufferGetBaseAddressOfPlane)并将您的字节存入该地址.

希望这可以帮助将来的某个人.

  • 如果添加示例代码,它会更有帮助:) (8认同)