Ubuntu
pt3
Chinachu
mirakurun
rivarun

TX100 S3 + PT3 + recpt1 + Ubuntu 16.04.1 + chinachu(γ) + mirakurun + rivarun + ffmpegエンコード の環境構築

More than 1 year has passed since last update.

Ubuntu server 16.04.1にchinachu(γ)をインストールしたので、メモ。
参考にさせていただいたサイトの方々には大変感謝しています。
ファイアーウォールの設定などについては記載していませんので、設定をお願いします。
IDとパスワードも必ず変更をお願いします。

環境

事前準備

$ sudo apt-get install -y vim samba ntp wget curl git make cmake zip
$ sudo apt-get install -y pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools
$ sudo apt-get install -y autoconf build-essential git-core libssl-dev libtool libboost-all-dev pkg-config yasm pkg-config

カードリーダーの設定

$ pcsc_scan | grep "Japanese Chijou Digital"
    (略)
    Japanese Chijou Digital B-CAS Card (pay TV)

PT3のドライバのインストール

$ sudo su -
# echo "blacklist earth-pt3" >> /etc/modprobe.d/blacklist.conf
# git clone https://github.com/m-tsudo/pt3.git
# cd pt3/
# make clean && make
# make install
# modprobe pt3_drv
# reboot

再起動後、以下で確認。

$ ls -la /dev/pt3*
crw-rw-rw- 1 root video 243, 0  1月  4 17:35 /dev/pt3video0
crw-rw-rw- 1 root video 243, 1  1月  4 17:35 /dev/pt3video1
crw-rw-rw- 1 root video 243, 2  1月  4 17:35 /dev/pt3video2
crw-rw-rw- 1 root video 243, 3  1月  4 17:35 /dev/pt3video3

arib25のインストール

$ sudo su -
# sudo apt-get install pkg-config
# mkdir ~/tmp
# cd ~/tmp
# wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
# unzip c44e16dbb0e2.zip
# cd pt1-c44e16dbb0e2/arib25
# make clean && make
# make install

recpt1(通常版)インストール

# mkdir ~/src
# cd ~/src
# wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
# tar xvjf tip.tar.bz2
# cd pt1-c8688d7d6382/recpt1/
# sed -i".org" 's/pt1video/pt3video/g' pt1_dev.h
# ./autogen.sh
# ./configure --enable-b25
# make
# make install

以下で録画確認。vlcプレーヤーなどで再生できればOK。
23は地上デジタル放送のチャンネル。自分の環境に合わせてチャンネルを変更してください。

# recpt1 --b25 --strip 23 10 ~/test.ts

nodejsのインストール

# apt-get install -y nodejs npm
# npm cache clean
# npm install n -g
# n stable
# apt-get purge -y nodejs npm
# apt-get -y autoremove
# su -
# node -v
v7.2.1

Mirakurun, Rivarunのインストールと設定

インストール

# npm install pm2 -g
# npm install mirakurun -g --unsafe --production
# npm install rivarun -g
# npm install arib-b25-stream-test -g --unsafe
# ps ax | grep Mirakurun # 動作確認
12111 ?        S<sl  10:42 Mirakurun: Server

設定

サーバー設定を変えたいときは下記。本記事ではデフォルトとした。

# mirakurun config server

チューナー設定を変えたいときは下記。私の環境ではBS,CSが来ていないため、地上デジタル放送のみ有効とした。

# mirakurun config tuners

以下通りisDisabled: true ⇒ falseに変更

- name: PT3-T1
  types:
    - GR
  command: recpt1 --device /dev/pt3video2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PT3-T2
  types:
    - GR
  command: recpt1 --device /dev/pt3video3 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

チャンネル設定を変えたいときは下記。私の環境(名古屋市内)での設定例は下記。

# mirakurun config channels
- name: CAT111
  type: GR
  channel: '17'

- name: CBC
  type: GR
  channel: '18'

- name: CHUKYO
  type: GR
  channel: '19'

- name: NHK G
  type: GR
  channel: '20'

- name: TOKAI
  type: GR
  channel: '21'

- name: NAGOYA
  type: GR
  channel: '22'

- name: AICHI
  type: GR
  channel: '23'

- name: CAT121
  type: GR
  channel: '24'

- name: MIE
  type: GR
  channel: '27'

設定完了後、Mirakurunを再起動する。

# mirakurun restart

