スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

EDCB用batファイルを考える

もくじ
1.きほん
(1)録画後実行BATの使い方
(2)ほかのbatファイルを呼び出してつかう。

2.EDCBのエラーログファイル(.err)の利用方法を考える。
(1)まずは①と②を一緒のファイルで。
①ドロップログ、エラーファイル(.err)の内容を読み取り、それに合わせて処理を選択するようにしてみる。
②ドラッグアンドドロップ、EDCBの録画後実行BAT登録、どちらでも共通して使えるようなbatファイルにしてみる 。

(4)設定ファイルからいろいろと読み込めるようにするには?(①、②、③を1つのファイルで)
③さらに、録画後BAT利用時には、設定ファイルからエンコードフォルダパスを読み取るようにしてみる。

3.batファイルサンプル
(1)天候不良時の衛星ドロップ等用bat選択処理_sample.bat(とりあえず2.①②のみ)
(2)
(3)
(4)天候不良時の衛星ドロップ等用bat選択処理.bat(2.①②のほか③も盛り込んだらごちゃごちゃなので省略)
(5)自動CMカット&自動エンコード(logoGuillo_DGDecode)errorcheck.bat

関連ページ
【EpgTimer設定】
【kkcald導入と設定】


gen_avs2_d2v_aac_20111228_Common.bat
gen_avs2_d2v_wav_20120327_faad_sound.bat
※思い付きで書いただけなので、参考程度に。





1.きほん
(1)録画後実行BATの使い方。
(詳しくは、Readme_EpgTimer.txt■録画後のバッチファイル実行の仕様■参照)

EDCBでは、録画後に実行するbatファイルを指定できる。

実行の仕組み
実際に実行されるbatファイルは、EpgTimer_Bon_RecEnd.batが実行される。
※録画後BATに登録したbatファイルは、
 EpgTimer.exeのあるフォルダに、EpgTimer_Bon_RecEnd.batという名前でコピーされる。
※その際、マクロを使用可能。(詳しくはReadme_EpgTimer.txt■マクロ■参照)
 たとえば、登録したBATに、$FilePath$の文字列があれば、
 $FilePath$の部分は、D:\Videos\録画ファイル.tsというように、変更される。
※うまくbat処理ができないのであれば、EpgTimer_Bon_RecEnd.batの内容を確認して、登録したbatを修正する。
 問題ないのであれば、EpgTimer_Bon_RecEnd.batを実行すればbat処理できる。




(2)ほかのBATを呼び出してつかう。
例)実際の利用例。
たとえば、以下のような録画後実行BATに登録した場合。
http://soranikakaruhashi.blog.fc2.com/blog-entry-100.html#gen_avs_common_EDCB

gen_avs2_d2v_aac_20111228_Common_EDCB.bat
@echo off
setlocal
echo avsファイル作成
call "D:\encode20111228\gen_avs2_d2v_aac_20111228_Common.bat" "$FilePath$"

endlocal
rem pause
exit /b
↓ 以下のようにマクロの処理され、EpgTimer_Bon_RecEnd.batが実行される。

EpgTimer_Bon_RecEnd.bat
@echo off
setlocal
echo avsファイル作成
call "D:\encode20111228\gen_avs2_d2v_aac_20111228_Common.bat" "D:\Videos\録画ファイル.ts"

endlocal
rem pause
exit /b





2.少しだけ応用(①、②、③を1つのファイルで)
①ドロップログ、エラーファイル(.err)の内容を読み取り、それに合わせて処理を選択。
 マクロには$Drop$などエラー判定に利用できそうなものもあるが、
 マクロは録画後実行BATでしか使えない。
 ドラッグアンドドロップしてつかえるようなbatを基本的に用意してあるので、
 エラーファイル(.err)の中にエラー数が書かれているのだからそれを読み取って利用した方が、便利だろう。

以下のログの例は、EDCB10系のものなので、MPEG2 VIDEOとMPEG2 AACと右端に記載されている。
MPEG2のある行だけ読み取ってエラーカウントを計算すればよいだろう。
古いバージョンでは右端には何も記載されないので、PIDのある行を読み取るしかないだろう。


例1 BS11のEITドロップカウントの例
 BS11の午前0時頃のEITのドロップカウントは仕様。映像と音声に問題なければ、エラーなしファイルと同等。
PID: 0x0000  Total:    16471  Drop:        0  Scramble:         0  PAT
PID: 0x0010  Total:      910  Drop:        0  Scramble:         0  NIT
PID: 0x0011  Total:    11769  Drop:        0  Scramble:         0  SDT/BAT
PID: 0x0012  Total:   345782  Drop:       35  Scramble:         0  EIT
PID: 0x0014  Total:      364  Drop:        0  Scramble:         0  TDT/TOT
PID: 0x0023  Total:      722  Drop:        0  Scramble:         0  SDTT
PID: 0x0024  Total:     1093  Drop:        0  Scramble:         0  BIT
PID: 0x0111  Total:    27586  Drop:        0  Scramble:         0  PCR
PID: 0x0121  Total:    18190  Drop:        0  Scramble:         0  ECM
PID: 0x0140  Total: 22007388  Drop:        0  Scramble:         0  MPEG2 VIDEO
PID: 0x0141  Total:   323402  Drop:        0  Scramble:         0  MPEG2 AAC
PID: 0x01F0  Total:    16470  Drop:        0  Scramble:         0  PMT(ServiceID 0x00D3)

例2 エラーがあるファイルの例
この赤い文字で示した部分が映像と音声のエラーカウントである。
PID: 0x0000  Total:    16376  Drop:        0  Scramble:         0  PAT
PID: 0x0010  Total:      910  Drop:        6  Scramble:         0  NIT
PID: 0x0011  Total:    11790  Drop:       14  Scramble:         0  SDT/BAT
PID: 0x0012  Total:   328202  Drop:        0  Scramble:         0  EIT
PID: 0x0014  Total:      363  Drop:        2  Scramble:         0  TDT/TOT
PID: 0x0023  Total:      488  Drop:        2  Scramble:         0  SDTT
PID: 0x0024  Total:     1090  Drop:        4  Scramble:         0  BIT
PID: 0x0111  Total:    27433  Drop:        0  Scramble:         0  PCR
PID: 0x0121  Total:    18090  Drop:        2  Scramble:         0  ECM
PID: 0x0140  Total: 22287528  Drop:        5  Scramble:         0  MPEG2 VIDEO
PID: 0x0141  Total:   321622  Drop:        7  Scramble:         0  MPEG2 AAC
PID: 0x01F0  Total:    16376  Drop:        0  Scramble:         0  PMT(ServiceID 0x00D3)





②ドラッグアンドドロップ、EDCBの録画後実行BAT登録、どちらでも共通して使えるようにしてみる。
余計なことを考えすぎなのでシンプルに
BATファイル自身のファイル名がEpgTimer_Bon_RecEnd.batのときはEDCBの録画後BATとして処理、
それ以外の場合はドラッグアンドドロップされたファイルを処理する。

 録画したファイルを処理する際に、マクロ$FilePath$を使いたい。
 だが、今まで用意してきたbatファイルは、ドラッグアンドドロップして使うようなものばかりである。
 ドラッグアンドドロップして使うbatは、このままではEDCBの録画後BATに登録しても使えない。
 このままではマクロも使えないし、マクロがあるとEDCBだけでしか使えないファイルになってしまう。

 そこで、EDCB録画後BATの登録batにはマクロを記載し、そこからドラッグアンドドロップ用batを呼び出すことで、
 ドラッグアンドドロップするのと同じように利用するようにしていた。

 今までは、考えるのが面倒なので、そのように処理していたが、せっかくなので、
 これらを1つのファイルにする方法を考えよう。

 ドラッグアンドドロップで使えるbatファイル。
 録画後処理BAT(EDCB)にそのまま登録できるbatファイル。

 まず、ドラッグアンドドロップで使えるbatファイルを用意する。
 それの最初に、録画後BATでの利用かどうかを判定する処理を付け加える。

 録画後処理BATの処理で利用されている場合には、無限に呼び出し続けるのを避けるため、
 現在のbatファイルがEpgTimer_Bon_RecEnd.batの時だけ、
 EpgTimer_Bon_RecEnd.bat自身を別の名前EpgTimer_Bon_RecEnd_DandD.batにコピーして、
 それに入力ファイルをドラッグアンドドロップするような感じで処理すればよいだろう。
 利用されてなければ、ドラッグアンドドロップされたものとして処理。
 こんな感じで処理できれば良いだろう。

 録画後BATでの利用なのか、ドラッグアンドドロップでの利用なのか、
 どのように判定するか?
 batファイル名がEpgTimer_Bon_RecEnd.batなのを利用する?
 もしくは、$FilePath$の文字列を用意しておけば、
 これが置換されていれば録画後BATでの利用であることがわかり、
 文字列が$FilePath$のままであればドラッグアンドドロップだとわかりそう。

 だが、if文で、FilePath_EDCBが、文字列$FilePath$と一致するかを判定しようとしても、
 $FilePath$のままでは録画後BAT利用時にifブロック内の文字列$FilePath$も置換されてしまうので、判定にはうまく使えないだろう。

 FilePath_EDCBが$FilePath$なら、$を消せば文字列FilePathとなる。
 文字列がFilePathにならないなら、録画後実行BATのEpgTimer_Bon_RecEnd.batで利用されているだろう。
 とりあえずは、このように処理してしまえばよいだろう。
 





