Sakitoshi

new webm

Jun 3rd, 2023 (edited)
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 4.54 KB | None | 0 0
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. if not exist "%~dp0ffmpeg.exe" (
  4.     echo Error: ffmpeg.exe not found.
  5.     echo Put ffmpeg.exe alongside this file.
  6.     pause
  7.     goto :eof
  8. )
  9. if "%~1"=="" (
  10.     echo Drag a video or gif file into this file.
  11.     pause
  12.     goto :eof
  13. )
  14. if not "%~2"=="" (
  15.     echo Please drag only one file at a time.
  16.     pause
  17.     goto :eof
  18. )
  19. 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)
  20. 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)
  21. set /p codec="Select VP8 (8) or VP9 (9) (default=8): "
  22. if not defined codec (
  23.     set codec=8
  24. )
  25. if not "%codec%"=="8" if not "%codec%"=="9" (
  26.     cls
  27.     echo Please enter a valid value.
  28.     goto :set_quality
  29. )
  30. if "%codec%"=="8" (
  31.     set codec=libvpx
  32. )
  33. if "%codec%"=="9" (
  34.     set codec=libvpx-vp9
  35. )
  36. set /p size="Resize video? 1080p (6), 720p (5), 540p (4), 480p (3), 360p (2), 240p (1), custom size (0) or not (N): "
  37. if not defined size (
  38.     goto :set_cut
  39. )
  40. if /I "%size%"=="n" (
  41.     goto :set_cut
  42. )
  43. if "%size%"=="0" (
  44.     goto :set_custom_size
  45. )
  46. if "%size%"=="1" (
  47.     set scale=scale=-2:240:flags=lanczos
  48.     goto :set_cut
  49. )
  50. if "%size%"=="2" (
  51.     set scale=scale=-2:360:flags=lanczos
  52.     goto :set_cut
  53. )
  54. if "%size%"=="3" (
  55.     set scale=scale=-2:480:flags=lanczos
  56.     goto :set_cut
  57. )
  58. if "%size%"=="4" (
  59.     set scale=scale=-2:540:flags=lanczos
  60.     goto :set_cut
  61. )
  62. if "%size%"=="5" (
  63.     set scale=scale=-2:720:flags=lanczos
  64.     goto :set_cut
  65. )
  66. if "%size%"=="6" (
  67.     set scale=scale=-2:1080:flags=lanczos
  68.     goto :set_cut
  69. )
  70. if defined size (
  71.     echo Please enter a valid value.
  72.     goto :set_size
  73. )
  74. :set_custom_size
  75. set /p custom_width="Enter width: "
  76. if not defined custom_width (
  77.     set custom_width=-2
  78. )
  79. set /p custom_height="Enter height: "
  80. if not defined custom_height (
  81.     set custom_height=-2
  82. )
  83. set scale=scale=%custom_width%:%custom_height%:flags=lanczos,setsar=1/1
  84. :set_cut
  85. if defined scale (
  86.     set scale=-vf %scale%
  87.     )
  88. set /p cut="Cut video? (y/N): "
  89. if not defined cut (
  90.     goto :set_crop
  91. )
  92. if /I "%cut%"=="n" (
  93.     goto :set_crop
  94. )
  95. if /I "%cut%"=="y" (
  96.     goto :set_start_time
  97. )
  98. if defined cut (
  99.     goto :set_cut
  100. )
  101. :set_start_time
  102. set /p start_time="Starting time (mm:ss.sss): "
  103. if not defined start_time (
  104.     goto :set_end_time
  105. )
  106. if defined start_time (
  107.     set ss=-ss %start_time%
  108.     set _ST2=%start_time:~1,1%
  109.     set _ST3=%start_time:~2,1%
  110.     set _ST=0
  111.     if "!_ST2!"==":" set _ST=1
  112.     if "!_ST3!"==":" set _ST=1
  113.     if "!_ST!"=="0" set start_time=00:!start_time!
  114. )
  115. if defined start_time for /f "tokens=1,2 delims=:." %%a in ("%start_time%") do set /a STS=(%%a*60)+%%b
  116. :set_end_time
  117. set /p end_time="Ending time (mm:ss.sss): "
  118. if not defined end_time (
  119.     goto :set_crop
  120. )
  121. if defined end_time (
  122.     set to=-to %end_time%
  123.     set _ST2=%end_time:~1,1%
  124.     set _ST3=%end_time:~2,1%
  125.     set _ET=0
  126.     if "!_ET2!"==":" set _ET=1
  127.     if "!_ET3!"==":" set _ET=1
  128.     if "!_ET!"=="0" set end_time=00:!end_time!
  129. )
  130. if defined end_time for /f "tokens=1,2 delims=:." %%a in ("%end_time%") do set /a ETS=(%%a*60)+%%b
  131. if not defined STS (
  132.     goto :set_crop
  133. )
  134. if not defined ETS (
  135.     set ETS=%duration%
  136. )
  137. if defined STS (
  138.     set duration=%ETS%-%STS%
  139. )
  140. :set_crop
  141. set /p crop_v="Crop video? (y/N): "
  142. if not defined crop_v (
  143.     goto :set_fps
  144. )
  145. if /I "%crop_v%"=="n" (
  146.     goto :set_fps
  147. )
  148. if /I "%crop_v%"=="y" (
  149.     goto :set_crop_pos
  150. )
  151. if defined crop_v (
  152.     goto :set_crop
  153. )
  154. :set_crop_pos
  155. set /p start_pos="Starting position coordenates (x:y): "
  156. if not defined start_pos (
  157.     goto :set_crop_pos
  158. )
  159. :set_crop_area
  160. set /p crop_area="Crop area size (w:h): "
  161. if not defined crop_area (
  162.     goto :set_crop_area
  163. )
  164. set crop=-filter:v crop=%crop_area%:%start_pos%
  165. :set_fps
  166. set /p fps="Framerate (default=original framerate): "
  167. if defined fps (
  168.     set ofps=%fps%
  169.     set fps=-r %fps% -vsync cfr
  170. )
  171. :create_webm
  172. set /a br=((3000000/%duration%)*8)/(%ofps%000/30)
  173. if not exist %~dp0output (
  174.     mkdir %~dp0output
  175. )
  176. "%~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
  177. "%~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"
  178. del /q "%~p1\ffmpeg2pass-0.log"
Advertisement
Add Comment
Please, Sign In to add comment