如果你的字幕文件名是"嗨,y' all.srt",你如何正确地为FFmpeg逃避这个?逗号的反复无效,但无论我尝试什么技巧,我都无法获得引用!
$ ffmpeg -vf subtitles="Hi\, y\\\'all.srt" -t 1 -f null -
ffmpeg version 3.3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.1.0 (clang-802.0.42)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-libass --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma --enable-vda
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
[Parsed_subtitles_0 @ 0x7fba7af36080] Shaper: FriBidi 0.19.7 (SIMPLE) HarfBuzz-ng 1.4.8 (COMPLEX)
[Parsed_subtitles_0 @ 0x7fba7af36080] Unable to open Hi, yall.srt
[AVFilterGraph @ 0x7fba7ad05d60] Error initializing filter 'subtitles' with args 'Hi, y\all.srt'
Error reinitializing filters!
Failed to inject frame into filter network: No such file or directory
Error while processing the decoded data for stream #0:0
Conversion failed!
答案 0 :(得分:0)
在Windows 7上,这有效:
subtitles="Hi\, y\\\'all.srt"
答案 1 :(得分:0)
我知道这是一个老问题,但我想在这里发布答案,因为我遇到了类似的问题并找到了解决方法。这是在 Windows 8.1 中测试过的。
解决方法是首先使用 ffmpeg 喜欢的名称创建指向文件的符号链接,然后改用该名称。
例如
mklink input.mkv "my file with [strange] characters.mkv"
然后你可以像这样将它与 ffmpeg 一起使用:
ffmpeg -i input.mkv -vf subtitles=input.mkv -y output.mp4
这也适用于 .srt 文件。
ffmpeg 似乎存在一个错误,如果您在字幕过滤器中使用包含特殊字符的文件,则 ffmpeg 将找不到该文件。我有一组我想刻录字幕的文件,但它们的文件名中都有特殊字符(方括号)。我可以重命名我的所有文件,并删除特殊字符,但这似乎很痛苦,我宁愿找到一种不关心源文件如何命名的方法。我能找到的最好的解决方法是只为文件本身创建一个符号链接,并在符号链接上调用 ffmpeg。如果我要迭代许多文件,我需要做的就是将符号链接更改为下一个文件。