视频录制图像偏黑的解决方法

制作视频录制功能时,经常遇到明明应用的图像播放时正常的,但录制出来的图像缺偏黑。

------原因:

这种情况一般发生在应用使用线性空间渲染的方式;即playersettings-》colorspace 是linear渲染模式。

graphics api 要使用 ipengles3;

视频录制一般采用RenderTexture 进行图像采样; 但因为线性空间渲染 会在OnRenderImage 后进行屏幕投射时进行一次gamma校正;即图像提亮;

这个时候的RenderTexture 的图像就是偏暗的设置。

 

------解决方法

在OnRenderImage 里面将src 用shader进行一个gamma处理,

  private void OnRenderImage (RenderTexture src, RenderTexture dst) {

            Graphics.Blit(src, frameTexture , recordingMaterial);
  
            Graphics.Blit(src, dst);
        }

---frameTexture 就是我们视频需要的RenderTexture

        var frameTexture = RenderTexture.GetTemporary(
                videoFormat.width,
                videoFormat.height,
                24,
                RenderTextureFormat.ARGB32,
                RenderTextureReadWrite.sRGB,
                1
            );

 

---shader:

 

    fixed4 frag(v2f i) : COLOR
    {
        //从_MainTex中根据uv坐标进行采样
        fixed4 renderTex = tex2D(_MainTex, i.uv)*i.color;
    //brigtness亮度直接乘以一个系数,也就是RGB整体缩放,调整亮度
    fixed3 finalColor = renderTex * _Brightness;
    finalColor = pow(finalColor, 1.0 / 2.2);

return fixed4(finalColor, renderTex.a);

}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值