EPG情報の更新待ち(1,2分)。serviceIdが空欄の箇所は電波を受信できていないと思われるので、そのchannelをchannels設定から、削除する。

# rivarun --list | sed 's/},/},\n/g'
status: 200
headers: {"server":"Mirakurun/2.0.0-rc.8","content-type":"application/json; charset=utf-8","date":"Thu, 05 Jan 2017 02:03:06 GMT","connection":"close","content-length":"3036"}
[{"type":"GR","channel":"17","name":"CAT111","services":[{"id":3223733896,"serviceId":33896,"networkId":32237,"name":"キャットch111"},
{"id":3223733897,"serviceId":33897,"networkId":32237,"name":"キャットch112"}]},
{"type":"GR","channel":"18","name":"CBC","services":[{"id":3270703096,"serviceId":3096,"networkId":32707,"name":"CBCテレビ"},
{"id":3270703097,"serviceId":3097,"networkId":32707,"name":"CBCテレビ"},
{"id":3270703098,"serviceId":3098,"networkId":32707,"name":"CBCテレビ"},
{"id":3270703480,"serviceId":3480,"networkId":32707,"name":"CBCワンセグ"},
{"id":3270703231,"serviceId":3231,"networkId":32707,"name":"Gガイド"}]},
{"type":"GR","channel":"19","name":"CHUKYO","services":[{"id":3270903112,"serviceId":3112,"networkId":32709,"name":"中京テレビ1"},
{"id":3270903113,"serviceId":3113,"networkId":32709,"name":"中京テレビ2"},
{"id":3270903496,"serviceId":3496,"networkId":32709,"name":"中京テレビ4"}]},
{"type":"GR","channel":"20","name":"NHK G","services":[{"id":3222433792,"serviceId":33792,"networkId":32224,"name":"NHK総合1・名古屋"},
{"id":3222433793,"serviceId":33793,"networkId":32224,"name":"NHK総合2・名古屋"},
{"id":3222434176,"serviceId":34176,"networkId":32224,"name":"NHK携帯G・名古屋"}]},
{"type":"GR","channel":"21","name":"TOKAI","services":[{"id":3270603088,"serviceId":3088,"networkId":32706,"name":"東海テレビ011"},
{"id":3270603089,"serviceId":3089,"networkId":32706,"name":"東海テレビ012"},
{"id":3270603090,"serviceId":3090,"networkId":32706,"name":"東海テレビ013"},
{"id":3270603472,"serviceId":3472,"networkId":32706,"name":"東海テレビワンセグ"}]},
{"type":"GR","channel":"22","name":"NAGOYA","services":[{"id":3270803104,"serviceId":3104,"networkId":32708,"name":"メ~テレ"},
{"id":3270803105,"serviceId":3105,"networkId":32708,"name":"メ~テレ"},
{"id":3270803106,"serviceId":3106,"networkId":32708,"name":"メ~テレ"},
{"id":3270803488,"serviceId":3488,"networkId":32708,"name":"メ~テレ"}]},
{"type":"GR","channel":"23","name":"AICHI","services":[{"id":3223033840,"serviceId":33840,"networkId":32230,"name":"テレビ愛知1"},
{"id":3223033841,"serviceId":33841,"networkId":32230,"name":"テレビ愛知2"},
{"id":3223033842,"serviceId":33842,"networkId":32230,"name":"テレビ愛知3"},
{"id":3223034224,"serviceId":34224,"networkId":32230,"name":"テレビ愛知携帯"}]},
{"type":"GR","channel":"24","name":"CAT121","services":[{"id":3223933912,"serviceId":33912,"networkId":32239,"name":"キャットch121"},
{"id":3223933913,"serviceId":33913,"networkId":32239,"name":"キャットch122"}]},
{"type":"GR","channel":"27","name":"MIE","services":[{"id":3215038960,"serviceId":38960,"networkId":32150,"name":"三重テレビ1"},
{"id":3215038961,"serviceId":38961,"networkId":32150,"name":"三重テレビ2"},
{"id":3215039344,"serviceId":39344,"networkId":32150,"name":"三重テレビ携帯"}]}]

中京テレビ1で15秒間録画してみる。--sidは上記のserviceIdを指定。--ch GR/は上記のchannelを指定。

# rivarun --b25 --mirakurun localhost:40772 --sid 3112 --ch GR/19 15 CHUKYO.ts

Chinachuのインストールと設定

インストール

