在視訊編碼的領域中,H.264 是大家比較常聽到的名詞,而另一個正在發展中的 VP8 技術也不容小看,而且有 Google 的加持。所以小編在研究完 VP8 的技術之後,也實際動手測試了 VP8 的編碼效果,發現它和 H.264 比較起來,不但不會落於人後,在低流量的應用上,還可以壓制 H.264。
編碼請用libvpx
筆者找了很多轉檔軟體來測試VP8的編碼效果,不過都找不到滿意的方案,轉出來的影片效果都不是很好,因此還是以libvpx編碼器進行轉檔,雖然它轉出來的效果很不錯,但是麻煩的是,它沒有圖形化介面,因此需要透過指令列(command line,也就是命令提示字元)操作。
讀者可以在http://ffmpeg.zeranoe.com/builds/這邊找到最新的ffmpeg程式,下載後在解開壓縮檔中bin資料夾中的ffmpeg.exe,然後以指令列進行操作。首先必需在指令列終端機中,切換到ffmpeg.exe所在的資料夾位置,然後以輸入參數的方式,控制轉檔時的相關設定。
編碼參數範例
筆者在這邊以固定品質編碼為範例,它可以在較短的編碼時間中,獲得較佳的畫質,但是它的問題是無法確認轉出影片的檔案大小,從筆者的經驗來看很少發生影片爆肥的情況,所以筆者還是推薦這種編碼方式。
固定品質參數範例
ffmpeg.exe -y -i "C:\Movie\Input.mkv" -f webm -codec:v libvpx -crf 20 –v:b 60000k -quality best -codec:a libvorbis -b:a 128k "C:\Movie\Output.webm"
在參數中Input與Output是輸入、輸出檔案的位置及名稱,讀者可自行更改引號中的路徑,-f webm代表使用webm封裝,-codec:v libvpx、-codec:a libvorbis分別表示以libvpx、libvorbis做為影音編碼格式。
控制影片的重要參數是「-crf 20 –v:b 60000k」這段文字,前方的crf代表品質參數,數字越小品質越好,推薦設在20到25之間。v:b在這邊則代表視訊最大資料流量,因為crf參數可以發揮控制流量的效果,所以筆者建議不要在v:b中再次限制資料流量,因此可將此參數設一極大數值,讓它不會影響編碼即可。-b:a則是音訊資料流量,若無特殊需求,128~196是可以兼顧品質與檔案大小的選擇。
品質足以取代H.264
在實際測試時,筆者以libvpx以及x264編碼器,分別將1080p的片源,轉成流量為3500kbps的1080p影片,以及流量為500kbps、解析度為960 x 544影片,分別測試在一般及低流量下的編碼表現。
▲在這一組圖中,可以看到VP8的圖像只是稍微模糊,但是H.264的圖像已經完全「馬賽克化」了。
▲這次VP8更厲害了,畫面十分正確且清晰,H.264在右上角不但出現圖像錯誤,馬賽克情況也頗嚴重。
筆者之所以不使用固定品質壓製影片,其主要的考量是因為無法確認2種編碼器,在相同的定品質參數下,是否能夠壓出品質一樣的影片,因此還是以變動流量方式進行測試。結果很明顯地,VP8在低流量時可以把H.264打得滿地找牙,然而在高流量時差距就沒有那麼大了。在此只刊出低流量測試圖片,完整圖片請至 http://pcadv.in/IsYlf0 下載。