メディアサーバJellyfinを使ってみました。今まで散らばっていた大量のメディアファイルを整理することができました。
また、インターネットラジオやMirakurunと連携したテレビ番組の視聴ができました。

Jellyfin
Jellyfin
The Free Software Media System

環境

WSLのUbuntuにJellyfinを導入します。

  • Windows 11
    • Mirakurun 3.9.0 rc4
    • WSL (Ubuntu 24.04.2 LTS)
      • Jellyfin 10.10.7

構築

サーバ(WSL/Ubuntu)

  • Jellyfin インストール
    curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
    sudo systemctl enable --now jellyfin
  • 別のマシンからアクセスできるようにWSLへのポートフォワード設定一覧に8096/tcpを追加します。PC起動時に実行するようにスケジュールします。
    wsl-proxy.ps1
    $WSL2_IPV4=bash -c "ip route | grep 'eth0 proto kernel scope' | cut -d ' ' -f9"
    $HOST_IPV4="*"
    $PORTS=@(22,443,2049,3030,4000,8000,8080,8081,8096,8443,9090)

    foreach ($PORT in $PORTS)
    {
    netsh interface portproxy delete v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT
    netsh interface portproxy add v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT connectaddress=$WSL2_IPV4 connectport=$PORT
    }

    # ポート プロキシ パラメーターをすべて表示するには以下を実行する。
    # netsh interface portproxy show all
    #
    # ポート番号を削除するには該当ポート番号を対象に個別にdeleteコマンドを実行する。
    # netsh interface portproxy delete v4tov4 listenaddress=$HOST_IPV4 listenport=$PORT

クライアント

メディアファイルの配置

メディアの管理方法

  • メディアフォルダ
    /media/
    このフォルダにメディア関連の情報を集約します。複数のディスク/フォルダに存在しているメディアファイルに対するシンボリックリンクを配置します。
    /media/
    Movies/
    「タイトル_(YYYY).xxx」動画ファイルのシンボリックリンク
    Music/
    アーティスト名/
    アルバム名/
    「タイトル.xxx」音楽ファイルのシンボリックリンク
    Radios/
    「ラジオステーション名.m3u」
    Shows/
    番組名/
    Season_1/
    「タイトル_S01E01.xxx」動画ファイルのシンボリックリンク
  • 動画ファイルの実体フォルダ(WindowsのFドライブ)
    /mnt/f/home/chinachu/
    /mnt/f/home/epgstation/
    /mnt/f/home/epgstation.old/
  • 動画ファイルの実体フォルダ(WindowsのLドライブ)
    /mnt/l/home/chinachu/
    /mnt/l/home/epgstation/
  • 音楽フォルダの実体フォルダ(WindowsのEドライブ)
    /mnt/e/home/Music/

メディアフォルダの作成

  • メディアの種類毎にフォルダを作成
    sudo mkdir /media/Movies /media/Music /media/Radios /media/Shows /media/links
    sudo chmod -R 777 /media

    /media/links は整理前のシンボリックリンクを仮配置するフォルダ

ライブラリの追加

  • Jellyfinのダッシュボードで各メディアに対するライブラリを追加
    フォルダ ライブラリの種類
    /media/Movies 映画
    /media/Music 音楽
    /media/Shows 番組

シンボリックリンクの作成

  • 音楽
    /media/Music/配下にディレクトリとシンボリックリンクを配置するbashスクリプトをAIに作ってもらいます。
    利用環境に合わせて「ファイルの ARTIST、ALBUM、TITLE タグを使って、ファイルをディレクトリ階層 “ARTIST/ALBUM/TITLE.拡張子” に移動する Bash スクリプトを作成」のような感じで指示すると素晴らしい精度でスクリプトを生成してくれます。
  • 映画と番組
    cd /mnt/f/home/epgstation.old
    find * -type f -print | xargs -I{} ln -s $PWD/{} /media/links/{}
    cd /media/links
    • 映画の場合
      ファイル名を「タイトル_(YYYY).xxx」の形式に変更して以下を実行する。
      mv *ハリー・ポッター* /media/Movies/
    • 番組の場合
      ファイル名を「タイトル_S01E01.xxx」の形式に変更して以下を実行する。
      mkdir -p /media/Shows/世界の車窓から/Season_1
      mv *世界の車窓から* /media/Shows/世界の車窓から/Season_1/

インターネットラジオの追加

  1. m3uファイルの入手
    https://directory.shoutcast.com/ にてダウンロードボタンから「Any Player (.m3u)」をダウンロードして/media/Radios/に格納

  2. インターネットラジオの追加

    • ダッシュボード > ライブTV > チューナーデバイス+

      チューナータイプM3U Tuner
      ファイル又はURL/media/Radios/ラジオステーション名.m3u
  3. インターネットラジオの再生
    マイメディア > ライブTV > チャンネル からラジオステーションを選択

テレビ番組のリアルタイム視聴設定

  1. MirakurunのIPTV設定確認

    • http://192.168.11.2:40772 を参照し、右上のConnection Guideを押下

      M3U Playlisthttp://192.168.11.2:40772/api/iptv/playlist
      XMLTVhttp://192.168.11.2:40772/api/iptv/xmltv
      HDHomeRun Device Addresshttp://192.168.11.2:40772/api/iptv
  2. チューナーデバイスの追加(1)

    • ダッシュボード > ライブTV > チューナーデバイス+

      チューナータイプM3U Tuner
      URLhttp://192.168.11.2:40772/api/iptv/playlist
  3. チューナーデバイスの追加(2)

    • ダッシュボード > ライブTV > チューナーデバイス+
      チューナータイプHDHomeRun
      URLhttp://192.168.11.2:40772/api/iptv
  4. TV番組情報のプロバイダの追加

    • ダッシュボード > ライブTV > TV番組情報のプロバイダ+
      「XMLTV」を選択

      ファイル又はURLhttp://192.168.11.2:40772/api/iptv/xmltv
  5. 「ガイドデータの更新」を押下

  6. テレビ番組の再生
    ホーム画面やライブTVからチャンネルを選択

その他

  • プラグイン、テーマ等
    https://github.com/awesome-jellyfin/awesome-jellyfin/
  • Jellyfinのメディアライブラリの種類
    「映画」、「音楽」、「番組」、「ブック」、「ホームビデオと写真」、「ミュージックビデオ」、「TV番組と映画を混ぜる」
  • Jellyfinはシンボリックリンクを認識する
  • 複数の機器のクライアントで同時にメディアを再生するには:
    別のアカウントを利用すべきかもしれない
  • インターネットから自宅サーバへOpenVPNで接続してメディアにアクセス可能
  • Android版Jellyfinアプリでは動画再生時に強制的にランドスケープモードになる。Androidを自動回転モードに設定している場合、画面を傾け直すことでポートレートモードでの再生が可能。
    https://github.com/jellyfin/jellyfin-android/issues/1654
  • プレイリストへの追加が失敗する場合はダッシュボードからサーバを再起動
  • ホームのマイメディアカードの日本語ライブラリ名が文字化け:
    カスタムCSSでフォントを指定できないか調査要だが以下の手順で暫定回避可能
    1. ライブラリ本体を英語名に変更
    2. ライブラリのスキャンが完全に終了するまで待つ
    3. プライヤー側メタデータを日本語名に変更
      再度日本語名が有効になって文字化けしたので根本対策が必要
  • インターネットラジオが視聴できなくなったので対策が必要
    再生時にエラーログが出力されている