@echo off rem ########################################################################### rem CREATE AN MPEG VIDEO FROM AN FFMPEG-SUPPORTED VIDEO (ONE-PASS) rem ########################################################################### IF '%1'=='' echo usage: %0 video_file && pause && exit /b 1 rem ########################################################################### rem SET VARIABLES rem ########################################################################### set FFMPEG="D:\MYDOCU~1\ffmpeg.exe" set OUTDIR=D: set TMPDIR=%TMP% set TARGET=ntsc-dvd set FRAME_W=720 set FRAME_H=480 set ASPECT_W=16 set ASPECT_H=9 rem ########################################################################### rem VERIFY VIDEO IS CORRECT rem ########################################################################### dir /b %1 echo. rem ########################################################################### rem GET WIDTH AND HEIGHT OF ORIGINAL VIDEO rem ########################################################################### set PROPERTIESFILE=%TMPDIR%\properties%RANDOM%.txt %FFMPEG% -i %1 2>&1 | findstr "\<[0-9][0-9]*x[0-9][0-9]*\>" >%PROPERTIESFILE% type %PROPERTIESFILE% for /f "tokens=3 delims=," %%d in (%PROPERTIESFILE%) do ^ for /f "tokens=1-2 delims=x " %%w in ("%%d") do ^ set ORIG_W=%%w& set ORIG_H=%%x echo. echo original dimension %ORIG_W% x %ORIG_H% del %PROPERTIESFILE% rem ########################################################################### rem DETERMINE POSSIBLE DIMENSIONS FOR MPEG VIDEO TO BE CREATED rem (DIMENSIONS SET TO BE DIVISIBLE BY 16) rem ########################################################################### set /a OUTPUT_W=(((%ORIG_W%*%FRAME_W%*%ASPECT_H%)/(%ORIG_H%*%ASPECT_W%))+8)/16*16 set /a OUTPUT_H=(((%ORIG_H%*%FRAME_H%*%ASPECT_W%)/(%ORIG_W%*%ASPECT_H%))+8)/16*16 echo possible dimension %OUTPUT_W% x %FRAME_H% echo possible dimension %FRAME_W% x %OUTPUT_H% echo. rem ########################################################################### rem SET MPEG VIDEO WIDTH AND HEIGHT rem ########################################################################### if /i %OUTPUT_H% equ %FRAME_H% ( set OUTPUT_W=%FRAME_W% ) if /i %OUTPUT_W% equ %FRAME_W% ( set OUTPUT_H=%FRAME_H% ) rem ########################################################################### rem PAD MPEG VIDEO (LETTERBOXING OR PILLARBOXING) rem ########################################################################### set PAD_X=0 set PAD_Y=0 if /i %OUTPUT_H% gtr %FRAME_H% ( set OUTPUT_H=%FRAME_H% set /a PAD_X="( %FRAME_W% - %OUTPUT_W% ) / 2" ) if /i %OUTPUT_W% gtr %FRAME_W% ( set OUTPUT_W=%FRAME_W% set /a PAD_Y="( %FRAME_H% - %OUTPUT_H% ) / 2" ) rem ########################################################################### rem VERIFY FFMPEG PARAMETERS ARE CORRECT rem ########################################################################### set PARAMETERS=-i %1 ^ -target %TARGET% ^ -aspect %ASPECT_W%:%ASPECT_H% ^ -s %OUTPUT_W%x%OUTPUT_H% ^ -vf pad=%FRAME_W%:%FRAME_H%:%PAD_X%:%PAD_Y% echo VERIFY FFMPEG PARAMETERS ARE CORRECT echo %PARAMETERS% rem ########################################################################### rem ENCODE TO MPEG VIDEO IN ONE-PASS rem ########################################################################### set OUTVIDEOFILE="%OUTDIR%\%~n1.mpg" %FFMPEG% %PARAMETERS% -y %OUTVIDEOFILE%