TvRockのコマンド実行は1KBまで?からやっぱり1KBまでかもを経て、TvRockのコマンド処理をバッチファイルに移行してみたら、TvRock、バッチファイルに移行してもコマンドの不具合直らず。
その後、TvRockのバージョンを0.9p2にあげて様子見したところ(ここまで前振り)、問題無く動作しているようなので、新しいコマンドをメモ。
以下、今回設定したコマンド類。便宜上前回と同じく、録画専用PC(A)、デスクトップPC(B)、NAS(C)とします。AとBにTvRockをインストール・同期させています。AからB、BからCへのファイル移動にはFire File Copyを利用。
command.txt
# 規定コマンド
TN:TsSplitter.exe -EIT -ECM -EMM -1SEG -B252 -WAIT2 "%1"
# 分離後、Bへ
ABonMove:ABonMove.bat "%1" "%2" "%3" "%4"
# 分離後、WMV8に変換、Bへ
ABonEncMove:ABonEncMove.bat "%1" "%2" "%3" "%4"
# 分離後、Cへ
BBonMove:BBonMove.bat "%1" "%2" "%3" "%4"
# GOPファイル生成のみ
BGOP:BGOP.bat "%1"
一応、前回あった間の空白行も削除。行数的にもファイルサイズ的にも25行,1KBを切るよう、コメントも短めにした。以下、バッチファイル。
ABonMove.bat
@echo off
TsSplitter.exe -EIT -ECM -EMM -1SEG -B252 -WAIT2 "%~1"
BonTsDemux.exe -i "%~3%~4_HD.ts" -o "%~3%~4" -encode "Demux(m2v+wav)" -start -quit
FFC.exe "%~3%~4_HD.ts" "%~3%~4.m2v" "%~3%~4.wav" /to:"(Bのフォルダパス)" /move /md /sr /t /ys /kd
del "%~1"
最初”%1″で渡した引数を処理できなかった。原因はcommand.txt側の%1がダブルクォーテーションでくくられていたから。command.txtの方のダブルクォーテーションを外すか、バッチファイル側で重複を取り除くか、どちらかをすればよい。後者の場合は”%~1″の様に間にチルダを置けば、除去してくれる。
ABonEncMove.bat
@echo off
TsSplitter.exe -EIT -ECM -EMM -B252 -WAIT2 "%~1"
BonTsDemux.exe -i "%~3%~4_HD.ts" -o "%~3%~4" -encode "Demux(m2v+wav)" -start -quit
FFC.exe "%~3%~4_HD.ts" "%~3%~4_1SEG.ts" "%~3%~4.m2v" "%~3%~4.wav" /to:"(Bのフォルダパス)" /move /md /sr /t /ys /kd
BonTsDemux.exe -i "%~1" -o "%~3%~4" -encode "WMV8" -start -quit
FFC.exe "%~3%~4.avi" /to:"(Bのフォルダパス)" /move /md /sr /t /ys /kd
del "%~1"
WMV8にエンコードする場合は、分離に比べCPUパワーを使うので、多少時間が掛かる。そこで一旦分離が終わった時点でFFCで移動させ、移動が完了し次第、HD分離前の素材を使ってWMVにエンコードを開始。変換後のファイルの移動が完了したら元ファイルを削除する、という手段をとった。
BBonMove.bat
@echo off
TsSplitter.exe -EIT -ECM -EMM -1SEG -B252 -WAIT2 "%~1"
BonTsDemux.exe -i "%~3%~4_HD.ts" -o "%~3%~4" -encode "Demux(m2v+wav)" -start -quit
FFC.exe "%~3%~4.m2v" "%~3%~4.wav" /to:"(Cのフォルダパス)" /move /md /sr /t /ys /kd
del "%~1"
BGOP.bat
@echo off
TsSplitter.exe -EIT -ECM -EMM -1SEG -GOP -B252 -WAIT2 "%~1"
del "%~1"
これで一週間ちょい試してみたところ、いずれのコマンドも正常に動作・終了し、ログにも記録されたので今期はこのコマンド類で処理していく予定。ダブルクォーテーションを取り除くチルダは何度かバッチファイルを書いたことがあったけど、知らなかったのでちょっとした勉強にもなった。
ただ、これらのコードはB252で解除できなかった場合でも元ファイルを削除してしまうので、できることなら元ファイルは手動で消すようにするか、Perlなり他のスクリプト言語なりを利用して分岐処理をした方が望ましい。