是否存在缩进 ffmpeg 批处理脚本的其他方法?

Does exists other way of indenting ffmpeg batch script?

除了使用时间变量 %= =% 之外,如何在批处理脚本中缩进代码? 这是唯一适用于缩进的代码。

::2020-12-31 10:43:40
@ECHO OFF
::SET VIDEO="E:\Vídeos\test.mp4"
SET VIDEO=%1
SET /P TITULO=Introduzca el título del vídeo: 
ffmpeg ^
    -y ^
    -loglevel verbose ^
    -i %VIDEO% ^
    -vf ^
          scale=^
%=          =%width=-2:^
%=          =%height=360,^
%=      =%drawtext=^
%=          =%fontfile='C\:/Windows/Fonts/impact.ttf':^
%=          =%text=%TITULO%:^
%=          =%fontcolor=white:^
%=          =%borderw=1:^
%=          =%fontsize=18:^
%=          =%alpha=0.99:^
%=          =%x=(w-tw)/2:^
%=          =%y=th/4:^
%=          =%expansion=none,^
%=      =%drawtext=^
%=          =%fontfile='C\:/Windows/Fonts/arial.ttf':^
%=          =%text='WATERMARK':^
%=          =%fontcolor=white:^
%=          =%borderw=1:^
%=          =%fontsize=18:^
%=          =%alpha=0.60:^
%=          =%x=w-tw-10:^
%=          =%y=h-th-10:^
%=          =%expansion=none^
    -map 0:v ^
    -map 0:a? ^
    -c:v h264 ^
    -crf 30 ^
    -c:a aac ^
    -q:a 1 ^
    -ac 1 ^
    %VIDEO:~0,-5%_WATERMARK.mp4

如果我尝试在“-vf”部分使用空格或制表符,ffmpeg 会将它们解释为过滤器的结尾和输出文件参数的开头。

您应该引用 video-filter 表达式。那么你不需要那些时间变量:

ffmpeg^
  -y^
  -loglevel verbose^
  -i %VIDEO%^
  -vf ^"^
    scale=^
      width=-2:^
      height=360,^
    drawtext=^
      fontfile='C\:/Windows/Fonts/impact.ttf':^
      text='%TITULO%':^
      fontcolor=white:^
      borderw=1:^
      fontsize=18:^
      alpha=0.99:^
      x=(w-tw)/2:^
      y=th/4:^
      expansion=none,^
    drawtext=^
      fontfile='C\:/Windows/Fonts/arial.ttf':^
      text='WATERMARK':^
      fontcolor=white:^
      borderw=1:^
      fontsize=18:^
      alpha=0.60:^
      x=w-tw-10:^
      y=h-th-10:^
      expansion=none^
  "^
  -map 0:v^
  [...]

是的,开头是^",结尾是"

另请在表达式中引用“TITULO”变量:'%TITULO%'.

最后,作为旁注;编码。
您的批处理脚本很有可能被编码为 ANSI (Windows-1252).
这意味着您的 Introduzca el título del vídeo 将显示为 Introduzca el tφtulo del vφdeo

ANSI 编码 í (ALT+0237) 作为 OEM 编码 φ (ALT+237)。

为了获得 OEM 编码 í (ALT+161),您必须输入 ANSI 编码 ¡ (ALT+0161)。
所以 Introduzca el t¡tulo del v¡deo 会变成 Introduzca el título del vídeo.

This website has a nice chart where you can look it up, but charmap 也有帮助。
如果您突出显示 í,那么您将看到下面提到的 U+00ED (0xA1): Latin Small Letter I With Acute Keystroke: Alt+0237

ED(十六进制)= 237(十进制)和 A1(十六进制)= 161(十进制)。

如果您的批处理脚本编码为 OEM (CP437),您可以忽略它。