俺の外付けHDD

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

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

はじめに

精神衛生上,落ちてるバイナリは基本的に使用せず全てPLEX公式またはGithubソースコードが公開されているものを使ってTS抜きして視聴・録画・永久保存する環境を構築する。
(内蔵カードリーダの復号漏れ対策に)外付けカードリーダを使用する場合,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連携する
録画番組を観た後も全部残しておきたい・スマホでも観たいって人,俺 全部

更新情報

年月日 更新内容
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 表を追加,自動エンコバッチで邪道かもしれないけど番組詳細を参照し条件分岐することで2つのバッチを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化するように変更,解説を分かりやすく?修正
17/05/28 自動エンコバッチのオプションを若干改良,ffmpegのDLリンクが不正確だったので修正
17/05/31 TVTestVideoDecoderの設定を変更,エンコ時に字幕を埋め込む方法を記述
17/06/01 自動エンコでffmpegのppフィルタでかなり綺麗に,ffmpegの使い方について少し補足
17/06/03 自動エンコでbwdifよりyadifの方が若干綺麗だったので戻した
17/06/06 自動エンコでrefs等でかなり綺麗になりほぼ完成かな?
17/06/09 字幕プラグインと再生プラグインの説明を修正
17/06/11 一部項の階層を移動,ハードの設定の項目を追加,用意するものを修正,TVTestのトラブルシューティングの項を追加,ロゴデータの取得方法について追記,アンテナの調整について追記,自動ツイートバッチで#nhkみたいにハッシュタグを自動で付けられるようになった,QSVの動作条件を追記
17/06/20 電源の設定に停電時の自動復旧について追記,コンパイラをVS2017に変更するとともに各種手順を修正,baseclasses必要でした,自動エンコバッチでEDCBの機能を使ってtsやmp4を削除する方法を追記
17/06/23 アンテナ給電時に専用のACアダプタが必要なことを書いていなかったので追記
17/06/25 自動エンコバッチのループカウントによる無限ループ対策,うp容量オーバー時とエラー時にツイートで報告するオマケ機能を追加,無駄な条件分岐を削除し合理化
17/06/29 24fps化という糞仕様を廃止,解像度を1440x810→1280x720に変更
17/07/xx Backup and Syncについて書く予定。スマホ版のように10GBに対応してくれたらそれに対応させる準備はすでに出来ている。

注意事項

※全て自己責任でお願いします。
※readmeは必ず読みましょう,この記事はあくまでも補助です。
※PCの電源を入れたままアンテナの抜き差しをするとチューナーが壊れるのでやめましょう。
※PX-Q3PEなど別の機種のチューナーの場合少々導入方法が違いますが,ビルド,プラグイン,設定関係は参考になるかもしれません。
※リンクが機能していない場合は,ggって下さい。

用語解説

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

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

最近ネット受信料について賑わってますね。高みのk
|チューナー|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 公開されている 公開されていない
挙動 軽い ちょっとモッサリ
キャプ画像を番組名などでフォルダ分け できる できない
モリーキャプチャプラグイン 入ってる 入っていない
EDCB xtne6f-work-plus-s 人柱版10.66
ソースコードGitHub 公開されている 公開されていない
挙動 軽い ちょっとモッサリ
録画ファイル名 半角にできる 外部処理が必要
番組検索 小文字大文字可 大文字のみ可
デザイン面 ボタンの大きさ等が使いやすい 番組表がデフォルトでは見づらい
EdcbPluginを使ってTVRockのようにTVTest.exeを使ってEPG取得や録画 できる できない

共通

用意するもの

