見出し画像

テレビ録画メディアサーバー構築入門(第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.sh

enc01.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

初回アクセス時に初期設定がはじまる。まずサーバーを選択し、接続。

「現在、選択されたサーバーへの接続ができません。稼働していることを確認しもう一度やり直してください。」と出たが、やり直したら接続できた。

サーバーを追加
ホスト: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/


これでようやく、表題の「テレビ録画メディアサーバー」の基本構成が整ったことになる。

追記:おすすめ


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

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

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

  • 26本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
テレビ録画メディアサーバー構築入門(第6回)|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