こんにちは。


今回も前回に引き続きDTV関連のお話です。


前回はCMを処理するために2つの方法があることに触れたと思いますが、1に関しては少し、2に関しては詳しく述べていこうと思います。


まず1の方法、CMをカットした動画をエンコードする方法。

備忘録とか色々ブログ
http://blog.livedoor.jp/swing26/archives/33300896.html

オタクの徒然日記
http://blog.livedoor.jp/fles/archives/31340642.html


上記の2つのブログ様の手法で、録画から自動でCMをカットした動画をエンコードすることができます。


この方法は私も試したのですが、何せCore i3でエンコードすると時間がかかり過ぎる...
かといって画質も妥協したくない。


私は見たら録画ファイルを消すタイプの用途なので、容量が減るとかそういうメリットはあまり無く、録画したTSファイルをそのまま再生するのがベストと考えました。


そこで調べたところ、TSファイルをチャプター情報と一緒に読み込ませ、CMをスキップする方法があるらしいと。


前置き長いですね。要は私と同じような環境や使い方をする方におすすめの手法を紹介します。

※今回作成したプログラムについて、

・備忘録とか色々ブログ 様
http://blog.livedoor.jp/swing26/

・オタクの徒然日記 様
http://blog.livedoor.jp/fles/

・空に架かる橋 様
http://soranikakaruhashi.blog.fc2.com/

このお三方のブログのコードなどを参考、流用している部分が多数あります。
素晴らしいプログラムをありがとうございます。
また、その他ソフトウェアの作者様にも敬意を表します。


○用意するもの

・AutomkChapter.zip
https://drive.google.com/file/d/0BxM2ghExhaEEc19valM5WERuSWM/view?usp=sharing

・FilePath,zip
https://drive.google.com/file/d/0BxM2ghExhaEEWEJVNGl2TDlmLU0/view?usp=sharing


・TvtPlay.ini
https://drive.google.com/file/d/0BxM2ghExhaEEX1BsWGRYcHhkeHM/view?usp=sharing

・FAW
up1009.zipなどでググると出てくるかも。

・commdlg.exe
こちらのリンクをお借りします。
https://www.dropbox.com/s/v0bclwjqg0jum5h/com.zip?dl=0

・TvtPlay Plugin
ここからソースをダウンロード。ビルドは各自で。
https://github.com/xtne6f/TvtPlay



以上が必要なファイルです。
次に導入手順。

1, Dドライブ直下(それ以外のドライブにインストールしたいときは、以下D:\をE:\やらI:\やらに読み替え)に"AutomkChapter"と"ROKUGA"という名前のディレクトリを作成


2, 備忘録とか色々ブログ さんにて、

 ・Install.bat
 ・必要ファイル.zip
 ・avisynth32
 ・auc
 ・dgindex
 ・libfaad
 ・7zip

をダウンロードし、すべてのファイルを先ほど作成したAutomkChapter下にコピー、Install.batを実行(エラーが出ると思いますが気にしない)


3, いろいろリネーム、移動

 ・Install.batと同じディレクトリにある"自動エンコード" フォルダを、"Files"フォルダにリネーム。
 ・"commdlg.exe"を  D:\AutomkChapter\Files\EXE に移動。
 ・"AutomkChapter.zip"の中身を D:\AutomkChapter に移動。
 ・"FilePath.zip"の中身を D:\AutomkChapter\Files\FilePath に移動。

4, EDCB設定

EDCBフォルダに"change_space.bat"ファイルを作成、メモ帳で開いて

SET ARGS="$FilePath$"

SET KEEP="%ARGS%"

SET ARGS=%ARGS:
 =_%

SET ARGS=%ARGS: =_%

if "%ARGS%" == %KEEP% goto SKIP

move /y "%KEEP%" %ARGS%

:SKIP 
start /wait D:\AutomkChapter\AutomkChapter.bat %ARGS%

上記をコピペして上書き保存。
なお上のバッチ処理は オタクの徒然日記 さんのものを流用しています。感謝。


5, EpgTimer側の設定

 ・設定>動作設定>予約情報管理>録画時のファイル名にPluginを使用する>設定 にて、 "
$ServiceName$_$Title$_$SDYYYY$$SDMM$$SDDD$.ts" を指定。
 ・設定>動作設定>その他>録画設定のプリセット>録画終了時実行bat で先ほど作成した"change_space.bat"を指定、一番上の変更ボタンにて設定を変更。


6, TvtPlayのビルド

 ・TvtPlay-work.zipを解凍すると3つのフォルダが出てきますが、全ての中身をビルドします。


7, ビルドしてできたファイルを移動

 ・前の記事で作成したTvTestフォルダをコピー、TvTest2などとリネームして同じディレクトリに保存
 ・"TvtPlay.tvtp"とダウンロードした"TvtPlay.ini"を TvTestのPluginフォルダへ。
 ・TvTest.exeのショートカットを作成し、ショートカットファイルを右クリック>リンク先 に /TvtPlay を追記。これでショートカット起動時にTvtPlayが有効になります。
 ・"BonDriver_Pipe.dll"をTvTest.exeがあるディレクトリにコピー。
 ・"TvtAudioStrechFilter.ax"を同じくTvTest.exeがあるフォルダに移動
 ・コマンドプロンプトを管理者権限で実行し、regsvr32 "TvtAudioStrechFilter.axのフルパス"を入力し実行


8, TvTest設定

 ・設定>音声>音声フィルタ にて"TvtAudioStrechFilter.ax"を指定


以上で設定は終わりです。
これらの設定を済ませれば、EDCBの録画終了後、自動でchapterファイルを作成してくれます。
また、AutomkChapter.bat を手動で実行しファイルを選択してchapterファイルを作ることもできます。


再生方法ですが、TvTest左下のアイコンからtsファイルを指定して再生してください。
チャプター情報の読み込みに成功していれば、以下のようにチャプターの場所がバーの上に現れます。




この状態で左から2番めのボタンを押せば次のチャプターへ、一番左のボタンを押せばCMやプターを自動スキップしてくれます。


動作確認できれば全設定終わりです。お疲れ様でした。


なお Trim2keyframe.exe だけなぜEXEファイルなのかと申しますと、そのプログラムのみ私がゼロから組んだプログラムでして、私はbatファイルにあまり詳しくなくCで書いたのが原因です...


他のbatファイルは 空に架かる橋 さんのコードを参照し一部改変したものです。


Trim2keyframe.exe も動けばおkな書き方をしているので見苦しいですが、一応ソースコードを上げておきます。

AutomkChapter.c


さて、今回のプログラムがどういうふうに動くかざっくり説明すると、

・EDCBの録画終了後、自動で放送局選別

・放送局のロゴと無音地帯情報を使ってTrim情報を生成

・Trim情報からチャプターファイル生成

となります。


言い換えれば放送局のロゴデータがなければ動きません。
自分で抽出するなり探すなりしてください。


最新版のJoin_logo_scpはロゴデータがなくてもTrimデータが作成できるので、暇があればロゴデータがない場合も動くようにアップデートしようと思います。


バグ、疑問点等あればコメント欄にてお知らせください。


それでは。