Windows OS
・PCIExpressスロットの空き
・ある程度の容量があるストレージ(生tsは結構容量が大きいので)
・チューナーボード
B-CASカード(付属していないので以前使っていたものを流用するか,https://www.b-cas.co.jp/B-CASカードの発行手続きを行って下さい)
同軸ケーブル(マスプロがオススメ)
・分波器(混合波の場合)
・外付けカードリーダ(録画したファイルを視聴しているとScrambleの値が時々増えて映像が途切れる場合)
・LNB電源供給用ACアダプタ,分配器(BS/CSアンテナを使っていて,他の機器で給電していない場合)
・やる気
・電気
【自動エンコする場合】
・メモリは8GBくらい,DDR4や高クロックなものがオススメ(QSVの処理速度に影響)
・ストレージはSSDが良い
Intel Core i又はxeon(AMDはQSVが使えない)(少々重い処理があるため低スペックだと詰まっちゃう?),Haswel以降(h.264のLA-ICQを使うため)
・グラボを付けている場合Windows8以降のOS(それ以前だと内蔵GPUを併用できないから)
【参考までも私の環境 】
・OS:Windows10Home64bit(Creators Update適用)
・CPU:Intel Core i5-6500
・メモリ:DDR4 8GB
SSD 256GB
・チューナー:PX-W3PE REV1.3
・外付けカードリーダ:ACR39-NTTCom

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

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




プレクス LNB電源供給用ACアダプタ

プレクス LNB電源供給用ACアダプタ

※Q3PE4がいずれ出るっぽいので,今は待ったほうが良いかも?

ハードの取り付け

※PCの主電源が落ちた状態で作業を行ってください
①チューナー又は外付けのカードリーダにB-CASカードを挿し込む。
②PCIExレーン(外付けタイプは③と同様なUSBポート)にチューナーボードを挿し込む。W3PE4等は電源コネクタも付ける。
③外付けカードリーダを使用する場合は取り付ける。前面や背面の拡張ポートでなくメインのUSBポートに接続し,以後挿し替えないこと。
④一戸建ての場合はプレクスのLNB電源供給用ACアダプタを取り付ける。

電源の設定

①(停電対策)BIOSでAC電源喪失から電源復帰した後自動で起動するように設定。
②(停電復帰時の自動ログイン)Win+R→netplwizと入力→ユーザーがこのコンピューターを使うには,ユーザー名とパスワードの入力が必要のチェックを外す。
③(自動ログイン時のセキュリティ確保のためスタートアップで自動ロックさせる)“C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"右クリ→新規作成→ショートカット→rundll32 user32.dll,LockWorkStationを入力。
②コントロールパネル又は設定→電源オプションで自動スリープをなしに設定。
③→電源の追加設定→プラン設定の変更→詳細な電源設定の変更→スリープ→スリープ解除タイマーの許可を有効(これをしないとスリープ復帰で録画できない。S3スリープが出来る状態にしておくこと。)

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

フォルダ構成

最初に書いておく。全ての項においてこれを参考にバイナリを配置して下さい。設定後に現れるファイルもある。
TVTestとEDCB並びに各ドライバ,プラグインは必ず32bitか64bitどちらかに揃えて下さい(ffmpegとCaption2Assは外部ツールなので混在していてもおk)。
拡張子にx64が含まれる場合はその部分を消してリネームして使用してください。

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(ffmpeg-hoge-hoge-shared\bin)(自動エンコ)
┣*.exe
┗*.dll

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

言語パッケージ リンク
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 C++ 2015 再頒布可能パッケージ Update 3 https://www.microsoft.com/ja-jp/download/details.aspx?id=53587
Visual Studio 2017 の Microsoft Visual C++ 再頒布可能パッケージ(VS2017でビルドしたものを別の環境で使う場合) https://www.visualstudio.com/ja/downloads/ の下の方で展開すると出て来る
Microsoft .NET Framework 4 (スタンドアロンインストーラー) https://www.microsoft.com/ja-jp/download/details.aspx?id=17718

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

BDAドライバ(TVチューナーのドライバ)

①BDAドライバをDLして解凍(ここにないものは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

②Driverフォルダ内のBDAフォルダを開き,OSのアーキテクチャに合ったインストーラを実行。
③スタートボタンを右クリ→デバイスマネージャ→サウンド,ビデオ,およびゲームコントローラにhogehoge BDA driverがあればおk。
④BS/CS用アンテナを使用していて他の機器で電源供給を行っていない場合は,必ずACアダプタを付けて,Utilityフォルダ内のLNBフォルダを開き,LNB_ON.regを実行して電源供給をする(ONの状態でアンテナの抜き差しをしないこと)。LNB_OFF.regでオフになる。再起動の必要はない。
⑤Utilityフォルダ内のISDB-T_LNA_Controlフォルダを開き,readmeを参考に調整(TVTestの設定後正常に映らない場合等に実行する)。BS/CSの調節機能はW3PEには無い(必要な場合は増幅器や減衰器等で外部から調節)が,Q3PEにはある。
※Tは地上波を表し,SはBS/CSを表す

放送波 標数
地デジ 20~30dB
BS 10~18dB
CS 7~18dB

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 Community 2017(コンパイラ)を入れる

https://www.visualstudio.com/ja/downloads/からインストーラをDL。
②ワークロードタブでC++によるデスクトップ開発と.NETデスクトップ開発にチェック,個別のコンポーネントWindows8.1 SDKとWindows10 SDK(最新)にチェックしてインストール。

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,*.hTVTest-develop/src/BaseClassesにコピー
④TVTest-develop\src\DirectShowFilter\EVRCustomPresenter\EVRPresenterBase.hの18行目辺り3つとも_vistaを削除してCtrl+S
⑤TVTest-develop\src\TVTest_All.VS2013.slnをVS2017で開く
⑥上のDebugをRelease,Win32かx64を選択
⑦右のソリューション'TVTest_All.VS2013'右クリでソリューションの再ターゲット
⑧上のビルドからソリューションのビルド
========== ビルド: 10 正常終了,0 失敗,0 更新不要,0 スキップ ==========になればおk
C:\DTV\TVTest-develop\sdk\Samples\Samples.VS2013.slnも同様にビルド
========== ビルド: 15 正常終了,0 失敗,0 更新不要,0 スキップ ==========になればおk

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

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をVS2017で開く→Release,Win32かx64を選択→ソリューションの再ターゲット→ソリューションのビルド

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

※地デジ,BS/CS用。スカパープレミアムにはB1.tvcasが必要?
https://github.com/logue/TvCas からソースを入手
②TvCas-master.zipを解凍
③TvCas.slnをVS2017で開く
④上のDebugをRelease,x86かx64を選択
⑤右のソリューションエクスプローラのTvCasを右クリ→プロパティ→リンカー→インプット(入力)→モジュールデフィニション(定義)ファイルにTVCAS_B25.defを追加
⑥ソリューションの再ターゲット→ソリューションのビルド

TVTestVideoDecoder(MPEG2デコーダ)バイナリ入手

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から設定すると良い。
言われたとおりに進むとチャンネルスキャンをしてくれると思います。
最低限やっておくべきものだけ書きます。どんな項目があるのかざっと確認して好みの設定に変えて下さい。

一般

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

表示

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

ステータスバー

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

キー割り当て

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

映像

MPEG-2デコーダ:TVTest DTV Video Decoder
・映像レンダラ:EVR
※TVTest本体右クリックでフィルタのプロパティ→映像デコーダ(再生中に設定できる)
以下を設定後,動きのあるシーン等で残像感や縞模様が無いことを確認してください。
DXVA2によるデコードを有効にする:お好みに。ハードウェアのデコードは字幕プラグインの合成機能と相性が悪いのでちらつく場合はチェックを外す。(要再起動)
インスタレース解除(非DXVA時):インターレース解除を行わない(これを知らなかったがために有料化されたMSのデコーダを不正入手していた時期が私にもありました…)
インターレースフラグを設定する:外しといていいと思う

音声

・音声フィルタ: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取得が不要になる)
・ロゴデータをファイルに保存する:チェックするとチャンネル切り替え時等に表示されるロゴデータを入手できる。地デジは各チャンネルごとに切り替えて,BS/CSはBS1にして放置すると取得できる。
BMP形式のロゴを保存する場合はロゴデータをファイルに保存するのチェックを外しておくこと(生データ形式ARIB-PNG形式なので互換性がありません)。

プラグイン

・TVCaptionMod2.tvtpの設定
映像への字幕合成機能を使う:チェック(要再起動)
外字テーブル名:WindowsTV丸ゴシックを使う場合は!typebank(詳しいところはreadme参照)
描画方式:3-映像と合成(これでTVTest本体のキャプチャ機能でキャプれる)
・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 
; ボタン0の位置にボタンデザイン0を表示させ,ファイルを開く動作を指定
Button00=0,Open
; ボタン4の位置に"-60"と表示させ,シークAを指定
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
; ボタン15の位置にボタンデザイン16,右クリで等倍速,左クリで倍速一覧(%)がポップアップ
Button15=16,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"に変更
/ndでTSプロセッサーを無効。録画時にスクランブル解除は済んでるからね。
※因みに拡張子.mp4も再生できるよ。

トラブルシューティング

※PCの電源を入れたままアンテナの抜き差しをするとチューナーが壊れるのでやめましょう
※以下を確認しても解決しない場合は一から環境構築をやり直すか,OSのクリーンインストールを試す。
【起動しない】
・言語パックは足りてるか
・欠損しているバイナリはないか
・パス等が間違っていないか
・落としたビルド済みソースを使っていないか
・OSのアップデートはなかったか
【0dB,0Mbps,D(ドロップ)の値が増えすぎる,ブロックノイズだらけ】
・アンテナの向きが正しいかどうか
・給電の設定は正しいか,給電器が壊れてないか
・感度調整は正しいか(BS/CS側のdBが足りず,抜けそうなくらいギリギリまで同軸ケーブルを緩めると映る場合は減衰器,混合波の場合は分波器を挟むと治るかも?)
・各部緩んでいないか
・PCIExの帯域が足りているか
デコーダは入れてあるか
・再生オフになっていないか
【S(スクランブル)の値が増える】
・内蔵カードリーダのハード側の問題で30分で5桁くらいの値になることがあるが,その場合は外付けカードリーダを使うしかない。
B-CASカードがしっかり刺さっているか
CPU使用率に余裕はあるか
【エラーメッセージ】
・BonDriverの初期化ができません:選んだチューナーに空きが無いので空いてるチューナーやPipeを選べば問題ない。
・DirectShowの初期化ができません。MPEG-2デコーダフィルタをフィルタグラフに追加できません。:使えるデコーダを入れましょう。因みにMSのデコーダwindows8から有料化されたので別のものを使いましょう。
・音声デコードフィルタがうんたらかんたら:regsvr32 "C:\TvtAudioStretchFilter.axのパス
・何も書いてないポップアップウィンドウ:私の場合は外付けカードリーダのUSBポートの位置を変えてしまった時に起こった

EDCB

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

※32bitの場合は次項のバイナリの方を使えばビルドしなくても結構ですが,readmeや録画後バッチサンプルが必要なのでDLして解凍だけはしておきましょう。
https://github.com/xtne6f/EDCB からソースを入手
②EDCB-work-plus-s.zipを解凍
③DocumentフォルダのEDCB_ALL.VS2015.slnをVS2017で開く
④上のDebugをRelease
⑤右のWrite_AVIVOを右クリで削除
⑥ソリューション'EDCB_ALL.VS2015.sln'を右クリ→ソリューションの再ターゲット(この時SDKのバージョンを記録しておく)
⑦ソリューション'EDCB_ALL.VS2015.sln'に連なる各プロジェクトのプロパティ内のSDKのバージョンが8.1とかではなく↑で記録したもの(10.0.15063.0等)になっているか確認。手動で書き換えても良いが,どうやらプロパティを開くまくったり時間を置いたり再ターゲットを繰り返したりすると各プロジェクトに行き渡るっぽい(バグかな)。再ターゲットの終了: 完了 10、失敗 0、スキップ 0になればおk。
⑧上のビルドからソリューションのビルド。ビルド: 11 正常終了,0 失敗,0 更新不要,0 スキップ ========== になればおk。
※EpgTimerのプロジェクトのプロパティのリソースにEDCBのアイコンがある。

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.exe+EpgTimerの場合)

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

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

