読者です 読者をやめる 読者になる 読者になる

俺の外付けHDD

外付けHDDではなくはてなのサーバーラックの中でした

TVTest0.9.0+xtne6f版EpgTimer+ffmpeg自動エンコードからのGoogleフォトに無限保存

はじめに

精神衛生上,落ちてるバイナリは基本的に使用せず全てPLEX公式またはGithubソースコードが公開されているものを使ってTS抜きして視聴・録画・永久保存する環境を構築する。
(PX-W3PEの復号漏れ対策に)外付けカードリーダを使用する場合,EpgDataCap_Bon.exeを使うためにはGitgubにはソースコードが見当たらないB25Decoder.dllが必要になってしまう。 ということでこの機会にTVRockのようにTVTest.exeで録画できるxtne6f氏の最新版EDCBを使ってみた(一応EpgDataCap_Bon.exeを使う項も不要な行程として残してある)。Twitter連携機能はrubyで代用した。
前記事もログとして一応残しておくつもりだが,更新はこっちがメインになりそう(実を言うと見たまま記法が不便でMarkdown記法に移行したかっただけ)。

記事
落ちてるバイナリを使って取り敢えずts抜き環境を構築できればいいって人 http://nyanshiba.hatenablog.com/entry/2017/01/16/201120
安全なソースやバイナリを使って新しい環境を構築したい人,外付けカードリーダを使う人,自動エンコしてGoogleフォトに無限保存したい人 現在ご覧の記事

見出し

参照してほしい項
視聴だけできればいいって人 共通,TVTest
録画してPCで観るだけって人 共通,TVTest,EDCB
録画開始時ツイートしたいって人 共通,TVTest,EDCB,xtne6f版でTwitter連携する
録画番組を観た後も全部残しておきたい・スマホでも観たいって人 共通,TVTest,EDCB,ts抜きして全自動でffmpegエンコードGoogleフォトに無限保存する
全部

更新情報

年月日 更新内容
17/04/25 何が出来るの,フォルダ構成,EpgDataCap_Bonのチャンネルスキャン時の行程が古かった,tvtestビルド時にbaseclassesを足す行程が不要,edcbとtvtestの関連付けを行う,リモートデスクトップ,自動ツイートバッチ,自動エンコバッチの説明
17/04/27 自動エンコバッチで先行探索固定品質を使う,フォルダ構成
17/04/28 twitter api gemをインスコする行程を忘れてた
17/04/29 見出しを整理,TVTestの設定,B25.tvcasのビルド行程でスクランブル解除出来ないのを修正,Twitter連携でSSL証明書が無くツイートできないのを修正
17/05/01 自動エンコバッチ改良
17/05/04 見出しや目次を整理,他機種のBDAドライバのリンクを追加,用意するものにBカスを追加,TVTestVideoDecoderの設定をより良く,EdcbPlugIn周りの設定を整理,自動エンコバッチの項を整理
17/05/05 自動エンコバッチを改良し3つのバッチを2つに
17/05/07 自動ツイートに曜日を追加,自動エンコバッチで特定の条件下で音ズレする問題について記述,斧に自動ツイートスクリプトと自動エンコバッチをうp
17/05/09 フォルダ構成の書き方を変更,指定サービスのみ録画するように設定,自動エンコバッチを改良しサービスIDを指定してエンコすることで特定条件下での音ズレを回避,デュアルモノを処理する方法を詳しく
17/05/10 テーブル記法はじめました,邪道かもしれないけど番組詳細を参照し条件分岐することで自動エンコバッチを1つにまとめた,斧にうpした自動エンコバッチを更新
17/05/13 自動エンコバッチで,2GB以下ではなく未満の場合Google Photos Backup用フォルダに移動させるように変更
17/05/15 表を追加,自動エンコバッチをちょっと修正
17/05/19 記事選択用の表を追加
17/05/20 64bit版を試してみたので個々の項目の不備等を修正,自動エンコバッチのフォルダやffmpegオプションの登録を集約した
17/05/25 readmeへのリンク集の項を追加した
17/05/27 自動エンコバッチでデジタル放送に合わせてYV12を使うように,24fps化するように変更,解説を分かりやすく?修正

注意事項

※全て自己責任でお願いします。
※readmeは必ず全て読みましょう,この記事はあくまでも補助です。
※PCの電源を入れたままアンテナの抜き差しをするとチューナーが壊れるのでやめましょう。
同軸ケーブルや分波器等は,家電量販店で買う方が失敗しない。マスプロがおすすめ。
※マンションなどで地デジとBSのの混合アンテナで,BS/CS側のdBが足りない時は,抜けそうなくらいギリギリまで同軸ケーブルを緩めると映るかもしれないが,素直に分波器を入れましょう。
※PX-Q3PEなど別の機種のチューナーの場合少々導入方法が違いますが,ビルド,プラグイン,設定関係は参考になるかもしれません。
※リンクが機能していない場合は,ggって下さい。
※readmeを読んでもggってもどうしても分からない事があったら質問してください,答えられる範囲で答えます。
※柔らかいのとか黒いのとかで違法視聴しないようにしましょう。

用語解説

用語 解説
TVTest デジタル放送視聴用ソフトだが名目上はデジタル放送汎用視聴プログラム実装研究資料となっている。最新版は0.9.0。
EpgDataCap_Bon デジタル放送録画用ソフト。有志の派生版が複数あるが,今回はxtne6f氏版を使用する。
MPEG-2 TS MPEG-2トランスポートストリームの略。MPEG-2コンテナを送受信するための形式。様々な形式のメディアをまとめて扱える。
TS抜き コピープロテクト(CCI)をかける過程を無視して↑をそのまま保存すること。著作権保護されていないためキャプったり編集できる。ts抜きはコピープロテクトを解除してるわけではないので合法だが,市販のレコーダー等で解除して保存する行為(アクセスコントロールを解除してリッピングすること)は違法となる。
EPG Electronic Programming Guideの略。デジタル放送で流れてくる番組情報など。
Scramble 契約者だけが観られるように電波を乱す暗号。B-CASカードで解除できる。正しく復号されてないとブロックノイズが出たり飛んだり真っ暗になったりする。
Drop tsパケットが抜け落ちること。ブロックノイズが出たり飛んだり真っ暗になったりする。

