ffmpeg绝对路径错误

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,它不起作用!

我也试过:

  • "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
Run Code Online (Sandbox Code Playgroud)

我能做什么?

战略D

(我英语不太好,抱歉)

Ana*_*man 5

根据此错误报告,您看到的错误是字幕过滤器的问题。

在 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)