EpgTimerSrv設定

EpgTimer.exeを起動→設定ボタン→EpgTimerSrv設定
※これらの設定を終えてから,EPG取得を行って下さい。

基本設定

・録画用アプリの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日前まで保存する(結構便利)
・ボタン表示
タブの位置に表示:チェック(よりスマートになる)

EpgTimerの設定

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

動作設定

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

番組表

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

外部アプリケーション

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

EDCBの使い方

例1 アニメ全録

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

例2 今期アニメ毎週録画

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

外出先から録画予約

やり方は色々あるが,そもそもそんなに使わないので私はリモートデスクトップで済ませている。本格的にロケフリやりたくなったら書く(多分書かない)。
ただし純正のリモートデスクトップでは外付けICカードリーダが停止してしまうので(BonCasLinkで対応できる)注意。
chromeリモートデスクトップ(iOS版では音声無し)か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があるフォルダに保存。

::ChSet5.txtを参考にしながらチャンネル名を,Twitterを漁りながらハッシュタグを編集する。ハッシュタグ機能なんて要らないよって場合はツイートの部分の3行だけ残して%HASHTAG%を$ServiceName$にすると良い。
::BS
if $ServiceName$ equ NHKBS1 set HASHTAG=#nhkbs1
if $ServiceName$ equ NHKBSプレミアム set HASHTAG=#nhkbsp
if $ServiceName$ equ BS日テレ set HASHTAG=#bsntv
if $ServiceName$ equ BS朝日1 set HASHTAG=#bsasahi
if $ServiceName$ equ BS-TBS set HASHTAG=#bstbs
if $ServiceName$ equ BSジャパン set HASHTAG=#bsjapan
if $ServiceName$ equ BSフジ・181 set HASHTAG=#bsfuji
if $ServiceName$ equ BS11イレブン set HASHTAG=#bs11
if $ServiceName$ equ BS12トゥエルビ set HASHTAG=#bs12
::地デジ
if $ServiceName$ equ NHK総合1・東京 set HASHTAG=#nhk
if $ServiceName$ equ NHKEテレ1東京 set HASHTAG=#etv
if $ServiceName$ equ tvk1 set HASHTAG=#tvk
if $ServiceName$ equ チバテレ1 set HASHTAG=#chibatv
if $ServiceName$ equ 日テレ1 set HASHTAG=#ntv
if $ServiceName$ equ テレビ朝日 set HASHTAG=#tvasahi
if $ServiceName$ equ TBS1 set HASHTAG=#tbs
if $ServiceName$ equ テレビ東京1 set HASHTAG=#tvtokyo
if $ServiceName$ equ フジテレビ set HASHTAG=#fujitv
if $ServiceName$ equ TOKYO MX1 set HASHTAG=#tokyomx
::その他
::if not defined %HASHTAG% (
::  set HASHTAG=$ServiceName$
::)

