*

Chinachu β(ベータ)インストール手順(CentOS 7編)

  最終更新日:2017/02/01

How to install Chinachu on CentOS 7

 CentOS 7にChinachu β(ベータ)をインストールする手順を説明します。

 最新のChinachu γ(ガンマ)については、本ブログ記事の『Chinachu γ(ガンマ) インストール手順(CentOS 7編)』をご参照下さい。

 本記事は『録画サーバ構築の前準備(CentOS 7編)、Chinachu・epgrec UNA対応』の内容を実行済みであることを前提にしています。前記事の内容を実行していない場合、先にそちらをご参照下さい。

 本記事で取り扱うTVチューナーボードはPT3 Rev.Aです。

 なお、実行ユーザーを区別するため、シェルのコマンド表記は以下の様にしています。

[user@centos]$ 一般ユーザーとして実行
[root@centos]# rootとして実行
[chinachu@centos]$ ユーザーchinachuとして実行

スポンサーリンク

事前準備

 アセンブラ(yasm)をインストールします。

[user@centos]$ mkdir -p ~/src
[user@centos]$ cd ~/src
[user@centos]$ wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
[user@centos]$ tar xvzf yasm-1.3.0.tar.gz 
[user@centos]$ cd yasm-1.3.0
[user@centos]$ ./configure 
[user@centos]$ make
[root@centos]# su
[root@centos]# make install

Chinachu

 ここからはChinachu専用のユーザーchinachuを作成して作業します。普段使用しているユーザーでそのまま作業しても特に問題ありません。ただし、rootでインストール作業しないで下さい。

Chinachuインストール

[root@centos]# useradd chinachu
[root@centos]# su - chinachu
[chinachu@centos]$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
[chinachu@centos]$ cd ~/chinachu
[chinachu@centos]$ ./chinachu installer

    [!] These are installed under all /home/chinachu/chinachu/...
    [!] Recommend the Auto installation.
    1) Auto (full)            5) Node.js Modules       9) libfdk-aac
    2) Auto (fast)            6) epgdump              10) libogg
    3) submodule              7) libx264              11) libvorbis
    4) Node.js Environment    8) libvpx               12) ffmpeg
    what do you install? > 1   <--- "Auto (full)"を選択

設定ファイル作成

 インストール完了後、録画予約用の空ファイルを生成しておきます。

[chinachu@centos]$ echo "[]" > rules.json

 続いてChinachuの設定ファイルを作成します。

[chinachu@centos]$ cp config.sample.json config.json
[chinachu@centos]$ vi config.json

 下記は東京スカイツリー及び東京タワーから地デジを受信している場合の設定例です。本記事はPT3 Rev.A向けの内容のため、KEIAN KTV-FSUSB2の設定は削除しています(tunersのFSUSB2の設定箇所)。

{
  "recordedDir" : "./recorded/", ← 録画用ディレクトリ、必要なら変更
  "temporaryDir": "/tmp/",
  "schedulerEpgRecordTime": 180, ← 追記必須、EPG取得時間、単位:秒(番組表歯抜け対策)
  
  "wuiUsers": [
    "akari:bakuhatsu" ← "ユーザー名:パスワード"、変更必須
  ],
  
  "wuiPort"        : 10772, ← 接続ポート番号、出来れば変更
  "wuiHost"        : "::",
  "wuiTlsKeyPath"  : null,
  "wuiTlsCertPath" : null,
  "wuiOpenServer"  : false,
  "wuiOpenPort"    : 20772,
  "wuiPreviewer"   : true,
  "wuiStreamer"    : true,
  "wuiFiler"       : true,
  "wuiConfigurator": true,
  
  "recordedFormat": "[<date:yymmdd-HHMM>][<type><channel>][<tuner>]<title>.ts",
  
  "tuners": [
    {
      "name"        : "PT3-S1",
      "isScrambling": false,
      "types"       : [ "BS", "CS" ],
      "command"     : "recpt1 --device /dev/pt3video0 --b25 --strip --sid <sid> <channel> - -"
    },
    {
      "name"        : "PT3-S2",
      "isScrambling": false,
      "types"       : [ "BS", "CS" ],
      "command"     : "recpt1 --device /dev/pt3video1 --b25 --strip --sid <sid> <channel> - -"
    },
    {
      "name"        : "PT3-T1",
      "isScrambling": false,
      "types"       : [ "GR" ],
      "command"     : "recpt1 --device /dev/pt3video2 --b25 --strip --sid <sid> <channel> - -"
    },
    {
      "name"        : "PT3-T2",
      "isScrambling": false,
      "types"       : [ "GR" ],
      "command"     : "recpt1 --device /dev/pt3video3 --b25 --strip --sid <sid> <channel> - -"
    }
  ],
  
  "channels": [
    { "type": "GR", "channel": "27" },
    { "type": "GR", "channel": "26" },
    { "type": "GR", "channel": "25" },
    { "type": "GR", "channel": "24" },
    { "type": "GR", "channel": "22" },
    { "type": "GR", "channel": "23" },
    { "type": "GR", "channel": "21" },
    { "type": "GR", "channel": "16" },
    { "type": "GR", "channel": "28" },

    { "type": "BS", "channel": "101" },
    { "type": "BS", "channel": "102" },
    { "type": "BS", "channel": "103" },
    { "type": "BS", "channel": "141" },
    { "type": "BS", "channel": "151" },
    { "type": "BS", "channel": "161" },
    { "type": "BS", "channel": "171" },
    { "type": "BS", "channel": "181" },
    { "type": "BS", "channel": "191" },
    { "type": "BS", "channel": "192" },
    { "type": "BS", "channel": "193" },
    { "type": "BS", "channel": "200" },
    { "type": "BS", "channel": "201" },
    { "type": "BS", "channel": "202" },
    { "type": "BS", "channel": "211" },
    { "type": "BS", "channel": "222" },
    { "type": "BS", "channel": "231" },
    { "type": "BS", "channel": "232" },
    { "type": "BS", "channel": "233" },
    { "type": "BS", "channel": "234" },
    { "type": "BS", "channel": "236" },
    { "type": "BS", "channel": "238" },
    { "type": "BS", "channel": "241" },
    { "type": "BS", "channel": "242" },
    { "type": "BS", "channel": "243" },
    { "type": "BS", "channel": "244" },
    { "type": "BS", "channel": "245" },
    { "type": "BS", "channel": "251" },
    { "type": "BS", "channel": "252" },
    { "type": "BS", "channel": "255" },
    { "type": "BS", "channel": "256" },
    { "type": "BS", "channel": "258" },

    { "type": "CS", "channel": "CS8",  "sid": "055" },
    { "type": "CS", "channel": "CS4",  "sid": "100" },
    { "type": "CS", "channel": "CS22", "sid": "161" },
    { "type": "CS", "channel": "CS8",  "sid": "218" },
    { "type": "CS", "channel": "CS8",  "sid": "219" },
    { "type": "CS", "channel": "CS4",  "sid": "223" },
    { "type": "CS", "channel": "CS4",  "sid": "227" },
    { "type": "CS", "channel": "CS24", "sid": "229" },
    { "type": "CS", "channel": "CS18", "sid": "240" },
    { "type": "CS", "channel": "CS4",  "sid": "250" },
    { "type": "CS", "channel": "CS12", "sid": "254" },
    { "type": "CS", "channel": "CS24", "sid": "257" },
    { "type": "CS", "channel": "CS18", "sid": "262" },
    { "type": "CS", "channel": "CS16", "sid": "290" },
    { "type": "CS", "channel": "CS14", "sid": "292" },
    { "type": "CS", "channel": "CS14", "sid": "293" },
    { "type": "CS", "channel": "CS6",  "sid": "294" },
    { "type": "CS", "channel": "CS2",  "sid": "296" },
    { "type": "CS", "channel": "CS22", "sid": "297" },
    { "type": "CS", "channel": "CS2",  "sid": "298" },
    { "type": "CS", "channel": "CS2",  "sid": "299" },
    { "type": "CS", "channel": "CS24", "sid": "300" },
    { "type": "CS", "channel": "CS16", "sid": "305" },
    { "type": "CS", "channel": "CS20", "sid": "307" },
    { "type": "CS", "channel": "CS20", "sid": "308" },
    { "type": "CS", "channel": "CS20", "sid": "309" },
    { "type": "CS", "channel": "CS14", "sid": "310" },
    { "type": "CS", "channel": "CS16", "sid": "311" },
    { "type": "CS", "channel": "CS22", "sid": "312" },
    { "type": "CS", "channel": "CS18", "sid": "314" },
    { "type": "CS", "channel": "CS24", "sid": "321" },
    { "type": "CS", "channel": "CS22", "sid": "322" },
    { "type": "CS", "channel": "CS6",  "sid": "323" },
    { "type": "CS", "channel": "CS12", "sid": "325" },
    { "type": "CS", "channel": "CS8",  "sid": "326" },
    { "type": "CS", "channel": "CS6",  "sid": "329" },
    { "type": "CS", "channel": "CS12", "sid": "330" },
    { "type": "CS", "channel": "CS22", "sid": "331" },
    { "type": "CS", "channel": "CS16", "sid": "333" },
    { "type": "CS", "channel": "CS8",  "sid": "339" },
    { "type": "CS", "channel": "CS6",  "sid": "340" },
    { "type": "CS", "channel": "CS6",  "sid": "341" },
    { "type": "CS", "channel": "CS4",  "sid": "342" },
    { "type": "CS", "channel": "CS16", "sid": "343" },
    { "type": "CS", "channel": "CS8",  "sid": "349" },
    { "type": "CS", "channel": "CS22", "sid": "351" },
    { "type": "CS", "channel": "CS16", "sid": "353" },
    { "type": "CS", "channel": "CS6",  "sid": "354" },
    { "type": "CS", "channel": "CS24", "sid": "362" },
    { "type": "CS", "channel": "CS4",  "sid": "363" },
    { "type": "CS", "channel": "CS10", "sid": "800" },
    { "type": "CS", "channel": "CS10", "sid": "801" },
    { "type": "CS", "channel": "CS10", "sid": "802" },
    { "type": "CS", "channel": "CS10", "sid": "805" }
  ]
}

 51行目から59行目のGRの地デジ設定は現在住んでいる地域に合わせて変更して下さい(参考:マスプロの地上デジタル放送 チャンネル一覧表)。また、61行目以降のBS、CSの設定は契約しているチャンネルに合わせて間引いて下さい。チャンネル番号とチャンネル名の関係が分からないと思うので、下記にチャンネル一覧の表を作成しました。

 EPG取得時間延長の追加、ユーザー名、パスワード、接続ポート番号は適宜変更して下さい。

 作成したconfig.jsonのフォーマットチェックはこちらで行うことができます。config.jsonファイルの内容をコピペして”Validate”ボタンをクリックすれば確認できます。