市販のレコーダーとの違い

チューナー TS抜きできるPC用 TS抜きできないPC用 TS抜きできない市販の
PCでTV視聴録画 -
16:9以外のモニタ x
著作権保護非対応モニタ x x
OSの設定で100%以外の拡大率 x -
合法的にダビング10などの縛りを回避 ○(スクショや編集や複製が出来る,ただし私的利用のみ) x x
毎週録画 キーワードや局で絞る自動予約登録機能(極稀に番組名が変更されると失敗する) 連ドラ機能(たまに失敗する) x
番組検索をキーボードで x
数日前の番組表 ○遡れる x x
Twitterで録画通知 x x
持ち出し再生 クラウドストレージから無限にストリーミング(アメリカではGoogleが自ら類似のサービスをやってるっぽい…流石自由の国) ○容量は端末に依存 ○容量は端末に依存

何が違うの?

TVTest 0.9.0 0.7.23
ソースコードGitHub 公開されている 公開されていない
挙動 軽い ちょっとモッサリ
キャプ画像を番組名などでフォルダ分け できる できない
モリーキャプチャプラグイン 入ってる 入っていない
B1.tvcasを利用すればスカパー 観られる 観られない
EDCB xtne6f-work-plus-s 人柱版10.66
ソースコードGitHub 公開されている 公開されていない
挙動 軽い ちょっとモッサリ
録画ファイル名 半角にできる 外部処理が必要
番組検索 小文字大文字可 大文字のみ可
デザイン面 ボタンの大きさ等が使いやすい 番組表がデフォルトでは見づらい
EdcbPluginを使ってTVRockのようにTVTest.exeを使ってEPG取得や録画 できる できない

用意するもの

・PCIExpressスロットに空きがあるデスクトップPC(低スペでも構わないが自動エンコはキツイかも)
・PX-W3PEかPX-Q3PE
B-CASカード(付属していないので)
同軸ケーブル
・分配器,分波器(必要な場合)
・外付けカードリーダ(録画したファイルを視聴しているとScrambleの値が時々増えて映像が途切れる場合)
・やる気
・電気
※参考までも私の環境
・OS:Windows10Home64bit(Creators Update適用)
・CPU:Intel Core i5-6500(これ未満は自動エンコはキツイかも)
・メモリ:8GB
SSD 256GB(これ未満はキツイかも)
・チューナー:PX-W3PE REV1.3

PLEX 地上デジタル・BS・CS対応TVチューナー PX-W3PE4

PLEX 地上デジタル・BS・CS対応TVチューナー PX-W3PE4



Readme

これらを必ず読んでからはじめること。

ソフト readme
BonDriver_BDA https://github.com/radi-sh/BonDriver_BDA/blob/master/doc/Readme-BonDriver_BDA.txt
BDASpecial-PlexPX https://github.com/radi-sh/BDASpecial-PlexPX/blob/master/doc/Readme-PlexPX.txt
TVTest https://github.com/DBCTRADO/TVTest/blob/master/doc/TVTest.txt
TVTestVideoDecoder https://github.com/DBCTRADO/TVTestVideoDecoder/blob/master/doc/TVTestVideoDecoder.txt
TvtPlay https://github.com/xtne6f/TvtPlay/blob/work/TvtPlay_Readme.txt
TVCaptionMod2 https://github.com/xtne6f/TVCaptionMod2/blob/develop/TVCaptionMod2_Readme.txt
EDCB https://github.com/xtne6f/EDCB/tree/work-plus-s/Document
ffmpeg https://ffmpeg.org/ffmpeg.html

フォルダ構成

最初に書いておく。これを参考にバイナリを配置していけば良い。設定後に現れるファイルもある。
32bitか64bitどちらかに揃えて下さい(図は32bitの例)。混在しているとうまく動作しない場合があります。

TVTest  
┣Plugins  
┃┃(TVTest-develop\sdk\Samples\Win32\Release)  
┃┣*.tvtp  
┃┃(TVCaptionMod)  
┃┣TVCaptionMod2.tvtp  
┃┃(TvtPlay)  
┃┣TvtPlay.tvtp  
┃┃(EDCB-work-plus-s-bin)  
┃┣EdcbPlugIn.tvtp  
┃┣EdcbPlugIn.ini
┃┃(CasProcessor)(外付けカードリーダを使う方のみ)  
┃┗CasProcessor.tvtp  
┣Themes  
┃┃(TVTest-develop\data\Themes)  
┃┗*.httheme  
┃(TVTest-develop\src\Win32\Release)  
┣TVTest.exe  
┣TVTest_Image.dll  
┃(TVTestVideoDecoder)  
┣TVTestVideoDecoder.ax  
┃(BonDriver_BDA)  
┣BonDriver_PlexPX_S.dll  
┣BonDriver_PlexPX_S.ini  
┣BonDriver_PlexPX_T.dll  
┣BonDriver_PlexPX_T.ini  
┃(BDASpecial-PlexPX)  
┣PlexPX.dll  
┃(TvtPlay)  
┣BonDriver_Pipe.dll  
┣TvtAudioStretchFilter.ax  
┃(EDCB-work-plus-s-bin)   
┣Write_Multi.dll    
┣Write_OneService.dll  
┃(TvCas)(外付けカードリーダを使う方のみ)  
┗B25.tvcas  
EDCB  
┣BonDriver  
┃┃(BonDriver_BDA)  
┃┣BonDriver_PlexPX_S.dll  
┃┣BonDriver_PlexPX_S.ini  
┃┣BonDriver_PlexPX_T.dll  
┃┣BonDriver_PlexPX_T.ini  
┃┃(BDASpecial-PlexPX)  
┃┗PlexPX.dll  
┣RecName(EDCB-work-plus-s\x86\Release\RecName)  
┃┗RecName_Macro.dll  
┣Setting  
┃┃(TVTestのch2ファイルからEDCB-work-plus-s-binのch2chset.vbsで作成)
┃┣BonDriver_PlexPX_S(PlexPX-S).ChSet4.txt  
┃┣BonDriver_PlexPX_T(PlexPX-T).ChSet4.txt  
┃┣ChSet5.txt  
┃┃(設定後等に自動生成)
┃┣EpgAutoAdd.txt(これが自動予約登録リスト)  
┃┣RecInfo.txt  
┃┣RecInfo2.txt  
┃┣Reserve.txt  
┃┗EpgData  
┣Write(EDCB-work-plus-s\x86\Release\Write)  
┃┣Write_Default.dll  
┃┗Write_OneService.dll  
┃(EDCB-work-plus-s\x86\Release)  
┣EdcbPlugIn.tvtp  
┣EpgDataCap_Bon.exe  
┣EpgTimer.exe  
┣EpgTimerSrv.exe  
┣EpgTimerTask.exe  
┣EpgDataCap3.dll  
┣SendTSTCP.dll   
┃(自動ツイート)  
┣PostRecStart.bat  
┣tweet.rb  
┣cacert.pem
┣tweet.txt(初回ツイート後自動生成)  
┃(自動エンコ)  
┣PostRecEnd.bat   
┗ffmpeg.exe  

共通

電源の設定

スタートボタンを右クリック→電源オプション→プラン設定の変更→詳細な電源設定の変更→スリープ→スリープ解除タイマーの許可を有効
これをしないとスリープ復帰で録画ができません。又,S3スリープが出来る状態にしておきましょう。

必要なランタイムを入れる

※2005とか2008とかは流石に要らないはずだが余分に入れてしまっても問題はない

言語パッケージ リンク
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ(x86) https://www.microsoft.com/ja-jp/download/details.aspx?id=5638
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ(x64) https://www.microsoft.com/ja-jp/download/details.aspx?id=18471
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ ATL のセキュリティ更新プログラム(x86x64両方必要,IA64のものは不要) https://www.microsoft.com/ja-jp/download/details.aspx?id=14431
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラム https://www.microsoft.com/ja-jp/download/details.aspx?id=26347
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ(x86) https://www.microsoft.com/ja-jp/download/details.aspx?id=5582
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ(x64) https://www.microsoft.com/ja-jp/download/details.aspx?id=2092
Microsoft Visual C++ 2008 再頒布可能パッケージ ATL のセキュリティ更新プログラム(x86x64両方必要,IA64のものは不要) https://www.microsoft.com/ja-jp/download/details.aspx?id=10430
Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86) https://www.microsoft.com/ja-jp/download/details.aspx?id=8328
Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x64) https://www.microsoft.com/ja-jp/download/details.aspx?id=13523
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ(VS2015に同梱) https://www.microsoft.com/ja-jp/download/details.aspx?id=48145
Microsoft .NET Framework 4 (スタンドアロンインストーラー) https://www.microsoft.com/ja-jp/download/details.aspx?id=17718

OSのユーザー名は半角英数字でないとエラーが出る場合があります。
32bit環境では(x64)は不要,64bit環境では(x86)(x64)両方必要。

BDAドライバ(TVチューナーのドライバ)を入れる

①BDAドライバをダウンロード(ここにないものはggって下さい)。

機種 リンク
PX-W3PERev1.3 http://www.plex-net.co.jp/product/px-w3pe/download.html
PX-W3PEV2.0 http://www.plex-net.co.jp/product/px-w3pev2/download.html
PX-W3PE4 http://www.plex-net.co.jp/product/px-w3pe4/download.html
PX-Q3PE http://www.plex-net.co.jp/product/px-w3pe/download.html
PX-PX-Q3U4 http://www.plex-net.co.jp/product/px-q3u4/download.html
PX-PX-W3U4 http://www.plex-net.co.jp/product/px-w3u4/download.html

②ダウンロードして解凍し,「PX_W3PE_BDA」フォルダを開き,OSのアーキテクチャに合ったインストーラーを実行。
③スタートボタンを右クリック→デバイスマネージャー→サウンド,ビデオ,およびゲームコントローラーにほにゃら BDA driverがあればおk。

BonDriver(radi-sh版BonDriver_BDA改)を入れる

※SはBS/CS,Tは地上波用のプラグインです。
https://github.com/radi-sh/BDASpecial-PlexPX/releases からバイナリを入手
②内蔵カードリーダでスクランブル解除を行う場合のみ,BonDriver_PlexPX_T.ini,BonDriver_PlexPX_S.iniの5行目辺りをM2_Dec=1に書き換え保存
https://github.com/radi-sh/BonDriver_BDA/releases からバイナリを入手
④BonDriver_BDA.dllをBonDriver_PlexPX_T.dll,BonDriver_PlexPX_S.dllにリネーム

Visual Studio 2015を入れる

※Expressでも大丈夫(Expressの場合2GB,Communityは10GBくらいストレージを食うので注意)
①Community→https://www.microsoft.com/ja-jp/download/details.aspx?id=48146
①'Express→https://www.visualstudio.com/ja/vs/visual-studio-express/ の下の方の「2015 for Windows Desktop」
②ハイハイと進んでいけばおk

TVTest

baseclasses入手

※この手順は不要なので飛ばしてください。
https://www.microsoft.com/en-us/download/details.aspx?id=8442 からGRMSDK_EN_DVD.iso(x86でおk)をDL
7-zip等で解凍しWinSDKSamplesフォルダを入手(他は不要)
③C:\hoge\baseclasses\WinSDKSamples のように設置(パスは自由)
④C:\hoge\baseclasses\export のようにフォルダを作る(パスは自由)
⑤以下コマンドを管理者で実行(batファイルとして残しておくと良い)

cd C:\③のパス\baseclasses\WinSDKSamples  
start /wait msiexec.exe /a WinSDKSamples_x86.msi targetdir="C:\④のパス\baseclasses\export"  

⑥C:\hoge\baseclasses\export\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclassesを入手し(他は不要),↓の③へ

TVTest0.9.0正式版ビルド手順

https://github.com/DBCTRADO/TVTest/tree/develop からClone or Download→Download Zipでソースを入手
②TVTest-develop.zipを解凍
③※この手順は不要です。↑の⑥から(WinSDK v7.1の)BaseClasses/.cppと.hをTVTest-develop/src/BaseClassesにコピー
④TVTest-develop\src\DirectShowFilter\EVRCustomPresenter\EVRPresenterBase.hの18行目辺り3つとも_vistaを削除してCtrl+S
⑤TVTest-develop\src\TVTest_All.VS2013.slnをVS2015で開く
⑥上のDebugをRelease
⑦右のソリューション'TVTest_All.VS2013'右クリでソリューションの再ターゲット
⑧上のビルドからソリューションのビルド
========== ビルド: 10 正常終了,0 失敗,0 更新不要,0 スキップ ==========になればおk
C:\DTV\TVTest-develop\sdk\Samples\Samples.VS2013.slnも同様にビルド
========== ビルド: 15 正常終了,0 失敗,0 更新不要,0 スキップ ==========になればおk

CasProcessor.tvtpビルド手順(外付けカードリーダを使う方のみ)

https://github.com/dtvgit/CasProcessor からソースを入手
②CasProcessor.zipを解凍
③TVTest-develop/srcから以下の2ファイルを上書き
・TVTestPlugin.h
・TVTestInterface.h
④CasProcessor.cppの2170行目をInfo.ConnectPosition = TVTest::TS_PROCESSOR_CONNECT_POSITION_POSTPROCESSING;に修正
⑤CasProcessor.rc 11~13行目修正
AUTOCHECKBOX “EMM処理を行う(&M)”,IDC_PROPERTIES_ENABLEEMMPROCESS,8,20,80,9
RTEXT “使用する拡張命令(&E):”,IDC_PROPERTIES_INSTRUCTION_LABEL,8,38,72,8

⑥CasProcessor.slnをダブルクリック→Release→ソリューションのビルド

B25.tvcasビルド手順(外付けカードリーダを使う方のみ)

https://github.com/logue/TvCas からソースを入手
②TvCas-master.zipを解凍
③TvCas.slnをダブルクリック
④上のDebugをRelease,x86を選択
⑤右のソリューションエクスプローラのTvCasを右クリック→プロパティ→リンカー→インプット(入力)→モジュールデフィニション(定義)ファイルにTVCAS_B25.defを追加
⑥Release→ソリューションの再ターゲット→ソリューションのビルド

TVTestVideoDecoderバイナリ入手

MSは8から有料化,DScalaerが0.9.0には非対応のため,これを使います。一時停止時にキャプれるのが便利。残像がすごいから嫌ってる人は設定をミスってる(tvtestの設定辺りを参照)
(つい最近出たのか,ストアアプリから入れられるMS公式の無料のMPEG2デコーダを入れたけど,サムネイルが表示できるってだけだった…)
https://github.com/DBCTRADO/TVTestVideoDecoder/releases からバイナリを入手
TVTestVideoDecoder_0.3.0.7zを解凍

TvtPlay(再生プラグイン)を入れる

録画したtsファイルを再生する時に早送りしたりするためのプラグインです。
https://github.com/xtne6f/TvtPlay からバイナリを入手
regsvr32 "C:\TvtAudioStretchFilter.axのパス"を管理者で実行
③成功しましたと出たらおk
TVTest側の設定でどうにかなったhttps://github.com/xtne6f/TvtPlay/tree/work-plus からソースを入手してVS2015でビルドして"\TvtPlay-work-plus\src\Release\TvtPlay.tvtp"と↑のバイナリを入れ替えると全画面表示や独自タイトルバーを使用しない場合にスマートになる。

TVCaptionMod2(字幕プラグイン)を入れる

字幕を観ないのなら入れなくて構いません。TVCaption,TVSubtitleと試しましたが一番フォントレンダリングが綺麗なTVCaptionMod2が今のところおすすめです。
https://github.com/xtne6f/TVCaptionMod2

TVTestの設定

TVTestでもEDCBのEPGデータを使用したりするので,先にEDCBから設定すると良い。
言われたとおりに進むとチャンネルスキャンをしてくれると思います。
最低限やっておくべきものだけ書きます。どんな項目があるのかざっと確認して好みの設定に変えて下さい。
※チューナー使用中(録画中など)にTVTestを起動すると,「BonDriverの初期化ができません。」エラーが出る場合がありますが,空いてるチューナーやPipeを選べば問題ありません。

一般

・デフォルトのBonDriver:指定したBonDriverを選択し,BonDriver_Pipe.dllを選択しておくと,上記エラーが出ることがないので便利。

表示

・最小化時タスクトレイに入れるにチェック(EDCBで使う場合,PC使用中で録画開始時にアクティブウィンドウになってしまうと厄介なので)
・抑止:3つともチェックしておくと視聴時にイラつかない

ステータスバー

・TvtPlayステータスバーにチェック

キー割り当て

・ チューナー選択や字幕プラグインのONOFF,キャプチャ又は字幕付き画像の保存,TvtPlayの早送り(後述)などにショートカットキーを設定しておくと便利。

映像

MPEG-2デコーダ:TVTest DTV Video Decoder
・映像レンダラ:EVR
※TVTest本体右クリックでフィルタのプロパティ→映像デコーダ
インスタレース解除方法:,インタレ解除しない(自分の環境で動きのあるシーンで残像感や縞模様が無いのを選んでください),インターレースフラグを設定するのチェックを外す(この設定を知らなかったがためにMSの有料化されたデコーダを無料で手に入れるようなことをやっていた時期が私にもありました)
DXVA2によるデコードを有効にする:チェックするとCPU使用率が下がるが一時停止時にキャプれなくなる(再起動後有効)

音声

・音声フィルタ:TvtAudioStretchFilter(TvtPlayの早送りなどに対応させるため)

録画

