在操作一些非線性的視頻編輯軟件的時候,我們完成操作后一般都會對編輯好的視頻在軟件當中進行預覽。在此期間我們并沒有真正的對編輯好后的視頻進行生成操作,卻可以實時預覽出編輯后的效果。這個過程可以簡化地描述為:(源視頻)+(編輯的各種操作)=(播放器輸出預覽效果)。那么讀取我們的編輯并且應用到源視頻再輸出給播放器的呢?答案就是畫針處理器了。
AviSynth是一款由Ben Rudiak-Gould于2000年利用C++語言編寫的一款開源畫幀處理器。它的主要功能是通過讀取你的處理操作(你創(chuàng)建的腳本文件中的代碼命令)后操作濾鏡,再通過系統(tǒng)的媒體處理api(如Win下的DirectShow)將被濾鏡實時控制的源視頻輸出給播放器的。
使用它處理數(shù)字視頻有很多優(yōu)點:
1.開源:意味著有更多的人愿意為avisynth添加版本.更新.功能.濾鏡以及維護等!;
2.快速:類似C++等高級語言語法,只要有一點兒編程語言基礎即可快速上手!代碼編輯一旦掌握效率不會比編輯軟件差。而且可移植性強,不但是平臺移植性,還可以免受傳統(tǒng)編輯程序臃腫的困擾;
3.靈活:幾乎通吃所有數(shù)字視頻格式,可以利用它輸出給本地播放器所不支持或打不開的文件。腳本鏈接無限制,你可以鏈接任意多的媒體文件和濾鏡同時進行處理。壓制無限制,x264等主流壓制程序兼容avs腳本。靈活性可見一斑;
4.輕量:軟件本體非常小巧,且在使用過程中不會產生緩存文件;
AviSynth的歷史及獲取它:
AviSynth(AVI SYNTHesizer)最早由Ben在2000年開發(fā),發(fā)布在著名的DVDRip論壇Doom9上。不過他在發(fā)布v1.0b后不再進行更新,后續(xù)版本由Edwin van Eggelen繼續(xù)開發(fā)。后來參與開發(fā)的人越來越多,最終衍生出了非常非常多的版本。
而目前最常見的版本有三個:
1.avisynth 2.6.0
2.avisynth+
3.Vapours Synth
1感覺是血統(tǒng)比較純正的版本(誤),它提供了免安裝版和安裝版兩個版本。這里我們不建議初學者在一般情況下使用免安裝版本,因為它容易引起版本沖突和各種注冊和路徑的混亂。你可以在github上找到它們。
2也是衍生版本之一,不過只有安裝版本,還有有用github空間搭建的官方站點http://www.avs-plus.net/%EF%BC%8C%E5%B0%B1%E7%94%A8%E5%AE%83%E5%90%A7%E3%80%82
3.其實嚴格說并不屬于衍生版本了,它采用了新的思想以及python寫出的新一代合成器http://www.vapoursynth.com/?,與avisynth功能一樣但并不通用,我們下次文章在討論它。
關于ST和MT版本: ST是單線程處理版本,MT是多線程處理版本。不過官方只提供了ST版本,MT版本為衍生版本。
關于32/64位的選擇以及各個平臺版本: 在這里我們建議還是裝32位版本(因為支持的濾鏡多!)。需要知道的是,選擇32位版本建議播放器和編碼器也選擇32位版本,系統(tǒng)可以是64位的(廢話)。如果想通過x264等64位編碼器讀取32位synth的話,你就需要借助avs4x264這樣的pipe工具了。
linux版本為衍生的移植版本,目前有ubuntu版,你也可以嘗試通過github獲取源碼在其它發(fā)行版中編譯一下試試。大多數(shù)都是Win版本,也有MacOS的版本。
開始使用!通過AVSP與其它編輯器:
一般編程語言或者腳本都會有衍生的IDE或者編輯器等,avisynth也是有的,它叫AVSPmod或AVSP,它可以為你提供實時預覽,語法補全等等實用功能。當然,你也可以使用notepad或者vscode等等編輯軟件書寫你的AVS腳本。
安裝好avisynth后,我們在桌面上創(chuàng)建一個名為"test.avs"的空文件,使用隨便一個編輯器編輯如下內容并保存:
Version
然后把這個avs文件通過WindowsMediaPlayer或者是MPC.Pot.KM等媒體播放軟件打開(注:win下不要用vlc,它通常會通過libvlc而不通過DS解碼..),你會發(fā)現(xiàn)播放器會預覽出一個10秒鐘宣告AVS版本號及版權信息內容的視頻片段。
現(xiàn)在把文件改成:
Version
FadeOut(10)
再次播放,你會發(fā)現(xiàn)視頻的后10秒鐘會出現(xiàn)一個淡入黑色的效果。
現(xiàn)在把文件再改成:
Version
FadeOut(10)
Trim(100,150)
再次播放你會發(fā)現(xiàn)視頻的長度縮短了,這句話的意思就是讀取Version的100幀到150幀。
你也可以把Version去掉,加入:
AVISource("d:\capture.avi")? #這里寫你實際的路徑和文件
試一試,把路徑替換成你本地的文件。
文章到此我相信你已經對AviSynth有惹初步的了解,我會在以后的文章當中陸續(xù)介紹關于我對AviSynth的更多功能,濾鏡用法,常見問題,實現(xiàn)原理以及二次開發(fā)等等相關折騰的文章,感謝你的閱讀!
感謝nmm-hd論壇,http://amefs.net以及doom9論壇在我學習DIP的期間以及折騰各種解碼器和ffmpeg時讓我無意間接觸到了DVDRip,讓我打開了新世紀的大門。