【12/6,V10.1更新EXE版】VR破解不求人,一键给VR去马赛克(程序脚本开源,4K2原创)
本帖最后由 zelefans 于 2025-12-6 15:55 编辑纯技术贴,纯免费开源软件实现,但附件有给技术小白使用的脚本。
【12/06】v10.1版本发布,增加了新的VR马赛克识别模型,但还需要训练VR修复模型……本贴内容和附件不再更新了,每次更新几个帖子好累
【12/02】v10.0版本发布,选区模式设定时间后处理提速,增加VR转平面单独的工具。
【12/01】v9.3版本发布,彻底解决了选区VR转平面功能侧边选区错位的问题,生成效率提升了几十倍。
开源项目都在https://codeberg.org/zelefans/vr_remove_mosaic更新
自己写python用whisper+gpt翻译玩一年玩腻了,翻译从不求人。网上纯VR破解资源只有个位数,大都JAV做的效果很不好,正好看到lada去马效果不错还支持CLI,试了试感觉的确有趣,扫遍全网没人写过,我来整个教程吧,破解也可以不用等人发布了。传播有风险,自用最省心。
首先,需要一张英伟达的显卡,GPU加速,对CPU要求不高。如果没有N卡就不用看下面也不用花金币了。
刚开始测试过LADA直接破解VR视频,几乎看不到有一帧被去马,但切割视频后发现有一定效果,于是就有了后续。花了半天时间折腾出来了。
先对破解效果有限的说明:
现在绝大多数日系180VR画面默认是“半球形等距柱状”,早期是鱼眼,在边缘肯定是畸变的,LADA很难自动识别,所以只有在画面偏中心位置识别和解码效果会好些,其他位置看命,两个视频解码效果是否一致也是看命。VR转平面必然丢失画面(可以转平面,但转换时要指定输出的视角偏那边,丢弃其他的画面),所以当前无法做成先转平面再转回180度,这在当前是无解的,除非LADA用的模型能针对VR优化。总之,当前只能优化对脸和直视的。
ffmpeg和LADA是全开源的,小白也能用(Lada需要显卡好点)。
FFMPEG地址:https://ffmpeg.org/,可以去https://www.gyan.dev/ffmpeg/builds/下载编译后的windows版本,下载latest git master branch build 中的ffmpeg-git-full.7z
LADA地址:https://codeberg.org/ladaapp/lada/releases
注意,因为LADA通常需要GPU才能处理,因此ffmpeg命令也优化后用N卡cuda加速处理切割和合并,用hevc_nvenc编码,实测快了3、4倍。显卡显存需求差不多1G~2G左右。
左右视频切割命令(-i之前的 -hwaccel cuda -c:v hevc_cuvid 表示输入编码,适合新视频,老视频报错的话改用 -hwaccel cuda -c:v h264_cuvid ,或整块删掉,用CPU)
ffmpeg -hwaccel cuda -c:v hevc_cuvid -i mdvr00363_2_8k.mp4 -vf "crop=iw/2:ih:0:0" -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 movie_L.mp4
ffmpeg -hwaccel cuda -c:v hevc_cuvid -i mdvr00363_2_8k.mp4 -vf "crop=iw/2:ih:iw/2:0" -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 movie_R.mp4如果需要时间片段,则用ss和to指定范围,例如
ffmpeg -ss 10:23 -to 11:50 -hwaccel cuda -c:v hevc_cuvid -i mdvr00363_2_8k.mp4 -vf "crop=iw/2:ih:0:0" -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 movie_L_clip.mp4LADA解码命令
lada-cli.exe --input movie_L.mp4 --device cuda:0 --codec hevc_nvenc --crf 25 --preset p3 --max-clip-length 180
lada-cli.exe --input movie_R.mp4 --device cuda:0 --codec hevc_nvenc --crf 25 --preset p3 --max-clip-length 180重新合并命令
ffmpeg -hwaccel cuda -c:v hevc_cuvid -i movie_L.restored.mp4 -hwaccel cuda -c:v hevc_cuvid -i movie_R.restored.mp4 -filter_complex "hstack=inputs=2" -map "" -map 0:a -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 -shortest movie_sbs_restored.mp4
核心命令都在上面,对于技术高手足够自己后续折腾了,自动化脚本在附件中,有单个的有批量的有测试的,4金币(高级版涨价1金币)。不需要的人也可以买一下就当点赞。
如何使用附件中的脚本(单个文件处理版,目录处理类似)
前提条件:
[*]ffmpeg.exe
[*]ffprobe.exe
[*]lada-cli.exe
[*]vr_single_gpu.bat
[*]源视频文件 (例如 movie.mp4)
放置文件:
[*]简单方式: 将所有这些文件(ffmpeg.exe、ffprobe.exe、lada-cli.exe、vr_single_gpu.bat 和 movie.mp4)放在同一个文件夹中。
[*]高级方式: 如果 ffmpeg 和 lada-cli 已经添加到了您的 Windows 系统环境变量 (PATH) 中,您只需将 vr_single_gpu.bat 放在任何地方即可。其实最简单的方式是解压缩后exe和目录都扔进C盘windows目录或windows下的system32目录。
[*]更高级方式,解压缩后在系统PATH全局变量中添加exe对应的安装目录。
运行脚本:
[*]拖放方式(推荐): 直接用鼠标将您的 movie.mp4 文件拖拽到 vr_single_gpu.bat 文件的图标上,然后松开。
[*]命令行方式: 打开命令提示符 (cmd),cd 到该目录,然后输入 vr_single_gpu.bat "movie.mp4"(如果文件名有空格,请务必使用引号)。
[*]输入起止时间(留空则全部)。
[*]脚本将自动执行所有步骤:切割、LADA处理、合并,最后删除所有临时的 .mp4 和 .restored.mp4 文件,只留下您原始的 movie.mp4 和最终的 movie_sbs.restored.mp4。
附件里四个脚本,最新V2版增加了批量只转左眼视角,也修复了路径有空格导致的问题,V3版本修复了lada输出路径问题,V4版本兼容老视频编码例如SIVR-178格式,V5版本增加视频格式自适应,增加了高级模式(兼容SAVR等厂家视频,必须平面化之后才能解码)
[*]vr_single_gpu_left_only.bat,单个视频,只提取左眼数据并解码,可指定时间范围,效率最高,只用三分之一时间,无立体画面在VR其实也能看看
[*]vr_single_gpu.bat,只提取左右眼数据,解码,合并,可指定时间范围
[*]vr_batch_gpu.bat, 指定目录,遍历所有MP4文件,解码,合并,不可指定时间范围(因为每个文件有必要去马的时间区间不一样)
[*]vr_batch_gpu_left_only.bat,指定目录,只提取左眼数据并解码,适合急性子的对立体不讲究的人
----------------------------------
高级的部分说明
受限于lada,现阶段大多数视频边缘马赛克解码效果在近乎一半的厂牌的片子不行。 实际测试结果,就是lada的马赛克识别模型只是识别矩形马赛克区域。S1VR、MDVR、VRKM、IPVR等很多厂牌的VR视频方格打码打在畸变后的原始视频上,原始画面即便识别出了马赛克,在边缘位置也无法还原出解码后的VR畸变后的画面,而如果做平面化了之后就变成梯形,导致lada识别不出。SAVR、URVRSP在VR模式下看,边缘马赛克是正常的方格,使得他们的片子原始画面的边缘是梯形的马赛克,这样反而会导致用上面的去马模式下的解码困难。
针对SAVR等VR观看模式下马赛克才是方形的,可以很好地用lada来实现特定区域的解码。所想到的方法,就是利用ffmpeg先将VR视频平面化,解码处理后原位置“贴”回去。之前说过,VR视频平面化中只能复原指定的一部分区域,所以需要根据片源内容判断要平面化哪部分区域,vr转flat之后用lada解码,解完之后flat转vr空间,无内容空间用绿幕填充,覆盖到原视频的时候制订绿幕颜色透明。整个流程都已经跑通,花了一天时间写了一些脚本程序。把命令贴一下,给其他有技术的人参考。(后续版本因为绿幕模式交界处始终有极难消除的绿线,所以经过研究已调整为纯透明模式,从压缩率来说选择了VP9格式,以下不另外做代码展示,具体可以看源代码)
#第1步:取下方部分画面转平面(pitch,如果取其他位置参考上面说明)
ffmpeg -hwaccel cuda -c:v hevc_cuvid -i 15s.mp4 -vf "v360=hequirect:flat:h_fov=90:v_fov=60:yaw=0:pitch=-60" -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 processed.mp4#第2步:重新投影回VR空间,底色用绿色作为绿幕(利用alpha_mask这个参数)
ffmpeg -i processed.mp4 -f lavfi -i color=c=green:s=4096x4096:r=60000/1001:d=15 -filter_complex "v360=input=flat:output=hequirect:w=4096:h=4096:ih_fov=90:iv_fov=60:yaw=0:pitch=60:alpha_mask=1;overlay=format=auto" -map "" -map 0:a -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 processed_vr.mp4#第3步:叠加回原来视频
ffmpeg -hwaccel cuda -c:v hevc_cuvid -i 15s.mp4 -hwaccel cuda -c:v hevc_cuvid -i processed_vr.mp4 -filter_complex "colorkey=color=green:similarity=0.1:blend=0.1;overlay" -map "" -map 1:a -c:a copy -c:v hevc_nvenc -preset p3 -cq 25 15s_final.mp4
纯技术贴,虽然还是不太明白 还是要顶一下 大佬牛的! 感谢楼主大大! 8G显存的N卡可以吗,只有3070.。。。 qiao23 发表于 2025-11-13 10:54
马赛克不是覆盖在原画面上的一层东西,而是用马赛克替换掉了原来的画面,也就是说,原来的数据已经丢失,那 ...
看多了都是脑补,老人都是眼中有马,心中无马。无马流出看着也就那样,其实就是让观感稍微舒服点。 Mztm 发表于 2025-11-13 10:56
8G显存的N卡可以吗,只有3070.。。。
可以,每次运行就占用2G不到,包括LADA 學習了,謝謝老大 马一下,等大佬们验证 看不懂但支持