C# 无法使用C中的进程运行SoX#

C# 无法使用C中的进程运行SoX#,c#,processstartinfo,C#,Processstartinfo,我正在尝试使用以下命令将MP3文件转换为GSM编码的WAV 执行此操作的C#代码是: Console.WriteLine(Cfg.SoxPath); // bin/sox.exe Console.WriteLine(args); // A rather long argument var startInfo = new ProcessStartInfo(); startInfo.FileName = Cfg.SoxPath; startInfo.Arguments = args; startIn

我正在尝试使用以下命令将MP3文件转换为GSM编码的WAV

执行此操作的C#代码是:

Console.WriteLine(Cfg.SoxPath); // bin/sox.exe
Console.WriteLine(args); // A rather long argument
var startInfo = new ProcessStartInfo();
startInfo.FileName = Cfg.SoxPath;
startInfo.Arguments = args;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = false;

using (Process soxProc = Process.Start(startInfo))
{
    soxProc.WaitForExit();
}
代码的输出为:

bin\sox.exe  
"D:\VoiceRecorder Soundfiles Storage\MP3 Storage\2012-12-05\227\1\20121205_203436_2103c60a0000134850bfa1bd2c99_8075598.mp3" -c 1 -r 8000 -e gsm-full-rate "temp\227_20120901\SW120006_349990195665213_040154700_20121205203436_20.wav"  
bin\sox.exe FAIL formats: can't open input file `8000': No such file or directory
是什么导致命令失败

需要考虑的事情

  • 直接从cmd提示符执行命令时,该命令运行良好
  • 参数(
    -c1-r8000-e gsm全速率
    )从sql server获取
  • 对参数的微小更改(例如,将
    -e
    替换为
    --编码
    )可能会更改错误消息
  • 尝试了.NET3.0和4.0
  • 错误消息甚至包含了不属于参数的字符(
    无法打开输入文件“āg”
  • 相同的参数总是导致相同的错误
我将“中间”参数更改为:

即使是相同的论点,它也开始起作用,只是有点混乱。
我仍然不知道为什么它不能在.NET中运行,而只能在这些编辑之前从命令行中运行

但现在它可以工作了。

我将“中间”参数更改为:

即使是相同的论点,它也开始起作用,只是有点混乱。
我仍然不知道为什么它不能在.NET中运行,而只能在这些编辑之前从命令行中运行


但现在它起作用了。

@leppie单引号恐怕也产生了同样的错误。值得try@leppie单引号恐怕也会产生同样的错误。值得一试
-r 8k -e gsm-full-rate -c 1