Advertisement
Guest User

Untitled

a guest
Sep 20th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. @echo off
  2.  
  3. :: Necessary for some loop and branching operations ::
  4. setlocal enabledelayedexpansion
  5. :: Max 4chan file size for webm's, slightly reduced because ffmpeg averages the bitrate and it can become slightly bigger than the max size, even with perfect calculation
  6. set max_file_size=22000
  7.  
  8. :: Check if script was started with a proper parameter ::
  9. if "%~1" == "" (
  10. echo This script needs to be run by dragging and dropping a video file on it.
  11. echo It cannot do anything by itself.
  12. pause
  13. goto :EOF
  14. )
  15.  
  16. :: Hello user ::
  17. echo 4chan webm maker
  18. echo by Cephei
  19.  
  20. :: Time for some setup ::
  21. cd /d "%~dp0"
  22.  
  23. :: Ask user how big the webm should be ::
  24. echo Please enter webm render resolution.
  25. echo Example: 720 for 720p.
  26. echo Default: Source video resolution.
  27. set /p resolution="Enter: " %=%
  28. if not "%resolution%" == "" (
  29. set resolutionset=-vf scale=-1:%resolution%
  30. )
  31. echo.
  32.  
  33. :: Ask user where to start webm rendering in source video ::
  34. echo Please enter webm rendering offset in SECONDS.
  35. echo Example: 31
  36. echo Default: Start of source video.
  37. set /p start="Enter: " %=%
  38. if not "%start%" == "" (
  39. set startset=-ss %start%
  40. )
  41. echo.
  42.  
  43. :: Ask user for length of rendering ::
  44. echo Please enter webm rendering length in SECONDS.
  45. echo Example: 15
  46. echo Default: Entire source video.
  47. set /p length="Enter: " %=%
  48. if not "%length%" == "" (
  49. set lengthset=-t %length%
  50. ) else (
  51. ffmpeg.exe -i %1 2> webm.tmp
  52. for /f "tokens=1,2,3,4,5,6 delims=:., " %%i in (webm.tmp) do (
  53. if "%%i"=="Duration" call :calculatelength %%j %%k %%l %%m
  54. )
  55. del webm.tmp
  56. echo Using source video length: !length! seconds
  57. )
  58. echo.
  59.  
  60. :: Find bitrate that maxes out max filesize on 4chan, defined above ::
  61. set /a bitrate=8*%max_file_size%/%length%
  62. echo Target bitrate: %bitrate%
  63.  
  64. :: Two pass encoding because reasons ::
  65. :: ffmpeg.exe -i "%~1" -c:v libvpx -b:v %bitrate%K %resolutionset% %startset% %lengthset% -sn -threads 0 -f webm -pass 1 -y NUL
  66. :: ffmpeg.exe -i "%~1" -c:v libvpx -b:v %bitrate%K %resolutionset% %startset% %lengthset% -sn -threads 0 -y "%~n1.webm"
  67.  
  68. ffmpeg.exe %startset% -i "%~1" -codec:v libx264 -b:v %bitrate%K %resolutionset% %lengthset% -sn -threads 0 -y "%~n1.mp4"
  69.  
  70. :: del ffmpeg2pass-0.log
  71. goto :EOF
  72.  
  73. :: Helper function to calculate length of video ::
  74. :calculatelength
  75. for /f "tokens=* delims=0" %%a in ("%3") do set /a s=%%a
  76. for /f "tokens=* delims=0" %%a in ("%2") do set /a s=s+%%a*60
  77. for /f "tokens=* delims=0" %%a in ("%1") do set /a s=s+%%a*60*60
  78. set /a length=s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement