Raspberry PiでPX-W3U4を使ってみる anchor.png

旅先でテレビを見たい時はノートPCとPX-W3U4/B-CASカードを一緒に持って行ってるんだけど,自宅にいる時はPX-W3U4は使っていなかった。

これではもったいないので,自宅でもRaspberry PiとPX-W3U4を使って他のPCやスマートフォンからテレビ放送を視聴したり録画予約を出来るようにしてみることにした。

使用するRaspberry Piは,

を使用している。

家のどのPCやスマートフォンからも録画予約・録画やテレビの視聴が出来るようになって(風呂でも見れる),便利になった :)

Page Top

録画保存場所をファイルサーバーにする anchor.png

録画データは自宅のLAN上にあるファイルサーバーに直接保存するために,sambaを使ってファイルサーバーのディレクトリをマウントして保存先とする。

このファイルを保存するサーバーではDLNAサーバーが動作しているので,ここに録画ファイルを保存することにより,LAN上のDLNAクライアントで再生出来るようになるので便利になる。

必要なパッケージをインストールする。

# apt install cifs-utils

マウントポイントを作成する。

# mkdir /mnt/u3
# chmod 777 /mnt/u3

試しにマウントしてみる。

# mount -t cifs //<サーバーのIPアドレス>/public /mnt/u3 -o username=user,password=password,file_mode=0777,dir_mode=0777,iocharset=utf8,defaults

うまくマウント出来た場合は,

# umount /mnt/u3

マウントを解除する。

/etc/fstabに以下を追加する。

//<サーバーのIPアドレス>/public /mnt/u3 cifs username=user,password=password,file_mode=0777,dir_mode=0777,iocharset=utf8,noauto,x-systemd.automount 0 0

Raspberry Piを再起動して/mnt/u3にマウント出来ているか確認する。

Page Top

PX-W3U4のデバイスドライバーをインストールする anchor.png

Raspberry Pi(Rasbian)でPX-W3U4を使用できるように,デバイスドライバーを用意する。

Page Top

必要なパッケージを入れる anchor.png

デバイスドライバーをビルドするのに必要なパッケージを,パッケージマネージャーでインストールしておく。

# apt install cmake automake autoconf exfat-utils git wget python
# apt install build-essential yasm libtool
# apt install libssl-dev ffmpeg sqlite3
# apt install raspberrypi-kernel-headers
Page Top

PX-W3U4のデバイスドライバーの取得とインストール anchor.png

PLEX社からLinux用のデバイスドライバーは用意されているが,

  • ソースコードが提供されない
  • Kernelのバージョンが限定されている
  • 動作するプラットフォームやOSが限定されている
    ARMのRaspbian用などは提供されていない。

などの問題がある。

そこで, nns779氏のpx4_drv(chardev版非公式なLinux用ドライバー)をありがたく ;) 使用することにした。

まずデバイスドライバーのソースコードを取得する。

$ cd ~/work
$ git clone https://github.com/nns779/px4_drv.git

ソースコードは,~/work/px4_drvに取得される。

Page Top

ファームウェアの抽出とそのインストール anchor.png

この非公式なpx4_drvデバイスドライバーによりPX-W3U4にファームウェアをアップロードする必要がある。
デバイスドライバーをビルドする前に,このファームウェアを公式デバイスドライバーより抽出し,所定の場所にインストールする。

まず,抽出ツールをビルドする。

$ cd ~/work/px4_drv/fwtool/
$ make

公式のWindows用のデバイスドライバー(pxw3u4v1.4.zip)をダウンロードして,そこからファームウェアを抽出する。

$ wget http://plex-net.co.jp/download/pxw3u4v1.4.zip -O pxw3u4v1.4.zip
$ unzip -oj pxwu4v1.4.zip pxw3u4v1/x64/PXW3U4.sys
$ ./fwtool PXW3U4.sys it930x-firmware.bin
fwtool for px4 drivers

Driver file (in)    : PXW3U4.sys
Firmware file (out) : it930x-firmware.bin

