Advertisement
Guest User

ffmpeg convert to gif

a guest
Jan 16th, 2024
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 2.59 KB | Source Code | 0 0
  1. chcp 65001
  2. echo off
  3. cls
  4.  
  5. set INPUT=C:\any_video.mp4
  6.  
  7. rem • имя конечного файла myfile без ".gif", можно с указанием пути C:\mydir\myfile
  8. set OUTPUTNAME=my_gif_file
  9.  
  10. rem • начало в (format 00:00:00.000)
  11. set START=00:08:48.000
  12.  
  13. rem • длительность (format 00:00:00.000)
  14. set LENGTH=00:00:03.100
  15.  
  16. rem • кол-во цветов: 1-256
  17. set COLORS=64
  18.  
  19. rem • алгоритмы сглаживания границ шумом
  20. rem atkinson
  21. rem bayer:bayer_scale=0
  22. rem bayer:bayer_scale=1
  23. rem bayer:bayer_scale=2
  24. rem bayer:bayer_scale=3
  25. rem bayer:bayer_scale=4
  26. rem bayer:bayer_scale=5
  27. rem burkes
  28. rem floyd_steinberg
  29. rem sierra2
  30. rem sierra2_4a
  31. rem none
  32. set DITHER=bayer:bayer_scale=2
  33.  
  34. rem • if enabled - only the changing rectangle will be reprocessed
  35. set DIFF=:diff_mode=rectangle
  36.  
  37. set FILTER= -filter_complex "
  38.     rem • fps
  39.     set FILTER=%FILTER%fps=10,
  40.  
  41.     rem • crop inputs: iw, ih, ow, oh
  42.     rem set FILTER=%FILTER%crop=w=640:h=480:x=1146:y=24,
  43.  
  44.     rem • scale filters: "lanczos" for gradients, "sinc" for complex images with small details
  45.     rem set FILTER=%FILTER%scale=1280:-1:flags=lanczos+accurate_rnd,
  46.  
  47.     set FILTER=%FILTER%split[a][b];
  48.     set FILTER=%FILTER%[a]palettegen=%COLORS%:reserve_transparent=0[p];
  49.     set FILTER=%FILTER%[b][p]paletteuse=%DITHER%%DIFF%
  50. set FILTER=%FILTER%"
  51.  
  52. rem • число повторений: -1 = 1 раз; 0 = бесконечно; 1 = 2 раза; 2 = 3 раза...
  53. set LOOP=0
  54.  
  55. rem ====== КОНЕЦ НАСТРОЕК ======
  56.  
  57. if exist "%INPUT%" (
  58.     CALL :get_source "%INPUT%"
  59. ) else (
  60.     echo Error: input file not found.
  61.     pause
  62.     exit 0
  63. )
  64. :get_source
  65.     set ATTR=%~a1
  66.     set DIRATTR=%ATTR:~0,1%
  67.     if /I "%DIRATTR%" NEQ "d" set SOURCEDIR=%~dp1
  68.     if /I "%DIRATTR%" NEQ "d" set SOURCEFILE=%~n1
  69.     set INPUT= -i "%INPUT%"
  70. :get_source_end
  71.  
  72. if not "%OUTPUTNAME%"=="" (
  73.     CALL :get_target %OUTPUTNAME%
  74. ) else (
  75.     set OUTPUT= "%SOURCEDIR%%~n1 - ffmpeg.gif"
  76.     GOTO:get_target_end
  77. )
  78. :get_target
  79.     set TARGETDIR=%~dp1
  80.     if /I "%TARGETDIR%"=="%~dp0" (
  81.         set OUTPUT= "%SOURCEDIR%%~n1.gif"
  82.     ) else (
  83.         set OUTPUT= "%TARGETDIR%%~n1.gif"
  84.     )
  85. :get_target_end
  86.  
  87. if not "%START%"=="" set START= -ss %START%
  88. if not "%LENGTH%"=="" set LENGTH= -t %LENGTH%
  89. set LOOP= -loop %LOOP%
  90.  
  91. set COMMAND=..\ffmpeg%START%%LENGTH%%INPUT%%FILTER%%LOOP%%OUTPUT% -y
  92.  
  93. echo %COMMAND%
  94. echo.
  95. %COMMAND%
  96.  
  97. echo.
  98. echo. [1] Открыть конечный файл
  99. echo. [2] Выход
  100. echo.
  101. choice /C:12 /N /M "Введите выбор: "
  102. if errorlevel 2 exit 0
  103. if errorlevel 1 (
  104.     start "" %OUTPUT%
  105.     exit 0
  106. )
  107. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement