@echo off
chcp 65001>NUL
rem setlocal && cd /D "%~dp0"
setlocal enabledelayedexpansion
REM AYTO TO SCRIPT ΕΠΕΞΕΡΓΑΖΕΤΑΙ ENA H ΠΕΡΙΣΣΟΤΕΡΑ ARXEIA ΒΙΝΤΕΟ ΜΕ ΤΗΝ ΧΡΗΣΗ NVIDIA ΚΑΡΤΑΣ ΓΡΑΦΙΚΩΝ
REM ΠΡΕΠΕΙ ΝΑ ΕΧΕΤΕ ΦΟΡΤΩΣΕΙ ΤΟ ΠΛΗΡΕΣ ΠΑΚΕΤΟ ΤOY DRIVER ΤΗΣ NVIDIA, ΟΧΙ ΜΟΝΟ ΤΟΥΣ DRIVERS & ΟΧΙ ΤΗΣ MS
REM ΤΑ SCRIPT ΕΙΝΑΙ ΜΕΡΟΣ ΤΟΥ gamelink.gr-ffmpeg-scripts.zip ΑΠΟ ΤΟ EL.GAMELINK.GR
REM Ακολουθεί το Url για να μάθετε περισσότερα ή να το κατεβάσετε. Καλά video editing!
REM 
REM https://el.gamelink.gr/blog/Pws-Mporeite-Na-Mikrynete-ta-Video-gia-tis-MkDocs-Selides-sas-me-to-ffmpeg/ 
REM 
 

rem https://trac.ffmpeg.org/wiki/HWAccelIntro
rem https://docs.nvidia.com/video-technologies/video-codec-sdk/12.0/ffmpeg-with-nvidia-gpu/index.html
rem https://stackoverflow.com/questions/44510765/gpu-accelerated-video-processing-with-ffmpeg
rem διαβάστε τις παραμέτρους στην Ζ κατηγορια για τις παραμετρους

echo.
set StartWIDTH=""
set /p StartWIDTH=Γράψε την ΟΡΙΖΟΝΤΙΑ ΔΙΑΣΤΑΣΗ που θες να γίνει το Βίντεο, π.χ. 640, αλλιώς Enter για να μην αλλάξει:


rem echo.
rem set "StartHEIGHT=720"
rem set /p StartHEIGHT=Γράψε την ΚΑΘΕΤΗ ΔΙΑΣΤΑΣΗ που θες να γίνει το Βίντεο, π.χ. 320, αλλιώς Enter για default 720:
rem το εκανα σχολιο γιατι η πλειονοτητα δεν θελει αλλαγη aspect ratio και ειναι ηδη 5 επιλογες να διαλέξει!
rem επισης αν εβαζα ακομα ενα nested if θα εκανα το script ποιο δυσκολο να τα αντιγραψετε ωστε να φτιαξετε τα δικά σας
rem δεστε ποσο δυσκολοτερο γινεται αν μπει 2η παραμετρος που εξαρταται απο μια αλλη στα vid1CustomRes.bat vids1CustomRes.bat

rem https://github.com/GPUOpen-LibrariesAndSDKs/AMF/wiki/FFmpeg-and-AMF-HW-Acceleration
echo.
set "StartCODEC=h264_nvenc"
set /p StartCODEC=Γράψε τον NVIDIA CODEC που θες, π.χ. hevc_nvenc για H.265/HEVC, αλλιώς Enter για h264_nvenc:

echo.
set "StartAUDIOCODEC=aac"
set /p StartAUDIOCODEC=Γράψε τον AUDIO CODEC που θες, π.χ. ac3, αλλιώς Enter για default aac:


echo.
set "StartVIDEOEXTENSION=mp4"
set /p StartVIDEOEXTENSION=Γράψε τον VIDEO CODEC που θες, π.χ. mkv,flv, αλλιώς Enter για default mp4:

echo.
set "StartOPTIONS=-cq 36"
set /p StartOPTIONS=Γράψε οποιαδήποτε άλλη επιλογή θες, π.χ. -rc cqp -qp_p 0 -qp_i 0, αλλιώς Enter για default  -bf:v 3 -rc vbr_hq -cq 19 -preset slow -profile:v main:
rem -crf => -cq on gpu encodings
rem https://superuser.com/questions/1236275/how-can-i-use-crf-encoding-with-nvenc-in-ffmpeg


:FF

echo.
echo Μετατρέπω το "%~1" ..
echo.


if [!StartWIDTH!] equ [""] (
	call ffmpeg -v quiet -stats -loglevel error  -i "%~1" -c:v !StartCODEC! !StartOPTIONS! -c:a !StartAUDIOCODEC!  "%~p1%~n1-nvidia-encoded.%%StartVIDEOEXTENSION%%" 
) else (
    call ffmpeg -v quiet -stats -loglevel error  -i "%~1" -vf scale=%StartWIDTH%:-1 -c:v !StartCODEC! !StartOPTIONS! -c:a !StartAUDIOCODEC!  "%~p1%~n1-%StartWIDTH%-nvidia-encoded.%%StartVIDEOEXTENSION%%"  
) 

rem call ffmpeg -v quiet -stats -i "%~1"  "%~p1%~n1.%%EndMP4%%"
rem call ffmpeg -v quiet -stats -i "%~1" -c:v hevc_amf -rc cqp -qp_p 0 -qp_i 0 -c:a copy "%~p1%~n1.%%StartVIDEOEXTENSION%%" 
rem call ffmpeg -v quiet -stats -i "%~1" -vf scale=%StartWIDTH%:-1 -c:v !StartCODEC! !StartOPTIONS! -c:a !StartAUDIOCODEC!  "%~p1%~n1-nvidia-encoded.%%StartVIDEOEXTENSION%%" 

endlocal

if %ERRORLEVEL% NEQ 0 (
		call vidCodeError.bat %errorlevel%
		shift
	) else (
		call vidCodeError.bat 0
		shift		
)
if "%~1" == "" goto End
goto FF

rem endlocal 

:End 
call vid0ends.bat
exit /b 0