:::

Linux的多媒體影片格式轉檔工具:HandBrake / HandBrake: A Video Transcoder in Linux

2-cover-Linux_HandBrake_HandBrake_A_Video.png

晚安,大家最近在吃什麼呢?這裡是煩惱工作環境遲遲無法好好配置完成的布丁。

在Windows作業系統裡轉換影片時,很多人常用的是格式工廠(Format Factory)。而對Linux作業系統的使用者來說,HandBrake則是轉換影片格式的第一首選。使用HandBrake轉換影片時,我們不需煩惱要轉換的影片格式參數,而是可以直接使用它提供了多種使用情境的預先配置檔案。例如我想要在Android或iPhone上播放,或是我想要把它作爲Gmail附件,請它在影片長度和檔案大小間取得平衡,HandBrake都可以幫你直接處理。不僅如此,HandBrake也是Linux、Windows和MacOS的跨平臺工具。接下來就讓我們來認識認識HandBrake這個強大又好用的多媒體影片格式轉檔工具吧。


不過在文章開始之前,我們還是先來個沒工商版面吧。

沒工商版面:可解釋機器學習:黑盒模型可解釋性理解指南 / Interpretable Machine Learning

9787121406065.jpg

(圖片來源:天瓏網路書店)

可解釋機器學習(Interpretable Machine Learning)是由Christoph Molnar所撰寫的一本機器學習進階指南,並以CC授權提供線上閱讀電子書。有別於現今人工智慧主流的黑盒演算法,作者聚焦於探討機器學習「可解釋性」(interpretability)的價值,指出人類不光只是要正確的預測,還希望能從模型的結果中獲取意義和知識。舉例來說,銀行建置的AI能夠自動審核信用卡申請通過與否是很不錯,但如果我被AI拒絕了,那我會更希望它給我個可以能夠讓人信服的理由。不僅如此,只有當我們剖開黑箱模型、找尋可解釋性的知識時,機器學習模型才能進行調整、修復與偏見的檢測。

該書介紹了本身具備可解釋性的模型,以及從特徵和案例(example-based)來剖析黑箱模型的分析方式。該書的網路版還加上了類神經網路的可解釋性(Neural Network Interpretation)一章,對圖像和文字資料提出了不同的分析方法。該書的介紹中引用了大量學術論文,並整理了相關的Python和R的套件。不論是對於學術研究還是實務應用來說,都相當具有參考價值。

綜合以上所述,可解釋機器學習(Interpretable Machine Learning)一書讓我喜愛的三大特色如下:

  1. 從可解釋性的觀點重新認識機器學習模型:模型從資料中歸納出模式,而我們則從模型上學習知識。
  2. 提供學術研究的引文索引,以及實務應用的工具指引,相當具有參考價值。
  3. 以CC授權可免費線上閱讀,而朱明超翻譯中文版並於GitHub供人自由下載。

如果你對可解釋機器學習(Interpretable Machine Learning)一書感到興趣的話,可以直接在瀏覽器上閱讀作者Christoph Molnar的英文版朱明超翻譯的中文版,或是購買紙本書籍


好的,讓我們結束沒工商版面,會到今天要講的主題吧。

關於HandBrake / About HandBrake

HandBrake_Icon.png

(圖片來源:維基百科)

HandBrake一開始是作者Eric Petit在2003年開發用來將DVD轉檔的工具。現今把許多原本只能用指令列操作的第三方聲音和影片的工具庫,包括FFmpegx264x265等等,整合成簡單、容易使用的圖形化介面。目前最新版是2021年7月18日發佈的1.4。

HandBrake是開放原始碼專案,採用GPL第2版授權。原始碼在GitHub上保存。以下是HandBrake的相關連結:

圖示 / Icon

What_is_it_-_Hand_brake.jpg

(圖片來源:Haynes)

雖然HandBrake的圖示是調酒和鳳梨,不過根據韋氏字典,Hand Brake一詞似乎是指可以用手緊急停止裝置的拉桿,包括車上的手剎車。不知道爲什麼HandBrake使用調酒和鳳梨作爲圖示。如果有人知道的話,不妨在下面留言處分享你知道的線索吧。


在Ubuntu中安裝HandBrake / Install HandBrake in Ubuntu

DeepinScreenshot_select-area_20210817001619b.png

