type
Post
status
Published
date
Jul 17, 2025
slug
vs-comparison
summary
tags
category
icon
password
仅适用于WIN
前言
可能你已经见过很多关于VapourSynth(以下简称VS)对比图的教程。但是本文目的是尽量不依靠/干扰/破坏本地python环境为前提,并配合vspreview和一个vpy脚本,以最简便的方式上传到slow.pics网站,所以使用了Portable(便携版)的一键安装脚本。另一个好处就是直接将文件夹复制到另一个电脑还是可以直接使用,不用配置环境。当然这都是有代价的,那就是升级版本很麻烦,不如重装
科普:
Q1:为什么要制作对比图,直接看截图不行吗?
A1:那是因为只有对同一帧才有意义,直接随便看截图是无意义的
Q2:我又不做DIY,remux,encode,有必要做对比图吗?
A2:我认为如果你的目的只是有片看那就无所谓。如果是为了收藏,那感觉很有必要。有些电影并不是体积越大,码率越高就更清楚。甚至很多时候相同编码、分辨率,但码率低的却更清楚
Q3:为什么非要用VS做对比图,用VLC,potplayer截图相同时间点不就行了?
A3:这里理由有点多,我分为以下几点说:
一、因为以秒做轴很难对齐,VS可以做到以帧为单位
二、视频的帧其实是可以分为I/P/B 三种帧。不同帧信息不一样,其中B帧含的信息最少。短板比短板。所以一般都是B帧比B帧,VS可以标注出帧类型(这几个帧的具体介绍可以看VCB教程)
三、很多视频都是需要通过VS来预处理的,比如删除帧数,转换帧率,不然无法对齐
一、安装VS Portable
1、安装VS
到VS GitHub的releases仓库下载最新的Portable版本(本文撰写是为R74版本),注意这里写的是Install-Portable,是脚本文件

解压压缩包中的两个文件到单独的文件夹内

双击bat结尾的文件
如果你看不到文件后缀

勾选这个选项

输入A回车,再输入Y回车

上面就说明正在安装

当出现这个界面说明安装成功

同目录下会出现一个名为vapoursynth-portable的文件夹。此时可以删除.bat和.ps1文件
2、安装插件

右键空白处,点击”在终端打开“
输入如下命令
vsrepo:插件管理器 vsjetpack:JET整合的工具包 vspreview:预览器 awsmfunc:一个脚本函数库
更新插件列表
安装必要的插件
将编译好/下载的文件放到
.\vapoursynth-portable\Lib\site-packages\vapoursynth\plugins\vsrepo 目录下
二、使用
1、代码编辑器
首先,需要一个代码编辑器。我这里用的vscode。简单介绍一下怎么设置
从下面地址下载
安装后打开,点击左侧插件图标,搜索chinese,安装中文插件

完成后右下角会提示重启,点击重启

点击设置

搜索files.associations,如下填写*.vpy和python

2、对比脚本
感谢afunnylookingsquash创建此脚本,同时感谢大佬帮助
点击右侧的下载按钮,放到和上面VS一样的文件夹里

用vscode打开multi_comps.vpy文件,翻到150行,下面此处被称为配置行

r“” 两个双引号内写文件具体路径
"Source1” 这里换成源的名字,不需要写全名。web写平台即可,盘写区域和厂商
比如:
(r"C:\Users\iakina\Desktop\1.mkv", "test",),写完后要点击左上角的文件-保存

3、使用
右键VS所在文件夹,点击”在终端打开“

输入如下命令
出现如下画面说明正在建立索引(此过程需要一点时间,取决于硬盘和文件)会在视频文件同目录创建一个同名,后缀为lwi的索引文件。只要这个文件还在,就会复用,不用再次等待

索引建立完会弹出一个vspreview程序

1、初次设置
第一次要点击右上角的SlowPics Comps-settings。如下设置

其中的username password是slow.pics的账号和密码(此项是必填,注册后填入对应信息即可),点击login登录后无任何变化,不需要管

点击vspreview下面的Settings

