如何将CMSampleBuffer / UIImage转换为ffmpeg的AVPicture?

我正在尝试使用ffmpeg的libav *库将iPhone的相机帧编码为H.264视频。我发现了这个 Apple的文章如何将CMSampleBuffer转换为UIImage,但如何将其转换为ffmpeg的AVPicture? 谢谢。     
已邀请:
回答我自己的问题:
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);

// access the data
int width = CVPixelBufferGetWidth(pixelBuffer);
int height = CVPixelBufferGetHeight(pixelBuffer);
unsigned char *rawPixelBase = (unsigned char *)CVPixelBufferGetBaseAddress(pixelBuffer);

// Do something with the raw pixels here
// ...

// Fill in the AVFrame
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);

AVFrame *pFrame;
pFrame = avcodec_alloc_frame();

avpicture_fill((AVPicture*)pFrame, rawPixelBase, PIX_FMT_RGB32, width, height);
现在
pFrame
填充了样本缓冲区的内容,使用像素格式
kCVPixelFormatType_32BGRA
。 这解决了我的问题。谢谢。     

要回复问题请先登录注册