[2004/1/8新編]
下面的 [2003年舊編] 那一篇是幾個月前寫的(才剛學),這裡在此做改良
如要取用avs範本請使用如下
==改良的avs範本==
LoadPlugin("vsfilter.dll")
AVISource("120fps.avi").ChangeFPS(59.94).TextSub("xx.ssa")
#如使用 xx.idx+xx.sub 字幕請將TextSub改成VobSub("xx.idx")
#如怕會壓製出影音不同步可在 AVISource 這一行最後加入 .EnsureVBRMP3Sync,如此就無懼 VBR_MP3 問題發生
PS.使用 59.94fps 的話理論上品質會比就好,而且壓製也沒問題
如果要用 VirtualDubMod 壓製
VDM最後要選壓縮格式(用Direct stream copy會直解取用Avisynth生成的無壓縮frame,所以會很大)
視訊:
VirtualDub→Video→Compression 選擇一編碼格式
舉個例子: 比如選 Xvid MPEG-4 code 編碼
進入 Configure 選 1 Pass-quality 用預設值 85 (相當於原大小 x 0.85)
音訊:
streams -> stream list -> 右鍵選 Full Processing mode -> 再右鍵選 Compression 找到 MPEG Layer-3 選自己喜換的品質
相關問題:
。
120fps动画用.avs导入压制结果音频正常视频是黑屏 ============================================
[2003年舊編]
前言:
120 幀/每秒 率的影音檔常在 RM/RMVB 的壓製上並不是這麼單純,
原因出在製作的格式上,因此並不是所有 120fps 的影音檔都是不
可行的,這裡做出了一些方式以克服其針結以做出其 RM/RMVB 的
壓製,而方法(D)(E)之作為同時也不限於只針對 120fps的影音檔,也就
是只要不被 HPP9 等接受的格式,只要對.avs稍作修改理應都可成功壓製。
PS. "幀"又名頁框、Frame
========================================
簡稱之定義
VDM : VirtualDubMod
HPP9: Helix Producer Plus 9
AVS : AviSynth
========================================
問題: HPP9 不能 Encode "[120fps+VBR_MP3].avi + [120fps+VBR_MP3]_Unicode.ssa字幕" -> rm/rmvb (但可能可開啟)
來源AVI : 為 120fps/WMV3視訊/VBR-MP3音訊
========================================
方法:
[方法(A)]用 VDM、AviUtl、TMPGEnc Plus...等改成 30fps(使用重新編碼) :
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
結果畫面容易會變播放不順(播放時而有頓點),其原因在於此舉為有損再壓縮之原故
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[方法(B)]將音訊用VDM->streams->streams list->Demux擷取出來
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
再用 avi60.exe 改成讓 HPP9 接受的 (FPS).avi 格式 :
結果並不如預期而 avi60.exe 會改成 (2x120)fps or (4x120)fps 但播放正常,
最後用 VDM 將音視訊合成
PS. 這裡需注意:將音訊用VDM->streams->streams list->ADD 方式合成時,需選 "否" 才不會造成不同步現像
以上兩種方式會多花費一倍的前置處理時間 (即先全過程為 [avi+mp3+字幕] -> avi -> RM/RMVB)
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
[方法(C)]如用 VDM or AVI Frame Rate Changer 直接改 FPS->30 :
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
結果生成的 .avi 會變成時間放慢(加長),雖也可被 HPP9 接受開啟,
但壓成的 rm/rmvb 也是會變成時間放慢(加長),所以不可行
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
[方法(D)]用 .avs 導入方式
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
1)首先同方法 2. 將音訊擷取出來[VBR_MP3].mp3
2)續(1)點兩下左欄的音訊除能之->OK,Video→Direct stream copy,Save as..(如存成 [120fps].avi)
3)將 [120fps+VBR_MP3]_Unicode.ssa 轉成 [120fps+VBR_MP3]_ANSI.ssa (應為VIRTUALDUB_subtitler.vdf不支援Unicode)
4)寫一 [30fps+VBR_MP3+ANSI_SSA].avs
~~~~~~~~~~~~~~~~~~~~~~內文如下~~~~~~~~~~~~~~~~~~~~~~~~~~
##################################################
# ~~~~~[井字號後敘述文為不執行行(即註解)]~~~~~~~ #
# 下方之全大寫文字為會意敘述如: VIRTUALDUB_PATH+ #
# 視個人安裝可能為 X:\Program Files\VirtualDub 等#
##################################################
global VirtualDub_plugin_directory = VIRTUALDUB_PATH+"\plugins"
function VD_Subtitler(clip clip, string filename)
{
LoadVirtualdubPlugin(VIRTUALDUB_PATH+"\plugins\subtitler.vdf","_VD_Subtitler")
return clip._VD_Subtitler(1, filename)
}
LoadPlugin(AVISYNTH2.5_PATH+"\plugins\mpasource.dll")
V=AVISource("[120fps].avi",false,"YUY2").SelectEvery(4,0).ConvertToRGB32().VD_Subtitler("[120fps+VBR_MP3]_ANSI.ssa").ConvertToYUY2()
# 精簡化的話如下 #
# V=AVISource("[120fps].avi",false,"RGB32").SelectEvery(4,0).VD_Subtitler("[120fps+VBR_MP3]_ANSI.ssa") #
A=MPASOURCE("[VBR_MP3].mp3")
Audiodub(V,A)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5)最後執行 HHP9 開啟 [30fps+VBR_MP3+ANSI_SSA].avs -> 設置RM/RMVB範本設置 -> Encode
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
[方法(E)]也是用 .avs 導入方式
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
只是簡化了不用對原檔作任何前置作業
~~~~~~~~~~~~~~~~~~~~~~內文如下~~~~~~~~~~~~~~~~~~~~~~~~~~
LoadPlugin(VSFILTER_PATH+"VSFilter.dll")
##############################################################
# VobSub(PATH+"_.idx") 或 TextSub(PATH+"_.srt") 命令 #
# 是Vobsub插件自定義的命令 #
# 語種選擇取決於idx文件中的 langidx: 參數。 #
# 您也可以通過rundll32 VSFilter,DirectVobSub 進入設定面板。 #
##############################################################
AVISource("120fps+VBR_MP3].avi",True,"YUY2").ChangeFPS(30).TextSub("[120fps+VBR_MP3]_Unicode.srt")
# AVISource("120fps+VBR_MP3].avi",True,"YUY2").ChangeFPS(30).VobSub("[120fps+VBR_MP3]_Unicode.idx")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PS.使用VSFilter.dll程式庫根據文獻只適合 _.idx(_.sub)及_.srt 兩種字幕
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
========================================
參考文獻:
http://www.dvdrhelp.com/forum/archive/t177150.htmlhttp://www.avisynth.org/index.php?page=VirtualDub_I特別感謝: 岚轩、taitan1 網友
使用工具:
B2J for Win32 : 日中內碼互轉Tool
Microsoft AppLocale
ANSI日文字形(BIG5櫻花字形)
必備工具下載點:
[AviSynth 2.5]
http://keihanna.dl.sourceforge.net/sourceforge/avisynth2/AviSynth_252.exe[AviSynth 插件 mpasource.dll]
http://www.avisynth.org/~warpenterprises/[Virtualdub 插件 subtitler.vdf]
http://www.virtualdub.org/downloads/subtitler-2_3.zipPS. 如是 .sub 請用 Vobsub_vd.vdf 濾鏡(Filters)
總結:
方法(D)為目前最好的方法,並且不會造成播放不順、總壓製時間長等問題
不過加入UniCode字幕之問題會造成多餘的處理步驟,只是相對於壓製時間
那就小多了,而方法(E)就不是那樣,應為是當音訊解碼也沒題時才可被執行
如有對相關不解地方有興趣歡迎 PM me 作交流