読者です 読者をやめる 読者になる 読者になる

exlar's IT note

ITやスマートデバイスを中心とした趣味情報の寄せ集め

動画ファイルをPS3経由のテレビでお手軽再生したい (Universal Media Server)

Universal Media Server とは

Universal Media Server (UMS) は、パソコンやサーバーに格納している動画ファイルを、PS3経由でテレビ視聴するためのソフトウェアです。

タイトルはPS3としていますが、技術はDLNAという標準仕様ですのでPS4やその他DLNA対応機器で閲覧できるはずです。現在、自分の環境ではPS3しか手元にないのでこのようなタイトル設定をしています。おそらく多くの動画ファイルフォーマットに対応しているのですが、近年は iPhone で撮影した動画をはじめmp4ファイルばかり扱っていますので、他のコーデックでどう動くか確認不足です。

似たようなソフトウェアに PS3 Media Server (PMS) というものがあり、ここ数年間はこれを用いて自宅での動画視聴環境を整えていましたが、PMSの開発は随分前に終了してしまっています。とはいえ、"動画ファイル(mp4ファイル)を視聴する" というだけの目的であれば開発終了した PMS でも必要十分だったので特に不満なく使い続けてきました。

そうしているうちに UMS として名前を変え、別プロジェクトでオープンソース化されていました。今回、自宅サーバー老朽化に伴いソフトウェア構成を見直しているので、どうせならば最新化しようということで選定してみることにします。

Media Server の比較資料があります: Comparison of Media Servers

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

UMS実行環境の構築方法

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

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

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

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

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

作成したコンテナは GitHub に作成済みです。
exlair/docker-ums: Dockerfile to build a Universal Media Server (UMS) container image.

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

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

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

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

(*1) DockerでmacOSファイル共有サーバをお手軽構築 - exlar's note

Entrykit の採用による環境変数活用の促進

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

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

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

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