Jasna 拆解:把整条视频修复流水线塞进 GPU,比 Lada 快 3 到 4 倍

一个开源的本地视频 / 图片马赛克修复工具。应用层 AGPL-3.0,带 GUI 和完整 CLI,全流程在本机 GPU 上跑。仓库地址 github.com/Kruk2/jasna | 中文说明 github.com/Kruk2/jasna/blob/main/README.zh.md

这类工具过去最大的痛点是能用但慢:CPU 解码、逐帧落盘、模型跑在 PyTorch eager 上、编码再交给 CPU x264。Jasna 的做法是把每一步都挪到 GPU,并且针对只修一小块区域这个场景做了专门的工程优化。下面按流水线拆开讲,最后给可以直接抄的命令。

一、流水线:7 个阶段,全部在 GPU 上

解码 NVDEC/AMF → 检测 rfdetr-v6 逐帧找马赛克 → 跟踪并分片 → BasicVSR++ 修复成 256×256 图块 → 可选二次修复 → 融合回原帧 → NVENC/AMF 编码且音频直通。

几个值得单独拎出来的工程细节:

1. 分片是按对象而不是按时间轴。 不是简单把视频切成 N 帧一段。它先逐帧跟踪每一个马赛克目标,同一个目标的连续帧才归为一个 clip。三个后果:镜切处强制断开,所以一个 clip 永远不会跨两个镜头,不会把 A 镜头的纹理糊到 B 镜头;clip 之间有重叠帧并做交叉淡化,消除拼接闪烁;短暂漏检可以被补上,不会导致片段被切断。

2. 修复分辨率固定 256×256。 BasicVSR++ 只处理 256×256 的图块,不是整帧。这是显存能压到 4 到 5 GB 的根本原因——修 4K 和修 1080p,模型侧开销一样,差别只在解码、融合和编码。

3. 融合阶段只改马赛克区域。 原帧其余像素原样保留。这比整帧重绘的方案靠谱得多,不会把整段视频的画质和噪点特征都改掉。

4. 音频直通。 只有输出容器不支持源音频格式时才重编码,默认 mkv 容器基本不会触发。

二、模型矩阵

修复模型用 --restoration-model-name 指定:

参数值画质速度说明
basicvsrpp基准1×默认值,免费
ltx细节明显更多很慢标准 LTX,官方推荐
ltx-4step略多于 ltx约 1.5× 慢良好档
ltx-8step多于 4step约 2.5× 慢高画质档
ltx-undistilled最佳约 5× 慢顶级档

LTX 是扩散模型路线,处理逻辑和 BasicVSR++ 完全不同。它会跑 4 遍:找马赛克、准备、扩散修复、保存。更慢,但能生成真实纹理细节,而不只是插值。

检测模型用 --detection-model 指定:

参数值场景默认阈值
rfdetr-v6默认,内置0.35
rfdetr-vr-v1VR180,内置0.40
lada-yolo-v4内置0.25
rfdetr-v6-large可选下载,更准更慢0.40
zelefans-vr-yolo-v2可选下载,VR 专用无

调阈值的口诀:漏检就调低,误检就调高。

二次修复用 --secondary-restoration 指定:

参数值说明配套参数
unet-4x支持者模型,修复区域更清晰NVIDIA 限定
rtx-super-res走 RTX 显卡自带超分--rtx-scale 2/4、--rtx-quality low/medium/high/ultra、--rtx-denoise、--rtx-deblur
tvai调 Topaz Video AI 的 ffmpeg,Windows 专用--tvai-model iris-2/prob-4/iris-3

静态图片自动切 SD 1.5 路线,--restoration-model-name 对图片无效:

参数默认说明
--sd15-steps25细化步数,越多细节越多但更慢
--sd15-strength0.6重绘强度,上限 0.7,重马赛克往上调
--sd15-freeu开形状更清晰,出现生硬边缘时关掉
--sd15-variants1一次出 N 个版本,种子递增,自己挑

三、性能数字

3 分 22 秒整段视频,RTX 5090(Linux),BasicVSR++:

输入Lada 0.11.0Jasna 0.9.1加速比
720p H.26401:4700:323.4×
1080p H.26402:0200:343.6×
2160p H.26404:5601:034.7×

分辨率越高加速越明显,因为瓶颈被搬到了 GPU 上,而 Lada 在 CPU 侧的固定开销不随分辨率下降。

显存占用(典型 / 峰值,GB):

