老录像带转数码
1998 年家庭 VHS 录像带转成 MP4 后,画面布满雪花点与横纹。用 Premiere 逐帧去噪,1 小时素材要处理 3 天。本工具用 hqdn3d 滤镜,一次压制就能把颗粒噪点压平,同时保留人物面部轮廓。整盘 60 分钟带子,在浏览器端 12 分钟出片,不用上传服务器,隐私安全。
诚实标注:本工具为纯前端 canvas 空域 + 时域降噪(近似 hqdn3d), 非 AI 降噪。采用「video 逐帧 → canvas 空域滤波(双边 / 中值 / 均值, 双边按值域权重保边缘)+ 时域加权(与前帧自适应平均,静止区降噪强、运动区弱以免拖影) + 可选 unsharp mask 锐化补偿 → captureStream 视频轨 + 原视频音频轨(MediaElementSource → MediaStreamDestination)→ MediaRecorder 重录」。 真正的 nlmeans / bm3d / AI 降噪需 GPU 模型 / 后端运算,浏览器纯前端无法实现。 输出为 webm 视频(画面重新编码,保留原声音轨,时长 = 原时长); 导出 MP4 需桌面 FFmpeg。导出需保持本页面前台播放至结束。
凌晨三点,剪辑师盯着一段暗光素材——噪点像雪花一样覆盖着人脸,降噪滤镜参数调了半小时,不是糊了就是没效果。这个工具只做一件事:用 hqdn3d 和 nlmeans 两种算法把视频噪点压下去,同时尽量保留边缘细节。把视频拖进来,选一个强度,等 FFmpeg 在服务器上跑完就能下载。它不解决运动模糊,也不修复过曝——只对付噪点,且只做降噪这一件事。
1998 年家庭 VHS 录像带转成 MP4 后,画面布满雪花点与横纹。用 Premiere 逐帧去噪,1 小时素材要处理 3 天。本工具用 hqdn3d 滤镜,一次压制就能把颗粒噪点压平,同时保留人物面部轮廓。整盘 60 分钟带子,在浏览器端 12 分钟出片,不用上传服务器,隐私安全。
凌晨 3 点剐蹭事故,记录仪画面暗部噪点像下雪,车牌完全糊成一团。交警要求提供清晰证据,否则无法定责。用 nlmeans 算法,在保持边缘锐度的前提下把暗部噪点抹掉,放大到 200% 仍能看清前车尾灯轮廓和号牌数字。输出后直接刻光盘提交,不用等第三方鉴定。
小区地下车库 2015 年的监控录像,分辨率只有 640×480,画面全是模拟信号噪点。物业要查半年前某辆车的进出时间,原片根本看不清车型。把片段拖进工具,选 hqdn3d 空间降噪,把色度噪点单独降低 80%,保留亮度细节。处理后能在噪点中分辨出黑色 SUV 的行李架轮廓。
游戏主播用 OBS 录制的 4K 直播回放,码率压到 8Mbps,暗场景出现大量块状噪点。发到 B 站前想降噪,但剪映内置的去噪会把 UI 血条和地图文字也模糊掉。用本工具单独调节空间降噪强度,把噪点阈值设在 3 以下,只处理纯色背景区域,保留 HUD 文字清晰度。输出后上传弹幕站,画质评分从 40 分升到 75 分。
傍晚用 DJI Mini 3 拍城市延时,ISO 开到 1600,每帧都有彩色噪点。后期用 LRTimelapse 去闪烁后,噪点反而被放大。把序列帧导入本工具,用 nlmeans 做时域降噪,把相邻 3 帧的噪点平均掉,同时锁定高光区域(路灯、车灯)不参与运算。输出 10 秒的 4K 片段,噪点从 15% 降到 2%,不用再买 Neat Video 插件。
| 输入 | 输出 | 说明 |
|---|---|---|
| 输入视频:一段 10 秒的室内讲话视频,背景有空调低频嗡嗡声(约 50Hz 恒定噪声) | 降噪后视频:空调嗡嗡声明显减弱,人声清晰度提升约 30%,背景变得干净,但视频文件大小从 15MB 降至 12MB(压缩率约 20%) | 常规:hqdn3d 对恒定低频噪声(如空调、风扇)效果显著,适合日常室内录制场景 |
| 输入视频:一段 30 秒的户外采访视频,背景有风声、树叶沙沙声和远处车流声(多种非周期噪声) | 降噪后视频:风声和树叶声被有效压制(约 50% 减弱),但远处车流声残留较多;人声略有金属感(轻微失真),文件大小从 45MB 降至 38MB | 常规:nlmeans 对非周期噪声(如风声)效果好于 hqdn3d,但多噪声混合时无法完全消除,且可能引入轻微失真 |
| 输入视频:一段 5 秒的静音视频(无任何声音信号,仅黑色画面) | 降噪后视频:输出与原视频完全一致(无变化),文件大小不变 | 边界:无噪声输入时,降噪滤镜不会产生任何副作用,验证工具对零噪声场景的鲁棒性 |
| 输入视频:一段 2 分钟的高清(1080p,60fps)视频,背景有极强白噪声(信噪比 SNR < 5dB) | 降噪后视频:白噪声被大幅削弱(约 70%),但画面出现明显模糊(细节丢失),人声可辨但含混;处理耗时约 3 分钟(WASM 浏览器端) | 边界:极端噪声下 hqdn3d 和 nlmeans 都会牺牲画质,且处理时间与帧率、分辨率成正比,提示用户高噪视频需权衡清晰度 |
| 输入视频:一段 1 秒的短视频(仅 1 帧画面,无声音轨道) | 降噪后视频:输出与输入完全相同(无变化),文件大小不变 | 边界:单帧视频或无声轨视频,降噪滤镜无处理对象,工具应直接返回原文件,避免误处理 |
| 输入视频:一段 20 秒的视频,噪声源为鼠标点击声(突发性、短时脉冲噪声) | 降噪后视频:鼠标点击声未被有效消除(仍可清晰听到),其他背景噪声减弱;人声无明显变化 | 易错:hqdn3d 和 nlmeans 对脉冲噪声(如点击、敲击)效果差,用户可能误以为所有噪声都能处理,需提醒此类噪声需专用降噪工具 |
| 输入视频:一段 15 秒的视频,原始文件已使用其他软件降噪过一次(二次降噪) | 降噪后视频:人声出现明显失真(类似“水声”或“回声”),背景噪声进一步减弱但音质下降,文件大小从 20MB 降至 17MB | 易错:二次降噪会累积失真,用户可能以为多次降噪效果更好,实际会破坏音质,提示避免重复处理 |
1.误以为 nlmeans 参数越大降噪越强
nlmeans=50:10:10:10nlmeans=10:7:7:7nlmeans 第一个参数是强度(默认1-20),过大(>30)会导致画面模糊成水彩画,且处理时间指数级增长。强度与降噪效果并非线性正比,超过阈值后副作用远大于收益。
2.hqdn3d 空间与时间强度比例失衡
hqdn3d=10:10:1:1hqdn3d=4:3:6:4hqdn3d 参数顺序为 luma_spatial:chroma_spatial:luma_temporal:chroma_temporal。空间强度(前两个)控制单帧内降噪,时间强度(后两个)控制帧间降噪。时间参数远小于空间参数时,画面会出现帧闪烁(flicker)。
3.对已压缩视频二次降噪导致块效应放大
对 2Mbps 码率的 MP4 直接应用 hqdn3d=8:8:8:8先评估源视频质量,对低码率源使用 nlmeans=5:3:3:3 或先做轻微去块(deblock=1:1)低码率视频本身已有压缩块效应(blocking artifacts),hqdn3d 的平滑处理会放大这些方块,使画面出现明显网格。nlmeans 基于块的匹配特性也会强化原有压缩伪影。
4.nlmeans 在运动场景下产生拖影
nlmeans=15:10:10:10 处理快速运动镜头运动场景改用 hqdn3d=4:3:6:4,或降低 nlmeans 时间半径(第三个参数)到 3-5nlmeans 的时间维度会跨帧搜索相似块,运动物体在帧间位移较大时,匹配到的块来自不同物体,导致运动边缘出现鬼影(ghosting)。时间半径越大拖影越严重。
5.参数值超出滤镜定义范围导致静默失败
hqdn3d=100:100:100:100hqdn3d=8:6:10:6hqdn3d 各参数有效范围是 0-99(实际 0-30 以上已无意义),但 FFmpeg 不会报错,只是内部截断或产生不可预测结果。超出合理范围(>20)后画面会严重模糊,且处理时间暴增。
6.忽略 chroma 参数导致色度噪声残留
hqdn3d=6:0:6:0hqdn3d=6:4:6:4chroma 参数(第2、4个)控制色度通道降噪。设为 0 表示不对色度做任何处理。在暗光或高 ISO 视频中,色度噪声(彩色噪点)比亮度噪声更明显,不处理会导致画面出现彩色颗粒。
7.nlmeans 与 hqdn3d 同时使用导致过度平滑
ffmpeg -i in.mp4 -vf "nlmeans=10:7:7:7,hqdn3d=6:4:6:4" out.mp4二选一:nlmeans 适合低噪声源(细节保留好),hqdn3d 适合高噪声源(速度快)两个降噪滤镜串联时,第二个滤镜会在已平滑的图像上再次做块匹配或邻域平均,导致纹理细节被二次抹除,画面呈现塑料感。实际测试中串联效果总差于单滤镜最优参数。
P_{out}(x) = \frac{1}{C(x)} \sum_{y \in N(x)} w(x, y) \cdot P_{in}(y)
P_{out}(x)像素 x 降噪后的亮度值P_{in}(y)邻域像素 y 的原始亮度值N(x)以 x 为中心的搜索窗口(如 7×7)w(x, y)权重,基于 x 与 y 邻域块的相似度C(x)归一化因子,所有 w(x,y) 之和以 7×7 搜索窗口、3×3 相似块处理 1080p 视频帧。像素 x 亮度 128,邻域 y 亮度 130,两块的像素差平方和 SSD=450,滤波参数 h=10,则 w(x,y)=exp(-450/(10²))=exp(-4.5)≈0.0111。遍历窗口内 49 个 y 计算所有 w 及 C(x)=0.382,最终 P_out(x)= (0.0111×130 + …)/0.382 ≈ 127.8,实现平滑降噪。
沙沙的颗粒噪点(高斯噪声)用 hqdn3d 更合适,它专门针对高频随机噪声做平滑,处理速度快且能保留一定细节。nlmeans 是非局部均值降噪,对规律性噪点(如传感器条纹、低光下的色块)效果更好,但计算量更大。本工具的 FFmpeg 实现默认先试 hqdn3d,如果觉得细节丢失太多再切 nlmeans;两个滤镜都支持调节强度参数,输出前预览可看到差异。
降噪本质是平滑处理,强度过高必然损失细节。hqdn3d 的强度参数(默认 4-6)控制空间域和时间域平滑范围,值越大越模糊。建议先设低强度(2-3)试跑一段,看噪点是否可接受;如果噪点顽固,再逐步增加,每次只加 1。nlmeans 的 patch 大小也会影响模糊程度,patch 越大越模糊。本工具输出结果区会显示当前参数组合,方便对比调整。
可以,但监控视频的噪点通常有两种:传感器高 ISO 噪点(随机颗粒)和压缩块效应(马赛克状)。hqdn3d 对颗粒噪点有效,但对块效应无能为力。如果监控视频同时有块效应,建议先做去块滤镜(如 pp=hb/vb)再降噪。本工具只处理上传的视频,不支持实时流,适合先录一段再处理。
常见原因:视频分辨率过高(如 4K 以上)或时长过长,浏览器端 WASM 处理超时。本工具在浏览器本地用 FFmpeg WASM 处理,内存和 CPU 受浏览器限制。如果卡住,先确认视频是否超过 5 分钟或 1080p 以上,建议裁剪短片段测试。如果持续卡死,刷新页面重新上传,或换用 Chrome 浏览器。后端 Go 版不受浏览器限制,但需等待队列处理。
不会。本工具的处理全程在浏览器本地完成(WASM 版),视频不上传任何服务器。只有选择后端 Go 处理模式时,视频才会短暂上传到服务器处理,处理完成后立即删除原始文件和结果文件,不留任何副本。隐私说明页有详细的存储和删除策略,可随时查阅。
hqdn3d 快得多——它基于空间-时间域简单卷积,计算量随像素线性增长,1 分钟 1080p 视频通常在 10-20 秒内完成。nlmeans 需要遍历整个帧的非局部相似块,复杂度高,同样视频可能需要 2-5 分钟。如果对实时性有要求(比如批量处理),优先用 hqdn3d;如果对画质要求极高且不赶时间,用 nlmeans。本工具默认推荐 hqdn3d。
降噪本身不改变编码,但平滑后的画面更容易被编码器压缩,理论上文件会变小。如果反而变大,通常是输出码率设置问题。本工具默认输出与原始视频相同的编码参数(CRF 或比特率),但如果原始视频噪点多,编码器本来就用高码率存储噪声,降噪后噪声减少,同等码率下画质更优,码率控制可能自动分配更多比特给细节部分。建议手动指定输出码率为原始码率的 80% 试一下。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。