我在shell脚本中使用以下内容:
##For ease of understanding I'll declare the $1 variable here even though it's actually arriving remotely via an ssh2_exec command.
$1="my.mp3"
lame --decode /root/incoming/shows/$1 - | /root/incoming/stereo_tool_cmd_64 - - -s /usr/incoming/settings/setting.sts | lame -b 128 - /root/incoming/processing/$1;
那发生了什么? LAME将mp3文件解码为wav,然后通过管道输入STEREO TOOL(音频处理脚本),然后返回LAME,将其重新编码为mp3文件,并将结果写入不同的目录。
这一切都很好但我想在这个管道中使用SOX来删除文件开头和结尾的所有静音,同时在它击中STEREO TOOL之前它处于解码的wav状态。
我已经尝试了这个但它不起作用(SOX打破了管道):
lame --decode /root/incoming/shows/$1 - | sox silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse | /root/incoming/stereo_tool_cmd_64 - - -s /usr/incoming/settings/setting.sts | lame -b 128 - /root/incoming/processing/$1;
我知道使用SOX的标准方法是:
sox input.wav output.wav silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse;
但我不能在这里声明wav文件,因为它是由LAME动态创建的。
我尝试做的事情是不可能的,还是有一个解决方案可以让我这样做?