输入Ladav0.4.1v0.5.0v0.9.0v0.9.1
720p 8-bit1.8/3.117.6/19.98.6/9.08.6/9.14.2/4.6
1080p 8-bit2.0/3.318.9/21.49.5/10.29.3/10.14.8/5.6
2160p 8-bit2.6/4.126.0/30.512.9/15.011.4/15.47.2/10.9

一个版本里 1080p 显存从 18.9 GB 干到 4.8 GB,降了将近 4 倍,这是这次最实在的优化。

四、怎么用:从零到跑通

Step 0 先自查硬件,别白下载。

项要求
NVIDIAGTX 16 系 / RTX 20 系起,算力 ≥ 7.5;驱动 Windows ≥ 610、Linux ≥ 580
AMDRX 7000/9000 实验性;Windows 需 Adrenalin ≥ 26.8.1;ROCm
显存BasicVSR++ 4 GB 起;LTX 需 ≥ 8 GB 显存 + 16 GB 内存
磁盘SSD;Windows NTFS / Linux ext4·Btrfs·XFS·ZFS;不支持网络盘
路径不能含中文、日文、带重音的字符(国内用户踩坑第一名)

Step 1 下载解压。 从 GitHub Releases 下对应系统和显卡的发行包,解压到纯英文路径。D:\下载\jasna\ 会直接崩,D:\tools\jasna\ 才行。

Step 2 启动。 Windows 下 GUI 和 CLI 是同一个文件,双击 jasna.exe。Linux NVIDIA 运行 ./jasna。Linux AMD 要先装一次 AMF 运行库,从 repo.radeon.com/amf/26.20/ 下载 zip、解压、执行 sudo bash amf_installer_26.20.sh,同意许可协议后运行 run_jasna_amd.sh。

Step 3 首次运行要等 15 到 60 分钟,这一步跑不掉。 在 NVIDIA 上 Jasna 会用 TensorRT 为你的具体 GPU 编译检测模型和 BasicVSR++ 修复模型,用了 UNet 4x 也会一起编译。期间别开浏览器、别打游戏、别用这台电脑。编译结果存在 model_weights/ 目录里,之后所有任务复用。升级 Jasna 时把这个目录拷到新版本里,就不用再等一次。

编译到底值不值:

设置时间显存
编译(默认)33 秒5.0 GB
--no-compile-basicvsrpp107 秒4.6 GB

省不到 0.5 GB 显存,代价是慢 3 倍。除非真卡在显存边缘,否则别关。

Step 4 跑第一个任务。 GUI 里拖入视频,鼠标悬停每个设置旁的 info 图标看说明(每个选项都有解释,别猜),点界面底部的播放按钮。

五、CLI:可以直接抄的用法

CLI 能覆盖 GUI 的绝大部分功能。只有视频播放器、LTX 种子预览、遮罩建议、交互式图片处理这四项是 GUI 专属。

场景命令
单个视频jasna --input input.mp4 --output output.mkv
单张图片(自动走 SD 1.5)jasna --input photo.png --output restored.png
整个文件夹(先图片后视频)jasna --input input_folder --output output_folder

批量加命名模板、加日志:

jasna --input D:/videos/in --output D:/videos/out --output-pattern "{original}_restored" --max-clip-size 90 --temporal-overlap 12 --log-level info

{original} 是输入文件名主干,图片保留原扩展名。如果两个输入会映射到同一个输出文件,Jasna 会在处理前报错退出,不会跑到一半才发现覆盖。

只修一段用区间模式:

jasna --input in.mp4 --output out.mkv --segments "10-25,01:10-01:30.5"

单位是秒或 mm:ss,逗号分隔多个区间。注意 --segments 下输出强制使用输入的编解码器,指定不同的 --codec 会直接报错。另外它不能和 --stream、--retarget-high-fps、--fmp4、--ltx-auto-split 共用。

混合策略,大马赛克用 LTX、小的用 BasicVSR++:

jasna --input in.mp4 --output out.mkv --restoration-model-name ltx --ltx-auto-split 12

意思是高度达到视频高度 12% 的马赛克交给 LTX,其余用 BasicVSR++。这是省钱又省时间的玩法,支持文件夹输入。

LTX 常用开关:

开关效果
--ltx-fast快约 1.4 倍,细节略少;仅 RTX 50 系,其他卡直接报错
--ltx-large-canvas大马赛克细节更多,该部分约 3 倍慢;需约 12 GB 空闲显存
--ltx-seed 20260923固定种子,结果可复现
--ltx-trial免费测速,不需要模型和许可证,视频不会被修复

--ltx-trial 这个最该先跑:jasna --input in.mp4 --output out.mp4 --restoration-model-name ltx --ltx-trial。决定要不要掏钱之前,先用它看你的卡能不能跑 LTX、要跑多久。

LTX 任务中断了怎么续:Ctrl+C、报错、关掉应用,重新跑同一条命令就从已保存的进度继续,--segments 和 --ltx-auto-split 也支持。注意未完成的跟踪段可能要重做,输出保存会从头开始。输入、设置或版本变了,替换进度前会先问你;没有交互终端时会停下并保留进度。

显存怎么调,1080p、重叠 8、RTX 5090 的官方数据:

--max-clip-size时间显存
3051 秒3.4 GB
6040 秒3.7 GB
9034 秒4.1 GB
18035 秒5.0 GB
36032 秒6.3 GB
72033 秒8.0 GB

反直觉但重要:片段小不是更快,是更慢。重叠帧在每个 clip 里都要重新处理一遍,clip 越多重复工作越多。超过大约 180 之后时间不再下降,只有显存上升。

调参结论:在显存放得下的范围内用最大的 --max-clip-size,更大意味着更稳且更快;--temporal-overlap 放 8 到 20,超过 20 基本没收益;--enable-crossfade 保持开启,零成本;4K 视频在同 clip 大小下约需 1.5 倍显存;4 到 6 GB 显存跑 1080p,从 --max-clip-size 30 起步。

显存还是不够时的处理顺序:降 clip 大小,然后关掉或换轻量的二次修复,最后关掉其他吃 GPU 的应用(浏览器是隐形大户)。Jasna 有兜底,显存不够时会把等待中的帧挪到系统内存再挪回来,不需要额外设置,但你不会喜欢那个速度。

编码别用默认值糊过去。更高质量(文件更大)用 --cq 22,CQ 加高级编码器参数:

jasna --input in.mp4 --output out.mkv --cq 22 --encoder-settings "rc-lookahead=32,bf=4,preset=p7"

编解码器默认 CQ(NVIDIA):

编解码器默认 CQ特点
hevc2810-bit,体积和画质平衡最好,不确定就用它
h26425仅 8-bit,兼容性最强,同画质体积更大
av135同画质体积最小,需 RTX 40 / RX 7000 及以上

有个不显眼但很关键的机制:输出体积自动上限。cq 追求固定质量,对低码率源会输出成好几倍大。所以 Jasna 会按源码率自动设 maxrate:

情况上限
NVIDIA H.264 输出源码率 2.0×
其他输出 + HEVC 源源码率 1.25×
其他组合源码率 1.0×

想关掉就自己把 --maxrate 设成一个大值顶上。

边跑边看有两种。HLS 流式输出不落文件、浏览器里直接看:jasna --input in.mp4 --output out.mp4 --stream --stream-port 8765。生成中就能播的 mp4,中断后文件仍可播放:jasna --input in.mp4 --output out.mp4 --fmp4。后者很适合长任务,跑到一半断电,前面那段还是能播的。

跑完自动干活。全部完成就关机,CLI 模式没有倒计时:jasna --input in.mp4 --output out.mkv --post-export-action shutdown。

每个视频完成后跑命令:

jasna --input in_folder --output out_folder --post-export-video-command "ffmpeg -i {output} -map 0 -map_metadata 0 -map_chapters 0 -c copy -movflags +faststart {output_dir}/{output_stem}_remuxed{output_suffix}"

占位符有 {input}、{output}、{output_dir}、{output_stem}、{output_suffix}。批量处理一整晚的活儿,直接挂 --post-export-action shutdown 走人。

Windows 可以把临时文件丢到内存盘减少 SSD 磨损,用 ImDisk 建个 NTFS 内存盘,启动前设置 TMP 和 TEMP 环境变量指向它。Jasna 优先读 TMP,其次 TEMP,不认 TMPDIR。区间和 LTX 的临时文件位置用 --working-directory 单独指定。

六、激活:支持者模型怎么开

只有 LTX、UNet 4x、SD 1.5 这三个需要许可证,BasicVSR++ 免费。

累计支持拿到什么
15 美元UNet 4x(修复区更清晰)+ SD 1.5(图片)
25 美元上面两个 + LTX(含后续更新)