Driver description: PX-W3U4 BDA Ver.1.4 64bit
Firmware length: 7013 bytes
Firmware CRC32: df0bf49a
OK.

抽出したファームウェアをシステム上に配置する。

$ sudo mkdir -p /lib/firmware
$ sudo cp it930x-firmware.bin /lib/firmware/
$ cd ..
Page Top

デバイスドライバーのビルドとインストール anchor.png

px4_drvデバイスドライバーをビルドしてインストールする。

$ cd ~/work/px4_drv/driver
$ make
$ sudo make install

これで,ビルドしたデバイスドライバーが/lib/modules/<kernel>/miscにインストールされ,udev用のファイルが/etc/udev/rules.d/99-px4video.rulesにインストールされる。

もしkernelが更新された場合は,再度ビルドし直してインストールする必要がある。

この後PX-W3U4を接続し,正常にデバイスドライバーがロードされているか確認する。

# lsmod | grep px
px4_drv               122880  0

と表示されていればデバイスドライバーがロードされている。

もしロードされていない場合は,

# modprobe px4_drv

として,手動でロードしてみる。

また,

# ls /dev/px*
/dev/px4video0  /dev/px4video1  /dev/px4video2  /dev/px4video3

のようにデバイスファイルが作成されている。
チューナーは,px4video0からISDB-S, ISDB-S, ISDB-T, ISDB-Tというように、SとTが2つずつ交互に割り当てられる。

Page Top

デバイスドライバーのアンインストール anchor.png

デバイスドライバーのアンインストールは以下のようにする。

$ cd ~/work/px4_drv/driver
$ sudo make uninstall
$ cd ..

ファームウェアのアンインストール。

# rm /lib/firmware/it930x-firmware.bin
Page Top

LNB電源の出力 anchor.png

PX-W3U4では出力無しと15Vの出力のみに対応している。
デフォルトはLNB電源の出力を行わない。

もしLNB電源の出力を行う場合は,recpt1(録画ツール)を実行する時にパラメータとして--lnb 15を追加する。

Page Top

ICカードリーダー(接触式)を用意する anchor.png

この非公式デバイスドライバーには,PX-W3U4の内蔵カードリーダーで読み書きするデバイスドライバーは用意されていない。
このためB-CASカードを読むためには,接触式ICカードリーダーを別途用意する必要がある。

一般的な接触式のICカードリーダーであれば問題なく使用できると思われる。

今回は安価な接触式ICカードリーダーのSCR3310 v2.0を購入して使用する。

B-CASカード以外にもマイナンバーカードなんかにも使えるので無駄にはならない。

Page Top

SCR3310 v2.0を使用する場合 anchor.png

ICカードリーダー用のライブラリ等をインスト-ルする。

# apt install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools

USBでカードリーダーと接続して,B-CASカードをカードリーダーに挿入(コネクタ部分がある面を上にする)する。
B-CASカードを認識しているか確認する。

# pcsc_scan | grep B-CAS
Japanese Chijou Digital B-CAS Card (pay TV)

このように表示されればB-CASカードを認識できている。Ctrl + C でコマンドを終了させる。

Page Top

リモコン anchor.png

この非公式デバイスドライバーには,PX-W3U4のリモコン用のデバイスドライバーは用意されていない。
なので,PX-W3U4のリモコンは使用できない。

Mirakurun(チューナー制御・テレビ放送受信・動画配信・番組表受信)を使用してクライアントからリモートでチャンネルを変更できるのでリモコンは特には必要無い。

クライアント・アプリをリモコンを使って操作する方法はいろいろ(IRリモコンとかPCをスマートフォンからリモートコントロールとか・・・)あるので,必要であればそれを使用する。

Page Top

録画用ツールをインストールする anchor.png

録画するためのツールとライブラリをインストールする。

Page Top

libarib25ライブラリーのインストール anchor.png

日本のデジタルテレビ放送は暗号化されて電波で配信されている。テレビ放送を受信してB-CASカードの情報を使って復号化する必要があるのだが,このための復号化するプログラムをライブラリ化したのがlibarib25ライブラリー。

