Advertisement
Guest User

dtf_hardsub

a guest
Oct 18th, 2022
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 2.60 KB | None | 0 0
  1. @echo off
  2.  
  3. set _input="___.mkv"
  4. set _subs="___.ass"
  5. set _begin=18:00.000
  6. set _end=18:09.500
  7.  
  8. call :hardsub_encode %_input% %_subs% %_begin% %_end%
  9. ::call :hardsub_encode %_input% "" %_begin% %_end%
  10. pause & exit /b
  11.  
  12.  
  13. :hardsub_encode
  14.    
  15.     set input="%~1"
  16.     set output="%~n1.cut.mp4"
  17.     set subs=%~2
  18.     set begin=%~3
  19.     set end=%~4
  20.    
  21.     if "%subs%" neq "" (
  22.        :: для обновления subs внутри блока
  23.         setlocal enabledelayedexpansion
  24.        :: экранирование для ffmpeg filtergraph
  25.         set subs=!subs:\=\\\\!
  26.         set subs=!subs:[=\[!
  27.         set subs=!subs:]=\]!
  28.         set subs=!subs::=\\:!
  29.         set vf_hardsub=subtitles=!subs!,
  30.     ) else (
  31.         set vf_hardsub=
  32.     )
  33.    :: масштабирование до 480p с сохранением отношения сторон и mod2
  34.     set vf_scale=scale=-2:480
  35.     set vf_params="%vf_hardsub%%vf_scale%"
  36.  
  37.     ffmpeg                      ^
  38.     ^%=== параметры, порядок которых не важен                                           =%
  39.         -y                      ^%= перезаписывать выходной файл не спрашивая           =%
  40.         -copyts                 ^%= для синхронизации сабов из -vf subtitles с видео    =%
  41.     ^%=== входные параметры (до -i)                                                     =%
  42.         -ss %begin%             ^
  43.         -to %end%               ^
  44.         -i %input%              ^
  45.     ^%=== выходные параметры (после -i)                                                 =%
  46.         -ss %begin%             ^%= сброс timestamp в выходном файле после -copyts,     =%
  47.                                 ^%=  copyts ss i ss - см. stackoverflow.com/a/59576487  =%
  48.         -map 0:v:0              ^%= оставить только видеодорожку (1-ю из 1-го файла)    =%
  49.         -pix_fmt yuv420p        ^%= force 8 bit; на случай, если исходник 10-12 бит     =%
  50.         -movflags +faststart    ^%= для контейнера mp4, полезно при онлайн-просмотре    =%
  51.         -vf %vf_params%         ^%= опционально хардсаб плюс масштабирование            =%
  52.                                 ^
  53.         -c:v libx264            ^
  54.         -profile:v main         ^
  55.         -preset:v veryslow      ^
  56.         -crf 23                 ^
  57.                                 ^
  58.         %output%
  59.  
  60.     exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement