str*_*gaD 1 video path ffmpeg subtitles
我创建了一个自动运行 ffmpeg 代码行的程序,它适用于除一个之外的所有功能:如果我尝试绘制叠加一些字幕,则绝对路径有问题,如果我在桌面上打开的外壳中使用相同的代码它有效,但如果我写绝对路径,它就不起作用。
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
Run Code Online (Sandbox Code Playgroud)
如果我使用自己的绝对路径(“c:\users\home\desktop\input.mp4”)更改 ffmpeg、input.mp4、subs.srt、output.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
Run Code Online (Sandbox Code Playgroud)
我能做什么?
战略D
(我英语不太好,抱歉)
根据此错误报告,您看到的错误是字幕过滤器的问题。
在 Windows 上,为了让字幕过滤器使用绝对路径:
“每个特殊字符都需要转义 [...] 然后每个转义都需要重新转义”。
这实际上意味着您需要\\在冒号:(即\\:)之前\\\\代替单个反斜杠,\例如:
subtitles=C\\:\\\\users\\\\\\\\home\\\\desktop\\\\subs.srt
Run Code Online (Sandbox Code Playgroud)
为避免出现问题,字幕路径中也不应该有空格(引号对于没有空格的路径以一种方式或另一种方式无关紧要,因此没有必要)。
如果您遗漏了一个斜杠(例如\:vs.\\:或\\, \\\vs. \\\\)或在路径中包含空格,您将继续遇到问题。
请注意,此解决方案仅适用于字幕过滤器——您可以正常指定输入和输出文件的路径(例如c:\users\home\desktop\input.mp4)。
另请注意,如果路径包含空格,则您只需要引号,例如
c:\users\home\desktop\input.mp4 # no space in path
Run Code Online (Sandbox Code Playgroud)
对比
"c:\users\home\desk top\input.mp4" # space in path ("desk top")
Run Code Online (Sandbox Code Playgroud)
最后,使用您的原始命令并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
Run Code Online (Sandbox Code Playgroud)