ソースコードからビルドしてインストールする。

$ cd ~/work
$ git clone https://github.com/stz2012/libarib25.git
$ cd libarib25/cmake
$ cmake ..
$ make
$ sudo make install
Page Top

録画ツールrecpt1(stz版)のインストール anchor.png

recpt1(stz版)は,チューナーのデバイスドライバーにアクセスしてテレビ放送を録画するツール。PC-W3U4でも使用できるみたいだ。

ソースコードを取得して,テレビ放送をB-CASカードを使って復号化出来るようにするため--enable-b25オプションを付けて上記のlibarib25ライブラリーを使えるようにビルドしてインストールする。

$ cd ~/work
$ git clone https://github.com/stz2012/recpt1.git
$ cd recpt1/recpt1
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

以下のようにして動作テストをしてみる。

$ cd
$ recpt1 --b25 --strip 24 10 test1.ts

テレビ放送が保存出来ていれば動作は大丈夫。もしNo signalの場合,チャンネルの24を変えて実行してみる。チャンネル番号は地域ごとに違っているが,こちらから確認出来る。

Page Top

MirakurunとEPGStationのインストール anchor.png

Mirakurun(チューナー制御・テレビ放送受信・動画配信・番組表受信)とEPGStation(番組表表示・録画・視聴・動画配信)をインストールする。

素晴らしいソフトウェアを作ってくれた作者に感謝です :)

Page Top

Mirakurunのインストール anchor.png

Mirakurunは,地デジ・BS/CSチューナーを使用してテレビ放送を受信し,受信データをネットワークに配信するためのチューナーサーバー。
これにより,ネットワークに接続した複数のクライアントでテレビ放送を視聴・録画することが出来るようになる。

動作にはNode.jsのv10かv12かv14が必要みたいだ。RasbianにインストールされているNode.jsを確認する。

$ node -v
v10.24.0

Rasbian BusterでインストールされているNode.jsはv10.24.0になっている。とりあえずこのまま試してみた。
後日Mirakurunをバージョン3.7.1に更新しようとしたところ,v12かv14かv16のNode.jsが必要になったので,Node.jsをバージョン14.17.4に更新した。(バージョン3.9.0-rc3からv14/v16/v18になった。)
もし未インストール(更新も)の場合,v16がいいのかな。

$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
$ sudo apt install nodejs npm

必要なツールとMirakurunはnpmを使ってインストール出来る。

$ sudo npm install pm2 -g
$ sudo npm install mirakurun -g --unsafe-perm --production

テレビ放送を復号化(スクランブル解除)するツールのarib-b25-stream-testとテスト用の録画ツールとしてrivarun(Mirakurunクライアント)をインストールする。

$ sudo npm install arib-b25-stream-test -g --unsafe-perm
$ sudo npm install rivarun -g

インストールが完了すると既にMirakurunは動作している。
以下のコマンドで,Mirakurunのstatusがonlineなら正常起動している。

$ sudo pm2 status

Mirakurunを更新する場合は,

$ sudo mirakurun stop
$ sudo npm install mirakurun -g --unsafe-perm --production

のようにする。

Mirakurunや録画ツールをアンインストールする場合は,

$ sudo pm2 stop mirakurun-server
$ sudo pm2 delete mirakurun-server
$ sudo pm2 save
$ sudo npm uninstall mirakurun -g --unsafe-perm
$ sudo npm uninstall arib-b25-stream-test -g --unsafe-perm
$ sudo npm uninstall rivarun -g

でアンインストールできる。

次に,Mirakurunの設定を行う。

Page Top

サーバーの設定 anchor.png

/usr/local/etc/mirakurun/server.ymlを編集して,サーバーの設定を行う。

logLevel: -1
disableIPv6: true

にして,ログをなるべく少なくなるようにしてみた。IPv6は使わない。

Page Top

チューナーの設定 anchor.png

/usr/local/etc/mirakurun/tuners.ymlを編集して,チューナー(PX-W3U4)の設定を行う。
以下のように設定した。

