史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 多媒體影音轉檔燒錄技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2005-03-31, 01:50 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 教學 - AviSynth 教程

一、簡述

AviSynth是AVI SYNTHesizer的縮寫,意思就是AVI和成器,是一個Frameserver。(Frameserver就是一個把影像文件從一個程序轉換到另外一個程序的程序, 其間沒有臨時文件或中介文件產生)

AviSynth是由Ben Rudiak-Gould首創的一種非常有用的工具,能夠提供各種方式來合併和濾鏡處理影像文件。最獨特的就是AviSynth並不是一個孤立的影像處理程序,而是在影像文件和應用程式之間擔任「中間人」的角色。

AviSynth的基本工作原理是這樣的:
首先建立一個包含特定指令的文本,稱之為「指令碼」(後面為avs),這些指令指定要執行處理的影像文件和濾鏡;
然後執行影像應用程式,比如VD或ND,開啟指令碼。此時AviSynth就開始工作了,開啟指令碼中指定的影像文件,執行特定的濾鏡,並把輸出結果提供給影像應用程式。但影像應用程式並不瞭解AviSynth在後台所做的處理,而認為是直接開啟了一個「被處理過」的影像文件。

因此使用AviSynth有5大優勢:
1. YUV支持:內建濾鏡可以在YUV環境下執行,第三方濾鏡幾乎也相容YUV,所以比起VD、ND的內嵌濾鏡必須在RGB環境下執行要快很多。省卻了一個轉換的程序,將來還可以支持YV。
2. 濾鏡處理:內建許多影像處理濾鏡,比如Resizing,Cropping等。還有大量的第三方強力濾鏡,並可以使用VD以及AviUtl的第三方濾鏡。
3. 突破2G限制:通過AviSynth開啟影像文件就相當於應用程式直接開啟,這樣就可以使本身有2G限制的程序也能突破2G的限制。
4. 開啟格式:AviSynth可以開啟幾乎所有影像文件,包括MPEG和QuickTime。所以當影像應用程式通過AviSynth開啟這些文件時,會被認為是開啟標準的AVI,這樣就可以處理影像應用程式本身並不支持的格式。
5. 節省硬碟空間:AviSynth處理的影像文件在執行程序中直接匯入應用程式,沒有臨時文件,所以節省硬碟空間。

AviSynth現在有3個版本,第一個是Ben Rudiak-Gould的首先編譯的AviSynth v1.0b;在Ben Rudiak-Gould停止開發後,Edwin van Eggelen繼續開發,最新的版本是AviSynth v1.0b6;在2002年7月第二次源碼編寫計劃開始,目前最新的版本是AviSynth v2.0.6,新的v2.5版還在開發中。
最後一個版本比較強大,更新速度快,增加了許多實用的指令,也吸收了一些優秀的第三方濾鏡成為內建濾鏡,強力推薦使用。

二、安裝

AviSynth的安裝可謂簡單,先下載AviSynth,然後解壓縮,把AviSynth.dll複製到Windows\System下(W98,ME)或Windows\System32下(W2K,XP),然後執行INSTALL.REG就完成安裝了。


三、內建濾鏡

AviSynth內建了數目繁多的濾鏡,所以只能介紹一些最一般實用的一部分。

1、源文件濾鏡

1 AVISource
匯入AVI,對於DivX或XviD,需要安裝相應的Codec。
例:AVISource(「test.avi」)
2 WAVSource
匯入WAV
例:WAVSource(「test.wav」)

2、處理濾鏡

1 AddBorders
加邊:給影像加黑邊,尤其適用於對16:9的影像加字幕,希望不影響圖像,把字幕加在圖像的下方的情況。參數是整數,順序是左、上、右、下。
例:AddBorders(0,64,0,64) # 把640*352(16:9)改成640*480(4:3)

2 ConvertToRGB 和 ConvertToYUY2
改變顏色環境:
VD和AviUtl第三方濾鏡有的需要RGB環境才能執行,需要ConvertToRGB來進行切換。
有的RAW文件是RGB的,但使用的AVISynth濾鏡只能執行在YUV下,就需要用ConvertToYUY2來執行。
例:ConvertToRGB() # 改變成RGB顏色環境
鮪onvertToYUY2() # 改變成YUV顏色環境

3 Crop
切邊:為了保持比例或切除黑邊,參數是整數,順序是左、上、寬、高。
例:Crop(8,0,704,480) # 左右各切去8,以保持比例

4 Levels
層次:調節亮度、對比度和Gamma值。
例:Levels(0,1.2,255,0,255) # 調整Gamma,使畫面變亮


5 LanczosResize
放大縮小:Lanczos採樣方法可以在圖像處理中看到,是BicubicResize的替代者,提供更精準、更銳利的畫質。本來是日本人開發的第三方濾鏡,在日本普遍使用,歐美使用BicubicResize。自2.05版本開始吸收為內裝濾鏡。
例:LanczosResize(640,480) # 把解析度改變為640*480

