Linuxの自宅サーバをテレビ化して家中どこでもテレビが見れるようにしよう(4)Chinachu(gamma)の導入

やわなべです。

壊れたテレビの代替にすべく、年内に自宅のLinuxサーバをテレビ化しましょう計画の4回目です。これまでの経緯はこちら。

地デジのリアルタイム視聴環境はだいぶ整理できたんで、これまでおざなりにしてた録画サーバー環境の整備に着手します。前回入れたMirakurunと同じ作者によるChinachuを入れる予定です。

まあ、途中手こずって、最も威力を発揮する年末年始にはあまり役に立たなかったんですが。

スポンサーリンク

ここまでのおさらい

詳しくは上の過去記事をご覧いただくとして、最初に「recdvb」で構築したシンプルな、地デジのリアルタイム、ロケフリ環境の図がこちら。

ss54157.png

シングルタスクのrecdvbの切り替えが面倒だったんで管理職としてMirakurunを招聘した環境がこちら。

ss67312.png

パフォーマンス調整は必要ながら、リアルタイム環境はだいぶ整理できました。ただ録画環境は未整備で「このチャンネルを今からx秒間録画して、このファイルに保存してください」という指示しかできません。

そこでEPGで随時最新の番組表データを取得でき、またタイマー録画にも対応するChinachuをインストールします。最終的な環境のイメージはこう。

ss77748.png

前回ぼかしてた録画ソフトのポジションに「Chinachu gamma」が入りますよ、ということです。

今回の記事は全面的にこちらの記事を参考にさせていただきました。

参考 【PX-S1UD】Ubuntu14.04上でMirakurun+Chinachuな環境を作ってみた | はるろいどの冒険日記

Chinachuのインストール

Chinachuはこれまで単体の録画管理ソフトとして人気を博してたBeta版から、Mirakurunとの連携を必須とした「Gamma」バージョンに移行中のようです。最終「Chinachu Air」という名前のものになる構想のようで。

参考 Chinachu/Chinachu: Most Lovely DVR Software in Japan.

こちらからソースをダウンロードすると、一番上に「chinachu」というコマンドがあります。そこからインストーラが起動できます。

> ./chinachu installer

Chinachu Installer Menu:
[!] These are installed under all /home/ywnb/project/chinachu/…
[!] Recommend the Auto installation.
1) Auto (full) 3) Node.js Environment 5) ffmpeg
2) submodule 4) Node.js Modules

Mirakurun同様、1)のおまかせ(Auto)を選んでたらOKです。

Chinachuの初期設定

Chinachuの設定はトップレベルにある、config.jsonというファイルで行います。設定中重要そうな項目だけ抜き出すとこんな感じ。旧バージョンではここにチューナーやチャンネル定義があったんですが、gammaバージョンでは、Mirakurunのそれを参照するので省略します。

{
    ”mirakurunPath”: “http+unix://%2Fvar%2Frun%2Fmirakurun.sock/”,

“recordedDir” : “/home/ywnb/storage/chinachu/rec/”,
“temporaryDir”: “/home/ywnb/storage/chinachu/tmp/”,
“recordedFormat”: “[<date:yymmdd>-<type><channel>]<title>.m2ts”,
“wuiUsers”: [
“user:password”
],
“wuiPort”: 8081,
}

  • mirakurunPath: mirakurunのTCPソケットへのパス
  • recordedDir: 録画データを保存するフォルダ
  • temporaryDir: 録画中データの一時保存用フォルダ
  • recordedFormat: 録画ファイルのファイル名の書式
  • wuiUsers: 番組表画面へのログインID/PW
  • wuiPort: 番組表管理画面のHTTPポート番号

Chinachuの実行スクリプト

chinachuはoperatorとwuiという2つからなりますが、それぞれ「chinachu」コマンドから、実行スクリプトを作成することができます。いろんなやり方あると思いますが私はユーザーをRootに変えた状態で、

./chinachu service operator initscript > /usr/local/bin/chinachu-operator
./chinachu service wui initscript > /usr/local/bin//chinachu-wui

と、それぞれの起動スクリプトを/usr/local/bin以下に設置しました。この初期スクリプトはRootで起動する必要があって、それぞれ

chinachu-operator start
chinachu-wui start

として起動します。止めたい場合は「start」の代わりに「stop」、動いてるかどうか確認したい場合は「status」を叩けばいいです。

番組表のチェック

chinachuが起動した状態でMacのブラウザで「http://192.168.1.100:8081」を開きます。8081というのはさっきconfig.jsonで指定した管理画面のポート番号です。

ss80367.png

Chinachuの管理画面が起動します。

ss80401.png

