ffmpeg通过OpenGL给视频添加下雪特效源码

效果如下:

shader代码:

 

uniform float u_time;
varying vec2 TextureCoordsVarying;
uniform sampler2D texture;



vec2 uv;


float rnd(float x)
{
    return fract(sin(dot(vec2(x+47.49,38.2467/(x+2.3)), vec2(12.9898, 78.233)))* (43758.5453));
}

float drawCircle(vec2 center, float radius )
{
    return 1.0 - smoothstep(0.0, radius, length(uv - center));
}


void main( ){
        const int _SnowflakeAmount = 200 ;// Number of snowflakes
        const float _BlizardFactor = 0.2 ;// _BlizardFactor Fury of the storm !

            gl_FragColor = texture2D(texture, TextureCoordsVarying);
            uv = vec2(TextureCoordsVarying.x, 1.0 - TextureCoordsVarying.y);
           float j;

            for(int i=0; i<_SnowflakeAmount; i++)
            {
                j = float(i);
                float speed = 0.3+rnd(cos(j))*(0.7+0.5*cos(j/(float(_SnowflakeAmount)*0.25)));
                vec2 center = vec2((0.25-uv.y)*_BlizardFactor+rnd(j)+0.1*cos(u_time+sin(j)), mod(sin(j)-speed*(u_time*1.5*(0.1+_BlizardFactor)), 0.9));
                gl_FragColor += vec4(0.2*drawCircle(center, 0.001+speed*0.012));
            }
    }

而命令更是简单,  glshader 是自定义的 filter

ffmpeg.exe -i "D:\left\bbb.mp4" -filter_complex "glshader=fsource=snow.glsl" -y d:\left\333.mp4

ffmpeg交流群:

210324637

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值