6 Tweak
翻桴耤G可以調節色度,飽和度,亮度,對比度。
礎漇蛂G-180.0∼180.0,預設0.0。正數趨向紅色,負數趨向綠色。
繒〝M度:0.0∼10.0,預設1.0。0.0為黑白。
竄G度:-255.0∼255.0,預設0.0。
繒鴾颸蛂G0.0∼10.0,預設1.0。

3、編輯濾鏡

1FadeIn 和 FadeOut
淡入和逐漸消失:提供淡入和逐漸消失功能,尤其是逐漸消失功能,可以使影片結束地更自然。參數為整數,表示需要編輯的畫格數。
例:FadeOut(24) # 影片最後1秒逐漸消失

2Trim
截取:決定需要處理的部分。參數為整數,表示需要編輯的開始畫格和結束畫格。對抽樣做Sample比較有用。
例:Trim(240,480) # 決定處理240∼480這一片斷

4、聲音濾鏡

1 AudioDub
影音合併:可以把影像和聲音合併在一起。適用用用Helix直接做RMVB格式的DVDrip。
例:Video = AVISource("test.avi")
鮮udio= WAVSource("test.wav")
鮮udioDub(Video,Audio) # 把test.avi和test.wav合併

2 GetLeftChannel 和 GetRightChannel
獲取聲道:把立體聲的左右聲道單獨返回,適用於左右聲道不同語種的WAV。
例:stereo=WavSource("test.wav")
瀑eturn GetLeftChannel(stereo) # 返回test.wav的左聲道

3DelayAudio
聲音延遲:由於從VOB裡分離的AC3通常有延遲,所以用Azid轉碼得到的WAV也有延遲,在用AudioDub合併時就需要加上這個延遲。
例: WavSource("test.wav").DelayAuido(0.5) # 把test.wav延遲半秒





四、第三方濾鏡

AviSynth最強大之處就是有數目繁多、功能強大的第三方濾鏡;同時還可以使用VD以及AviUtl的濾鏡;甚至還有特別開發的接頭,可以讓TMPGEnc和AviUtl讀取AVS。
和內建濾鏡不同,第三方濾鏡需要先使用宣告,再可以使用。

1、源文件濾鏡

1 MPEG2Dec
由dividee編寫的讀取DVD2AVI產生的d2v工程文件的濾鏡,同時內建去除Noise的TemporalSmoother。
例:LoadPlugin("MPEG2Dec.dll")
鼾PEG2Source(」test.d2v」)

2 MPEG2Dec2
trbarry在MPEG2Dec的基礎上進行了改進,支持P4的SSE2指令集。用文本編輯工具開啟d2v,把iDCT_Algorithm=?改成5就可以了。速度很快,效果也好,推薦P4 CPU的用戶使用。
例:LoadPlugin("MPEG2Dec2.dll")
鼾PEG2Source(」test.d2v」)

3 MPEG2Dec3
在MPEG2Dec2的基礎上再進去行了改進,加入了Nic的圖像後處理(PP),一定程度上可以減少Noise。好像除了P4的SSE2外,還加入了AMD的3D Now!最佳化,目前還在開發中,是個非常有前途的濾鏡。
例:LoadPlugin("MPEG2Dec3.dll")
鼾PEG2Source(」test.d2v」,CPU=4) # CPU=4就是開啟了PP模式

2、處理濾鏡

1 SimpleResize
放大縮小:由trbarry編寫的,由於對SSE進行了最佳化,所以速度快,效果好。替代了AviSynth中的BilinearResize。和LanczosResize的米切爾雙立方體算法不同,這個是單純的雙線性算法。LanczosResize的畫質更銳利和真實,適合普通電影;而SimpleResize的畫質較柔和,適合動畫。
例:LoadPlugin("SimpleResize.dll")
壘impleResize(640,480)

2 ColorYUY2
顏色補償:Kiraru2002編寫的濾鏡。由於經過編碼,得到的結果和DVD相比較,顏色有所改變,所以要對顏色進行補償。
例:LoadPlugin("ColorYUY2.dll")
鮪olorYUY2(0,10,0,10,0,0,0,0,0)


3、交錯濾鏡

Decomb
IVTC和Deinterlace濾鏡:由Donald A.Graft編寫,新增加的專門處理NTSC格式動畫的mode=2,要和Avisynth2.05以上版本使用,不然速度會慢一倍。

guide 0~2,預設0, NTSC用1,PAL用2,可以提高IVTC準確度。
gthresh 0~100,預設15,控制區分不同畫格的程度。
post 預設true,用來處理IVTC遺漏的細節,使畫面略微模糊。
threshold 0~255,預設15,控制post的程度。
dthreshold 0~255,預設9,控制threshold判定IVTC遺漏的程度。
blend 預設true,在交錯畫面用繪圖來替代填充。
chroma 預設false,在交錯畫面的亮度色度調整。
cycle 2~25,預設5,每n畫格移除1畫格,NTSC選5,PAL選25。
mode 0~2,預設2。
mode=0 對cycle裡最相近的畫格不進行處理。
mode=1 對cycle裡最相近的畫格進行處理,用於處理混合畫格速。
mode=2 在一個很長的範圍裡進行畫格對比,可以正確處理動畫裡由8畫格或12畫格複製為29.97畫格的情況。
Threshold 預設0,控制mode=1時的處理重複畫格的程度,Threshold預設100,控制mode=2時的處理重複畫格的程度。
Quality 0∼3,預設2,採樣和色度的品質,與速度成反比。

