无人小站

MPC-HC 与 AviSynth+ 便携化

JP-Liu MPC-HCAviSynth

MPC-HC 与 AviSynth+ 便携化

偶尔会用 AviSynth+ 来做一些简单的视频处理,主要是 AviSynth+ 体积小巧,而且脚本可以复用。

普通情况下 AviSynth+ 是安装使用的,但是在公司的设备中,用户不允许进行程序安装,于是尝试了一下将 AviSynth+ 便携化,基本上是成功的,以下就步骤说明如下:

便携化步骤

注意,以下内容以 x86 的 AviSynth+ 和 MPC-HC 为示例,x64 的可尝试,不保证可用。

  1. AviSynth+ GitHubMPC-HC GitHub,下载最新版本的 AviSynth+ 和 MPC-HC。

    • AviSynth+ 选择名字符合 AviSynthPlus_*-filesonly.7z 这个格式的压缩包。
    • MPC-HC 选择名字符合 MPC-HC.*.x86.zip 这个格式的压缩包。
  2. 解压上一步中下载的 AviSynth+ 和 MPC-HC 压缩包,并移动必要文件。

    • 将解压出来 AviSynth+ 文件中 x86 文件夹下的 AviSynth.dll 移动到 MPC-HC 解压的目录。
    • 将解压出来 AviSynth+ 文件中 x86 文件夹下的 System 文件夹下的 DevIL.dll 移动到 MPC-HC 解压的目录。
    • AviSynth.dllDevIL.dll 应与 mpc-hc.exe 在同一文件夹下。
  3. (可选)移动 AviSynth+ 的其他 Plugin。

    • 在 MPC-HC 解压的文件夹下,新建一个文件夹(名称随意,如:AviSynthExt)。
    • 将解压出来 AviSynth+ 文件中 x86 文件夹下的 plugins 文件夹下的所有文件移动到新建的目录。

做完上面中几步之后,应该会得到下面这个结构的文件夹

MPC-HC
    AviSynthExt (文件夹)
        ConvertStacked.dll
        DirectShowSource.dll
        ……
    CrashReporter (文件夹)
    ……
    AviSynth.dll (文件)
    DevIL.dll (文件)
    mpc-hc.exe (文件)
    ……

此时,AviSynth+ 便携化已完成,但是特别注意以下内容:

存在问题

  1. 用上述方案实现便携化的 AviSynth+,在 avs 脚本中,需要使用以下内容加载对应 plugin dll:

    LoadPlugin("D:\1-Program\MPC-HC\AviSynthExt\Plugins\ConvertStacked.dll")
    LoadPlugin("D:\1-Program\MPC-HC\AviSynthExt\Plugins\DirectShowSource.dll")
    LoadPlugin("D:\1-Program\MPC-HC\AviSynthExt\Plugins\ImageSeq.dll")
    LoadPlugin("D:\1-Program\MPC-HC\AviSynthExt\Plugins\Shibatch.dll")
    LoadPlugin("D:\1-Program\MPC-HC\AviSynthExt\Plugins\TimeStretch.dll")
    LoadPlugin("D:\1-Program\MPC-HC\AviSynthExt\Plugins\VDubFilter.dll")
    
  2. 用上述方案实现便携化的 AviSynth+,无法使用 DirectShowSource() 滤镜,可以使用 ffms2 外部滤镜代替。

其他内容

以下内容属于锦上添花的内容,且可能仅适用于作者,可参考,可忽略。

  1. 关于预览

  2. 关于压制

    • 若使用 FFmpeg 压制 avs 脚本,可将 AviSynth.dll 复制至 ffmpeg.exe 所在目录下实现便携化。
    • 请注意,此时使用的 FFmpeg 应为 Shared 版,保证 ffmpeg.exe 自动加载同文件夹下的 AviSynth.dll 处理 avs 脚本。
    • 如不清楚什么是 Shared 版,可到 FFmpeg-Auto-Build 下载名字中含 shared 的 FFmpeg。

示例效果 version()

JP-Liu
懒人一个