PS3+DLNA(PS3 Media Server)で再生できるよう変換を行ってたけど
ツールを毎回起動して、1個1個変換していく作業はかなりしんどい・・・(汗
前回のツールは、コマンドラインで動作するプログラムをUIで制御するアプリケーションなので
いっそ全部直接コマンドだけでまとめてファイル変換を行ってみることにしてみた(^_^;
ほしい機能としては
・ドラッグアンドドロップで、一発変換
・複数ファイルにも対応(順次処理)
・AVI(h264+ac3)のファイルをTS(h264+ac3)に(再エンコード無し)
・AVI(h264+mp3)のファイルはmp3→ac3変換を行ってからTSファイルに
・それ以外のフォーマット、コーデックの場合ははTS化しない
変換に必要なプログラムは以下のとおり
ffmpeg.exe # mp3→ac3 変換に使用
mp4box.exe # 映像、音声分離に使用
js32.dll # mp4boxで使用
tsMuxeR.exe # TS生成に使用
tsConvert.bat # 作成したバッチファイル
tsConvert.bat はこんな感じ
@echo off
echo %DATE% %TIME% TS変換処理開始
SETLOCAL
SET PPath=%~dp0
SET TPath=%~dp1
:start
IF "%~1"=="" GOTO end
IF NOT "%~x1" == ".avi" GOTO next
CLS
echo 「%~nx1」 からTSファイルを作成します
echo;
%PPath%mp4box -aviraw video %1 -out "%PPath%%~n1"
%PPath%mp4box -aviraw audio %1 -out "%PPath%%~n1"
IF NOT EXIST "%PPath%%~n1_video.h264" goto error
IF EXIST "%PPath%%~n1_audio.ac3" goto mux
:convert
IF NOT EXIST "%PPath%%~n1_audio.mp3" goto error
%PPath%ffmpeg.exe -y -i "%PPath%%~n1_audio.mp3" -acodec ac3 -ac 2 -ab 128000 -r 48000 "%PPath%%~n1_audio.ac3"
:mux
echo MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500 > "%PPath%%~n1.meta"
echo V_MPEG4/ISO/AVC, "%PPath%%~n1_video.h264", insertSEI, contSPS >> "%PPath%%~n1.meta"
echo A_AC3, "%PPath%%~n1_audio.ac3" >> "%PPath%%~n1.meta"
%PPath%tsMuxeR "%PPath%%~n1.met"a "%TPath%%~n1.ts"
:next
del "%PPath%%~n1_video.h264"
del "%PPath%%~n1_video.cmp"
del "%PPath%%~n1_audio.ac3"
del "%PPath%%~n1_audio.mp3"
del "%PPath%%~n1.meta"
SHIFT
GOTO start
:error
echo 映像または音声ファイルが異常です。処理をスキップします
echo;
GOTO next
:end
echo %DATE% %TIME% TS変換処理完了
ENDLOCAL
PAUSE
mp3→ac3に変換する際は、2ch、128Kbps、48Khz固定
ファイル名の途中に"."があると駄目かな、これだと。まあ、そこは注意しつつ・・・
ツールを毎回起動して、1個1個変換していく作業はかなりしんどい・・・(汗
前回のツールは、コマンドラインで動作するプログラムをUIで制御するアプリケーションなので
いっそ全部直接コマンドだけでまとめてファイル変換を行ってみることにしてみた(^_^;
ほしい機能としては
・ドラッグアンドドロップで、一発変換
・複数ファイルにも対応(順次処理)
・AVI(h264+ac3)のファイルをTS(h264+ac3)に(再エンコード無し)
・AVI(h264+mp3)のファイルはmp3→ac3変換を行ってからTSファイルに
・それ以外のフォーマット、コーデックの場合ははTS化しない
変換に必要なプログラムは以下のとおり
ffmpeg.exe # mp3→ac3 変換に使用
mp4box.exe # 映像、音声分離に使用
js32.dll # mp4boxで使用
tsMuxeR.exe # TS生成に使用
tsConvert.bat # 作成したバッチファイル
tsConvert.bat はこんな感じ
@echo off
echo %DATE% %TIME% TS変換処理開始
SETLOCAL
SET PPath=%~dp0
SET TPath=%~dp1
:start
IF "%~1"=="" GOTO end
IF NOT "%~x1" == ".avi" GOTO next
CLS
echo 「%~nx1」 からTSファイルを作成します
echo;
%PPath%mp4box -aviraw video %1 -out "%PPath%%~n1"
%PPath%mp4box -aviraw audio %1 -out "%PPath%%~n1"
IF NOT EXIST "%PPath%%~n1_video.h264" goto error
IF EXIST "%PPath%%~n1_audio.ac3" goto mux
:convert
IF NOT EXIST "%PPath%%~n1_audio.mp3" goto error
%PPath%ffmpeg.exe -y -i "%PPath%%~n1_audio.mp3" -acodec ac3 -ac 2 -ab 128000 -r 48000 "%PPath%%~n1_audio.ac3"
:mux
echo MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500 > "%PPath%%~n1.meta"
echo V_MPEG4/ISO/AVC, "%PPath%%~n1_video.h264", insertSEI, contSPS >> "%PPath%%~n1.meta"
echo A_AC3, "%PPath%%~n1_audio.ac3" >> "%PPath%%~n1.meta"
%PPath%tsMuxeR "%PPath%%~n1.met"a "%TPath%%~n1.ts"
:next
del "%PPath%%~n1_video.h264"
del "%PPath%%~n1_video.cmp"
del "%PPath%%~n1_audio.ac3"
del "%PPath%%~n1_audio.mp3"
del "%PPath%%~n1.meta"
SHIFT
GOTO start
:error
echo 映像または音声ファイルが異常です。処理をスキップします
echo;
GOTO next
:end
echo %DATE% %TIME% TS変換処理完了
ENDLOCAL
PAUSE
mp3→ac3に変換する際は、2ch、128Kbps、48Khz固定
ファイル名の途中に"."があると駄目かな、これだと。まあ、そこは注意しつつ・・・