iOS Dump YUV pixelBuffer

792 阅读1分钟

- (void)dumpYuvPixelBuffer: (CVImageBufferRef)pixelBuffer {

static int flag = 0;

if (flag == 0) {

flag = 1;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];


NSString * filePath = [documentsDirectory stringByAppendingPathComponent:@"/dump.yuv"];

CVPixelBufferLockBaseAddress(pixelBuffer, 0);

size_t count = CVPixelBufferGetPlaneCount(pixelBuffer);

NSMutableData* data = [NSMutableData data];

for (int i = 0; i < count; i++) {

size_t width = CVPixelBufferGetWidthOfPlane(pixelBuffer, i);

size_t height = CVPixelBufferGetHeightOfPlane(pixelBuffer, i);

size_t bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, i);

void* buf = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, i);

NSData *Data = [NSData dataWithBytes:buf length:bytesPerRow*height];

[data appendData:Data];

}

[data writeToFile:filePath atomically:YES];

CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);

}

}