・保存先フォルダ:…をを押してお好みに設定してください(私の場合はユーザーのビデオフォルダ)
・ファイル名マクロ:▼を押してお好みに設定してください
・現在のサービスのみ保存する:チェックを外す
・字幕データを保存する:必要な場合はチェック(自動エンコして生tsを観ない場合チェックを外す)。今回は録画にtvtestを使うのでこの設定がEDCBの録画結果に反映される。
・データ放送を保存する:チェックを外した方が良い
・(EDCBで使う場合)保存プラグイン:Write_multi.dll,設定:SETセクションでWritePlugin=Write_OneService.dll

キャプチャ

・保存先フォルダ:…をを押してお好みに設定してください(私の場合はユーザーのピクチャフォルダのTVTestフォルダ)
・ファイル名マクロ:▼を押してお好みに設定してください
・大きさは表示されている大きさに設定(元の大きさだと例えば50%で表示中にキャプった時に1920x1080に引き伸ばされて保存されてしまう)
・保存形式:JPEGじゃないとパンクしますが画質に拘るのならPNGにしておくと良いでしょう。

チャンネルスキャン

自動でチャンネルスキャンされなかった場合は手動で行ってください。S(BS/CS)とT(地デジ)1つづつスキャンすれば全てのチューナーに反映されます。

EPG/番組情報

EPG情報をファイルに保存する:チェックを外す(EDCBで使う場合)
・EpgDataCap_BonのEPGデータを利用する:チェックを付ける(EDCBで使う場合)
EPGデータのフォルダ:EDCBフォルダ\Setting\EpgDataに指定(EDCBで使う場合これによりTVTest側のEPG取得が不要になる)
・ロゴデータをファイルに保存する:チェックしても良い

プラグイン

・TVCaptionMod2.tvtpの設定
字幕付き画像の保存先を指定
外字テーブル名:WindowsTV丸ゴシックを使う場合は!typebank
・TvtPlayの設定
TVTestのPluginsフォルダのTvtPlay.iniをテキストエディタ等で開き,readmeを参考にシークや早送り再生を自分好みに編集。8倍速とかも出来たはず(宇宙人向け)。
TsTryGaplessPause=1ギャップなしで一時停止,再生する
RaiseMainThreadPriority=1早送り時にdropがあった際応答しなくなるのを回避
サンプルを置いておく。

SeekItemOrder=99
StatusItemOrder=99
IconImage=
SeekA=-60000
SeekB=-30000
SeekC=-15000
SeekD=-5000
SeekE=4000
SeekF=14000
SeekG=29000
SeekH=59000
StretchA=100
StretchB=120 
StretchC=150 
StretchD=200 
StretchE=50 
Button00=0,Open
Button04='-'6'0,SeekA
Button05=;'-'3'0,SeekB
Button06='-'1'5,SeekC
Button07='-' '5,SeekD
Button08=6,Pause
Button09='+' '5,SeekE
Button10='+'1'5,SeekF
Button11=;'+'3'0,SeekG
Button12='+'6'0,SeekH
Button15=::::::::,StretchZ,StretchPopup

https://github.com/xtne6f/TvtPlay/blob/work/src/Buttons.bmpにボタン一覧がある。

TSプロセッサー(外付けカードリーダを使う方のみ)

・TSプロセッサー:CasProcessor
・デフォルトモジュール:B25.tvcas
・デフォルトデバイス:SmartCard
・デフォルトフィルター:ICカードリーダ名(私の場合ACS ACR39U ICC Reader 0)

TVTest.exeをタスクバーに登録

①TVTestを起動しタスクバーにピン留めする
%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\に移動
③TVTestのショートカットのプロパティを開き,リンク先に/tvtplayを追加

録画したtsファイルをダブルクリックで再生

①tsファイルをプログラムから開く→その他のアプリ→TVTest.exeで関連付ける
レジストリエディタでHKEY_CURRENT_USER\Software\Classes\Applications\TVTest.exe\shell\open\commandにアクセス
"C:\TVTest.exeのパス" /nd /d BonDriver_Pipe.dll "%1"に変更
※因みに拡張子.mp4も再生できるよ

EDCB

xtne6f EDCB-work-plus-sビルド手順

※32bitの場合は次項のバイナリの方を使えばビルドしなくても結構ですが,readmeや録画後バッチサンプルが必要なのでDLして解凍だけはしておきましょう。
https://github.com/xtne6f/EDCB からソースを入手
②EDCB-work-plus-s.zipを解凍
③DocumentフォルダのEDCB_ALL.VS2015.slnをVS2015で開く
④上のDebugをRelease
⑤右のWrite_AVIVOを右クリで削除
⑥上のビルドからソリューションのビルド
========== ビルド: 11 正常終了,0 失敗,0 更新不要,0 スキップ ========== になればおk

EDCB-work-plus-sバイナリ入手

※TVTestのチャンネルスキャン情報をEDCB用に変換するch2chset.vbs,TVTestとEDCBの連携用EdcbPlugIn.ini,Write_Multi.dll,Write_OneService.dll等が入っている。
https://github.com/xtne6f/EDCB/releases からEDCB-work-plus-s-bin.zipを入手して解凍

チャンネル設定(EpgDataCap_Bon.exe+EpgTimerの場合)

①EpgDataCap_Bon.exeを2つ起動。
②それぞれS,Tを選択しチャンネルスキャンをする。外付けカードリーダを使う場合Scrambleの値が増えていくがチャンネルスキャンには影響はない。時間がかかるのでその間にPC内のいかがわしい画像等を整理しましょう。
③終わったら目的のチャンネルが表示されていることを確認し閉じる
BS1,BSプレミアム等が検出できない場合は,BonCtrl.iniのChChgTimeOut ServiceChkTimeOutでそれぞれの値を15~20程度に変更して再度スキャン。(チャンネルスキャンのタイムアウト値を大きくする)(人柱版10.61.1以降)

チャンネル設定(TVTest+EpgTimerの場合)

※上手くいかない場合は↑の方法でやって下さい。スクランブル解除が出来なくてもチャンネルスキャンは行えます。
①EDCB-work-plus-s-binのch2chset.vbsにTVTestフォルダのch2ファイルをD&Dし,EDCBのSettingフォルダに設置
②EdcbPlugIn.iniを開き,以下のように指定