- name: PX4-S1
  types:
    - BS
    - CS
  command: recpt1 --device /dev/px4video0 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
 
- name: PX4-S2
  types:
    - BS
    - CS
  command: recpt1 --device /dev/px4video1 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
 
- name: PX4-T1
  types:
    - GR
  command: recpt1 --device /dev/px4video2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
 
- name: PX4-T2
  types:
    - GR
  command: recpt1 --device /dev/px4video3 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

テレビ放送の復号化(スクランブル解除)は,recpt1でも行えるがarib-b25-stream-testで行うようにした。
これはクライアント側で復号化を行いたい場合に対応するため。

Page Top

チャンネル設定 anchor.png

/usr/local/etc/mirakurun/channels.ymlを設定する。
下記のコマンドでチャンネルスキャンを実行すると,設定ファイルを作成してくれる。かなり時間がかかる。

$ sudo curl -X PUT "http://<mirakurunのIPAddress>:40772/api/config/channels/scan"

うまく行けば,/usr/local/etc/mirakurun/channels.ymlファイルに,地上波とBS/CSのチャンネルが設定されている。(BS/CSはバージョン3.4.0から対応されている。)

- name: NHKEテレ・大阪
  type: GR
  channel: '13'
  isDisabled: false
- name: 読売テレビ
  type: GR
  channel: '14'
  isDisabled: false
- name: ABCテレビ
  type: GR
  channel: '15'
  isDisabled: false
- name: MBS毎日放送
  type: GR
  channel: '16'
- name: 関西テレビ
  type: GR
  channel: '17'
  isDisabled: false
- name: テレビ大阪
  type: GR
  channel: '18'
  isDisabled: false
- name: スカパー!ナビ
  type: GR
  channel: '20'
  isDisabled: false
- name: NHK総合・大阪
  type: GR
  channel: '24'
- name: サンテレビ
  type: GR
  channel: '26'
- name: BS朝日
  type: BS
  channel: BS01_0
  serviceId: 151
- name: BS-TBS
  type: BS
  channel: BS01_1
  serviceId: 161
- name: BSテレ東
  type: BS
  channel: BS01_2
  serviceId: 171
- name: WOWOWプライム
  type: BS
  channel: BS03_0
  serviceId: 191
- name: WOWOWライブ
  type: BS
  channel: BS05_0
  serviceId: 192
- name: WOWOWシネマ
  type: BS
  channel: BS05_1
  serviceId: 193
- name: BS11
  type: BS
  channel: BS09_0
  serviceId: 211
- name: スター・チャンネル1
  type: BS
  channel: BS09_1
  serviceId: 200
- name: TwellV
  type: BS
  channel: BS09_2
  serviceId: 222
- name: 放送大学ex
  type: BS
  channel: BS11_0
  serviceId: 231
- name: 放送大学on
  type: BS
  channel: BS11_0
  serviceId: 232
- name: BS釣りビジョン
  type: BS
  channel: BS11_1
  serviceId: 251
- name: BS日テレ
  type: BS
  channel: BS13_0
  serviceId: 141
- name: BSフジ
  type: BS
  channel: BS13_1
  serviceId: 181
- name: BSアニマックス
  type: BS
  channel: BS13_2
  serviceId: 236
- name: NHK BS
  type: BS
  channel: BS15_0
  serviceId: 101
- name: スター・チャンネル2
  type: BS
  channel: BS15_1
  serviceId: 201
- name: スター・チャンネル3
  type: BS
  channel: BS15_1
  serviceId: 202
- name: J SPORTS 4
  type: BS
  channel: BS19_0
  serviceId: 245
- name: J SPORTS 1
  type: BS
  channel: BS19_1
  serviceId: 242
- name: J SPORTS 2
  type: BS
  channel: BS19_2
  serviceId: 243
- name: J SPORTS 3
  type: BS
  channel: BS19_3
  serviceId: 244
- name: WOWOWプラス
  type: BS
  channel: BS21_0
  serviceId: 252
- name: 日本映画専門チャンネル
  type: BS
  channel: BS21_1
  serviceId: 255
