AVPlayer 输出纹理为YUV 和RGB
写这篇博客,是因为我在使用OpenGL ES渲染从视频获取的纹理时(使用YUV的方式),出现了颜色偏差的问题,但是我仔细看了我的代码,采样坐标,参数设置等都没有问题,然后我也学习了别人的相关代码,发现使用的方式都是一样的,因此被这个问题卡主了,于是只好换一种方式了,因此借鉴了下面这篇文章的设置方法,将视频输出数据直接设置为RGB,解决了颜色偏差的问题
1.YUV纹理
由于视频的编码格式基本都是YUV420,然后苹果的demo代码中通过AVPlayerItemVideoOutput获取Y-Pannel和 UV-Pannel 两张纹理,最后在Shader中对两种纹理组合处理。
设置AVPlayerItemVideoOutput
的部分代码
NSDictionary *pixBuffAttributes = @{
(id)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)};