EdcbFolderPath="C:\EDCBのフォルダパス"
RecNamePrefix=#$SID16$#

EpgTimerの設定

どんな項目があるのかざっと確認して好みの設定に変えて下さい。
人柱版10.66等とは少々設定GUIが違いますが,分かりやすくなっていると思う。
EPG取得や番組表の設定辺りで番組名がズラズラならんでチェックボックスがある所は,マルチ編成(連番や同じ名前)になってるものは一番上を残して削除したり,絶対に観ないチャンネルや契約していないチャンネルを削除しても良い。
はじめにEpgTimer.exeを起動し設定を開き,EPG取得を行う。

動作設定

・スタートアップEpgTimer.exeのショートカットを作成(常駐していないと録画できません,設定変更後はタスクトレイに残らないよう一度終了してからexeを再起動してください)
・テーマを適用する:チェックを外す(軽くなる)
・EpgTimerSrv設定は後述

番組表

・グラデーション表示を行う:2つともチェックを外す(軽くなる)

外部アプリケーション

・TVTestのパスを通しておく(視聴予約時に使用)

EpgTimerSrv設定

基本設定

・録画用アプリのexe:TVTest.exeのパスを指定
コマンドライン引数:最小化-tray(タスクトレイに格納された状態で起動),非視聴時-nodshow(DirectShowを初期化しない,結果的に再生オフ)
・録画保存フォルダを指定。私はC:\DTV\tsにしている
・BonDriver:SとVそれぞれチューナー数をW3PEなら2,Q3PEなら4に指定

EPG取得

EPG取得開始時間:録画に重ならない好きな時間を最低でも1日1回は指定

録画動作

・録画,EPG取得終了後のデフォルト動作:自動エンコしたり外出先からアクセスする場合は何もしない,自動エンコしない場合はスタンバイ
・ドロップログ,番組情報を出力する:チェックを外す ・録画マージン:低スペでなければ前後共0に変えても大丈夫
・番組情報を出力する:自動エンコバッチを使用する場合はチェック(使うので)

予約情報管理

録画時のファイル名にPluginを使用する:チェック
設定:readme参照

$SDYY$$SDMM$$SDDD$_$STHH$$STMM$_$ZtoH(Title)$$ZtoH(SubTitle2)$_$ZtoH(ServiceName)$.ts

(例:170329_0135けものフレンズ[終] 第12話「ゆうえんち」テレビ東京1.ts)(ZtoHで全角を半角にしないと自動エンコバッチ等でエラーが出る)

その他

EPG取得後も番組情報を1日前まで保存する(結構便利)
・ボタン表示
タブの位置に表示:チェック(よりスマートになる)

EDCBの使い方

例1 アニメ全録

検索キーワードに半角スペース,ジャンル絞込で国内アニメを追加,映像サービスのみ,検索,自動予約登録条件に追加

例2 今期アニメ毎週録画

正規表現モードにチェック,検索キーワードに(うらら迷路帖|けものフレンズ|幼女戦記|クズの本懐~)など,ジャンルを国内アニメ,チャンネルをTBS,テレ東,MX,検索(余計な番組が表示されてしまう場合は,時間指定やnotキーワードで工夫する),自動予約登録条件に追加
※基本的に市販のレコーダーにあるような連ドラ機能はない代わりに,検索で代用します(この方が正確)。
※自動予約登録に番組名を1つづつ登録すると重くなるので,正規表現で局や期毎に分けて正規表現を使うと良い。
※録画後実行batを使う場合は登録忘れに注意。
※人柱版10.66ではアルファベットは大文字,スペースが入るものはスペースの前か後のワードで頑張らないといけなかった
※録画モードで視聴予約を選ぶこともできる(最近気づいた)
※今回はtvtestで録画しているので,録画中のtvtestを右クリックで再生オフを外せば見る+録画を1チューナーでできる。EpgDataCap_Bon.exeのviewよりも使いやすい。

外出先から録画予約

やり方は色々あるが,そもそもそんなに使わないので,私はリモートデスクトップで済ませている。本格的にロケフリやりたくなったら書く(多分書かない)
私の場合windows10homeエディションなのでMS純正のは使えないし,外付けICカードリーダがセキュリティ上停止してしまうらしい(回避策あり)のでどちらにしろchromeリモートデスクトップ(音声無し)かteamviewer(音声あり)辺りがお手軽だろう。
teamviewerならtvtestをスマホから利用してリアルタイム視聴することだってできる。一応。

録画前後実行bat

xtne6f版でTwitter連携する

https://www.axfc.net/u/3803947.zip←斧へ参考用バイナリを置いておきました。

Ruby環境を構築する

http://rubyinstaller.org/downloads/ のRubyInstallersからインストーラーをDL。私はRuby 2.3.3 (x64)を選んだ。
②↑をインストール。「Rubyの実行ファイルへ環境変数PATHを設定する」「.rbと.rbwファイルをRubyに関連づける」にチェック。
③インストールされたかruby -vで確認。rubyのバージョンみたいなのが出てくればおk
http://rubyinstaller.org/downloads/ のDEVELOPMENT KITから適切なDevelopmentKitをDL。
⑤↑を実行。C:\devkit\に展開すること。
⑥以下のコマンドを実行してインストール。INFOっぽいのがちょろっと出てくればおk。

cd C:\devkit\  
ruby dk.rb init  
ruby dk.rb install  
Twitterのアプリケーション登録

①予め通知用のTwitterアカウント(鍵が良い)を作っておく。
②↑と本垢等でFFになって,スマホで↑のプロフィールから投稿通知を受け取るように設定。
https://dev.twitter.com/apps でCreate New Appからアプリケーション登録を行う。
Nameはtwitterクライアント内でクライアント名として表示されるので中二病患者はお気をつけください。
Website,Callback URLは今回使わない情報なので嘘でも構わない。

録画開始時に番組内容をツイートするコマンド