- name: グリーンチャンネル
  type: BS
  channel: BS21_2
  serviceId: 234
- name: ディズニー・チャンネル
  type: BS
  channel: BS23_0
  serviceId: 256
- name: BSよしもと
  type: BS
  channel: BS23_1
  isDisabled: false
  serviceId: 265
- name: BSJapanext
  type: BS
  channel: BS23_2
  isDisabled: false
  serviceId: 263
- name: BS松竹東急
  type: BS
  channel: BS23_3
  isDisabled: false
  serviceId: 260
- name: TBSチャンネル1
  type: CS
  channel: CS2
  serviceId: 296
- name: テレ朝チャンネル1
  type: CS
  channel: CS2
  serviceId: 298
- name: テレ朝チャンネル2
  type: CS
  channel: CS2
  serviceId: 299
- name: ディズニージュニア
  type: CS
  channel: CS2
  serviceId: 339
- name: スカイA
  type: CS
  channel: CS4
  serviceId: 250
- name: 時代劇専門ch
  type: CS
  channel: CS4
  serviceId: 292
- name: エンタメ~テレ
  type: CS
  channel: CS4
  serviceId: 301
- name: MTV
  type: CS
  channel: CS4
  serviceId: 323
- name: ホームドラマch
  type: CS
  channel: CS6
  serviceId: 294
- name: ミュージック・エア
  type: CS
  channel: CS6
  serviceId: 324
- name: 歌謡ポップスch
  type: CS
  channel: CS6
  serviceId: 329
- name: カートゥーン
  type: CS
  channel: CS6
  serviceId: 331
- name: ディスカバリーチャンネル
  type: CS
  channel: CS6
  serviceId: 340
- name: アニマルプラネット
  type: CS
  channel: CS6
  serviceId: 341
- name: CNNj
  type: CS
  channel: CS6
  serviceId: 354
- name: 囲碁・将棋チャンネル
  type: CS
  channel: CS6
  serviceId: 363
- name: 東映チャンネル
  type: CS
  channel: CS8
  serviceId: 218
- name: 日テレNEWS24
  type: CS
  channel: CS8
  serviceId: 349
- name: 衛星劇場
  type: CS
  channel: CS10
  serviceId: 219
- name: スポーツライブ+
  type: CS
  channel: CS10
  serviceId: 800
- name: スカチャン1
  type: CS
  channel: CS10
  serviceId: 801
- name: GAORA
  type: CS
  channel: CS12
  serviceId: 254
- name: エムオン!
  type: CS
  channel: CS12
  serviceId: 325
- name: キッズステーション
  type: CS
  channel: CS12
  serviceId: 330
- name: ナショナルジオグラフィック
  type: CS
  channel: CS12
  serviceId: 343
- name: ザ・シネマ
  type: CS
  channel: CS14
  serviceId: 227
- name: ファミリー劇場
  type: CS
  channel: CS14
  serviceId: 293
- name: スーパー!ドラマTV
  type: CS
  channel: CS14
  serviceId: 310
- name: ヒストリーチャンネル
  type: CS
  channel: CS14
  serviceId: 342
- name: SKY STAGE
  type: CS
  channel: CS16
  serviceId: 290
- name: AXN海外ドラマ
  type: CS
  channel: CS16
  serviceId: 311
- name: AXNミステリー
  type: CS
  channel: CS16
  serviceId: 316
- name: スペシャプラス
  type: CS
  channel: CS16
  serviceId: 321
- name: AT-X
  type: CS
  channel: CS16
  serviceId: 333
- name: BBCワールドニュース
  type: CS
  channel: CS16
  serviceId: 353
- name: ムービープラス
  type: CS
  channel: CS18
  serviceId: 240
- name: ゴルフネットワーク
  type: CS
  channel: CS18
  serviceId: 262
- name: チャンネル銀河
  type: CS
  channel: CS18
  serviceId: 305
- name: 女性ch/LaLa
  type: CS
  channel: CS18
  serviceId: 314