一码可用 3 台机器或云工作区,激活后完全离线。

方式命令
在线激活jasna --license-code "你的许可证码"
激活并跑任务jasna --license-code "你的许可证码" --input in.mp4 --output out.mkv
显示机器密钥jasna --machine-key
保存激活密钥jasna --activation-key "你的激活密钥"

机器没网或在线激活失败,走手动三步:先 jasna --machine-key 显示机器密钥(不启动 GPU 和 GUI,很快);再在任意设备打开 jasna-activation.kruk2.workers.dev,输入机器密钥加许可证码,拿到激活密钥;最后 jasna --activation-key 保存。

租云 GPU(RunPod、Vast)跑 LTX,加 --cloud-workspace,并且把 XDG_CONFIG_HOME 指到一个你会备份的私有目录,激活信息存在那儿,每次必须用同一个。别用 RunPod 的 /workspace,它会忽略私有文件权限。

设备名额怎么算:Windows 换主板算一台新机器,Linux 重装才算。重装 Windows、换显卡或硬盘或内存都不占名额,用同一个码重新激活就行。

七、踩坑清单

坑症状解法
路径含中文启动即崩或模型加载失败挪到纯 ASCII 路径
首次运行动了电脑编译超时 / 失败重跑;关掉浏览器和游戏
机械硬盘启动和加载模型极慢换 SSD
网络盘 / 映射盘不支持拷到本地
显存不足OOM 或疯狂换页降 --max-clip-size,1080p 从 30 起
担心漏检有小区域没修降 --detection-score-threshold,如 0.35 → 0.25
过度误检正常画面被改提高阈值;或调 --min-detection-duration
升级后 LTX 要重下模型0.11.3 的模型不能直接用按提示同意更新,model_weights 其他部分可拷

渠道安全这条必须说:只从 GitHub 下载。许可证码只通过 Buy Me a Coffee、Unifans、闲鱼官方卖家三条路走。闲鱼上其他卖 Jasna 的都不是官方,密钥用不了,文件还可能在你的机器上跑别的代码。同理 --license-code 和 --activation-key 不能和 --machine-key 同时用,遇到让你这么干的教程直接划走。

八、30 分钟上手路线

| 步骤 | 做什么 | 耗时 |
| -- | --------------------------------- | -------------- |
| 1 | 自查显卡,建纯英文路径目录 | 5 分钟 |
| 2 | 下发行包,解压 | 3 分钟 |
| 3 | 启动,挂机等模型编译 | 15 到 60 分钟,去泡茶 |
| 4 | 拖个短视频,默认参数点播放 | 看你的卡 |
| 5 | 细节不够就跑 --ltx-trial | 免费测速 |
| 6 | 决定要不要 LTX,要走官方渠道激活 | 几分钟 |
| 7 | 按显存表调 --max-clip-size,批量 + 自动关机 | 一次性配置 |

九、几个判断

适合谁:有 NVIDIA 独显(8 GB 显存以上更舒服)、有批量处理需求、愿意花时间调参的人。全 GPU 流水线加 CLI 加区间修复加自动关机这套组合,做长任务比点 GUI 舒服得多。

不适合谁:只有核显或 GTX 10 系的机器;只需要处理一两张图的轻度用户,首次编译的时间成本不划算。

关于收费:BasicVSR++ 免费且已经能打,比 Lada 快 3 到 4 倍。LTX 是给要求细节、不接受插值糊感的人准备的。先跑 --ltx-trial 看你的卡撑不撑得住,再决定掏不掏钱,这个设计挺讲道理。

源码层面:应用层 AGPL-3.0,模型和捆绑依赖各有自己的许可,详见 LICENSING.md、assets/THIRD_PARTY_MODELS.md、RELEASE_SOURCES.md。从源码跑可以用免费 BasicVSR++,但激活和支持者模型必须用官方发行版。项目受 Codeberg 上的 Lada 启发,用的 mosaic_restoration_1.2 模型是 Lada 作者 ladaapp 训练的,生态是接上的,不是凭空造。

相关链接

资源地址
项目地址github.com/Kruk2/jasna
中文文档github.com/Kruk2/jasna/blob/main/README.zh.md
CLI 完整参考github.com/Kruk2/jasna/blob/main/docs/zh/cli.md
调优指南github.com/Kruk2/jasna/blob/main/docs/zh/tuning.md
社区discord.gg/FgrSuwZS3s
主楼