如果你回答我就给你一块饼干!
我正在使用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
...