俺の外付けHDD

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

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

精神衛生上PLEX公式またはGithubソースコードが公開されているものだけを使ってTS抜きして視聴・録画・永久保存する環境を構築する.
外付けカードリーダを使用する場合,EpgDataCap_Bon.exeを使うためにはGitgubにはソースコードが見当たらないB25Decoder.dllが必要になってしまう. ということでこの機会にTVRockのようにTVTest.exeで録画できるxtne6f氏の最新版EDCBを使ってみた.Twitter連携機能はTwitter API+ruby+dosで,自動エンコはffmpeg+dosで行っている. 前記事も一応残しておくつもりだが更新はこっちがメイン.
※この記事はPX-W3PEをベースにしています.別の機種のチューナーの場合ハードやドライバ辺りの導入方法が違いますが,他は参考になるかもしれません.

見出し

したいこと 参照してほしい記事・項
取り敢えずts抜き環境を構築 旧記事
視聴だけ 共通,TVTest
録画してPCで観る 共通,TVTest,EDCB
録画開始時ツイート 共通,TVTest,EDCB,xtne6f版でTwitter連携する
録画番組を観た後も残す,スマホで観る 全ての項

"(EpgDataCap_Bon+EpgTimerの場合のみ)"と記載がある項はTVTest+EpgTimerでない一般的な環境構築の方法を一応残してあるものなので,今回は無視してもらって結構です.またそちらが好みであれば逆に"(TVTest+EpgTimerの場合のみ)"と記載がある項を無視して下さい.ソースの入手性や機能面から私はTVTest+EpgTimerをオススメします.

注意事項

※全て自己責任で行って下さい.責任は負いかねます.
※PCの電源を入れたままアンテナの抜き差しをするとチューナーが壊れるのでやめましょう.
※リンクが機能していない場合は,ggって下さい.
※Readmeを必ず読んでからはじめること.この記事はあくまでも補助です.

・BDA Driver:それぞれのBDAドライバに付属
BonDriver_BDA
BDASpecial-PlexPX
BDASpecial-IT35
TVTest
TVTestVideoDecoder
TvtPlay
TVCaptionMod2
EDCB
EdcbPlugInのbin内に付属
ffmpeg

更新情報

徐々に更新内容が適当になっていくのは気のせいです

更新内容
共通 2017/4
・フォルダ構成を修正
2017/5
・他機種のBDAドライバのリンクを追加
・用意するものにBカスを追加
・フォルダ構成の書き方を変更
・64bit版を試してみたので個々の項目の不備等を修正
・readmeへのリンク集の項を追加
2017/6
・ハードの設定の項目を追加
・用意するものを修正
・アンテナの調整について追記
・電源の設定に停電時の自動復旧について追記
コンパイラをVS2017に変更するとともに各種手順を修正
・アンテナ給電時に専用のACアダプタが必要なことを書いていなかったので追記
2017/8
・Q3PE4発売
2017/9
・USB転送タイプのチューナのBonDriver_BDA改に関する記述に抜けがあったため修正
2017/10
・Fall Creators Updateで動作確認&記事の微修正
2017/11
・IT35系チューナのiniが間違っていたので修正
TVTest 2017/4
tvtestビルド時にbaseclassesを足す行程が不要
・TVTestの設定
・B25.tvcasのビルド行程でスクランブル解除出来ないのを修正
2017/5
・TVTestVideoDecoderの設定を変更
2017/6
・字幕プラグインと再生プラグインの説明を修正
・TVTestのトラブルシューティングの項を追加
・ロゴデータの取得方法について追記
・baseclasses必要でした
EDCB 2017/4
・EpgDataCap_Bonのチャンネルスキャン時の行程が古かった
・edcbとtvtestの関連付けを行う
リモートデスクトップ
2017/5
・EdcbPlugIn周りの設定を整理
・指定サービスのみ録画するように設定
2017/10
トラブルシューティングの項を追加
・ChSetファイルについて追記
・EpgTimerSrvの設定に追記
2017/10
・0.10.0ではなく0.9.0へのリンクに修正orz
自動ツイート 2017/4
twitter api gemをインスコする行程を忘れてた
Twitter連携でSSL証明書が無くツイートできないのを修正
2017/5
・曜日を追加
斧に自動ツイートスクリプトと自動エンコバッチをうp
2017/6
・#nhkみたいにハッシュタグを自動で付けられるようになった
2017/9
ハッシュタグ自動選択が上手く動作していなかったので修正
2017/10
・Ruby2.4でRubyInstaller2に変わったため手順を追記
自動エンコ 2017/4
・先行探索固定品質を使う
2017/5
・改良
・文章の整理
・3つのバッチを2つに集約
自動エンコバッチで特定の条件下で音ズレする問題について記述
・サービスIDを指定してエンコすることで特定条件下での音ズレを回避
・デュアルモノを処理する方法を詳しく
・番組情報を参照し条件分岐することで2つのバッチを1つに集約
斧にうpした自動エンコバッチを更新
・2GB以下ではなく未満の場合Google Photos Backup用フォルダに移動させるように変更
・フォルダやffmpegオプションの登録を環境変数で集約
・自動エンコバッチでデジタル放送に合わせてYV12を使うように,24fps化するように変更,解説を分かりやすく?修正
ffmpegのDLリンクが不正確だったので修正
・エンコ時に字幕を埋め込む方法を記述
2017/6
ffmpegのppフィルタでかなり綺麗に
ffmpegの使い方について少し補足
自動エンコでbwdifよりyadifの方が若干綺麗だったので戻した
・自動エンコでrefs等でかなり綺麗になりほぼ完成かな?
・QSVの動作条件を追記
・EDCBの機能を使ってtsやmp4を削除する方法を追記
・ループカウントによる無限ループ対策
・うp容量オーバー時とエラー時にツイートで報告するオマケ機能を追加
・無駄な条件分岐を削除し合理化
・24fps化を廃止
・解像度を1440x810→1280x720に変更
2017/7
・古いファイルの自動削除機能を付けてタスクスケジューラを不要にした
・古いファイルの自動削除機能が動いてなかったので修正
・global_qualityを29に変更
・溜まったtsの自動処理に役立ちそうなサンプルを置いといた
Shift_JIS以外の文字コードの場合動作出来ないことを追記
・役立ちそうなバッチサンプルを追加
Googleフォトが長過ぎるファイル名に対応していないっぽいのでRecName_Macro.dllで適切に処理
Backup and Sync登場でスマホ版と同じく2GB制限が廃止されたので10GBまでうpできるように対応
・実装しないが,番組情報からオプションの選択(24fps化とか品質変更とか)を行うサンプルを公開
2017/8
・リサイズにフィルタを使うように変更し品質を向上
・ファイルサイズの判別時の余計な処理を削減
・夜間時間(東京電力)にエンコを実行して電気代を節約するサンプルを追加
コマンドプロンプトのタイトルバーにエンコ中のファイル名を表示する機能の追加
ffmpegでtsを綺麗に切り出すサンプルを追加
ffmpeg+ImageMagickでtsからgifを作成するサンプルを追加
roop->loop///
2017/9
・キーフレーム切り出しの方法とffplayの使い方を追加
・yadifからbwdifに変更
GoogleフォトがHEVCに対応したので記述(実装はしない)
2017/10
・ループ回数を10から50へ
・ffmpeg3.4への対応
Googleフォトの仕様を鑑みて720p->810pに変更
2017/11
EDCBX_DIRECTを使用
・PostRecEnd.batと録画後実行batの違いを明記
・見やすく

用語解説

用語 解説
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カード デジタル放送の暗号を解く処理を担う.柔らかいのとか黒いのとかはやめておいたほうが身の為である.
凡(Bon) Friio

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

最近ネット受信料について賑わってますね.高みのk

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

何が違うの?

TVTest 0.9.0 0.7.23
ソースコードGitHub 公開されている 公開されていない
挙動 軽い 軽い
キャプ画像を番組名などでフォルダ分け できる できない
モリーキャプチャプラグイン 入ってる 入っていない
xtne6f-work-plus-s 人柱版10.66 TVRock
ソースコードGitHub ある ない ない
挙動 軽い ちょっとモッサリ |忘れたorz
録画ファイル名 半角にできる 要外部処理 要外部処理
番組検索時のアルファベットやスペース 大文字のみ可,スペースは不可(?)
デザイン面 ボタンの大きさ等が使いやすい 番組表がデフォルトでは見づらい 個人的には使いづらかった
同一TransportStreamを1チューナで連続して録画 できる できる できない
TVTest.exeを使ってEPG取得や録画 できる できない できる

共通

用意するもの

Windows OS
・録画の負荷はそれほどないのでCPUはそれほど高スペックでなくておk.ただし長期保存用にエンコする場合は特にソフトエンコの場合それなりのスペックが求められる.
・PCIExpressスロット又はUSB端子の空き
・W3PE4,Q3PE4の場合はUSB2.0ピンのあるマザボ(推奨)又は以下のパーツ等で対応(非推奨)

・ある程度の容量があるストレージ(生tsは結構サイズが大きい:30分アニメ≒4GB,映画・歌番組≒10~15GB,紅白≒30GB)
・チューナーボード
↓地デジx2,BS/CSx2同時録画可能
PLEX 地上デジタル・BS・CS対応TVチューナー PX-W3PE4

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


↓地デジx4,BS/CSx4同時録画可能
B-CASカード(付属していないので以前使っていたものを流用するか https://www.b-cas.co.jp/B-CASカードの発行手続きを行って下さい)
同軸ケーブル(ゴミを買わないよう注意.マスプロがオススメ.出来る限り短くし,電源ケーブル系とは距離を離すこと.)
・分配器(必要な場合)
マスプロ電工 屋内用4分配器 全端子電流通過型 CSP4D-P

マスプロ電工 屋内用4分配器 全端子電流通過型 CSP4D-P

・分波器(集合住宅等で混合波の場合)
マスプロ電工 VU/BS(CS)分波器 SR2-P

マスプロ電工 VU/BS(CS)分波器 SR2-P

・外付けカードリーダ(内蔵カードリーダで録画すると復号漏れで映像が途切れるので安定した録画のためには買っておくと良い)

LNB電源供給用ACアダプタ(BS/CSアンテナを使っていて,他の機器で給電していない場合)(分配器と併せて使用)
プレクス LNB電源供給用ACアダプタ

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

・やる気
・根気
・電気
【QSV自動エンコする場合】
Intel Core-S又はxeon(Core-XやAMDはQSVが使えない)(少々重い処理があるためceleron等だと詰まっちゃう?),Haswel以降(h.264のLA-ICQを使うため.QSVが進化していく事を考えとハイスペックというよりは最新のを買ったほうが良い.)
・グラボを付けている場合Windows8以降のOS(それより前だと内蔵GPUを併用できないから)
・メモリは8GB~,DDR4や高クロックなものがオススメ(QSVの足を引っ張らないため)
・ストレージはSSD(酷使する羽目になるので耐久性やキャッシュの事を考えると3D NAND等のハイエンド製品買っといたほうが良い),Googleフォトにうpするなら256GBでもなんとか.
・特にQSVを使うとマザボチップセットがかなり熱くなるのでしっかり冷やして下さい.x16レーンをグラボが占有していてもNVMeをCPU直結できるZシリーズのマザボなら熱くならず,エンコも早くなりそう.
・夜間に動作する場合は静音についても考えた方が良い.
【ソフトウェアによる自動エンコする場合】 ・エアコン
【参考までも私の環境 】
・OS:Windows10Home64bit(Creators Update適用)
・CPU:Intel Core i5-6500(アイドル時の消費電力と処理能力を天秤にかけるとi5オススメ)
・メモリ:DDR4 8GB(エンコに1/3~半分くらいもってかれる)
SSD 256GB(これだと他に写真や音楽データを入れると10tsくらいしか残せない.使い方にもよるが1TBは欲しいところ.)
・チューナー:PX-W3PE REV1.3
・外付けカードリーダ:ACR39-NTTCom

ハードの取り付け

※PCの主電源が落ちた状態で作業を行ってください
①チューナー又は外付けのカードリーダにB-CASカードを挿し込む.
②PCIExレーン(外付けタイプは拡張ポートでなくメインのUSBポート)にチューナーボードを挿し込む.W3PE4等はマザボUSB2.0ピンにも接続.
③外付けカードリーダを使用する場合はB-CASカードの金属部がカードリーダの金属部にしっかり接触するように(裏返しかな?)挿して,カードリーダを取り付ける.出来れば拡張ポートでなくメインのUSBポートに接続すること.
④一戸建ての場合はプレクスのLNB電源供給用ACアダプタを取り付ける.

電源の設定

①(停電対策)BIOSでAC電源喪失から電源復帰した後自動で起動するように設定.
②(停電復帰時の自動ログイン)Win+R→netplwizと入力→ユーザーがこのコンピューターを使うには,ユーザー名とパスワードの入力が必要のチェックを外す.
③(自動ログイン時のセキュリティ確保のためスタートアップで自動ロックさせる)"C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"右クリ→新規作成→ショートカット→rundll32 user32.dll,LockWorkStationを入力.
私はstartup.batとし以下の内容を記述している.

@echo off
title startup
rem 自分自身を最小化で子バッチとして起動し直す
if not "%STARTED%" == "1" (
    set STARTED=1
    start /min cmd /c,"%~0" %*
    exit
)

rem ロック
rundll32.exe user32.dll,LockWorkStation

rem スタートアップアプリケーション
start C:\DTV\EDCB\EpgTimer.exe
start C:\Freesoft\AGDRec_131F\AGDRec64.exe

rem 現在の日付時刻を環境変数に設定しておく
set "mydatetime=%date% %time%"
rem 停電時を想定しVDSLやルータが再起動するまで3分間待ってやる
timeout /t 180 /nobreak
rem テキストファイルにツイートする内容を一時的に保存
echo %mydatetime%にOSを再起動しました > "C:\DTV\EDCB\tweet.txt"
rem SSL証明書のパスを指定
set SSL_CERT_FILE=C:\DTV\EDCB\cacert.pem
rem ツイート用rubyスクリプトを起動
ruby "C:\DTV\EDCB\tweet.rb" "C:\DTV\EDCB\tweet.txt"

サービス登録でも良いんだけど,こういうのにサービスってあまり好きじゃないのよさ
再起動時にツイートするようにしてたんだけどよく考えたら停電時はVDSLもルータも落ちるのでツイートできてなかった…バカだ…
②コントロールパネル又は設定→電源オプションで自動スリープをなしに設定.
③→電源の追加設定→プラン設定の変更→詳細な電源設定の変更→スリープ→スリープ解除タイマーの許可を有効(これをしないとスリープ復帰で録画できない.S3スリープが出来る状態にしておくこと.)

フォルダ構成

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

TVTest  
┣Plugins  
┃┃(TVTest-develop\sdk\Samples\Win32\Release)  
┃┣*.tvtp  
┃┃(TVCaptionMod)  
┃┣TVCaptionMod2.tvtp  
┃┃(TvtPlay)  
┃┣TvtPlay.tvtp  
┃┃(EDCB-work-plus-s-bin)(TVTest+EpgTimerの場合のみ)  
┃┃(NicoJK-dev)
┃┣NicoJK.tvtp
┃┣NicoJK.ini
┃┃(EdcbPlugIn)
┃┣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  
┃(NicoJK-dev)(sqlite.org)  
┣sqlite3.exe  
┃(EDCB-work-plus-s-bin)(TVTest+EpgTimerの場合のみ)   
┣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  
┃┃(EpgDataCap_BonでEPG取得後自動生成orTVTestの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  
┣B25Decorder.dll(EpgTimer+EpgDataCap_Bonで外付けカードリーダを使う場合のみ必要になってしまう.どっかに落ちてる.)
┃(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)
Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x64)
Visual C++ 2015 再頒布可能パッケージ Update 3
Visual Studio 2017 の Microsoft Visual C++ 再頒布可能パッケージ(VS2017でビルドしたものを別の環境で使う場合)の下の方で展開すると出て来る
Microsoft .NET Framework 4 (スタンドアロンのインストーラー)

OSのユーザー名は半角英数字でないとエラーが出る場合があります.
32bit環境では(x64)は不要,64bit環境では(x86)(x64)両方必要.
余計な言語パックを入れても問題ない.

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

①BDAドライバをDLして解凍(ここにないものはこの項を参考にしないで下さい).
PX-W3PERev1.3
PX-W3PEV2.0
PX-W3PE4
PX-Q3PE
PX-Q3PE4
PX-PX-Q3U4
PX-PX-W3U4
②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は地上波用のプラグインです.
①PCIe転送タイプのチューナはhttps://github.com/radi-sh/BDASpecial-PlexPX/releases
①'USB転送タイプ(W3PE4,Q3PE4も含む)のチューナはhttps://github.com/radi-sh/BDASpecial-IT35/releases
W3PE4,Q3PE4の場合はBonDriver_PX_x3U4_T.iniを以下を参考に書き換えると動くはず(PXW3U4,PXQ3U4をPXW3PE4,PXQ3PE4に書き換えただけ)(本体を持っていないので動作確認はしていませんorz)(動作報告頼む…)
BonDriver_PX_x3U4_S.iniはISDB-T->ISDB-S

[Tuner]
FriendlyName0="PXW3PE4 Multi Tuner ISDB-T BDA Filter #0"
FriendlyName1="PXW3PE4 Multi Tuner ISDB-T BDA Filter #1"
FriendlyName2="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #0"
FriendlyName3="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #1"
FriendlyName4="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #2"
FriendlyName5="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #3"

だめだったらこっち

[Tuner]
FriendlyName0="PXW3PE4 Multi Tuner ISDB-T BDA Filter #0"
FriendlyName1="PXW3PE4 Multi Tuner ISDB-T BDA Filter #1"
Name="PX-W3PE4"
[Tuner]
FriendlyName0="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #0"
FriendlyName1="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #1"
FriendlyName2="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #2"
FriendlyName3="PXQ3PE4 Multi Tuner ISDB-T BDA Filter #3"
Name="PX-Q3PE4"

②内蔵カードリーダでスクランブル解除を行う場合のみ,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/releases から0.9.0のZipでソースを入手
②TVTest-0.9.0.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デコーダ)

Microsoft DTV-DVD Video Decoderは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

NikoJK-dev(ニコニコ実況プラグイン)

xtne6f版非公式フォークはTVTest0.9.0の機能に対応している.
https://github.com/xtne6f/NicoJK/releases
コメントする場合は"sqlite3.exe"が必要なのでhttp://www.sqlite.org/download.htmlの「Precompiled Binaries for Windows」から"sqlite-tools-win32-x86-{数字}.zip"をダウンロード.

TVTestの設定

