Windows OS 바탕화면에 두고 영상 파일들이 있는 "폴더"를 드래그 앤 드롭(Drag & Drop) 하거나, 더블 클릭 시 폴더 경로를 직접 입력받아 안전하게 작업할 수 있는 Windows OS 전용 배치 파일(.bat) 제작.
비디오 인코딩 도중 중단되어 파일이 손상되는 것을 방지하기 위해 임시 파일(_temp.mp4)로 먼저 100% 정상 변환된 후 원본을 교체(Overwrite)하도록 설계되었음.
배치 파일 생성법
- 바탕화면 빈 곳 우클릭 → 새로 만들기 → 텍스트 문서 선택
- 아래 스크립트 내용을 전체 복사하여 붙여넣기
- 메뉴에서 파일 → 다른 이름으로 저장 클릭
- 파일 이름을
VideoCompress_GPU.bat로 입력하고, 파일 형식은 모든 파일 (.), 인코딩은 ANSI 또는 UTF-8로 저장
VideoCompress_GPU.bat 코드
plain text
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
title FFmpeg NVIDIA GPU H.265 일괄 압축기
:: 1. 폴더 경로 확인 (드래그 앤 드롭 또는 수동 입력)
set "TARGET_DIR=%~1"
if "%TARGET_DIR%"=="" (
echo ========================================================
echo 압축할 영상들이 들어있는 폴더 경로를 입력하세요.
echo (탐색기에서 폴더를 이 창으로 끌어다 놓아도 됩니다)
echo ========================================================
set /p "TARGET_DIR=폴더 경로 입력: "
)
:: 따옴표 제거
set "TARGET_DIR=%TARGET_DIR:"=%"
if not exist "%TARGET_DIR%" (
echo [오류] 입력한 폴더가 존재하지 않습니다: "%TARGET_DIR%"
pause
exit /b
)
echo.
echo ========================================================
echo 작업 대상 디렉터리: %TARGET_DIR%
echo 인코더: NVIDIA NVENC (H.265 / HEVC)
echo 품질 설정: CQ 24 / Preset p6
echo ========================================================
echo.
cd /d "%TARGET_DIR%"
:: 2. 지원하는 동영상 확장자 목록 순회
for %%E in (mp4 mkv avi mov flv wmv webm ts) do (
for %%F in (*.%%E) do (
set "FILENAME=%%~nxF"
set "BASENAME=%%~nF"
set "EXT=%%~xF"
:: 임시 파일명 정의
set "TEMP_FILE=!BASENAME!_temp.mp4"
set "FINAL_FILE=!BASENAME!.mp4"
:: 임시 파일 패턴(_temp.mp4)은 처리 대상에서 건너뛰기
echo "!FILENAME!" | findstr /i "_temp.mp4" >nul
if errorlevel 1 (
echo ----------------------------------------------------
echo [변환 시작] !FILENAME!
echo ----------------------------------------------------
:: FFmpeg 하드웨어 가속 인코딩 실행
ffmpeg -hide_banner -v error -stats -hwaccel cuda -i "%%F" ^
-c:v hevc_nvenc -cq 24 -preset p6 -pix_fmt yuv420p ^
-c:a aac -b:a 192k ^
-movflags +faststart ^
"!TEMP_FILE!"
:: 변환 성공 여부 체크 (에러코드 0 및 임시 파일 존재 확인)
if !errorlevel! equ 0 if exist "!TEMP_FILE!" (
rem 원본 삭제 후 임시 파일 이름 변경 (Overwrite)
del /f /q "%%F"
ren "!TEMP_FILE!" "!FINAL_FILE!"
echo.
echo [성공] 원본 교체 완료 -^> !FINAL_FILE!
) else (
echo.
echo [실패] !FILENAME! 변환 중 에러가 발생했습니다. 원본을 보존합니다.
if exist "!TEMP_FILE!" del /f /q "!TEMP_FILE!"
)
echo.
)
)
)
echo ========================================================
echo 모든 영상 압축 및 교체 작업이 완료되었습니다.
echo ========================================================
pause사용법
- 방법 1 (가장 편리함): 영상을 모아둔 폴더를 마우스로 잡고 바탕화면의
VideoCompress_GPU.bat아이콘 위로 끌어다 놓습니다(Drag & Drop). - 방법 2: 배치 파일을 더블 클릭하여 실행한 뒤, 프롬프트 창에 폴더 경로를 붙여넣고
Enter를 누릅니다.
설정법
- 화질 조정: 화질을 더 올리고 싶다면 스크립트 중간의
cq 24를cq 22정도로 낮추고, 용량을 더 줄이고 싶다면cq 26정도로 올리시면 됩니다. - 오디오 원본 유지: 음성 재인코딩 없이 원본 음향을 그대로 쓰고 싶다면
c:a aac -b:a 192k부분을c:a copy로 변경하면 처리 속도가 한층 더 빨라집니다.