注意
現状、 Node.js 16系では EPGStationはスムーズにインストールが進められない模様です。
https://github.com/l3tnun/EPGStation/issues/559
この記事では
EPGStation を Windows10環境にセットアップする手順を検証し動作を確認します。
なおMirakurun/EPGStationはLinux下での利用を推奨しており、Windows下で動かすことは "Experimental, Unstable, Not Recommended, Not Tested"/"実験的"という位置づけになっています。
先に結果から
Mirakurun, EPGStationは十分に安定して動きます。
nns779氏のWinUSB版px4_drvのおかげでPlexユーザも幸せに。
Mirakurun, EPGStationはWindows下でも十分に安定して動きます。
従来PLEXユーザはPLEXが提供するWindowsドライバの品質問題でDrop多発に悩まされていましたが、2021年7月にnns779氏が非公式ドライバWinUSB版px4_drvを公開されたことで状況が一変、PLEXでもWindows環境下で安定した動作が期待できるようになりました!!ありがたや。。
Windows | Windows | Linux | |
---|---|---|---|
Tuner | PX-Q3U4 | PX-Q3U4 | PX-Q3U4 |
Tuner Driver | WinUSB版px4_drv by nns779 | BDA Driver Ver.1.2 by PLEX | px4_drv by nns779 |
動作 | 🌞安定動作 | Drop多発 | 🌞安定動作 |
検証した環境
ハードウェアは メーカー製PC + PLEXチューナ + ICカードリーダー の組合せ。
ハードウェア | 製品名 |
---|---|
PC | Core i5-6200U @ 2.30GHz / Memory 4G |
TV チューナー | PLEX PX-Q3U4 |
IC Card Reader | ACR39-NTTCom |
ソフトウェアは2021年12月6日時点最新をつかわせてもらいました
ソフトウェア名 | Owner | バージョン | リリース日 |
---|---|---|---|
Windows 10 Home | バージョン 21H2 | 2021年11月 | |
EPGStation | l3tnun氏 | 2.6.17 | 2021年12月28日 |
Mirakurun | kanreisa氏 | 3.9.0-beta.24 | 2021年12月21日 |
BonRecTest | rndomhack氏 | 1.0.0 | 2016年4月10日 |
px4_drv WinUSB版 | nns779氏 | commit cfe0712 | Commits on 2021年9月9日 |
NodeJS | v14.18.2 |
構築手順
公式ドキュメント
公式ドキュメントの手順に基づいて作業しました。
- Mirakurun:Platforms.md
- EPGStation:Windows 用 セットアップマニュアル
1. node.js のインストール
以下のURLから node.jsをダウンロード。
現在、Node.js 16系だとインストール中にエラーが出るので以前のLTSであるNode.js 14系をインストールします。
https://nodejs.org/ja/
↑こちらのページにアクセスして「LTSのリリーススケジュールをご覧ください」をクリックして
下にスクロールして v14をクリック
node-v14.18.2-x64.msi をダウンロード。
ダウロードしたインストーラーを開いてインストール開始します。
標準オプションから変えた箇所として、C/C++のビルド環境を導入するかどうかの質問に対してチェック。
これにより、node.jsのインストール後 にパッケージ管理ソフトの Chocolatey がインストール/実行され、Visual Studio 2017 Build Tools など後にツールのコンパイルに使用するパッケージが導入されます。
2. Mirakurun のインストール
Windowsの [スタートメニュー] から [Windows PowerShell]を右クリック [管理者として実行]し 、以下のコマンドを入力。
npm install winser@1.0.3 -g
npm install mirakurun@latest -g --production
3. FFmpegのダウンロードと配置
ビルド済Windows版FFMPEGをダウンロード。
https://github.com/BtbN/FFmpeg-Builds/releases
今回は"GPLライセンス版"、"Staticリンク"を選択。
ffmpeg-n4.4-78-g031c0cb0b4-win64-gpl-4.4.zip
ダウンロードしたものを展開し、ffmpeg.exe
ffprobe.exe
をCドライブ直下に作成したC:\ffmpeg
に格納。
このパスはのちほどEPGStationのConfigから指定します。
4. Git のインストール
ふたたび 管理者として実行 した Windows PowerShell から Chocolatey を使ってgitをインストール。
choco install git.install
5. EPGStation のインストール
Powershellから Node.js (LTS 版推奨), Mirakurun, windows-build-tools, FFmpeg/FFprobe がインストール済みであることを確認。
インストール済みであるときは以下のように出力されます。
(一度も Internet Explorer を開いたことがない環境ではInvoke-WebRequest
が失敗します。Windowsをインストールしたばかりのときは注意)
node --version
Invoke-WebRequest http://localhost:40772/api/version
npm info windows-build-tools
EPGStation をダウンロードしインストール。
ダウンロードする際に改行コードが変換されないように autocrlf false
としています。これをやらないと次のbuild
でeslintがCRを検出して大量にエラーをはきます。
git config --global core.autocrlf false
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm run all-install
ビルド。
npm run build
サンプルの設定ファイルをコピー。
copy .\config\config.yml.template .\config\config.yml
copy .\config\operatorLogConfig.sample.yml .\config\operatorLogConfig.yml
copy .\config\epgUpdaterLogConfig.sample.yml .\config\epgUpdaterLogConfig.yml
copy .\config\serviceLogConfig.sample.yml .\config\serviceLogConfig.yml
copy .\config\enc.js.template .\config\enc.js
設定ファイルを編集。
"ファイル名を指定して実行"で notepad %USERPROFILE%\EPGStation\config\config.yml
と入力、EPGStationの設定ファイルを編集。(公式手順ではTeraPad, VSCode などのエディタが推奨されていますが、モダンなWindowsに付属している Notepad.exe なら大丈夫なようです)
最低限の以下の行を書き換え。
mirakurunPath: 'http://localhost:40772'
ffmpeg: 'C:\\ffmpeg\\ffmpeg.exe'
ffprobe: 'C:\\ffmpeg\\ffprobe.exe'
6.EPGStationの自動起動の設定
再び管理者でPowerShellを開き、EPGStationをインストールしたディレクトリに移動してからnpm run install-win-service を実行。
このコマンドを実行することで、EPGStationは起動状態になりました。
> cd $env:USERPROFILE\EPGStation
> npm run install-win-service
ここまでの動作確認
ここまでの手順で [サービス] にmirakurun と EPGStation が登録されていますので、管理コンソールで登録されていること、開始状態となっていることを確認。
管理コンソールを開き、、
サービス一覧からmirakurun と EPGStation を探します。 それぞれ 状態 が 開始 となっていることを確認。
ブラウザで開いてアクセスできることを確認。
http://localhost:8888/ が EPGStationです。
今のところmirakurun のチューナもチャンネルも設定していないので、番組情報は何も表示されません。
http://localhost:40772/ が Mirakurun GUI です。
7. BonRecTest のダウンロード
https://github.com/rndomhack/BonRecTest/releases
こちらのプロジェクトからビルド済みのものをいただきました。
x86 バイナリと x64 バイナリがありますが x64 バイナリを選択しました。
今回はC:\直下に C:\BonDrivers というフォルダを作成し保存。
8.px4_drvのWinUSB版ダウンロードとビルド、インストール
まずは px4_drvレポジトリの WinUSB版 ブランチをダウンロードしてきます。
> git clone https://github.com/nns779/px4_drv -b winusb
次にWinUSBドライバをWindowsにインストールします。
このインストールの時だけ署名の強制を無効化する必要があります。インストールさえ済めば通常起動で問題ありません。
署名の強制を無効化して起動します。
「設定」→「更新とセキュリティ」→
(UEFI)→「ドライバー署名の強制を無効にする(F7キー)」
次にドライバのデバイスマネージャーを開き、PCに接続したPLEXデバイスを探して右クリックからドライバーの更新
コンピューターを参照してドライバーを検索
次の場所でドライバーを検索します:に
px4_drvをダウンロードした場所を設定 (ここでは C:\Users<ユーザ名>\px4_drv\winusb\pkg\inf)
署名がないため警告が出ますが「このドライバーソフトウェアをインストールします」を選択
問題なくドライバが適用できたら、再起動。通常モードに戻ります。
次にBonDriverをビルドしていきます。
まずはPowerShellを管理者として実行し Visual Studio 2019 Build Toolsをインストール
> choco install visualstudio2019-workload-vctools
その後、スタートメニューから
Visual Studio 2019 > Visual Studio Tools> VC > x64 Native Tools Command Prompt for VS 2019
と辿りビルド用のコマンドプロンプトを開き、以下の通りBonDriver_BDAとそのほかのレポジトリをコピーして配置、ビルド。
cd %userprofile%
cd px4_drv\winusb
msbuild /p:Configuration=Release
ビルドされたファイルと設定ファイルをC:\BonDrivers へコピー
copy build\x64\Release\BonDriver_PX4.dll C:\BonDrivers\BonDriver_PX4-T.dll
copy pkg\BonDriver_PX4\BonDriver_PX4-T.ini C:\BonDrivers\
copy pkg\BonDriver_PX4\BonDriver_PX4-T.ChSet.txt C:\BonDrivers\
copy build\x64\Release\BonDriver_PX4.dll C:\BonDrivers\BonDriver_PX4-S.dll
copy pkg\BonDriver_PX4\BonDriver_PX4-S.ini C:\BonDrivers\
copy pkg\BonDriver_PX4\BonDriver_PX4-S.ChSet.txt C:\BonDrivers\
copy build\x64\Release\DriverHost_PX4.exe C:\BonDrivers\
copy pkg\DriverHost_PX4\DriverHost_PX4.ini C:\BonDrivers\
copy build\x64\Release\fwtool.exe c:\BonDrivers\
copy ..\fwtool\fwinfo.tsv c:\BonDrivers\
Powershellに切り替えて、Plexのホームページからドライバをダウンロードしてファームウェアのみ抜き出します。 氏曰く「it930x-firmware.bin はCRC32が 0b41a994 のものがおすすめ」とのことです。
cd C:\BonDrivers\
Invoke-WebRequest -Uri http://plex-net.co.jp/download/pxq3u4v1.2.zip -o pxq3u4v1.2.zip
Expand-Archive pxq3u4v1.2.zip
.\fwtool.exe .\pxq3u4v1.2\x64\PXQ3U4.sys it930x-firmware.bin
Remove-Item pxq3u4v1.2 -Recurse
Remove-Item pxq3u4v1.2.zip
9. arib-b25-stream-test.exe のダウンロードと配置
Windowsでも使えるarib-b25-stream-test.exe は tsukumi氏が配布されていますのでので使わせてもらいました。
https://github.com/tsukumijima/libaribb25/
Releases のページでビルド済みバイナリがダウンロードできます。
ダウンロードしたarib-b25-stream-test.exeを C:\BonDrivers にコピーします。
10. BonDriverの配置と動作確認
ここまでの手順でC:\BonDrivers フォルダに配置されたファイルは次のようになりました。
C:\BonDrivers を Mirakurunから参照できるようにシステムス全体コープでPathに追加。
動作確認
Mirakurunに設定する前に、これらのツールが単体で動作するか確認。
チューナにアンテナケーブル、ICカードリーダにICカードをそれぞれ挿入してから以下のコマンドをコマンドプロンプトに張り付けることでMirakurun / EPGStation を使わずに、BonRecTest / BonDriver /b25-stream-test のテストができます。なお、ICカードリーダはPLEXチューナ内蔵のものは使えません。
# 地上波
BonRecTest.exe --log --driver BonDriver_PX4-T.dll --output - --space 0 --channel 14 | arib-b25-stream-test.exe | c:\ffmpeg\ffplay -i - -v warning -x 960 -y 540
# BS
BonRecTest.exe --log --driver BonDriver_PX4-S.dll --output - --space 0 --channel 16 | arib-b25-stream-test.exe | c:\ffmpeg\ffplay -i - -v warning -x 960 -y 540
BonRecTest単体としてで問題なく動作したので、Mirakurunに設定していきます。
11.mirakurunの チューナー、チャンネルの設定
Mirakurunにチューナーやチャンネルを設定。
チューナ
MirakurunにGUIがついたおかげでMirakurunの設定作業がとてもユーザーフレンドリーになっていますが、8個分のチューナーをGUIで設定するのは少し骨が折れるので、ここは以前までのバージョンと同じやり方で、設定ファイルをメモ帳で直接編集しました。
"ファイル名を指定して実行"で notepad %USERPROFILE%\.Mirakurun\tuners.yml
として編集。
- name: PX_x3U4_S1
types:
- BS
- CS
command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_S2
types:
- BS
- CS
command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_S3
types:
- BS
- CS
command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_S4
types:
- BS
- CS
command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_T1
types:
- GR
command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_T2
types:
- GR
command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_T3
types:
- GR
command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
- name: PX_x3U4_T4
types:
- GR
command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
decoder: arib-b25-stream-test.exe
isDisabled: false
ファイルを編集後、GUI( http://localhost:40772/ ) の右上のボタンからMirakurunの再起動します。
チャンネル
次はチャンネルを設定していきました。
地上波チャンネル
Windows環境下でも Mirakurun API経由でChannel Scanを行うことができました。
これにより地上波については自動的に設定することができます。
Channel Scan APIの仕様については以下のURLで確認できます。
http://localhost:40772/swagger-ui/?url=/api/docs#/config/channelScan
curl -X PUT "http://localhost:40772/api/config/channels/scan?type=GR&minCh=0&maxCh=39&refresh=true" -H "accept: text/plain"
BS/CSチャンネル
Mirakurun 3.4.1 から BS/CS のチャンネルスキャンができるようになるコードがマージされましたがLinuxを対象とした機能なので、WindowsのBondriver体系のBS/CSチャンネルはスキャンできません。ここでは直接チャンネル設定ファイルを編集します。
BS/CSのチャンネル定義は BonDriver_PX4-S.ChSet.txt に記載されています。
サービスを絞らずに設定すればMirakurunがサービスを検索してくれますので、下記の設定では受信できる限りのチャンネルを設定したことになります。
- name: BS01/TS0
type: BS
space: 0
channel: '0'
- name: BS01/TS1
type: BS
space: 0
channel: '1'
- name: BS01/TS2
type: BS
space: 0
channel: '2'
- name: BS03/TS0
type: BS
space: 0
channel: '3'
- name: BS03/TS1
type: BS
space: 0
channel: '4'
- name: BS05/TS0
type: BS
space: 0
channel: '5'
- name: BS05/TS1
type: BS
space: 0
channel: '6'
- name: BS09/TS0
type: BS
space: 0
channel: '7'
- name: BS09/TS1
type: BS
space: 0
channel: '8'
- name: BS09/TS2
type: BS
space: 0
channel: '9'
- name: BS11/TS1
type: BS
space: 0
channel: '10'
- name: BS11/TS2
type: BS
space: 0
channel: '11'
- name: BS11/TS3
type: BS
space: 0
channel: '12'
- name: BS13/TS0
type: BS
space: 0
channel: '13'
- name: BS13/TS1
type: BS
space: 0
channel: '14'
- name: BS13/TS2
type: BS
space: 0
channel: '15'
- name: BS15/TS0
type: BS
space: 0
channel: '16'
- name: BS15/TS1
type: BS
space: 0
channel: '17'
- name: BS19/TS0
type: BS
space: 0
channel: '18'
- name: BS19/TS1
type: BS
space: 0
channel: '19'
- name: BS19/TS2
type: BS
space: 0
channel: '20'
- name: BS19/TS3
type: BS
space: 0
channel: '21'
- name: BS21/TS0
type: BS
space: 0
channel: '22'
- name: BS21/TS1
type: BS
space: 0
channel: '23'
- name: BS21/TS2
type: BS
space: 0
channel: '24'
- name: BS23/TS0
type: BS
space: 0
channel: '25'
- name: ND02
type: CS
space: 1
channel: '0'
- name: ND04
type: CS
space: 1
channel: '1'
- name: ND06
type: CS
space: 1
channel: '2'
- name: ND08
type: CS
space: 1
channel: '3'
- name: ND10
type: CS
space: 1
channel: '4'
- name: ND12
type: CS
space: 1
channel: '5'
- name: ND14
type: CS
space: 1
channel: '6'
- name: ND16
type: CS
space: 1
channel: '7'
- name: ND18
type: CS
space: 1
channel: '8'
- name: ND20
type: CS
space: 1
channel: '9'
- name: ND22
type: CS
space: 1
channel: '10'
- name: ND24
type: CS
space: 1
channel: '11'
ただし見る予定のないチャンネル(サービス)をたくさん加えておくと、EPGを集めて回るMirakurunの稼働もあがるしEPG情報の保存先であるPrograms.jsonも大きくなる一方なので、そこはうまく絞り込んだほうがよさそうです。チャンネル単位でDisableにするには次のGUIで編集ができます。
Mirakurun GUI
不要なチャンネル、受信できないチャンネルをGUI経由でDisabled状態にしました。
設定が終わったのでMirakurun GUI右上のRestartでMirakurunを再起動しました。
最後の動作確認
再起動後のMirakurunは getServices() を地上波/BS/CSすべてのchに行い services.json を構成した後、getEPG()でEPGデータを収集、programs.jsonに保存していきました。チャンネル数が多いと30分単位でかかるので終了するまでEventsタブを見ながら待ちました。
http://localhost:40772/
EPGStation の番組表も見てみましょう。地上波の番組表が見られました。
http://localhost:8888/
ここまでで構築は終わりです。
この環境をしばらく運用してみましたが、特に問題は見つかりませんでした。
オプション:EPGStation上で正規表現を有効にする
ここまでの手順でも特に問題なく利用できるのですが、録画ルールなどで正規表現を使う場合はさらにSQLiteの拡張を導入します。
公式ドキュメントに従い SQLiteで正規表現を使えるように拡張を導入します。
> cd %userprofile%
> curl -O https://www.sqlite.org/2020/sqlite-amalgamation-3330000.zip
> curl -O https://www.sqlite.org/2020/sqlite-src-3330000.zip
> powershell Expand-Archive sqlite-amalgamation-3330000.zip .
> powershell Expand-Archive sqlite-src-3330000.zip .
> copy sqlite-src-3330000\ext\misc\regexp.c sqlite-amalgamation-3330000
> cd sqlite-amalgamation-3330000
> cl regexp.c -link -dll -out:regexp.dll
> cd ..
sqlite:
extensions:
- 'C:/Users/<ユーザ名>/sqlite-amalgamation-3330000/regexp.dll'
regexp: true
最後の手順
素晴らしいソフトウェアを公開している開発者やコミュニティに感謝し貢献することを検討してみました。backerは手軽な手段です。
おまけ
Android TV / Fire TV向け EPGStation クライアントアプリつくりました。
Android TV や Fire TV からEPGStation が見れるようになるアプリです。
Google Play ストア / Amazon App ストア から簡単にインストールできます。