1

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

コマンドが失敗する原因は何ですか?

考慮事項

  • コマンドプロンプトから直接実行すると、コマンドは完全に実行されます
  • 引数 ( -c 1 -r 8000 -e gsm-full-rate) は SQL サーバーからフェッチされます
  • 引数を少し変更すると (例: に置き換える) -e--encodingエラー メッセージが変わる場合があります。
  • .NET 3.0 および 4.0 を試した
  • エラー メッセージには、引数の一部ではない文字も含まれています ( can't open input file 'ûg')
  • 同じ引数は常に同じエラーになります
4

1 に答える 1