H.265是由JVT在2010年代所制定的標準,在MPEG-H之下(MPEG-H Part 2),也稱為MPEG-H HEVC( High Efficiency Video Coding),可在相同畫質下提供比MPEG-4 AVC標準更低的位元率。代表的編碼器為x265。x265有個很方便的編碼參數─preset,它可以幫助我們快速設定x265編碼時所用的眾多參數。依照編碼速度的不同,preset由快到慢可以分為:ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowplacebo這9個等級,原則上愈慢則會有更好的壓縮效果或是畫質。但x265的9種preset到底快是能多快,慢是能多快?快的時候壓縮效果有多差?而慢的時候壓縮效果有多好呢?



本篇文章將會使用一個解析度為1920x1080、FPS為24、像素格式為yuv420p、長度為30秒的無損壓縮的片源,來實際使用x265編碼器進行轉檔測試。

測試用的影片檔

這個測試用的影片檔案來自於這個網站提供的Big Buck Bunny未壓縮影片檔。筆者擷取了其中的4:30~5:00的片段,其平均位元率為597197Kbps。

接著使用FFmpeg,以x265將其無損壓製成MP4檔案,使用的指令如下:

ffmpeg -i 'Big Buck Bunny.y4m' -vcodec libx265 -x265-params lossless=1 -preset veryslow 'Big Buck Bunny.mp4'

可以透過以下連結下載壓製好的檔案:

https://file.magiclen.org/index.php?file=426967204275636b2042756e6e792e726172

編碼器

透過FFmpeg 4.2.1來操作x264編碼器,x264的版本為3.2

畫質差異分析工具

為了比較影片檔案之間的畫質差異,筆者使用了FFmpeg來計算SSIM,作法可參考這篇文章

測試結果數據

x265-preset

x265-preset

x265-preset

測試結論

觀察結果數據,可以發現到以下幾點:

  • ultrafastfast所需的編碼時間差異並不大。fastmedium的編碼時間有明顯的增加。而slow或是比其更慢的preset,編碼時間會比預設的medium還要大幅度地有感上升。
  • CRF愈高編碼時間會愈短。
  • ultrafastsuperfast的位元率偏低,無法保證有CRF的正常畫質。
  • 愈慢的preset有愈好的畫質。
  • placebo的編碼時間是veryslow2.4倍左右,然而placebo的畫質和位元率並沒有明顯比veryslow來得好,究竟該不該用placebo就見仁見智囉!
  • fastmedium兩者都是編碼速度、畫質、影片壓縮率都有良好平衡的preset。而slowerveryslow的畫質和位元率差不多,前者卻比後者的編碼速度還要快上不少,考量到需花費編碼時間,選擇veryslow的效益並沒有比slower好。

那麼10-bit影片呢?

上面是8-bit影片的轉檔測試情形,但實際上H.265更多被應用於編碼10-bit影片。根據這篇文章找出的x265 10-bit常用CRF範圍來進行10-bit影片的轉檔測試,結果數據如下。

x265-preset

x265-preset

x265-preset

我們可以看出10-bit影片的編碼速度要比8-bit影片要來得慢一些,且在相同畫質下,10-bit影片的位元率比8-bit影片還要來得低。另一方面,整體來看,10-bit和8-bit的數據資料分佈情形是差不多的,所以它們的測試結論都是相同的哦!