近乎lossless video edit & streaming

人眼有將最低 50fps 密度嘅相片變成暢順影片嘅特質,相片 file size 因為唔算大,有 lossless format 例如 .png,但影片需要高效低失真嘅 lossy format 保持可接受bitrate,尤其是透過 web 做 video streaming 嘅時侯對 bitrate 嘅控制更加嚴荷。

.mkv files in file explorer

常見嘅 video format 例如 .avi 或者 .mp4 只係 container 而唔係壓縮技術,主要作用係定義影片播放時嘅 aspect ratio 同 fps 或者包起音源同字幕。open source 嘅 .mkv 有相對多嘅工具,例如 mkvtoolnix 可以將絶大部份 video format 以 batch 形式一次過轉曬做 .mikv。.mkv 仲有個好處係可以喺 file explorer 顯示用咩壓縮形式,壞處包括 Adobe Premiere Pro 唔 support,但只要喺 import 之前將 .mkv rename 做 .avi 就可以。

YouTube 會將影片用 VP9 壓縮技術壓做 .webm 做 video streaming,但 .webm 唔可以裝 H.264 或者 H.265 壓縮技術嘅影片,而且同 .mp4 一樣缺乏工具。如果想將影片放喺自架 web server 做 video streaming,一般做法都係用 .mp4 包 H.264。.webm係基於 .mkv 而修改,如果想 stream .mkv,只要喺 web server 例如 Apache 嘅 mime.types file 加番 “video/webm mkv” 就可以。

VirtualDub2 > filters > filter: Deinterlace

Interlace 影片唔適合做 video edit ,一定要轉做 progressive,而且 software deinterlace 既畫質比 real-time hardware deinterlace 好。Open source 嘅 VirtualDub2 係相當唔錯嘅 video encoder,support 絶大部份 file format,而且可以加 filter。NTSC default 係 29.97i fps,有部份可以做 double frame rate 令影片更加暢順,Yadif algorithm 係首選,絶大部份影片都係 top field first;只要喺 VirtualDub2 個 player step forward 逐格睇就可以睇倒最終輸出效果。如果個 .mkv 寫住 59.94fps,絶大部份都唔可以做 double frame rate,反而要喺 Video frame rate control 做 frame rate conversion,清除一半空格 encode 番做 29.97fps。

YUV Chroma subsampling

YUV 4:4:4 同電腦 mon 嘅 RGB 数据量一樣,大部份影片都係用 YUV 4:2:0 8bit Chroma subsampling,光度嘅数据量係8bit,加彩度数据量由 YUV 4:4:4 嘅両組 8bit 減到 4bit,整体坑左一半数据量 。以 1920*1080 FHD 27.5 寸 mon 計,resolution 係 80ppi,如果係 3840*2160 4K 就係160ppi ,同雜誌差唔多;現時好多手机 mon 都超越人眼視力極限嘅大約 320ppi。因為主流嘅 mon 都只係 FHD,如果影片有 4K resolution,可以喺VirtualDub2 加 filter 將 4K 4:2:0 轉為 FHD 4:4:4 用盡個 mon 嘅播放能力。

VirtualDub2 > save file > video compression
VirtualDub2 > save file > video compression > x264 configuration

VirtualDub2 係用 x264 做 H.264 encode,可以 force keyframe 密度,大約預一秒一個 keyframe 方便剪片。x264 嘅 Rate control 用 CRF 10 係唔錯嘅近乎 lossless 壓縮程度,令 FHD 50fps 影片嘅 bitrate 最高唔會超過 100Mbps。Encode 需時雖然長,但喺 encode 緊嘅時侯部電腦仲可以做其他要求唔高嘅 task,所以 x264 壓縮速度唔應該低過 Medium,令 file size 可以細啲。

SolveigMM Video Splitter 同埋免費嘅 AVI TRIMMER+ 可以喺啲 keyframe 簡單做 lossless 嘅剪接,剪完之後唔需要再 encode 慳唔小時間。好多時高 bitrate 嘅 H.264 錄影机啲 keyframe 都夠密,可以直接用 Video Splitter 剪,而 AVI TRIMMER+ support 既 format 比較小;用 x264 encode 過嘅片應該無問題。

Reference: