AVS詳細的講解(資料收集)

AVS詳細的講解- -

                                      

AviSynth是AVI synthesizer的縮寫,簡單來說就是個合成平臺!在媒體文件和壓縮軟件之間擔任"橋樑"的角色。這座橋樑不是簡單的獨木橋、而是有欄杆、有臺階(比喻其提供的大量慮鏡)。因此比較靈活!如對於壓制real格式來說,源媒體文件是vob、d2v(DVD處理過程中的中間文件)、ac3、mp3、avi、DAT/mpge等,而應用程序是各種real壓縮軟件如Helix realproducer,BatchRealProducer和EasyRealProducer,它們都支持avs的導入。個人推薦使用EasyRealProducer(可能目前的版本在avs方面不夠完善,但趨勢是明朗的,呵呵)。AutoRv9雖然在avs方面有所體現,但不適合剛接觸rmvb壓制的朋友.

AviSynth首先要編寫建立一個包含特定命令的文本,稱之爲"腳本"(文件後綴名爲avs),這些命令指定要運行處理的媒體文件和濾鏡!
AviSynth的平臺和相關濾鏡更新比較快,功能不斷增加,編輯avs腳本也更簡單。在射手網可以下載到這個平臺軟件。至於濾鏡可以到得到http://www.avisynth.org/warpenterprises/下載

上面簡單介紹了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的壓制中需要適當選擇,而不能盲從,特別是對於各種濾鏡的選擇更要注意。

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

壓制DVDRIP-RMVB的黑邊裁減、畫面縮放和亮度調節都可以通過輔助軟件如ffdshow來實現。請注意我使用的少數幾個ffdshow的輔助功能(ffdshow可以變相的認爲是avs濾鏡的插件化)。其道理和avs是一樣的,我只是用了其字幕、調節亮度和縮放尺寸等少數幾個功能!

我希望接觸過avs法壓制rmvb的朋友能夠更有效的利用這種方法!我測試過利用avs壓制vob文件。感覺:1,壓縮速度較快,因爲vob直接壓縮成rmvb本身就需要畫面縮放,用常規方法壓制速度較慢。2,黑邊裁減很是輕鬆。3,可以靈活的加載字幕合水印文件。4,壓縮效果不如高質量的DVDRIP-rmvb。


下面先簡單的介紹些基本方法和常用濾鏡。

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

主要利用avs來壓制DVD的vob文件

一 基本代碼
1. LoadPlugin(),加載插件。
如:
LoadPlugin("VSFilter.dll") 加載字幕插件
LoadPlugin("mpasource.dll") 加載mp3插件

請下載以上提到的濾鏡!並解壓制到plugin目錄裏(當然目錄可以自己選定)

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

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

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者需要加載相應的濾鏡插件

二,合成
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)

4,雙語rmvb的製作
a,雙語DVDRIP壓制成雙語的rmvb
先用AVIMux_GUI來處理音頻。右鍵點擊提示另存爲mp3即可
對於喜歡壓制rmvb而門外與DVDRIP壓制的朋友建議使用AVIMux_GUI來處理音頻,更顯輕鬆合理。

avs語法如下:

LoadPlugin("VSFilter.dll")
LoadPlugin("mpasource.dll")
video=AVISource("c:/1.avi",false).TextSub("c:/logo.ssa").VobSub("c:/1.idx")
R=MPASOURCE("e:/R.MP3")
L=MPASOURCE("e:/L.MP3")
stereo = MergeChannels(R,L)
return AudioDub(video, stereo)

雙語VCD-rmvb的壓制
avs語法如下
LoadPlugin("VSFilter.dll")
video=DirectShowSource("F:/mpge/*.dat").Levels(0,1.7,255,0,255).LanczosResize(480,360)
stereo=GetChannel(video,1,2)
return AudioDub(video,stereo)
注:不過雙語VCD-rmvb可以直接使用壓縮軟件進行製作,聲音碼率使用44k以上的立體聲即可。我這裏是想加大點亮度,那麼同時就放大、水印一起來好了,呵呵!

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