- name: フジテレビONE
  type: CS
  channel: CS20
  serviceId: 307
- name: フジテレビTWO
  type: CS
  channel: CS20
  serviceId: 308
- name: フジテレビNEXT
  type: CS
  channel: CS20
  serviceId: 309
- name: スペースシャワーTV
  type: CS
  channel: CS20
  serviceId: 322
- name: TBSチャンネル2
  type: CS
  channel: CS22
  serviceId: 297
- name: FOX
  type: CS
  channel: CS22
  serviceId: 312
- name: TBS NEWS
  type: CS
  channel: CS22
  serviceId: 351
- name: 映画ch・NECO
  type: CS
  channel: CS24
  serviceId: 223
- name: 日テレG+
  type: CS
  channel: CS24
  serviceId: 257
- name: MONDO TV
  type: CS
  channel: CS24
  serviceId: 295
- name: 日テレプラス
  type: CS
  channel: CS24
  serviceId: 300

住んでいる所が大阪なんで,↑のようになった。

ここ数年,放送が追加・停波などがあって以下のように修正している。

  • 06/01/2021 修正
    ディズニー・チャンネル(BS3_2 → BS23_0)に修正。
  • 03/27/2022 修正
    BSよしもと(BS23_1),BSJapanext(BS23_2),BS松竹東急(BS23_3)を追加。
  • 11/01/2022 修正
    BSスカパー!(BS11_0)が停波したので削除。
    放送大学ex(BS11_1 → BS11_0),放送大学on(BS11_1 → BS11_0),BS釣りビジョン(BS11_2 → BS11_1)がそれぞれ繰り上がったので修正。
  • 12/01/2023 修正
    NHK BS1NHK BS(BS15_0のまま)になったので修正,NHK プレミアム(BS03_1)が停波(能登半島地震後,臨時目的放送として継続放送中)したので削除。

/usr/local/etc/mirakurun/channels.ymlが作成できたら,Mirakurunを再起動する。

$ sudo mirakurun restart

録画出来るか試してみる。

$ rivarun --mirakurun localhost:40772 --b25 --ch GR/22 15 22.ts

15秒の録画ファイルが出来ていて,再生できれば問題ない。

次に他のPCでVLCを使ってMirakurunで配信される動画ストリームを再生してみる。
VLCのメニューのメディアを開く>ネットワークを開くで,

http://<mirakurunのIPAddress>:40772/api/channels/GR/<チャンネル番号>/stream

とか

http://<mirakurunのIPAddress>:40772/api/channels/BS/<チャンネル名>/services/<サービスID>/stream

で,地デジやBS放送が視聴できればMirakurunは正常に動作している。
チャンネル番号やサービスIDは,上記の/usr/local/etc/mirakurun/channels.ymlに設定されている値を使う。

WEBブラウザで,http://<mirakurunのIPAddress>:40772 にアクセスする。
Mirakurunの動作や設定管理が行えるので,必要であれば追加の設定をする。

Page Top

ログの管理 anchor.png

$ sudo pm2 install pm2-logrotate

ログを抑えるための設定をする。/etc/logrotate.d/mirakurun
下記の内容のmirakurunファイルを作成する。

/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
{
  daily
  compress
  rotate 7
  missingok
  notifempty
}

Mirakurunを再起動する。

$ sudo mirakurun restart
Page Top

EPGStationのインストール anchor.png

EPGStationはテレビ放送の視聴・録画・動画配信・番組表予約に対応した録画サーバー。
テレビ放送の番組を確認したり,録画予約をしたり,録画を行ったり,録画データの管理,テレビ・録画の視聴なんかがWEBブラウザ上で出来るようになる。

EPGStationはTVチューナーとしてMirakurunを使用している。 EPGStationをMirakurunが動作しているマシン以外のマシンで動かすことも出来るが,今回はRaspberry Piで両方動かすようにしてみた。

Node.jsはv14またはv16(バージョン2.7.0からv18)が必要。またffmpegSQLite3MySQLのDBも必要。

次のようにしてインストールした。

