我正在使用C#的ProcessStartInfo运行ffmpeg,我必须将文件从一种格式转换为另一种格式。那些没有空格的文件工作正常,但是那些有空格的文件卡在错误处。我认为这是由于文件名中的空格。 e.g
startInfo.Arguments = "-i " + filename+ ".mov-q:a 0 -map a " + filename+ ".mp4";
filename是在运行时通过解析目录派生的。 典型的容易出错的文件名,例如=“这是我的文件”
如何解决这个问题。
答案 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""";
我认为它更具可读性(但这可能是一种品味问题)。