快轉到主要內容

VapourSynth在Linux系統的安裝方法,影片濾鏡處理軟體

分類   Linux系統 Linux好用軟體
標籤   VapourSynth Video Transcoding FFmpeg MPV
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

討論如何在Linux系統安裝VapourSynth。

「VapourSynth」是一款開源跨平台的影片處理軟體,使用C++和Python寫成,支援Linux、Windows、macOS系統。

VapourSynth開發靈感來自另一款古老的軟體Avisynth,功能很類似,它能給影片加上許多效果,再搭配其他轉檔軟體使用,組成完整的影片處理管線 (Video Pipeline)。

VapourSynth用途舉例:

  • 給影片加濾鏡、去色帶、調整顏色,再交給ffmpeg轉檔(壓制)影片
  • 配合vs-mlrt,使用RealESRGAN放大、RIFE補幀後轉檔。
  • 使用SVP或MVToools,配合MPV播放器給影片即時補幀。

VapourSynth在轉檔操作時需要撰寫名為.vpy的指令稿(script,語法類似於Python),再交給vspipe程式執行。

不過VapourSynth沒有影片轉碼功能,它得搭配ffmpeg、小丸工具箱、格式工廠、Handbrake這類軟體做進一步處理。

1. 安裝Python
#

VapourSynth需要Python 3才能運作,任意版本都可以。Linux發行版大部分都內建Python 3了,沒有的話自行安裝。

為了方便轉檔,順便安裝ffmpeg吧。

Arch Linux

sudo pacman -S python python-pip ffmpeg

Ubuntu

sudo apt install python3 python3-pip ffmpeg

註:如果需要與系統隔離VapourSynth的Python環境,可以先裝 Anaconda再設定VapourSynth

conda create -n vapoursynth python=3.11
conda activate vapoursynth
which python
# 再開始安裝VapourSynth

2. 安裝VapourSynth本體
#

根據VapourSynth版本R66官方文件,各大發行版應該都有收VapourSynth。

Arch Linux可以直接從官方套件庫裝:

sudo pacman -S vapoursynth

再使用vspipe指令確認是否安裝成功:

vspipe --version

至於Ubuntu嘛,搞笑的來了,Debian的 deb-multimedia PPA有收VapourSynth,但沒人維護Ubuntu版的套件。所以只好自行編譯了。

Ubuntu 22.04編譯指令:

# 安裝依賴套件
sudo apt-get install build-essential yasm intltool automake autoconf libtool devscripts equivs libavutil-dev libavcodec-dev libswscale-dev python3-dev python3-pip

# CPython > 3.0.5,改用pip裝
python -m pip install Cython

# 手動抓最新版libzimg-dev和libzimg2的deb套件安裝:
wget https://launchpad.net/ubuntu/+archive/primary/+files/libzimg-dev_3.0.5+ds1-1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libzimg2_3.0.5+ds1-1_amd64.deb
sudo apt install ./libzimg2_3.0.5+ds1-1_amd64.deb
sudo apt install ./libzimg-dev_3.0.5+ds1-1_amd64.deb


# 使用穩定版的Vapoursynth原始碼
wget https://github.com/vapoursynth/vapoursynth/archive/refs/tags/R66.zip
unzip R66.zip

cd vapoursynth

./autogen.sh
./configure
make -j$(nproc)
sudo make install

再用vspipe指令測試是否有安裝成功。你可能需要手動用LD_LIBRARY_PATHPYTHONPATH指定程式位置。

# 確認Python版本
python --version

# 設定動態連結庫路徑
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib/" >> ~/.bashrc

# 設定Python套件路徑,應為python3.x
echo "PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python3.10/site-packages/" >> ~/.bashrc

source ~/.bashrc

vspipe --version

3. 安裝指令稿編輯器VapourSynth Editor
#

VapourSynth Editor是Aleksey Lyashin (Mystery Keeper) 開發的小型IDE,專門用於偵錯.vpy檔案,裡面也有簡單的轉檔功能。

