RGB2YUV
处理音视频,对YUV RGB肯定不陌生,这里记录下经过OpenGL处理后的 RGB 格式的pixelBuffer 转成 YUV 格式导出视频。
DIY
自己处理矩阵的计算,YUV的存储格式,可以加深对YUV的理解, 类似的反过来处理,或者处理其他格式的YUV 422 444等,也是一样的。
所以还是有必要了解一下,DO IT YOURSELF.
重点是注意内存对齐,YUV420采样存储方式就好了,其他没什么复杂的。
转换后
如果出现这种像素错位的情况,一般是内存对齐 导致的补位没有考虑到,参考下代码里面的 stride字段
1 | CFDictionaryRef CreateCFDictionary(CFTypeRef* keys, CFTypeRef* values, size_t size) { |
LibYUV
看过了上一种方式,LibYUV就更好理解了,这里主要通过pod 依赖下 LibYUV-ios, 就不自己编译了。
pod 'Libyuv','1703'
LibYUV 不能直接RGB转成NV12 ,需要通过I420过度下。
1 | CVPixelBufferLockBaseAddress(pixelBuffer, 0); |
RGB->NV21
更新下:
上次使用libyuv的时候 看漏了,其实有argb转nv21的
1 | CVPixelBufferLockBaseAddress(pixelBuffer, 0); |