見出し画像

テレビ録画メディアサーバー構築入門(第18回)

視聴が録画に追いつかない。内蔵ストレージ警告(第10回)がでるようになった。

とりあえず「映画」ライブラリだけ、外付けHDDに移行することにした。

手順は次の通り。

  1. フォーマット

  2. マウント

  3. ファイルコピー

  4. Jellyfin再起動

  5. 設定変更

フォーマット

外付けHDDをUSB接続する。たいていの場合は問題なく認識するはず。認識していれば、「ユーティリティ」の「ディスク」アプリから見える。

画像
Ubuntu標準「ディスク」

まず、パーティションを作成し、初期化する。「Linux用の内蔵ディスクとして使用する(Ext4)」

linuxとwindowでは、ファイルシステムの書き込み仕様(ジャーナリングファイルシステム)が大きく異なります。ファイルシステムをlinux用にする必要があります。

マウント

フォーマットが終わったら、マウントオプションを編集。「デフォルト」は使用せず、マウントポイントにわかりやすい名前をつける。例: /buffalo

HDD(ストレージデバイス)は明示的にマウントしないと、OSからファイルシステムとしてアクセスできません。

「システム起動時にマウントする」「ユーザーインターフェースに表示する」

マウントすれば、通常のフォルダのように(マウントポイント/buffaloから)アクセスできます。「マウント」は再生ボタン(▶)です。取り外すときは、アンマウント:停止ボタン(■)。

他のUSB機器もそうですが、外部機器の接続・取り外しには、決まった手順を踏む必要があります(第11回)。

ファイルコピー

編集済み映画は./movies に保存してあるので、新HDD/buffaloにそのままコピーする。新たな動画が書き込まれない時間帯に作業する。

mkdir /buffalo/movies
cd
rsync -avh --progress ./movies/ /buffalo/movies/

Jellyfin再起動

前回からの変更点は、--mount type=bind,source=/buffalo/movies,target=/movies

sudo docker stop jellyfin
sudo docker rm jellyfin
sudo docker run -d --name jellyfin --user 1000:1000 --group-add="110"  --device /dev/dri/renderD128:/dev/dri/renderD128  --net=host --volume ./jellyfin/config:/config --volume ./jellyfin/cache:/cache  --mount type=bind,source=./media,target=/media  --mount type=bind,source=/buffalo/movies,target=/movies  --mount type=bind,source=./downloads,target=/downloads --restart=unless-stopped --volume /usr/share/fonts:/usr/share/fonts --volume /usr/share/fontconfig:/usr/share/fontconfig jellyfin/jellyfin:10.10.7

(2025/11/7追記: 末尾にバージョン10.10.7を追加。Jellyfinは10/19に最新安定版10.11.0がリリースされた。大型アップデートのため、最新版に更新すると、バックアップなしでは、旧版には戻せない(新規インストールが必要となる)。基本機能が安定するまでは、10.10.7の使用を推奨します。)

設定変更

作業ディレクトリの設定を新ディレクトリ/buffalo/movies に書き出すように書き換える。どこを書き換えればよいかは、grep で調べる。

takya@fearow22:~/work2$ grep movies *.sh
enc01.sh:OUTDIR="/buffalo/movies/"
remove_empty_dirs.sh:MEDIA_ROOT="/buffalo/movies"
update_thumbs.sh:MEDIA_ROOT="/buffalo/movies"

3つでてきたが、update_thumbs.shは第13回でコメントアウトした(から修正不要)。

takya@fearow22:~/work2$ grep update_thumbs.sh *
enc01.sh:#$encoded && $WORKDIR/update_thumbs.sh

enc01.sh と remove_empty_dirs.sh を新ディレクトリ/buffalo/moviesに書き換える。


しばらく様子を視て、問題ないようなら、元のディレクトリは削除してよい。
rm -ir ./movies

ディスク圧迫対策1

ストレージを圧迫する最大の要因は、録画サーバーEPGStation が書き出す m2ts 動画ファイルです。

m2tsは番組情報等のメタデータを保持できるメリットがある一方で、ファイルサイズが巨大化する、互換性が低いなどの欠点があります。ここで紹介しているサーバー構築では、扱いにくいm2tsを捨てて、mp4で管理運用する前提で話をすすめています。このことに起因する「不具合」例は第11回で触れています。


m2tsファイル膨張を軽減するには、第9回のdeleteold.py にて、削除までの保持期間「1週間」:

datetime_delete = now - timedelta(days=7) #1週間

を、できるだけ短くする。失敗した場合に備えての保持期間なので、毎日チェックできるなら「1日」にしてよい。

ちなみに「2日」で運用していると、m2ts(削除対象)が30-80GBになります。

takya@fearow22:~$ du -h --max-depth=1 ./ | sort -h
82G ./docker-mirakurun-epgstation

当然ですが、どれだけ貯めこむかは、その人の使い方によります。

通常録画./mediaは「見たら削除」で運用中。映画./moviesは見る暇がなく貯まっていくが、作品性が高いのと、見逃し無料配信がないので心理的に消去しにくい。

ディスク圧迫対策2

第2の対策法は、ffmpegのOPTIONを変更する。第5回のenc0.sh, enc1.sh で 画像のビットレート -b:v 5000k を小さくすれば、画質は落ちますが、ファイルサイズは小さくなります。ビットレートの適正値は解像度/フレームレートによります。

  • 1080p(30fps): 3000k~6000k

-b:v 3000k でも十分かもしれない。

可変ビットレートの場合も、同様に、好みで調整すればよい(第16回)。

自分の視聴環境にあわせての最適化は、自サーバー運用の醍醐味ではあります。ただ、ファイルサイズ対策としては、エンコード、CMカット、この2つが最も効果大で、圧縮オプションの調整は、極端に画質を犠牲にしない限り、効果が薄い(最後の手段)です。

4K放送は必要?

つくづく思う。4K放送は必要なのだろうか。(単純にサイズが4倍になる。)

50インチ以下・視聴距離2m以上では4KとフルHDの差がほぼ識別不能になります。画質向上の最大の効果は、合法ユーザーが録画・バックアップすること、すなわちコンテンツを「所有すること」を困難にすることです。メディア産業が意図する「所有からアクセス権へ」の強制移行です。4Kがユーザー利益だけのために存在するとは、とても言い難いのではないでしょうか。

なぜ日本でJellyfinが流行らない?

わたしは録画マニアではない(なかった)ので、こんなこと考えることもなかったのですが、日本でJellyfinが流行らない理由は、日本人が著作権意識が高いから、というわけではなく、企業の思惑に乗らない頑固な個人が(持続可能なコミュニティを作るほど)多くないからでは、と思わずにはいられません。

自宅サーバー愛好家が増えてくれれば。
個人での録画動画所有がもっと普及してくれれば、と願っています。

技術は「利便性」と「自由」のバランスで発展すべき、と強く思わざるをえません。

ちなみに、最近では見逃し無料配信動画サービスが普及してきたので、(テレビチューナなしでも)ダウンローダとメディアサーバだけの最小構成でも大きな利用価値があります。


いいなと思ったら応援しよう!

ピックアップされています

全自動TV録画 視聴環境構築

  • 26本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
予約録画、カット編集、番組整理を全自動化し、複数デバイスで手軽に視聴可能な、自分だけのメディアサーバーを、ゼロから作り上げる過程の全記録。誰でもたどれるよう必要なすべてを書き残す。https://github.com/takyaO/epg2jelly/
テレビ録画メディアサーバー構築入門(第18回)|takya
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1