夏だ!エアコンだ!引きこもりだ!!!
「夏だから外に出たい気もするけど暑い…」という複雑な感情を抱きながら窓の外を眺めるyanoshiです。皆さんいかがお過ごしでしょうか。
引きこもりライフの充実のために録画サーバーの構成を見直すことにしました。今日はそんな話。
個人的にはWindows上で組む録画サーバーとしてはかなり完成されたものになってきた気がしています。良い話!
なおこの記事で起きるあらゆる事象に対して当方は一切責任を負いません。お約束ですね。
目次
- 前回までのお話
- 録画マシンを1台にまとめてDocker for Windowsリベンジ Vagrantで構築
- Mirakurun
- TVTest
- Chinachu Gamma
- まとめ
- 余談1: AndroidからChinachuを使う
- 余談2: iOSからChinachuを使う
- 余談3: どうしてWSLじゃないのか
スポンサードリンク
2017年10月31日追記: 元々Docker for Windows上で動作させるお話でしたが、残念ながら安定して動作しませんでした。なのでVagrantで実行するように変更しております。
前回までのお話
MirakurunをWindows上で動かして、VirtualBox上でChinachu betaを動かして連携させたってのが前回までのあらすじです。
その後Docker for Windows上で動かそうとしたら、ネットワークが不安定で涙を流すという展開に。
録画マシンを1台にまとめてDocker for Windowsリベンジ Vagrantで構築
Chinachu ganmaがリリースされ、Dockerのバージョンも1.17になりました。そろそろ上記Docker for Windowsの不具合も直っているだろうと思って再度試してみることにしました。
Mirakurun with PT3(BonDriver) + Chinachu Gamma in Docker for Windowsって感じです。
構成概略図
Vagrantの場合
Docker for Windowsの場合
ソフトウェア構成
- Mirakurun in Windows10 with BonDriver
- Chinachu Gammaを動かすには必須なので
- 近頃はBonDriver_Mirakurunが登場しBonDriverProxyExは不要になりました
- BonDriverを利用しているのでこれまでの録画環境からすぐに移行可能
- TVTest
- みんな大好きTVTestさん
- Chinachu ganma in
Docker for WindowsUbuntu 16.04 by Vagrant- 今回の主役!
素晴らしいプロダクトを開発・提供してくださっている方々に多謝!!
ハードウェア構成
CPU
Core i3 4160
RAM
DDR3 4GB * 2
GPU
CPU内蔵グラフィック
SSD
システム向け
KINGSTON SV300S37A120G
録画ファイル向け
SanDisk Ultra II 480GB
ICカードリーダー
GR/BS/CSチューナーカード
PT3 3枚
なおPT3のドライバはちゃんとWindows 10でも動作します。はじめての人はドライバ、SDKを以下より入手してセットアップしましょう。
PT3 ソフトウェアのダウンロード (最新版/SHA-2)
今から新規で録画サーバーを組む人へ
PT3はもう生産修了してしまっているので、びっくりするくらい高くなってますね…本構成はBonDriverで動かしているので、Linuxでは動作しないチューナーカードでもMirakurun及びChinachuを動かすことができます。
ってことで今から新規で録画サーバーを組むなら無理してPT3を選ばず、PX-W3PE4等を選択した方が良いのかもしれません。
Mirakurun
MirakurunはチューナーをRESTfulなAPIとして提供してくれるミドルウェアです。Spinel的な機能も有しているので色々と便利。
github.com
Node.jsのインストール
Node.js
2017年7月現在、最新LTSはv6.11.0なのでこちらを入れます。
※Node.jsなのでバージョンに関しては割とシビアだと思います。最新版のMirakurunがどのバージョンでの動作が保証されているか、ちゃんとREADME.mdをチェックしましょう。
Mirakurunのインストール
PowerShellを管理者で実行させます。(Creators Updateからスタートボタンを右クリックですぐPowerShellを起動させられるようになったよね。)
後はREADME.mdの内容の通り以下コマンドを実行します。npmでサクッとMirakurunがインストールされます。良い話。
npm install @kanreisa/winser -g npm install mirakurun -g --production
BonRecTestの設置
BonRecTestはBonDriverから得られたデータを標準出力にだばーしてくれる子です。
github.com
以下よりexeを入手し適当な所に展開しましょう。(筆者は C:\soft\PT3\BonRecTest\BonRecTest.exe に設置しました)
Releases · rndomhack/BonRecTest · GitHub
B25Decoder.dllの導入
皆さん御存知の通り、TS復号処理を行ってくれるなにがしですね。以下辺りにあると思います。BonRecTest.exeと同一のディレクトリに設置しましょう。
でーてーぶいあぷろだぁ
http://up.mapopi.com/?get=00009
ちなみにMicrosoft Visual C++ 2010 SP1 再頒布可能パッケージ (x64)がないと動かないのでこちらも入れておきます。
BonDriverの導入
以下をダウンロードして来ます
Releases · epgdatacapbon/BonDriver_PT3-ST · GitHub
編集点等を書き出しておきます。これらのファイルはBonRecTest.exeと同一のフォルダに設置します。
BonDriver_PT3-T.dll、BonDriver_PT3-S.dll、PT3Ctrl.exe
x64フォルダ内のBonDriver_PT3-T.dll、BonDriver_PT3-S.dllを適宜コピー及びリネームしていきます。(32bit版のWindowsの場合はWin32フォルダ内の物)
筆者はPT3が3枚なので地デジ・BS/CSがそれぞれ6チューナー存在しているので以下みたいになります。
- BonDriver_PT3-S.dll ->
- BonDriver_PT3-S0.dll
- BonDriver_PT3-S1.dll
- BonDriver_PT3-S2.dll
- BonDriver_PT3-S3.dll
- BonDriver_PT3-S4.dll
- BonDriver_PT3-S5.dll
- BonDriver_PT3-T.dll ->
- BonDriver_PT3-T0.dll
- BonDriver_PT3-T1.dll
- BonDriver_PT3-T2.dll
- BonDriver_PT3-T3.dll
- BonDriver_PT3-T4.dll
- BonDriver_PT3-T5.dll
- PT3Ctrl.exe ->
- そのまま(コピーするだけ)
BonDriver_PT3-ST.ini
筆者の環境ではBS/CSに電源が必要なので以下のように編集しました。
[SET] ;0で使用しない、1で使用する ;LNB電源 UseLNB=1 ;1チューナーのDMA転送バッファサイズ(約1.5MB × 設定値) DMABuff=8
BonDriver_PT3-T.ChSet.txt、BonDriver_PT3-S.ChSet.txt
そのままコピーしましょう
配置後のディレクトリ構造
こんな感じになっているはずです。(PT3が3枚の場合)
Mirakurunの設定
%USERPROFILE%\.Mirakurunに設定ファイル一式が存在しているので編集します。編集例は以下の通り。
channels.yml
server.yml
tunners.yml
channels.ymlを編集する上での注意点
serviceIdやchannelの値は、インターネット上に転がっているLinux上で動作しているMirakurunの設定を使うまわすことができません。
BonDriver向けの値を利用する必要があるので気をつけましょう。
Mirakurunの再起動
タスクマネージャーとかから適当に
トラブルシューティング
Mirakurunが動作していない雰囲気の時は
%USERPROFILE%\AppData\Local\Mirakurun にログがあるので眺めましょう。
何故かアクセス出来ない時は
大抵ファイアーウォールが原因だと思います。40772ポートへのアスセスを可能なようにしておきましょう。
TVTest
BonDriver_Mirakurunの登場により、TVTest+Mirakurunがとっても簡単になりました。最高かよ。
LAV Filters(導入していない場合は)
TSを再生するためには何かしらが必要なので。筆者はLAV Filtersを使っています。
Releases · Nevcairiel/LAVFilters · GitHub
TVTestをダウンロード
TVTest自身が復号処理をしてくれる必要はないので、v0.9.0で問題ないと思います。
Release 0.9.0 · DBCTRADO/TVTest · GitHub
BonDriver_Mirakurunの導入
以下より最新版を入手してきて、BonDriver_Mirakurun.dllとBonDriver_Mirakurun.iniをTVTest.exeと同じ場所に設置します。
Releases · Chinachu/BonDriver_Mirakurun · GitHub
BonDriver_Mirakurun.ini
以下のように編集。
[GLOBAL] ; Mirakurunが動作するIPアドレス SERVER_HOST="192.168.0.2" SERVER_PORT=40772 ; B25(1=enable) DECODE_B25=0 ; Priority(0=Low Priority) PRIORITY=0 ; MagicPacket(1=enable) MAGICPACKET_ENABLE=0 MAGICPACKET_TARGETMAC="00:00:00:00:00:00" MAGICPACKET_TARGETIP="192.168.0.255"
TVTestの設定
こんな感じに設定
再生テスト
映ればOK
Chinachu Gamma
ChinachuはリッチなWebUIを有した録画/ロケフリミドルウェアです。
github.com
今回はDocker for Windows上で動作させていきます。
元々はDocker for Windowsで動作させていましたが安定稼働しなかったため、Vagrantでの稼働に切り替えています。
Vagrantコース(オススメ)
Vagrantのインストール
サクッとインストールしましょう。
Download - Vagrant by HashiCorp
VirtualBoxのインストール
近頃のVagrantにはVirtualBoxは同封されていませんので、こちらもサクッと入れちゃいます。
Downloads – Oracle VM VirtualBox
起動
適当なコマンドプロンプトもしくはPowerShellでvagrant-chinachuフォルダへcdして以下のコマンドを実行。
vagrant up
自動起動設定
せっかくなのでWindows起動時に自動起動するようにしておきましょう。(Windows 10 Proのみ)
「ファイル名を指定して実行」より「gpedit.msc」を起動します。
Windowsの設定 -> スクリプト にある「スタートアップ」と「シャットダウン」にそれぞれ「start.bat」と「halt.bat」を設定します。
Docker for Windowsコース
多分だけどおすすめできません。当環境では、vpnkitが悪いのかHyper-Vが悪いのか分かりませんがネットワークが瞬断するらしく、録画が途中で止まります。
Docker for Windowsのインストール
Stable channelで良いと思います。
docs.docker.com
録画保存先のディレクトリへアクセス可能に設定
筆者はSドライブに録画データを保存するつもりなので以下のように設定しました
docker-chinachu-for-windows を入手
docker-mirakurun-chinachuと言う素晴らしいリポジトリがあったので、forkして本環境に最適なdocker-compose等々を作りました。
zipで落とすかgit cloneして下さい。
で、適当にSドライブ(前述でShared Drivesに設定したドライブ)に展開しました
起動
管理者権限のあるPowerShellでdocker-chinachu-for-windowsフォルダへcdして以下コマンドを実行。
docker-compose up -d
まとめ
という事で、良い感じに録画サーバーを刷新できました。良い話です。昔よりもかなりシンプルになりましたね!
一応自動エンコードも組んであるのですが、その話についてはまた今度。
余談3: どうしてWSLじゃないのか
なんだかWSLのバグを踏みました。
パイプ周りが怪しい気がしたのですが疲れたので調べてません…
WSL上でChinachuインストールチャレンジをしてみたけど、あえなく失敗した気がする。
— yanoshi (@yanoshi) 2017年7月2日
ffmpegがちゃんと動作していない気がしています。
— yanoshi (@yanoshi) 2017年7月2日
やはりffmpegが良くわからない挙動をする…
— yanoshi (@yanoshi) 2017年7月2日
ffmpegをぶっ殺すとその瞬間に一瞬だけパケットが漏れたかの如く再生される…的な挙動。
— yanoshi (@yanoshi) 2017年7月2日
言語化しにくい
— yanoshi (@yanoshi) 2017年7月2日
WSLのspawnかpipe周りの挙動がおかしいんじゃないかってそんな気がしたけどもう検証する気力がないんだなぁ
— yanoshi (@yanoshi) 2017年7月2日