Linux

如何使用 sox 即時重新採樣音頻

  • June 18, 2021

如果你回答我就給你一塊餅乾!

我正在使用sox即時將 MP3 文件轉換為 WAV pifm。唯一的問題是,我正在對整個 MP3 目錄執行此操作,並且因為並非所有文件都具有相同的採樣率,所以命令失敗。

有沒有辦法重新採樣音頻文件,將其傳輸到 convert-to-wav-on-the-fly中,然後將其傳輸到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

它仍然不起作用,因為該目錄中文件的採樣率不一樣。

這是您可以使用的一種解決方法(假設您的文件命名合理):

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

謝謝@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

兩者都有效!

引用自:https://unix.stackexchange.com/questions/654608