・BSチャンネル一覧

種別 チャンネル番号 チャンネル名
公共 101 NHK BS1
公共 102 NHK BS1(サブ)
公共 103 NHK BSプレミアム
無料 141 BS日テレ
無料 151 BS朝日
無料 161 BS-TBS
無料 171 BSジャパン
無料 181 BSフジ
有料 191 WOWOWプライム
有料 192 WOWOWライブ
有料 193 WOWOWシネマ
有料 200 スターチャンネル1
有料 201 スターチャンネル2
有料 202 スターチャンネル3
無料 211 BS11
無料 222 TwellV
無料 231 放送大学
無料 232 放送大学
無料 233 放送大学
有料 234 グリーンチャンネル
有料 236 BSアニマックス
有料 238 FOXスポーツ&エンターテイメント
有料 241 BSスカパー!
有料 242 J SPORTS 1
有料 243 J SPORTS 2
有料 244 J SPORTS 3
有料 245 J SPORTS 4
有料 251 BS釣りビジョン
有料 252 イマジカBS・映画
有料 255 日本映画専門チャンネル
有料 256 ディズニー・チャンネル
無料 258 Dlife

・東経110度CSチャンネル一覧

Slot SID チャンネル名
CS8 055 ショップチャンネル
CS4 100 スカパー!プロモ
CS2 161 QVC
CS8 218 東映チャンネル
CS8 219 衛星劇場
CS4 223 チャンネルNECO
CS4 227 ザ・シネマ
CS24 229 FOXムービー
CS18 240 ムービープラスHD
CS4 250 sky・Aスポーツ+
CS12 254 GAORA
CS24 257 日テレG+ HD
CS18 262 ゴルフネットHD
CS16 290 SKY STAGE
CS14 292 時代劇専門chHD
CS14 293 ファミリー劇場HD
CS6 294 ホームドラマCH
CS2 296 TBSチャンネル1
CS22 297 TBSチャンネル2
CS2 298 テレ朝チャンネル1
CS2 299 テレ朝チャンネル2
CS24 300 日テレプラス
CS16 305 チャンネル銀河
CS20 307 フジテレビONE
CS20 308 フジテレビTWO
CS20 309 フジテレビNEXT
CS14 310 スーパー!ドラマHD
CS16 311 AXN
CS22 312 FOX
CS18 314 女性ch/LaLa
CS24 321 スペシャプラス
CS22 322 スペースシャワーTV
CS6 323 MTV HD
CS12 325 エムオン!HD
CS8 326 ミュージック・エア
CS6 329 歌謡ポップス
CS12 330 キッズステーション
CS22 331 カートゥーン
CS16 333 AT-X
CS8 339 ディズニージュニア
CS6 340 ディスカバリー
CS6 341 アニマルプラネット
CS4 342 ヒストリーチャンネル
CS16 343 ナショジオチャンネル
CS8 349 日テレNEWS24
CS22 351 TBSニュースバード
CS16 353 BBCワールド
CS6 354 CNNj
CS24 362 旅チャンネル
CS4 363 囲碁・将棋チャンネル
CS10 800 スカチャン0
CS10 801 スカチャン1
CS10 802 スカチャン2
CS10 805 スカチャン3

動作確認

 Chinachuのサービスが正常に起動するかどうかを確認します。実行結果として以下のように表示されれば成功です。

[chinachu@centos]$ ./chinachu service operator execute

    30 Aug 19:22:29 - READ: `/home/chinachu/chinachu/data/reserves.json` is updated.
    30 Aug 19:22:29 - READ: `/home/chinachu/chinachu/data/recorded.json` is updated.
    30 Aug 19:22:30 - SPAWN: node app-scheduler.js -f (pid=21535)
    30 Aug 19:22:30 - STREAM: ./log/scheduler

  Ctrl+Cで抜ける

 続いてEPG取得のテストを行います。正常終了すれば成功です。本記事の通りEPG取得時間を180秒に設定した場合、終了までそれなりに時間がかかります。終わるまで気長に待ちましょう。

[chinachu@centos]$ ./chinachu update -f

起動設定(systemd対応)

 PCを起動した時にChinachuのサービスが起動するようにします。CentOS 7ではサービス(デーモン)をsystemdで一元管理するようになっています。しかし、Chinachuはsystemd対応がされていないため、自力で対応します。

 systemd対応のパッチ(差分ファイル)を作成したので、本ブログからダウンロードしてパッチを当てます。

[chinachu@centos]$ cd ~/chinachu
[chinachu@centos]$ wget https://www.jifu-labo.net/files/systemd.patch.gz
[chinachu@centos]$ zcat systemd.patch.gz | patch 

  ”Hunk #2 FAILED at 586.”の様に表示されたら、パッチが正常に当たっていません。
  コメント欄にてパッチが当たらないとコメントして頂ければ記事の修正対応します。
  なお、”Hunk #2 succeeded”の様な表示は特に問題ありません。

 ここまででChinachuのsystemd対応は完了です。続いてsystemd用のスクリプトを作成します。

