ArchLinux 下 VapourSynth 和 VapourSynth-editor 的编译与配置
ArchLinux 安装桌面
参考以官方 Wiki 的方式安装 ArchLinux 安装 ArchLinux 的基本系统。
参考 ArchLinux 安装 GNOME 图形桌面环境和 ArchLinux 安装后的必须配置与图形界面安装教程安装图形界面。
顺带提一下我的经验,若是在 VMware 虚拟机中安装,不要在 VM 下拉伸桌面,不然重启系统后黑屏…
编译 VapourSynth
在之前的一篇博文中,提到了编译 VapourSynth。但我不知道为什么,可能是升级了 ArchLinux 系统(pacman -Syu
),导致之前编译好的用不了,只能重新编译一次。
安装依赖
VapourSynth 的必要依赖包括:
- 构建与编译依赖
- Autoconf、Automake、Libtool
- pkg-config
- GCC 4.8 及以上版本或 Clang
- 功能依赖
- zimg v2.9分支 (由于新版R49增加了
spline64
,这是 zimg 2.9.3 新增的内容,所以要用新版)
- zimg v2.9分支 (由于新版R49增加了
- Python 环境
- Python 3 (Python 3 即可,不需要指定 3.x,只有 Windows 下安装编译好的二进制文件时,才需要限定小版本)
- Cython 0.28 及以上版本
此外,还有四个可选的依赖
- 构建文档:Sphinx
- 编译字幕滤镜:iconv、libass、ffmpeg
- 编译读写图片的 Imwri 滤镜:ImageMagick 7
- 编译 OCR 滤镜:Tesseract 3
我感兴趣的是 Imwri,而 ImageMagick 7 作为 ArchLinux 默认安装的包已经装好了。
在 ArchLinux 下,安装必要依赖的命令如下。
(gcc 和 Python 3 应该是装好系统就自带了,没写。(在 ArchLinux 的 pacman 语境下,gcc 指最新版的 gcc(目前是 9.2.1),这个应该是系统默认就安装了的,gcc8 指 gcc 8.x 的稳定版,应该需要自己安装。))
1 |
|
编译
下载 VapourSynth 源码。
1 |
|
若担心开发中的版本不稳定,可下载打包发布的版本。
1 |
|
进行构建和编译。
1 |
|
在这里提一下我编译时遇到的问题。我用的源码是 R49-RC1 版本,自带的resize
函数新增了spline64
,然而我在编译中报错说ZIMG_RESIZE_SPLINE64
未声明。于是把两行相关代码注释掉(位于src/core/vsresize.cpp
),编译通过。可能和 zimg 版本问题有关?我猜的。
补记:猜的没错,新版 R49 增加了spline64
,这是 zimg 2.9.3 新增的内容。
顺带试了一下 R48,因为这个版本还没有添加spline64
,结果出现了一个通用的报错,没有去深究,放弃了。
配置
编译好后,配置搜索路径和 Python 环境。
编译完成,会在/usr/local/lib
(或其他类似的文件中)得到相关.so
库文件,包括libvaoursynth.so
、libvapoursynth-script.so.0.0.0
,把这些库文件链接到/usr/lib
中,完成搜索路径的配置。
1 |
|
配置好搜索路径,在 Python 中安装 VapourSynth。这听上去有点怪,但根据 VapourSynth 的设计思路,需要先完成上面的编译和配置,才能用 pip 安装。
1 |
|
完成上述配置后,vsedit 就能搜索到 VapourSynth。
编译vsedit
安装依赖
vsedit 是基于 qt 的图形界面程序,需要 qt5 相关的依赖包。
下面列出的这个包是我个人在编译vsedit中需要的。根据官方的编译指南,需要build-essential
、qtbase5-dev
。但在 ArchLinux 下似乎不叫这两个名字,没有去深究。强行编译,发现缺少下面这个包。
1 |
|
配置头文件
编译时需要 VapourSynth 的头文件,也就是vapoursynth/include
文件下的三个.h
文件。在/usr/include
中新建一个vapoursynth
文件夹,把这三个文件复制过去即可。
编译
下载源码。
1 |
|
进行构建和编译。
1 |
|
在vapoursynth-editor/build/release-64bit-gcc
或类似的地方,得到 vsedit 等二进制文件,可以用ln
命令做一个链接,方便平时使用。
1 |
|
1 |
|
运行 vsedit,即可弹出图形界面。
关于滤镜
滤镜应该放在/usr/local/lib/vapoursynth
下。