# adduser chinachu
# su - chinachu
$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
$ ./chinachu installer
Chinachu Installer Menu:
[!] These are installed under all /home/chinachu/chinachu/...
[!] Recommend the Auto installation.
1) Auto (full)          3) Node.js Environment  5) ffmpeg
2) submodule            4) Node.js Modules
what do you install? > 1

設定

$ echo "[]" > rules.json # ルールファイル作成
$ cp config.sample.json config.json
$ vim config.json

config.jsonの設定例は下記。
recordedCommandは録画後に実行するコマンド。詳細については後述。
wuiPortはWeb UIのポート番号。任意のポート番号に設定。
recordedFormatは録画ファイル名。任意に設定。
私の環境では、recordedは/mnt/sdb/video/chinachuにリンクが張られている。(ln -s /mnt/sdb/video/chinachu /home/chinachu/chinachu/recorded)

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

  "recordedDir" : "./recorded/",
  "recordedCommand":"./recCheck.sh",

  "wuiUsers": [
    "akari:bakuhatsu"
  ],
  "wuiAllowCountries": ["JP"],

  "wuiPort": 10772,
  "wuiHost": "0.0.0.0",
  "wuiTlsKeyPath": null,
  "wuiTlsCertPath": null,
  "wuiTlsRequestCert": false,
  "wuiTlsRejectUnauthorized": true,
  "wuiTlsCaPath": null,
  "wuiOpenServer": true,
  "wuiOpenPort": 20772,
  "wuiXFF": false,
  "wuiDLNAServerEnabled": false,
  "wuiMdnsAdvertisement": true,

  "recordedFormat": "[<date:mmdd>]<title>#<episode>(<channel-name>).ts",
  "storageLowSpaceThresholdMB": 3000,
  "storageLowSpaceAction": "remove",
  "storageLowSpaceNotifyTo": null,
  "storageLowSpaceCommand": ""
}

サービス設定

$ ./chinachu service operator initscript > /tmp/chinachu-operator
$ ./chinachu service wui initscript > /tmp/chinachu-wui
$ sudo su -
# cd /tmp
# chown root:root chinachu-*
# chmod 755 chinachu-*
# mv chinachu-* /etc/init.d/
# update-rc.d chinachu-operator defaults
# update-rc.d chinachu-wui defaults

起動

# service chinachu-operator start
# service chinachu-wui start
# ps ax | grep chinachu # 動作確認
15664 ?        S      0:00 /bin/bash /home/chinachu/chinachu/chinachu service operator execute
15776 ?        S      0:00 /bin/bash /home/chinachu/chinachu/chinachu service wui execute

エンコード

エンコードで使用するffmpegはchinachuインストール時にインストールしたものを使用する。

$ ./chinachu installer
(略)
1) Auto (full)          3) Node.js Environment  5) ffmpeg ← これ。(上記ではfullを指定しているのでここではインストール済み)
# su - chinachu
$ cd /home/chinachu/chinachu/
$ wget http://sonic-labo.xsrv.jp/gosogoso/wp-content/uploads/2015/11/recCheck.zip
$ unzip recCheck.zip
$ vim recCheck.sh # ファイル内のコメントを参考に設定を変更。
$                 #最低限user, passwdを変更すること。
$                 #例)user=akari, passwd=bakuhatsu
$ vim recCheck.js 

私の環境でのrecCheck.jsの変更箇所は下記。ffmpegの引数などは任意に変更すること。
/mnt/sdb/video/chinachu/は/home/chinachu/chinachu/recordedのリンク先。

var encodedDir = "/mnt/sdb/video/chinachu/";
var recOpt = " -fpre /home/chinachu/chinachu/libx264-hq-ts.ffpreset -r 30000/1001 -aspect 16:9 -s 1280x720 -bufsize 2000k -maxrate 25000k -acodec libmp3lame -ac 2 -ar 48000 -ab 128k -async 100";
var codecOpt = " -vcodec libx264";

/home/chinachu/chinachu/libx264-hq-ts.ffpresetの中身は下記のとおり。

level=41
crf=25
coder=1
flags=+loop
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=7
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=1
qmin=10
rc_eq='blurCplx^(1-qComp)'
bf=16
bidir_refine=1
refs=6

chinachuを再起動する。

# sudo service chinachu-operator restart
# sudo service chinachu-wui restart

ブラウザで動作確認。
http://(サーバーのホスト名またはIPアドレス):10772/

参考