@ECHO OFF & ECHO NGcode version BETA 0 IF [%1]==[] ECHO drag+drop .avs & PAUSE & GOTO :EOF set AR_num=4 set AR_den=3 set sar=--sar 7:6 set x264_flags=--crf 20 --keyint 600 --preset veryslow --no-fast-pskip --merange 64 --rc-lookahead 250 --bframes 16 :: fast flags when debugging, comment out line for submissions :: set x264_flags=--preset ultrafast set NGcode=%~dp0 set PATH=C:\Users\vehi\Desktop\lib;%PATH% set ng_lib="%NGcode%\NGcode.avs" set avs="%~1" call :clean_filename %avs% fn ::%NGcode% is where the bat file is ::%CD% is where the .avs is ::set working_dir=C:\temp\%fn% set working_dir=%NGcode%\tmp\%fn% set finish_dir=%CD% :: set finish_dir=%CD%\%fn%_done set mp45="%finish_dir%\%fn%_512kb.mp4" set mp4p="%finish_dir%\%fn%.mp4" set mp4x="%finish_dir%\%fn%_10bit444.mp4" set mkvy="%finish_dir%\%fn%_YT.mkv" if not exist "%working_dir%\" mkdir "%working_dir%" if not exist "%finish_dir%\" mkdir "%finish_dir%" cd "%working_dir%" call :make_your_time call :make_audio call :make_512 call :make_primary call :make_10bit call :make_YT echo. echo ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] echo ] Remember to delete the temp files [ echo [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ echo. pause goto:eof :make_your_time if exist times.txt if exist dupinfo.txt goto:eof ( echo Import^(%ng_lib%^) echo TestSource^(%avs%^) echo ExactDedup ) > times.avs avs2pipemod -benchmark times.avs goto:eof :make_audio if exist a.mp4 if exist a_track1.nhml goto:eof ( echo Import^(%ng_lib%^) echo AviSource^(%avs%^) echo AudioTrimSample^(4672^) ) > aac.avs avs2pipemod -extwav aac.avs | neroAacEnc -q 0.25 -ignorelength -if - -of a.mp4 MP4Box a.mp4 -nhml 1 goto:eof :make_512 if exist %mp45% goto:eof ( echo Import^(%ng_lib%^) echo AviSource^(%avs%^) echo Resize512^(%AR_num%, %AR_den%^) echo RGBtoYV12 ) > 5.avs set flags=%x264_flags% 5.avs -o 5.mp4 --input-range pc --range pc x264_8 %flags% --slow-firstpass --pass 1 2>&1 | mtee x264_1pass.log FOR /F "tokens=7 delims=. " %%G IN ('TYPE x264_1pass.log ^| FIND "encoded"') DO ( IF %%G GTR 520 ( x264_8 %flags% --bitrate 512 --pass 2 --nr 1000 ) ) MP4Box -add 5.mp4 -add a.mp4 -hint -new %mp45% goto:eof :make_primary if exist %mp4p% goto:eof ( echo Import^(%ng_lib%^) echo AviSource^(%avs%^) echo ExactDedup^(firstpass=false^) echo RGBtoYV12 ) > p.avs x264_8 %x264_flags% p.avs -o p.264 --tcfile-in times.txt %sar% --input-range pc --range pc MP4Box -add p.264 -new p.mp4 MP4Box p.mp4 -nhml 1 NHMLFixup2 -t times.txt p_track1.nhml a_track1.nhml MP4Box -add p_track1.nhml -add a_track1.nhml -new %mp4p% goto:eof :make_10bit if exist %mp4x% goto:eof ( echo Import^(%ng_lib%^) echo AviSource^(%avs%^) echo ExactDedup^(firstpass=false^) ) > x.avs x264_10 %x264_flags% x.avs -o x.264 --tcfile-in times.txt %sar% --output-csp i444 --range pc MP4Box -add x.264 -new x.mp4 MP4Box x.mp4 -nhml 1 NHMLFixup2 -t times.txt x_track1.nhml a_track1.nhml MP4Box -add x_track1.nhml -add a_track1.nhml -new %mp4x% goto:eof :make_YT if exist %mkvy% goto:eof avs2pipemod -extwav %avs% > a.wav ( echo Import^(%ng_lib%^) echo AviSource^(%avs%^) echo TASBlend echo PointResize^(8 * width, 8 * height^) ) > y.avs x264_8 y.avs -o y.mkv --qp 0 --keyint infinite --output-csp i420 --range tv --colormatrix bt470bg mkvmerge -o %mkvy% y.mkv a.wav goto:eof :clean_filename :: %1 - input filename :: %2 - return varible name :: !% ^& these chars could break the batch :: \/:*?"<>| these could to, but they shouldn't appear in valid file names SETLOCAL EnableDelayedExpansion :clean_filename_loop SET "filename=%~n1" SET "filename=G!filename:&=!G" SET filename=%filename:!=% SET filename=!filename: =_! SET filename=!filename:%%=! SET filename=!filename:^^=! SET filename=!filename:~1,-1! ENDLOCAL & SET %~2=%filename% GOTO:EOF