Jasna 视频马赛克修复:3:22 的 1080p 视频 34 秒修完的 GPU 加速实战指南
【免费下载链接】jasnaVideo restoration tool项目地址: https://gitcode.com/GitHub_Trending/ja/jasna
Jasna 是免费开源的 GPU 加速视频马赛克修复工具,把解码、检测、修复、编码全放到 GPU 上,适合想给视频去马赛克的 NVIDIA/AMD 独显用户。读完能过环境检查、跑通第一个任务,并按自己的显卡调好显存与速度。
🛑 启动前的 4 项硬性门槛
第一次运行前花一分钟核对下面四项,任何一条不达标,启动检查(jasna/gui/system_checks.py)都会直接拦下来。
| 项目 | 可接受范围 | 不达标怎么办 |
|---|---|---|
| 显卡 | NVIDIA GTX 16 系 / RTX 20 系起(计算能力 ≥ 7.5);AMD RX 7000/9000、Radeon 780M/760M/740M、Ryzen AI(实验性) | GTX 10 系及更早无法使用,只能换机器 |
| 驱动 | NVIDIA:Windows 610+ / Linux 580+;AMD:Adrenalin 26.8.1+,Linux 另装 AMF 视频运行库 | 升级后从头部菜单重跑系统检查;Linux AMD 先装 AMF 再执行run_jasna_amd.sh |
| 存储 | 本地 SSD,文件系统为 NTFS / ext4 / Btrfs / XFS / ZFS,网络盘不支持 | 挪到本地 SSD;机械硬盘能跑但启动与加载明显变慢,程序会给出警告 |
| 路径 | 纯 ASCII 字符,不含中文、日文、带重音符号的字母 | 整个文件夹挪到D:\Tools\jasna这类路径,校验由 jasna/os_utils.py 的check_ascii_install_path在每次启动执行 |
注意:路径这条最容易被忽略。C:\Users\张三\Downloads\jasna这种中文用户名下的路径会直接报错退出,必须整体搬到英文路径。
📦 三条命令跑通:GUI 与 CLI 并列
图形界面最短路径:解压版本包到纯英文路径 → 启动(Windows 双击jasna.exe;Linux NVIDIA 执行jasna文件;Linux AMD 先装好 AMF 运行库再执行run_jasna_amd.sh)→ 把视频拖进队列并保持默认设置 → 点界面底部的▶等它跑完。
命令行最短路径就是这一条,对单个视频执行默认的 BasicVSR++ 流程:
jasna --input input.mp4 --output output.mkv图片输入自动走 SD 1.5 模型,文件夹输入批量处理(先图片后视频):
jasna --input photo.png --output restored.png jasna --input input_folder --output output_folder首次任务要等 15–60 分钟,仅此一次。NVIDIA 上 Jasna 会把检测模型和修复模型编译成专属于这块 GPU 的 TensorRT 引擎,期间关闭其他应用、别碰电脑;判断正常的标志是机器负载拉满、model_weights目录持续增长。编译产物存放在model_weights目录(缓存位置由 jasna/engine_paths.py 的configure_torch_compile_cache配置),以后升级 Jasna 时把这个文件夹复制到新版本目录即可跳过等待。
跑完发现显存吃紧时,把最大剪辑大小从90降到60是最直接的手段,调法见后文。
🎯 三种引擎怎么选:BasicVSR++、LTX、SD 1.5
先说结论:绝大多数视频用免费的BasicVSR++就够;只有当你对个别关键场景的质感有更高要求、且显卡是 RTX 30/40/50 系(8 GB 显存起)时,才值得上LTX;静态图片自动走SD 1.5。选型细节见 docs/zh/models.md。
| 引擎 | 速度 | 画质 | GPU 要求 | 费用 | 模型体积 |
|---|---|---|---|---|---|
| BasicVSR++(默认) | 快 | 良好 | 全部受支持显卡 | 免费,随包附带 | 随包 |
| LTX | 很慢(耗时表见下) | 纹理更细腻自然 | RTX 30/40/50(2080 Ti 仅验证过);Linux 兼容 Radeon RX 7000/9000 与 R9700,Windows AMD 为测试版 | 支援者专属(25 USD 档,含 UNet 4x 与 SD 1.5) | 不附带,需下载:标准约 15 GB、高速约 9 GB、更高画质每档再加约 13 GB |
| SD 1.5(仅图片) | 单张数十秒级 | 实验性,单张差异大 | 约 7 GB 显存 | 支援者专属(15 USD 档起) | 约 6.9 GB,首次使用会询问后下载 |
LTX 耗时参考(1 分钟 1080p、马赛克持续出现的素材,标准画质档):
| 显卡 | 标准画质 | 高速模式(--ltx-fast,仅 RTX 50 系) |
|---|---|---|
| RTX 5090 | 约 1 分钟 | 不到 1 分钟 |
| RTX 4090 | 约 1.5 分钟 | 不可用 |
| RTX 5080 | 约 2 分钟 | 约 1.5 分钟 |
| RTX 3090 | 约 3 分钟 | 不可用 |
| RTX 2080 Ti | 约 10 分钟 | 不可用 |
LTX 常用开关:--restoration-model-name可选ltx(标准)/ltx-4step(良好,慢约 1.5 倍)/ltx-8step(高画质,慢约 2.5 倍)/ltx-undistilled(顶级,慢约 5 倍);--ltx-large-canvas让大马赛克按 768px 修复(该部分慢约 3 倍,需约 12 GB 空闲显存,不足自动回退);--experimental-ltx-less-overlap默认开启(马赛克持续超 4 秒的场景约快 13%);--ltx-seed默认20260923控制可复现性。决定上 LTX 前先跑一次--ltx-trial速度实测(无需模型和许可证,不产出修复视频):
jasna --input input.mp4 --output output.mkv --restoration-model-name ltx --ltx-trial注意 LTX 的硬限制:不支持 VR180 左右并排、不支持流媒体,且启用后二次修复与降噪自动关闭。Jasna 0.12 起从 0.11.3 复制过来的 LTX 模型文件需要重新下载,原来的许可证码和共享 VAE 文件仍可复用。
检测模型管的是"找马赛克"这一步,全部选项如下(阈值取自 jasna/mosaic/detection_registry.py):
| 模型 | 权重状态 | 输入分辨率 | 默认阈值 | 适合什么 |
|---|---|---|---|---|
rfdetr-v6(默认) | 随包 | 576 | 0.35 | 绝大多数视频,拿不准就用它 |
rfdetr-v6-large | 另下载(NVIDIA 用.onnx、AMD 用.pt) | 768 | 0.40 | 4K 素材、要更高检测精度 |
rfdetr-vr-v1 | 随包 | 768 | 0.40 | VR180 视频 |
zelefans-vr-yolo-v2 | 另下载 | — | 0.25 | VR180 的另一选项 |
lada-yolo-v2/lada-yolo-v4 | 随包 | — | 0.25 | 2D 动画素材,或 AMD 上求快 |
rfdetr-v5 | 随包 | 768 | 0.25 | 旧版仍可用(批大小固定为 4) |
权重放进model_weights/后自动发现。阈值用--detection-score-threshold调(0–1):调低检得更多、调高检得更少。AMD 上 RF-DETR 明显慢于 NVIDIA,检测是瓶颈时换成lada-yolo-v4换回速度。
二次修复只在修复块看起来"软"(大马赛克、特写、4K 素材)时才有必要,且仅限 NVIDIA。1080p 实测(耗时 / 显存):
| 修复组合 | CAWD 1080p | KV-109 1080p |
|---|---|---|
| 不启用 | 22 秒 / 10.0 GB | 11 秒 / 10.7 GB |
UNet 4x(支援者专属,质量接近 TVAIiris-2且更快) | 29 秒 / 12.5 GB | 14 秒 / 12.6 GB |
| RTX Super Res(免费、极快,个别视频会闪,先在短片段验证) | 25 秒 / 11.7 GB | 13 秒 / 11.4 GB |
| TVAI(2 workers,iris-2;需付费 Topaz Video,仅 Windows,很慢) | 52 秒 / 12.1 GB | 24 秒 / 12.4 GB |
jasna --input input.mp4 --output output.mkv --secondary-restoration unet-4xTVAI 需额外设置环境变量TVAI_MODEL_DATA_DIR与TVAI_MODEL_DIR指向 Topaz Video 的模型目录,相关参数--tvai-model(默认iris-2)、--tvai-scale(默认 4,输出为 256×scale)、--tvai-workers(默认 2)、--tvai-ffmpeg-path见 docs/zh/cli.md。
三档场景推荐:
日常够用:全部默认值(
--max-clip-size 90 --temporal-overlap 8,交叉淡化默认开),在 10 GB 级显存的卡上非常宽裕。追求质量:
--max-clip-size 180(收益拐点,1080p 实测 35 秒 / 5.0 GB,再往上时间不再变好只吃显存)+ 二次修复 + 低 CQ:jasna --input input.mp4 --output output.mkv --max-clip-size 180 --temporal-overlap 8 --secondary-restoration unet-4x --cq 22资源受限(4–6 GB 显存):
--max-clip-size 30起步(1080p 实测 51 秒 / 3.4 GB),关二次修复,关闭一切占 GPU 的其他程序。4K 素材同剪辑大小下显存约 ×1.5,再往下压。
🧩 帧的旅程:七段 GPU 流水线
源码把整条流水线拆成四个并行线程循环(decode_detect_loop→primary_restore_loop→secondary_restore_loop→blend_encode_loop),定义在 jasna/pipeline_threads.py。七个环节各自吃进什么、做什么、吐出什么:
GPU 解码
- 输入:源文件(H.264 / HEVC / AV1,含 10-bit)
- 处理:NVIDIA 走 NVDEC、AMD 走 AMF,另有软件解码兜底(jasna/media/video_decoder.py 的
_setup_nvdec_decoder/_setup_amf_decoder) - 输出:连续帧流,进入检测队列
逐帧马赛克检测
- 输入:刚解码出的每一帧
- 处理:默认
rfdetr-v6,按推荐阈值打分并框出马赛克区域 - 输出:该帧的马赛克框列表与置信度
时间维跟踪分组
- 输入:连续帧的检测框
- 处理:同一块马赛克沿时间轴被跟踪,帧归组为"剪辑",长度上限即最大剪辑大小;硬切镜头处强制收尾,保证一个剪辑不混入两个镜头(
jasna/tracking/clip_tracker.py) - 输出:一批互不混镜头的剪辑
主修复(BasicVSR++)
- 输入:每个剪辑的 256×256 图像序列
- 处理:按序列做时间维超分重建,相邻剪辑刻意保留少量重叠来隐藏接缝
- 输出:补出纹理的马赛克图块
二次修复(可选,NVIDIA 独占)
- 输入:256×256 修复图块
- 处理:UNet 4x / RTX Super Res / Topaz TVAI 先把图块放大到 512×512 或 1024×1024,再走一遍锐化
- 输出:更清晰的图块(用 LTX 时此环节整体关闭)
合成回原帧
- 输入:修复图块 + 原始帧
- 处理:只替换马赛克区域,其余像素原样保留(混合掩码与缓冲在
jasna/blend_buffer.py与jasna/tracking/blending.py);显存告急时排队中的帧自动挪到系统内存、需要时再搬回(jasna/vram_offloader.py),全程无需手动干预 - 输出:完成混合的完整帧
GPU 编码
- 输入:完整帧 + 原音轨
- 处理:NVENC 或 AMF 编码;音频默认直接复制,仅当输出容器装不下原音轨才重新编码(判断逻辑在
jasna/media/audio_utils.py的needs_audio_reencode) - 输出:最终文件(默认 HEVC)
LTX 不走这条流水线:它要把视频完整过四遍——找马赛克、准备、用扩散模型修复、保存——所以慢得多,但能补出更真实的纹理。
⚡ 速度与显存调优:把显存从 10 GB 压到 3.4 GB 的三档配置
调参对象主要是 BasicVSR++(LTX 自管内存),核心变量就三个:最大剪辑大小、时间重叠、交叉淡化,参数合法性由 jasna/session_config.py 统一校验。
剪辑大小扫描数据(1080p 单视频、重叠 8、RTX 5090,趋势普适、绝对值因环境而异):
| 剪辑长度(帧) | 1080p 耗时 | 典型显存 |
|---|---|---|
| 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 |
小剪辑只会更慢:重叠帧在每个剪辑里都要重复处理,剪辑越多重复劳动越多,超过 180 之后时间不再变好、只有显存上升。交叉淡化复用的正是已处理好的帧,零额外开销,保持默认开启即可。模型编译同理——关掉编译开关(--no-compile-basicvsrpp)只省不到 0.5 GB 显存,却让处理慢约 3 倍(同素材对比:编译 33 秒 / 5.0 GB,不编译 107 秒 / 4.6 GB),几乎没有正当理由。
注意:时间重叠必须满足2 × temporal_overlap < max_clip_size,否则启动即报错;8–20 是推荐区间,超过 20 通常无收益。
按需求查表(编码与画质):
| 你的需求 | 推荐设置 |
|---|---|
| 兼容性最好、8-bit 到处能放 | --codec h264 |
| 质量体积平衡(默认) | --codec hevc,默认 CQ:NVIDIA 28 / AMD 25 |
| 文件体积最小 | --codec av1(需 RTX 40 系 / RX 7000 及以上),默认 CQ:NVIDIA 35 / AMD 16 |
| 质量更高、文件更大 | 调低--cq(默认值:NVIDIA H.264 25 / HEVC 28 / AV1 35,AMD H.264 24 / HEVC 25 / AV1 16) |
| 画面更锐 | --sharpen 0.2–0.5(0 关闭,1 最强) |
CQ 合法范围:NVIDIA H.264/HEVC 为 1–51、AV1 为 1–63;AMD H.264/HEVC 为 0–51、AV1 为 1–51。Jasna 还会按源码率自动给输出设maxrate(bufsize为其 2 倍)防止低码率源被过度放大:NVIDIA H.264 输出为源码率 2.0 倍、HEVC 源 1.25 倍、其余组合 1.0 倍;自行指定maxrate可覆盖。
常用默认值速查(以jasna --help为准):
| 参数 | 默认值 |
|---|---|
--device | cuda:0(AMD 经 ROCm 也用cuda:N命名) |
--batch-size | NVIDIA 4 / AMD 8(rfdetr-v5恒为 4) |
--fp16/--no-fp16 | 开(半精度,省显存且通常更快) |
--max-clip-size | 90 |
--temporal-overlap | 8 |
--enable-crossfade | 开 |
--detection-model | rfdetr-v6 |
--max-detection-gap | 2(同位置马赛克漏检最多补 N 帧,0 关闭) |
--min-detection-duration | 2(短于 N 帧的检出按误检丢弃,0 关闭) |
--scene-detection | 开(硬切处结束所有剪辑) |
--denoise | none(可选low/medium/high,只清理修复区域) |
--denoise-step | after_primary(或after_secondary移到最后) |
--codec | hevc |
--sharpen | 0 |
--ltx-seed | 20260923 |
--sd15-steps/--sd15-strength/--sd15-seed/--sd15-variants | 25 / 0.6(上限 0.7)/ 0 / 1(variants 产出name_v1…vN供挑选) |
--stream-port/--stream-segment-duration | 8765 / 4.0 |
--log-level | error(可选debug/info/warning) |
🚀 四个进阶方向:区间、流媒体、VR180、云 GPU
区间处理(segments)—— 马赛克只出现在部分场景,或想只对关键片段花 LTX 的慢钱:未选中的区间原样复制,快且无损,输出仍是全片长视频。
jasna --input input.mp4 --output output.mp4 --segments "10-25,01:10-01:30.5"- 一次只能处理单个视频,不支持文件夹/图片/流媒体
- 输入须为恒定帧率的 H.264/HEVC/AV1,输出 MP4/MOV/MKV,且输出编解码器恒等于输入
- 不能与
--stream、--retarget-high-fps、--fmp4、--ltx-auto-split组合;区间之间的少量帧会被重新编码(视频只能在特定帧处切开)
GUI 里点队列条目的剪刀按钮打开区间编辑器:按帧选区间、逐区间指定 BasicVSR++ 或 LTX(LTX 区间可先渲染指定种子、比较多个种子)、用内置马赛克扫描(RTX 5090 上约 2000 FPS)自动定位含马赛克的场景,还能开"仅大马赛克用 LTX"把慢速 LTX 集中在收益最大的大马赛克上(建议从 12% 起步)。想让文件夹里每个视频"大马赛克走 LTX、其余走 BasicVSR++",用自动分配:
jasna --input videos/ --output restored/ --restoration-model-name ltx --ltx-auto-split 12临时文件默认放输出旁的隐藏文件夹,磁盘紧张时用--working-directory指到更快的盘。
流媒体(Stash / 浏览器)—— 边修边看不落盘,先确认效果,或挂在 Stash 里按需修复。
jasna --stream- 恒用 BasicVSR++ 与 H.264,LTX 不可用
- 首次必须先用 Stash 里实际会用的相同设置流式跑通一个短视频——第一次要为 GPU 准备文件、耗时很长,跳过这步 Stash 会超时放弃(日志出现
timeout waiting for jasna-cli to become healthy就是这个原因) - Stash 需下载专用的 v0.30.1-jasna 版本,并设置
JASNA_CLI_PATH(jasna 可执行文件完整路径)与JASNA_WORKING_DIR(其所在文件夹)两个环境变量
启动后 Jasna 会开 HLS 服务并自动打开浏览器播放器,可拖动进度;--stream-port(默认 8765)、--stream-segment-duration(默认 4.0 秒)、--no-browser可调。
VR180—— VR180 文件通常把左右眼并排放进一个宽帧,Jasna 会拆开分别修复再拼回。保持VR180 模式 = 自动(高度 > 1080px 的 2:1 视频,如 3840×1920、8192×4096,或文件内 VR 元数据、已知片商名,都会自动识别为并排 VR),检测模型换用内置的rfdetr-vr-v1;认不出来时手动指定:
jasna --input input.mp4 --output output.mp4 --vr-mode sbs-fisheye- LTX 不支持 VR180 并排视频,只能用 BasicVSR++
--vr-mode取值:auto(默认)/off/sbs/sbs-fisheye- 投影方式(原样/鱼眼/球心投影)按片商自动选择,也可在区间编辑器的修复预览旁手动切换
云端 GPU(RunPod / Vast / Docker)—— 本地显卡太慢或没有显卡,租一张云 GPU 跑批量任务。向许可证码来源申请开通"云权限"后,用 Linux NVIDIA 官方版 CLI 在容器内以root登录运行,安装到/root(不要用/workspace,权限不可靠):
apt-get update && apt-get install -y zstd wget libgl1 libglib2.0-0 # 从官方发布页下载 v0.11.1 的四个分卷包(part000–part003),拼合解压: cat jasna-linux-nvidia-0.11.1.tar.zst.part* | zstd -dc | tar -xpf - --same-owner cd jasna-linux-nvidia-0.11.1 export XDG_CONFIG_HOME=/root/jasna-config ./jasna --license-code YOUR-LICENSE-CODE --cloud-workspace激活前可花一秒验证硬件编码器是否可用,没打出OK就换机器:
./tools/ffmpeg -loglevel error -f lavfi -i testsrc2=duration=1:size=1280x720 -c:v hevc_nvenc -f null - && echo OK- 硬性要求:驱动 ≥ 580、磁盘 ≥ 80 GB、设置
NVIDIA_DRIVER_CAPABILITIES=all(不加则读不了也存不了视频)、固定的/etc/machine-id --pid=host的 Docker 容器不可用;RunPod 上 LTX 暂不可用(会替换 root 用户导致 LTX 校验失败),BasicVSR++ 可用- 每次启动前先重新
export XDG_CONFIG_HOME;删 Pod 前把jasna-config私有备份,否则激活名额就浪费了
📊 官方基准:3.4–4.7 倍提速,显存从 9.3 GB 降到 4.8 GB
测试条件:RTX 5090、Linux、BasicVSR++、同一段 3:22 全长视频。
| 输入 | Jasna v0.9.1 耗时 | Lada 0.11.0 耗时 | 提速 |
|---|---|---|---|
| 720p H.264 | 00:32 | 01:47 | 3.4 倍 |
| 1080p H.264 | 00:34 | 02:02 | 3.6 倍 |
| 2160p H.264 | 01:03 | 04:56 | 4.7 倍 |
显存占用演变(典型 / 峰值,GB,H.264 8-bit 输入):
| 版本 | 720p | 1080p | 2160p |
|---|---|---|---|
| Lada | 1.8 / 3.1 | 2.0 / 3.3 | 2.6 / 4.1 |
| v0.4.1 | 17.6 / 19.9 | 18.9 / 21.4 | 26.0 / 30.5 |
| v0.5.0 | 8.6 / 9.0 | 9.5 / 10.2 | 12.9 / 15.0 |
| v0.9.0 | 8.6 / 9.1 | 9.3 / 10.1 | 11.4 / 15.4 |
| v0.9.1 | 4.2 / 4.6 | 4.8 / 5.6 | 7.2 / 10.9 |
横向看,v0.9.1 相对 Lada 在同硬件上把 1080p 整片修复压到约 1/3.6 的时间;纵向看,v0.9.1 相比自家旧版本把 1080p 典型显存从 9.3 GB 降到了 4.8 GB。完整测试设置、内存占用与全编解码器明细见 benchmarks/2026-07-26_release_matrix.md,逐项提交的性能演进数据保留在benchmarks/目录的 CSV 中,可用 scripts/benchmark_releases.py 复现。
🩹 踩坑速查:看到什么、为什么、做什么
| 症状 | 根因 | 动作 |
|---|---|---|
| 首次任务卡在开头不动 | 15–60 分钟的一次性 TensorRT 编译 | 正常等待,期间负载拉满且model_weights目录在增长;升级时复制该目录到新版本即可免等 |
| 启动即报路径错误 | 安装路径混入非 ASCII 字符(中文/日文/重音字母),check_ascii_install_path拦截 | 整个文件夹挪到纯英文路径;顺带确认是本地盘、文件系统为 NTFS / ext4 / Btrfs / XFS / ZFS |
| 显存不足(out of memory 或明显卡死) | 剪辑太大、显存超了 | 按顺序:①--max-clip-size90→60→30 对照扫描表看每档代价;② 关二次修复或换 RTX Super Res;③ 关闭浏览器、游戏等其他占 GPU 程序。4–6 GB 显存的卡固定从 1080p + 剪辑 30 起步 |
| 驱动检查不通过 / 提示版本过低 | NVIDIA 需 Windows 610+ / Linux 580+;AMD 需 Adrenalin 26.8.1+(Linux 另装 AMF) | 升级后从头部菜单重新执行系统检查,无需重装 Jasna |
| AMD 上检测速度很慢 | RF-DETR 在 AMD 跑 torch 模型,比 NVIDIA 的 TensorRT 引擎慢 | --detection-model lada-yolo-v4换速度,默认批大小在 AMD 上自动取 8 |
| LTX 模型下载一直失败 | 连不上 Hugging Face(Jasna 会自动切 hf-mirror.com,仍失败需手动) | 手动下载 3 个文件:所选模型 1 个 +vae.safetensors.enc与vae-decoder.safetensors.enc,文件名保留.enc后缀,全部放入model_weights/ltx-restore/(目录不存在就新建) |
| 60 fps 素材处理时间翻倍 | 帧数翻倍,工作量自然翻倍 | 用 `-- |
【免费下载链接】jasnaVideo restoration tool项目地址: https://gitcode.com/GitHub_Trending/ja/jasna
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考