但是最近的幾個版本似乎都存在一個問題,就是處理後的畫面有波動現象,並伴隨影片裡文字閃爍現象,所以還是用老版本的保險。

例:LoadPlugin("Decomb.dll")
Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false)
Decimate(cycle=5) # NTSC 3:2 PullDown

LoadPlugin("Decomb.dll")
Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false)
Decimate(Cycle=5,Mode=2) # NTSC Progressive和Interlaced混合

LoadPlugin("Decomb.dll")
Telecide(Guide=2,Gthresh=50,Chroma=True,Quality=3,Post=false)
Decimate(Cycle=25) # PAL



4、字幕濾鏡

1 VobSub
Sub字幕:VobSub不但是外掛字幕的好手,內嵌字幕也是一樣的強。
將字幕的2個文件test.idx和test.sub放在同一個目錄下就可以了。
例:LoadPlugin("VobSub.dll")
懣obSub(「test」)

2 TextSub
SSA和ASS字幕:這個也是VobSub原有的的,可以內嵌特效字幕。
例:LoadPlugin("TextSub.vdf")
嬸extSub(「test.ssa」)
psac 目前離線  
送花文章: 3, 收花文章: 1624 篇, 收花: 3187 次
舊 2006-10-11, 05:27 PM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

AviSynth
AviSynth是AVI synthesizer的縮寫,也經常稱之為avs,簡單來說就是個合成平台!在媒體文件和壓縮軟件之間擔任「橋樑」的角色。這座橋樑不是簡單的獨木橋、而是有欄杆、有台階(比喻其提供的大量慮鏡)。因此比較靈活!如對於壓制real格式來說,源媒體文件是vob、d2v(DVD處理過程中的中間文件)、ac3、mp3、avi、DAT/mpge等,而應用程式是各種real壓縮軟件如Helix real producer、BatchRealProducer144和EasyRealProducer14,它們都支持avs的匯入。當然avs並不只是用於real壓縮。它是媒體文件和壓縮軟件之間的「橋樑」,只要avs支持你所需要處理的媒體文件,壓縮軟件也支持匯入avs文件,你都可以通過avs對視頻進行處理,然後讓壓縮軟件輸出你所需要的格式的文件。
也許你還是不明白AviSynth能做什麼,舉些簡單的例子,你需要對一段avi進行處理。你想把畫面尺寸縮小,你可以用avs;你想把畫面上的雜點消除,你可以用avs;你想把畫面處理得銳利些,你還是可以用avs;AviSynth是橋樑,位於媒體文件和壓縮軟件之間,壓縮軟件可以通過AviSynth呼叫和處理媒體文件。而且不僅僅是壓縮軟件,甚至是播放器也能呼叫avs,對播放的文件進行處理,得要需要的播放效果。

AviSynth首先要編寫建立一個包含特定命令的文本。注意這裡的文本,簡單的說就是windows的寫字板寫出來的文件,你可以用任何一種文本編輯器打開進行編輯。這一特定命令的文本稱之為"腳本"(文件後綴名為avs),這些命令指定要執行處理的媒體文件和濾鏡!

AviSynth的平台和相關濾鏡更新比較快,功能不斷增加,編輯avs腳本也更簡單。在射手網可以下載到這個平台軟件。至於濾鏡可以到得到http://www.avisynth.org/warpenterprises/
下載,至於doom9論壇,大家知道有這麼個烏合的巢穴就可以了!

上面簡單介紹了AviSynth的一些基本概念作為引子,在正文開始前,我想首先交待很重要的一點:avs腳本及其各種濾鏡主要適用於大碼率媒體文件的處理,也即我們經常接觸的DVDRIP/TVRIP avi的製作優化。而對於高度壓縮格式的rmvb來說,我們利用的avs濾鏡更應該持慎重態度(如亮慮鏡、字幕慮鏡、畫面調整等少數幾個)!也就是說avs在rmvb壓制方面,我們需要的是利用avs靈活的「中間人」的角色(看下面的例子)!而不是為了avs而去壓制!我看到好多朋友初步接觸rmvb壓制,就在用avs壓制DVDRIP-rmvb,完全套用個別論壇給出的avs腳本,裡面全是各種濾鏡,如3D增強、柔化、去絲等!這些濾鏡如果製作DVDRIP的avi那是會獲得肯定的畫質效果,但是用於rmvb壓制,彷彿就是東施效顰,忠言逆耳!real壓制的原理和高碼率的mpge4編碼是不同的,後者有視頻上層的概念,因此濾鏡的修飾作用可以體現。我看Doom9討論avs時,主要還是處理各種大資料量影像媒體為主。如處理自己DV錄製的影視、電視卡錄製的視頻源之類的等。而眾所周知的影響real媒體壓縮效果就是片源效果。VCD片源的再怎麼處理也不可能達到DVD的效果,而DVD片源,再怎麼胡亂壓制也不會差到哪裡。因此avs直接在rmvb的壓制中需要適當選擇,而不能盲從,特別是對於各種濾鏡的選擇更要注意。一句話AviSynth非常靈活,要按具體情況具體分析。

