是否可以提供输入和输出文件的绝对路径?

是否可以提供输入和输出文件的绝对路径?

我正在尝试对视频进行硬字幕处理,这是我使用的命令:

ffmpeg -i 文件'c:\Users\user1\Desktop\subtitle\2\pod1.mp4'-filter:v subtitles='c:\Users\user1\Desktop\subtitle\2\done.ass''c:\Users\user1\Desktop\subtitle\2\pod_result.mkv'

但我收到此错误:

'c:\Users\user1\Desktop\subtitle\2\pod1.mp4': Invalid argument

我已经完成了以下修改但仍然出现相同的错误:

  1. 使用正斜杠代替反斜杠

  2. 转义反斜杠(\)

  3. 在地址开头使用 C:\ 或 c:\

附言:我知道我可以将输入视频和字幕放在与 ffmpeg 相同的目录中(或任何具有 ffmpeg 相对路径的目录),并提供相对路径而不是绝对路径。但我需要知道是否可以将输入和输出地址作为绝对路径。

答案1

最后我通过反复试验找到了答案。正如问题中解释的那样,我想将 done.ass(字幕文件)硬字幕到视频中

字幕的绝对路径 = C:/Users/user1/Desktop/subtitle/2/done.ass

视频的绝对路径 = C:\Users\user1\Desktop\subtitle\2\pod1.mp4

结果视频的绝对路径 = C:\Users\sadegh\Desktop\subtitle\2\pod_result.mkv

现在对视频进行硬字幕的命令将是:

ffmpeg -i "C:\Users\sadegh\Desktop\subtitle\2\pod 1.mp4" -filter:v subtitles=\'C:/Users/sadegh/Desktop/subtitle/2/done.ass\' "C:\Users\sadegh\Desktop\subtitle\2\pod_result.mkv"

注意:字幕的绝对路径必须用斜杠分隔

注意:我必须将字幕文件的绝对路径放在单引号中,并且必须转义这些单引号(在 ' 字符前使用 \ 反斜杠)

答案2

在 Windows 上使用双引号字符,并且应该将整个参数包装在一起,而不仅仅是路径:

"subtitles=C:\somefilepath.txt"

您不能使用它'进行分组,因为它将被解释为参数/路径的一部分。

答案3

我能够在 Windows 11 下使用完整路径通过 ASS 过滤器处理 FFmpeg mp4 视频,方法如下:

ffmpeg -i "E:\2023\202308\20230712 - Bavarian Illuminati-r.mp4"  **-vf "ass=\\'E:\\\2023\\\202308\\\20230712 - Bavarian Illuminati-r.ASS\\'"**  "E:\2023\202308\20230712 - Bavarian Illuminati-rASS.mp4"

并以此方式将我的 ASS 字幕嵌入原始视频中。

因此,您需要使用'(反斜杠)转义的\(单引号)加上每条路径的两倍\。有点“扭曲”,但它有效!

请注意:仔细检查 *.ASS 字幕文件的文件名/路径中没有“,”(逗号),否则上面显示的转义解决方案将不起作用!

相关内容