PSP用のエンコード環境
MeGUIではファイルごとに操作しなくてはいけないのでSeraphyさんの"PSPでVFR"を参考にバッチファイルを書いてみた。
encode.bat
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION rem 付属のTOOLディレクトリの場所を指定する。 SET TOOLDIR=C:\Program files\PSPでVFR\tool rem 各ソフトのインスト場所 SET MKVTOOLNIX=C:\program files\mkvtoolnix SET X264=C:\program files\x264 rem トラックの設定。普通は変更しない。 SET VIDEO_TRACK=1 SET AUDIO_TRACK=2 rem 個別にファイルを設定する場合はここを編集 SET MP4BOX=%TOOLDIR% SET ATOMCHANGER=%TOOLDIR% SET NEROAACENC=%TOOLDIR% SET TC2MP4=%TOOLDIR% SET AVS2WAV=%TOOLDIR% SET HAALI=%TOOLDIR% rem エンコードの高度な設定 SET BITRATE=512 SET X264OPTIONS1= --pass 1 --bitrate %BITRATE% --level 3 --keyint 300 --min-keyint 30 --bframes 5 --direct auto --subme 1 --analyse none --qpstep 24 --vbv-bufsize 10000 --vbv-maxrate 10000 --ratetol 4.0 --me dia --merange 32 --threads auto --thread-input --progress --no-dct-decimate --no-psnr --no-ssim SET X264OPTIONS2= --pass 2 --bitrate %BITRATE% --level 3 --keyint 300 --min-keyint 30 --ref 2 --mixed-refs --no-fast-pskip --bframes 5 --b-rdo --bime --direct auto --subme 6 --trellis 1 --analyse p8x8,b8x8,i4x4 --qpstep 24 --vbv-bufsize 10000 --vbv-maxrate 10000 --ratetol 4.0 --me umh --merange 32 --threads auto --thread-input --progress --no-dct-decimate --no-psnr --no-ssim SET AAC_OPTIONS= -q 0.35 SET PATH=%MKVTOOLNIX%;%HAALI%;%PATH% SET CALLAPP=START "" /B /BELOWNORMAL /WAIT SET CALLAPPNW=START "" /BELOWNORMAL rem 複数ファイルのループ処理 SET ARGV=%* FOR %%I IN (!ARGV!) DO CALL :PSP "%%~I" GOTO :EOF :PSP rem ファイル設定 SET TGT_FILE=nul SET TGTAFILE=nul SET TITLE=%~n1 SET IN_FILE=%~dpnx1 SET WORKPATH=%TMP%\%~nx1 SET OUT_PATH=%~dp1psp SET WAV_FILE=%WORKPATH%\%~nx1_tmp.wav SET AVS1FILE=%WORKPATH%\%~nx1_tmp.1.avs SET AVS2FILE=%WORKPATH%\%~nx1_tmp.2.avs SET OUTVFILE=%WORKPATH%\%~nx1_tmp.video.mp4 SET OUTRFILE=%WORKPATH%\%~nx1_tmp.vfr.mp4 SET OUTAFILE=%WORKPATH%\%~nx1_tmp.audio.mp4 SET OUTMFILE=%WORKPATH%\%~nx1_tmp.mux.mp4 SET OUT_FILE=%OUT_PATH%\%~n1.mp4 IF NOT EXIST "%WORKPATH%" mkdir "%WORKPATH%" IF NOT EXIST "%OUT_PATH%" mkdir "%OUT_PATH%" %CALLAPPNW% CMD /C encode_audio.bat "%~dpnx1" IF "%~x1" == ".mp4" CALL :MP4 "%~dpnx1" IF "%~x1" == ".MP4" CALL :MP4 "%~dpnx1" IF "%~x1" == ".mkv" CALL :MKV "%~dpnx1" IF "%~x1" == ".MKV" CALL :MKV "%~dpnx1" IF "%~x1" == ".avi" CALL :AVI "%~dpnx1" IF "%~x1" == ".AVI" CALL :AVI "%~dpnx1" IF "%~x1" == ".wmv" CALL :WMV "%~dpnx1" IF "%~x1" == ".WMV" CALL :WMV "%~dpnx1" IF "%~x1" == ".divx" CALL :AVI "%~dpnx1" IF "%~x1" == ".DIVX" CALL :AVI "%~dpnx1" :MAIN IF NOT EXIST "%TGT_FILE%" ( ECHO. ECHO 中間ファイルの生成に失敗しました。 ECHO VIDEOとAUDIOのトラックが逆かもしれませんし、未対応の形式かもしれません。 ECHO. pause GOTO :EOF ) rem avsの作成 Video CALL :AVS_DirectShowSource IF NOT EXIST "%OUTVFILE%" %CALLAPP% "%X264%\x264.exe" %X264OPTIONS1% --output NUL "%AVS2FILE%" IF NOT EXIST "%OUTVFILE%" %CALLAPP% "%X264%\x264.exe" %X264OPTIONS2% --output "%OUTVFILE%" "%AVS2FILE%" rem 結合 IF NOT EXIST "%OUTRFILE%" %CALLAPP% "%TOOLDIR%\DTSRepair".exe -i:120000 "%OUTVFILE%" "%TC_FILE%" "%OUTRFILE%" :LOOP1 IF EXIST "%OUTAFILE%" GOTO :LOOP1END cscript SleepSample.js GOTO :LOOP1 :LOOP1END IF NOT EXIST "%OUTMFILE%" %CALLAPPNW% "%MP4BOX%\mp4box.exe" -add "%OUTRFILE%" -add "%OUTAFILE%" -new "%OUTMFILE%" :LOOP2 IF EXIST "%OUTMFILE%" GOTO :LOOP2END cscript SleepSample.js GOTO :LOOP2 :LOOP2END COPY /Y /B "%OUTMFILE%" "%OUT_FILE%" rem 動かないときはここで停止させると何か分かるかも IF NOT EXIST "%OUT_FILE%" ECHO エラーが発生しているようです。各ツールのメッセージを確認してみてください。 IF NOT EXIST "%OUT_FILE%" PAUSE rem 掃除 IF EXIST "%OUTMFILE%" RMDIR /S /Q "%WORKPATH%" GOTO :EOF :MP4 IF NOT EXIST "%~dpnx1" GOTO :EOF SET TGT_FILE=%WORKPATH%\%~nx1_tmp.avi rem SET TGTAFILE=%WORKPATH%\%~nx1_tmp.raw SET TGTAFILE=%~dpnx1 SET TC_FILE=%WORKPATH%\%~nx1_tmp.txt %CALLAPP% DTSRepair -t "%~dpnx1" "%TC_FILE%" rem %CALLAPP% "%MP4BOX%\mp4box.exe" -raw %AUDIO_TRACK% "%~dpnx1" -out "%TGTAFILE%" %CALLAPP% %MKVTOOLNIX%\mkvmerge -o "%WORKPATH%\%~nx1_tmp.mkv" -S "%~dpnx1" --timecode-scale 120000 %CALLAPP% "%TOOLDIR%\mkv2vfr.exe" "%WORKPATH%\%~nx1_tmp.mkv" "%TGT_FILE%" 1>nul GOTO :EOF :MKV IF NOT EXIST "%~dpnx1" GOTO :EOF SET TGT_FILE=%WORKPATH%\%~nx1_tmp.avi rem SET TGTAFILE=%WORKPATH%\%~nx1_tmp.raw SET TGTAFILE=%~dpnx1 SET TC_FILE=%WORKPATH%\%~nx1_tmp.txt %CALLAPP% "%MKVTOOLNIX%\mkvextract.exe" timecodes_v2 "%~dpnx1" %VIDEO_TRACK%:"%TC_FILE%" rem %CALLAPP% "%MKVTOOLNIX%\mkvextract.exe" tracks "%~dpnx1" %AUDIO_TRACK%:"%TGTAFILE%" %CALLAPP% "%TOOLDIR%\mkv2vfr.exe" "%~dpnx1" "%TGT_FILE%" 1>nul GOTO :EOF :AVI IF NOT EXIST "%~dpnx1" GOTO :EOF SET TGT_FILE=%WORKPATH%\%~nx1_tmp.avi SET TGTAFILE=%~dpnx1 SET TC_FILE=%WORKPATH%\%~nx1_tmp.txt %CALLAPP% "%TOOLDIR%\avi2timecode2.exe" "%~dpnx1" "%TC_FILE%" %CALLAPP% "%TOOLDIR%\avidelnull.exe" "%~dpnx1" "%TGT_FILE%" GOTO :EOF :WMV IF NOT EXIST "%~dpnx1" GOTO :EOF SET TGT_FILE=%WORKPATH%\%~nx1_tmp.avi SET TGTAFILE=%~dpnx1 SET TC_FILE_WORK=%WORKPATH%\%~nx1_tmp.work.txt SET TC_FILE=%WORKPATH%\%~nx1_tmp.txt COPY /Y "%~dpnx1" "%WORKPATH%\%~nx1_tmp.wmv" 1>nul 2>nul %CALLAPP% "%TOOLDIR%\Media2Mkv.exe" "%WORKPATH%\%~nx1_tmp.wmv" %CALLAPP% %MKVTOOLNIX%mkvextract timecodes_v2 "%WORKPATH%\%~nx1_tmp.wmv.mkv" %VIDEO_TRACK%:"%TC_FILE%" %CALLAPP% %MKVTOOLNIX%mkvextract tracks "%WORKPATH%\%~nx1_tmp.wmv.mkv" %VIDEO_TRACK%:"%TGT_FILE%" GOTO :EOF :AVS_DirectShowSource ECHO global plugin_directory = "%TOOLDIR%\" >"%AVS2FILE%" ECHO Import(plugin_directory + "Setting.avs") >>"%AVS2FILE%" ECHO DirectShowSource("%TGT_FILE%", convertFps=false) >>"%AVS2FILE%" ECHO sbResize(480,270) >>"%AVS2FILE%" ECHO AddBorders(0,0,0,2) >>"%AVS2FILE%" ECHO AssumeFPS(30000, 1001) >>"%AVS2FILE%" ECHO ConvertToYV12() >>"%AVS2FILE%" ECHO return LAST >>"%AVS2FILE%" GOTO :EOF
encode_audio.bat
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION rem 付属のTOOLディレクトリの場所を指定する。 SET TOOLDIR=C:\Program files\PSPでVFR\tool rem 個別にファイルを設定する場合はここを編集 SET NEROAACENC=%TOOLDIR% SET AVS2WAV=%TOOLDIR% rem エンコードの設定 SET AAC_OPTIONS= -q 0.35 SET CALLAPP=START "" /B /BELOWNORMAL /WAIT rem 複数ファイルのループ処理 SET ARGV=%* FOR %%I IN (!ARGV!) DO CALL :PSP "%%~I" GOTO :EOF :PSP rem ファイル設定 SET TGTAFILE=%~dpnx1 SET WORKPATH=%TMP%\%~nx1.tmp SET WAV_FILE=%WORKPATH%\%~nx1_tmp.wav SET AVS1FILE=%WORKPATH%\%~nx1_tmp.1.avs SET OUTAFILE=%WORKPATH%\%~nx1_tmp.audio.mp4 IF NOT EXIST "%WORKPATH%" mkdir "%WORKPATH%" :MAIN rem avsの作成 Audio ECHO A = DirectShowSource("%TGTAFILE%", video=false, audio=true) >"%AVS1FILE%" ECHO A = A.Audiorate ^^!= 48000 ^^? A.SSRC(48000, false) : A >>"%AVS1FILE%" ECHo V = Colorbars(40,30) >>"%AVS1FILE%" ECHO AudioDub(A, V) >>"%AVS1FILE%" IF NOT EXIST "%WAV_FILE%" %CALLAPP% "%AVS2WAV%\avs2wav.exe" "%AVS1FILE%" "%WAV_FILE%" IF NOT EXIST "%OUTAFILE%" %CALLAPP% "%NEROAACENC%\neroAacEnc.exe" -if "%WAV_FILE%" -of "%OUTAFILE%" %AAC_OPTIONS% GOTO :EOF exit
SleepSample.js
WScript.sleep(5000);
エンコードではないがサムネイル作成用
make_THM.bat
@ECHO OFF setlocal SET FFMPEG=c:\program files\megui\tools\ffmpeg\ffmpeg.exe set OFFSET=10 set FFPARM= -y -f image2 -ss %OFFSET% -vframes 1 -s 160x120 FOR %%I IN (*.mp4) DO CALL :MAIN "%%~I" GOTO :EOF :MAIN set INFILE=%~f1 set OUTFILE=%~dpn1.jpg IF NOT EXIST "%OUTFILE%" START "" /BELOWNORMAL /MIN "%FFMPEG%" -i "%INFILE%" %FFPARM% "%OUTFILE%" GOTO :EOF endlocal