Raspberrypi-樹莓派可以做很多事情,之前我也曾經用樹莓派製作一個可以播放internet radio的網路播放器,後來也陸陸續續用樹莓派製作Volumio或是PiCorePlayer這種NAA(?),也就是把電腦中的音訊訊號送至樹莓派,樹梅派在接受到電腦音訊訊號後,就會用自身的音效卡播放我電腦中的音樂。會這樣做主要是因為我的電腦是放在臥室,可是音響是放在客廳,為了可以把我電腦中的高音質音樂在樹莓派播放,就學習了使用上述方式,用客廳裡較好的音響來聽音樂。
這一次小弟的數位無線電視棒似乎壞掉了,所以就在網路搜尋相同類型的電視棒。但是一查之後,萬萬沒想到,這類型的電視棒除了可以看數位電視之外,居然還可以用來接收廣播。十幾年前,手機是可以聽無線廣播(非網路廣播)的,但是因為各家手機製造商為了要塞入更多的手機元件,就把一些例如耳機孔還有廣播的功能都拿掉了。如今,小弟看到網路論壇的資料之後,就決定用家裡的電視棒+樹莓派+天線,來接收並用網路的方式來收聽傳統的廣播電台,達成手機也可以聽傳統FM。
小弟在網路上找到了rtl_fm_streamer這個在Github上的專案,只要在安裝完成之後,在樹莓派的終端機頁面輸入rtl_fm_streamer然後按enter,基本上你的廣播電台收音機的server就啟動了。然後你再用手機的VLC app,網址列輸入”你的樹莓派的ip:2346/100700000/0″就可以聽電台了(前面是以ICRT FM 100.7為例,如果是中廣流行網就是輸入103300000,/0則是代表MONO,若要聽Stereo就打/1)。
不過rtl_fm_streamer也有缺點,除了一次只能連接一個裝置之外,rtl_fm_streamer可以調的參數也比較少。另外,重要的是,rtl_fm_streamer有些播放器居然沒辦法用或是播放,再加上我在Github安裝時,明明完全按照Github的指示安裝,結果完全不能動作。後來就只好一直把error code貼在gemini上,靠著gemini硬是安裝完成了。但是,rtl_fm_streamer無法解決客廳中的播放器無法播放的問題,因此我腦筋就動到了另一個方案,也就是用安裝 SDR 驅動、音訊編碼器 以及 Web 伺服器的方案。
1. 需安裝的套件
請在終端機執行以下指令:
# 更新套件清單
sudo apt update
# 1. 安裝 RTL-SDR 工具 (提供 rtl_fm)
sudo apt install rtl-sdr
# 2. 安裝 FFmpeg (負責轉碼成 MP3 並切片成 HLS)
sudo apt install ffmpeg
# 3. 安裝 Nginx (作為 Web 伺服器,讓 Plex 能透過 HTTP 讀取 .m3u8)
sudo apt install nginx
2.實施案例:架設一個「飛碟聯播網 (103.9MHz)」串流站(建立一個HTML簡易網站供串流使用)
第一步:準備 HLS 輸出目錄
Nginx 預設的網頁根目錄在 /var/www/html。我們在那裡建立一個專屬資料夾並給予寫入權限。
sudo mkdir -p /var/www/html/radio
sudo chmod 777 /var/www/html/radio
第二步:排除 SDR 驅動衝突(重要!)
Linux 預設會把 SDR 當成電視卡,必須禁用它才能給 rtl_fm 使用。
# 建立黑名單檔案
echo "blacklist dvb_usb_rtl2832u" | sudo tee /etc/modprobe.d/blacklist-rtl.conf
# 重新拔插 SDR 或是重新開機
第三步:執行指令(啟動廣播站)
我們將頻率改為 103.9(範例),並讓它在背景執行:
rtl_fm -f 103.9M -M wfm -s 170k -A fast -r 32k - | \
ffmpeg -f s16le -ar 32k -ac 1 -i - \
-codec:a libmp3lame -b:a 128k \
-f hls -hls_time 4 -hls_list_size 5 -hls_flags delete_segments \
/var/www/html/radio/index.m3u8
第四步:在播放器中設定
在網址列輸入
http://你的樹莓派的IP/radio/index.m3u8
沒有問題的話就可以聽了。
雖然這個方法比較複雜,但是他可以確保絕大多數的電腦或播放器可以播放。另外,更重要的是,因為我們是把音檔分切存放在HTML的網站,所以就不會有只能單一連線的問題,我有曾經同時用我客廳的播放器以及手機同時播放,經本上都不會有問題。反觀rtl_fm_streamer就只能建立單一連線,沒有辦法兩台以上同時播放。此外,我也深深覺得,ffmpeg和nginx都是相當老牌、功能齊全而且穩定的程式,選擇這個方案反而遇到的問題比較少,所以就推薦大家安裝SDR 驅動(RTL-SDR)、音訊編碼器(ffmpeg) 以及 Web 伺服器(Nginx)的方案囉。
延伸閱讀:
TVHeadend-用Raspberry Pi搭建無線數位電視Server
濱線露店-台灣現貨 DVB-T SDR 數位電視棒 RTL2832U R820T2 DMR ADS-B 附贈安裝教學步驟
AlbrechtL/rtl_fm_streamer(Github專案)
另外,美國購物代運可參考:
https://a1253247.blogspot.com/p/hopshopgo-vs-spexeshop.html
對板球有興趣的可參考:
https://a1253247.blogspot.com/2022/05/cricket-line-written-by-admin-24-10.html
對生活飲食有興趣,可參考:
發佈留言