9

我已经使用 AVFoundation 捕获了视频。我已经设置(视频设置)并进入 outputsamplebuffer kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 格式。但我需要 YUV420 格式进行进一步处理。

我的疑问是

1.420YpCbCr8BiPlanarVideoRange,420YpCbCr8BiPlanarFULLRange, 420YpCbCr8PlanarFullRange,420YpCbCr8Planar和YUV420的区别?
2.如何将 420YpCbCr8BiPlanarVideoRange 转换为 YUV420 ?
3.如何将YUV420转32BGRA?

4)或其他方式来做到这一点???那是任何开源库或 Apple 框架....

我已经通过了 Accelerate 框架......它具有用于以下 planar8,planerF,RGBA8888等的图像转换......任何方式来等同于这些格式 32BGRA/YUV420/ 420YpCbCr8BiPlanarVideoRange 和我的要求吗??????

提前致谢

提前致谢

4

1 回答 1

31

主要区别在于:

如果您有双平面格式,则 Y 数据(亮度)和 CbCr 数据(色度或颜色信息)位于称为平面的两个独立存储区域中。您可以使用CVPixelBufferGetBaseAddressOfPlaneindex 0 来获取 Y 数据,使用 index 1 来获取 CbCr 数据。如果格式为平面,则两种数据都在同一平面中(首先是所有 Y 值,然后是所有 Cb 值,最后是 Cr 值)。

如果您有全范围格式,则从 0 到 255 的值用于每个亮度或色度值。视频范围格式仅使用 16 到 235 之间的值(出于某些历史原因)。

术语420指示格式包含多少亮度和多少色度信息。它基本上说每个像素都有亮度信息,每个 2x2 块都有色度信息。

YUV420 - 据我所知 - 不是一种精确指定的格式。它通常用于平面 YpCbCr 420 格式。

于 2011-06-11T09:28:39.413 回答