::ツイート
echo $SDYY$/$SDM$/$SDD$($SDW$) $STHH$:$STMM$~$ETHH$:$ETMM$ $Title$ %HASHTAG% > "C:\DTV\EDCB\tweet.txt"
set SSL_CERT_FILE=./cacert.pem
ruby "C:\EDCBのフォルダ\tweet.rb" "C:\EDCBのフォルダ\tweet.txt"  

EDCBから受け取ったチャンネル名からハッシュタグを判別し,番組タイトルをテキストファイルに上書き保存し,rubyでそのテキストファイルを読ませてツイートという流れになっている。
if not defined %HASHTAG% set HASHTAG=$ServiceName$を入れてリストにない場合はハッシュタグではなくそのままチャンネル名を入れるようにしたいんだけど,んなコマンドねえよってエラーを吐くし,括弧をつけたり改行したりcallで読んでもダメだった…しょーもない何かを間違えてるんだろうけど
上手くいくとこんな感じになる。

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

https://www.axfc.net/u/3804859.zip←斧へ参考用バイナリを置いておきました(更新はする気無いですorz)。

特徴

大層なものではないが,色々と試行錯誤をしたので見てほしいのだ!!
・近頃は外出先からお手軽に録画番組を観られるようになったが,“googleフォトを使って無限に保存できる"ことで「家族に勝手に番組消された…」「この番組とっておきたいけどHDDの容量が…」なんて言わなくて済む。
・補正処理により元の映像よりも綺麗になる。特に地デジは汚いから差が顕著に現れる。

