作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ffmpeg 的 libav* 库将 iPhone 的相机帧编码为 H.264 视频。我在这个发现 Apple's article如何将 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
。
这解决了我的问题。谢谢。
关于iphone - 如何将CMSampleBuffer/UIImage转换为ffmpeg的AVPicture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499160/
我是一名优秀的程序员,十分优秀!