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

标签 c# command-line ffmpeg

我正在使用 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/

相关文章:

c# - TestScheduler 在订阅的属性上没有像预期的那样工作(w throttle)

c# - 如何修复空格的 UTF 编码?

python - 如何减小从 Pydub 导出的 .wav 文件的大小

c# - 计算实体的频率和新近度的算法?

C# 相等运算符覆盖(== 和 !=)

linux - 如何从 Linux 命令行确定 LCD 显示器是否打开

windows - 使用 `^` 转义 Windows 批处理文件中的行尾字符在某些行上不起作用?

java - 如何获取多个文件

android - FFmpeg Android 连接。 "–safe 0"是无效参数

android - 通过 ffmpeg 进行视频修剪两次崩溃