我 會 不 時 在 這 帖 內 添 加 一 些 簡 化 了 的 基 本 有 用 指 令 用 法 。所 示 範 的 指 令 主 要 是 針 對 rmvb 格 式 轉 mpeg 的 用 法 。 所 以 有 些 地 方 解 釋 會 有 所 不 全 。 還 是 那 句 ﹐ 如 有 什 麼 地 方 需 要 改 良 的 ﹐ 請 不 吝 賜 教 ﹗
***************************************************************************************************
3/1 Resizing
為 什 麼 要 做 resize? 主 要 是 因 為 電 腦 所 用 的 pixel 是 正 方 形 的 ﹐要 調 改 到 電 視 所 接 納 的 解 像 規 格 才 可 以 在 電 視 上 播 放 。雖 然 很 多 轉 檔 程 式 都 有 本 身 的 畫 面 調 整 功 能 ﹐但 是 很 多 效 果 都 不 好 而 且 不 準 確 。 Resize 功 能 好 不 好 是 直 接 影 響 壓 出 來 影 片 的 效 果 。
還 有 更 重 要 的 是 添 加 黑 邊 ﹐ 原 因 是 電 腦 所 顯 示 的 畫 面 是 完 完 整 整 的 ﹐如 果 不 把 畫 面 稍 為 改 小 再 加 黑 邊 ﹐會 有 看 不 到 字 幕 情 形 發 生 。 電 視 機 製 造 商 都 會 在 電 視 機 屏 幕 加 上 over scan, 把 四 邊 都 有 不 同 程 度 地 掩 蓋 掉 ﹐而 你 所 看 到 的 叫 safe area. 目 的 是 防 止 analog 電 視 臺 廣 播 時 所 連 帶 的 噪 音 (noisy signals) 顯 露 在 家 用 的 電 視 機 上 。
在 上 圖 中 (1) 的 LanczosResize 是 幾 種 調 整 畫 面 尺 寸 之 中 是 目 前 效 果 比 較 最 好 的 filter 。 括 內 的 第 一 個 數 目 是 代 表 影 片 的 橫 值 解 像 度 (horizontal resolution), 第 二 個 數 目 是 代 表 直 值 解 像 度 (verticle resolution)。
圖 (2) 是 在 調 整 後 的 畫 面 加 上 黑 邊 。括 內 順 序 數 目 是 代 表 ﹕
左 邊 ﹐ 上 邊 ﹐ 右 邊 ﹐ 下 邊 。
把 橫 值 的 672 加 上 左 24 ﹐右 24 的 總 和 是 = 720
把 直 值 的 544 加 上 上 16﹐ 下 16 的 總 和 是 = 576
這 是 PAL 電 視 制 的 符 合 標 準 full D1 解 像 度 。
NTSC 制﹕ LanczosResize(672,448), AddBorders(24,16,24,16).
*這 裡 所 示 範 的 都 是 默 認 片 源 的 屏 幕 比 例 (aspect ratio) 是 4 比3 (4:3).
注 意 1﹕ 確 定 影 片 是 PAL (25fps) 用 720X576﹐ NTSC (29.97) 的 用 720X480。
注 意 2﹕ 用 full D1 (720x576) 解 像 度 在 轉 檔 時 用 的 時 間 比 half D1 (352x576) 或 quarter D1 (352x288) 長 一 倍 。
而 且 很 多 朋 友 在 壓 制 rmvb 檔 時 都 捨 不 得 用 高 一 點 的 bitrate, 把 影 片 很 多 細 節 (detail) 都 壓 失﹐這 時 再 將 影 片 畫 面 放 得 太 大﹐ 不 單 祇 不 會 顯 得 更 清 晰 ﹐ 反 而 會 顯 露 出 像 macroblocks 的 artifacts. 這 種 低 bitrate 的 檔 在 電 腦 上 看 是 很 不 錯 的 ﹐ 因 為 電 腦 用 的 video card (硬 件) 在 幫 助 解 像 ﹐用 軟 件 程 式 轉 檔 是 根 本 不 可 以 比 。
下 面 有 幾 個 用 細 一 點 的 解 像 指 令 例 子 ﹕
圖 A 和 B 的 解 像 度 均 是 352*288﹐圖 A 的 實 際 解 像 面 積 336*264 是 比 圖 B 的 336*272 小 一 點 ﹐比 較 適 合 家 裡 用 multi system NTSC 電 視 制。 NTSC 制 電 視 屏 幕 比 PAL 制 是 細 一 點 。
圖 C 是 PAL 的 half D1 尺 寸﹐ 336*544 也 可 以 調 整 到 336*536﹐ 相 對 下 ﹐ 在 AddBorders 的 指 令 也 要 修 改 至 (8﹐ 20﹐ 8﹐ 20)。
NTSC half D1 = LanczosResize(336,448), AddBorders(8,16,8,16)
圖 D 是 NTSC quarter D1 (352*240) 的 resize 指 令 。
如 有 需 要 另 行 調 過 任 何 尺 寸 時 ﹐ 儘 量 用 mod16 或 以 上 。 最 少 也 儘 量 不 低 于 mod4. Mod* 的 意 思 是 值 數 除 得 盡 的 ﹐譬 如 352÷16=22﹐ 是 沒 有 餘 數 。 16 就 是 mod16. [336÷16=21﹐544÷16=34﹐ 等 等 ]
所 有 指 令 都 可 以 寫 大 小 楷 英 文 ﹐ 沒 分 別 。
關 於 half D1 的 解 釋 ﹐ 雖 然 轉 完 片 後 在 電 腦 看 或 許 看 到 影 片 拉 長 了 ﹐ 但 因 為 在 轉 檔 時 轉 檔 程 式 會 在 mpeg 上 加 了 一 個 4:3 的 指 令﹐ 播 映 機 會 自 動 將 影 片 還 原 的 。
****************************************************************************************************
3/2 下面的兩個 syntax 我想有很多人會感興趣﹕
Crop
DirectShowSource("D:\Test.rmvb")
Crop(0,32,0,0)
AddBorders(0,16,0,16)
這個 (Crop ) 指令是將畫面頂上一直滾動的廢話給砍掉。位置是 Crop(左﹐上﹐右﹐下)。
切多少視乎個別的需要. 跟著在 AddBorders 指令裡加回去﹐每邊上下 平 均 加 回 所 減 去 的 pixels,
當要切的 pixels 需要加或減的時候﹐注意要保持 mod16 的倍數。 如果不能時候﹐可以在指令尾加一句 align=true.
就是 ﹕Crop(0,28,0,0,align=true). 這個 28 就是你想要砍掉的 pixels 數目。
注意﹕這個 crop 的指令是用于裁剪四邊週圍畫面﹐當需要裁剪右和下邊時﹐一定要用負數。
Example: Crop(0,0,0,-32), 這個是把畫面底剪去 32 pixels, 已用負數。只有 0 (不作任何剪裁) 時可以不用寫正負符號。
如果不加負數符號﹐這個指令會變了另一個功能。這個暫時不作討論。
=edited 3/2=
編輯原因﹕之前的例子對初用者比較複雜﹐已簡化指令。並添加注意事項。
DirectShowSource("D\Test.rmvb")
GetLeftChannel()
這個指令是只用左邊的音軌。 對付只要雙語檔其中的一條語音﹐非常簡便。
同樣如果寫這樣﹕GetRightChannel(), 就代表拿右邊的音軌。
***************************************************************************************************
3/3 以下兩個指令不常用﹐但需要起用來亦非常方便﹕
TrimDirectShowSource("D:\Test.rmvb")
Trim(0,250)
Trim 顧名思義是修輯或修剪的意思。 當有需要在影片中 cut 某一段片段時﹐可以用這個指令。
只不過 Avisynth 沒有預覽功能﹐只有在影片頭﹐尾﹐大概的修剪。如果要從影片當中剪取的話﹐要另外用 Virtualdub 這個軟體來幫助計算。
這裡只討論簡單的影片頭尾編輯功能。 括內第一個數字是代表影片的第一幀 ( first frame ) =0﹐最後一幀 ( last frame ) 是第 249 幀。 假設影片是 PAL 25fps 的話﹐也即是每 25 幀就是一秒﹐250 幀就是 10 秒。NTSC 是用每一秒 30 幀來算。
在影片中第 50000 幀到影片完的指令是 ﹕Trim(50000,-0). 注意是修剪時候需要下剪的前一幀﹐和最後一幀的後一幀作算。 假若想在影片尾加上 fade out (逐漸退淡)﹐在指令後加上如下﹕
DirectShowSource("D:\Test.rmvb")
Trim(50000,-0). Fadeout(25)
這樣就會在最後一秒時開始淡出和在影片尾加上一個全黑的 frame.
Subtitle
這個 Subtitle 跟平常所用的 Vobsub,textsub 等不同。 這是個很簡單的一個內設 filter﹐作用只可以用一句單行句子﹐ overlay 在畫面上。曾經有一位網友問可不可以在影片開頭加上一句 - 第幾集 - 的簡單辦法。 這個指令就可以實現。
DirectShowSource("D:\Test.rmvb")
Subtitle("Episode 1", align=5)
"Episode 1" ﹕ 可以改成你想的句子。
align=5 : 是字幕的位置。
Avisynth 在這個指令字體﹐大小﹐顏色默認 (default) 是﹕
字體= Arial
字形大小= 18
顏色=黃字捆黑邊
字體和字形都可以改﹐就改顏色比較複雜﹐因為是用 HEX 來計算﹐這裡不討論。
改字體﹕只要在 “Episode 1" 後﹐隨便那裡位置加上﹕font="Times New Roman" 或任何 True Type Fonts. 要注意是不能用中文字。
改大小﹕size=36 或任何數目。
當然﹐你可能祇想這句字顯露一個短暫時間﹐那指令就有加上﹕first_frame=1, last_frame=125
這個是用 PAL 25 fps 來計算﹐125 = 5 秒。
至於字幕的位置是依照電腦或普通計算機的數字鍵盤來排﹕
7 8 9
4 5 6
1 2 3
不過除了 5 ( 正中 ) 之外﹐其它的位置都太過貼近畫面的邊緣﹐會可能被電視機的 over scan 蓋掉。
下面是一個比較完整的指令﹕
DirectShowSource("D:\Test.rmvb")
Subtitle("Episode 1", first_frame=1, last_frame=125, font="Tahoma", size=36, align=5)
***************************************************************************************************
3/13 幾個簡單內建調校光暗、顏色和銳化的濾鏡
Color Brightness
Levels
這個本來是在RGB顏色空間運作的濾鏡﹐在影音檔常用的YUV顏色空間裡﹐祇能利用它的亮度 (Luma) 功能。
DirectShowSource(“D:\Test.rmvb”)
Levels(0, 1, 255, 16, 235, coring=false)
這是將片源的顏色 scale 從電腦屏幕用的 0~255 轉成為電視用的 16~235。
跟 ColorYUV(levels="PC->TV") 的指令相同。在 16 的數字可以試調改成 8﹐讓顏色較為深一點。
TweakDirectShowSource(“D:\Test.rmvb”)
Tweak(0,1,0,1)
括號內數字代表﹕
第一個數字 = hue﹐默認是 0.0 ﹐調校從 -180 至 +180, 負數是趨向綠色﹐加數是趨向紅色。
第二個數字 = saturation ﹐ 默認是 1.0 ﹐調校空間是 0.0 至 10.0
第三個數字 = bright , 默認是 0.0 , 調校空間是 -255.0 至 255.0
第四個數字 = contrast , 默認是 1.0 ﹐調校空間是 0.0 至 10.0
*所說的默認都是片源原來的度數﹐沒作任何改動。這個指令默認顏色 scale 是 16~235 (TV Scale)。如果覺得太亮﹐祇想稍微調整的話﹐可以在最後數字後面加上一句﹕coring=false。
DirectShowSource(“D:\Test.rmvb”)
Tweak(0,1,1,1,coring=false)
這個指令祇是將 bright 和 contrast 加強,不容許濾鏡自動調至 TV Scale (16,235)。不過如果片源本身已經是 TV Scale 的話﹐這個 coring=false 就變成無用。當有需要的時候﹐也可以加上﹕ColorYUV(Levels=“TV->PC”)
要注意的是每當調整 bright 的時候﹐也需要適當地調整 contrast.
Sharpening
Sharpen
這個簡單的銳化濾鏡功能很強﹐它跟 Virtual dub 和 ffdshow 裡的 unsharp mask plugin 功能相若﹐但運用時比起來更簡單直接。它的調校空間祇有 10 度﹐從 0.0 到 1.0。要小心運用﹐0.5 以上可能會出現反效果﹐令到效果更差。
DirectShowSource(“D:\Test.rmvb”)
Sharpen(0.3)