樹莓派FM廣播點歌系統


簡介

前段時間有人發貼說用樹莓派可以發射FM收音機信號, 於是便整來玩玩,發現效果還不錯,於是想擴充一下功能。

網上實現的FM發射功能是有局限性的:

  • 只能播放wav格式文件,並且wav文件必須是16 bit 22.5kHz Mono格式的。
  • 只支持播放本地音頻文件,或者使用-從終端讀取音頻

我設想的或已經實現的功能是這樣的:

  • 支持mp3格式
  • 支持流媒體,或者說支持直接播放網絡上的音樂
  • 可以添加音樂,方便管理
  • 可以批量添加歌曲
  • 可以播放局域網內電腦上的音樂
  • 自動根據歌名在線搜索歌曲並播放
  • 有一個web頁面,允許任何人添加自己喜歡的歌曲
  • web頁面顯示當前正在播放的歌曲和將要播放的歌曲列表
  • 當播放列表里面沒有歌曲的時候自動隨機播放一首歌曲,保證連續播放
  • 可以跳過正在播放的歌曲播放下一曲

安裝我做的系統之后你就可以用樹莓派做服務器, 發送廣播,播放流行歌曲或者英語聽力(或者法律允許播放的東西) 告訴親朋好友一個網址,然后他們就能在上面點歌。 四六級沒過的朋友可以添加四六級聽力,模擬真實考試環境。 或者放到敬老院里面,給老年人播放戲曲。 除此之外,只要程序運行着,你就能用收音機聽到音樂, 不用天天費神去網上找歌了。 這樣也為你的手機節省好多存儲歌曲的空間,因為有了樹莓派和我的點歌系統, 你用手機上的收音機就能聽到想聽的歌曲。 我的系統不會給樹莓派增加任何垃圾,所有網絡歌曲不緩存, 不用擔心歌曲過多而將存儲卡填滿。

關鍵技術與原理

因為樹莓派只支持wav格式音樂,所以要將mp3格式轉換成wav格式。

但是一般軟件轉換效率比較低,樹莓派CPU比較差,轉換時間更長。

后來我找到一個比較好的解決方案,用mpg123這個軟件進行解碼, 解碼之后輸出到終端上,這時就已經轉換成wav格式了。 然后樹莓派的pifm程序設置成從終端讀取音頻, 這樣再通過一個管道將兩個程序連起來,就能實現一邊解碼一邊播放

另外,mpg123的功能比較強,支持直接播放網絡音樂, 也就是說,只要給mpg123傳遞一個歌曲url,就能實現邊下載邊播放

上面的文字用一條命令總結就是:

mpg123 -m -C -q -s 歌曲地址或url | sudo pifm - 頻率 歌曲采樣率
例如
mpg123 -m -C -q -s /home/pi/aaa.mp3 | sudo pifm - 98.5 44100
mpg123 -m -C -q -s http://abc.com/123.mp3 | sudo pifm - 98.5 44100

上面的命令看起來很簡單,費了半天勁才鼓搗好,因為命令的參數很多, 組合起來讓他們協調工作就需要不斷嘗試!

解決了這個技術難題,下面的任務就簡單了,對於pythoner來說, 下面提到的東西都不叫事!^_^

簡單列一下:

  • 歌曲是從搜狗mp3抓的,只要輸入歌曲的名字,自動搜索,返回歌曲url
  • web管理界面用web.py實現,實時顯示正在播放的歌曲和歌曲列表
  • 數據庫用sqlite3,用來保存用戶輸入的歌曲信息,方便日后數據分析
  • 如果列表為空則從本地播放列表(文本文件)隨機選一個播放

安裝部署方法

為了簡化安裝部署,我專門寫了一個安裝腳本,就是setup.sh, 直接執行就能安裝。(注意,本系統樹莓派專用,請不要在電腦上執行此腳本)

wget https://github.com/ma6174/fmpi/archive/master.zip
unzip master.zip
cd fmpi-master
sudo bash setup.sh

這樣就自動安裝依賴的軟件

使用方法

運行的話可以直接執行程序里面的start.sh:

sudo bash start.sh

然后在樹莓派的GPIO4這個引腳上插上一根杜邦線當天線

ifconfig命令察看你的ip地址,然后在瀏覽器上打開:http://樹莓派IP:8000/, 可以看到正在播放的歌曲,然后你可以添加你想要收聽的歌曲。

打開收音機,調到FM 98.5頻道,你就能聽到正在播放的歌曲了!

如果感覺這首歌不好聽,可以直接按樹莓派的鍵盤的q鍵,自動播放下一曲

想終止程序的話按Ctrl + c

可以修改config.py修改默認的98.5這個播放頻率。

其他

對本系統感興趣的話可以去github上查看源碼,擴充系統功能: https://github.com/ma6174/fmpi

任何問題和建議可以留言或email聯系我:ma6174#163.com

gtalk:ma617495#gmail.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM