SSブログ

TSファイルをAviutlで全自動エンコード [PCで地デジ]

年末年始に帰省する前、ある程度録画鯖のHDDを空けていたのですが、予想以上の速度で録画ファイルが溜まってしまいかなり危険な状態に。
今年はTeamViewerを導入しているので、実家からでも多少操作ができますが、さすがにタイムラグがあるのでエンコード設定等の細かい反復作業には向いてません。
なので、一回見れば十分なバラエティやニュース番組用に少しの操作でTSファイルを自動でエンコードするバッチファイルを組むことにしました。

1/25追記 以降はこちらを参考に→TSファイルをAviutlで全自動エンコード(改良版)

必要なAviutlプラグインは、コマンドラインからAviutlを操作できるようにするAviutlControlです。
付属のテキストとサンプルプログラム、後はWebで解説してるページを見れば使い方はなんとなくわかるはずです。
私が調べた際は、こちらの記事が非常に参考になりました。
http://iphone-info-48.blogspot.com/2009/09/2tshdiphone-ts-tsmp4-tvrock-cm.html
下に載せてる自分のバッチファイルも、こちらで公開されているものをベースにしています。


ここでコマンドプロンプトでの注意事項が一つ。コマンドプロンプトでは、全角空白やセミコロンなどを、パラメータの区切り文字として認識するので、それらが含まれるファイルをバッチ処理すると、ちゃんと””でくくっていても空白の前後でファイル名が分割されてしまう不具合があります。

例えば、”モヤモヤさまぁ~ず2 「雑司ヶ谷」.ts”が、”モヤモヤさまぁ~ず2”と”「雑司ヶ谷」.ts”の二つのファイルとして認識されてしまいます。

これを回避するには、全角空白を半角空白に置き換える必要がありますが、他にもセミコロンや全角波ダッシュなど区切り文字と認識される文字があるので、全てを置換するとBATの処理が長くなってしまいます。
簡単に回避する方法として、ファイルのフルパスに半角空白が一つでもあれば正しく認識されるので、録画時に半角空白をファイル名に含めたり、TSファイルを”C:\TS AutoEn\c”のように半角空白を含むフォルダに入れてバッチ処理をするとOKです。

また、フォルダに半角空白を含めた場合、
SET PATH=%~dp1
などでフォルダパスを変数に代入して扱おうとすると、半角空白があるのでエスケープ記号””(ダブルクォーテーション)でくくって半角空白を含む文字列として扱う必要があります。しかし実際には
○○○.exe -out "%PATH%"
のように使うと、””でくくってるにも関わらず変数名が半角空白で途切れてしまいます。
これはechoで確認するとわかりますが、変数PATHの最後の文字が
echo %PATH%
C:\TS AutoEnc\
とバックスラッシュで終わってるのが原因です。この状態で”%PATH%”とすると、実行時には
”C:\TS AutoEnc\”
となり、後ろの”が\でエスケープされてただの文字として扱われてしまうのです。
なので、空白を含むフォルダパスを変数に格納した際には
”%PATH%\”
と書く必要があります。これだと実行時には
”C:\TS AutoEnc\\”
となり、\自体をエスケープして特殊記号ではなくただの文字として扱うようになり、"がエスケープされず想定通りの動作をしてくれます。
ただし、エディタ上では”がエスケープされてただの文字として扱われているように見えるので、変数やコマンドの色を変える設定にしてると正しく色が変わりません。なので間違っているように見えますが、実行させるときちんと動作します。

以下が私が作成したバッチファイルです。

2012/01/21追記:GOPリストを作成していないTSファイルをAviutlが読み込みこませた場合、GOPリストを作成し終わる前に次の工程に進みエラーが発生する不具合があったの修正。

-----------------------------------プログラム本体ココから--------------------------------------------
@echo off
REM 使用方法
REM TSファイルをこのbatにD&Dする(複数可)

REM 処理内容
REM Aviutlを起動する。
REM TSファイルをTsSplitterでHD映像を分割後、元ファイルを削除。
REM HD_TSをts2aacにかけてAACで音声分離した後、
REM MPEG-2 VIDEO VFAPI Plug-Inのmme.exeを使ってGOPリストを作成する。
REM HD_TSと音声ファイルをAviutlに読み込ませ、指定したプロファイルと
REM 前回使用したx.264の設定でエンコードし、指定した出力先に出力する。
REM *******************************************************
REM ts2aac、TsSplitter、Aviutl、Aviutlcontrol、mmeのパスを指定
set TTA="~\ts2aac.exe"
set TSS="~\TsSplitter.exe"
set AVU="~\aviutl.exe"
set AUC_DIR=~\auc\
set MME="~\mme.exe"

REM Aviutlのプロファイルを指定する。プロファイル番号は上から0,1,2……
set UTL_PROF=6
REM 出力先を指定する。指定がなければTSファイルがあるフォルダに出力する。
set OUTPUT=
REM ****************************************************

echo Aviutlプロファイル %UTL_PROF%
if exist "%OUTPUT%" (
     echo %OUTPUT%に出力します
) else (
   echo 元のフォルダに出力します
   set OUTPUT=%~dp1
)

echo "Start"
:start
IF "%~1"=="" GOTO END
IF NOT "%~x1" == ".ts"  GOTO :shiftprosess

set PATH_NAME=%~dp1
set OUTPUT_NAME=%~n1

echo "TsSplit"
%TSS% -SD -1SEG -OUT "%PATH_NAME%\" "%~1"
for /f "usebackq tokens=*" %%i in (`dir /b "%PATH_NAME%%OUTPUT_NAME%_HD.ts"`) do set TS_FILE=%%i
if not exist "%TS_FILE%" (
    goto error
) else (
    echo "TsSplit OK"
    del "%~1"
    echo "deleteOriginalTS"
    )
set TS_FILE_NAME=%TS_FILE:~-0,-3%
echo "DemuxAAC"
%TTA% -i "%TS_FILE%" -D -o "%TS_FILE_NAME%"

:DEMUX_WAIT
for /f "usebackq tokens=*" %%i in (`dir /b "%TS_FILE_NAME%*DELAY*.aac"`) do set AAC_FILE=%%i
IF NOT EXIST "%AAC_FILE%" goto DEMUX_WAIT
echo "AAC OK"

echo "Make gl file"
%MME% -g -q "%TS_FILE%"

echo "Start Aviutl"

start /b "" %AVU%
timeout -t 5

echo "add TS file"
call "%AUC_DIR%auc_open" "%TS_FILE%"
timeout -t 5

echo "add AAC file"
call "%AUC_DIR%auc_audioadd" "%AAC_FILE%"
timeout /t 5

echo "set encode profile"
call "%AUC_DIR%auc_setprof" "%UTL_PROF%"
timeout /t 5

echo "Make mp4 file"
call "%AUC_DIR%auc_plugout" "1"  "%OUTPUT%%OUTPUT_NAME%.mp4"
timeout /t 5

"%AUC_DIR%\auc_wait"
timeout /t 5

:shiftprosess
SHIFT
echo 次のファイルへ移ります
"%AUC_DIR%\auc_exit"
timeout /t 5
del "%TS_FILE%"
del "%AAC_FILE%"
del "%PATH_NAME%%OUTPUT_NAME%_HD.gl"
pause
GOTO start

:error
echo TSファイルが見つかりませんでした
pause
exit

:END
echo 全工程終了しました
pause
---------------------------------------------ココまで---------------------------------------------------


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

BS録画でノイズ発生うわぁ…… ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。