TVTestでもEDCBのEPGデータを使用したりするので,先にEDCBから設定すると良い.
言われたとおりに進むとチャンネルスキャンをしてくれると思います.
最低限やっておくべきものだけ書きます.どんな項目があるのかざっと確認して好みの設定に変えて下さい.

一般

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

表示

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

ステータスバー

・TvtPlayステータスバーにチェック(PlusのTvtPlay.tvtpの場合)

キー割り当て

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

映像

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

音声

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

録画

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

キャプチャ

・保存先フォルダ:…をを押してお好みに設定してください(私の場合はユーザーのピクチャフォルダのTVTestフォルダ)
・ファイル名マクロ:▼を押してお好みに設定してください
・大きさは表示されている大きさに設定(元の大きさだと例えば50%で表示中にキャプった時に1920x1080に引き伸ばされて保存されてしまう)
・保存形式:JPEGじゃないとパンクしますが画質に拘るのならPNGにしておくと良いでしょう.
※キーが割当されていれば長押しで連写出来たり,プラグインでaviutlと連携して綺麗にキャプれたりするが,それらをやっていると番組を落ち着いて観られないので私はffmpegで全編切り出している.詳しくは自動エンコバッチのサンプルの項を参照.

チャンネルスキャン

自動でチャンネルスキャンされなかった場合は手動で行ってください.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
Button13=
Button14=
; ボタン15の位置にボタンデザイン16,右クリで等倍速,左クリで倍速一覧(%)がポップアップ
Button15=16,StretchZ,StretchPopup

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

NicoJK-devの設定

timerInterval=-1000060fpsで弾幕を流す
※コメントする場合
1.FirefoxまたはGoogleChromehttp://jk.nicovideo.jp/ にアクセスして各自のアカウントでログイン
2.NicoJK.iniのexecGetCookieにブラウザのプロファイルフォルダを設定

execGetCookie="sqlite3.exe "C:\Users\ユーザ名\AppData\Local\Google\Chrome\User Data\Default\Cookies" …

プロファイルフォルダの場所は「firefox cookies.sqlite」「chrome cookie 保存場所」などのキーワードでググって見つけてください.正しく設定できていればTVTestのパネルウィンドウにコメント投稿欄が現れる.

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ファイルやmp4を再生(TvTest)

①tsファイルをプログラムから開く→その他のアプリ→Tvtest.exeで関連付ける
レジストリエディタでHKEY_CURRENT_USER\Software\Classes\Applications\TvTest.exe\shell\open\command(ユーザが"プログラムから開く"で指定したTvTest.exeの起動引数)にアクセス
"C:\TVTest.exeのパス" /nd /d BonDriver_Pipe.dll "%1"に変更
/ndでTSプロセッサーを無効(録画時にスクランブル解除は済んでる為./ndが有効かどうかは外付けカードリーダのアクセスランプで分かる.),/d bondriverの名前でbondriverを指定,%1にファイルパスが補完される.
※追っかけ再生もできるよ.
※因みに拡張子.mp4も再生できるよ.
ffplayで再生する方法(個人的にオススメ)はこちら

TVTestのトラブルシューティング

※PCの電源を入れたままアンテナの抜き差しをするとチューナーが壊れるのでやめましょう
※以下を確認しても解決しない場合は一から環境構築をやり直すか,OSのクリーンインストールを試す.

起動しない

・言語パックは足りてるか
・欠損しているバイナリはないか
・パス等が間違っていないか
・落としたビルド済みソースやバージョンの違うバイナリが混在していないか
・OSのアップデートはなかったか

0dB,0Mbps,D(ドロップ)の値が増えすぎる,ブロックノイズだらけ

・アンテナの向きが正しいかどうか
・給電の設定は正しいか,給電器が壊れてないか
・感度調整は正しいか(BS/CS側のdBが足りず,抜けそうなくらいギリギリまで同軸ケーブルを緩めると映る場合は減衰器,混合波の場合は分波器を挟むと治るかも?)
・各部緩んでいないか
・PCIExの帯域が足りているか
デコーダは入れてあるか
・再生オフになっていないか

S(スクランブル)の値が増える

・内蔵カードリーダのハード側の問題で30分で5桁くらいの値になることがあるが,その場合は外付けカードリーダを使うしかない.
B-CASカードがしっかり刺さっているか
・CPU使用率に余裕はあるか

エラーメッセージ

BonDriverの初期化ができません:選んだチューナーに空きが無いので空いてるチューナーやPipeを選べば問題ない.
DirectShowの初期化ができません.MPEG-2デコーダフィルタをフィルタグラフに追加できません.:使えるデコーダを入れましょう.因みにMSのデコーダwindows8から有料化されたので別のものを使いましょう.
DirectShowの初期化ができません.音声フィルタをフィルタグラフに追加できません.:regsvr32 "C:\TvtAudioStretchFilter.axのパス
・:私の場合は起動中に外付けカードリーダのUSBポートの位置を変えてしまった時に起こった.OSを再起動すること.
カードリーダに接続できません.Windowsのエラーメッセージ :SCARD_W_UNRESPONSIVE_CARD: スマート カードがリセットに応答していません.:B-CASの接触不良なので少し抜いたり奥まで挿す.又は金属部が正しく接触しているか(裏返し?).

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

※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を入手して解凍

チャンネル設定

TVTest+EpgTimerの場合

※上手くいかない場合は"EpgDataCap_Bon+EpgTimerの場合のみ"の方法でやって下さい.スクランブル解除が出来なくてもチャンネルスキャンは行えます.
①EDCB-work-plus-s-binのch2chset.vbsにTVTestフォルダのch2ファイルをD&Dし,EDCBのSettingフォルダに設置
②EdcbPlugIn.iniを開き,以下のように指定(ただでさえファイルサイズの大きい生tsが更に肥大するので指定サービス(SID)録画をする)

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

EpgDataCap_Bon+EpgTimerの場合

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

ChSet4.txt,ChSet5.txtを編集

ChSetファイルでマルチ編成(連番や同じ名前)になってるものは以下のように一番上を残して削除したり,絶対に観ないチャンネルや契約していないチャンネルを削除すると良い.

!    NHKBS1  !   0   17  4   16625   101 1   0   1   1
!   NHKBSプレミアム  !   0   18  4   16626   103 1   0   1   3
!   BS日テレ !   0   15  4   16592   141 1   0   1   4
!   BS朝日1 !   0   0   4   16400   151 1   0   1   5
!   BS-TBS  !   0   1   4   16401   161 1   0   1   6
!   BSジャパン  !   0   3   4   16433   171 1   0   1   7
!   BSフジ・181    !   0   16  4   16593   181 1   0   1   8
!   BS11イレブン    !   0   9   4   16528   211 1   0   1   11
!   BS12トゥエルビ !   0   11  4   16530   222 1   0   1   12
!   放送大学BS1   !   0   14  4   18098   231 1   0   1   231
!   放送大学BS2   !   0   14  4   18098   232 1   0   1   232
!   放送大学BS3   !   0   14  4   18098   233 1   0   1   233
!   放送大学ラジオ   !   0   14  4   18098   531 2   0   1   531

EpgDataCap_Bon.exeの設定(EpgDataCap_Bon+EpgTimerの場合のみ)

①EpgDataCap_Bon.exeを2つ起動.
②それぞれS,Tを選択しチャンネルスキャンをする.時間がかかるのでその間にPC内のいかがわしい画像等を整理しましょう.
③終わったら目的のチャンネルが表示されていることを確認し閉じる.
BS1,BSプレミアム等が検出できない場合は,BonCtrl.iniのChChgTimeOut ServiceChkTimeOutでそれぞれの値を15~20程度に変更して再度スキャン.(チャンネルスキャンのタイムアウト値を大きくする)(人柱版10.61.1以降)
④再度EpgDataCap_Bon.exeを起動し設定を開く
⑤基本設定
・保存フォルダ:指定
⑥動作設定
スクランブル解除処理を行う:チェック
EMM処理を行う:チェック(有料放送を契約している方は必須)
録画時,字幕データを含める:お好みで
最小化時タスクトレイに入れる:チェック(しないと録画時に毎回現れて邪魔)
EPG取得設定,サービス表示設定
EPG取得サービス:マルチ編成(連番や同じ名前)になってるものは一番上を残して削除,絶対に観ないチャンネルや契約していないチャンネルを削除
⑧ネットワーク設定
UDP送信などは使い勝手が悪いのでパス.追っかけ再生などはTVTestから直接ファイルを開きtvtplayを使うと良い.

EpgTimerSrv設定

EpgTimer.exeを起動→設定ボタン→EpgTimerSrv設定
※これらの設定を終えてから,EPG取得を行って下さい.
※設定変更後は一度終了してからexeを再起動してください.

基本設定

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

EPG取得

EPG取得開始時間:録画に重ならない好きな時間を最低でも1日1回は指定(私は3,9,15,21時)
・条件:2つとも0分(出来るだけ延長とかに対応するため)

録画動作

・録画,EPG取得終了後のデフォルト動作:自動エンコしたり外出先からアクセスする場合は何もしない,自動エンコしない場合はスタンバイ
・録画後動作の抑制条件:0分以内に予約がある場合(自動エンコを録画中も実行して詰まらせないため)
・ドロップログ:お好みで.問題解決の参考になるかも?
・番組情報:自動エンコバッチを使用する場合はチェック
・録画マージンのデフォルト:弄らないで良いでしょう(低スペでなければ前後共0に変えても大丈夫だと思う)
・プロセス優先度:通常以上又は心配なら高に設定(リアルタイムはオススメしない).

予約情報管理

録画時のファイル名にPluginを使用する:チェック
設定:readmeを参照しお好みに.因みに↓はZtoHで半角に,Head10$SubTitle2$が意図しないものになった場合ファイル名が長くなり過ぎるのを防いでいる.

$SDYY$$SDMM$$SDDD$_$ZtoH(Title)$$Head10~(ZtoH(SubTitle2))$.ts

その他

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

EpgTimerの設定

どんな項目があるのかざっと確認して好みの設定に変えて下さい.
人柱版10.66等とは少々設定GUIが違いますが,分かりやすくなっていると思う.

動作設定

・スタートアップEpgTimer.exeのショートカットを作成(常駐していないと録画できません)
・テーマを適用する:チェックを外す(軽くなる)
・EpgTimerSrv設定は後述

番組表

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

外部アプリケーション

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

EDCBの使い方

例1 アニメ全録

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

例2 今期アニメ毎週録画

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

外出先から予約・視聴

たまにしか使わないのであればchromeリモートデスクトップが一番お手軽だろう.
PCの性能とチューナー数が許す限り何番組同時に録画しても視聴してもエンコしても大丈夫だ.ここが市販レコーダーとの差である.
頻繁にロケフリを利用するならばTvRemoteViewer_VBを利用したりリモート用にVPNで環境を作ると良いだろう.

EDCBのトラブルシューティング

・予約一覧にて
 赤:実行されない予約
 黄:時間が重なって一部のみ録画される予約
 灰:録画モードが無効
・録画済み一覧にて
 黄:復号漏れ.コマ落ち,真っ暗
 赤:ドロップ.ブロック抜け,コマ落ち,真っ暗
 ※特殊なストリーミングの為多少エラーパケットがあっても問題なく再生出来ればスルーしておk.スクランブルが解除されている かはtsプロセッサを無効にするか外部アプリでtsを再生したりエンコしてみたりするとわかる.
ファイル保存で致命的なエラーが発生した可能性があります:ストレージの問題,ファイル名の問題
録画中に番組情報を確認できませんでした:EPGデータを参照し録画開始を試みたものの放送の取得に失敗した場合.受信不良(天候,接触,給電,チャンネルスキャン),番組変更(時間,タイトル,EventID),BonDriverとの受け渡しの失敗,PC時計の狂い等様々な原因が考えられる.
録画時間に起動していなかった可能性があります:そのまんま
録画中にキャンセルされた可能性があります:ストレージの問題,PC時計の狂い
一部のみ録画が実行された可能性があります:チューナー不足,録画の中断,起動の遅れ,PC時計の狂い
・同じ番組名の番組が録画できない:同一番組無効登録
EPG取得に失敗:チューナー数の設定,BonDriver不良,チャンネルスキャン不良,ドロップが多い,放送休止
B25Decoder.dllの読み込みに失敗しました:VC++ 2005 SP1 再頒布可能パッケージ等のランタイムが必要
・PC起動時に自動的に起動できない:EpgTimerSrv.exeをサービスに登録orEpgTimer.exeをスタートアップに登録
・録画中にEpgDataCap_Bon.exe又はTVTest.exeのGUIがない:EpgTimerSrv.exeをサービス登録した場合,OSの仕様でEpgTimer.exe又はTVTest.exeが起動していないと表示されない(サービス登録したexeから起動したexeも含む).
・スタンバイ,休止から復帰しない:電源の設定,ハードウェアの仕様
・スタンバイ抑制条件が効かない:Vista以降のOSの仕様でユーザー操作や別アプリの実行するスタンバイ/休止への移行のキャンセルはできない.
・追従失敗:録画直前のEPGデータを取得するため,視聴時のEPGデータ取得を有効にし録画アプリ起動開始時間を多めにする.

録画前後実行bat

xtne6f版でTwitter連携する

Ruby環境を構築する

http://rubyinstaller.org/downloads/ のRubyInstallersからインストーラーをDL.私はRuby 2.3.3 (x64)を選んだ.
②↑をインストール.「Rubyの実行ファイルへ環境変数PATHを設定する」「.rbと.rbwファイルをRubyに関連づける」にチェック.
③インストールされたかruby -vで確認.rubyのバージョンみたいなのが出てくればおk
※ruby2.4~
④そのままRubyInstaller2が起動するので,「1」「2」「3」の順に入力する.

 _____       _           _____           _        _ _         ___
