如何使用 sox 即时重新采样音频

如何使用 sox 即时重新采样音频

如果你回答我就给你一块饼干!

我正在使用sox将 MP3 文件即时转换为 WAV 格式pifm。唯一的问题是,我正在对整个 MP3 目录执行此操作,并且由于并非所有目录都具有相同的采样率,因此命令失败。

有没有办法重新采样音频文件,将其传输到即时转换为 wav,然后通过管道将其输入pifm?

我当前的命令是:

sox -t mp3 /home/pi/Desktop/music/*.mp3 -t wav - |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

但这给了我:

sox WARN mp3-util: MAD lost sync
sox WARN mp3-util: MAD lost sync
sox FAIL sox: Input files must have the same sample-rate

所以我想让 sox 即时重新采样每个文件,然后将其通过管道传输到 sox 中以即时转换。

另外,如果我尝试:

sox -r 44100-t mp3 /home/pi/Desktop/music/*.mp3 -t wav - |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

它仍然不起作用,因为该目录中文件的采样率不相同。

答案1

谢谢@dirkt和@Thor

@dirkt 回答:

sox -t mp3 /home/pi/Desktop/music/*.mp3 -t wav -r 44100 - | sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

@Thor 回答:

for tune in *.mp3; do 
  sox $tune -t wav - rate 44100
done |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

两者都有效!

答案2

这是您可以使用的一种解决方法(假设您的文件命名合理):

for tune in *.mp3; do 
  sox $tune -t wav - rate 44100
done |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM
...

相关内容