フロントエンドアプリケーション
mirakcの準備が整ったので,フロントエンドアプリケーションから利用できるように設定を変更してみましょう.
EPGStation v1
EPGStationのセットアップ方法は,すでに色々なところに書かれているので省略します.以下,既にセットアップ済みの環境が存在すると仮定して説明を行います.
もし,実験目的で設定変更しようとしているのでしたら,以下を実行する前にデータベースのバックアップを作成しておいてください.設定を変更し,EPGStationを再起動すると,データベースに保存されているEPGデータは上書きされます.Mirakurunとmirakcでは利用している文字コード変換処理が異なるため,録画ルールで使用している正規表現などが機能しなくなります.
それでは設定を変更します.変更箇所は以下の1箇所のみです.
{
// 変更不要な設定は省略
"mirakurunPath": "http://raspberrypi.local:40772/"
}
EPGStationを動かしているサーバーからraspberrypi.local
をmDNSを使って名前解決できることを前提としています.mDNSが使えない場合は,IPアドレスもしくは名前解決可能なホスト名に置き換えてください.
EPGStationを再起動すると置き換えは完了します.チャンネル設定で指定したチャンネルの番組表が表示されていれば,置き換え成功です.
EPGStation v2
EPGStation v2では,設定ファイルの形式がJSONからYAMLに変わりました.しかし, Mirakurunからの移行時に書き換える箇所は変わりません.
# 変更不要な設定は省略
mirakurunPath: http://raspberrypi.local:40772/
miraview
miraviewはmirakc用のWeb UIです.コンテナー利用者であれば,README.mdに書かれている手順で簡単に導入できます.
curl
とjq
さえあれば何でもできるけど,さすがに番組表はGUIで見たいという人は利用を検討しましょう.
mirakc-ui
mirakc-uiはmirakc用のWeb UIです.番組表の表示以外に録画管理をサポートしています.
README.mdに記載されているDockerfile
ではイメージのビルドに失敗するので,しばらくの間は以下のようにdeno.lock
を削除するように修正しましょう.
...
# deno cacheの前にdeno.lockを削除
RUN rm deno.lock
RUN deno cache ./main.ts --allow-import
...
miraview
とは異なり,mirakc-ui
はWeb UI専用のサーバーを起動します.
TVTest
原因はよく分かっていませんが,Mirakurun用のBonDriver_Mirakurun
ではうまく動かないようです.代わりに,epgdatacapbonさんが作成したBonDriver_mirakcを使ってください.
SERVICE_SPLIT=1
とすることでmirakcとBonDriver_mirakc
間の通信量を減らすことができます.
Kodi
Important
Kodiでタイムシフト録画を視聴する場合は 21.1 以降を使用してください. これよりも古いバージョンには問題があり,タイムシフト録画を快適に再生できません. 詳細については こちら を参照してください.
PVR IPTV Simple Clientアドオンをインストールすれば,Kodiからライブ視聴が可能となります.
アドオンの設定画面から,以下を設定してください.
- General | M3U Play List URL
- http://
HOST
:PORT
/api/iptv/playlist
- http://
- EPG Settings | XMLTV URL
- http://
HOST
:PORT
/api/iptv/epg
- http://
HOST
およびPORT
は,自分の環境に合わせて書き換えてください.
スキン設定からフォントをArial based
に変更しても日本語が正しく表示されない場合があります.そのような場合は,Kodi内のarial.ttf
を日本語グリフを含んだUnicode対応フォントに置き換えることで改善します.以下にmacOSでの設定例があります.
タイムシフト録画もKodiで視聴可能です.Settins / Services
からUPnP / DLNA
を有効にしましょう.後述のmirakc/timeshift-gerbera
を実行すれば,video source
の選択ダイアログにUPnP devices
が表示されます.これを選択するとGerberaのアイコンと共にTimeshift
が表示されるので,これを追加します.
各タイムシフト・レコーダーのフォルダーを選択すると,録画一覧が表示されます.以下の表示オプションがお薦めです.
- Viewtype: WideList
- Sort by: Date
- Order: Descending
Sambaなどで共有されたフォルダー内に大量の動画が存在する場合,サムネイル画像の生成などのために集中的なファイルアクセスが発生し,Samba(およびmirakc-timeshift-fs
)を稼働させているマシンが一時的に高負荷状態になることがあります.この負荷状態は,サムネイル画像の生成をやめるなどKodiの設定を見直すことで回避できます.しかし,他にも問題があるようで,タイムシフト録画ファイルが大量に存在すると,
Kodiがハングすることがありました.そのため,Kodiでタイムシフト録画を視聴する場合,UPnP/DLNAの使用を推奨します.
バージョンの固定
Kodiを更新すると,PVR IPTV Simple Clientが動作しなくなったり,PVR IPTV Simple Clientが原因で起動直後にクラッシュが発生することが度々あります.そのため,Kodiの更新は慎重に行いましょう.
flatpak
を使用しているなら,以下の方法でflatpak update
による自動更新からKodiを除外できます.
# See https://unix.stackexchange.com/questions/673741
# バージョンを固定する機能はないが,自動更新を停止することは可能
flatpak mask tv.kodi.Kodi
発生している問題に依存しますが,以下の方法で過去バージョンにダウングレードできます.
# See https://github.com/flatpak/flatpak/issues/3097
# 以下のコマンドで表示される一覧から戻したいバージョンのコミットハッシュを探す
flatpak remote-info --log flathub tv.kodi.Kodi
# 指定バージョンにダウングレード
sudo flatpak update --commit=<commit-hash> tv.kodi.Kodi
mirakc/timeshift-gerbera
多くのTVはUPnP/DLNAをサポートしているため,Gerberaを使えばタイムシフト録画を視聴できます.Gerbera の設定は多少面倒なので,専用のDockerイメージmirakc/timeshift-gerberaを用意してあります.
このDockerイメージでは,コンテナー内でmirakc-timeshift-fs
を実行するため,自動アンマウントやタイムシフト・ファイルシステムのファイル所有権の問題が発生しません.そのため,mirakc/timeshift-fs
を直接使用するのではなく,mirakc/timeshift-*
の使用を推奨します.
類似のDockerイメージを自分で作成したいという方は,GitHub にソースをアップロードしてあるので参考にしてください.
VLCはGerberaから供給されるタイムシフト録画を問題なく再生できることを確認済みです.
DLNA/UPnPをサポートしていない機器でもSambaをサポートしているなら,代わりにmirakc/timeshift-samba を使うことができます.
mirakc-searchとmirakc-rec
コマンド操作に慣れている人は,mirakc/contribにあるスクリプトの利用をお勧めします.
Tip
タイムシフト録画用のtimeshift/timeshift.sh
も追加しました
mirakc-search
#!/bin/sh
export MIRAKC_SEARCH_CUSTOM_PROGRAM_JQ_DIR=/path/to/program-jq
export MIRAKC_SEARCH_BASE_URL=http://mirakc:40772
sh /path/to/mirakc/contrib/search/search.sh "$@"
mirakc-rec
#!/bin/sh
export MIRAKC_REC_BASE_URL=http://mirakc:40772
sh /path/to/mirakc/contrib/recording/recording.sh "$@"
変数と/path/to/...
は,自分の環境に合わせて書き換えてください.
この2つのスクリプトを使って,BSPの映画を録画予約してみます.
# BSPの映画を検索
# ビルトインのフィルター以外にも,直接フィルターをインラインで指定することも可能
$ mirakc-search movie gt-1h msid 'map(select(.msid == 400103))'
ID START END MINS ...
40010309234 2023-06-23 13:00 2023-06-23 14:45 105 ...
...
# 録画予約
$ mirakc-rec add 40010309234
ID STATE START END MINS ...
40010309234 scheduled 2023-06-23 13:00 2023-06-23 14:45 105 ...
-h
オプションで各スクリプトのヘルプが表示されます.