C# 无法使用C中的进程运行SoX#
我正在尝试使用以下命令将MP3文件转换为GSM编码的WAV 执行此操作的C#代码是: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
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提示符执行命令时,该命令运行良好
- 参数(
)从sql server获取-c1-r8000-e gsm全速率
- 对参数的微小更改(例如,将
替换为-e
)可能会更改错误消息--编码
- 尝试了.NET3.0和4.0
- 错误消息甚至包含了不属于参数的字符(
)无法打开输入文件“āg”
- 相同的参数总是导致相同的错误
我仍然不知道为什么它不能在.NET中运行,而只能在这些编辑之前从命令行中运行 但现在它可以工作了。我将“中间”参数更改为: 即使是相同的论点,它也开始起作用,只是有点混乱。
我仍然不知道为什么它不能在.NET中运行,而只能在这些编辑之前从命令行中运行
但现在它起作用了。@leppie单引号恐怕也产生了同样的错误。值得try@leppie单引号恐怕也会产生同样的错误。值得一试
-r 8k -e gsm-full-rate -c 1