第二,需要認識avs的橋樑作用。修飾之餘盡可能的使用壓縮軟件本身的功能。對於real壓縮,如rmvb壓制中幀率的改變就可以在壓縮軟件中進行設置,而不要在avs中寫入相關的語句。另外各種壓縮軟件使用的是real的壓縮內核,而real壓縮一般以YV12的快速處理環境為主。這也是在使用avs壓制rmvb時需要注意的問題。

自己覺得上文對avs的介紹及應用範圍要比下面的內容來的更重要!這是我直到現在才撰寫完畢這篇小文的良苦之處。

下面先簡單的介紹些基本方法和常用濾鏡,濾鏡可以理解為各種處理視頻的工具。

首先安裝avisynth,並將常用慮鏡插件dll文件拷貝到安裝目錄的plugin目錄裡。


一、基本代碼

1. LoadPlugin(),載入插件。
如:
LoadPlugin("VSFilter.dll") 載入字幕插件
LoadPlugin("mpeg2dec3.dll") 載入DVD的mpeg2編碼器插件
LoadPlugin("mpasource.dll") 載入mp3插件

請下載以上提到的濾鏡!並解壓制到plugin目錄裡(當然目錄可以自己選定),如果avs文件和濾鏡不再同一個目錄下,記得要把載入濾鏡的路徑名寫全了。有些濾鏡或者腳本是avisynth核心的濾鏡或腳本,也就是avisynth本身提供的功能,這些就不需要載入,其它的都需要載入。你也可以用SetWorkingDir設定插件文件的工作路徑

