我已经使用AVFoundation捕获了视频。我已经设置(视频设置)并获得outputsamplebuffer kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange格式。但是我需要YUV420格式才能进行进一步处理。
我的疑问是
1. 420YpCbCr8BiPlanarVideoRange,420YpCbCr8BiPlanarFULLRange, 420YpCbCr8PlanarFullRange,420YpCbCr8Planar
和YUV420之间的区别?
2.如何将420YpCbCr8BiPlanarVideoRange转换为YUV420?
3.如何将YUV420转换为32BGRA?
4)
或其他方式做到这一点???那就是任何开源库或苹果框架...。
我已经通过了Accelerate框架......它具有用于以下planar8,planerF,RGBA8888
等的图像转换...用32BGRA/YUV420/ 420YpCbCr8BiPlanarVideoRange
等于这些格式的任何方法和我的要求吗????
提前致谢
提前致谢
最佳答案
主要区别在于:
如果您具有双平面格式,则Y数据(亮度)和CbCr数据(色度或颜色信息)位于称为平面的两个单独的存储区域中。您可以将CVPixelBufferGetBaseAddressOfPlane
与索引0一起使用以获取Y数据,将索引1与CbCr数据一起使用。如果格式为 plane ,则两种数据都在同一平面上(首先是所有Y值,然后是所有Cb值,最后是Cr值)。
如果您具有全范围格式,则每个亮度或色度值将使用0到255之间的值。 视频范围格式仅使用16到235之间的值(出于某些历史原因)。
术语 420 表示格式包含多少亮度和多少色度信息。基本上说,每个像素都有亮度信息,每个2x2块都有色度信息。
就我所知,YUV420不是精确指定的格式。它通常用于平面YpCbCr 420格式。