自宅にプレステ (PlayStation) などのDLNA対応機器がある、そしていろいろな動画ファイルを保有しているあなたにとって、これを使わない手はないでしょう。
Contents
<li>
<a href="#i"><span class="toc_number toc_depth_1">4</span> コンテナイメージのアップデートについて</a>
</li>
Universal Media Server とは
Universal Media Server (UMS) は、パソコンやサーバーに格納している動画ファイルを、PS3経由でテレビ視聴するためのソフトウェアです。
タイトルはPS3としていますが、技術はDLNAという標準仕様ですのでPS4やその他DLNA対応機器で閲覧できるはずです。現在、自分の環境ではPS3しか手元にないのでこのようなタイトル設定をしています。また、多くの動画ファイルフォーマットに対応しているのですが、近年は iPhone で撮影した動画をはじめmp4/m4vファイル等(H.264)ばかりを使っていますので、他のコーデックでどう動くか確認が不十分です。
似たようなソフトウェアに PS3 Media Server (PMS) というものがあり、ここ数年間はこれを用いて自宅での動画視聴環境を整えていたのですが、PMSの開発は随分前に終了してしまっています。とはいえ、”動画ファイル(mp4ファイル)を視聴する” というだけの目的であれば開発終了した PMS でも必要十分だったので特に不満なく使い続けてきました。
そうしているうちに UMS として名前を変え、別プロジェクトでオープンソース化されていました。今回、自宅サーバー老朽化に伴いソフトウェア構成を見直しているので、どうせならば最新化しようということで選定してみることにします。
Media Server の比較資料があります:
Universal Media Server | Comparison of Media Servers
UMSの方が圧倒的に充実してはいるのですが、自身の利用目的は所詮 “mp4ファイルを視聴したい” のみなので、そうなると変化があまり感じられないのが本音。まだ構築直後で大量にある UMS の設定項目も十分把握できていないため、もう少し様子見したいと思います。
UMS実行環境の構築方法
ここでは、Linuxサーバー内にある動画ファイルをDLNA配信する目的で構築します。
ちなみに Windows や macOS に保存してある動画ファイルを配信したい場合でも、各OS向けの実行プログラムも提供されていますので 同様のことが可能です。GUIツールが付属するはずですので、より手軽で使えるのではないかと思います(試していません)。
起動までの手順は(こちらに記載の通り UniversalMediaServer/INSTALL.txt)。
- JVM および メディア関連のパッケージをインストールする
- UMSをダウンロードする
- tgzを展開する
- コンフィグを修正する
- 格納されている
./UMS.sh
で起動する
これだけなのですが、個人的にはメディア系のソフトウェアを多用途サーバーに混在させたくないことや(ffmpegやらコーデックやら色々依存関係が多い)、起動スクリプトの準備が面倒くさいといった理由から、Dockerコンテナで動かすことにしました。
Dockerfile
作成したコンテナは GitHub に作成済みです。
dobassy/docker-ums: Dockerfile to build a Universal Media Server (UMS) container image.
Docker-UMS 動作仕様のポイント
詳細はレポジトリのREADMEに記載の通りですので割愛します。起動しているホストのNICが必ずしも eth0
ではないので、うまく動作しない場合は疑ってみてください。
先の記事(*1)で Netatalk によるファイルサーバーを作成しましたが、ここで共有するディレクトリと、今回のUMSがDLNA配信する際に参照するファイル群のディレクトリを合わせておくと、テレビで観たい動画があれば Finder からコピーして手軽に大画面視聴できるかと思います。
こういう使い方を想定しています。もちろん、ファイルサーバーコンテナはコンテナである必要はなく、ホストで動くsamba等なんでも構いません。

(*1)DockerでmacOSファイル共有サーバをお手軽構築 - @dobassy 技ログ
DLNA配信に利用するメディアファイルのパス指定は、環境変数 X_UMS_FOLDERS
にて設定することができます。
Entrykit で環境変数によるコンフィギュレーションを簡単に
UMSの設定は環境により差が生じやすいので、docker run
時の環境変数でチューニングできるようにしたい思いがありました。よくあるコンテナ作成テクニックとして、コンテナ起動時の初期化スクリプトで sed
して置換をがんばる秘伝のタレをよく見かけますが、これは面倒くさい…
そんななか、たまたま Entrykit (Entrypoint tools for elegant, programmable containers) というプログラムに出会いました。何ができるのかというと、このまとめ紹介記事がとてもわかり易いです。
設定ファイルを任意に変数化でき、環境変数の有無に応じて上書き or デフォルト値の反映が柔軟に行えるようになります。これがあれば、シンプルな用途であれば秘伝のタレスクリプトを作らなくてもよくなりそうですね。
コンテナイメージのアップデートについて
(個人的には、)この手のソフトウェアは一度動かして視聴環境が整うと新たな機能ニーズが発生しづらいことと、自宅内サーバーで稼働するためセキュリティ懸念もだいぶ小さいことから、積極的なメンテナンスは予定していません。たびたび何か試してみたくなると思いますので、不定期での更新になると見込んでいます。
今のところ Dockerfile での公開しかしていませんが、Docker Hub への登録は試してみようと思っています。
では、よい動画視聴ライフを。