Create AV1 Master.bat

This commit is contained in:
TylerCG 2025-10-02 20:12:09 -04:00
commit 094aa3a447

187
AV1 Master.bat Normal file
View File

@ -0,0 +1,187 @@
@echo off
setlocal enabledelayedexpansion
:: =========================
:: Prompt for Origination Folder (required)
:: =========================
:PromptOrigination
set "ORIGINATION_FOLDER="
set /p ORIGINATION_FOLDER=Enter the origination folder path (e.g., P:\Anime\Show):
if "%ORIGINATION_FOLDER%"=="" (
echo You must enter a path for the origination folder.
goto :PromptOrigination
)
:: =========================
:: Set default Processing Folder
:: =========================
set "DEFAULT_PROCESSING_FOLDER=C:\Users\Tyler\Videos\Video Conversion\temp"
:: Prompt for Processing Folder (optional)
set "PROCESSING_FOLDER="
set /p PROCESSING_FOLDER=Enter processing folder path (or press Enter to use "%DEFAULT_PROCESSING_FOLDER%"):
if "%PROCESSING_FOLDER%"=="" (
set "PROCESSING_FOLDER=%DEFAULT_PROCESSING_FOLDER%"
)
:: Prompt for Completed Folder (optional)
set "COMPLETED_FOLDER="
set /p COMPLETED_FOLDER=Enter completed folder path (or press Enter to put output back into the original folder):
:: =========================
:: Resolution choice (default 1080)
:: =========================
:ChooseResolution
set "RES_CHOICE="
set /p RES_CHOICE=Choose resolution (720 or 1080, default=1080):
if "%RES_CHOICE%"=="" set "RES_CHOICE=1080"
if "%RES_CHOICE%"=="720" (
set "RES_HEIGHT=720"
) else if "%RES_CHOICE%"=="1080" (
set "RES_HEIGHT=1080"
) else (
echo Invalid choice. Please enter 720 or 1080.
goto :ChooseResolution
)
:: =========================
:: Determine default CQ and filter based on folder type
:: =========================
set "CQ_DEFAULT="
set "FILTER_FLAGS=lanczos"
echo %ORIGINATION_FOLDER% | findstr /i "\\tv\\" >nul
if not errorlevel 1 (
set "FILTER_FLAGS=bicubic"
if "%RES_CHOICE%"=="1080" (
set "CQ_DEFAULT=28"
) else (
set "CQ_DEFAULT=30"
)
) else (
REM Defaults for anime
if "%RES_CHOICE%"=="1080" (
set "CQ_DEFAULT=32"
) else (
set "CQ_DEFAULT=34"
)
)
:: =========================
:: CQ choice (user can override)
:: =========================
set "CQ="
set /p CQ=Enter CQ value (default=%CQ_DEFAULT%):
if "%CQ%"=="" set "CQ=%CQ_DEFAULT%"
:: =========================
:: Confirm the paths
:: =========================
echo.
echo === Using These Paths ===
echo Origination: %ORIGINATION_FOLDER%
echo Processing: %PROCESSING_FOLDER%
if defined COMPLETED_FOLDER (
echo Completed: %COMPLETED_FOLDER%
) else (
echo Completed: [Will return to original folder]
)
echo Resolution: %RES_CHOICE% (Height %RES_HEIGHT%)
echo CRF/CQ: %CQ%
echo Scaling: %FILTER_FLAGS%
echo =========================
:: =========================
:: Ensure folders exist
:: =========================
if not exist "%PROCESSING_FOLDER%" mkdir "%PROCESSING_FOLDER%"
if defined COMPLETED_FOLDER (
if not exist "%COMPLETED_FOLDER%" mkdir "%COMPLETED_FOLDER%"
)
set "SUFFIX= -EHX"
:: =========================
:: Loop through each episode recursively
:: =========================
for /R "%ORIGINATION_FOLDER%" %%F in (*.mkv *.mp4) do (
REM Skip files that contain "EHX" or "MeGusta"
echo %%~nxF | findstr /i "EHX MeGusta" >nul
if errorlevel 1 (
echo =====================================================
echo Processing: %%~nxF
REM Copy episode to processing folder
copy "%%F" "%PROCESSING_FOLDER%\%%~nxF"
set "INPUT_FILE=%PROCESSING_FOLDER%\%%~nxF"
REM Wait briefly to ensure copy finishes
timeout /t 1 /nobreak >nul
REM =========================
REM Determine audio bitrate based on channel count
REM =========================
set "AUDIO_BITRATE="
set "AUDIO_CHANNELS="
for /f "tokens=1,2 delims=," %%A in ('ffprobe -v error -select_streams a -show_entries stream=index,channels -of csv=p=0 "%INPUT_FILE%"') do (
if %%B==2 (
set "AUDIO_BITRATE=128k"
set "AUDIO_CHANNELS=2"
) else (
set "AUDIO_BITRATE=192k"
set "AUDIO_CHANNELS=6"
)
)
if "%RES_CHOICE%"=="1080" (
set "SCALE_WIDTH=1920"
set "SCALE_HEIGHT=1080"
) else (
set "SCALE_WIDTH=1280"
set "SCALE_HEIGHT=720"
)
REM Default to 128k / 2 channels if detection failed
if "!AUDIO_BITRATE!"=="" set "AUDIO_BITRATE=128k"
if "!AUDIO_CHANNELS!"=="" set "AUDIO_CHANNELS=2"
REM =========================
REM Run conversion with AV1 NVENC, 10-bit, auto aspect ratio
REM =========================
ffmpeg -y -i "!INPUT_FILE!" ^
-vf "scale=!SCALE_WIDTH!:!SCALE_HEIGHT!:flags=!FILTER_FLAGS!:force_original_aspect_ratio=decrease" ^
-map 0:v -map 0:a -map 0:s? ^
-c:v av1_nvenc -preset p1 -cq %CQ% -pix_fmt p010le ^
-c:a aac -b:a !AUDIO_BITRATE! -ac !AUDIO_CHANNELS! ^
-c:s copy ^
"%PROCESSING_FOLDER%\%%~nF%SUFFIX%.mkv"
REM Move converted file to Completed folder or back to original
if defined COMPLETED_FOLDER (
move "%PROCESSING_FOLDER%\%%~nF%SUFFIX%.mkv" "%COMPLETED_FOLDER%\%%~nF%SUFFIX%.mkv"
set "TARGET_PATH=%COMPLETED_FOLDER%\%%~nF%SUFFIX%.mkv"
) else (
move "%PROCESSING_FOLDER%\%%~nF%SUFFIX%.mkv" "%%~dpF%%~nF%SUFFIX%.mkv"
set "TARGET_PATH=%%~dpF%%~nF%SUFFIX%.mkv"
)
echo Moved file to "!TARGET_PATH!"
REM Confirm conversion succeeded before deleting originals
if exist "!TARGET_PATH!" (
echo Conversion confirmed. Deleting original files...
del "%%F"
del "!INPUT_FILE!"
echo Originals deleted.
) else (
echo ERROR: Converted file not found. Skipping deletion of originals.
)
echo =====================================================
) else (
echo Skipping: %%~nxF (contains 'EHX' or 'MeGusta')
)
)
endlocal
pause