・市販のレコーダーのリアルタイムエンコードより圧縮率を高められる。大抵ファイルサイズが生tsに比べ約1/5~1/10になる(30分アニメだと約200~800MB,平均約350MB)。
エンコード時間は番組の約1/3(i5-6500)。オプションを妥協すれば短くなる。
・放置し過ぎて注目番組の録画を忘れたりするくらい放って置いても完全自動で動作するようになっている。音ズレしちゃう時は手動で編集して~みたいなダサい仕様ではない。
・ただしGoogle Photos Uproderには2GB制限があり,超高圧縮なh265にも非対応なため,長~い番組やコントラストや動きが大きい番組はどうしてもサイズが大きくなってしまうため手動でうpしてもらうしかない。紅白はうpすら出来ないかもしれない(?)
・確実な動作のために今のところCMカット機能は実装しない(comskipはダメだったのでlogoGuilloを使って,ウォーターマークが無い番組や提供&エンドカードがカットされるのは困るので現在思案中。iOS11のデフォルトプレイヤが標準で15秒シークを出来るようになりやがったので更に腰が重くなってしまったw)
・家族と共有する場合は,家族用Googleアカウントを作るか,“Googleフォト"フォルダとフォルダ分け後のフォルダを家族との共有フォルダにすると良い。ただし"他人"とリンクを共有したらOUT。
・基本的にPCを起動しっぱなしにすることが前提。スリープや休止状態では動作しませんがロック中では問題なく動作します。
※一応生TSも~2GBならGoogle Photos Backupで,~10GBならhttps://photos.google.com/でうpできるが,「低スペで自動エンコが出来ないからそのままうpしよ」という考えの方は,Googleに対して迷惑でしかない(onedriveの容量無制限廃止はDTV民が原因らしい…)し,高負荷で確実にブラウザが落ちるので諦めてください(RecName_Macroで指定するかren *.ts *.m2tsなどで拡張子を変更してう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/ からffmpeg公式の最新版バイナリを入手(Version:お好きな方をどうぞ,Architecture:OSに合わせる,Linking:Shared(dll版)→Download FFmpeg)

自動エンコバッチ本体
::ffmpeg.exeがあるフォルダのパス
set FFFOLDERPATH=C:\DTV\ffmpeg
::一時的に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:a aac -b:a 192k -vf yadif=0:-1:1,pp=ac -g 300 -bf 16 -refs 16 -global_quality 27 -c:v h264_qsv -preset veryslow -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12 -aspect 16:9 -s 1280x720
::ループ処理用
set ROOPTIME=0
:top

::録画終了直後のビジー時を避けて負荷を減らすために10秒待つ
timeout /t 10 /nobreak
::EDCBが出力した番組詳細のテキストの中に"デュアルモノ"という文字列があれば環境変数"FFOPTION"に"-filter_complex channelsplit"を加える
findstr "デュアルモノ" "C:\Users\Shibanyan\Desktop\test.txt"
if %ERRORLEVEL% equ 0 (
  set FFOPTION=%FFOPTION% -filter_complex channelsplit
)

::エンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -i "$FilePath$" %FFOPTION% -map 0:p:$SID10$:0 -map 0:p:$SID10$:1 "%MP4FOLDERPATH%\$FileName$.mp4"
::エンコ後のファイルのサイズを環境変数"MP4SIZE"に指定
for %%i in ("%MP4FOLDERPATH%\$FileName$.mp4") do (
  set MP4SIZE=%%~zi
)
::ファイルサイズが0バイトなら失敗とみなしループ(エンコ開始の瞬間にCPU使用率が高いと"Device Faild"エラーが返される仕様により,稀にエンコに失敗してしまうので,ループさせることによって回避)
if %MP4SIZE% equ 0 (
  goto :roop
)
::環境変数"MP4SIZE"の下1桁を切り捨て,環境変数"MP4SIZE32"に指定(大き過ぎる数字は32bitで計算出来ないため)
set MP4SIZE32=%MP4SIZE:~0,-1%
::2GB以下ならbackup and sync用フォルダ,大きいなら2GB以上用フォルダへ(2GB以上はうp出来ない)(214748364≒2147483648/10,2147483648byte=2GB)(40GBとかは想定していない)
if %MP4SIZE32% leq 214748364 (
  call :backupandsync
  exit
) else if %MP4SIZE32% gtr 214748364 (
  call :otherfolder
  exit
)

:backupandsync
::2GB以下のエンコ済みファイルを移動
move "%MP4FOLDERPATH%\$FileName$.mp4" "%GOOGLEFOLDERPATH%"
::EDCBが順番に1つづつバッチ処理を行う仕様上詰まってしまうので運用時はこのようにpauseをコメントアウトするか消してください
::pause
exit /b

