|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-12-13, 01:41 PM | #1 |
榮譽會員
|
在影片中加入圖片logo的方法
軟體下載:
AviSynth http://sourceforge.net/project/showf...group_id=57023 VirtualDubMod http://sourceforge.net/project/showf...group_id=65889 GIF Movie Gear http://www.moviegear.com/gmgdown.htm GSpot http://dl.163.com/downloadthis.php?i.../GSpot25b8.rar Adobe Photoshop與ACDsee等製圖工具 一.靜態logo 可以通過AviSynth或VirtualDubMod載入靜態logo;先討論AviSynth方法: 處理背景色: 1.用colorkeymask濾鏡; 2.用mask濾鏡; 1.colorkeymask濾鏡: (1)logo的選取 選項一定分辯率的圖片,在圖像編輯器裡編輯好尺寸,盡量不要在指令碼裡用resize濾鏡. (2)編寫指令碼 <1>若圖片背景為純白色,比如 在新視窗中開啟 指令碼: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 v2=ImageReader("G:\Sample\pics\p01.jpg").converttorgb24.flipvertical() v3=v2.converttorgb32.colorkeymask($FFFFFF,20) Layer(v1,v3,"add",255,0,0) 解說: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 #以AviSource方式讀取影片來源;改變成converttorgb32的顏色環境 v2=ImageReader("G:\Sample\pics\p01.jpg").converttorgb24.flipvertical() #以ImageReader方式讀取logo來源;改變成converttorgb24的顏色環境,也可以寫為converttorgb32;flipvertical()為翻轉濾鏡 v3=v2.converttorgb32.colorkeymask($FFFFFF,20) #將colorkeymask濾鏡套用到logo Layer(v1,v3,"add",255,0,0) #合併v1(影片),v3(logo);Layer函數中覆蓋強度為255,圖片主體不透明;圖片坐標值為0,0,在左上角 colorkeymask濾鏡的說明: colorkeymask(int color,int tolerance) int color:色彩深度---16進制: $xxxxxx,x取值為0-f; 10進制:0-255 int tolerance:取值0-255,在int color類BIOS時,隨int tolerance值的增大,圖片趨向透明. colorkeymask ($FFFFFF,40)中先類BIOSint color為$FFFFFF,調節int tolerance使圖像達到最佳效果,int tolerance值過小,背景色不能完全去掉;int tolerance值過大,導致主體顏色損失,此處為20.這裡$FFFFFF若改為10進制數起不到去掉背景色的作用. 在新視窗中開啟 可見logo有一定的損失. <2>若圖片背景為其它純色,比如 在新視窗中開啟 方法a.確定背景色的RGB數值,將int color用RGB的十六進制形式表示.(RGB三原色在WINDOWS有相應的值以16進制編譯,定義了256種色彩深度即0-FF,但在SSA中是以 BGR形式表示出來的.若R:46,G:139,B:87,則RGB:2E8B57,BGR:578B2E) 方法b.將背景色改為純白色,修改辦法在第2部分的mask濾鏡方法中,修改後再按<1>載入. 下面討論方法a 獲得背景顏色程式碼的方法: 開啟WINDOWS"附件"中的"畫圖",點擊工作列裡的"取色",選項背景色;開啟"顏色"表單,編輯顏色,規定自訂顏色,得到R:152,G:115,B:211,即RGB: 9873D3,用BGR表示為BGR: D37398. 在新視窗中開啟 或開啟Adobe Photoshop,點擊工作列裡的"吸管工具",也可以得到RGB的十進制數值. 在新視窗中開啟 轉換為16進制的方法: 直接計算或開啟Sub Station Alpha v4.08在Style Override中的"colour"規定自訂顏色,即可顯示BGR數值,再轉換為RGB形式即可. 在新視窗中開啟 指令碼: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 v2=ImageReader("G:\Sample\pics\p03.jpg").converttorgb24.flipvertical() v3=v2.converttorgb32.colorkeymask($9873D3,40) Layer(v1,v3,"add",255,0,0) 注:colorkeymask($9873D3,40)中先類BIOSint color為$9873D3,調節int tolerance到40去掉背景色;在去掉背景色後,int tolerance的值要盡量的小. 在新視窗中開啟 主體顏色有少量損失. 將以上指令碼中的colorkeymask($9873D3,40)改為colorkeymask(255,165),其它不變 在新視窗中開啟 主體顏色損失嚴重. 若將colorkeymask($9873D3,40)改為colorkeymask(60,165),其它不變 在新視窗中開啟 主體顏色損失嚴重. 若將colorkeymask($9873D3,40)改為colorkeymask(0,220),其它不變 在新視窗中開啟 主體顏色損失十分嚴重. 總結: 若int color採用16進制的某個顏色(一般選用背景色的RGB值),當int tolerance值的增大到一特定值時,該顏色消失.(當採用16進制不能去掉背景色時,可嘗試採用10進制) 若int color採用10進制的某個顏色(一般先類BIOSint color為255),變動int tolerance的值,選項去掉背景色的最佳數值,再類BIOSint tolerance的值,回過頭來調節int color的數值,使圖像效果達到最佳. 無論採用16進制還是10進制,隨int tolerance值增大,主體顏色都會減弱. <3>若圖片背景為雜色,比如 在新視窗中開啟 方法a.將背景色改為純白色,修改辦法在第2部分的mask濾鏡方法中,修改後再按<1>載入. 方法b.用mask函數實現透明. 2.mask濾鏡 (1)使用Adobe Photoshop,先將圖片背景色改為純白色 對<3>中的圖片,使用工作列中的"魔棒工具",選取背景區域;右鍵選項"擴大選取",可減少邊界誤差 在新視窗中開啟 設定前景色為純白色 在新視窗中開啟 開啟"編輯"表單,選"填充" 在新視窗中開啟 得到底色純白的圖片 在新視窗中開啟 若"魔棒工具"很難選定圖形,在"導航器"中將畫面放大到1000%,確定原圖形的邊緣顏色;使用工作列中的"鉛筆工具",選"畫筆"為最細,用"鉛筆工具"將其邊緣線加強一遍即可. (2)制做logo的遮罩圖片,即底色純黑,主體純白,製作方法同上(切換底色和主體顏色時用右鍵"選則反取") 在新視窗中開啟 指令碼: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 v2=ImageReader("G:\Sample\pics\p15.jpg").converttorgb32.flipvertical() v3=ImageReader("G:\Sample\pics\p16.jpg").converttorgb32.flipvertical() v2=v2.mask(v3).FadeIO(24) v4=trim(v1,0,119) v5=trim(v1,120,359).Layer(v2,"add",255,460,0) v6=trim(v1,360,0) return v4+v5+v6 解說: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 #以AviSource方式讀取影片來源;改變成converttorgb32的顏色環境 v2=ImageReader("G:\Sample\pics\p15.jpg").converttorgb32.flipvertical() #以ImageReader方式讀取logo來源;改變成converttorgb32的顏色環境,mask只支持rgb32 v3=ImageReader("G:\Sample\pics\p16.jpg").converttorgb32.flipvertical() #以ImageReader方式讀取logo遮罩圖片來源;改變成converttorgb32的顏色環境 v2=v2.mask(v3).FadeIO(24) #合併logo與遮罩圖片;logo淡入,逐漸消失為24幅,對於23.976frm/s的影片,為1秒(逐漸消失效果不明顯) v4=trim(v1,0,119) #前5秒logo不會出現,5*24=120frm v5=trim(v1,120,359).Layer(v2,"add",255,460,0) #logo從第5秒出現到第15秒結束,持續10秒; Layer函數中覆蓋強度為255,圖片主體不透明;影片的解析度640*352,logo解析度180*119, 圖片坐標值為460=640-180,0,在右上角 v6=trim(v1,360,0) #截取359以後的幅 return v4+v5+v6 #結合三部分 在新視窗中開啟 另外logo可以用png或bmp格式的圖片 用png圖片: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 v2=ImageReader("G:\Sample\pics\p18.png").converttorgb32.flipvertical() v3=ImageReader("G:\Sample\pics\p19.png").converttorgb32.flipvertical() v2=v2.mask(v3).FadeIO(24) v4=trim(v1,0,119) v5=trim(v1,120,359).Layer(v2,"add",255,460,0) v6=trim(v1,360,0) return v4+v5+v6 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 用bmp圖片: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 v2=ImageReader("G:\Sample\pics\p21.bmp").converttorgb32 v3=ImageReader("G:\Sample\pics\p22.bmp").converttorgb32 v2=v2.mask(v3).FadeIO(24) v4=trim(v1,0,119) v5=trim(v1,120,359).Layer(v2,"add",255,460,0) v6=trim(v1,360,0) return v4+v5+v6 注:已去掉翻轉濾鏡flipvertical() 可見,用mask濾鏡的實現背景透明效果明顯好於用colorkeymask濾鏡(也可用ACD FotoCanvas 2.0制做遮罩圖片,但邊緣誤差較大); 下面討論用VirtualDubMod載入靜態logo 方法一:從"Open video file(s) via AVIsynth"開啟avs指令碼,即上面所講 方法二:在VirtualDubMod中開啟要壓縮的視瀕,選項"Full processing mode",開啟"Filters" 在新視窗中開啟 點擊"add",在"Add Filter"中選則"logo" 在新視窗中開啟 只能選項24位BMP圖或tga圖片,若要載入如下24位BMP圖(連接轉為jpg圖) 在新視窗中開啟 為去掉底色,需要再做出其黑底以及黑底白芯兩張24位BMP圖 在新視窗中開啟 在新視窗中開啟 將黑底圖片作為"Logo image",將黑底白芯圖片作為"Alpha image";"Opacity"滑塊用來調節透明度;"Justification"確定圖片的大置位置;"X offset"與"Y offset"為水準和垂直位移 在新視窗中開啟 在新視窗中開啟 點"ok"確定後即可壓縮 二.動態logo 為方便起見,下面討論avi文件為mp3音瀕的情況 1.gif動畫 若影片畫格率為23.976frm/s(frm/s相當於fps),選項畫格率為12.5frm/s的圖片如下: 在新視窗中開啟 對於小於影片畫格率的gif圖片,開啟Gif Movie Gear,從"內容設定"的"全局畫格"看到"動畫"方項中的8 在新視窗中開啟 8表示每0.08秒顯示1幅,1幅/(8*0.01秒)=12.5幅/秒=12.5frm/s;Gif Movie Gear的預設值為10 運用前面的思想,我們需要製作遮罩視瀕源,因此首先製作遮罩圖片; 先將圖片儲存為png,bmp,jpg等格式(為了後面做遮罩圖片方便,先不要改變圖片尺寸),儲存後為6張單元圖,將這6張圖的底色改為純白色,再做這6 張圖的遮罩圖片(黑底白芯),仍然用前面方法;png格式的圖片用"魔棒工具"進行"填充"較為方便,但如果填充有問題可以將其轉換為bmp格式;等做好一對一的遮罩圖片,再修改這12張圖的尺寸. 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 在新視窗中開啟 選項與影片畫格率相同或接近的畫格率,影片畫格率23.976frm/s,選項25frm/s;將8改為4,則1幅/(4*0.01秒)=25幅/秒= 25frm/s,為了使動畫頻率不變,可以在原來的畫格後面插入一次相同畫格,這樣儲存後的avi文件畫格率為25frm/s,但其運動其頻率與gif(畫格率為 12.5frm/s)相同 在新視窗中開啟 對固有畫格多次複製,使得從Gif Movie Gear轉換出來的avi文件達到一定長度,使其大於在影片中的顯示時間.(這裡在每一畫格後面插入一遍相同畫格後,再對其複製19遍,共計20個循環,將10(預設值)改為4,轉出來的avi有19秒) 在新視窗中開啟 從Gif Movie Gear轉換出來的avi的動畫還需要用VirtualDubMod再做一次壓縮,否則 若用DirectShowSource方式讀取從Gif Movie Gear轉換出來的avi,會出現錯誤提示:"the filter graph manager won't talk to me" 若用AviSource方式讀取,會出現錯誤提示:"the video decompressor couldn't produce YUY2 or RGB output" 在VirtualDubMod中開啟要壓縮的視瀕,選項"Full processing mode",開啟"Compression" 在新視窗中開啟 可以選用XviD MPEG-4 Codec或DivX Pro 5.0.5 Codec,用XviD MPEG-4 Codec壓出的顏色比用DivX Pro 5.0.5 Codec要好 在新視窗中開啟 在動畫運動頻率正常的情況下,最後壓縮得到的avi文件其畫格率應當與影片畫格率相同或接近;當動畫畫格率小於影片畫格率時,運動頻率加快,當動畫畫格率大於影片畫格率時,運動頻率減慢; 畫格率的轉換既可在Gif Movie Gear中完成,又可在VDM中完成 在新視窗中開啟 對於大於影片畫格率的gif圖片,比如50frm/s,1幅/(2*0.01秒)=50幅/秒=50frm/s;將2改為4,動畫頻率變為原來的一半,運動變慢,如果要移除gif中固有的畫格必然造成損失;因此製作或選項gif圖片,應盡量使其畫格率不大於影片畫格率,當影片畫格率/gif畫格率=整數(或接近)時,可採用上述插入相同畫格的方法保持動畫頻率不變. 指令碼: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32.trim(125,374) v2=AviSource("G:\Sample\AVI\s04.avi").converttorgb32 v3=AviSource("G:\Sample\AVI\s05.avi").converttorgb32 v2=v2.mask(v3).FadeIO(25) v4=Layer(v1,v2,"add",255,0,0) v5=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 v6=v5.trim(0,124)+v4+v5.trim(375,0) return v6 解說: v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32.trim(125,374) #以AviSource方式讀取影片來源;改變成converttorgb32的顏色環境;截取100到349幅 v2=AviSource("G:\Sample\AVI\s04.avi").converttorgb32 #以AviSource方式讀取白底動畫來源;改變成converttorgb32的顏色環境 v3=AviSource("G:\Sample\AVI\s05.avi").converttorgb32 #以AviSource方式讀取遮罩視瀕源;改變成converttorgb32的顏色環境 v2=v2.mask(v3).FadeIO(25) #合併白底動畫與遮罩視瀕源;logo淡入,逐漸消失為25幅,對於25frm/s的動畫,為1秒(逐漸消失效果不明顯) v4=Layer(v1,v2,"add",255,0,0) #將動畫加入到影片中,Layer函數中覆蓋強度為255,動畫主體不透明 v5=AviSource("G:\Sample\AVI\s01.avi").converttorgb32 #以AviSource方式讀取影片來源;改變成converttorgb32的顏色環境 v6=v5.trim(0,124)+v4+v5.trim(375,0) #動畫在第5秒出現到第15秒結束,持續10秒,5*25=125frm,15*25=375frm return v6 #返回陳述式v6 注意:mask濾鏡僅適用於rgb32色彩環境; 用DirectShowSource讀取影片來源速度較慢,最好不用; 對於動畫顯示時間的設定應以最後壓縮好的avi文件畫格率來決定 在新視窗中開啟 如果不使用遮罩視瀕源,還可以使用以下指令碼: v1=AviSource("G:\Sample\AVI\s01.avi").ConvertToYUY2.trim(125,374) v2=AviSource("G:\Sample\AVI\s04.avi").ConvertToYUY2 v3=Layer(v1,v2,"add",255,0,0) v4=AviSource("G:\Sample\AVI\s01.avi").ConvertToYUY2 v5=v4.trim(0,124)+v3+v4.trim(375,0) return v5 最後以YUY2顏色環境模式輸出 在新視窗中開啟 將上面第3行改為v3=Layer(v1,v2,"fast",0,0),Layer濾鏡中的字段"add"改為"fast", 參數level值不起作用,透明度一半 在新視窗中開啟 採用笨辦法,10個循環,圖片採用最初從Gif Movie Gear儲存下來的原始尺寸的png圖片,由於gif圖片畫格率為12.5frm/s,差不多是影片23.975frm/s的一半,故每2畫格對應1幅動畫 v1=AviSource("G:\gif\jpg\s01.avi").converttorgb32 p1=ImageReader("G:\Sample\pics\png\01.png").converttorgb32.flipvertical() p2=ImageReader("G:\Sample\pics\png\02.png").converttorgb32.flipvertical() p3=ImageReader("G:\Sample\pics\png\03.png").converttorgb32.flipvertical() p4=ImageReader("G:\Sample\pics\png\04.png").converttorgb32.flipvertical() p5=ImageReader("G:\Sample\pics\png\05.png").converttorgb32.flipvertical() p6=ImageReader("G:\Sample\pics\png\06.png").converttorgb32.flipvertical() v2=trim(v1,0,124).converttorgb32 v11=trim(v1,125,126).Layer(p1,"add",255,0,0) v12=trim(v1,127,128).Layer(p2,"add",255,0,0) v13=trim(v1,129,130).Layer(p3,"add",255,0,0) v14=trim(v1,131,132).Layer(p4,"add",255,0,0) v15=trim(v1,133,134).Layer(p5,"add",255,0,0) v16=trim(v1,135,136).Layer(p6,"add",255,0,0) v21=trim(v1,137,138).Layer(p1,"add",255,0,0) v22=trim(v1,139,140).Layer(p2,"add",255,0,0) v23=trim(v1,141,142).Layer(p3,"add",255,0,0) v24=trim(v1,143,144).Layer(p4,"add",255,0,0) v25=trim(v1,145,146).Layer(p5,"add",255,0,0) v26=trim(v1,147,148).Layer(p6,"add",255,0,0) v31=trim(v1,149,150).Layer(p1,"add",255,0,0) v32=trim(v1,151,152).Layer(p2,"add",255,0,0) v33=trim(v1,153,154).Layer(p3,"add",255,0,0) v34=trim(v1,155,156).Layer(p4,"add",255,0,0) v35=trim(v1,157,158).Layer(p5,"add",255,0,0) v36=trim(v1,159,160).Layer(p6,"add",255,0,0) v41=trim(v1,161,162).Layer(p1,"add",255,0,0) v42=trim(v1,163,164).Layer(p2,"add",255,0,0) v43=trim(v1,165,166).Layer(p3,"add",255,0,0) v44=trim(v1,167,168).Layer(p4,"add",255,0,0) v45=trim(v1,169,170).Layer(p5,"add",255,0,0) v46=trim(v1,171,172).Layer(p6,"add",255,0,0) v51=trim(v1,173,174).Layer(p1,"add",255,0,0) v52=trim(v1,175,176).Layer(p2,"add",255,0,0) v53=trim(v1,177,178).Layer(p3,"add",255,0,0) v54=trim(v1,179,180).Layer(p4,"add",255,0,0) v55=trim(v1,181,182).Layer(p5,"add",255,0,0) v56=trim(v1,183,184).Layer(p6,"add",255,0,0) v61=trim(v1,185,186).Layer(p1,"add",255,0,0) v62=trim(v1,187,188).Layer(p2,"add",255,0,0) v63=trim(v1,189,190).Layer(p3,"add",255,0,0) v64=trim(v1,191,192).Layer(p4,"add",255,0,0) v65=trim(v1,193,194).Layer(p5,"add",255,0,0) v66=trim(v1,195,196).Layer(p6,"add",255,0,0) v71=trim(v1,197,198).Layer(p1,"add",255,0,0) v72=trim(v1,199,200).Layer(p2,"add",255,0,0) v73=trim(v1,201,202).Layer(p3,"add",255,0,0) v74=trim(v1,203,204).Layer(p4,"add",255,0,0) v75=trim(v1,205,206).Layer(p5,"add",255,0,0) v76=trim(v1,207,208).Layer(p6,"add",255,0,0) v81=trim(v1,209,210).Layer(p1,"add",255,0,0) v82=trim(v1,211,212).Layer(p2,"add",255,0,0) v83=trim(v1,213,214).Layer(p3,"add",255,0,0) v84=trim(v1,215,216).Layer(p4,"add",255,0,0) v85=trim(v1,217,218).Layer(p5,"add",255,0,0) v86=trim(v1,219,220).Layer(p6,"add",255,0,0) v91=trim(v1,221,222).Layer(p1,"add",255,0,0) v92=trim(v1,223,224).Layer(p2,"add",255,0,0) v93=trim(v1,225,226).Layer(p3,"add",255,0,0) v94=trim(v1,227,228).Layer(p4,"add",255,0,0) v95=trim(v1,229,230).Layer(p5,"add",255,0,0) v96=trim(v1,231,232).Layer(p6,"add",255,0,0) v01=trim(v1,233,234).Layer(p1,"add",255,0,0) v02=trim(v1,235,236).Layer(p2,"add",255,0,0) v03=trim(v1,237,238).Layer(p3,"add",255,0,0) v04=trim(v1,239,240).Layer(p4,"add",255,0,0) v05=trim(v1,241,242).Layer(p5,"add",255,0,0) v06=trim(v1,243,244).Layer(p6,"add",255,0,0) v3=trim(v1,245,0).converttorgb32 return v2+v11+v12+v13+v14+v15+v16+v21+v22+v23+v24+v25+v26+v31+v32+v33+v34+v35+v36+v41+v42+v43+v44+v45+v46+v51+v52+v53+v54+v55+v56+v61+v62+v63+v64+v65+v66+v71+v72+v73+v74+v75+v76+v81+v82+v83+v84+v85+v86+v91+v92+v93+v94+v95+v96+v01+v02+v03+v04+v05+v06+v3 動畫從第5秒開始出現,5*25=125frm,持續4.8秒,9.8*25=245frm ffdshow由於指令碼行數受到限制,當語句過多時將無法載入; 將10個循環的avs指令碼直接從Helix Producer Plus中開啟,但動畫出現後出現急速翻轉現象; 若通過VirtualDubMod中的"Open video file(s) via AVIsynth"開啟avs指令碼,通過移動關鍵畫格開始也會出現動畫的翻轉現象,但多移動幾次後則正常顯示,此時再按上面的方法壓縮儲存即可 在新視窗中開啟 2.加入avi影片 若原影片為mp3音瀕,畫格率23.976frm/s,尺寸640*352 (1)選項mp3音瀕的片子,畫格率25frm/s,尺寸592*320 指令碼: v1=AviSource("G:\Sample\AVI\s01.avi").ConvertToYUY2.trim(125,374) v2=AviSource("G:\Sample\AVI\s08.avi").ConvertToYUY2.LanczosResize(296,160) v3=Layer(v1,v2,"add",255,344,0).ConvertToYV12 v4=AviSource("G:\Sample\AVI\s01.avi").ConvertToYV12 v5=v4.trim(0,124)+v3+v4.trim(375,0) return v5 解說: v1=AviSource("G:\Sample\AVI\s01.avi").ConvertToYUY2.trim(125,374) #以AviSource方式讀取影片來源;改變成YUY2顏色環境;截取125到374幅 v2=AviSource("G:\Sample\AVI\s08.avi").ConvertToYUY2.LanczosResize(296,160) #以AviSource方式讀取影片來源;改變成YUY2顏色環境;改變載入影片的解析度為296*160 v3=Layer(v1,v2,"add",255,344,0).ConvertToYV12 #合併兩部分視瀕;加入的視瀕在右上角,344=640-296,不透明;改變成YV12顏色環境 v4=AviSource("G:\Sample\AVI\s01.avi").ConvertToYV12 #以AviSource方式讀取影片來源;改變成YV12顏色環境 v5=v4.trim(0,124)+v3+v4.trim(375,0) #小視瀕在第5秒出現到第15秒結束,持續10秒,5*25=125frm,15*25=375frm return v5 #返回陳述式v5;最後以YV12顏色環境模式輸出 在新視窗中開啟 (2)若要加入2.0聲道AC3音瀕或5.1聲道AC3音瀕的AVI文件,首先要用VirtualDubMod去掉音瀕部分,分離出純視瀕,再用上面的方法; 否則會出現錯誤提示:"ACM failed to suggest a compatible PCM format" 用GSpot檢視avi片源: 在新視窗中開啟 對於加入的是mp3音瀕的AVI文件則不必去掉音瀕部分,layer函數合併兩部分視瀕其音瀕採用前一視瀕的音瀕. 以上討論了avi為mp3時的指令碼寫法,對2.0聲道AC3音瀕或5.1聲道AC3音瀕的avi,可先用VirtualDubMod分離音瀕 在新視窗中開啟 a.若儲存為ac3文件,指令碼: loadplugin("G:\Sample\AVI\AviSynth Filter\ac3source.dll") v1=AviSource("G:\Sample\AVI\s09.avi",false).converttorgb32.trim(125,374) v2=AviSource("G:\Sample\AVI\s04.avi").converttorgb32 v3=AviSource("G:\Sample\AVI\s05.avi").converttorgb32 v2=v2.mask(v3).FadeIO(25) v4=Layer(v1,v2,"add",255,0,0) v5=AviSource("G:\Sample\AVI\s09.avi",false).converttorgb32 v6=v5.trim(0,124)+v4+v5.trim(375,0) v7=ac3source("G:\Sample\AVI\s11.ac3") audiodub(v6,v7) 解說: loadplugin("G:\Sample\AVI\AviSynth Filter\ac3source.dll") #使用AC3解碼濾鏡 v1=AviSource("G:\Sample\AVI\s09.avi",false).converttorgb32.trim(125,374) #false為取消聲音 v7=ac3source("G:\Sample\AVI\s11.ac3") #載入分離出的ac3文件 audiodub(v6,v7) #合併視瀕,音瀕 在新視窗中開啟 b.若儲存為wav文件,指令碼: loadplugin("G:\Sample\AVI\AviSynth Filter\mpasource.dll") v1=AviSource("G:\Sample\AVI\s09.avi",false).converttorgb32.trim(125,374) v2=AviSource("G:\Sample\AVI\s04.avi").converttorgb32 v3=AviSource("G:\Sample\AVI\s05.avi").converttorgb32 v2=v2.mask(v3).FadeIO(25) v4=Layer(v1,v2,"add",255,0,0) v5=AviSource("G:\Sample\AVI\s09.avi",false).converttorgb32 v6=v5.trim(0,124)+v4+v5.trim(375,0) v7=mpasource("G:\Sample\AVI\s11.wav") audiodub(v6,v7) 解說: loadplugin("G:\Sample\AVI\AviSynth Filter\mpasource.dll") #使用mp1/2/3解碼濾鏡 v7=mpasource("G:\Sample\AVI\s11.wav") #載入分離出的wav文件 或用以下指令碼: v1=AviSource("G:\Sample\AVI\s10.avi",false).converttorgb32.trim(125,374) v2=AviSource("G:\Sample\AVI\s04.avi").converttorgb32 v3=AviSource("G:\Sample\AVI\s05.avi").converttorgb32 v2=v2.mask(v3).FadeIO(25) v4=Layer(v1,v2,"add",255,0,0) v5=AviSource("G:\Sample\AVI\s10.avi",false).converttorgb32 v6=v5.trim(0,124)+v4+v5.trim(375,0) v7=DirectShowSource("G:\Sample\AVI\s12.wav") audiodub(v6,v7) 解說: v7=DirectShowSource("G:\Sample\AVI\s12.wav") #載入分離出的wav文件 濾鏡下載: http://www.avisynth.org/warpenterprises/ 補充: RGB/YUV顏色空間: RGB顏色空間中,每種顏色都可以用三個變數來表示 ,為紅色、綠色、藍色的強度 YUV顏色空間中,「Y」代表明亮度(Luma);「U」和「V」表示色度(Chroma),作用是描述影像色彩及飽和度,用於指定像素的顏色;在YUV顏色空間中,圖片是通過復合模式儲存於的. 由於不同顏色空間的儲存於量不同,因此運算速度也不相同;RGB24最慢,應必避免使用;最快為YV12,其次是YUY2,YV12的資料儲存於量僅佔RGB32的一半; 我們可以用ConvertToYV12或ConvertToYUY2將顏色空間轉為YV12或YUY2;如果視瀕源為YV12或YUY2,可以用ConvertToRGB轉為RGB32模式;用ConvertToRGB32將RGB24模式轉為RGB32模式. AviSynth中不同濾鏡的使用有對應的顏色空間. |
送花文章: 3,
|