gem install twitterTwitter API gemをインストールする。
https://curl.haxx.se/ca/cacert.pem からSSL証明書をDL。右クリからcacert.pemという名前を付けてEpgTimerSrvがあるフォルダに保存。
テキストエディタで以下コマンドを記述。https://dev.twitter.com/appsのKeys and Access Tokensからコピペしtweet.rbなどのファイル名でEpgTimerSrvがあるフォルダに保存。

#!/usr/bin/env ruby  
require "twitter"  
require "csv"  
  
client = Twitter::REST::Client.new do |config|  
  config.consumer_key        = 'Keys and Access Tokensからコピペ'  
  config.consumer_secret     = 'Keys and Access Tokensからコピペ'  
  config.access_token        = 'Keys and Access Tokensからコピペ'  
  config.access_token_secret = 'Keys and Access Tokensからコピペ'  
end  
  
talk = CSV.read( ARGV[0] )  
client.update( talk[rand(talk.length - 1)][0].encode("utf-8") )  

テキストエディタで以下コマンドを記述。録画開始時に実行したい場合(readme_mod参照)は"PostRecStart.bat"という名前でEpgTimerSrvがあるフォルダに保存。

echo $SDYY$/$SDM$/$SDD$($SDW$) $STHH$:$STMM$~$ETHH$:$ETMM$ $ServiceName$ $Title$ の録画を開始しました > "C:\EDCBのフォルダ\tweet.txt"  
set SSL_CERT_FILE=./cacert.pem  
ruby ""C:\EDCBのフォルダ\tweet.rb"" ""C:\EDCBのフォルダ\tweet.txt"  

EDCBから番組内容を受け取って,テキストファイルに上書き保存し,rubyでそのテキストファイルを読ませてツイートという流れになっている。
上手くいくとこんな感じになる。

ts抜きして全自動でffmpegエンコードGoogleフォトに無限保存する

https://www.axfc.net/u/3804859.zip←斧へ参考用バイナリを置いておきました(更新はのろいですorz)。
「観た後も番組をとっておきたいけどHDDに保存していたらすぐに一杯になってしまう…」「スマホで外出先からでも録画した番組を観たいな…」って人向け。
・長い映画以外はうpするところまで完全自動で動作します。
・確実な動作のために今のところのCMカット機能は実装していません。
・家族と使う場合は,家族用Googleアカウントを作るか,“Googleフォト"フォルダとフォルダ分け後のフォルダを家族との共有フォルダにすると良い。ただし"他人"とリンクを共有したらOUT。
・基本的にPCを起動しっぱなしにすることが前提です。
※一応生TSも~2GBならGoogle Photos Backupで,~10GBならhttps://photos.google.com/でうpできますが,「低スペで自動エンコが出来ないからそのままうpしよ」という考えの方は諦めてください。高負荷で確実にブラウザが落ちます。それにGoogleに対して迷惑でしかない(onedriveの容量無制限廃止はDTV民が原因らしい…)のでエンコしましょう。因みに確認した中ではmkv,m2ts,mpgは再エンコされないので,RecName_Macroで設定するかren *.ts *.m2tsなどで拡張子を変更して(.mpgではTVTestで再生できないので不便)うpして下さい。

事前準備

①管理者権限が必要ないディレクトリ(program filesとか以外)に"一時的にmp4を吐き出すフォルダ",“Google Photos Backup用フォルダ”,“2GB以上用フォルダ”(名前はお好みに)計3つの空フォルダを作成。
②EDCBの設定で番組詳細を出力する:チェック
③録画ファイル名のアルファベット等は全角だとffmpegがエラーを吐くのでxtne6f版recname_macro.dll等で半角リネーム(ZtoH)する。
https://photos.google.com/apps からGoogle Photos BackupをDLしてインスコ, “Google Photos Backup用フォルダ"のみを指定
https://ffmpeg.zeranoe.com/builds/win64/static/ からffmpeg公式の最新版バイナリを入手(aviutl,QSVEncCも試したが,音ズレで断念),EDCBフォルダ等に配置。

自動エンコバッチ本体
::ffmpeg.exeがあるフォルダのパス
set FFFOLDERPATH=C:\DTV\EDCB
::一時的にmp4を吐き出すフォルダのパス
set MP4FOLDERPATH=C:\DTV\MP4
::Google Photos Backup用フォルダのパス
set GOOGLEFOLDERPATH=C:\DTV\Google_Photos
::2GB以上用フォルダのパス
set OTHERFOLDERPATH=C:\Users\Shibanyan\Desktop
::ffmpegのオプション
set FFOPTION=-c:v h264_qsv -global_quality 27 -pix_fmt nv12 -s 1280x720


:roop
::録画終了直後のビジー時を避けるため,無限ループになってしまった場合,負荷を減らすために10秒待つ
timeout /t 10 /nobreak
::EDCBが出力した番組詳細のテキストの中に"デュアルモノ"という文字列があるかどうかで条件分岐
findstr "デュアルモノ" "$FilePath$.program.txt"
echo %ERRORLEVEL%
if "%ERRORLEVEL%"=="0" (
  goto :dualmono
) else if "%ERRORLEVEL%"=="1" (
  goto :normal
)
:normal
::エンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -i "$FilePath$" -vf bwdif=0:-1:1,decimate %FFOPTION% -map 0:p:$SID10$:0 -map 0:p:$SID10$:1 "%MP4FOLDERPATH%\$FileName$.mp4"
goto :move
:dualmono
::デュアルモノ用エンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -i "$FilePath$" -vf bwdif=0:-1:1,decimate %FFOPTION% -map 0:p:$SID10$:0 -map 0:p:$SID10$:1 -filter_complex channelsplit "%MP4FOLDERPATH%\$FileName$.mp4"
goto :move
:move
::ファイルサイズが0バイトなら失敗とみなしループ(エンコ開始の瞬間にCPU使用率が高いと"Device Faild"エラーが返される仕様により,稀にエンコに失敗してしまうので,ループさせることによって回避),2GB未満ならGoogle Photos Backup用フォルダ(DOSの仕様上leqだと上手くいかない),2GBより大きいなら次へ(2GBの制限があるため)
for %%F in ("%MP4FOLDERPATH%\$FileName$.mp4") do (
if %%~zF equ 0 goto :roop
if %%~zF lss 2147483648 goto :googlephoto
)
:otherfolder
::2GBより大きいなら2GB以上用フォルダに移動
move "%MP4FOLDERPATH%\$FileName$.mp4" "%OTHERFOLDERPATH%"
::EDCBが順番に1つづつバッチ処理を行う仕様上詰まってしまうので運用時はこのようにpauseをコメントアウトするか消してください
::pause
exit
:googlephoto
::2GB未満のエンコ済みファイルを移動
move "%MP4FOLDERPATH%\$FileName$.mp4" "%GOOGLEFOLDERPATH%"
::EDCBが順番に1つづつバッチ処理を行う仕様上詰まってしまうので運用時はこのようにpauseをコメントアウトするか消してください
::pause
exit

