LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1096|回复: 3

打造你自己的linux mp3电台

[复制链接]
发表于 2003-4-28 22:58:20 | 显示全部楼层 |阅读模式
很久以前在linuxaid上看到这样一篇文章,感觉很好,但是一直没有条件自己试试,现在有了自己的服务器和公网ip,终于拿来试了一把,花了2个小时,感觉不错!但是因为这篇文章比较老了,在配置方面会有一些变化,所以我在这里想再写一下!括号里的是原来的出处(http://www.linuxaid.com.cn/articles/4/7/475529945.shtml)

在Linux下打造这样一个mp3 的radio station需要两个软件:icecast 和 ices,分别有rpm包可以下载。在这里我推荐大家一个下载rpm包的好地方
http://rpm.pbone.net 使用它的advance search可以对应你linux发行版的版本好来寻找对应版本的rpm包,强吧:p
在这里应为我的系统是Mandrake8.2,比较老了,所以我并没有下载最新的版本,我用的两个包分别是ices-0.2.3-3mdk.i586.rpm和icecast-1.3.12-2mdk.i586.rpm,你可以根据你自己的发行版进行选择下载。
下载完后分别安装就可以了
rpm -Uvh icecast-1.3.12-2mdk.i586.rpm
rpm -Uvh ices-0.2.3-3mdk.i586.rpm
注意在安装的时候我碰到了两个问题
1。可能报告需要libxml2的支持,没关系,继续下载一个对应版本的libxml2就可以了,我下载了libxml2-2.4.23-4mdk.i586.rpm,安装后通过
2。在我安装ices的时候报告什么不能定位libperl.so,可是find了一下,这个libperl.so明明就在/usr/lib/perl5/5.6.1/i386-linux/CORE/下面,她居然就是视而不见,faint,立马上了google,也没查出个所以然来,后来不管三七二十一把这个libperl.so拷贝到了/usr/lib一份,没想到居然安装成功,呵呵!
好了,安装完以后就要开始配置了
首先配置ices
ices是流源,她有两种执行方式:a,命令行方式。b,xml配置文件方式
对于命令行方式,原来linuxaid的作者讲得比较清楚了,我也不多说了,只是有几个参数现在来说不适用,整个命令行如下
ices -B -b 56 -d MUSIC -n "Afanofamd Radio" -g music -h localhost -p 8080 -P yourpassword -r -S bulitin -u http://hjjh.kicks-ass.net -F playlist
具体请参照原来的文章,有几个参数说明一下,原来文章中的-U 应该改为-u,指的是你服务器的地址, -h 参数,是你流服务器(icecast)的地址,如果你的流源(ices)和流服务器(icecast)在一台机器上的话,就用localhost,否则按照实际设定, -P 参数 你的流服务器的密码,待会在设置icecast的时候会用到,两者必须一样,-F 参数,你的播放列表,请按照原来文章的说明声称(find / -name "*.mp3" > playlist)
xml配置文件方式,我使用的是这种方式,配置也比较简单,编辑/etc/ices.conf文件,这是一个xml的配置文件。里面关于没个选项的说明都非常详尽,你可以参照命令行方式来配置,我就不多写了,否则有骗点的嫌疑
;) ,当然运行的方式应该改为ices -c /etc/ices.conf
ok, 到这里,作为流源的ices安装配置完毕。下面我们来配置流服务器icecast
安装完icecast的rpm包后,会在/ect/下生成icecast目录,她的配置文件就在里面,编辑/ect/icecast/icecast.conf文件作几处简单的修改
server_url http://hjjh.kicks-ass.net/  
这里改为你自己的域名
max_clients 100
max_clients_per_source 100
max_sources 10
这些可以酌情修改,傻瓜也知道是什么意思
encoder_password yourpassword
admin_password yourpassword
oper_password yourpassword
这是关键之处,改为你自己的密码,注意要和上面ices一直哦,否则出了问题别管我没说过哦
port 8080
也要注意和ices指定的一样
其它的用默认就可以了吧
好了,现在可以启动icecast了
icecast -b
-b是为了强制icecast进入后台执行

一切ok了
运行netstat -ln看看自己的8080端口已经用上了
好,打开winamp/xmms之类的播放器,选择播放url,敲入http://yourhost:8080/试试看,有声音,很爽吧

最后为了简单起见,我写了两个shell,让她们两个可以作为service,一启动就运行
1:ices
代码:
#!/bin/sh
#
# ices     This shell script takes care of starting and stopping ices.
#               
# chkconfig: 2345 98 02
#
# description: the ices daemon

PATH=/usr/bin:/root/bin{PATH}

program=ices
# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting ices: "
        ices -c /etc/ices.conf
        echo   
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down ices: "
        kill `ps -aef | awk '/[ \/]ices/ { print $2}'`
        echo
        ;;
  status)
        pids=`ps -aef | awk '/[ \/]ices/ { print $2}'`
        if test "$pids"
        then
                for p in $pids
                do
                        echo "$program (pid $p) is running"
                done
        else
                echo "$program is stopped"
        fi
        ;;
  *)
        echo "Usage: ices {start|stop|status}"
        exit 1
esac

exit 0
请把以上代码存为ices文件,拷贝为/etc/rc.d/init.d/ices文件
修改属性
chmod 744 /etc/rc.d/init.d/ices
加入到service
chkconfig --add ices

2:icecast
代码
#!/bin/sh
#
# icecast      This shell script takes care of starting and stopping icecast
#
# chkconfig: 2345 97 03
#
# description: the icecast daemon

PATH=/usr/sbin:/root/bin{PATH}

program=icecast
# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting icecast: "
        icecast -b
        sleep 5
        echo   
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down icecast: "
        kill `ps -aef | awk '/[ \/]icecast/ { print $2}'`
        echo
        ;;
  status)
        pids=`ps -aef | awk '/[ \/]icecast/ { print $2}'`
        if test "$pids"
        then
                for p in $pids
                do
                        echo "$program (pid $p) is running"
                done
        else
                echo "$program is stopped"
        fi
        ;;
  *)
        echo "Usage: icecast {start|stop|status}"
        exit 1
esac

exit 0
请把以上代码存为icecast文件,拷贝为/etc/rc.d/init.d/icecast文件
修改属性
chmod 744 /etc/rc.d/init.d/icecast
加入到service
chkconfig --add icecast

哈哈,大功告成!写的我累死了。:confused:
感谢linuxaid的处处写了这么好的文章作为我们的参考!

提醒一下,作为流播放的mp3文件有一定的要求,最好码率是一样的,否则会有断断续续的毛病。可以用工具批量转换一下哦,比如lame或者winamp的一些输出插件。
请大家听一下我的Radio Station
http://hjjh.kicks-ass.net:8080/
 楼主| 发表于 2003-4-29 13:05:10 | 显示全部楼层
:confused:
哎,写得这么辛苦居然没人看啊
发表于 2003-4-29 13:19:58 | 显示全部楼层
这个过程好像对我来说麻烦了点!!!!
发表于 2003-4-29 13:20:53 | 显示全部楼层
ok,我试下,有问题再发表,,谢了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表