SetWorkingDir("d:\GORDIA~1\") # 設定AVS 腳本呼叫dll 插件文件的工作路徑

2.源媒體讀取
DirectShowSource("e:\vob\ss.VOB")
DirectShowSource()在高版本avisnyth中顯得更萬能些,常用的媒體格式,如avi、mpge1/dat、mpge2/vob/bin都可以載入,另外可以不用分離視頻和音頻,而直接壓縮!想要直接壓制vob請使用高版本的avisynth,如目前的2.54 。如果遇到打不開的媒體格式你大都可以試試看DirectShowSource。

AVISource(e:\avi\1.avi,false)
這個對於DVDRIP壓制者來說可能更常用些.false表示禁止音頻!

mpeg2source("XXX.d2v")
這個用於解碼DVD的mpeg2格式的視頻

WAVSource("e:\vob\ss.wav") 讀取wave音頻
AC3SOUECE("e:\vob\ss.ac3") 讀取ac3音頻
MPASOURCE("e:\vob\ss.MP3") 讀取mp3音頻
註:WAVSOURCE和AVISOURCE是屬於核心腳本,無須讀取插件,但AC3SOURCE和MPASOURCE需要讀取AC3SOURCE和MPASOURCE插件。DirectShowSource的讀取需要安裝各種音頻和視頻的解碼器

3. crop()、LanczosResize()裁黑邊和調整大小
vob文件畫面大小一般720×480。16:9寬銀幕的都帶了很大的黑邊,需要裁減掉。也是avs用於vob壓制的關鍵因素之一
裁減黑邊和縮放畫面是vob文件壓制中很重要的因素,一般連用。對於本身就無黑邊的文件直接用LanczosResize()
16:9畫面的有2種情況,請記住這幾個數值,在rmvb壓制中直接套用即可!
DVD變形寬銀幕:640×352,608×336
電影寬銀幕: 640×272

如要將電影寬銀幕的畫面比列調整到640×272,avs裡可以這麼寫
Crop(8,90,704,300)
LanczosResize(640,272)

如要將DVD變形寬銀幕的畫面比列調整到608×336,avs裡可以這麼寫
Crop(8,64,704,352)
LanczosResize(608,336)

無黑邊的畫面的直接用
LanczosResize(512,384) 縮小同時畫面強制到標準4:3

請直接記住這幾句就可以了得到最佳的rmvb畫面大小了!

4.亮度濾鏡
亮度濾鏡是使用avs壓制vob-rmvb vcd-rmvb的又一關鍵因素。畫面太暗的rmvb是失敗之作

介紹2個
Levels(0,1.5,255,0,255)
改第二個,我感覺數值在1.3-2之間比較合適,一般1.5比較合適

Tweak(0,1,20,1)
4個浮點數分別表示:調節色度,飽和度,亮度,對比度。一般將第三個調節在0-30之間,以15-20為宜

個人感覺level()比較好,主要調背景為主,而vob文件主要是背景暗。注意Tweak的其他調節可能和顏色控制環境有關,如YUY2,因此其它的最好不要再改動

註:ffdshow目前的版本還是不能支持mpge2唉!否則可以利用它來調節亮度了

5.字幕濾鏡
TextSub("h:\avs\jrvs.ssa") 載入水印文本
VobSub("e:\vob\ss.idx") 載入影片字幕

6.其它慮鏡介紹,在rmvb壓制中不推薦使用,如部分朋友選用的
FluxSmooth(5,7) 柔化濾鏡
Convolution3d("moviehq") 3D優化濾鏡
2者需要載入相應的濾鏡插件

7.常用音頻處理腳本:
ResampleAudio(44100)
DELAYAUDIO(XXX,30)
AmplifydB(wavsource(「XXX.WAV」),3,3)
例子:
DelayAudio(wavsource(」XXX.WAV「),-30)30的單位是毫秒,經典的解決音畫同步問題;
又如:
WAVSOURCE(「xxx.wav」).ResampleAudio(48000)
音頻重新採樣,採樣率48
再如:
AmplifydB(wavsource(「xxx.wav」),3,3)
左右聲道放大3DB

8.色彩模式的轉換
有些壓縮軟件不支持某些色彩模式,例如預定情況下Helix不能在YV12環境下工作,需要將DVD的YV12轉為YUY2
video=ConvertToYUY2(video),當然如果你裝了Xvid,Helix也是可以在YV12下工作的

有如下的轉換:
ConvertToRGB32()、ConvertToRGB24、ConvertToRGB()
ConvertToYUY2()、ConvertToYV12()

簡單例子:
AVISOURCE(「xxx.avi」)
ConvertToYUY2()
等價於AVISOURCE(「xxx.avi」,「YUY2」)或者AVISOURCE(「xxx.avi」).ConvertToYUY2()
其他的也類似

9.抓圖
沒有想到用avs來抓圖吧,只要用wmp6.4或mpc6468播放一下寫好的avs文件,抓圖就產生了

directshowsource("C:\1.rmvb",fps=23.976).ConvertToRGB24
trim(0,19)
ImageWriter("C:\",0,0,"jpg")

這裡我們假設的是要截取的rmvb為C:\的1.rmvb,要截取的frame(幅)從第1到20共20幅(trim是以0為第一幅)
儲存路徑為C:\,格式為jpg(支持bmp, dds,jpg/jpe/jpeg, pal, pcx格式)

連續抓圖
Avisource("C:\test,avi",false).ConvertToRGB24
trim(0,19)
ImageWriter("C:\",0,0,"jpg")
截取特定的frame
Avisource("C:\test,avi",false).ConvertToRGB24
trim(1920,1920)
ImageWriter("C:\",0,0,"jpg")

10.合成
AudioDub(video, audio)
合成常用於real格式的壓制,製作rmvb的時候就需要把視頻和音頻合成後交給real壓縮軟件,而製作avi則不需要合成視音頻。這主要是因為real格式要求視音頻都必須用real壓縮,而avi則可以使用多種音頻格式,一般是單獨壓縮視頻,然後再用其他軟件合成視頻音頻。
簡單的例子
V=AVISOURCE(「xxx.avi」,FALSE,「YUY2」)
A=WAVSOURCE(「xxx.wav」)
AudioDub(V,A)
合成在rmvb壓制方面的例子可以參考後面的rmvb壓制部分

需要注意的是avs的腳本可以有兩種寫法
例如Crop切邊,語法是
Crop(clip, int left, int top, int width, int height, bool align)
clip就是源
使用的時候可以寫
Video=Crop(Video,8,0,704,480)
也可以寫
Crop(8,0,704,480)
但是兩種寫法是有區別的具體的可以比較下面的兩個例子

# PLUGINS
LoadPlugin("C:\PROGRA~1\Autorv9\SOFTS\AVSFILE\MPEG2DEC3.DLL")
# VIDEO SOURCE
Video=Mpeg2Source("E:\a.d2v")
# CROPPING
Video=Crop(Video,8,0,704,480)
# RESIZING
Video=BicubicResize(Video,640,480,0,0.5)
# FINISH
Return(Video)

# PLUGINS
LoadPlugin("C:\PROGRA~1\Autorv9\SOFTS\AVSFILE\MPEG2DEC3.DLL")
# VIDEO SOURCE
Mpeg2Source("E:\a.d2v")
# CROPPING
Crop(8,0,704,480)
# RESIZING
BicubicResize(640,480,0,0.5)

也就是說如果你制定了源Video,那麼你就要注意了必須要呼叫源的地方都要寫上源,最後還要Return(Video)。兩種寫法不能混用哦。


二、壓制DVD

下面針對DVD的壓縮介紹一下avs運用。對於壓制DVD,我們一般已經用DVD Decrypter將DVD抓取出來,並且用DVD2AVI分離了DVD的視音頻,得到視頻的臨時文件*.d2v和音頻文件*.ac3等。壓制DVD的avs腳本除了上面的常用濾鏡和腳本外,還有一些自己特別的地方。

SetWorkingDir("d:\GORDIA~1\") # 設定AVS 腳本呼叫dll 插件文件的工作路徑
LoadPlugin("mpeg2dec3.dll") # 呼叫DVD的mpeg2編碼器插件
LoadPlugin("decomb.dll") # 呼叫交錯濾鏡插件,包含了IVTC 和Deinterlace 兩種濾鏡
LoadPlugin("TomsMoComp.dll") # 呼叫交錯濾鏡插件,對應Deinterlace 濾鏡中的TomsMoComp 腳本命令
LoadPlugin("SimpleResize.dll") # 呼叫變形濾鏡插件,對應SimpleResize 腳本命令

mpeg2source("F:\temp1\1.d2v") # 源d2v 文件的路徑
trim(startframe,endframe) # 截取VOB 片斷進行壓縮。startframe 為起始幀,endframe 為結束幀。主要用於片斷測試

壓縮或更高階的分段處理壓縮
Telecide(guide=1) # IVTC 濾鏡。多用於做NTSC 制式DVD 的IVTC 處理
Decimate(Cycle=5) # IVTC 濾鏡。用於NTSC 制式DVD 刪除重複幀處理,即 29.970fps --> 23.976fps
FieldDeinterlace() # Deinterlace 濾鏡。用於做PAL 制式DVD 的Deinterlace 處理,不能同IVTC 和TomsMoComp
濾鏡同時使用
FieldDeinterlace(blend=false) # 同上
TomsMoComp(1,5,1) # Deinterlace 濾鏡。在處理PAL 制式DVD 時,一般不能同FieldDeinterlace 和 Telecide 同時
使用
crop(14,8,-12,-12) # 裁切命令。參數為(左、上、右、下),代表各邊被裁切去的象素值
LanczosResize(640,352) # 變形濾鏡。確定最終AVI 的解析度,常用於普通電影
SimpleResize(640,352) # 變形濾鏡。確定最終AVI 的解析度,常用於二維動畫,不能和LanczosResize 同時使用
SelectRangeEvery(xxx,14) # 全片平均採樣測試語句。其中xxx 主要用於 COMPRESSIBILITY CHECK 測試,即
(2pass/1pass)*100% 預測算,而正式壓縮時不用。其中xxx 為平均採樣點的間隔值。例如當
進行全片 5% 預測,則xxx=280,10%為140,15%為93

壓制DVD視頻於處理一般avi有不少需要注意的地方。例如IVTC、切邊、變形等,IVTC可以參考 IVTC技術原理、隔行與逐行之間;切邊、變形可以參考 關於切邊和變形

IVTC是其中比較重要的一環。根據檢測DVD2AVI顯示的VOB 的Video Type 和 Frame Type, 確定影片的 IVTC 或 Deinterlaced 處理方式」,
AVS 腳本命令的使用原則如下:
A、對於NTSC Interaced 型:需要做IVTC 和去重複幀處理,則AVS 腳本應包含 Telecide(guide=1) 和 Decimate(Cycle=5) 語句。
B、對於NTSC Progressive 型:不做任何處理,則AVS 腳本無需包含 IVTC 和 Deinterlace 濾鏡。
C、對於PAL Progressive 型:不做任何處理,則AVS 腳本無需包含 Deinterlace 濾鏡。
D、對於PAL Interlaced 型:需要做Deinterlace 處理,則AVS 腳本應包含 FieldDeinterlace() 或 FieldDeinterlace(blend=false) 或
TomsMoComp(1,5,1) 語句。
E、對於NTSC FILM 型:若為 純FILM 或 FILM≥95% 時,則在DVD2AVI 階段就已經過force film,這裡就無需處理了; 若
FILM < 95% 時,需要做IVTC 處理,則AVS 腳本應包含 Telecide(guide=1) 和 Decimate(Cycle=5) 語句。
F、對於NTSC Interlaced / Progressive 混合型:全部做IVTC 處理,則AVS 腳本應包含
Telecide(guide=1,Gthresh=50,dthreshold=8,threshold=0,Post=true).Decimate(5) 語句。


三、rmvb的壓制

下面是一些使用avs壓制rmvb的方法
1
LoadPlugin("VSFilter.dll")
LoadPlugin("mpasource.dll")
video=AVISource("c:\1.avi",false).TextSub("c:\logo.ssa").VobSub("c:\1.idx").Lanczosresize(512,384) #定義了avi源、字幕、水印和畫面大小
audio=mpasource("c:\1.mp3") #音頻
AudioDub(video, audio)

為簡便起見,以avi文件為例說明語法,但此例不推薦用,直接用壓縮軟件+ffdshow設置即可。原始avs載入了至少3個額外的濾鏡,已略去!

該方法可以用於雙語DVDRIP的壓制,使用雙語處理的軟件提取自己要的聲道即可,而不要再合併成avi了!

DTS音軌格式的可以用這個avs法壓制
先根據中高階教程裡的方法將DTS音頻轉換成wave格式,如放在e:\avi\目錄裡
avs可以這麼寫:
LoadPlugin("VSFilter.dll")
video=AVISource("c:\1.avi",false).TextSub("h:\avs\jrvs.ssa").VobSub("e:\avi\t1.idx")
audio=WAVSource("e:\avi\t1.wav")
AudioDub(video, audio)
如此可以不用再合併那麼費事了!

2
LoadPlugin("VSFilter.dll")
b=directshowSource("e:\avs\cd1.avi").TextSub("e:\BBSLogo\logo.ssa").VobSub("e:\avs\cd1.idx").Lanczosresize(608,320)
c=directshowsource("e:\avs\cd2.avi").VobSub("e:\avs\cd2.idx").Lanczosresize(608,320)
final=b+c
return final
這個語法很好,直接將多CD的壓製成一個rmvb,可以在一定程度上解決單CD碼率過度錯位。如分別1pass壓制CD1和CD2可能會由於碼率錯位太大而使文件增大,但如果2個一起壓制,則可能由於碼率補償,平均碼率錯位反而不大,而使文件大小減小。
請注意,這裡自己可以將水印放在CD1上,而CD2不會顯示(說明什麼?呵呵!)

一般DTS的都要2CD以上,有時影片長度也不長,所以DTS的電影可以這麼寫avs壓制
LoadPlugin("VSFilter.dll")
video=AviSource("e:\cd1.avi",false).Vobsub("e:\cd1.idx").TextSub("c:\logo.ssa")+AviSource("e:\cd2.avi",false).VobSub("e:\cd2.idx")
audio=wavSource("e:\cd1.wav")+wavSource("e:\cd2.wav")
AudioDub(video, audio)

3
雙語的vcd分成單語來做
LoadPlugin("VSFilter.dll")
video=DirectShowSource("F:\mpge\*.dat").Levels(0,1.7,255,0,255).LanczosResize(480,360)
return GetChannel(video,2)

1 left channel
2 right channel ,一般是國語

據說這裡的*.dat表示成批壓制!

如果要求控制幀率,那麼有句改成這個
video=DirectShowSource("F:\mpge\*.dat",fps=25)

以上都是avi,都可以自動關聯ffdshow,所以亮度可以在ffdshow裡設置!但請同時去掉ffdshow的字幕和avisynth功能

4
製作成單音軌雙語
1.
Left=wavSource("C:\1.wav").getleftchannel
Right=wavsource("C:\2.wav").getrightchannel
mergechannels(Left,Right)
#monotostereo(Left,Right)
2.
Left=DireectShowSource("C:\1.mp3").getleftchannel
Right=DirectShowsource("C:\2.mp3").getrightchannel
mergechannels(Left,Right)
#monotostereo(Left,Right)

交給graphedit製成wav或Lame mp3

5
將雙語的rmvb製作成單語雙聲道的方法
1.用rma分離視頻及音頻
http://www.niuguo.net/forum/topic_sh...=1&bpg=1&age=0
2.安裝
http://matroska.free.fr/packs/Matros...ull_v1.0.1.exe
寫一個avs腳本
DirectShowSource("C:\audio.rm").getchannel(1,1)
#1為左聲道
#2為右聲道
3.
用BRP重制這個音頻腳本,得到單語雙聲道無視頻的音頻rm
http://cool18.comicer.com/
4.用rma結合之前分離出來的視頻及重制的音頻

6
用rmvb直接壓制DVD
1、先將DVD的VOB文件用利用DVDDecrypter拷入硬碟。
2、利用dvd2avi軟件先產生一個d2v工程和AC3音頻。
3、利用Azid或其它軟件把ac3轉為標準的wav文件,這種對音頻處理較嚴謹且音質較好的方法。此外還可以用graphedt產生一個GRF,在AviSynth裡面用DirectShowSource匯入即可,這樣還可以處理雙DTS的問題,前提是要裝 阿飛 的DTS.AC3;求快就用ac3source載入ac3音頻。
4、利用GK打開d2v工程,先Resolution,然後選制式、縱橫比,後按auto crop自動去邊,然後記住最右邊(左、上、右、下)的四個數值,填入Video=Crop(Video,6,10,-8,-12),注意這裡只取雙不取單;然後在GK中的output resolution中的Width右邊的小箭頭調畫面寬度,調完後將數位填入Video=LanczosResize(Video,640,480)中。
5、編輯.avs文件,主要模板如下:(#號不做處理)
#載入插件
#mpeg2dec3.dll主要功能是載入d2v工程文件。
#ldecomb.dll主要功能是影片場序處理,去拉絲。
#Convolution3DYV12.dll主要功能是改善電影畫面質量。
#VSFilter.dll載入SUB、SRT等格式的字幕。
LoadPlugin("D:\Program Files\GordianKnot\mpeg2dec3.dll")
LoadPlugin("D:\Program Files\GordianKnot\decomb.dll")
LoadPlugin("D:\Program Files\GordianKnot\Convolution3DYV12.dll")
LoadPlugin("D:\Program Files\GordianKnot\VSFilter.dll")
#載入d2v工程文件
#大家選擇自己放d2v工程文件的目錄和文件名
video=mpeg2Source(".:\path\.d2v")
#
#DVD畫面質量改善(有幾種狀態,專門文章會再介紹,大家用預定就行了)
video=Convolution3D(video,0, 3, 4, 3, 4, 2.8, 0)
#
#將YV12轉為YUY2
video=ConvertToYUY2(video)
#
#載入音頻(自行修改音頻文件的路徑和文件名)
audio=wavsource(".:\path\.wav")
Video=audioDub(video,audio)
#
#去絲處理(Decimate(5)是,NTSC制式轉為23.976,PAL的另有其它模式)
video=Telecide(video).Decimate(5)
#
#去邊處理(數位部分大家根據自己的情況修改,數位取雙不取單,後面兩個要有負號)
Video=Crop(Video,6,10,-8,-12)
#
#畫面大小調整(後面的數位根據GK中得到的自行輸入)
Video=LanczosResize(Video,640,480)
#
#字幕載入(預定為sub格式,如果是srt格式,請將Video=vobsub(video,".:\path\file")改為#Video=vobsub(video,".:\path\file"),然後去掉#Video=TextSub(video,".:\path\.srt")改為Video=TextSub(video,".:\path\.srt"))
#sub格式的(file不加延伸名)
Video=vobsub(video,".:\path\file")
#srt格式
#Video=textsub(video,".:\path\.srt")
#
#返回視頻
Return(Video)
#模板到此結束
將上面的模板拷入.avs文件(可以用寫字板創建一個avs文件),然後到VirtualDubMod打開.avs文件,就可以看到預覽效果了,如果沒有出錯,就可以放入helix進行壓縮處理。

上面只是處理某種DVD的情況,做IVTC、切邊和變形需要按照DVD的具體情況,可以參考avi的製作。那些改善畫質的濾鏡也需要按照實際情況使用。下面是tct66的一些點評。

1.截取DVD用smartripper比較好,不用考慮聲音延遲的問題
2.用azid將ac3轉成wav是對音頻處理較嚴謹且音質較好的方法
用headac3he或besweet+gui會更好些
求快就用directshowsource或用GraphEdit呼叫DTS/AC3解碼
3.DVD的源或多或少都有些噪點,求畫面乾淨,用convolution3d
如果是保真派,基本上加個undot
樓主給的參數,基本上保留了細節,去除了噪點
Convolution3d (preset="movieHQ") // Movie Hi Quality (good DVD source)
is an alias for Convolution3D (0, 3, 4, 3, 4, 2.8, 0)
Convolution3d (preset="animeHQ") // Anime Hi Quality (good DVD source)
is an alias for Convolution3D (0, 6, 12, 6, 8, 2.8, 0)
4.PAL的DVD基本上都是progressive,不必作deinterlace
有些是interlaced,要作deinterlace
但是有些D版的PAL制的DVD是由NTSC-film的DVD轉成PAL的DVD
這時候要作25->24還原的動作
Telecide(order=1,guide=2).Decimate(25)
NTSC的DVD就複雜很多
有film,progressive,interlaced,film混progressive,,film混progressive混interlaced
還有其它每5張的某一幅是interlaced,情況特殊,使用IVTC的方法不同
5.切邊及resize交給GK計算是方便且較正確的

7.120fps的avi壓製成RM/RMVB
首先你要看你的文件名中是否有"&"的符號,如[dmhy&ktkj][full_metal_alchemist][002][jap_chn][1170k].avi,有的話將它重新命名為例如[full_metal_alchemist][002][jap_chn][1170k].avi,不然用BRP轉出來的RMVB會為.tmp的亂碼,需手動改為.rmvb才可播放,而HPP根本不能壓制
1.使用AviSynth,
譬如說是要對120fps的wmv3.avi位於C:\
壓製成RMVB,寫一個腳本如下:

AVISource("c:\wmv3.avi")
ChangeFPS(23.976)

若第2行改為ChangeFPS(29.970),水平移動的畫面會頓,所以建議為ChangeFPS(23.976)
然後用BRP或HPP壓制這個*.avs的腳本

2.若有外掛字幕,需呼叫VSFilter.dll,譬如說是要對120fps的wmv3.avi及wmv3.srt位於C:\
壓製成RMVB,寫一個腳本如下:

AVISource("c:\wmv3.avi")
ChangeFPS(23.976)
LoadPlugin("VSFilter.dll")
TextSub("c:\wmv3.srt")

若其中是wmv3.idx+wmv3.sub的字幕,第4行改成
VobtSub("c:\wmv3.idx")

然後用BRP壓制這個*.avs的腳本

3.雖然這個*.avs腳本播放拖曳的時候聲音,畫面不同步,不過壓制它成RM/RMVB,沒有聲音,畫面不同步的現象
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1624 篇, 收花: 3187 次
向 psac 送花的會員:
倉田透 (2008-06-03)
感謝您發表一篇好文章
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:54 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2018, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1