|
發表於 2011-4-14 09:13:16
|
顯示全部樓層
回覆 1# r0952805659
您指的應該是所謂的"硬字幕" ,藉由壓制方式把特效字幕與影片結合,
影片在壓制前就要先導入字幕,然後與影片同步壓制,
使用的方式與軟體非常多,一般最常見的做法就是利用avs將VSFilter.dll 的plugin導入腳本中,然後再帶入字幕檔就可以了。
通常avs沒有接觸過的,會看的霧煞煞,但也是算眾多方式中最簡單易學的。
舉個簡單的avs例子 (#字部分僅是註解)
第一種 正常人寫法
LoadPlugin("X:\..\..\DGAVCDecode.dll")
#導入AVC plugin
LoadPlugin("X:\..\..\VSFilter.dll")
#導入字幕 plugin
AVCSource("X:\..\...\track1.dga")
#Video Source (H264分離出*.dga)
crop( 0, 0, -2, -0)
#去黑邊
LanczosResize(1280,720)
#重新定義影片解析度
Textsub("vfw.ass")
#字幕的絕對路徑
第二種 偷懶的寫法
DirectshowSource("X:\..\..\Demo.mp4", fps=29.970, convertfps=true, audio=true)
# (註 mp4 .avi .mkv.ts 什麼都可以)
LoadPlugin("X:\..\..\VSFilter.dll")
#導入字幕 plugin
Textsub("vfw.ass")
#字幕的絕對路徑
第三種 進階寫法 串聯所有avs語法
video=DirectShowSource("video", fps=23.976, audio=false, convertfps=true).crop( 0, 0, 0, 0).LanczosResize( , ).TextSub("ass")
audio=DirectShowSource("video", fps=23.976, convertfps=true)
AudioDub(video,audio)
第四種 剪接影片+合併+字幕內嵌
LoadPlugin("VSFilter.dll")
a=AVISource("Demo.avi")
b=trim(a,0,32127).AssumeFPS(23.976).changefps(23.976)
c=trim(a,32128,34823).AssumeFPS(29.970).changefps(23.976)
d=trim(a,34824,35779).AssumeFPS(23.976).changefps(23.976)
avifinal=b+c+d
avifinal=TextSub(avifinal,"Demo.ass")
return avifinal
函數註解
DirectShowSource 影像濾鏡
fps 幀數
convertfps 轉換幀數
Assumefps 還原影像原始幀數
(AssumeFPS / ChangeFPS / ConvertFPS 以不同的方式改變幀速率)
crop 去黑邊 (左,上,右,下)
LanczosResize 重新定義影像解析度
TextSub 字幕 (ass,ssa,srt)
Vobsub 字幕 (sub,idx)
trim 影像幀數剪裁 從first-frame開始到last-frame結束的幀
大致上就這樣~ 小小心得 僅供參考
更詳細的說明請Google AviSynth文檔 |
|