HandBrake的下載頁面提供了macOS、Windows和Linux的下載方式。它除了在Linux上提供Flatpak應用程式虛擬化格式供人下載之外,在HandBrake文件裡也說明了使用apt-get安裝的方法。

首先,我們要將HandBrake的套件來源加入到Linux作業系統中。這邊我們會使用apt-add-repository工具。如果你沒有此工具,請先安裝software-properties-common套件。指令如下:

sudo apt install software-properties-common

再來使用apt-add-repository工具將HandBrake的套件來源加入到Linux作業系統中,指令如下:

sudo add-apt-repository ppa:stebbins/handbrake-releases

然後更新套件清單:

sudo apt-get update

最後就是安裝HandBrake。這邊我們要安裝它的命令列套件handbrake-cli與圖形化介面handbrake-gtk,指令如下:

sudo apt-get install handbrake-cli handbrake-gtk -y

Screenshot_from_2021-08-17_00-30-19a.png

安裝完成後,你就可以在Applications裡面找到HandBrake了。


轉換影片格式 / Convert Video

DeepinScreenshot_select-area_20210817003509.png

開啓HandBrake後,我們就來進行影片格式的轉換吧。

影片範例 / Video file

DeepinScreenshot_select-area_20210817004113.png

這邊我們用的例子是Blender基金會於2008年開放授權的動畫電影大雄兔(Big Buck Bunny)。大雄兔爲10分鐘的短片網站上具有多種不同的格式供人下載,這也是許多影片播放器展示時播放的影片。

大雄兔網站上的10分鐘完整檔案相當的大。這裡我們不使用原版的影片,而是使用大雄兔1080p格式下的前5秒影片。影片可從GitHub下載:

DeepinScreenshot_select-area_20210817004857b.png

讓我們先來看看video.mp4的檔案大小。在1080p解析度下,video.mp4檔案大小爲1.9MB。爲了讓較低階的Android設備也能播放該影片,接下來讓我們用HandBrake來轉換它的影片格式吧。

1. 開啓HandBrake / Open HandBrake application

2021-0817-074652.png

首先,我們開啓HandBrake,按左上角的「Open Source」開啓檔案。

2021-0817-075032.png

載入檔案之後,我們可以看到HandBrake在Soruce那裡列出了該影片的格式資訊:「video, 1920x1080 (1920x1080), 16:9, 24 FPS, 1 Audio Track, 0 Subtitle Tracks」。這可以讓我們瞭解影片的基本資訊。

2. 選擇目標格式 / Select target format

2021-0817-075617.png

接著我們從預先設定好的影片格式裡面來選擇要轉換的目標。請按下Preset,裡面可以看到General、Web、Devices、Matroska (多媒體封裝格式)、Production五個類別。由於我們是要將影片轉換成Android設備可以播放的格式,讓我們進入「Devices」類別中。

2021-0817-075959.png

你可以看到HandBrake已經爲相當多裝置預先配置好了影片格式的參數,包括Android、Apple、Chromecast、Amazon Fire、Playstation、Roku (一種電視棒)。每種裝置底下又有不同的解析度可供選擇。舉例來說,「Android 480p30」,表示該影片格式是Android裝置可以播放,解析度是480p (也就是垂直解析度爲480),每秒幀數是30 FPS。

由於我們要轉換成低階Android也能播放的影片格式,在此讓我們選擇「Android 480p30」吧。

2021-0817-080942.png

這時候可以看到下面的影片輸出設定有所改變。從這裡我們可以看到預先配置「Android 480p30」的影片格式爲H.264、聲音格式爲AAC。原本是1080p的解析度,也預計會被轉換爲480p,對應到16:9就是720x480解析度。

3. 設定儲存檔案名稱與資料夾 / Filename and destination

2021-0817-081223.png

最下面的「Save As:」可以設定輸出的檔案名稱,預設是使用原本的檔案名稱「video.mp4」配上預訂要轉換的影片格式,就成爲了「video.mkv」。

而右邊的「To:」則可以設定儲存的資料夾,這邊我是設定儲存在Linux的暫存資料夾「/tmp」裡。

4. 開始轉換 / Start to convert

2021-0817-111000.png

設定完成後,我們可以按下上方的「Start」按鈕開始轉換。

2021-0817-110919.png

