我正在使用 C# 的 ProcessStartInfo 运行 ffmpeg,我必须将文件从一种格式转换为另一种格式。其中没有空格的文件工作正常,但有空格的文件卡在错误中。我认为这是由于文件名中的空格。
例如
startInfo.Arguments = "-i " + filename+ ".mov-q:a 0 -map a " + filename+ ".mp4";
文件名是在运行时通过解析目录导出的。
典型的容易出错的文件名,例如=“这是我的文件”
这怎么能解决。
最佳答案
您需要将文件名括在引号中:
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""";
我认为它更具可读性(但这可能是一个品味问题)。
关于c# - ProcessStartInfo C#中文件名(不是路径)中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38454929/