$ cd
$ git clone https://github.com/l3tnun/EPGStation.git
$ cd EPGStation
$ npm run all-install
$ npm run build

このインストール作業は,かなり時間がかかる。
うまく行ったら設定ファイルを用意する。

$ cp config/config.yml.template config/config.yml
$ cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
$ cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
$ cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml
$ cp config/enc.jp config/enc.jp

DBにはデフォルトのSQLiteを使っている。SQLiteで正規表現を使えるようにする。

$ wget https://www.sqlite.org/2019/sqlite-amalgamation-3290000.zip
$ wget https://www.sqlite.org/2019/sqlite-src-3290000.zip
$ unzip sqlite-amalgamation-3290000.zip
$ unzip sqlite-src-3290000.zip
$ cp sqlite-src-3290000/ext/misc/regexp.c sqlite-amalgamation-3290000
$ cd sqlite-amalgamation-3290000
$ gcc -g -fPIC -shared regexp.c -o regexp.so
$ cp regexp.so ~/work/EPGStation/data/
Page Top

EPGStationの設定 anchor.png

config/config.ymlファイルで設定を行う。
設定できるオプションとかいろいろある。作者のページを参照して設定する。

sqlite:
    extensions:
        - '/home/yuji/EPGStation/data/regexp.so'            <-- 正規表現が使える
    regexp: true

ffmpeg: '/usr/bin/ffmpeg'                                   <-- ffmpegのパスを設定
ffprobe: '/usr/bin/ffprobe'                                 <-- ffprobeのパスを設定

recorded:
    - name: recorded
      path: '/mnt/u3/video/record'                          <--  録画ファイルの保存先を設定

「Stream: live: MP4: 」セクションに以下を追加する。(リアルタイム視聴用)

  - name: h264_omx_4Mbps
    cmd:
          '%FFMPEG% -re -dual_mono_mode main -i pipe:0 -sn -c:a aac -ar 48000 -ac 2 -b:a 64k
          -c:v h264_omx -b:v 4M -profile:v baseline -preset veryfast -tune fastdecode,zerolatency
          -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4
          pipe:1'

config/enc.jsファイルを修正する。(録画エンコード用)
14行目あたりを

const codec = 'h264_omx';

に変更。
35行目あたりを

if (videoHeight > 480) {
   videoFilter += ',scale=-2:480'
}

に変更。
40行目あたりに以下を追加する。

Array.prototype.push.apply(args, ['-b:v', '1500k']);

EPGStationを起動する。

$ sudo pm2 startup
$ sudo pm2 start dist/index.js --name "epgstation"
$ sudo pm2 save

起動しているか確認する。

$ sudo pm2 list

WEBブラウザで以下のようにEPGStationアクセスする。

http://<EPGStationのIPAddress>:8888

しばらくしてから,番組表をクリックして番組表が表示されれば動作している。

epgstation.png
Page Top

EPGStationの更新 anchor.png

バージョンアップ等で更新する場合は,

$ sudo pm2 stop epgstation
$ cd ~/EPGStation
$ git pull
$ npm run all-install
$ npm run build

とすると,更新できる。
もしエラー等が出てうまくインストール出来ない場合は,npmを更新してみるとかnpmのcacheをクリアーしたりする。

$ sudo npm install -g npm

その後,再度EPGStationを更新してみる。

うまく更新ができたら,EPGStationを再起動する。

$ sudo pm2 start dist/index.js --name "epgstation"
Page Top

テレビ放送や録画したデータを見る方法 anchor.png

