2015年9月30日 星期三

在 synology DSM 5.2 下利用 docker 將影片 DTS 音源轉為 AC3

最近發現用 Apple TV 播 Video Station 的影片,音效非常棒。
可惜 Video Station 因為版權的因素,所以無法支援 DTS Stream。
網路上找了一些做法,基本上就是安裝第三方支援 DTS 的 ffmpeg 來解決這個問題,不過好像只編譯到 5.0,在更新的就沒有了。

想了一想,DSM 5.2 支援 docker,何不利用 docker 來跑 ffmpeg,省去每次都要為新版重 build 的困擾呢?

在蒐集 ffmpeg 的過程中,發現有人撰寫了 mkvdts2ac3.sh 這個工具,讓我們可以更方便更安全的將 DTS 音訊轉換為 AC3。

根據他的說明頁,需要以下三個東西:
何不將這三個包裝成一個 image,方便日後使用?

於是就包了這個 hialan/mkvdts2ac3 docker hub 作為自己的處女作。

Docker 如何使用在這裡就不多說了,這邊網誌主要是要說明做出來的東西如何使用。
如果想要了解的可以看原始的 github ,裡面有 Dockerfile 可以參考。

要注意的是,這個 container 有 export /data 這個掛載點,就可以直接從 container 處理 host 裡面的影片摟。

首先當然是取得這個 image
$ docker pull hialan/mkvdts2ac3
然後切換到所在目錄下面,並建立一個工作目錄 tmp
$ cd "/path/to/film/"
$ mkdir tmp
接著就是執行轉檔啦
$ docker run -it --rm=true -v "`pwd`":/data hialan/mkvdts2ac3 -w /data/tmp -n /data/film.mkv

其中 /data 是 container 裡面的目錄,下給 docker 的指令都必須要以 container 裡面的路徑為準。
-v 是要把我們目前所在目錄 mount 到 /data 上面
-w 是 working space,中間會擷取 wav 等暫存檔會放這裡
-n 是指不保留原本的 DTS track
--rm=true 代表指令執行完畢以後,就把執行的 container 給清掉
/data/film.mkv 是我們要轉換的檔案



接下來要說明怎麼在 DSM 下面用這個。
由於使用網頁的介面只能跑 daemon 模式,要用 command line 也只能用 sshd 連線啦。

所以需要設定以下:
  • 開啟 SSH 
  • 允許 root 由 SSH 登入
接著再照上面的說明執行就好摟。