:otherfolder
::2GBより大きいなら2GB以上用フォルダに移動
move "%MP4FOLDERPATH%\$FileName$.mp4" "%OTHERFOLDERPATH%"
::2GBより大きいので手動でうpする必要があることをツイートで報告(使いたい場合はコメントアウトを外してください)
::echo $FileName$.tsは2GB以上なので手動でうpしてね! > "C:\DTV\EDCB\ffmpeg.txt"
::set SSL_CERT_FILE=./cacert.pem
::ruby "C:\DTV\EDCB\tweet.rb" "C:\DTV\EDCB\ffmpeg.txt"
::EDCBが順番に1つづつバッチ処理を行う仕様上詰まってしまうので運用時はこのようにpauseをコメントアウトするか消してください
::pause
exit /b

:roop
::10回までループし,それでもダメなら諦めて無限ループを回避
set /a ROOPTIME=ROOPTIME+1
if %ROOPTIME% geq 10 (
  goto :err
) else (
  goto :top
)

:err
::エンコに失敗したファイルを2GB以上用フォルダに退避
move "%MP4FOLDERPATH%\$FileName$.mp4" "%OTHERFOLDERPATH%"
::予期せぬエラーが発生したことをツイートで警告(使いたい場合はコメントアウトを外してください)
::echo $FileName$.tsのエンコードを10回トライしてもダメだったよぉ。2GB以上用フォルダに退避させておいたから早く助けてあげて!! > "C:\DTV\EDCB\ffmpeg.txt"
::set SSL_CERT_FILE=./cacert.pem
::ruby "C:\DTV\EDCB\tweet.rb" "C:\DTV\EDCB\ffmpeg.txt"
::pause
exit

