テレビ録画メディアサーバー構築入門(第6回)
作業フォルダ、メディアフォルダ
録画ファイルm2tsの保存先(~/docker-mirakurun-epgstation/recorded/)は、EPGStationのデータベースが管理する場所なので、作業場所とすべきではない。たとえば、EPGStation「録画済み」から「クリーンアップ」すると、登録されていないファイルはすべて抹消されてしまう。
そこで、作業フォルダ ~/work と編集動画の出力先フォルダ ~/media を別途設けることにする。
まずはこれまでのスクリプト等を作業フォルダに移動する。
cd
mkdir -p work
cd work移動するファイルは、enc0.sh , enc1.sh, JL_標準.txt, そして民放のロゴファイル(第5回)。
takya@fearow22:~/work$ ls
GR21.lgd GR22.lgd GR23.lgd GR25.lgd JL_標準.txt enc0.sh enc1.shenc01.sh
NHKか否かにより、enc0.sh と enc1.shを使い分けるスクリプト。冒頭の5つの変数は自分の環境に合うように修正のこと。
#!/bin/bash
SOURCEDIR="$HOME/docker-mirakurun-epgstation/recorded/"
WORKDIR="$HOME/work/"
OUTDIR="$HOME/media/"
NHK1="GR20"
NHK2="GR13"
cd $SOURCEDIR
ls *.m2ts >/dev/null 2>&1
if [ $? -eq 0 ]; then
for FILE in *.m2ts
do
FILENAME=${FILE%.*}
GRSTRING=`echo $FILENAME | sed -n 's/.*\(GR[0-9][0-9]\).*/\1/p'`
if [ ! -f $OUTDIR/${FILENAME}.mp4 ]; then #処理済みmp4がない場合のみ処理実行
cd $WORKDIR
if [ -z $GRSTRING ] || [ $GRSTRING = $NHK1 ] || [ $GRSTRING = $NHK2 ]; then
# NHKならば
./enc0.sh $SOURCEDIR/"${FILE}" ${FILENAME}.mp4
else
# NHK以外
./enc1.sh $SOURCEDIR/"${FILE}" ${FILENAME}.mp4
fi
if [ -f ${FILENAME}.mp4 ] ; then
mv ${FILENAME}.mp4 $OUTDIR
else
echo ERROR: mp4 not created
fi
fi
cd $SOURCEDIR
done
fiこれを実行すれば、録画済みm2tsの変換結果はすべて、一気に、出力先メディアフォルダ ~/media に出力される。
chmod a+x enc01.sh
mkdir -p ~/media
./enc01.sh定時に自動的に実行させるには、crontab に書き込めば良い。
crontab -e初回起動時には、どのエディタを使うかを問われる。
no crontab for takya - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.tiny
3. /bin/ed
Choose 1-3 [1]: 録画していない時間帯、たとえば早朝の5時に自動で実行させるには、次のように書き込み、保存して終了する。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
0 5 * * * $HOME/work/enc01.sh `crontab -l`で確認できる。
Jellyfin
Jellyfinは、デジタルメディアファイルをネットワーク上のデバイスで整理、管理、共有するための、無償かつオープンソースのメディアサーバーおよびマルチメディアアプリケーション群です。
Jellyfinは、Microsoft Windows、macOS、Linux上でインストールされるサーバーアプリケーション、またはDockerコンテナ上で動作するアプリケーションと、スマートフォン、タブレット、スマートテレビ、ストリーミングメディアプレーヤー、ゲーム機、またはウェブブラウザ上で動作するクライアントアプリケーションで構成されます。 また、DLNAおよびChromecast対応デバイスにもメディアを提供可能です。
cd
mkdir -p jellyfin/config
mkdir -p jellyfin/cache
sudo docker run -d --name jellyfin --user 1000:1000 --net=host --volume ./jellyfin/config:/config --volume ./jellyfin/cache:/cache --mount type=bind,source=./media,target=/media --restart=unless-stopped jellyfin/jellyfin:10.10.7(2025/11/7追記: 末尾にバージョン10.10.7を追加。Jellyfinは10/19に最新安定版10.11.0がリリースされた。大型アップデートのため、最新版に更新すると、バックアップなしでは、旧版には戻せない(新規インストールが必要となる)。基本機能が安定するまでは、10.10.7の使用を推奨します。)
インストール完了したら、ブラウザよりIPアドレス: ポート8096よりアクセス。
初回アクセス時に初期設定がはじまる。まずサーバーを選択し、接続。
「現在、選択されたサーバーへの接続ができません。稼働していることを確認しもう一度やり直してください。」と出たが、やり直したら接続できた。
サーバーを追加
ホスト:http://100.x.y.z:8096/
日本語を選択し、ユーザー、パスワードを適切に入力設定して、サインイン。
メディアライブラリーを追加で、フォルダより /mediaを選択。コンテンツタイプは「番組」。設定項目はいろいろあるが、後からでも変更可能だが。
下の方の「メタデータダウンローダー」(TheMovieDB, The Open Movie Database)のチェックは、とりあえず、すべて外しておく。イメージを取得についても、検索サイトは使用しない。
Jellyfinはデフォルトで The Movie Database (TMDb)、The Open Movie Database API (OMDb API)などのプロバイダーとメタデータを共有する機能をもつ。メタデータとは、メディアデータが内容的にどういうものか説明する情報です。海外では利用者のコミュニティがある程度の規模に育っており、各種メディア情報のメタデータが共有されている。
本稿で目的とする、個人的なメディアデータを個人的に利用する観点からは、類似した情報から間違ったメタデータに紐づけられたりする面倒を回避するためにも、とりあえず、メタデータプロバイダとの連携は外しておく。
「件のイメージを取得 (エピソード):」は「Screen Grabber」をチェックし、優先度を一番上にする(右の上矢印をクリックして移動)。
Japanese, Japan, このサーバーへのリモート接続を許可。完了
以上、準備した上で、サインインして、マイメディア「番組」をクリックすると、「エピソード」から動画一覧が見られる。
動画のサムネが表示されないときは、「番組」フォルダの「メタデータをリフレッシュ」より「すべてのメタデータを置き換える」そして、現在の画像を置き換えるでリフレッシュ。
スマホから利用の場合は、公式クライエントアプリ(linux, Android, iOS ほか)が用意されている。Androidでは、サードパーティ製の Findroid により「番組をダウンロードして、移動中にオフラインで再生することもできます。」
tailscaleをインストールした上で(第2回)、上記アドレスより視聴アクセス可能。
無料で動画・音楽・電子書籍などを自宅外からでもストリーミング視聴できる「Jellyfin」をAndroid・iOSから使ってみた - GIGAZINE
https://gigazine.net/news/20241109-jellyfin-android-ios/
これでようやく、表題の「テレビ録画メディアサーバー」の基本構成が整ったことになる。
追記:おすすめ



コメント