我正在尝试使用SoX将 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 提示符执行时,该命令运行完美
- 参数 (
-c 1 -r 8000 -e gsm-full-rate
) 从 sql server 获取 - 对参数的微小更改(例如替换
-e
为--encoding
)可能会更改错误消息 - 尝试过 .NET 3.0 和 4.0
- 错误消息甚至包含不属于参数的字符 (
can't open input file 'ûg'
) - 相同的参数总是导致相同的错误