ffmpeg concat 中的文件名引用

ffmpeg concat 中的文件名引用

我想使用 Concat 解复用器将文件与 ffmpeg 连接起来,如本文所述如何连接(结合、合并)媒体文件。但我的文件包含单引号(撇号)。所以我的 concat.list 如下所示:

file 'artist's song.mp3'
file 'artist's song 2 .mp3'

如您所见,文件名中间的撇号与 concat 文件的格式冲突。添加反斜杠没有帮助,因为 ffmpeg 会读取文件名并抱怨该文件不存在。作为附加详细信息,我在 Windows 7 下将 ffmpeg 与 cygwin 一起使用。

答案1

您需要将所有内容放在单引号中,并使用

'\''

所以,

foo'bar test.mp4

将被指定为:

file 'foo'\''bar test.mp4'

您可以将其想象为将字符串在第一对单引号结束的地方进行拆分,然后再继续:

'foo'   \'   'bar test.mp4'

这也解释了文档

引号字符 ' 本身不能被引用,因此您可能需要关闭引号并将其转义。

和这个错误报告

答案2

供程序员参考:

只需转义 ' 和 \ 并且不要尝试将输出括在单引号中。

public String escapePath(File file)
{
  String f = file.getAbsolutePath();
  f = f.replace("\\","\\\\").replace("'","\\'");
  assert(f.trim().equals(f)); // unlikely, but handle if you want
  return f;
}

相关内容