Skip to content

Instantly share code, notes, and snippets.

@fardm
Last active September 18, 2025 19:04
Show Gist options
  • Select an option

  • Save fardm/d02c301b3fa58adba71c8c4ee47cfc38 to your computer and use it in GitHub Desktop.

Select an option

Save fardm/d02c301b3fa58adba71c8c4ee47cfc38 to your computer and use it in GitHub Desktop.
فایل های آماده FFmpeg

فایل های آماده FFmpeg

موقع استفاده از FFmpeg، یه سری دستورات هستن که تکراری‌اند و الگوی ثابتی دارند مثل فشرده سازی عکس و ویدئو. برای اینکه هر بار مجبور نباشم این دستورات رو دستی بنویسم، چند تا فایل bat آماده کردم. فقط کافیه اجراشون کنم تا کاری که میخوام رو انجام بده.

این فایل ها طوری تنظیم شده که روی تمام فایل های موجود توی پوشه انجام میشه یعنی لازم نیست اسم فایل ها رو وارد کنید.

فایل ها توی یک پوشه جدید به اسم export ذخیره میشن.

تنظیمات مورد نیاز ازتون پرسیده میشه میتونید دستی تنظیم کنید یا مقادیر پیشفرض رو دنبال کنید.


نحوه استفاده

  1. یک فولدر بسازید و فایل هاتون رو توش قرار بدید.
  2. فایل bat مورد نیازتون رو از اینجا دانلود کنید و توی همون فولدر قرار بدید.
  3. روی فایل bat کلیک کنید تا اجرا بشه.
@echo off
setlocal enabledelayedexpansion
if not exist "exports" mkdir "exports"
:: Ask for MP3 quality (0-9, 0=best, 9=worst)
set /p QUALITY=Enter audio quality (0-9, 0=best, 9=worst, default 2):
if "%QUALITY%"=="" set QUALITY=2
:: Ask for optional suffix
set /p EXTRA_SUFFIX=Enter optional suffix (press Enter to skip):
for %%i in (*.wav *.aac *.flac *.m4a *.ogg *.wma *.mp3) do (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -codec:a libmp3lame -q:a %QUALITY% "exports\%%~ni.mp3"
) else (
ffmpeg -i "%%i" -codec:a libmp3lame -q:a %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.mp3"
)
)
echo DONE - Files saved in "exports" folder.
pause
@echo off
setlocal enabledelayedexpansion
if not exist "exports" mkdir "exports"
:: For JPG format, quality value ranges from 2 to 31.
:: Lower values mean better quality but larger file size.
:: Higher values mean lower quality and smaller file size.
:: Default is 5, which gives a good balance between quality and size.
:: Ask for quality (for jpg: 2 to 31, default 5)
set /p QUALITY=Enter JPEG quality (2-31, 2=best, 31=worst; default 5):
if "%QUALITY%"=="" set QUALITY=5
:: Ask for optional suffix
set /p EXTRA_SUFFIX=Enter optional suffix (press Enter to skip):
:: Ask for resize option
echo Resize options:
echo 1. Keep original size
echo 2. Enter Width (px)
echo 3. Enter Height (px)
set /p RESIZE_OPTION=Choose resize option:
if "%RESIZE_OPTION%"=="" set RESIZE_OPTION=1
if "%RESIZE_OPTION%"=="2" (
set /p WIDTH=Enter output width in px:
)
if "%RESIZE_OPTION%"=="3" (
set /p HEIGHT=Enter output height in px:
)
for %%i in (*.png *.jpg *.jpeg *.webp) do (
if "%RESIZE_OPTION%"=="1" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -q:v %QUALITY% "exports\%%~ni.jpg"
) else (
ffmpeg -i "%%i" -q:v %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.jpg"
)
) else if "%RESIZE_OPTION%"=="2" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vf "scale=%WIDTH%:-1" -q:v %QUALITY% "exports\%%~ni.jpg"
) else (
ffmpeg -i "%%i" -vf "scale=%WIDTH%:-1" -q:v %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.jpg"
)
) else if "%RESIZE_OPTION%"=="3" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vf "scale=-1:%HEIGHT%" -q:v %QUALITY% "exports\%%~ni.jpg"
) else (
ffmpeg -i "%%i" -vf "scale=-1:%HEIGHT%" -q:v %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.jpg"
)
)
)
echo DONE - Files saved in "exports" folder.
pause
@echo off
setlocal enabledelayedexpansion
if not exist "exports" mkdir "exports"
:: Ask for quality
set /p QUALITY=Enter quality (0-100, 100=best, 0=worst; default 80):
if "%QUALITY%"=="" set QUALITY=80
:: Ask for optional suffix
set /p EXTRA_SUFFIX=Enter optional suffix (press Enter to skip):
:: Ask for resize option
echo Resize options:
echo 1. Keep original size
echo 2. Enter Width (px)
echo 3. Enter Height (px)
set /p RESIZE_OPTION=Choose resize option:
if "%RESIZE_OPTION%"=="" set RESIZE_OPTION=1
if "%RESIZE_OPTION%"=="2" (
set /p WIDTH=Enter output width in px:
)
if "%RESIZE_OPTION%"=="3" (
set /p HEIGHT=Enter output height in px:
)
for %%i in (*.png *.jpg *.jpeg *.webp) do (
if "%RESIZE_OPTION%"=="1" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -c:v libwebp -qscale:v %QUALITY% "exports\%%~ni.webp"
) else (
ffmpeg -i "%%i" -c:v libwebp -qscale:v %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.webp"
)
) else if "%RESIZE_OPTION%"=="2" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vf "scale=%WIDTH%:-1" -c:v libwebp -qscale:v %QUALITY% "exports\%%~ni.webp"
) else (
ffmpeg -i "%%i" -vf "scale=%WIDTH%:-1" -c:v libwebp -qscale:v %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.webp"
)
) else if "%RESIZE_OPTION%"=="3" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vf "scale=-1:%HEIGHT%" -c:v libwebp -qscale:v %QUALITY% "exports\%%~ni.webp"
) else (
ffmpeg -i "%%i" -vf "scale=-1:%HEIGHT%" -c:v libwebp -qscale:v %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.webp"
)
)
)
echo DONE - Files saved in "exports" folder.
pause
@echo off
setlocal enabledelayedexpansion
if not exist "exports" mkdir "exports"
echo Compression Method:
echo 1. Target a video quality
echo 2. Target a video resolution
echo 3. Target a max bitrate
echo 4. Customize all (quality + resolution + bitrate)
set /p METHOD=Enter method number:
if "%METHOD%"=="" set METHOD=1
:: تنظیمات پیشفرض
set QUALITY=21
set WIDTH=
set HEIGHT=
set BITRATE=
if "%METHOD%"=="1" goto QUALITY_METHOD
if "%METHOD%"=="2" goto RESOLUTION_METHOD
if "%METHOD%"=="3" goto BITRATE_METHOD
if "%METHOD%"=="4" goto CUSTOM_METHOD
:QUALITY_METHOD
echo Select Quality (0-51):
echo 18 Best (large size)
echo 21 Good (medium) [default]
echo 28 Okay (small)
set /p QUALITY=Enter quality number:
if "%QUALITY%"=="" set QUALITY=21
goto RUN_COMPRESSION
:RESOLUTION_METHOD
echo Select Preset Size:
echo 1. 144p (256x144)
echo 2. 240p (352x240)
echo 3. 360p (480x360)
echo 4. 480p (720x480)
echo 5. 720p (1280x720) [default]
echo 6. 1080p (1920x1080)
echo 7. 1440p (2560x1440)
echo 8. 4k (3840x2160)
set /p RESOLUTION=Choose resolution (1-8):
if "%RESOLUTION%"=="" set RESOLUTION=5
if "%RESOLUTION%"=="1" set WIDTH=256& set HEIGHT=144
if "%RESOLUTION%"=="2" set WIDTH=352& set HEIGHT=240
if "%RESOLUTION%"=="3" set WIDTH=480& set HEIGHT=360
if "%RESOLUTION%"=="4" set WIDTH=720& set HEIGHT=480
if "%RESOLUTION%"=="5" set WIDTH=1280& set HEIGHT=720
if "%RESOLUTION%"=="6" set WIDTH=1920& set HEIGHT=1080
if "%RESOLUTION%"=="7" set WIDTH=2560& set HEIGHT=1440
if "%RESOLUTION%"=="8" set WIDTH=3840& set HEIGHT=2160
goto RUN_COMPRESSION
:BITRATE_METHOD
echo Choose max bitrate (kbps):
echo 1000 - Low quality, small size
echo 2500 - Medium quality, medium size [default]
echo 5000 - High quality, large size
set /p BITRATE=Enter max bitrate:
if "%BITRATE%"=="" set BITRATE=2500
goto RUN_COMPRESSION
:CUSTOM_METHOD
echo -- Customize all settings --
echo Select Quality (0-51):
echo 18 Best (large size)
echo 21 Good (medium) [default]
echo 28 Okay (small)
set /p QUALITY=Enter quality number:
if "%QUALITY%"=="" set QUALITY=21
echo Select Preset Size:
echo 1. 144p (256x144)
echo 2. 240p (352x240)
echo 3. 360p (480x360)
echo 4. 480p (720x480)
echo 5. 720p (1280x720) [default]
echo 6. 1080p (1920x1080)
echo 7. 1440p (2560x1440)
echo 8. 4k (3840x2160)
set /p RESOLUTION=Choose resolution (1-8):
if "%RESOLUTION%"=="" set RESOLUTION=5
if "%RESOLUTION%"=="1" set WIDTH=256& set HEIGHT=144
if "%RESOLUTION%"=="2" set WIDTH=352& set HEIGHT=240
if "%RESOLUTION%"=="3" set WIDTH=480& set HEIGHT=360
if "%RESOLUTION%"=="4" set WIDTH=720& set HEIGHT=480
if "%RESOLUTION%"=="5" set WIDTH=1280& set HEIGHT=720
if "%RESOLUTION%"=="6" set WIDTH=1920& set HEIGHT=1080
if "%RESOLUTION%"=="7" set WIDTH=2560& set HEIGHT=1440
if "%RESOLUTION%"=="8" set WIDTH=3840& set HEIGHT=2160
echo Choose max bitrate (kbps):
echo 1000 - Low quality, small size
echo 2500 - Medium quality, medium size [default]
echo 5000 - High quality, large size
set /p BITRATE=Enter max bitrate:
if "%BITRATE%"=="" set BITRATE=2500
goto RUN_COMPRESSION
:RUN_COMPRESSION
:: Ask for optional suffix
set /p EXTRA_SUFFIX=Enter optional suffix (press Enter to skip):
echo Starting compression...
for %%i in (*.mp4 *.mov *.avi *.mkv *.webm) do (
if "%METHOD%"=="1" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
) else if "%METHOD%"=="2" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -vf "scale=%WIDTH%:%HEIGHT%" "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -vf "scale=%WIDTH%:%HEIGHT%" "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
) else if "%METHOD%"=="3" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -b:v %BITRATE%k "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -b:v %BITRATE%k "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
) else if "%METHOD%"=="4" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% -vf "scale=%WIDTH%:%HEIGHT%" -b:v %BITRATE%k "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% -vf "scale=%WIDTH%:%HEIGHT%" -b:v %BITRATE%k "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
)
)
echo DONE - Files saved in "exports" folder.
pause
@echo off
setlocal enabledelayedexpansion
if not exist "exports" mkdir "exports"
echo Compression Method:
echo 1. Target a video quality
echo 2. Target a video resolution
echo 3. Target a max bitrate
echo 4. Customize all (quality + resolution + bitrate)
set /p METHOD=Enter method number:
if "%METHOD%"=="" set METHOD=1
:: تنظیمات پیشفرض
set QUALITY=21
set WIDTH=
set HEIGHT=
set BITRATE=
if "%METHOD%"=="1" goto QUALITY_METHOD
if "%METHOD%"=="2" goto RESOLUTION_METHOD
if "%METHOD%"=="3" goto BITRATE_METHOD
if "%METHOD%"=="4" goto CUSTOM_METHOD
:QUALITY_METHOD
echo Select Quality (0-51):
echo 18 Best (large size)
echo 21 Good (medium) [default]
echo 28 Okay (small)
set /p QUALITY=Enter quality number:
if "%QUALITY%"=="" set QUALITY=21
goto RUN_COMPRESSION
:RESOLUTION_METHOD
echo Select Preset Size:
echo 1. 144p (144x256)
echo 2. 240p (240x426)
echo 3. 360p (360x640)
echo 4. 480p (480x854)
echo 5. 720p (720x1280) [default]
echo 6. 1080p (1080x1920)
echo 7. 1440p (1440x2560)
echo 8. 4k (2160x3840)
set /p RESOLUTION=Choose resolution (1-8):
if "%RESOLUTION%"=="" set RESOLUTION=5
if "%RESOLUTION%"=="1" set WIDTH=144& set HEIGHT=256
if "%RESOLUTION%"=="2" set WIDTH=240& set HEIGHT=426
if "%RESOLUTION%"=="3" set WIDTH=360& set HEIGHT=640
if "%RESOLUTION%"=="4" set WIDTH=480& set HEIGHT=854
if "%RESOLUTION%"=="5" set WIDTH=720& set HEIGHT=1280
if "%RESOLUTION%"=="6" set WIDTH=1080& set HEIGHT=1920
if "%RESOLUTION%"=="7" set WIDTH=1440& set HEIGHT=2560
if "%RESOLUTION%"=="8" set WIDTH=2160& set HEIGHT=3840
goto RUN_COMPRESSION
:BITRATE_METHOD
echo Choose max bitrate (kbps):
echo 1000 - Low quality, small size
echo 2500 - Medium quality, medium size [default]
echo 5000 - High quality, large size
set /p BITRATE=Enter max bitrate:
if "%BITRATE%"=="" set BITRATE=2500
goto RUN_COMPRESSION
:CUSTOM_METHOD
echo -- Customize all settings --
echo Select Quality (0-51):
echo 18 Best (large size)
echo 21 Good (medium) [default]
echo 28 Okay (small)
set /p QUALITY=Enter quality number:
if "%QUALITY%"=="" set QUALITY=21
echo Select Preset Size:
echo 1. 144p (144x256)
echo 2. 240p (240x426)
echo 3. 360p (360x640)
echo 4. 480p (480x854)
echo 5. 720p (720x1280) [default]
echo 6. 1080p (1080x1920)
echo 7. 1440p (1440x2560)
echo 8. 4k (2160x3840)
set /p RESOLUTION=Choose resolution (1-8):
if "%RESOLUTION%"=="" set RESOLUTION=5
if "%RESOLUTION%"=="1" set WIDTH=144& set HEIGHT=256
if "%RESOLUTION%"=="2" set WIDTH=240& set HEIGHT=426
if "%RESOLUTION%"=="3" set WIDTH=360& set HEIGHT=640
if "%RESOLUTION%"=="4" set WIDTH=480& set HEIGHT=854
if "%RESOLUTION%"=="5" set WIDTH=720& set HEIGHT=1280
if "%RESOLUTION%"=="6" set WIDTH=1080& set HEIGHT=1920
if "%RESOLUTION%"=="7" set WIDTH=1440& set HEIGHT=2560
if "%RESOLUTION%"=="8" set WIDTH=2160& set HEIGHT=3840
echo Choose max bitrate (kbps):
echo 1000 - Low quality, small size
echo 2500 - Medium quality, medium size [default]
echo 5000 - High quality, large size
set /p BITRATE=Enter max bitrate:
if "%BITRATE%"=="" set BITRATE=2500
goto RUN_COMPRESSION
:RUN_COMPRESSION
:: Ask for optional suffix
set /p EXTRA_SUFFIX=Enter optional suffix (press Enter to skip):
echo Starting compression...
for %%i in (*.mp4 *.mov *.avi *.mkv *.webm) do (
if "%METHOD%"=="1" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
) else if "%METHOD%"=="2" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -vf "scale=%WIDTH%:%HEIGHT%" "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -vf "scale=%WIDTH%:%HEIGHT%" "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
) else if "%METHOD%"=="3" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -b:v %BITRATE%k "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -b:v %BITRATE%k "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
) else if "%METHOD%"=="4" (
if "!EXTRA_SUFFIX!"=="" (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% -vf "scale=%WIDTH%:%HEIGHT%" -b:v %BITRATE%k "exports\%%~ni.mp4"
) else (
ffmpeg -i "%%i" -vcodec libx265 -crf %QUALITY% -vf "scale=%WIDTH%:%HEIGHT%" -b:v %BITRATE%k "exports\%%~ni_!EXTRA_SUFFIX!.mp4"
)
)
)
echo DONE - Files saved in "exports" folder.
pause
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment