You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFMPEG实现类似CAPCUT的Grain(颗粒感)调节效果

如何用FFMPEG实现类似CAPCUT的Grain(颗粒感)调节效果

嘿,我刚好折腾过类似的需求,FFmpeg原生的滤镜组合完全可以模拟出CapCut那种自然的颗粒感,而且直接就能用到你的Node/Express项目里的Fluent-FFmpeg中!

核心思路:用noise滤镜模拟颗粒,配合辅助滤镜优化质感

CapCut的颗粒感不是单纯的粗暴噪点,是那种“清晰中带细腻质感”的效果,所以我们需要用noise滤镜生成颗粒,再搭配eq(画面微调)和unsharp(轻微锐化)来匹配那种质感。

基础FFmpeg命令示例

先给你一个直接能用的命令,参数可以根据你的需求调整:

ffmpeg -i input.mp4 -filter_complex "eq=contrast=1.05:brightness=0.02,noise=c0s=0.03:c0f=20:allf=t,unsharp=4:4:0.2" output.mp4

各参数的作用:

  • eq=contrast=1.05:brightness=0.02:微调对比度和亮度,让后续添加的颗粒更突出,不会被画面“吃掉”
  • noise=c0s=0.03:c0f=20:allf=t:
    • c0s=0.03:亮度通道的噪点强度,数值越大颗粒越明显(0.02-0.05是接近CapCut的常用范围)
    • c0f=20:颗粒的动态更新帧率,数值越高颗粒变化越快,设为0就是静态颗粒
    • allf=t:让噪点同时作用于亮度和色度通道,模拟胶片颗粒的自然感
  • unsharp=4:4:0.2:轻微锐化画面,避免颗粒导致的整体发糊,平衡出CapCut那种“清透+质感”的效果

适配Node/Express的Fluent-FFmpeg代码

如果你要在项目里用Fluent-FFmpeg,直接把滤镜数组传进去就行,代码示例如下:

const ffmpeg = require('fluent-ffmpeg');

// 处理视频添加颗粒感
ffmpeg('./input.mp4')
  .videoFilters([
    // 先微调画面基础参数
    'eq=contrast=1.05:brightness=0.02',
    // 核心颗粒滤镜,可按需调整参数
    'noise=c0s=0.03:c0f=20:allf=t',
    // 轻微锐化平衡质感
    'unsharp=4:4:0.2'
  ])
  .save('./output.mp4')
  .on('end', () => {
    console.log('颗粒感效果添加完成啦!');
  })
  .on('error', (err) => {
    console.error('处理过程出错了:', err);
  });

自定义参数的小技巧

  • 想要更细腻的细颗粒:把c0s降到0.02,c0f提到25-30,颗粒变化更细腻
  • 想要粗颗粒胶片感:把c0s调到0.04-0.06,c0f降到10-15,颗粒更厚重
  • 原视频噪点多?可以在最前面加一个轻微降噪:noise=c0n=0.01,先压掉原生噪点再加我们的质感颗粒,效果会更干净

备注:内容来源于stack exchange,提问作者domicoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:58:08