等待一段時間,HandBrake轉換完成後就會跳出通知。

5. 查看檔案 / Output video

DeepinScreenshot_select-area_20210817082756b.png

打開前面設定的儲存資料夾,我們可以看到「video.m4v」已經放在此處。經過HandBrake的轉換,大雄兔5秒影片已經從1.9MB的「video.mp4」轉換成466.4KB的「video.m4v」。

DeepinScreenshot_select-area_20210817082845.png

讓我們打開「video.m4v」影片來看看。可以發現影片解析度已經從原本的1080p縮小爲480p。

這樣我們使用HandBrake轉換影片格式的任務就完成囉。


其他功能 / Features

2021-0817-125226.png

在前面「2. 選擇目標格式」中,我們使用的是預先設定的影片參數「Android 480p30」,不過選擇了預先設定的參數後,我們還可以進一步針對影片尺寸(Dimensions)、濾鏡(Filters)、影片(Video)、聲音(Audio)、字幕(Subtitles)、章節(Chapters)、影片資訊(Tags)各種細節來做調整。

DeepinScreenshot_select-area_20210817123355.png

上圖是影片尺寸(Dimensions)的設定畫面。如果我們修改了影片的比例,例如從16:9改成4:3,那我們可以使用裁切(Cropping)來調整畫面。

DeepinScreenshot_select-area_20210817123556.png

上圖是濾鏡(Filters)的設定畫面。可以設定隔行掃描過濾(Detelecine)、交錯偵測(interlace detection)、反交錯(deinterlace)、去區塊(deblock)、降噪濾鏡(denoise filter)、銳利化濾鏡(sharpen filter)、轉向濾鏡(rotate filter)、灰階化(grayscale)。

DeepinScreenshot_select-area_20210817124530.png

上圖是影片(video)的設定畫面。可以設定編碼器(video encoder)、幀率(framerate),以及各種編碼的參數。

DeepinScreenshot_select-area_20210817124825.png

上圖是聲音(audio)的設定畫面。在這裡我們設定多個音軌,也可以爲各個音軌的聲音進行編碼設定。

DeepinScreenshot_select-area_20210817124948.png

上圖是字幕(subtitles)的設定畫面。在這裡我們可以設定影片中的多個字幕,也能對字幕的細節進行設定。

DeepinScreenshot_select-area_20210817125302.png

上圖是章節(Chapters)的設定畫面。這裡我們可以爲影片設定章節,標示章節的開頭與結尾。

DeepinScreenshot_select-area_20210817125442.png

最後上圖是影片資訊(Tags)的設定畫面。這裡可以設定影片的標題、作者、敘述等資訊。


結語 / In closing

2021-0817-133834.png

我本來是Windows的使用者。雖然我知道Linux已經有很多可以使用的圖形化應用程式,但下意識還是認爲Linux還是應該會偏向用指令操作。這次HandBrake用下來,我非常驚訝Linux居然已經有這麼成熟、好用的應用程式,而且它也是Windows和MacOS都能操作的跨平臺工具。MacOS的使用者可以參考電腦王阿達的「Handbrake極為強大的免費影片轉檔軟體工具!耗費13年正式版終於上線」一篇。Windows的使用者也可以看看阿榮福利味「HandBrake 1.4.0 免安裝版 - 影片轉MKV或MP4免費自由軟體」的介紹。


那麼這次多媒體影片格式轉檔工具HandBrake的教學就到這裡了。寫到最後,我來問個使用影片轉檔之前的問題:

你都是用什麼方式觀看影片呢?

  • A. 我都用線上串流觀看影片,例如YouTube、NetFlix。
  • B. 我都用電腦內的影片檔觀看影片,例如MP4、MKV。
  • C. 我都用光碟觀看影片,例如DVD、藍光。
  • D. 我都用其他方式看影片,留言說說你的做法吧。

歡迎在下面的留言處跟大家分享你的想法。你的意見都是我繼續分享的動力喔!

如果你覺得我這篇實用的話,請幫我在AddThis分享工具按讚,或是將這篇分享到Facebook等社群媒體吧!想在社群媒體追蹤我的話,歡迎到我的Facebook粉絲專頁「布丁布丁吃什麼?」按個讚喔!

不知道這篇文章有沒有讓你吃到什麼有趣的東西呢?我是布丁,期待下次見!