将Save Plugins Bar Position从原本的Local改为Global
关闭vspreview,重新运行上面的命令即可保存
2、正式发布
使用键盘上的1,2,3等数字键即可切换源,当所有源都同步时即可发布。如果不同步,请看5、不同步的处理方法
有半自动和自动的两种方式发布。半自动就是手动选画面,自动是由vspreview选择画面。推荐使用半自动
半自动
寻找细节丰富/丰富、明亮/黑暗、运动速度快/慢的图片,并且都为B帧的画面。按crtl+空格即会选中当前帧,选中的帧会显示在右侧的这里

下面填写右侧最上面1处的源,不同源之间用
vs. 分割,然后填写下面2处的tmdb编号和类型
然后点击右下角的Start Upload

完成后,会显示Finished,点击1处的小按键即可复制对应的网址链接

自动
下面填写右侧最上面1处的源,不同源之间用
vs. 分割,2处是做几个对比图,3处是从哪个帧开始截取画面,4处是到哪个帧停止截取。要选择尽量避开开头和结尾的演员表。5处填写tmdb编号和类型
然后点击右下角的Start Upload

完成后,会显示Finished,点击1处的小按键即可复制对应的网址链接

4、检查
将上面得到的网址粘贴到浏览器,就会如下显示

点击主画面或者按数字键1,2,3等即可切换源。点击下面缩略图切换不同帧
5、不同步的处理方法
视频如果不同步可以有其他参数可以加,脚本101行到149行为具体说明
英语原文
Required Arguments:
filepath (single string or tuple of strings for seamless branching discs)
name (the name of the clip to be displayed with FrameInfo)
Optional Arguments:
Trimming:
int → trim N frames from the start of the clip
tuple of 2 ints → (start, end) trim frames between start and end
list of tuples containing 2 ints each → multiple trim ranges, example: [(500, 506), (11501, 11598), (67801, 68000)]
Omit trim value(s) to keep clip untouched
Padding:
Pad(positions, counts) → pads frames after the frames specified in positions
positions and counts are a list of ints, for example:
Pad([1000, 2000], [1, 7]) would add one blank frame after frame 1000 and 7 blank frames after frame 2000
Resizing:
Resize(width, height) → the width and height you want to resize to
Note that resizing is applied to the clip before cropping
Cropping:
Crop(left, right, top, bottom) → values to crop the clip with
Adding Borders:
AddBorders(left, right, top, bottom) → values to add black borders to the clip with
Decimate:
Decimate(order) → Decimates duplicate frames in telecined video sources
order is an int, accepted values are 0 or 1 (0 for Bottom Field, 1 for Top Field)
Luma Adjustment:
Luma → Applies luminance correction to the clip to fix clips that suffer from the 0.88 gamma bug
Tonmapping:
HDR → tonemap the clip using HDR10 metadata
HDR10Plus → tonemap the clip using HDR10+ metadata
DOVI → tonemap the clip using Dolby Vision metadata
FPS Adjustment:
NoFPS → prevents the clip from having its framerate normalized
Note that by default, all clips are normalized to the FPS value set below with fpsnum, fpsden
Bake Enhancement Layer:
BakeEL(path) → Bakes the Dolby Vision enhancement layer into the video stream
Provide the file path to the EL.mkv as an argument
Skip:
Skip → Skips the clip for output in vspreview
Engine:
Sets the video indexing engine to one of the three available options in VapourSynth. Defaults to using LSMASH.
Engine.LSMASH → Sets the video indexing engine to be LSMASH.
Engine.BESTSOURCE → Sets the video indexing engine to be BestSource.
Engine.FFMS2 → Sets the video indexing engine to be ffms2.
Examples:
(r"file1.mkv", "Source1", (10, 200), Crop(0, 0, 140, 140))
(r"file2.EVO", "Source2", 24, HDR)
(r"file3.vob", "Source3", Luma, NoFPS)
((r"part1.m2ts", r"part2.m2ts"), "Source4", Resize(1920, 1080), DOVI)
(r"00002.m2ts", "Source5", AddBorders(0, 0, 140, 140), HDR10Plus, Pad([10000],[20]), Engine.FFMS2)
下面我会根据具体示例来详细讲解如何使用
不同参数用半角逗号隔开,且无严格顺序
1、Trim(修剪)
有时候同一个电影,不同版本可能片头不一样等等原因,导致稍微对不齐。而Trim可以选择删除前面多少帧,或删除中间多少帧。下面举一个例子


这个日版(JPN,左侧)7005帧为转场,德版是(GER,右侧)7484帧为转场。那就是德版多479帧
那配置行应该这样写,即在多出帧数的名称后面写多出的帧数
如果是要去除一段视频,应该为
(start, end);多段为[(500, 506), (11501, 11598), (67801, 68000)]2、Padding(填充)
其实就是和上面相反的动作,大部分情况不需要用到的
示例
Pad([1000, 2000], [1, 7]) 意思是会在第 1000 帧之后添加 1 个空白帧,并且在第 2000 帧之后添加 7 个空白帧3、Resizing(调整大小)
Resize(width, height) 通常在对比分辨率不同时使用。
注意要和有无黑边的区别(有时可能是画幅不一样),如1920 × 800和1920 × 1080,是因为黑边导致的分辨率不同,并不使用Resizing
示例。把UHD的4K转为1920×1080(1080p)
4、Cropping(裁剪)
Crop(left, right, top, bottom)
依次是左右上下,填对应数字.如果对应位置不需要调整,就填0
示例
Crop(0, 0, 140, 140)5、Adding Borders(加黑边)
AddBorders(left, right, top, bottom)
依次是左右上下,填对应数字.如果对应位置不需要调整,就填0
示例
AddBorders(0, 0, 140, 140)6、Decimate
主要出现在老电影中,面向实体也就是DVD时会出现。电影原生是以23.976fps制作,但是NTSC制的DVD是29.970fps,当时大部分处理方式是3:2 Pulldown技术,把每4帧原始画面拆分成场,重新组合成5帧。也就是会多出来帧数。而到蓝光时代也会出现这个情况,虽然原生兼容了23.976fps了,但是可以没有正确处理母带等原因导致的多出帧数
大概判断方法,当发现时长差不多时,一个视频比另一个视频帧数却多,并且对不齐的情况下。就可以使用
示例
Decimate(field_order) field_order为数字0/1.如果是DVD可以看mediainfo中Scan order部分,Top Field First为顶场优先,也就是 1,另一种即为底场优先,填0.蓝光就只能把两种都试一遍,在vspreview中按空格播放预览一下,没有拉丝现象即正确处理7、Luma Adjustment(亮度调整)
有些法版蓝光会出现伽马不正确的表现,通常为比其他盘亮,这时就通过此参数调整
Luma8、Tonmapping(映射)
将HDR/HDR+/DV映射成SDR。如果是带DV的原盘,需要先转换成mkv格式,因为VS无法读取m2ts中的DV RPU信息。如果是FEL的DV,那需要额外把DV的EL层bake进文件,具体看第10项
HDR HDR10Plus DOVI 9、FPS Adjustment(帧率调整)

默认会把所有视频同步到24000/1001,即23.976fps。如果被同步后对不齐,即可以使用这个参数还原原始帧率
NoFPS10、Bake Enhancement Layer
待写
BakeEL(r”path”) 11、Skip(跳过)
添加此参数即可跳过处理此文件
skip12、Engine
索引引擎设置为 VapourSynth 中的三个可用选项之一。默认使用的是LSMASH。
Engine.LSMASH → 将视频索引引擎设置为 LSMASH。Engine.BESTSOURCE → 将视频索引引擎设置为 BestSource。Engine.FFMS2 → 将视频索引引擎设置为 ffms2。例子
其他的事
做完对比图,更重要的是判断优劣。碍于本人水平,大多数瑕疵我也看不出来,并且VCB已经写出完善瑕疵教程。如果想学习认识瑕疵的,可以看VCB的公开教程 第四章 认识瑕疵
参考文章
使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:akina
- 链接:blog.iakina.de/vs-comparison
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。