③さらに、録画後BAT利用時には、エンコードフォルダパスの設定ファイルを読み取るようにしてみる。
 録画後BATで使われるbatファイルEpgTimer_Bon_RecEnd.batの実行の際、
 エンコードフォルダにおいたbatファイルを呼び出すことになるのだが、
 呼び出すbatファイルのフルパスが必要だろう。
 そのエンコードフォルダのパスを設定しておきたい。

 わざわざbatファイルそのものを編集するのも面倒だし間違いのもとにもなりそうなので、
 録画後実行batとして使われるときには、
 EpgTimer.exeがあるフォルダに設定ファイル(config_encode_path.ini)をおいておき、
 この設定ファイルに書いたエンコードフォルダのパスを読み込んで利用することを考えてみよう。


 例)config_encode_path.ini (C:\DTV\EDCB\config_encode_path.ini)
 
#エンコードフォルダのパスを指定。余計な行を記述しないこと。
#例)encode_path=D:\encode20120515\
encode_path=D:\encode20120515\
※#のある行は無視するように設定してある。





3.batファイルサンプル
(1)天候不良時の衛星ドロップ等用bat選択処理_sample.bat(①と②のみ。設定ファイルなし。)
@echo off
setlocal
rem http://soranikakaruhashi.blog.fc2.com/blog-entry-126.html
rem http://soranikakaruhashi.blog.fc2.com/blog-entry-100.html
rem http://soranikakaruhashi.blog.fc2.com/blog-entry-109.html

rem ##############################
rem エンコードフォルダを設定(例 encode_path=D:\encode20120515\)
set encode_path=D:\encode20120515\
rem ##############################

echo ##############################
echo ### batファイルの使われ方を調べて、処理を選択する。
echo ### ① EDCB(EpgDataCap_Bon)の録画後BATに、このBATファイルをこのまま登録できるようにする。
echo ### ②-1 通常時は、ファイルをドラッグアンドドロップ(DandD)すれば使えるようにする。
echo ### ②-2 エラーファイル(.err)をチェックして、エラーの有無に合わせて、処理を選択。
echo ##############################


echo ##############################
echo #
echo # ①EDCB(EpgDataCap_Bon)の録画後BATに、このBATファイルをこのまま登録できるようにする。
echo #
echo ##############################
set BatFile_Name=%~n0.bat
echo "%BatFile_Name%"

:EDCB
if "%BatFile_Name%"=="EpgTimer_Bon_RecEnd.bat" (
rem このbatファイルに、入力ファイルをドラッグアンドドロップするのと同じ感じに処理。
call :DandD "$FilePath$"
rem 処理終了。end_DandD後のend_EDCBへ。
goto end_EDCB
)



rem ドラッグアンドドロップ処理
:bat_start
:DandD

echo ##############################
echo #
echo # ②-1 通常時は、ファイルをドラッグアンドドロップ(DandD)すれば使えるように処理。
echo #
echo ##############################

echo ##############################
echo # ②-2 EDCBのエラーファイル(.err)がある場合にこれを読み込み、エラーを判定して、処理を選択する方法を考える。
echo ##############################
rem エラーがあってもなくても、
rem どちらでも処理できるbatで全部やってしまえばいいが
rem せっかくなので、エラーに応じてbatを選択する方法を考えてみよう。
rem ①EDCBのエラーファイル(.err)を読み込む。
rem ②映像と音声のDrop数を調べて適切に処理。

rem 処理順
rem tsファイルを入力。
rem errファイルがないなら、処理終了。
rem errファイルがあるなら、映像と音声のDrop数を調べる。
rem 映像と音声の合計ドロップ数が0なら
rem gen_avs2_d2v_aac_20111228_Common.batを呼び出してつかう。
rem 
rem 映像と音声の合計ドロップ数が0でないなら、
rem gen_avs2_d2v_wav_20120327_faad_sound.batを呼び出して処理
rem ※どちらもこれで処理してもよいがwavファイルのサイズが大きい。

