我创建了一个可以自动运行 ffmpeg 代码行的程序,它可以执行除一个功能之外的所有功能:如果我尝试叠加一些字幕,则绝对路径会出现问题,如果我在桌面上打开的 shell 中使用相同的代码,它可以工作,但如果我写下绝对路径,它就不起作用。
ffmpeg -i input.mp4 -filter_complex "subtitles=subs.srt:force_style='OutlineColour=&H80000000,BorderStyle=4,Outline=1,Shadow=0,MarginV=20,Fontsize=10,PrimaryColour=&H0000ff&'" output.mp4
如果我将 ffmpeg、input.mp4、subs.srt、output.mp4 更改为它们自己的绝对路径(“c:\users\home\desktop\input.mp4”),则不起作用!
我也尝试过:
- “c:\users\home\desktop\input.mp4”
- “c:/users/home/desktop/input.mp4”
- 'c:\users\home\desktop\input.mp4'
- ‘c:/users/home/desktop/input.mp4’
错误:
[subtitles @ 0000000002ab79c0] Unable to parse option value "UsersFamigliaDesktop569.srt" as image size
Last message repeated 1 times
[subtitles @ 0000000002ab79c0] Error setting option original_size to value UsersFamigliaDesktop569.srt.
[Parsed_subtitles_0 @ 0000000002ab78e0] Error applying options to the filter.
[AVFilterGraph @ 0000000002edcd20] Error initializing filter 'subtitles' with args 'C:UsersFamigliaDesktop569.srt:force_style=OutlineColour=&H80000000,BorderStyle=4,Outline=1,Shadow=0,MarginV=20,Fontsize=15,PrimaryColour=&H000000&'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
我能做些什么?
策略D
(我的英语说得不太好,抱歉)
答案1
根据此错误报告,您看到的错误是字幕过滤器的一个问题。
在 Windows 上,要使字幕过滤器能够使用绝对路径:
“每个特殊字符都需要转义 [...] 然后每个转义都需要重新转义”。
这实际上意味着您需要\\
在冒号:
(即\\:
)之前并\\\\
代替单个反斜杠\
,例如:
subtitles=C\\:\\\\users\\\\\\\\home\\\\desktop\\\\subs.srt
为了避免出现问题,字幕路径中也不应有空格(对于没有空格的路径,引号无关紧要,因此没有必要)。
如果您漏掉了一个斜线(例如\:
vs.\\:
或\\
, \\\
vs. \\\\
)或在路径中包含空格,那么您将继续遇到问题。
请注意,此解决方案仅适用于字幕过滤器——您可以正常指定输入和输出文件的路径(例如c:\users\home\desktop\input.mp4
)。
另请注意,仅当路径包含空格时才需要引号,例如
c:\users\home\desktop\input.mp4 # no space in path
对阵
"c:\users\home\desk top\input.mp4" # space in path ("desk top")
最后,使用原始命令并c:\users\home\desktop\
作为绝对路径将产生以下结果:
ffmpeg -i c:\users\home\desktop\input.mp4 -filter_complex "subtitles=c\\:\\\\users\\\\home\\\\desktop\\\\subs.srt:force_style='OutlineColour=&H80000000,BorderStyle=4,Outline=1,Shadow=0,MarginV=20,Fontsize=10,PrimaryColour=&H0000ff&'" c:\users\home\desktop\output.mp4