下面集中給2個用avs法壓制vob-rmvb的avs代碼

先按照常規的方法將vov文件拷貝到硬盤上,然後在記事本里寫上如下語句,保存爲後綴名爲avs的文件即可
然後可以用mediaplayer播放這個avs(想一想,是怎麼個效果。呵呵,avs不是聯繫源文件和應用程序的橋樑嗎,播放avs就相當於在播放帶字幕和水印的影視了)

1,無黑邊者
LoadPlugin("VSFilter.dll")
DirectShowSource("e:/vob/ts.VOB")
LanczosResize(512,384)
Levels(0,1.5,255,0,255)
VobSub("e:/vob/ss.idx")
TextSub("h:/avs/jrvs.ssa")

2,寬銀幕(16:9)
LoadPlugin("VSFilter.dll")
DirectShowSource("e:/vob/ss.VOB")
Crop(8,64,704,352)
LanczosResize(608,336)
Levels(0,1.5,255,0,255)
TextSub("H:/avs/jrvs.ssa")


vob文件直接壓制成rmvb,初始平均碼率可以加大。一般推薦用480k-1500k,幀率23,聲音使用44k的,1pass壓制,寧可碼率錯位來保證清晰度

另外利用ffdshow支持avs的特點,可以在DVDRIP-rmvb壓制時加載多字幕(就是動態ssa水印字幕了)。或者加載聲音文件來個聲形並茂(結合動態水印的時間軸)



avs在rmvb壓制中另外一個作用是利用ffdshow支持avisynth的功能來實現多字幕的加載,部分動態水印可以通過這種方法來實現,但是還不是很完善。

部分VCD/mpge格式由於插件衝突,在播放時能自動加載版權水印,但用壓縮軟件壓縮時就不能自動加載了,那麼這個時候,就利用avs了

語法如下,比如對於一個dat文件,壓縮時不能加載ssa字幕

LoadPlugin("VSFilter.dll")
DirectShowSource("F:/mpge/2.dat").TextSub("h:/avs/jrvs.ssa")


但是達到完美的avs語句應該是
LoadPlugin("VSFilter.dll")
DirectShowSource("F:/mpge/2.dat").Levels(0,1.7,255,0,255).LanczosResize(480,360)
TextSub("h:/avs/jrvs.ssa")

同時增加了亮度和放大了畫面
注:亮度這個值要用到的話,一般1.5,感覺亮度合適的話,可以不用這個語句
VCD畫面放大,不要超過512×384,否則就是傻樣的rmvb了,違反壓縮時畫面應該縮小的原則。放大的同時也糾正了畫面的比列到標準的4:3畫面

最後在總結下,avs用於rmvb的壓制的技巧.
1,靈活加載。如vp6,wmv9格式的可以通過aviscource加載。120幀的avi可以通過avs變換幀率進行壓制。不能外掛字幕的也可以通過avs加載,或者加載多個字幕。利用ffdshow的avs功能可以加載ssa字幕

2,SVCD/vob-rmvb的壓制,主要是利用avs進行黑邊裁剪,增加亮度,可以提高壓制速度和壓縮質量(壓縮軟件內置的濾鏡效果不好,另外還極度耗時)。漢鳳和貓貓幫的vob-rmvb連續劇製作一般比較精良,看來加載場處理濾鏡(去拉絲)無不可取。不過獲得好的效果還是需要1pass壓制。VCD-rmvb,通過avs加載柔化濾鏡(FluxSmooth)的確可以獲得明顯改善。

3,avs的合成壓制。用於雙語DVDRIP-rmvb的壓制(直接合成提取的第二聲道),另外合成壓制是我控制1pass壓制錯位採用的新思路,不過凡事並非絕對,極少情況下合成壓制的要比單獨壓制的碼率更大。
avs技巧方面的簡單歸納如上,不再詳訴。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章