テキストエディタ等で上記スクリプトを記述(ラーメンプログラムですみません…)
②上の4つのsetでそれぞれのフォルダを指定
③Haswel~CPUでない場合,5番目のset FFOPTIONを変更
↓(IvyBridge)固定品質27

set FFOPTION=-c:v h264_qsv -global_quality 27 -look_ahead 0 -pix_fmt nv12 -s 1280x720

↓(~SandyBridge,その他)ハードエンコではなくソフトエンコする(時間と負荷はかかるが画質は良い)(veryfastくらいが高圧縮且つ現実的なエンコ時間だと思う,veryslowとか使いたいならxeon推奨)

set FFOPTION=-c:v libx264 -preset veryfast -pix_fmt yuv420p -s 1280x720

④録画後に実行するため"PostRecEnd.bat"という名前(視聴予約にEDCBを使う場合,全ての放送をエンコするつもりはない場合は必ず違う名前にして下さい)でEpgTimerSrvがあるフォルダに保存。

運用

①EDCBの自動予約登録の録画後実行batに自動エンコバッチのパスを通す(“PostRecEnd.bat"という名前で保存している場合は登録しなくて良い)(既に予約一覧に表示されているものは手動で追加するか,一度予約一覧から削除してEpgTimerを再起動して,正しくバッチ登録を済ませて下さい)。
②うp済みmp4と録画ファイルと番組情報ファイルを削除(2GB以上用フォルダのファイルは削除しない)する。以下のコマンドで別のバッチを作成,タスクスケジューラで毎日,録画予約が無くうpが全て終わってそうな時間帯に設定。

@echo off
del "C:\Google Photos Backup用フォルダ\*.mp4"
del "C:\一時的にmp4を吐き出すフォルダ\*.mp4"
del "C:\TS保存フォルダ\*.ts"
del "C:\TS保存フォルダ\*.txt"

③とりあえずなんか録画してみて正常に動くか確認。
https://drive.google.comの歯車→設定→Googleフォトフォルダを作成するにチェックしてあげれば,自動でGoogleフォトの動画がGoogleDrive内のフォルダに表示される。検索バーで番組名検索したりフォルダ分けができます。うpしてから表示されるまでにGoogleフォトよりもタイムラグが大きいので焦らずに。
※2GB以上用フォルダのファイルは手動でhttps://photos.google.comからうpしてください。

おまけ

↓【上記エンコ設定の解説】
"%FFFOLDERPATH%\ffmpeg.exe"ffmpeg.exeのパスの環境変数を参照して起動
-yyesnoで聞かれたら自動でyesを選択
-i "$FilePath$"“$FilePath$"を読み込む
-vf bwdif=0:-1:1,decimateインターレース解除,24fps化
-c:v h264_qsvハードウェアエンコード(Quick Sync Video),x264コーデック
-global_quality 27先行探索固定品質27(値を大きくするほど低品質低ビットレート低サイズ)
-pix_fmt nv12ピクセル形式をYV12に指定(QSVの場合はNV12)
-s 1280x720解像度を1280x720に変更(指定しなければ1920x1080)(SAR比とかは自動で指定してくれる)
-map 0:p:$SID10$:0 -map 0:p:$SID10$:1サービスIDを指定(これを指定しないと前後の番組の音声方式が一致しないと音声がおかしなmp4が出来てしまう)
"%MP4FOLDERPATH%\$FileName$.mp4""一時的にmp4を吐き出すフォルダ"の環境変数を参照しそこに書き出す(直に"Google Photos Backup用フォルダ"に書き出すと正しく認識してくれないため)

"%FFFOLDERPATH%\ffmpeg.exe" -y -i "$FilePath$" -vf bwdif=0:-1:1,decimate -c:v h264_qsv -global_quality 27 -pix_fmt nv12 -s 1280x720 -map 0:p:$SID10$:0 -map 0:p:$SID10$:1 "%MP4FOLDERPATH%\$FileName$.mp4"

↓【上記デュアルモノ用エンコ設定の解説】予約登録の番組詳細ファイル内の"デュアルモノ"という文字列で条件分岐し,左右の音声を分離して2トラックのモノラルに分ける処理。これをしないとニュース7が左日本語右英語の英会話教材になってしまう。

-c:a aac -filter_complex channelsplit

↓【D&Dでエンコするには】"$FilePath$“を%1とか%~n1に変えただけ。$SID10$をts.program.txtのServiceID(例えばMXなら23608とか)と置き換えること。

"C:\ffmpeg.exeのパス" -i %1 -vf bwdif=0:-1:1,decimate -c:v h264_qsv -global_quality 27 -pix_fmt nv12 -map 0:p:23608:0 -map 0:p:23608:1 "C:\hogehoge\%~n1.mp4"
pause

おわりに

余談

余談ですが,以前はTS抜きできないPCIExpress接続のPC用TVチューナを使っていましたが,様々な制約はあるものの,導入は凄く簡単でした。それにこちらのメーカーは公式の対応が良かったのでライトユーザなら無理してこんな七面倒臭いことしなくてもいいかも。

ひとこと

すぐ投げ出したり人に頼ろうとはせず,readmeを熟読するなりネットの記事や2chを漁ったりして頑張りましょう。
有志の開発者の皆様,深く感謝しています。