雖然 Flathub有上VapourSynth Editor,但五年沒更新了。

目前有一個持續更新的分支版,由 YomikoR維護,作者只提供Windows版。

Linux版的話 Arch Linux的AUR有套件可以裝。

開啟後就可以編寫vpy指令稿了,按一下Script → Check Script可檢查有無語法錯誤。

Script → Preview預覽效果

Script → Encode轉檔影片,通常是呼叫ffmpeg處理輸出。輸出的影片最好填絕對路徑否則會發生權限錯誤。

4. VapourSynth插件的安裝方式
#

VapourSynth的插件(plugin)以Python指令稿方式載入,有的需要使用到動態連結函式庫(Linux系統是.so檔,Windows系統則是.dll檔)。

Windows版VapourSynth內建vsrepo.py install指令可從官方套件庫安裝插件,但Linux版本沒有這工具,得手動安裝。

有些VapourSynth插件,Linux用戶會將其打包放在套件庫,比如Arch Linux官方套件庫就有 vapoursynth-plugin-mvtools vapoursynth-plugin-bestsource等等插件。

如果沒有的話,你就得按照插件作者的指示,手動編譯VapourSynth插件,並將.so檔案放到VapourSynth的插件目錄了。

Linux的插件目錄位於/usr/lib/vapoursynth/usr/local/lib/

你也可以手動在~/.config/vapoursynth/vapoursynth.conf指定插件所在目錄:

UserPluginDir=/home/asdf/vapoursynth/plugins
SystemPluginDir=/special/non/default/location

5. 撰寫.vpy指令稿
#

新增script.vpy檔案,第一行引入VapourSynth模組:

from vapoursynth import core

接著呢…施主,接下來你得自己寫呀,我怎麼知道你要處理什麼呢?影片處理細節講起來會很複雜,請到文末的「參考資料」處找範本。

6. VapourSynth使用例
#

搭配ffmpeg使用
#

讀取scripy.vpy的內容,處理影片,將影片輸出為y4m格式,並傳給ffmpeg處理。-i -的部份即vspipe處理後的影片流程,後面可以加上處理參數。

vspipe -c y4m script.vpy  - | ffmpeg -i - encoded.mkv

不過vspipe只能單獨輸出視訊流或音訊流,沒辦法二者都放,所以在處理完影片後,還要手動用ffmpeg把視訊流和音訊流合在一起。

除了ffmpeg以外,Vapoursynth也可以輸出給其他編碼器使用,例如flac、x265、aom-av1。

搭配MPV使用
#

用法有兩種:使用MPV內建的VapourSynth,或是由VapourSynth透過管道傳給MPV播放。

Arch Linux官方套件庫的MPV 0.37以後版本已經內建VapourSynth,所以你可以直接在MPV的設定檔設定快捷鍵,調用VapourSynth處理正在播放的影片。

例如 MVTools + VapourSynth + MPV達成即時補幀


如果你的MPV沒有內建VapourSynth,就透過管線傳輸處理結果給MPV播放吧。

讀取scripy.vpy的內容,處理影片,並將影片輸出為y4m格式,並傳給MPV

vspipe -c y4m script.vpy  - | mpv  -

參考資料
#

非常詳細的BD影片轉檔教學: 第五章 VapourSynth基础 - VCB Studio

VapourSynth’s documentation

How to VapourSynth, flash3kyuu_db for mpv on Ubuntu & Mint.rst

相關文章

即時補幀提昇動畫影片FPS ~ Linux版MPV播放器 + VapourSynth MVTools設定教學
分類   Linux系統 Linux好用軟體
標籤   Video Frame Interpolation Video Upscaling VapourSynth MPV
Av1an:將影片轉檔成AV1編碼的工具
分類   Linux系統 Linux好用軟體
標籤   AOMedia Video 1 Video Transcoding VapourSynth
Linux版「MPV」影片播放器優化設定,圖形界面+時間軸縮圖預覽
分類   Linux系統 Linux好用軟體
標籤   MPV Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。