EPG経由でリアルタイムの番組表も瞬時に取り込めます。すごい。ウチのアクオスなんて電源入れてから5分くらいかかりますよ。

ss80461.png

ss80465.png

個々の番組を選ぶと、右上に予約録画のリンクがあるので、それを押すと録画予約され、時刻が来たらタイマーで自動録画がはじまります。

録画にはrecdvbのオプション調整が必要

…が、ここで問題発生。

録画開始時刻が来て「録画中」とはなるものの、保存ディレクトリにはなにもファイルができません。

Chinachuは管理画面左メニューからリアルタイムのログが確認できるんですが、録画中のChinachu Operatorのログにはこんな記述が。

31 Dec 11:34:51 – ERROR: #3800o4zmgx 2016-12-31T11:25:00+0900 [読売テレビ1] NNNニュース undefined ECONNRESET

「undefined ECONNRESET」はnode.jsがソケット接続に失敗した的なエラーで、mirakurunとの通信エラーっぽい。が、一方のMirakurunのサーバーログを見ると、

0|mirakuru | 2016-12-31T11:24:52.054+09:00 info: TunerDevice#0 process has spawned by command `recdvb –b25 –strip –dev 0 –sid hd 14 – -` (pid=20632)

予約開始時間にちゃんとrecdvbを起動してる。

0|mirakuru | 2016-12-31T11:34:51.934+09:00 info: TunerDevice#0 end streaming to user `127.0.0.1:36442` (priority=2)
0|mirakuru | 127.0.0.1 – GET /api/programs/327250208833665/stream HTTP/1.1 – – – – ms Chinachu/0.9.5-gamma.0 (operator) MirakurunClient/2.0.0-rc.7 Node/v6.9.2 (linux)

ただ、ストリーム要求を受け取ったあと、すぐに「end streaming」になってるようでこのあたりが問題でしょうか。

というところで旧年中はタイムアップ。「できませんでしたー」という未完成エントリーをポストしたところ、

なんと、作者ご本人からじきじきにアドバイスが! 冬コミでお忙しい中ありがとうございます。

具体的にはMirakurunのチューナー設定(/usr/local/etc/mirakurun/tuners.yml)の、

– name: PX-S1UD
types:
– GR
command: recdvb –b25 –strip –dev 0 –sid hd – –
isDisabled: false

recdvb呼び出しオプションの「–strip」「–sid」の指定がまずかったようです。リアルタイム視聴で問題なかったんでノーマークでした。

command: recdvb –b25 –dev 0 – –

該当行から「strip」と「sid」を外して保存、mirakurunとchinachu operatorを再起動します。

録画環境、完成

年が変わって仕切り直しで1件録画してみたところ、

> ls -la /home/ywnb/storage/chinachu/rec
-rw-rw-r– 1 ywnb ywnb 23044349476 Jan 2 21:00 [170102-1755][GR18][テレビ大阪1]ローカル路線バス乗り継ぎの旅 弾【福島・会津若松~秋田・由利本荘】.m2ts

今度は録画開始とともに指定の保存用フォルダにm2tsファイルが作成されました。しかも録画中にiPadからリアルタイム視聴も可。どうやって実現してるのかさっぱりわかりませんが、すごい。

ss31843.png
Chinachuの録画済のところにも、ちゃんと入ってます。

ss36184.png

ストリーミング視聴もできました。(WebMフォーマットで再生)

今後の課題

というわけで録画環境もひとまず完成。安心してアクオス捨てられそうです。

次の課題は「録画した番組をどうやって見るか」ですね。

さっきの3時間番組でファイルサイズは20GB程度。Linuxの録画フォルダとMacとはSambaでファイル共有してますけど、VLCでWifi越しの共有フォルダのm2tsを開いてもまともに再生できません。

上のChinachuのストリーミング視聴の仕組みを使えば、iPad+chromeな環境でも再生ができますが(実際にはiPad版ChromeがVLCを呼び出してMP4で再生)こちらもやや不安定。快適に見ようとすると画質(映像ビットレート)を下げないと厳しい。やっぱwifi越しじゃ無理があるんでしょうかねぇ。

現実的な解としては、ポータブルのUSBストレージをlinuxにつなげてそこへ録画データを保存 → ストレージをMacにつなぎ変えて視聴、という感じでしょうか。

「Transcend 64GB JetDrive Go 300 iPhone7対応 Lightning...」販売ページヘ

Transcend 64GB JetDrive Go 300 iPhone7対応 Lightning...

  • メーカー: トランセンド・ジャパン

このあたりのを使えばLightningなiPadでも見れるかも。

そうそう、以前設定したVPNを使えば、外出先から録画予約もできますね。VPN越しに視聴となると速度的に無理っぽいですけど。