rem 注意点メモ。
rem if文の中で、半角小括弧()を使うことはできない。全角()なら問題ないが…。



rem ### ドラッグアンドドロップ(DandD) 処理開始

rem 入力ファイル判定&エラーファイル判定
rem tsファイルを入力してください。
if not "%~x1"==".ts" goto end

if exist "%~dpn1.ts.err" (
echo errファイルが存在するので、次はエラーカウントの調査。
) else (
echo errファイルが存在しないので処理終了。
goto end
)
rem 



rem ##################################################
rem ### エラーカウントの調査&エラーに応じた処理 ###
setlocal ENABLEDELAYEDEXPANSION

rem 映像と音声のDropカウントを調べる。
rem findstr /R "MPEG"の部分で、検索する文字列を指定。
rem ※EDCB10系なら、MPEG2の文字列のある行だけ検索すれば、BS11などのEITドロップ(映像と音声には問題がない)の行を無視でき、問題がないものとして処理できる。
rem 
rem EDCB10系なら、MPEG2を指定。エラーをカウント。古いバージョンならPIDを指定。
rem EDCB9系なら、PIDの文字列を指定。エラーをカウント。
rem ※PIDの文字列がある行の検索してエラーカウントは、EDCB9系および10系全てのバージョンで指定可能。
rem 
rem ※9系にはMPEG2の文字列がないので、文字列をPIDに変更しない場合エラーなしとして処理してしまう。忘れずPIDを指定。
rem (errファイルの行にMPEG2の文字列があるのは10系のみたぶん途中から。9系では使えない。)

set /a MPEG2_D_count=0
set /a MPEG2_S_count=0
for /F "tokens=1,2,3,4,5,6,7,8 delims= " %%a in ('findstr /R "MPEG" "%~dpn1.ts.err"') do (
rem echo A %%a ←PID
rem echo B %%b ←PID(数値)
rem echo C %%c ←Total
rem echo D %%d ←Total(数値)
rem echo E %%e ←Drop
rem echo F %%f ←Drop(数値)
rem echo G %%g ←Scramble
rem echo H %%h ←Scramble(数値)

set /a MPEG2_D_count=!MPEG2_D_count!+%%f
set /a MPEG2_S_count=!MPEG2_S_count!+%%h

echo 処理中。
echo !MPEG2_D_count! ←Drop(数値)
echo !MPEG2_S_count! ←Scramble(数値)

rem bat呼び出しはfor文の外で。
if !MPEG2_S_count! EQU 0 (

if !MPEG2_D_count! EQU 0 (
echo 問題なし(D=0,S=0)
echo.
) else (
echo 問題あり(D=0ではない,S=0)
echo.
)

) else (
echo 問題あり(S=0ではない)
echo.
rem bat呼び出しはfor文の外で。
rem なにも呼び出さない?
rem call
)

rem forここまで。bat呼び出しはfor文の外で。
)





rem bat呼び出しはfor文の外で。
rem EDCBからbatを呼び出すときはフルパスを指定。
echo ##############################
echo ### ☆bat呼び出し判定 
echo ##############################
echo !MPEG2_D_count! ←Drop(数値)
echo !MPEG2_S_count! ←Scramble(数値)

if !MPEG2_S_count! EQU 0 (
echo 問題なし(S=0)

if !MPEG2_D_count! EQU 0 (

echo 問題なし(D=0)
rem call gen_avs2_d2v_aac_20111228_Common.bat
rem call "%encode_path%gen_avs2_d2v_aac_20111228_Common.bat" "%~1"
call "%encode_path%gen_avs2_d2v_aac_20111228_Common.bat" "%~dpn1.ts"
call "%encode_path%chapter_exe.bat" "%encode_path%%~n1.avs"

) else (

echo 問題あり(D=0ではない!)
rem call gen_avs2_d2v_wav_20120327_faad_sound.bat
rem call "%encode_path%gen_avs2_d2v_wav_20120827_faad_sound.bat" "%~1"
call "%encode_path%gen_avs2_d2v_wav_20120827_faad_sound.bat" "%~dpn1.ts"
call "%encode_path%chapter_exe.bat" "%encode_path%%~n1_faad_sound.avs"

)

) else (
echo 問題あり(S=0ではない!)
rem なにも呼び出さない?
rem call

)





