Java的pad Sox错误

Java的pad Sox错误,java,cmd,sox,Java,Cmd,Sox,我正在尝试运行此sox命令,以使用以下命令混合来自程序的多个音频输入: String command = "sox C:/serverFolder/a1.wav -p pad 0 0 | sox - -m C:/serverFolder/a2.wav -p pad 10.0 0 | sox - -m C:/serverFolder/a3.wav -p pad 0 0 | sox - -m C:/serverFolder/a4.wav -p pad 20.0 0 | sox - -m -v 0

我正在尝试运行此sox命令,以使用以下命令混合来自程序的多个音频输入:

String command = "sox C:/serverFolder/a1.wav -p pad 0 0 | sox - -m C:/serverFolder/a2.wav -p pad 10.0 0 | sox - -m C:/serverFolder/a3.wav -p pad 0 0 | sox - -m C:/serverFolder/a4.wav -p pad 20.0 0 |  sox - -m -v 0 C:/serverFolder/blank.wav C:/serverFolder/audioFile.wav";
Process proc = Runtime.getRuntime().exec(command);
我明白了

如果我在cmd中运行此命令,它将正常运行。 我尝试了几种方法,如列表中建议的方法:

或者这里建议使用sox的绝对路径

由于代码在cmd中运行良好,我猜我从java发送的方式不好。
有什么想法吗?

您正在尝试让流程运行一个管道,这是一个shell构造。如果你想执行一个管道,你应该在能够执行管道的shell下运行你的命令,就像Windows的cmd一样,但或多或少也可以这样做。谢谢fvu,这是有意义的。我将命令更改为:
String[]command=new String[]{“cmd.exe”,“/c sox c:/serverFolder/a1.wav-p pad 0 | sox--m c:/serverFolder/a2.wav-p pad 10.0 | sox--m c:/serverFolder/a3.wav-p pad 0 | sox--m c:/serverFolder a4.wav-p pad 20.0 | sox--m-v 0c:/serverFolder blank.wav:/serverFolder
processproc=Runtime.getRuntime().exec(命令)和工作良好。谢谢你的时间!yw:)我可以建议你将你的解决方案作为答案发布,并接受它吗?这样,将来的访问者可以看到问题的有效解决方案。@fuv我计划这样做,但我发现即使命令运行良好并创建新文件,也不能按预期工作。@fuv我计划这样做,但我发现即使命令运行良好并创建新文件,也不能按预期工作。垫子坏了。音频从秒开始:a1-10SA2-20SA3-20SA4-20SA4-20s,其中pad是:a1.wav-p pad 0 a2.wav-p pad 10.0A3.wav-p pad 0 a4.wav-p pad 20.0有什么想法吗?我应该创建一个新问题吗??再次感谢
sox FAIL pad: usage: {length[@position]}