读取和写入媒体-捕捉录制的高级方法

2020-07-24  本文已影响0人  浪呀么浪打浪

将AVCaptureVideoDataOutput捕捉的CVPixelBuffer对象作为OpenGLES的贴图来呈现。使用AVCaptureVideoDataOutput的一个问题在于会失去AVCaptureMovieFileOutput来记录输出的便捷性。解决办法:使用AVAssetWriter创建一个与AVCaptureMovieFileOutput类似的可重用类从高级捕捉输出中记录输出。

公式:

kCVPixelFormatType_{长度|序列}{颜色空间}{Planar|BiPlanar}{VideoRange|FullRange}

Planar: 平面;BiPlanar:双平面

平面/双平面主要应用在yuv上。uv分开存储的为Planar,反之是BiPlanar。所以,kCVPixelFormatType_420YpCbCr8PlanarFullRange是420p,kCVPixelFormatType_420YpCbCr8BiPlanarFullRange是nv12.

VideoRange和FullRange的区别在于数值的范围,FullRange比VideoRange大一些,颜色也更丰富一些。

如果没有指定颜色范围,默认都是FullRange。但有一个除外:kCVPixelFormatType_420YpCbCr8Planar。因为有一个kCVPixelFormatType_420YpCbCr8PlanarFullRange定义,所以kCVPixelFormatType_420YpCbCr8Planar理论上应该是VideoRange (参考链接

颜色空间对应的就是它在内存中的顺序。比如kCVPixelFormatType_32BGRA,内存中的顺序是 B G R A B G R A...。

有一些特别的,比如kCVPixelFormatType_16BE555,这里需要用BE或LE指定字节顺序。

有的颜色空间后面还带有一个数字,用于表示bit长度。

上一篇 下一篇

猜你喜欢

热点阅读