是否存在缩进 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)
,您可以忽略它。
除了使用时间变量 %= =% 之外,如何在批处理脚本中缩进代码? 这是唯一适用于缩进的代码。
::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)
,您可以忽略它。