史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 應用軟體使用技術文件
忘記密碼?
論壇說明

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

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

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

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-12-13, 01:41 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 金幣
預設 在影片中加入圖片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中不同濾鏡的使用有對應的顏色空間.
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2005-02-05, 02:03 PM   #2 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 8296
在線等級: 級別:5 | 在線時長:52小時 | 升級還需:8小時級別:5 | 在線時長:52小時 | 升級還需:8小時級別:5 | 在線時長:52小時 | 升級還需:8小時級別:5 | 在線時長:52小時 | 升級還需:8小時級別:5 | 在線時長:52小時 | 升級還需:8小時
註冊日期: 2002-12-09
VIP期限: 2007-03
文章: 190
精華: 0
現金: 287 金幣
資產: 287 金幣
預設

實用的東西,好好收藏!
victor99 目前離線  
送花文章: 13, 收花文章: 1 篇, 收花: 5 次
舊 2005-02-12, 10:26 PM   #3 (permalink)
長老會員
榮譽勳章
UID - 18176
在線等級: 級別:27 | 在線時長:890小時 | 升級還需:6小時級別:27 | 在線時長:890小時 | 升級還需:6小時級別:27 | 在線時長:890小時 | 升級還需:6小時級別:27 | 在線時長:890小時 | 升級還需:6小時級別:27 | 在線時長:890小時 | 升級還需:6小時級別:27 | 在線時長:890小時 | 升級還需:6小時級別:27 | 在線時長:890小時 | 升級還需:6小時
註冊日期: 2002-12-27
住址: 桃園
文章: 369
精華: 0
現金: 1018799 金幣
資產: 1038940 金幣
預設

thanks for sharing
mach12 目前離線  
送花文章: 46, 收花文章: 26 篇, 收花: 37 次
 



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

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


所有時間均為台北時間。現在的時間是 12:45 AM


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


SEO by vBSEO 3.6.1