ProcessStartInfo中的文件名(不是路径)中的空格C#

时间:2016-07-19 09:45:22

标签: c# command-line ffmpeg

我正在使用C#的ProcessStartInfo运行ffmpeg,我必须将文件从一种格式转换为另一种格式。那些没有空格的文件工作正常,但是那些有空格的文件卡在错误处。我认为这是由于文件名中的空格。 e.g

  startInfo.Arguments = "-i " + filename+ ".mov-q:a 0 -map a " + filename+ ".mp4";

filename是在运行时通过解析目录派生的。 典型的容易出错的文件名,例如=“这是我的文件”

如何解决这个问题。

1 个答案:

答案 0 :(得分:3)

您需要将文件名括在引号中:

startInfo.Arguments = "-i \"" + filename+ ".mov\" -q:a 0 -map a \"" +
                      filename + ".mp4\"";

在C#引号中,字符串内部使用反斜杠("\"")或通过双引号(s = @"text ""quoted"" ...")逐字字符串进行转义。

考虑使用逐字字符串和C#6字符串插值:

startInfo.Arguments = $@"-i ""{filename}.mov"" -q:a 0 -map a ""{filename}.mp4""";

我认为它更具可读性(但这可能是一种品味问题)。