2012-12-06 76 views
0

我想要一個MP3文件轉換爲使用SoX失敗在C#

的C#代碼來執行此GSM編碼的WAV用進程來運行SOX是:

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服務器取回
  • 小的改動的參數(例如,替換-e--encoding)可能會更改錯誤消息
  • 嘗試.NET 3.0和4.0
  • 錯誤消息甚至包括了字符不是參數的一部分(can't open input file 'ûg'
  • 相同的參數總是導致相同的錯誤
+0

嘗試單引號。 – leppie

+0

@leppie單引號產生了同樣的錯誤,我害怕。值得一試 – ANisus

回答

1

I「在...之間」改變的參數:

-r 8k -e gsm-full-rate -c 1 

它開始工作,即使它是相同的論點,只是稍微改變一下。
我仍然不知道爲什麼它不能在.NET中工作,但只能從命令行進行這些編輯。

但現在它的工作。