5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-01-05

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/

参考

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?