|  __ \     | |         |_   _|         | |      | | |       |__ \
| |__) |   _| |__  _   _  | |  _ __  ___| |_ __ _| | | ___ _ __ ) |
|  _  / | | | '_ \| | | | | | | '_ \/ __| __/ _` | | |/ _ \ '__/ /
| | \ \ |_| | |_) | |_| |_| |_| | | \__ \ || (_| | | |  __/ | / /_
|_|  \_\__,_|_.__/ \__, |_____|_| |_|___/\__\__,_|_|_|\___|_||____|
                    __/ |           _
                   |___/          _|_ _  __   | | o __  _| _     _
                                   | (_) |    |^| | | |(_|(_)\^/_>

   1 - MSYS2 base installation
   2 - MSYS2 system update
   3 - MSYS2 and MINGW development toolchain

Which components shall be installed? If unsure press ENTER [1,2,3] 1

…

Which components shall be installed? If unsure press ENTER [] 2

…

Which components shall be installed? If unsure press ENTER [] 3

…

Which components shall be installed? If unsure press ENTER [] (Enter)

ruby~2.3.x
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は今回使わない情報なので嘘でも構わない.
Access levelはRead and writeに設定.

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

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を参考に自分好みに変更すると良い.録画開始時に実行したい場合(readme_mod参照)は"PostRecStart.bat"という名前でEpgTimerSrvがあるフォルダに保存.
EDCBから受け取ったチャンネル名からハッシュタグを判別し,番組タイトルをテキストファイルに上書き保存し,rubyでそのテキストファイルを読ませてツイートという流れになっている.
ハッシュタグ自動判別が要らなければrem ツイート以降のみでよい.
if not defined HASHTAG set HASHTAG=%ServiceName%でリストにない場合はハッシュタグではなくそのままチャンネル名を入れるようにした.

rem _EDCBX_DIRECT_
rem ChSet5.txtを参考にしながらチャンネル名を,Twitterを漁りながらハッシュタグを編集
rem BS
if "%ServiceName%" == "NHKBS1" (
    set HASHTAG=#nhkbs1
) else if "%ServiceName%" == "NHKBSプレミアム" (
    set HASHTAG=#nhkbsp
) else if "%ServiceName%" == "BS日テレ" (
    set HASHTAG=#bsntv
) else if "%ServiceName%" == "BS朝日1" (
    set HASHTAG=#bsasahi
) else if "%ServiceName%" == "BS-TBS" (
    set HASHTAG=#bstbs
) else if "%ServiceName%" == "BSジャパン" (
    set HASHTAG=#bsjapan
) else if "%ServiceName%" == "BSフジ・181" (
    set HASHTAG=#bsfuji
) else if "%ServiceName%" == "BS11イレブン" (
    set HASHTAG=#bs11
) else if "%ServiceName%" == "BS12トゥエルビ" (
    set HASHTAG=#bs12
)
rem 地デジ
if "%ServiceName%" == "NHK総合1・東京" (
    set HASHTAG=#nhk
) else if "%ServiceName%" == "NHKEテレ1東京" (
    set HASHTAG=#etv
) else if "%ServiceName%" == "tvk1" (
    set HASHTAG=#tvk
) else if "%ServiceName%" == "チバテレ1" (
    set HASHTAG=#chibatv
) else if "%ServiceName%" == "日テレ1" (
    set HASHTAG=#ntv
) else if "%ServiceName%" == "テレビ朝日" (
    set HASHTAG=#tvasahi
) else if "%ServiceName%" == "TBS1" (
    set HASHTAG=#tbs
) else if "%ServiceName%" == "テレビ東京1" (
    set HASHTAG=#tvtokyo
) else if "%ServiceName%" == "フジテレビ" (
    set HASHTAG=#fujitv
) else if "%ServiceName%" == "TOKYO MX1" (
    set HASHTAG=#tokyomx
)
rem その他
if not defined HASHTAG (
    set "HASHTAG=%ServiceName%"
)
rem ツイート
echo %SDYY%/%SDM%/%SDD%(%SDW%) %STHH%:%STMM%~%ETHH%:%ETMM% %Title% %HASHTAG% > "C:\EpgTimerSrvのフォルダ\tweet.txt"
set "SSL_CERT_FILE=C:\EpgTimerSrvのフォルダ\cacert.pem"
ruby "C:\EpgTimerSrvのフォルダ\tweet.rb" "C:\EpgTimerSrvのフォルダ\tweet.txt"  

↓こんな感じになる

↓下の自動エンコバッチに組み込んだ場合の一例(.tsじゃなくて.mp4が10GB以上ですorz)

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

この項が肥大化し過ぎたので別記事に分けるかも.
全体的な流れとしては,

録画終了
↓
TSとかmp4を古い方から自動削除
↓
音声形式を見て音ズレしないように適切なオプションを設定
↓
ffmpegで補正処理+QSVにしてはマシなエンコ
↓
ファイルサイズが10GB以下ならうp,10GBより大きくてGoogleフォトに保存出来なかったりエラーが起こったらTwitterで警告

ってのを放って置いても大丈夫なくらい完全自動で動作させようってのがこのバッチのポリシー.

特徴

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

・市販のレコーダーのリアルタイムエンコードより品質・圧縮率共に優秀である.ファイルサイズが生tsに比べ約1/5~1/15になる(30分アニメだと約200~500MB,平均約350MB).
エンコード時間は番組の約1/3~1/2(i5-6500).オプションを妥協すれば短くなる.
・放置し過ぎて注目番組の録画を忘れたりするくらい放って置いても完全自動で動作するようになっている.音ズレしちゃう時は手動で編集して~みたいな仕様ではない.ただしインターミッション等音声チャンネルが通常とは異なる場合(殆どないけど)は正常に動作しません.
コントラスト・動きが大きい番組,長い番組はどうしてもサイズが大きくなってしまう.Backup and Sync登場でスマホ版と同じく2GB制限が廃止されたので10GBまでうp出来る.Google Photos Uproderには2GB制限があるため手動でうpしてもらうしかない.ただ紅白とかはGoogleフォト自体の制限である10GBを超えてしまいうpすら出来ない可能性があるが,hevc_qsvの品質が微妙なのでh254_qsvを使っている.
・確実な動作のために今のところCMカット機能は実装しない(ウォーターマークが無かったり突然消えた場合や提供&エンドカードはカットされるのでffmpegのフィルタオプションを使った音声式なら根気があれば安定したのが作れそう).
・基本的にPCを起動しっぱなしにすることが前提.スリープや休止状態では動作しませんがロック中は問題なく動作します.
・特にQSVを使うとマザボチップセットがかなり熱くなるのでしっかり冷やして下さい.ファンやヒートシンクを増設したりグリスを塗り替えるなどしてしっかり冷やして下さい.大事なことなので二回言いました.(cpu直結のストレージなら熱くならないかも?)

事前準備

①管理者権限が必要ないディレクトリ(program filesとか以外)に"一時的にmp4を吐き出すフォルダ","Backup and Sync用フォルダ","10GB以上用フォルダ"(名前はお好みに)計3つの空フォルダを作成.
②以下のEDCBの設定をしてあることが前提
・番組情報を出力するにチェック
・録画後動作の抑制条件:0分以内に予約がある場合(自動エンコを録画中も実行して詰まらせないため)
・xtne6f版recname_macro.dll等で半角リネーム(ZtoH)して全角でffmpegがエラーを吐かないようにする.$SubTitle2$を使う場合はHead文字数で意図しない長いサブタイトルがヒットしてしまった時にファイル名が長くなり過ぎてgoogleフォトが認識するにも関わらずうp出来なくならないようにする.
例:$SDYY$$SDMM$$SDDD$_$ZtoH(Title)$$Head10~(ZtoH(SubTitle2))$.ts
https://photos.google.com/appsからBackup and SyncをDLしてインストール(以前のアップローダを使っていた場合は勝手に置き換わる形になる).
以下の設定をすることでローカルから削除してもGoogleフォトに残るGoogle Photos Uploaderのような挙動にできる.
・"Backup and Sync用フォルダ"のみを指定
・"高画質(無料,容量無制限)"を選択
・"写真と動画をgoogleフォトにアップロード":チェック
・削除するアイテム:他の場所からアイテムを削除しない
・マイドライブをパソコンに同期:チェックを外す
・共有フォルダからアイテムを削除する際に警告を表示する:チェックを外す
・システム起動時にバックアップと同期を開く:チェック
※家族と共有する場合は,家族用Googleアカウントでログインするか,"Googleフォト"フォルダとフォルダ分け後のフォルダを家族との共有フォルダにすると良い.ただし他人とリンクを共有したらOUT.
https://ffmpeg.zeranoe.com/builds/ からffmpeg公式のバイナリを入手(Version:安定版がおすすめ,Architecture:OSに合わせる,Linking:dllがおすすめ→Download FFmpeg)(2.x.x等のような古いffmpegには必要な機能が入っていない場合があるので注意)

自動エンコバッチ本体

rem _EDCBX_DIRECT_
@echo off


rem ====================環境変数設定====================
rem ファイル名をタイトルバーに表示
title "%FileName%.ts"をエンコード中...
rem ffmpeg.exeがあるフォルダのパス
set "FFFOLDERPATH=C:\DTV\ffmpeg"
rem 一時的にmp4を吐き出すフォルダのパス
set "MP4FOLDERPATH=C:\DTV\MP4"
rem backup and sync用フォルダのパス
set "BASFOLDERPATH=C:\DTV\backupandsync"
rem 10GB以上用フォルダのパス
set "OTHERFOLDERPATH=C:\Users\Shibanyan\Desktop"
rem ffmpegのオプション
set "FFOPTION=-vf bwdif=0:-1:1,pp=ac,scale=1280:720:flags=lanczos+accurate_rnd -global_quality 27 -c:v h264_qsv -preset:v veryslow -g 300 -bf 16 -refs 16 -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12"
rem mp4,TS,番組情報,エラーログファイルの自動削除時にそれぞれ残す数を指定
set AUTODEL=10


rem ====================ファイルの削除====================
rem mp4,TS,番組情報,エラーログファイルを日付が古い順に列挙し%AUTODEL%個以上あれば削除(運用時はdelの前のコメントを外して下さい)
for /f "skip=%AUTODEL% delims=" %%a in ('dir "%BASFOLDERPATH%\*.mp4" /b /o-d /s') do (
    del "%%a"
)
for /f "skip=%AUTODEL% delims=" %%a in ('dir "%FolderPath%\*.ts" /b /o-d /s') do (
    del "%%a"
)
for /f "skip=%AUTODEL% delims=" %%a in ('dir "%FolderPath%\*.txt" /b /o-d /s') do (
    del "%%a"
)
for /f "skip=%AUTODEL% delims=" %%a in ('dir "%FolderPath%\*.err" /b /o-d /s') do (
    del "%%a"
)


rem ====================音声形式の判別====================
rem 番組情報の中に"デュアルモノ"という文字列があれば環境変数"FFOPTION"に"-filter_complex channelsplit"を加える
findstr "デュアルモノ" "%FilePath%.program.txt"
if %ERRORLEVEL% equ 0 (
    set FFOPTION=%FFOPTION% -c:a aac -b:a 128k -filter_complex channelsplit
) else if %ERRORLEVEL% equ 1 (
    set FFOPTION=%FFOPTION% -c:a aac -b:a 256k
)


rem ====================おまけ====================
rem ループ処理用
set CNT=0
:top
rem 録画の開始終了でビジーなので負荷を減らすために10秒待つ
timeout /t 10 /nobreak


rem ====================エンコード====================
"%FFFOLDERPATH%\ffmpeg.exe" -y -init_hw_device qsv:hw -i "%FilePath%" %FFOPTION% -map 0:p:%SID10%:0 -map 0:p:%SID10%:1 "%MP4FOLDERPATH%\%FileName%.mp4"
rem エンコ後のファイルのサイズを環境変数"MP4SIZE"に指定
for %%i in ("%MP4FOLDERPATH%\%FileName%.mp4") do (
    set MP4SIZE=%%~zi
)


rem ====================ファイルサイズ判別====================
rem QSVのトランスコードに失敗すると"Error during encoding: device failed (-17)"が返され稀にエンコに失敗してしまうので,ファイルサイズが0バイトなら失敗とみなしループさせて復旧を試みる
rem 環境変数"MP4SIZE"の下1桁を切り捨て(大き過ぎる数字は32bitで計算出来ないため),10GB以下ならbackup and sync用フォルダ,大きいなら10GB以上用フォルダへ(10GB以上はうp出来ない)(1073741824=10737418240/10,10737418240byte=10GB)(40GBとかは想定していない)
if %MP4SIZE% equ 0 (
    goto :loop
) else if %MP4SIZE:~0,-1% leq 1073741824 (
    call :backupandsync
    goto :eof
) else if %MP4SIZE:~0,-1% gtr 1073741824 (
    call :otherfolder
    goto :eof
)


rem ====================サブルーチン====================
:loop
rem 50回までループし,それでもダメなら諦めて無限ループを回避
set /a CNT=CNT+1
if %CNT% geq 50 (
    goto :err
) else (
    goto :top
)

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

:otherfolder
rem エンコしたファイルが10GBより大きいならtsとmp4を10GB以上用フォルダに移動
move "%FilePath%" "%OTHERFOLDERPATH%"
move "%MP4FOLDERPATH%\%FileName%.mp4" "%OTHERFOLDERPATH%"
rem 10GBより大きいので手動でうpする必要があることをツイートで報告
rem echo %FileName%.mp4は10GB以上なので諦めてね! > "C:\EpgTimerSrvのフォルダ\tweet.txt"
rem set "SSL_CERT_FILE=C:\EpgTimerSrvのフォルダ\cacert.pem"
rem ruby "C:\EpgTimerSrvのフォルダ\tweet.rb" "C:\EpgTimerSrvのフォルダ\tweet.txt"
rem pause
exit /b

:err
rem エンコに失敗したならtsとmp4を10GB以上用フォルダに移動
move "%FilePath%" "%OTHERFOLDERPATH%"
move "%MP4FOLDERPATH%\%FileName%.mp4" "%OTHERFOLDERPATH%"
rem 予期せぬエラーが発生したことをツイートで警告
rem echo %FileName%.tsのエンコードを10回トライしてもダメだったよぉ。10GB以上用フォルダに退避させておいたから早く助けてあげて!! > "C:\EpgTimerSrvのフォルダ\tweet.txt"
rem set "SSL_CERT_FILE=C:\EpgTimerSrvのフォルダ\cacert.pem"
rem ruby "C:\EpgTimerSrvのフォルダ\tweet.rb" "C:\EpgTimerSrvのフォルダ\tweet.txt"
rem pause
exit /b

テキストエディタ等で上記スクリプトをコピペ(ラーメンプログラムですみません…).
・ツイート機能はTwitter連携の項を参照,必要ならコメントremを外す.
・削除機能が必要ならremを外す(削除されたファイルは元に戻らないので誤爆注意)。mp4,TS,番組情報,エラーログファイルを古い順に自動削除する際にそれぞれ残す数を指定。
環境変数を自分の環境に合わせてそれぞれ変更する."環境変数使用時に補完されるので付けないで下さい(付けるならset "hoge=hoo"みたいに).
環境変数FFOPTIONを以下のように変更
Intel Core(X-Series,OCを除く),Xeon(AMDはQSVが使えない)(少々重い処理があるため低スペックだと詰まっちゃう?),Haswel以降(h.264のLA-ICQを使うため),グラボを付けている場合Windows8以降のOS(それ以前だと内蔵GPUを併用できない)

デフォルトでおk(推奨構成)

↓(IvyBridge)先行探索でない固定品質(ICQ)

… -look_ahead 0 …

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

… -c:v libx264 …-crf 25 … -preset veryfast … -pix_fmt yuv420p …

↓(低スペ)ppフィルタはfa<acの順で,presetはveryfast<faster<fast<medium<slow<slower<veryslowの順でエンコ時間が大きくなる.品質・圧縮率とエンコ時間はトレードオフであることに注意.

… -vf bwdif=0:-1:1,pp=ac … -preset veryfast …

↓hevc_qsv ICQ(Googleフォトが対応したので一応.色々試してみて使えるやつだけ残した.あと私のi5-6500ですらスペック不足でよくハングアップ(品質を落とせば一応動く)してタスクキルする羽目になる.ハードウェアデコードもブロックノイズだらけで使えなかった.2倍くらいエンコ時間がかかるが,1080pにも関わらず品質的にはデフォルト(h264_qsv LA-ICQ 720p)より落ちるので実装は断念.圧縮率はそこそこ.Googleフォトのプレイヤでは仕様上こちらの方が綺麗に見える.)

-vf bwdif=0:-1:1,pp=ac -global_quality 25 -c:v hevc_qsv -load_plugin hevc_hw -preset:v veryslow -g 300 -bf 16 -pix_fmt nv12

②EpgTimerSrvがあるフォルダに,以下の表を参考にして拡張子.batで,ANSI(Shift_JIS)形式で保存.

ファイル名 好みの名前.bat PostRecEnd.bat
使用方法 録画後実行batにパスを設定 EpgTimer.exeと同じディレクトリに置く
予約・自動予約登録時 個別に録画後実行batにパスを設定 何もしなくて良い
途中から録画した場合 実行しない 実行する
録画中にキャンセルした場合 実行しない 実行する
条件でバッチを分ける パスを設定する時に選べる バッチ内の処理で選ぶしかない

③とりあえずなんか録画してみて動作確認。好みの名前.batの場合はEDCBの自動予約登録の録画後実行batに自動エンコバッチのパスを通す(既に予約一覧に表示されているものにも適用するには一度予約を削除してパスを通したら"自動予約登録条件を変更"を押下する)。

ffmpegオプションの解説

読むことをオススメします.トラブルシューティングや品質改善に役立ててください.
ffmpegの構文の基本

"ffmpeg.exeのパス" 入力オプション -i "入力ファイルパス" 出力オプション フィルタ "出力ファイルパス"

自動エンコバッチ内で最終的にこのような形に補完される.私的に今のところffmpegのh264_qsvで一番高画質で高圧縮な設定だと思うんだ(キリッ)

rem エンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -init_hw_device qsv:hw -i "%FilePath%" -c:a aac -b:a 256k -vf bwdif=0:-1:1,pp=ac,scale=1280:720:flags=lanczos+accurate_rnd -global_quality 27 -c:v h264_qsv -preset:v veryslow -g 300 -bf 16 -refs 16 -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12 -map 0:p:%SID10%:0 -map 0:p:%SID10%:1 "%MP4FOLDERPATH%\%FileName%.mp4"

それぞれのオプションの解説
"%FFFOLDERPATH%\ffmpeg.exe"環境変数FFFOLDERPATHにffmpeg.exeがあるフォルダのパスが補完される.
-yyesnoで聞かれたら自動でyesを選択.要するに同じファイル名のものがあったら上書きする.
-threads 0CPUのスレッド数x1.5(デフォルト値なので省略).ただし並列処理する場合は-threads 1等にしスレッド切り替えが多発して逆に遅くなるのを防止すると良い.
-init_hw_device qsv:hw No device available for encoder (device type qsv for codec h264_qsv).エラーが出る場合追加(ffmpeg3.4~)
-i "%FilePath%""%FilePath%"を読み込む.EpgTimerから受け渡されるマクロについてはReadme_mod.txt参照.
-c:a aac -b:a 256k音声エンコーダはデフォルトのAAC,256kbps
-vf bwdif=0:-1:1フィルタオプション.インターレース解除(yadifの方がボケるからモスキートノイズもファイルサイズも減るが現在のオプションを使う場合bwdifの方がくっきりする)を行う.これをしないと縞々になっちゃうよ><
-vf bwdif=0:-1:1,decimateフィルタオプション.インターレース解除フィルタと組み合わせることで自動で重複したフレームを間引きしてくれる(24fps化.アニメや映画は24fps制作なので行ったほうが動きが滑らかになるが,テロップは30fps制作なのでガクガクする.単純計算で0.8倍のファイルサイズになる.処理速度への影響が大きい.)
-vf pp=acフィルタオプション.デノイズとデブロッキング(ソースの汚い部分を滑らかにしてくれるので"地デジの場合はソースより綺麗"になり,ファイルサイズも削減できる.市販品だとノイズリダクションに近い?)
-vf scale=1280:720:flags=lanczos+accurate_rndフィルタオプション.1280x720にリサイズするときにランチョスというリスケールアルゴリズムを使用,正確な丸め処理を行う.
-global_quality 27 -look_ahead 1先行探索固定品質27(値を大きくするほど低品質低ビットレート低サイズ)(値が1変わるだけで品質に大きく影響するので注意.)
-c:v h264_qsvハードウェアエンコード(Quick Sync Video)のh264コーデックを使用
-preset:v veryslowゆっくり丁寧にエンコすることで高品質高圧縮になる.また,あまり速いとGPUが追いつかずフリーズしちゃう様なので注意.
-g 300GOP長.Iフレーム間の距離.大きい方が高圧縮だが,大きくしすぎるのもよろしくない.24fpsの場合は240くらいが良いだろう.
-bf 16最大16枚の連続するBフレームを使う.
-refs 16最大16フレームまで動き予測の際に参照できる.
-b_strategy 1Bフレームの挿入位置を適応的に判断する
-look_ahead_depth 100先行探索の先読みの深さ100
-pix_fmt nv12ピクセル形式をデジタル放送に合わせてYV12に指定(QSVの場合はNV12)
-map 0:p:%SID10%:0 -map 0:p:%SID10%:1サービスIDを指定.前後の番組の音声方式が一致しない時音声がおかしくなってしまうのを回避(インターミッション等音声チャンネルが通常とは異なる場合は正常に動作しません…).
"%MP4FOLDERPATH%\%FileName%.mp4"環境変数MP4FOLDERPATHに"一時的にmp4を吐き出すフォルダ"のパスが補完され,そこに書き出す(直に"Google Photos Backup用フォルダ"に書き出すと正しく認識してくれないため).
-filter_complex channelsplit(予約登録の番組情報ファイル内に"デュアルモノ"という文字列があった場合)左右の音声を分離して2トラックのモノラルに分ける処理.これをしないとニュース7等のデュアルモノ音声な番組が左日本語右英語の英会話教材になってしまう.それはそれでアリかも.

Googleフォト・ドライブでの録画ファイル管理

※10GBより大きいファイルはGoogleフォトの仕様上うp出来ません.
Googleフォトの詳しい仕様や使用方法はhttps://support.google.com/photos参照.
※改善されてたドライブは特に反映が遅く,更には再生できないトラブルがたまにあるのでそういう場合はフォトを使うと良い.
※一応生TSもhttps://photos.google.com/でうpできる.RecName_Macroで指定するかren *.ts *.m2tsなどで拡張子を変更してうpすればよい.ただし「低スペで自動エンコが出来ないからそのままうpしよ」という考えの方は,Googleに対して迷惑でしかない(onedriveの容量無制限廃止はDTV民が原因らしい…)し,そのスペックでは高負荷に耐えられず確実にブラウザが落ちるので諦めましょう.
※2017年9月30日現在ブラウザ,iOSアプリ共に問題なく再生できることを確認しました.更に以前よりもレスポンスが良くなっています.2017年9月1日現在,2017年7月19日(その数日前にBackup and Syncがリリース)以降にうpされた動画がGoogleドライブにて720p又は全ての解像度でストリーミング出来なくなっています.一応YouTubeの推奨設定でエンコしてみましたが変わりませんでした.元々Googleフォトの高画質設定でうpしている動画はGoogleフォトで直接観た方が快適に観られるというのもあるので,Googleフォト側で定期的にアルバム分けするなどして対応してください.

Googleドライブでフォルダ分けする方法

https://drive.google.com歯車→設定→Googleフォトフォルダを作成するにチェックしてあげれば,自動でGoogleフォトの動画がGoogleDrive内のフォルダに表示される"パソコン"タブの中に"Backup and Sync用フォルダ"が現れる.
前述の通り正しく設定してあればローカル側で削除してもクラウドにはしっかり残ってくれる.
左で必要な階層まで展開しディレクトリごとマイドライブにD&Dして(バックアップが引き続き行われるようPC側のアップローダから再設定して下さい)から検索バーで番組名検索してフォルダ分けする(マイドライブに移動してやらないとフォルダが重複してしまう).
Shiftを押しながら↑↓でファイルの一括選択ができる.ファイル名検索でフォルダ分けする際,ファイルの詳細タブを見れば前回どこまでフォルダ分けしたか分かる.
間違えて削除してしまった場合はフォト側から復元する必要があるようだ.

Googleフォトでアルバム分けする方法

※面倒なのでオススメしません.ただし,ドライブに不具合がある場合は暫くフォトを使ってみて下さい.
検索機能は役に立たない.稀に一部のファイル名において数字やアルファベット等で上手く選別出来ることがある.
キーで前後に移動出来る.
(i)をクリックしないとファイル名が見られない.
?をクリックしてアルバムに追加すればおk.
連続でやっていると重くなるのでF6->Alt+Enterで新しいタブで開き直すと良い
どうやらアルバムの順番は中に入っている最新のファイルの日時によって勝手に並べ替えてくれるらしい(Googleドライブはデフォルトではフォルダ名順だが色々な条件でソート出来る).
古いものから整理しないと,アルバム内で順番がめちゃめちゃになってしまうので注意.
古いものから遡って整理していけば,スクロールバーの同じ位置を長押ししてれば目的のフォルダに早く辿り着く.
まあやってみれば分かるが面倒(Picasa APIの勉強でもしますか…).

自動エンコバッチの応用サンプル

どれも基本的にD&Dで処理する用に書いてあるので,自動エンコバッチに導入する際は%1%FilePath%に修正したり、rem _EDCBX_DIRECT_を追加して使用して下さい. ffmpegを繰り返し使う方は環境変数Pathに設定しておくと良い.ffmpegは色々なアプリケーションに使われているので競合してしまわないよう注意.

D&Dで処理

入力を%1,出力をパス名%~n1.mp4に変更しただけ.%SID10%を番組情報ファイルのServiceID(例えばBS11なら211,MXなら23608)に置き換える(番組情報ファイルが無い場合はffprobe 入力ファイルパスで必要なServiceID(Program XXX)を見つける.誤って前後の番組やワンセグを選択しないように.).

ffmpeg -i %1 -vf bwdif…-map 0:p:211:0 -map 0:p:211:1 "%~dpn1.mp4"
pause
D&Dしたフォルダ内のtsファイルを順次処理

"tsが溜まってるフォルダ"をD&Dで動作する.EDCBから渡されないServiceIDを番組情報ファイルから抜き出している為,番組情報ファイルがtsと同じディレクトリにあることが条件.
=====で囲まれたrem D&Dしたフォルダ内のTSファイルを順次処理するよう呼ぶセクションを削除すれば一応"tsファイル単体"をD&Dで動作できる.

rem ffmpeg.exeがあるフォルダのパス
set FFFOLDERPATH=C:\DTV\ffmpeg
rem mp4を吐き出すフォルダのパス
set MP4FOLDERPATH=C:\Users\Shibanyan\Desktop
rem ffmpegのオプション
set FFOPTION=-vf bwdif=0:-1:1,pp=ac,scale=1280:720:flags=lanczos+accurate_rnd -global_quality 28 -c:v h264_qsv -preset:v veryslow -g 300 -bf 16 -refs 16 -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12

rem ==================================================
rem D&Dしたフォルダ内のTSファイルを順次処理するよう呼ぶ
for %%a in ( %~1\*.ts ) do (
    call :encode "%%a"
)
exit
rem ==================================================

:encode
rem ファイル名をタイトルバーに表示
title "%~nx1"をエンコード中...
rem 番組情報の中に"デュアルモノ"という文字列があれば環境変数"FFOPTION"に"-filter_complex channelsplit"を加える
findstr "デュアルモノ" "%~1.program.txt"
if %ERRORLEVEL% equ 0 (
    set FFOPTION=%FFOPTION% -c:a aac -b:a 128k -filter_complex channelsplit
) else if %ERRORLEVEL% equ 1 (
    set FFOPTION=%FFOPTION% -c:a aac -b:a 256k
)

rem 番組情報ファイルからServiceIDのある行を抜き出し環境変数%SID10LINE%にセット
for /f "tokens=*" %%i in ('findstr ServiceID "%~1.program.txt"') do (
    set SID10LINE=%%i
)
rem %SID10LINE%の前から10文字目,最後の8文字分を除き,環境変数%SID10%にセット
set SID10=%SID10LINE:~10,-8%

rem ループ処理用
set CNT=0
:top
rem 録画の開始終了でビジーなので負荷を減らすために10秒待つ
timeout /t 10

rem エンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -i %1 %FFOPTION% -map 0:p:%SID10%:0 -map 0:p:%SID10%:1 "%MP4FOLDERPATH%\%~n1.mp4"
rem ファイルサイズが0バイトなら失敗とみなしループ(QSVのトランスコードに失敗すると"Error during encoding: device failed (-17)"が返される仕様により稀にエンコに失敗してしまうので,ループさせて復旧を試みる)
for %%i in ("%MP4FOLDERPATH%\%~n1.mp4") do (
    if %%~zi equ 0 goto :loop
)
exit /b

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

:err
rem 予期せぬエラーが発生したことをログで警告
echo %~nx1のエンコードを10回トライしてもダメだったよぉ。 >> "%MP4FOLDERPATH%\ffmpeg_err.log"
exit /b
番組情報から24fps化するか選択

危なっかしいので没になったやつ.
番組情報ファイルのジャンル :と書いてある行の次の行にアニメ又は映画という文字列があれば24fps化,品質を少し上げる.

ジャンル : ←まずこの行を見つけて
映画 - 邦画←んでここの行をみて判断する
映画 - アニメ
映画 - その他
rem ffmpegのオプション
rem 通常
set FFOPTION3029=-c:a aac -b:a 192k -vf bwdif=0:-1:1,pp=ac,scale=1280:720:flags=lanczos+accurate_rnd -global_quality 29 -c:v h264_qsv -preset:v veryslow -g 300 -bf 16 -refs 16 -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12
rem アニメ・映画
set FFOPTION2429=-c:a aac -b:a 192k -vf bwdif=0:-1:1,pp=ac,scale=1280:720:flags=lanczos+accurate_rnd -global_quality 27 -c:v h264_qsv -preset:v veryslow -g 300 -bf 16 -refs 16 -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -pix_fmt nv12

rem 番組情報の中に"ジャンル"という文字列がある行に行番号を付けて取得
for /f "delims=" %%a in ('findstr /n "ジャンル" "%1"') do (
    set GENRE=%%a
)
rem 行番号の部分だけ取り出す
set GENRE_NUMBER=%GENRE:~0,-8%
rem 行番号を1大きくする(次の行に求める内容があるため)
set /a NEED_LINE_NUMBER=%GENRE_NUMBER%+1
echo %GENRE%
rem その行に書いてある内容を抜く
for /f "delims=" %%b in ('findstr /n /r "." "%1" ^| findstr /r "^%NEED_LINE_NUMBER%:"') do (
    set NEED_LINE=%%b
)
その行にて"アニメ"又は"映画"という文字列の有無でオプションを選択
echo %NEED_LINE% | findstr "アニメ 映画"
if %ERRORLEVEL% equ 0 (
    set FFOPTION=%FFOPTION2429%
) else if %ERRORLEVEL% equ 1 (
    set FFOPTION=%FFOPTION3029%
)

rem 番組情報の中に"デュアルモノ"という文字列があれば環境変数"FFOPTION"に"-filter_complex channelsplit"を加える
findstr "デュアルモノ" %1
if %ERRORLEVEL% equ 0 (
    set "FFOPTION=%FFOPTION% -filter_complex channelsplit"
)
echo %FFOPTION%
23時~7時の夜間時間(東京電力)にエンコを実行して電気代を節約

先頭に追加すると動作します.ただのネタなので効果の程は知りません.詰まって時間内に処理しきれない場合は使わないで下さい.

rem dos標準の環境変数timeの先頭2文字が7以上且つ23未満の場合300秒待ってループ
:electric
if %time:~0,2% geq 7 (
    if %time:~0,2% lss 23 (
        timeout /t 300
        goto :electric
    )
)
rem ここから処理
カット時間の計算をdosにやらせる

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

set /p SSH=0
set /p SSM=1
set /p SSS=23

と入力する.

echo カット開始時刻を入力
set /p SSH=
set /p SSM=
set /p SSS=
echo カット終了時刻を入力
set /p TTH=
set /p TTM=
set /p TTS=
rem 秒になおす計算
set /a SS= (%SSH%*3600 + %SSM%*60 + %SSS%)
set /a TT= (%TTH%*3600 + %TTM%*60 + %TTS%)
set /a T= (%TT% - %SS%)
rem 計算結果
echo カット開始時刻は%SS%秒です
echo カット終了時刻は%TT%秒です
echo カット開始時刻と終了時刻の差は%T%秒です

ffmpeg -ss %SS% -i %1 -t %T% …
mpeg2-tsの字幕をmp4に付ける(ソフトサブ)

一度自動エンコに組み込んでみたが,そもそもgoogleドライブが対応していなかった.
昔EpgDataCap_Bon.exeで録画したtsではできるけどEdcbPlugin+TVTest.exeで録画したものでは字幕データが無いよって言われちゃう…
https://github.com/iGlitch/Caption2Ass からMPEG-TS字幕データ抽出ツールを入手
②以下コマンドでsrt形式で字幕を抽出

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

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

… -i %1 -f srt -i "C:\hogehoge.srt" … -map 0:p:hoge:0 -map 0:p:hoge:1 -map 1:0 -c:s mov_text "C:\hoge\%~n1.mp4"
ffmpegでtsファイルを綺麗にpng切り出し

30fpsのtsファイルの場合,-r 30で1秒あたり30枚=全フレーム,-r 1で1秒あたり1枚切り出しが出来る.お好みでどうぞ.
例えば1時間の番組の場合,
-r 30なら1時間x60分x60秒x30フレーム=108000枚(あってるよね?ねぇあってるよね??)となり6桁なので%07dで最大7桁にしておけば連番に困ることは無いかな.0000001.png,0000002.png…みたいになるよ.
-r 1なら1時間x60分x60秒x1フレーム=3600枚となり4桁なので%05dくらいで多分おk.00001.png,00002.png…みたいになるよ.
bwdif=0:-1:1でインタレ解除(これしないと縞々になっちゃう)
pp=acでノイズ除去(ブロックノイズやホワイトノイズに効くので地上波には効果大)
scale=1920:1080:flags=lanczos+accurate_rndで地上波の1440x1080→1920x1080に丁寧なアルゴリズムでリサイズ(ただのリサイズより輪郭が綺麗)
アニメキャプチャ命!の方は録画後実行batに組み込むのもアリだろう(その時は%1とかを適切なマクロに置き換えてね).正直自分は観て楽しめればおkなので普段は使ってない…

rem C:\hoge\ファイル名にフォルダをつくる
md "C:\hoge\%~n1"
rem png連番出力
ffmpeg -i %1 -vf bwdif=0:-1:1,pp=ac,scale=1920:1080:flags=lanczos+accurate_rnd -c:v png -r 30 "C:\hoge\%~n1\%%07d.png"
pause

キーフレームのみ-skip_frame nokeyを切り出す方法もある.gop長によって一定時間あたりの枚数が変わる.

set /p STEPNUM=何(キー)フレームおきに切り出すか:
md "C:\Users\Shibanyan\Desktop\%~n1"
ffmpeg -an -skip_frame nokey -i %1 -vf bwdif=0:-1:1,pp=ac,framestep=%STEPNUM% -vsync 0 "C:\Users\Shibanyan\Desktop\%~n1\%%05d.png"
pause
ffmpeg+ImageMagickでtsファイルからgif作成

ffmpegだけとffmpeg+ImageMagickを使ってgifを作成する方法があるが後者をお勧めする.
ImageMagickhttps://www.imagemagick.org/script/download.php#windows から"ImageMagick-xxx-Q16-(あなたのOSのアーキテクチャ)-(staticかdllお好みでどうぞ).exe"を(HTTPかFTPお好みでどうぞ)でDL.
カット時間を計算(ここでgifになる部分が決まる)→補正付き無劣化()切り出し(ここで解像度が決まる)→そこからpng切り出し(ここでコマ数が決まる)→ImageMagickpngからgif作成(完成)という流れ.
scale=480:270で解像度480x270
-r 5で1秒あたり5枚

rem ==========exeのパスを環境変数に指定==========
rem ffmpeg.exeがあるフォルダのパス
set FFFOLDERPATH=C:\DTV\ffmpeg
rem ImageMagickのフォルダのパス
set IMFOLDERPATH=C:\DTV\ImageMagick
rem gifを書き出すフォルダを作成するディレクトリのパス
set GIFPATH=C:\Users\Shibanyan\Desktop

rem ==========カット時刻の計算==========
echo カット開始時刻を入力
set /p SSH=
set /p SSM=
set /p SSS=
echo カット終了時刻を入力
set /p TTH=
set /p TTM=
set /p TTS=
rem 秒になおす計算
set /a SS= (%SSH%*3600 + %SSM%*60 + %SSS%)
set /a TT= (%TTH%*3600 + %TTM%*60 + %TTS%)
set /a T= (%TT% - %SS%)

rem ==========gifを書き出すフォルダを作成==========
md "%GIFPATH%\%~n1"

rem ==========gif作成==========
rem ffmpegでカットエンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -threads 0 -ss %SS% -i %1 -t %T% -an -vf bwdif=0:-1:1,pp=ac,scale=480:270:flags=lanczos+accurate_rnd -c:v libx264 -preset ultrafast -qp 0 -r 5 "%GIFPATH%\%~n1\temp.mp4"
rem ffmpegでmp4からパレット作成
"%FFFOLDERPATH%\ffmpeg.exe" -y -i "%GIFPATH%\%~n1\temp.mp4" -vf palettegen "%GIFPATH%\%~n1\palette.png"
rem ffmpegでmp4とパレットpngからgifを作成
"%FFMPEGPATH%" -y -threads 0 -i "%GIFPATH%\%~n1\temp.mp4" -i "%GIFPATH%\%~n1\palette.png" -lavfi paletteuse "%GIFPATH%\%~n1\%~n1.gif"
pause

ImageMagickを使わない版(非推奨)

rem ==========gif作成==========
rem ffmpegでカットエンコ
"%FFFOLDERPATH%\ffmpeg.exe" -y -threads 0 -ss %SS% -i %1 -t %T% -an -vf bwdif=0:-1:1,pp=ac,scale=480:270:flags=lanczos+accurate_rnd -c:v libx264 -preset ultrafast -qp 0 "%GIFPATH%\%~n1\temp.mp4"
rem ffmpegでmp4からpngを切り出し
"%FFFOLDERPATH%\ffmpeg.exe" -y -i "%GIFPATH%\%~n1\temp.mp4" -c:v png -r 5 "%GIFPATH%\%~n1\%%05d.png"
rem imagemagickで複数のpngからgifを作成
"%IMFOLDERPATH%\convert.exe" "%GIFPATH%\%~n1\*.png" -layers Optimize "%GIFPATH%\%~n1\%~n1.gif"
pause
ダブルクリックでtsファイルやmp4を再生(ffplay)

ffplayは軽くて綺麗で対応する動画ファイルが多いのでオススメ.録画中のtsファイルをダブルクリックすれば追っかけ再生もできるよ.

設定

①mp4等をプログラムから開く→その他のアプリ→ffplay.exeで関連付ける(ffplay "%1")
ってのが基本なんだが,録画したtsファイルはインターレース解除する必要があるので適切な引数(ffplay -i "%1" -vf yadif=0:-1:1)を指定しなきゃいけない.
コマンドプロンプトを管理者で起動し以下コマンドを実行(CLASSES_ROOTにtsファイル実行時の挙動を設定,CURRENT_USERの"プログラムから開く"リストに引数付きffplayを追加)
".ts"ってのはtsファイルだよってwindowsに教え込む(別に"tsfile"じゃなくてもいいよ)
assoc .ts=tsfile
実行結果がこんな感じならおk
.ts=tsfile
さっきのtsファイルはffplayにほげほげな引数で実行するんだよと教え込む
ftype tsfile="C:\ffplay.exeのパス" -i "%1" -vf "yadif=0:-1:1"
実行結果がこんな感じならおk
tsfile="C:\DTV\ffmpeg\ffplay.exe" -i "%1" -vf "yadif=0:-1:1"
-vf "bwdif=0:-1:1,pp=ac"にして補正処理を有効にしても良い
レジストリエディタでHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tsキー(CURRENT_USERのtsファイル実行時の挙動の設定)を削除(CLASSES_ROOTの設定を反映)
④tsをプログラムから開く→ffplay(新規とか書いてあるかも?)を選択

使い方

q,ESC終了
f全画面
p, SPC一時停止
mミュート
9, 0,/, *音量調節
a音声チャネル切り替え
v映像チャンネル切り替え
t字幕チャンネル切り替え
cプログラム切り替え
w映像と音声波形切り替え
sコマ送り(暗黙的に一時停止)
left/right10秒戻る/進む
down/up1分戻る/進む
page down/page upチャプター戻る/進む,無い場合は10分戻る/進む
right mouse click画面の幅を動画の時間とし右クリックした位置の割合までシーク
left mouse double-click全画面

Seek to 81% ( 0:24:12) of total duration ( 0:30:00)       B f=0/0
1453.65 A-V: -0.002 fd=   1 aq=   36KB vq=  411KB sq=    0B f=0/0

1453秒という意味(カット編集に使える).ただ録画したts等はタイムスタンプがおかしい場合が多い.エラーがあればここに表示される.
※私の環境ではffmpeg3.3.4以降SDL advised audio format 33056 is not supported!エラーにより音が出ないトラブルが発生しております.ffplayだけ3.3.3のstaticに置き換えて対応している.

おわりに

余談

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


ツクモでこんなの見つけた.ts抜きは出来ない.

ひとこと

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

Copyright © 2016-2017 俺の外付けHDD All Rights Reserved.