- Lv2638元老会员
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-deblurtvai调 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.0 Jasna 0.9.1 加速比 720p H.264 01:47 00:32 3.4× 1080p H.264 02:02 00:34 3.6× 2160p H.264 04:56 01:03 4.7× 分辨率越高加速越明显,因为瓶颈被搬到了 GPU 上,而 Lada 在 CPU 侧的固定开销不随分辨率下降。
显存占用(典型 / 峰值,GB):
输入 Lada v0.4.1 v0.5.0 v0.9.0 v0.9.1 720p 8-bit 1.8/3.1 17.6/19.9 8.6/9.0 8.6/9.1 4.2/4.6 1080p 8-bit 2.0/3.3 18.9/21.4 9.5/10.2 9.3/10.1 4.8/5.6 2160p 8-bit 2.6/4.1 26.0/30.5 12.9/15.0 11.4/15.4 7.2/10.9 一个版本里 1080p 显存从 18.9 GB 干到 4.8 GB,降了将近 4 倍,这是这次最实在的优化。
四、怎么用:从零到跑通
Step 0 先自查硬件,别白下载。
项 要求 NVIDIA GTX 16 系 / RTX 20 系起,算力 ≥ 7.5;驱动 Windows ≥ 610、Linux ≥ 580 AMD RX 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时间 显存 30 51 秒 3.4 GB 60 40 秒 3.7 GB 90 34 秒 4.1 GB 180 35 秒 5.0 GB 360 32 秒 6.3 GB 720 33 秒 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 特点 hevc28 10-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 主楼 - 暂无回复