Mirakurun/EPGStationの環境でテレビ放送の視聴や録画した動画データを再生するには,いくつか方法がある。

  • テレビ放送の視聴
    • WEBブラウザでEPGStationから視聴する
      WEBブラウザを使ってEPGStationの放送中からテレビ放送を視聴することができる。
      WEBブラウザで視聴する場合は,放送のMPEG2そのまま無変換で視聴する方法と,ffmpegでリアルタイムエンコードしたものを視聴する方法があるが,Rspberry Pi 4Bではリアルタイムエンコードの処理速度の問題でカクカクになってしまう。MP4でh264_omxを選んでもリアルタイムエンコードしながら視聴するのはちょっと厳しい。
      EPGStationを十分な速度が出る別のマシンで動作させた場合,リアルタイムエンコードでの視聴も問題はない。
    • WindowsマシンでTVTestを使ってテレビ放送を視聴する
      BonDriver_MirakurunもしくはBonDriver_EPGStationをTVTestのBonDriverに使うことで,TVTestでMirakurun(もしくはEPGStation)をチューナーとしてテレビ放送を視聴できる。
      file自前ビルドしたBonDriver_Mirakurun file自前ビルドしたBonDriver_EPGStation
    • VLCなどのマルチメディアプレーヤーで視聴する
      MirakurunまたはEPGStationでストリーミング配信して,それをVLCなどのマルチメディアプレーヤーで視聴できる。スマートフォンやLinuxマシン,Windowsマシンなど多くの環境で使用できる。
      TV.m3u8ファイルのようなプレイリストを作っておけば,マルチメディアプレーヤー側で放送局を切り替えて視聴出来るようになる。
      http://<Mirakurunサーバー>:40772/api/iptv/playlist でプレイリストに直接アクセスできる。
      http://<EPGSStationサーバー>:8888/api/iptv/channel.m3u8?mode=1 のようにするとリアルタイムエンコードするプレイリストに直接アクセスできる。
      ただVLCだとプレイリストでのチャンネル選択が操作しづらい。
      PotPlayer(Windowsのみ)だとプレイリストでのチャンネル選択も比較的やりやすい。
    • WindowsやLinux,MacでMirakTestでテレビ放送を視聴する
      プラグインで機能を拡張できる。
    • KodiPVR IPTV Simple Clientアドオンを使ってテレビ放送を視聴する
      KodiはWindows,Linux,Android,Raspberry Pi,macOS, iOSなんかで動作するメディアプレーヤー・アプリ。
      MirakurunのM3U Playlist(チャンネル)とXMLTV(番組表)をKodiのIPTV Simple Clientアドオンに設定すればテレビ放送が視聴できる。
      Fire TV Stickを使うと,リビングにあるテレビ(チューナーレステレビでも)でネットワーク経由で視聴できるようになって快適。
    • スマートフォンのアプリでテレビ放送を視聴する
      IPTVクライアントアプリでMirakurunやEPGStationのM3U PlaylistとXMLTVを登録すれば,風呂でもテレビが見れる :)
  • 録画予約をする
    WEBブラウザ(Windows,Linux,Android端末...)からEPGStationを開いて,番組表や検索結果から録画予約・録画が出来る。
    VPNで家のNetworkに接続すれば,外出先から録画予約をすることも出来る。
  • 録画した動画データを再生
    • WEBブラウザでEPGStationにアクセスして録画データを再生する
    • EPGStationで録画データーをストリーミング配信(HLSも可)して,それをVLCなどのマルチメディアプレーヤーやWEBブラウザなどで視聴する
    • 録画した動画ファイルをDLNAメディアサーバーなどで扱って,DLNAクライアントで視聴する
    • 録画した動画ファイルをSambaなどでファイル共有して,VLCなどのマルチメディアプレーヤーで視聴する

EPGStationで放送中のテレビ放送をリアルタイムエンコードしてストリーム配信してVLCなんかで視聴する場合,Raspberry Pi4でffmpegによるリアルタイムエンコードを行うと動画がとぎれとぎれになってしまった。
m2tsの無変換(リアルタイムエンコードはしない)でストリーム配信して視聴する場合,使用しているネットワーク帯域が十分であれば(NHK BSプレミアムだと18Mbps程度が必要)うまく視聴できる。家のネットワーク環境ではギリギリだった。

録画した動画ファイルを再生する場合は,ネットワーク上のファイルサーバーに保存しても特にとぎれとぎれになることはないみたいだ。


新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 9577, today: 5, yesterday: 0
最終更新: 2021-08-21 (土) 09:57:30 (JST) (977d) by yuji