話說在前面,要純熟地運用Vapoursynth的話,要先學python語言。但是,對一般用戶的話,只需要記住幾個規則就可以了。懂英文的可以看官方這裡:
http://www.vapoursynth.com/doc/gettingstarted.html
Vapoursynth和Avisynth極為相似的,首先是保存一個 ".vpy" 文本,然後在裡面寫腳本。
先來的是兩行安全檢查。第一行是指定python路徑,第二行是指定python的encoding,如果你之後有用到中文的話,那uft-8就對了。然後,在保存文件時要把文本的encoding設為ANSI,一般來說,文本默認就已經是ANSI編碼的了。
注:這個對繁體中文系統無效
代码: 全选
#!/bin/env python
## coding: utf-8
之後就是在這個vpy文本導入vapoursynth。"accept_lowercase=True" 是指定之後用到的濾鏡允許用小寫,因為python本身是case sensitive。
代码: 全选
import vapoursynth as vs
import sys
core = vs.get_core(accept_lowercase=True)
之後就是導入濾鏡,方法和avisynth的loadplugin一樣。Vapoursynth有自己的核心濾鏡,用 "core.std.LoadPlugin" 呼叫,同時它也可以導入avs的濾鏡 "core.avs.LoadPlugin"。記住路徑前面要加 "r"。
代码: 全选
# 導入64bit vs濾鏡
core.std.LoadPlugin(r'C:\Program Files (x86)\VapourSynth\plugins64\ffms2.dll')
# 導入32bit avs濾鏡
core.avs.LoadPlugin(r"C:\Program Files (x86)\AviSynth 2.5\plugins\DGDecode.dll")
然後就是運用這些濾鏡,和avs不同,vpy是需要把操作過的東西保存在一個object,而且每個濾鏡function的第一個parameter都要是一個object,在這裡的意思就是視頻。
代码: 全选
src = core.ffms2.Source(r"xxx.avi")
src = core.std.trim(src, 0, 1000)
filt = core.avs.fft3dfilter(src, 10.0)
最後就是輸出,在R19版後,輸出的腳本寫法已經被統一,不再需要因應不同的輸出方法來改。
輸出方法有三種。
1. 第一種是透過vfw渠道,和avs一樣,可以透過vpy腳本在支持vpy的視頻編輯器或壓縮客戶端開啟/瀏覽,如virtualdub(最新版已支持vapoursynth)。
2. 第二種是VSFS文件系統的渠道。它會把你的vpy腳本mount成一個虛擬硬盤,硬盤裡有從你腳本所得出來的虛擬avi視頻。這個視頻能在播放器播放,當你滑鼠點擊選擇它時會顯示虛擬的文件容量,就有如用daemon tools虛擬iso文件一樣。這個輸出的用途是可以令到其他不支持vpy的視頻編輯軟件都能導入視頻。例如要把32bit的vpy掉進64bit的Adobe Premiere Pro裡處理。安裝說明看
這裡。
3. 第三種是vspipe。這是直接用命令行,配合壓縮編碼的命令直接壓縮,英文叫piping。下面是例子:
代码: 全选
vspipe "test.vpy" - -y4m | x264 --preset ultrafast --demuxer y4m --output "test.mkv" -
注意的是若沒有把vspipe.exe的路徑加到你系統的system variable的path上,那麼每次用vspipe時你都要把整個路徑寫上才能正常使用,如這樣:
代码: 全选
"c:\program files\vapoursynth\core\vspipe.exe" "test.vpy" - -y4m...
有興趣加的話可以看這個說明
http://www.howtogeek.com/118594/how-to- ... ne-access/
更新:
最新的vspipe已內置benchmark功能了,雖然還是很簡陋。空跑最後會顯示總幀數,總時間和fps。
代码: 全选
vspipe test.vpy NUL