CVPixelbuffer 取 BGRA

首要要确定CVPixelbuffer的类型, 有 YUV/RGBA 的等等

从摄像头取BGRA式例代码:

- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
       fromConnection:(AVCaptureConnection *)connection
{
    //BGRA格式的cvpixelbuffer中获取bgra
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    CVPixelBufferLockBaseAddress(imageBuffer,0);
    uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
    size_t width = CVPixelBufferGetWidth(imageBuffer);
    size_t height = CVPixelBufferGetHeight(imageBuffer);
    
    size_t bufferSize = bytesPerRow * height;
    uint8_t *myPixelBuf = (uint8_t *)malloc(bufferSize);
    memmove(myPixelBuf, baseAddress, bufferSize);
    baseAddress = nil;
    IFrameUploaded cb = callback;
    [imageEngine pushNewFrame:myPixelBuf dataType:IMAGE_BGRA8888 withWidth:(int)width withHeight:(int)height withSize:(int)bufferSize frameUploadedNotify:cb withTimestamp:0 ctx:myPixelBuf];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 由于H.264等压缩算法都是在YUV的颜色空间上进行的,所有在进行压缩前,首先要进行颜色空间的转换。如果摄像头采集...
    眷卿三世阅读 14,637评论 2 6
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,240评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 今天第一天的坚持 7点钟起床,做到了; 1小时的阅读量,完成了; 40分钟的运动量,算达标吧,中途有偷刷了朋友圈和...
    一棵幸运小小草阅读 2,972评论 0 0
  • 出发 从小过着三点一线生活的小北,生活单调却不自知,为什么呢?因为她始终沉浸在自己的小世界里。 在这个小小世界里,...
    小小苗幸福阅读 3,573评论 1 1