
OBS Studio 滚动滤镜完整教程从无缝背景滚动到自动跟踪的 5 种玩法【免费下载链接】obs-studioOBS Studio - Free and open source software for live streaming and screen recording项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studioOBS Studio 的**滚动滤镜Scroll Filter**是内置滤镜里最被低估的一个它能让你用两行参数实现直播背景的无缝滚动、产品素材的自动巡移甚至作为动态跟踪效果的底层工具。整个实现只有约 300 行 C 代码源码在 plugins/obs-filters/scroll-filter.c本文带你把它的参数、原理和进阶用法一次性讲透。 先说结论滚动滤镜能干什么想象三个真实场景直播背景跑马灯一条横幅素材在画面底部无限循环滚动营造电视频道感产品展示巡移一张 4K 产品全家福大图镜头缓缓从左扫到右不用任何摄像机运动动态聚焦的起点配合其他滤镜让画面元素按你的节奏移动模拟自动跟踪的主体运动这三个需求OBS 都不需要任何第三方插件——滚动滤镜就在核心滤镜包里随安装包自带。滚动滤镜是怎么工作的只动坐标不动像素先建立一个直觉滚动滤镜没有移动任何一帧画面它只是每帧告诉显卡从原图的哪个位置开始采样。整个机制分三步走每帧计时tick滤镜根据速度 × 帧时间累加一个偏移量设置采样器sampler决定滚出画面后是无缝回绕还是停在边界着色器采样render顶点着色器把 UV 坐标整体平移显卡自然就从新位置取像素对应的核心代码片段每帧只做了两次乘法加法static void scroll_filter_tick(void *data, float seconds) { struct scroll_filter_data *filter data; filter-offset.x filter-size_i.x * filter-scroll_speed.x * seconds; filter-offset.y filter-size_i.y * filter-scroll_speed.y * seconds; if (filter-loop) { if (filter-offset.x 1.0f) filter-offset.x - 1.0f; ...而真正滚动发生在着色器里只有一行核心逻辑VertData VSCrop(VertData v_in) { vert_out.pos mul(float4(v_in.pos.xyz, 1.0), ViewProj); vert_out.uv v_in.uv * mul_val add_val; // 整体平移采样坐标 return vert_out; }这个着色器文件是 plugins/obs-filters/data/crop_filter.effect滚动滤镜和裁剪滤镜共用——区别只是滚动滤镜把add_val偏移量每帧往前推。为什么这么快因为所有计算都发生在 GPU 的顶点着色器里CPU 每帧只更新一个浮点数。所以哪怕 4K 素材滚动也几乎不占性能。循环模式和边界模式两种滚动行为这个区别直接体现在采样器配置上源码就两行.address_u filter-loop ? GS_ADDRESS_WRAP : GS_ADDRESS_BORDER, .address_v filter-loop ? GS_ADDRESS_WRAP : GS_ADDRESS_BORDER,循环模式GS_ADDRESS_WRAP滚出右边缘的画面会从左边重新出现永远滚不完适合横幅、背景边界模式GS_ADDRESS_BORDER滚到边缘后停在最后一帧画面静止不动适合入场巡移这类一次性动效⚙️ 滚动滤镜参数逐项拆解在滤镜设置面板里你能看到的全部参数如下参数名与源码一一对应参数名界面显示类型 / 取值范围作用speed_x水平速度float-500.0 ~ 500.0水平滚动速度。正数向右负数向左0 为静止speed_y垂直速度float-500.0 ~ 500.0垂直滚动速度。正数向下负数向上limit_cx限制宽度bool勾选后输出宽度不再跟随源而由 cx 决定cx宽度uint1 ~ 8192限制后的输出宽度像素limit_cy限制高度bool勾选后输出高度由 cy 决定cy高度uint1 ~ 8192限制后的输出高度像素loop循环bool默认 true循环回绕 or 边界停止见上图两个容易被忽略的细节偏移量是归一化的 0~1不是像素。所以同一速度值下1080p 素材比 4K 素材看起来滚得快一倍同样的像素速度对应更小的相对偏移。想要跨分辨率一致的速度速度值要和素材分辨率成比例调整速度改为 0 时偏移自动清零scroll_filter_update里的逻辑等于回到起点这也是重置滚动进度的最快办法 跟做一遍3 分钟给图片源加上无缝滚动下面以最典型的背景横幅循环滚动为例全程 3 分钟添加素材在来源面板点选择图像导入一张横幅图推荐比画框宽的图如 3840×200打开滤镜选中该来源 → 底部点滤镜 → 滤镜面板点→ 选滚动英文名 Scroll设置速度水平速度填40垂直速度填 0。画面立刻开始向右匀速滚动保持循环确认循环处于勾选状态默认就是。滚到右边的内容会无缝从左边回来肉眼看不出接缝限制输出尺寸可选勾选限制宽度/限制高度填cx1920、cy200把滚动区域固定成一条 1920×200 的横幅条其余部分由场景裁切一个常用的小技巧想让横幅向左滚动更符合阅读直觉把水平速度设成-40即可负号就是反向。 换个玩法斜向滚动、窗口裁剪和组合技单轴滚动只是热身。把两个参数组合起来玩法立刻多了一倍玩法speed_xspeed_y效果背景跑马灯±400水平无缝横幅垂直瀑布流030素材从上往下循环对角线巡移2515画面沿对角线漂移两个轴同时回绕入场后停住150临时0配合关闭循环滚到边缘自动停巡移大地图套路边界模式的价值把一张超宽产品全家福比如 4000×1000作为来源勾选限制宽度 cx1920输出窗口是源图的一小片关闭循环speed_x给 80。效果就是镜头从图的最左端匀速扫到最右端扫完定格——一个不用摄像机的运镜。滤镜叠罗汉OBS 允许在一个来源上叠多个滤镜顺序从上到下依次生效。常见组合裁剪 → 滚动先裁掉不需要的边缘再让剩余部分循环接缝更干净滚动 → 缩放滚动的同时整体放大/缩小做出漂移 呼吸的感觉色度键 滚动抠掉绿底后让主体滚动做出飘动的贴纸效果色度键滤镜源码见 plugins/obs-filters/chroma-key-filter.c如果你想做的是只让某个区域动可以去看遮罩滤镜 plugins/obs-filters/mask-filter.c 的思路它同样复用了一个.effect着色器但通过 alpha 通道控制哪些像素参与合成。理解了它你就掌握了 OBS 滤镜的通用套路。️ 踩坑速查症状原因解决画面滚出去后变成纯黑边loop没勾边界模式用BORDER采样超界补黑勾选循环或这就是你要的停住效果想让它停在中途却停不下来默认looptrue永远回绕取消勾选循环滚到 1.0 即定格改了速度值滚动位置回跳到起点速度归 0 会清零偏移再改回来也是重置进度本来就该如此不想清零就别中途改 0两个不同分辨率的源速度值相同但快慢不一样偏移量是 0~1 的归一化值不是像素速度值按分辨率等比换算滚动画面卡顿、掉帧滚动本身不吃性能通常是叠了太多滤镜或源本身是解码大户减少滤镜层数视频源先缩放到目标尺寸再滚动加了滤镜但预览窗口看不到变化滤镜加在了别的来源上或被上方滤镜遮住了检查滤镜面板确认归属来源想要滚到边缘再弹回来的往返效果滚动滤镜没有往返模式只有单向用场景过渡做两个方向的场景切换模拟或接受单向循环还有一处值得知道的暗门滚动滤镜支持 HDR 素材SdrOnlyInfo相关处理SDR 源混进 HDR 画布时会自动选择DrawMultiply/DrawTonemap等技术见get_tech_name_and_multiplier函数你不用手动管只是当画面突然变暗/变亮时可以先怀疑是色彩空间转换在起作用。 下一步从使用者到开发者普通用户可以直接玩的三件事试试同目录下的兄弟滤镜GPU 延迟plugins/obs-filters/gpu-delay.c、异步延迟、锐化和滚动组合出拖影滚动用场景过渡做滚动分段A 场景滚动到 50% 切到 B 场景继续实现多段巡移想要真·自动跟踪摄像头跟人、物体聚焦滚动滤镜做不了需要借助外部程序OBS 提供 WebSocket 接口可以用脚本或 obs-websocket 类工具 让外部 AI 识别结果驱动来源的变换矩阵——滚动滤镜的 UV 偏移思路和它本质相同只是驱动源不同想读代码的话建议按这个顺序总代码量不到 600 行plugins/obs-filters/scroll-filter.c —— 一个最小完整的滤镜创建、更新、tick、渲染、属性面板、销毁全部回调都在里面plugins/obs-filters/data/crop_filter.effect —— 配套的 GLSL 着色器看清add_val是怎么参与采样的plugins/obs-filters/obs-filters.c —— 看obs_register_source(scroll_filter)如何把滤镜注册进系统理解完这三个文件你就具备了写自定义 OBS 滤镜的全部知识一个obs_source_info结构体 一组回调函数 一个.effect着色器。如果你需要从零搭建开发环境可以先把仓库拉下来git clone https://gitcode.com/GitHub_Trending/ob/obs-studio然后从INSTALL文件了解各平台的构建方式。祝你滚出自己的第一个运镜效果。【免费下载链接】obs-studioOBS Studio - Free and open source software for live streaming and screen recording项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考