Universal Media Server (DLNAサーバー)のコンテナ化で動画環境を構築

自宅にプレステ (PlayStation) などのDLNA対応機器がある、そしていろいろな動画ファイルを保有しているあなたにとって、これを使わない手はないでしょう。

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 の比較資料があります:

UMSの方が圧倒的に充実してはいるのですが、自身の利用目的は所詮 “mp4ファイルを視聴したい” のみなので、そうなると変化があまり感じられないのが本音。まだ構築直後で大量にある UMS の設定項目も十分把握できていないため、もう少し様子見したいと思います。

UMS実行環境の構築方法

ここでは、Linuxサーバー内にある動画ファイルをDLNA配信する目的で構築します。

ちなみに Windows や macOS に保存してある動画ファイルを配信したい場合でも、各OS向けの実行プログラムも提供されていますので 同様のことが可能です。GUIツールが付属するはずですので、より手軽で使えるのではないかと思います(試していません)。

起動までの手順は(こちらに記載の通り UniversalMediaServer/INSTALL.txt)。

  1. JVM および メディア関連のパッケージをインストールする
  2. UMSをダウンロードする
  3. tgzを展開する
  4. コンフィグを修正する
  5. 格納されている ./UMS.sh で起動する

これだけなのですが、個人的にはメディア系のソフトウェアを多用途サーバーに混在させたくないことや(ffmpegやらコーデックやら色々依存関係が多い)、起動スクリプトの準備が面倒くさいといった理由から、Dockerコンテナで動かすことにしました。

Dockerfile

作成したコンテナは GitHub に作成済みです。

docker-ums - Dockerfile to build a Universal Media Server (UMS) container image.

Docker-UMS 動作仕様のポイント

詳細はレポジトリのREADMEに記載の通りですので割愛します。起動しているホストのNICが必ずしも eth0 ではないので、うまく動作しない場合は疑ってみてください。

先の記事(*1)で Netatalk によるファイルサーバーを作成しましたが、ここで共有するディレクトリと、今回のUMSがDLNA配信する際に参照するファイル群のディレクトリを合わせておくと、テレビで観たい動画があれば Finder からコピーして手軽に大画面視聴できるかと思います。

こういう使い方を想定しています。もちろん、ファイルサーバーコンテナはコンテナである必要はなく、ホストで動くsamba等なんでも構いません。

UMSコンテナの配置例

(*1)

自宅のサーバーが古くなり、いつ故障してもおかしくない状況なので少しずつ移行をはじめています。新サーバーでは原則ルールとして Docker コンテナでの再構築に取り組んでいるため、それぞれの機能をメモしていこうと思います。 今回は Netatalk について。 Netatalk とは Netatalk - Wikiped...

DLNA配信に利用するメディアファイルのパス指定は、環境変数 X_UMS_FOLDERS にて設定することができます。

Entrykit で環境変数によるコンフィギュレーションを簡単に

UMSの設定は環境により差が生じやすいので、docker run 時の環境変数でチューニングできるようにしたい思いがありました。よくあるコンテナ作成テクニックとして、コンテナ起動時の初期化スクリプトで sed して置換をがんばる秘伝のタレをよく見かけますが、これは面倒くさい…

そんななか、たまたま Entrykit (Entrypoint tools for elegant, programmable containers) というプログラムに出会いました。何ができるのかというと、このまとめ紹介記事がとてもわかり易いです。

# はじめに あなたは Docker イメージを作る際に `start.sh` や `startup.sh` というファイルを作った経験はないだろうか。「Dockerfile の `CMD` だと 1 コマンドしか書けないから、シェル...

設定ファイルを任意に変数化でき、環境変数の有無に応じて上書き or デフォルト値の反映が柔軟に行えるようになります。これがあれば、シンプルな用途であれば秘伝のタレスクリプトを作らなくてもよくなりそうですね。

コンテナイメージのアップデートについて

(個人的には、)この手のソフトウェアは一度動かして視聴環境が整うと新たな機能ニーズが発生しづらいことと、自宅内サーバーで稼働するためセキュリティ懸念もだいぶ小さいことから、積極的なメンテナンスは予定していません。たびたび何か試してみたくなると思いますので、不定期での更新になると見込んでいます。

今のところ Dockerfile での公開しかしていませんが、Docker Hub への登録は試してみようと思っています。

では、よい動画視聴ライフを。

その他

本記事は、2016/9/18に執筆した記事 動画ファイルをPS3経由のテレビでお手軽再生したい (Universal Media Server) – exlar’s IT note の内容を一部メンテナンスして公開したものです。

スポンサーリンク
ad_336x280
ad_336x280

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
ad_336x280