查看: 13338|回复: 10

[教程] 树莓派FM广播点歌系统

  [复制链接]
  • TA的每日心情
    开心
    2013-3-3 19:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-3-2 21:50:04 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 ma6174 于 2013-3-2 21:54 编辑

    简介
    前段时间有人发贴说用树莓派可以发射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
    我的博客:http://www.cnblogs.com/ma6174/archive/2013/03/02/2940503.html
    gtalk:ma617495#gmail.com




    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-1-28 16:20
  • 签到天数: 980 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-3-2 22:23:40 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2013-8-12 17:47
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-3-3 17:26:07 | 显示全部楼层
    本帖最后由 wyyyh 于 2013-3-3 17:45 编辑

    呵呵,原来我还希望通过python的库解决mp3->wav ,不错不错,试试先



    郁闷,又遇到"嘟嘟。。。。。“声,有人知道什么原因不。4次系统有3次出现这个问题
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2014-3-13 15:08
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-3-4 10:07:39 | 显示全部楼层
    感谢分享。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-12-19 23:24
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-4-15 23:41:53 来自手机 | 显示全部楼层
    这个功能厉害
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2013-8-12 17:47
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-4-16 08:52:33 | 显示全部楼层
    fm这个一直“嘟”音的问题一直没解决,没得玩。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-21 12:15
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-11-3 23:33:46 | 显示全部楼层
    我测试的感觉不错。我还写了一个循环,一直播放我自己录制的声音,呵呵 用的是windows系统自带的录音机,然后录制出来的格式是*.wma ,利用软件转码为mp3格式,非常方便,然后我是直接上传到pi的一个目录里面,利用一个shell脚本来实现循环播放的。呵呵
    1. while  true
    2. do  mpg123 -m -C -q -s  test.mp3 |  pifm  -   100.1  44100
    3. done
    复制代码
    然后执行这个脚本,一直播放,我自己录了一段电吉他solo
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-4 13:17:40 | 显示全部楼层
    yoyojacky 发表于 2013-11-3 23:33
    我测试的感觉不错。我还写了一个循环,一直播放我自己录制的声音,呵呵 用的是windows系统自带的录音机,然 ...

    >>>>你可会了解
    0
    your IP is:
    192.168.137.33
    Just open http://Your_IP:8080/ in broswer to add music
    press q to play next songs,
    press Ctrl+c to terminate

    [mpg123.c:629] error: Cannot open None: File access error. (code 22)
    192.168.137.1:64721 - - [07/May/2015 15:46:45] "HTTP/1.1 GET /" - 200 OK

    这是什么原因我播放不出来


    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-8 19:16
  • 签到天数: 51 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-8-24 09:20:45 | 显示全部楼层
    0
    your IP is:
    192.168.1.103
    Just open http://Your_IP:8080/ in broswer to add music
    press q to play next songs,
    press Ctrl+c to terminate

    [mpg123.c:629] error: Cannot open None: File access error. (code 22)
    192.168.1.103:64721 - - [07/May/2015 15:46:45] "HTTP/1.1 GET /" - 200 OK
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-8-27 14:48:05 | 显示全部楼层
    谢谢正在申请板子。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 11:35 , Processed in 0.214265 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.