最近由于公司項(xiàng)目需要葵袭,用上了GPUImage 框架進(jìn)行視頻處理涵妥,其中踩了不少的坑。
GPUIMageMovie 解碼
為了方便獲取視頻的sampleBuffer 以及推送到下一個(gè)關(guān)系鏈中坡锡,采用了 GPUImageMovie 的 部分源代碼進(jìn)行組裝蓬网。
其中發(fā)現(xiàn),解碼出來的視頻顏色效果與原視頻有明顯的差別鹉勒,偏亮帆锋。
原因:
是 GPUImageMovie 中 yuvConversionSetup() 中 設(shè)置默認(rèn)配置的kColorConversion709 的問題。-
解決方法:
把 GPUImageColorConversion.m中修改參數(shù)就可以恢復(fù)原來的視頻顏色了禽额。
因?yàn)橥ㄟ^pod 最新tag的代碼 和 用git 下載Master代碼, 變量所在的位置有所不同锯厢。
在GPUImageVideoCamera 或 GPUImageColorConversion 找到 kColorConversion601Default 和 kColorConversion709Default的定義進(jìn)行修改。
// BT.601, which is the standard for SDTV.
GLfloat kColorConversion601Default[] = {
// 1.164, 1.164, 1.164,
// 0.0, -0.392, 2.017,
// 1.596, -0.813, 0.0,
1, 1, 1,
0, -.39465, 2.03211,
1.13983, -.58060, 0,
};
// BT.709, which is the standard for HDTV.
GLfloat kColorConversion709Default[] = {
// 1.164, 1.164, 1.164,
// 0.0, -0.213, 2.112,
// 1.793, -0.533, 0.0,
1, 1, 1,
0, -.21482, 2.12798,
1.28033, -.38059, 0,
};