テキストエディタ等で上記スクリプトをコピペ(ラーメンプログラムですみません…)。ツイート機能についてはTwitter連携の項を参照。
②上から4つまでのsetを自分の環境に合わせてそれぞれ変更(“"は環境変数使用時に補完されるので付けないで下さい)
③以下の条件に当てはまらない場合は5番目のset FFOPTIONを以下のように変更
Intel Core i又はxeon(AMDはQSVが使えない)(少々重い処理があるため低スペックだと詰まっちゃう?)
・Haswel以降(h.264のLA-ICQを使うため)
・グラボを付けている場合Windows8以降のOS(それ以前だと内蔵GPUを併用できないから)
↓(IvyBridge)先行探索でない固定品質(ICQ)27

set FFOPTION=-c:a aac -b:a 192k -vf yadif=0:-1:1,pp=ac -g 300 -bf 16 -refs 16 -global_quality 27 -c:v h264_qsv -preset veryslow -b_strategy 1 -look_ahead 0 -pix_fmt nv12 -aspect 16:9 -s 1280x720

↓(~SandyBridge,AMD,Windows8未満でグラボを付けている場合)x264ソフトウェアエンコードする(veryfastくらいが高圧縮且つ現実的なエンコ時間かと)(crf値を色々変えてみて画質とサイズのバランスを決めて下さい)

set FFOPTION=-c:a aac -b:a 192k -vf yadif=0:-1:1,pp=ac -g 300 -bf 16 -refs 16 -c:v libx264 -preset veryfast -b_strategy 1 -crf 25 -pix_fmt yuv420p -aspect 16:9 -s 1280x720

↓(低スペ)ppフィルタはfa<acの順で,presetはveryfast<faster<fast<medium<slow<slower<veryslowの順でエンコ時間が長くなる。ただし品質や圧縮率とはトレードオフである。
-vf yadif=0:-1:1,pp=ac````-preset veryfast ④誤作動防止の為必ず"PostRecEnd.bat"以外の名前でEpgTimerSrvがあるフォルダに保存。

運用

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

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

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

ffmpegオプションの解説
ffmpegの構文の基本
"ffmpeg.exeのパス" 入力オプション -i "入力ファイルパス" 出力オプション フィルタ "出力ファイルパス"
私的に今のところffmpegのh264_qsvで一番高画質で高圧縮な設定だと思うんだ(キリッ)
"%FFFOLDERPATH%\ffmpeg.exe" -y -i "$FilePath$" -c:a aac -b:a 192k -vf yadif=0:-1:1,pp=ac -g 300 -bf 16 -refs 16 -global_quality 27 -c:v h264_qsv -preset veryslow -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12 -aspect 16:9 -s 1280x720 -map 0:p:$SID10$:0 -map 0:p:$SID10$:1 "%MP4FOLDERPATH%\$FileName$.mp4"

"%FFFOLDERPATH%\ffmpeg.exe"ffmpeg.exeのパスの環境変数を参照して起動
-yyesnoで聞かれたら自動でyesを選択
-i "$FilePath$"“$FilePath$"を読み込む。
-c:a aac -b:a 192k音声エンコーダはデフォルト,192kbps
-vf yadif=0:-1:1,decimate,pp=acフィルタオプション。前から順にインターレース解除(bwdifよりyadifの方が若干綺麗で低サイズだった…),自動で重複したフレームを定期的に削除(アニメなんかは元々24fpsで作られてる。単純計算で0.8倍のファイルサイズになるが,処理速度に影響が大きく,アニメ向きなので廃止。),デノイズとデブロッキング(ソースの汚い部分を滑らかにしてくれるので"地デジの場合はソースより綺麗"になり,ファイルサイズも削減できる。市販品だとノイズリダクションに近い?)
-g 300GOP長。Iフレーム間の距離。大きい方が高圧縮だが,大きくしすぎるのもよろしくない。24fpsの場合は240くらいが良いだろう。
-bf 16最大16枚の連続するBフレームを使う。
-refs 16最大16フレームまで動き予測の際に参照できる。
-c:v h264_qsvハードウェアエンコード(Quick Sync Video)のx264コーデック
-global_quality 27 -look_ahead 1先行探索固定品質27(値を大きくするほど低品質低ビットレート低サイズ)(品質と圧縮率の観点から私的には25<<26<27>>28>29>>30)
-look_ahead_depth 100先行探索の先読みの深さ100
-preset veryslowゆっくり丁寧にエンコすることで高圧縮になる(はずなんだけど,そんなに変わらん)
-b_strategy 1Bフレームの挿入位置を適応的に判断する
-pix_fmt nv12ピクセル形式をデジタル放送に合わせてYV12に指定(QSVの場合はNV12)
-aspect 16:9アスペクト比16:9
-s 1280x720解像度を1280x720に変更
-map 0:p:$SID10$:0 -map 0:p:$SID10$:1サービスIDを指定(これを指定して前後の番組の音声方式が一致しない時音声がおかしくなってしまうのを回避)。
"%MP4FOLDERPATH%\$FileName$.mp4""一時的にmp4を吐き出すフォルダ"の環境変数を参照しそこに書き出す(直に"Google Photos Backup用フォルダ"に書き出すと正しく認識してくれないため)。
-filter_complex channelsplit(予約登録の番組詳細ファイル内の"デュアルモノ"という文字列で条件分岐した後)左右の音声を分離して2トラックのモノラルに分ける処理。これをしないとニュース7が左日本語右英語の英会話教材になってしまう。

ffmpegのエンコテストや溜まったtsの処理

D&Dで処理するには,入力を"%1",出力を"パス名%~n1.mp4"にする。$SID10$をts.program.txtのServiceID(例えばBS11なら211,MXなら23608)に置き換えるか,2つの-map 変数を削除する。

"C:\hoge\ffmpeg.exe" -i %1 -vf yadif…-map 0:p:211:0 -map 0:p:211:1 "C:\hoge\%~n1.mp4"
pause

例えばOP部分だけカットして色々試行錯誤するには,最初に-ss秒シークさせて読み込み,そこから-t秒後(再生ソフトで表示される時間で言うと終了時刻と開始時刻の差にあたる)までカットする,みたいにすると良い。

ffmpeg -ss 75 -i %1 -t 90 -vf yadif…
mpeg2-tsの字幕をmp4に埋め込む(焼くのではない)

一度自動エンコに組み込んでみたが,そもそもgoogleドライブが対応していなかった…
https://github.com/iGlitch/Caption2Ass からMPEG-TS字幕データ抽出ツールを入手
②以下コマンドでsrt形式で字幕を抽出

"C:\hoge\Caption2AssC_x64.exe" -format srt %1

③以下コマンドでエンコしながら結合

"C:\hoge\ffmpeg.exe" -i %1 -f srt -i "C:\hogehoge.srt" -vf yadif=0:-1:1,decimate,pp=ac -global_quality 27 -c:v h264_qsv -preset veryslow -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12 -aspect 16:9 -s 1440x810 -c:a aac -b:a 192k -map 0:p:hoge:0 -map 0:p:hoge:1 -map 1:0 -c:s mov_text "C:\hoge\%~n1.mp4"

おわりに

余談

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

ひとこと

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