Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- setlocal EnableDelayedExpansion
- if not exist "%~dp0ffmpeg.exe" (
- echo Error: ffmpeg.exe not found.
- echo Put ffmpeg.exe alongside this file.
- pause
- goto :eof
- )
- if "%~1"=="" (
- echo Drag a video or gif file into this file.
- pause
- goto :eof
- )
- if not "%~2"=="" (
- echo Please drag only one file at a time.
- pause
- goto :eof
- )
- for /f "tokens=1 delims=." %%i in ('""%~dp0ffprobe.exe" -v error -select_streams v:0 -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 "%~1""') do (set duration=%%i)
- for /f "tokens=1 delims=." %%i in ('""%~dp0ffprobe.exe" -v error -select_streams v:0 -show_entries stream^=r_frame_rate -of default^=noprint_wrappers^=1:nokey^=1 "%~1""') do (set /a ofps=%%i)
- set /p codec="Select VP8 (8) or VP9 (9) (default=8): "
- if not defined codec (
- set codec=8
- )
- if not "%codec%"=="8" if not "%codec%"=="9" (
- cls
- echo Please enter a valid value.
- goto :set_quality
- )
- if "%codec%"=="8" (
- set codec=libvpx
- )
- if "%codec%"=="9" (
- set codec=libvpx-vp9
- )
- set /p size="Resize video? 1080p (6), 720p (5), 540p (4), 480p (3), 360p (2), 240p (1), custom size (0) or not (N): "
- if not defined size (
- goto :set_cut
- )
- if /I "%size%"=="n" (
- goto :set_cut
- )
- if "%size%"=="0" (
- goto :set_custom_size
- )
- if "%size%"=="1" (
- set scale=scale=-2:240:flags=lanczos
- goto :set_cut
- )
- if "%size%"=="2" (
- set scale=scale=-2:360:flags=lanczos
- goto :set_cut
- )
- if "%size%"=="3" (
- set scale=scale=-2:480:flags=lanczos
- goto :set_cut
- )
- if "%size%"=="4" (
- set scale=scale=-2:540:flags=lanczos
- goto :set_cut
- )
- if "%size%"=="5" (
- set scale=scale=-2:720:flags=lanczos
- goto :set_cut
- )
- if "%size%"=="6" (
- set scale=scale=-2:1080:flags=lanczos
- goto :set_cut
- )
- if defined size (
- echo Please enter a valid value.
- goto :set_size
- )
- :set_custom_size
- set /p custom_width="Enter width: "
- if not defined custom_width (
- set custom_width=-2
- )
- set /p custom_height="Enter height: "
- if not defined custom_height (
- set custom_height=-2
- )
- set scale=scale=%custom_width%:%custom_height%:flags=lanczos,setsar=1/1
- :set_cut
- if defined scale (
- set scale=-vf %scale%
- )
- set /p cut="Cut video? (y/N): "
- if not defined cut (
- goto :set_crop
- )
- if /I "%cut%"=="n" (
- goto :set_crop
- )
- if /I "%cut%"=="y" (
- goto :set_start_time
- )
- if defined cut (
- goto :set_cut
- )
- :set_start_time
- set /p start_time="Starting time (mm:ss.sss): "
- if not defined start_time (
- goto :set_end_time
- )
- if defined start_time (
- set ss=-ss %start_time%
- set _ST2=%start_time:~1,1%
- set _ST3=%start_time:~2,1%
- set _ST=0
- if "!_ST2!"==":" set _ST=1
- if "!_ST3!"==":" set _ST=1
- if "!_ST!"=="0" set start_time=00:!start_time!
- )
- if defined start_time for /f "tokens=1,2 delims=:." %%a in ("%start_time%") do set /a STS=(%%a*60)+%%b
- :set_end_time
- set /p end_time="Ending time (mm:ss.sss): "
- if not defined end_time (
- goto :set_crop
- )
- if defined end_time (
- set to=-to %end_time%
- set _ST2=%end_time:~1,1%
- set _ST3=%end_time:~2,1%
- set _ET=0
- if "!_ET2!"==":" set _ET=1
- if "!_ET3!"==":" set _ET=1
- if "!_ET!"=="0" set end_time=00:!end_time!
- )
- if defined end_time for /f "tokens=1,2 delims=:." %%a in ("%end_time%") do set /a ETS=(%%a*60)+%%b
- if not defined STS (
- goto :set_crop
- )
- if not defined ETS (
- set ETS=%duration%
- )
- if defined STS (
- set duration=%ETS%-%STS%
- )
- :set_crop
- set /p crop_v="Crop video? (y/N): "
- if not defined crop_v (
- goto :set_fps
- )
- if /I "%crop_v%"=="n" (
- goto :set_fps
- )
- if /I "%crop_v%"=="y" (
- goto :set_crop_pos
- )
- if defined crop_v (
- goto :set_crop
- )
- :set_crop_pos
- set /p start_pos="Starting position coordenates (x:y): "
- if not defined start_pos (
- goto :set_crop_pos
- )
- :set_crop_area
- set /p crop_area="Crop area size (w:h): "
- if not defined crop_area (
- goto :set_crop_area
- )
- set crop=-filter:v crop=%crop_area%:%start_pos%
- :set_fps
- set /p fps="Framerate (default=original framerate): "
- if defined fps (
- set ofps=%fps%
- set fps=-r %fps% -vsync cfr
- )
- :create_webm
- set /a br=((3000000/%duration%)*8)/(%ofps%000/30)
- if not exist %~dp0output (
- mkdir %~dp0output
- )
- "%~dp0ffmpeg.exe" -i "%~1" -c:v %codec% -pass 1 -b:v %br%K %scale% %crop% -threads 4 -an -sn %fps% %ss% %to% -f webm -y nul
- "%~dp0ffmpeg.exe" -i "%~1" -c:v %codec% -pass 2 -b:v %br%K %scale% %crop% -threads 4 -an -sn %fps% %ss% %to% -f webm -y "%~dp0output\%~n1.webm"
- del /q "%~p1\ffmpeg2pass-0.log"
Advertisement
Add Comment
Please, Sign In to add comment