[chinachu@centos]$ ./chinachu service operator unitfile > /tmp/chinachu-operator.service
[chinachu@centos]$ ./chinachu service wui unitfile > /tmp/chinachu-wui.service

 Chinachuのサービスをsystemdから起動できるようにします。以下はrootで作業して下さい。

[root@centos]# cd /tmp
[root@centos]# chown root:root chinachu-*.service
[root@centos]# cp chinachu-*.service /lib/systemd/system/
[root@centos]# systemctl enable chinachu-operator
[root@centos]# systemctl enable chinachu-wui
[root@centos]# systemctl start chinachu-operator
[root@centos]# systemctl start chinachu-wui

 最終的にpsコマンド実行結果として以下のように表示されれば成功です。

[root@centos]# ps ax | grep chinachu
    1048 ?        Ss     0:00 /bin/bash /home/chinachu/chinachu/chinachu service operator execute
    1050 ?        Ss     0:00 /bin/bash /home/chinachu/chinachu/chinachu service wui execute

ページアクセス

 ブラウザからChinachuのページにアクセスします。URLは”http://録画サーバのIPアドレス:接続ポート番号”です。接続ポート番号を変更していない場合、デフォルトは10772になります。ユーザー名とパスワードのデフォルトは”akari”、”bakuhatsu”です。外部から録画できるようにしたい場合、いずれも変更しておいたほうが良いです。

 この段階で番組表が正常に表示されていれば設定完了です。

 個人的に少し迷った操作内容を挙げておきます。

  • ライブ視聴はテレビ局名を右クリックする。
  • ストリーミング再生はコンテナにWebMを選択して「再生」ボタンをクリックする。
    • 録画番組はMP4でも再生可
  • TSファイルを無劣化で再生したい場合、以下の手順で可能。
    1. コンテナにM2TSを選択し、映像と音声のコーデックも無変換を選択。
    2. 「XSPF」ボタンをクリックしてPCに保存。
    3. 保存したXSPFファイルをダブルクリックしてVLC media playerで再生する。
    4. ユーザー名とパスワードを入力すれば再生開始。
  • 手動での録画予約は番組表にて番組を右クリックすることで行う。
  • キーワードでの録画予約はルール作成にて行う(以下の2つの方法)。
    • 番組表にて番組を右クリックして「ルール作成」を選択。
    • メニューの「ルール」をクリックする。

録画用ディレクトリの変更方法

 本記事中で少し触れていますが、録画用ディレクトリの変更方法について改めて説明します。

 本記事通りに作業すると録画用ディレクトリは”/home/chinachu/chinachu/recorded”になっています(初回録画時に作成される)。例えば”/recorder”ディレクトリに変更したい場合、最初に設定ファイルを変更します。

[root@centos]#  vi /home/chinachu/chinachu/config.json

  下記の"recordedDir"を変更したいディレクトリに変えます。

  "recordedDir" : "/recorder/",

 続いて、録画中でないことを確認して、サービスを再起動します。録画済みのTSファイルがある場合、元ディレクトリからの移動を忘れずに!

[root@centos]#  systemctl restart chinachu-operator
[root@centos]#  systemctl restart chinachu-wui

Chinachuのアップデート方法

 Chinachuのアップデート方法は下記コマンドを実行するだけです。あらかじめ、Chinachuのサービスを停止してから実行して下さい。途中Yes/Noの選択で一時停止するかもしれませんが、基本的に全てEnterキー押下で大丈夫です。

[chinachu@centos]$ ./chinachu updater

録画終了後のエンコード

 当ブログで録画終了後にH.264でエンコードするスクリプトを作成しました。良かったら使ってみて下さい。

外出先から録画予約する方法

 実現するのはかなり面倒なのですが、比較的安全に外部から接続する方法としてSoftEther VPNを使った方法を紹介します。

 録画サーバを外部から接続する方法としてまとめましたが、実際には外部から家のLANにアクセスする方法なので、LANに接続する機器全てにアクセス可能になります。