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 登入
接著再照上面的說明執行就好摟。

2015年7月25日 星期六

DSM 5.2 fsck

之前有同事的 Synology 硬碟忽然離線,經過搶修以後,發現是磁區有錯,日積月累最後終於壞到磁碟分配表,最後就再見了。

幸好他的資料在手動 fsck 之後,又都找了回來,不過目錄都還要重新整理一遍,也結束了兩天提心吊膽漫長的等待。

所以平常磁碟檢查還是很重要的,無論你是 RAID 多少,有多少顆容錯,久久還是檢查一下。

我在 DSM 裡面尋找磁碟檢查相關的工具,結果發現找不太到,只好請出 Google 大神解惑。

找到這一篇:  Fix Synology DS412+ DSM 5.2 file system

大意如下:
  • 開啟 SSH 連線
  • 執行 syno_poweroff_task -d
  • 將 volumn1 掛回去
    •  vgchange -ay
    • 會顯示 
       1 logical volume(s) in volume group "vg1000" now active
  •  執行 fsck  檢查
    • e2fsck -nvf -C 0 /dev/vg1000/lv
  •  如果有問題,修復硬碟
    • e2fsck -y /dev/vg1000/lv