rem デバッグ用
rem echo !MPEG2_D_count!>> "%~dp1err_count_testt.txt"
rem echo !MPEG2_S_count!>> "%~dp1err_count_testt.txt"
rem del "%~dp1err_count_testt.txt"
rem del "%~dp1err_count_test.txt"
endlocal

rem ### エラーカウントの調査&エラーに応じた処理 終わり ###
rem ##################################################










rem 処理終了。
:end_DandD
rem ### ドラッグアンドドロップ(DandD) 処理終了
echo end_DandD
rem 次のファイルがあれば :bat_start に戻る
shift
if not "%~1"=="" goto bat_start

endlocal
rem pause
exit /b



:end_EDCB
echo end_EDCB
rem EDCBから呼び出すとき、pauseのまえにrem pauseをつければ停止せず終了する。

echo デバッグ用(表示)
echo $FilePath$	ファイルのフルパス(バッチのみ)
echo $FolderPath$	ファイルのフォルダパス(最後に\はなし)(バッチのみ)
echo $FileName$	ファイル名(拡張子なし)(バッチのみ)
echo $Drops$		録画結果のドロップ数(バッチのみ)
echo $Scrambles$	録画結果のスクランブル数(バッチのみ)
echo $Result$	録画結果のコメント(バッチのみ)
echo $TitleF$	$Title$と同内容でファイル名に使用できない記号が存在した場合全角に変換するもの(バッチのみ)
echo $Title2F$	$Title2$と同内容でファイル名に使用できない記号が存在した場合全角に変換するもの(バッチのみ)
echo $Genre$		番組のジャンル(EPGデータ存在時のみ)(RecName_Macro.dllのみ)
echo $Genre2$	番組の詳細ジャンル(EPGデータ存在時のみ)(RecName_Macro.dllのみ)
echo $AddKey$	EPG自動予約で登録されたキーワード(バッチのみ)

rem echo デバッグ用(ファイルに出力)
rem echo $FilePath$	ファイルのフルパス(バッチのみ)>testedcb.txt
rem echo $FolderPath$	ファイルのフォルダパス(最後に\はなし)(バッチのみ)>>testedcb.txt
rem echo $FileName$	ファイル名(拡張子なし)(バッチのみ)>>testedcb.txt
rem echo $Drops$		録画結果のドロップ数(バッチのみ)>>testedcb.txt
rem echo $Scrambles$	録画結果のスクランブル数(バッチのみ)>>testedcb.txt
rem echo $Result$	録画結果のコメント(バッチのみ)>>testedcb.txt
rem echo $TitleF$	$Title$と同内容でファイル名に使用できない記号が存在した場合全角に変換するもの(バッチのみ)>>testedcb.txt
rem echo $Title2F$	$Title2$と同内容でファイル名に使用できない記号が存在した場合全角に変換するもの(バッチのみ)>>testedcb.txt
rem echo $AddKey$	EPG自動予約で登録されたキーワード(バッチのみ)>>testedcb.txt

endlocal
rem pause
exit /b



:end
endlocal
echo エラーの原因は以下のどれかです。
echo ①入力されたファイルはtsファイルではありません。 
echo  tsファイルを入力してください。
echo ②errファイルが存在しません。
pause
exit /b






(4)天候不良時の衛星ドロップ等用bat選択処理.bat(①、②、③全部盛り込んだやつ)





(5)自動CMカット&自動エンコード(logoGuillo_DGDecode)errorcheck.bat




AmazonベストセラーTOP5
アニメ(BD/DVD)
ライトノベル
コミック
フィギュア・ドール
アニメゲームmusic

コメントの投稿

非公開コメント

プロフィール

空に架かる橋

Author:空に架かる橋
FC2ブログへようこそ!
このブログについて(プライバシーポリシー)
Amazon.co.jpアソシエイト
こちらのブログはたまに各種実験会場となるため、デザイン変更等により表示が遅くなったり、文字が読みにくかったりする場合があります。 そのうちなおりますm(_ _)m
記事の内容に問題がある場合は、ただちに記事内容の利用をやめてください。

カウンター

現在の閲覧者数:

DTV研究
検索フォーム
カテゴリ
PT3 (3)
最新記事
最新コメント
最新トラックバック
月別アーカイブ
Amazonランキングテスト3.2
内容:

カテゴリー:

ノード:

アダルトを
選択しない 表示しない
※カテゴリー変更後に有効
RSSへのリンク
TGテストエリア
テストエリアb
AmazonベストセラーTOP5
アニメ(BD/DVD)
ライトノベル
コミック
フィギュア・ドール
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。