查看: 11280|回复: 6

[教程] 【分享】Raspberry Pi 搭建个人网络电台

[复制链接]
  • TA的每日心情
    开心
    2017-2-20 09:01
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-1-16 21:00:56 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 celery1124 于 2013-2-28 08:59 编辑

    写在前面
    期末考试结束后一直泡在实验室,任务也比较重,一直没来的及发帖分享心得,这是我为了能和网友妹子一起听歌想到的,寝室里的Raspberry Pi一直闲着为什么不能做一个远端服务器呢,经过几天忙里偷闲的google,测试,属于自己的网络电台终于搭建好了。下面分享下具体搭建过程。
    硬件准备
    Raspberry Pi一枚(板上买的);
    USB移动硬盘(作为音源);
    有源USB HUB。
    软件安装
    这里使用MPD+ICECAST2作为播放器和服务器,MPC作为Client,具体软件介绍不做详细说明,有兴趣可自己google。
    1. $ sudo apt-get install mpc mpd icecast2
    2. The following NEW packages will be installed:
    3.   icecast2 libao-common libao4 libaudiofile1 libavahi-glib1 libavcodec53 libavformat53
    4.   libavutil51 libcurl3-gnutls libdirac-encoder0 libfaad2 libgsm1 libjack-jackd2-0
    5.   libmms0 libmp3lame0 libmpcdec6 libmpdclient2 libschroedinger-1.0-0 libshout3
    6.   libspeex1 libtheora0 libva1 libvpx1 libwavpack1 libx264-123 libxvidcore4 mpc mpd
    复制代码
    安装完ICECAST2之后,它会要你设置ICECAST2的hostname和password,其中password后面配置MPD的时候需要用到,后面配置的密码用ICE_PWD代替。安装完毕后会弹出以下warning:
    1. Setting up mpd (0.16.7-2) ...
    2. [....] Starting Music Player Daemon: mpd
    3. listen: bind to '[::1]:6600' failed: Failed to create socket: Address family not supported
    4. by protocol (continuing anyway, because binding to '127.0.0.1:6600' succeeded)
    5. Failed to load database: Failed to open database file "/var/lib/mpd/tag_cache":
    6. No such file or directory
    复制代码
    需要开启IPV6解除。
    1. $ sudo modprobe ipv6
    复制代码
    MPD配置
    首先打开MPD配置文件。
    1. $ sudo nano /etc/mpd.conf
    复制代码
    然后再末尾加入下面配置信息。表示MPD输出流到ICECAST服务器上,注意password的"ICE_PWD"改为自己之前设置的密码。bitrate表示电台输出码率,这里选择128kbps,可以根据自己网络状况适当提高或者降低。
    1. audio_output {
    2.   type            "shout"
    3.   name            "RasPi MPD Stream"
    4.   description     "MPD stream on Raspberry Pi"
    5.   host            "localhost"
    6.   port            "8000"
    7.   mount           "/mpd"
    8.   password        "ICE_PWD"
    9.   bitrate         "128"
    10.   format          "44100:16:2"
    11.   encoding        "mp3"
    12. }
    复制代码
    然后重启MPD载入配置信息。
    1. $ sudo /etc/init.d/mpd restart
    复制代码
    检查是否正常运行
    1. $ mpc outputs
    2. Output 1 (My ALSA Device) is enabled
    3. Output 2 (RasPi MPD Stream) is enabled
    复制代码
    如果Output2没有开启可输入一下代码开启
    1. $ mpc enable 2
    复制代码
    查看MPD和ICECAST2是否正在监听TCP
    1. $ sudo netstat -ltpn
    2. Active Internet connections (only servers)
    3. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    4. tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      1299/icecast2
    5. tcp        0      0 127.0.0.1:6600          0.0.0.0:*               LISTEN      1734/mpd
    6. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1531/sshd
    7. tcp6       0      0 ::1:6600                :::*                    LISTEN      1734/mpd
    复制代码
    开启音乐流
    首先检查用户(pi)是否是audio组的成员
    1. $ groups
    2. pi adm dialout cdrom sudo audio video plugdev games users input
    复制代码
    如果不是,将pi加入audio组
    1. $ sudo usermod -a pi -G audio
    复制代码
    下面修改权限:
    1. $ sudo chmod g+w /var/lib/mpd/music/ /var/lib/mpd/playlists/
    2. $ sudo chgrp audio /var/lib/mpd/music/ /var/lib/mpd/playlists/
    复制代码
    下面将音乐库加入MPD默认音乐目录下(/var/lib/mpd/music,在/etc/mpd.conf中配置),由于MPD的音乐目录只有一个要想将多个音乐目录加入MPD中,需要用到软连接的方式。我是将硬盘中的音乐目录连接过来播放。
    首先挂载硬盘。
    1. $ sudo mkdir /media/USBHDD
    2. $ sudo mount /dev/sda1 /media/USBHDD
    复制代码
    我的音乐文件在/media/USBHDD/Music下,下面给MPD默认目录建立连接
    1. $ ln -s /media/USBHDD/Music/ /var/lib/mpd/music/albums
    复制代码
    你也可以将多个音源连接到此目录下,然后MPD就可以找到这些音乐了。
    接着将音乐加入playlist,我是将硬盘中所有音乐全部加入playlist,代码如下:
    1. $ mpc update
    2. $ mpc ls | mpc add
    3. $ mpc playlist
    4. ...
    复制代码
    下面会显示所有加入的音乐,这时候可以开启MPD播放音乐流到网络上。同时如果mpd output1开启,那么Raspberry pi板上的audio out也会输出歌曲。
    1. $ mpc repeat on
    2. volume: 80%   repeat: on    random: off   single: off   consume: off
    3. $ mpc play
    4. ...
    复制代码
    如果你想在渺如烟海的音乐库中搜索歌曲,使用grep命令
    1. $ mpc playlist|grep -n Steve\ Vai
    2. 3741:Steve Vai - Bad Horsie
    3. 3742:Steve Vai - Juice
    4. 3743:Steve Vai - Die to Live
    5. 3744:Steve Vai - The Boy from Seattle
    6. 3745:Steve Vai - Ya-Yo Gakk
    7. 3746:Steve Vai - Kill the Guy With the Ball/The God Eaters
    8. 3747:Steve Vai - Tender Surrender
    9. ...
    10. $ mpc play 3741
    复制代码
    mpc有着非常丰富的命令,类似于xmms2,具体使用方法请man mpc。
    这时候你可以在网上听属于自己的电台音乐了,stream url:http://your_raspberry_hostname:8000/mpd.m3u,可直接在播放器中打开,也可在浏览器中打开(自动下载.m3u文件)。
    ICECAST2管理在http://your_raspberry_hostname:8000/admin,用户名admin,密码是之前配置输入的密码,可以查看播放情况,listener登录情况,并可kick listener。具体ICECAST2的配置方法在这里http://www.icecast.org/,貌似是PHP语言,这个我不懂。其login文件在/var/log/icecast2/access.log,可以查看所有ip登录情况。
    结束语
    就写到这里吧,其实还有好多功能等着大家去探索发现,别忘了分享!播放视频流文件同理。好像有个miniDLNA,有兴趣的朋友可以试一试!
    我的个人电台http://50.78.21.216:8000/mpd.m3u
    have fun

    参考链接:Live mp3 streaming from audio-in with DarkIce and Icecast2 on Raspberry Pi(2013/01/16)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-20 09:01
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-1-16 21:45:59 | 显示全部楼层
    powerdruy 发表于 2013-1-16 21:27
    看见LINUX下的软件头就大了,用着这么麻烦的操作系统难怪难以推广,总是小众在用 ...

    不会啊,习惯了之后会发现linux不论在使用还是功能上都异常强大。开源的软件可以灵活的配置。用一段时间之后发现以前操作系统真是白学了啊。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-3 11:17
  • 签到天数: 93 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2013-1-16 23:42:05 来自手机 | 显示全部楼层
    这个不错啊,可以做一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-17 09:54:01 | 显示全部楼层
    恩,试过几个豆瓣电台的软件都不好使,楼主是否有好方法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-6-21 12:27
  • 签到天数: 26 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-17 19:58:36 | 显示全部楼层
    我觉得楼主讲的很明白。很有意思。值得称赞!

    赞扬一个!
    mark先。日后尝试!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-20 09:01
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-1-17 21:35:18 | 显示全部楼层
    ukonline2000 发表于 2013-1-17 09:54
    恩,试过几个豆瓣电台的软件都不好使,楼主是否有好方法

    你可以参照我上面的方法试一试啊,很简单也很方便,如果你对Linux比较熟悉的话会发现可以非常灵活的控制。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-1-18 21:05:16 | 显示全部楼层
    支持桶叔\m/
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-5-5 16:29 , Processed in 0.172804 second(s), 28 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.