如何获取原始的YUV420p相机数据

我不知道使用哪个值来获取原始YUV420p数据。 代码如下:

AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init]; output.alwaysDiscardsLateVideoFrames = YES; output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: [NSNumber numberWithUnsignedInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange]}; //output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]}; dispatch_queue_t queue; queue = dispatch_queue_create("CameraQueue", NULL); [output setSampleBufferDelegate:self queue:queue]; [session addOutput:output]; 

我注意到kCVPixelFormatType有一些值,有人知道哪个值是正确的获取原始YUV420p数据?

 kCVPixelFormatType_420YpCbCr8Planar kCVPixelFormatType_420YpCbCr8PlanarFullRange kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 

可以是其中之一?

它取决于你想得到的YUV420: Planar / Biplanar是指存储器中亮度和色度分量的排列, Planar意思是每个分量进入一个缓冲区,连续或不连续, Biplanar指向两个缓冲区,一个用于亮度和另一个色度,通常交错。 Planar一个例子是YUV420格式,而Biplanar一个例子是NV21或NV12

VideoRangeFullRange是指亮度分量的值, Video指的是[16,235]可接受的级别, FullRange指向[0,255]。 这个混乱的协议来自MPEG标准( 见这里 )…