Icecast流媒体广播的设置(转)

东郭俊楠
2023-12-01

1,介绍

    写这篇文章前,我也找了不少的资料,不过其它的很多都太老了,没有给我以有效的
帮助,本来是有两个选择的,icecast和shoutcast, 既然用了linux,Open Source的观念
于我影响很深,所以毫不犹豫的选择了开源的icecast作为播放的服务器.她既能支持在
Lan内,也能支持在Internet上同时向很多人播放,同时采用ices作为媒体源。整个架构
就是以icecast作播放服务器,ices作为媒体采集提供源。
    要注意的是,当前icecast的版本是icecast-2.2.0,她支持mp3和ogg。ices有两个主
要版本,2.0.x和 0.4.x,这里面很有学问了,最新的2.0.x只支持ogg不支持mp3,而0.4.x
的只支持mp3.这个害得我配了很久,也只支持了ogg,看了机器上那么多的mp3,也只得狠
心卸了2.0.x的,到主页上下了0.4.x自己装了起来。当然如果你只用ogg,那就是更简单了,
用不着我在这边罗嗦。
    这两个软件在http://www.icecast.org上面都可以下载。用Gentoo的朋友只能从
portage里面弄到icecast和ices的高版本,而这个要介绍的低版本只好手动下载编译了。
    这篇文章是参数了darfsnuzal在forums.gentoo.org上面的发言而写就的。我采用的是Icecast-2.2.0,和Ices-0.4。


2,安装
这个是最简单的了,对icecast来说。
emerge icecast -pv
对手动下载的ices来说
./configure;make;make install


3,配置

a,前面工作
    因为icecast是个向网络播放的服务器,为了避免不必要的漏洞,使用一些没有权限
的用户来作为执行用户。

# groupadd icecast
# useradd icecast -m -g icecast -G users,wheel,audio -s /bin/bash
# passwd icecast
# mkdir /home/icecast
# chown icecast:icecast /home/icecast
# cd /home/icecast
# su - icecast
$ mkdir log
$ cp /etc/icecast2/icecast.xml ./

    我设想的是,把所有有关的内容都往/home/icecast目录下面装,配置文件啊,日记
文件啊都在这里。自己新写配置文件免得与系统文件冲突。


b,配置 icecast,
看看icecast文件里面有什么好改的,这是个xml文件。对安全来说比较重要的。

<source-password>$passwd</source-password>
#这个是说服务器从哪里得到媒体源,
#是从ices那里来的,要跟ices的设置文件里的密码一样。
<relay-password>$passwd</relay-password>
#这个是说服务器作为服务器回放给下一级的服务器时
#其它服务器访问她所应该采用的密码。
<admin-user>admin</admin-user>
#这个是网页登录时的用户名,是管理员身份的,可别乱用啊,默认用户是admin
<admin-password>hackme</admin-password>
#上面对应的密码默认是hackme
<hostname>localhost</hostname>
#主机名, localhost就没错了,除非。。。。
<logdir>/home/icecast/log</logdir>
#日记文件,我把她扔这里了,你们自己随便。

<!-- # 这个删除
<changeowner>
<user>icecast</user> # 把nobody 改成 icecast
<group>icecast</group> # 把nogroup改成 icecast
</changeowner>
--> # 删除

<listen-socket>
<port>8000</port>
<bind-address>0.0.0.0</bind-address>
#把listen的ip设成0.0.0.0就是对所有的ip开放,这个不要忘了。端口是8000
</listen-socket>
#其它的自己看着也没什么改的必要了。就这样子了。icecast配置完了。

    对了,这之后要验证一下,文件配置对了没有。
$ exit
# icecast -b -c /home/icecast/icecast.xml

    如果在/home/icecast/log/error.log里面找到了这么一行,那就行了。
[2005-05-09 01:06:32] INFO main/main icecast server started

c,配置ices,
其实两代的ices的配置文件都差不多,看看都会配置了,没什么难度。
# su - icecast
$ cd
$ cp /usr/local/etc/ices2/ices-conf.dist ./ices-playlist.xml
现在就开始改了。

<File>list.txt</File>
#指定播放列表文件,一般是m3u什么的,随便你了,放在哪里都可以的。
<Randomize>1</Randomize>
#要不要随机播放,1是0否。
<Background>1</Background>
#让ices作为背景运行,不放在前台。
<Hostname>localhost</Hostname>
<Port>8000</Port>
<Password>IloveYou</Password>
#这是跟icecast的互动,跟icecast保持一致就可以了。
<Mountpoint>/ppmm</Mountpoint>
#这是加的后缀。这样的话播放的实际地址就是http://localhost:8000/ppmm了
<Public>1</Public>
#是否向外开放。
<Name>Baozhu</Name>
#我爱宝珠,嘿嘿。

耶,改完了,檑终于完了。验证一下。
#ices -c ices-playlist.xml


4,启动
    本来我是打算把她们用一个系统服务搞定的,不过怎么写都没写好,结果郁闷了,
写了些乱七八糟的东西,都是我自己在摆设,这些大家就不要笑话我,看着明白意思就
可以了。
$cat /etc/init.d/icecast
#!/sbin/runscript

depend() {
need net
use dns
}

start() {
ebegin "Starting Icecast 2"
start-stop-daemon --background --start --pidfile /var/run/icecast.pid --make-pidfile --exec /usr/bin/icecast -- -b -c /home/icecast/icecast.xml >/dev/null 2>&1
eend $?
}

stop() {
ebegin "Stopping Icecast 2"
killall icecast
rm -rf /var/lib/init.d/started/icecast
# start-stop-daemon --stop --retry 5 --quiet --pidfile /var/run/icecast.pid /usr/bin/icecast
eend $?
}
    这段程序主要是因为每次/etc/init.d/icecast stop的时候 ,都无法正确关掉服务
器,忙乎了我好久,都很烦的,只好用强制手段了,嘿嘿。
    然后在/home/icecast/下面新建了两个可执行文件start和stop
$cat start
/etc/init.d/icecast start
ices -c ices-playlist.xml
第一行其它也可以不用系统服务来做的,直接用命令行:
icecast -b -c /home/icecast/icecast.xml
注意ices可以用一系列的参数列表,但最好是用-c指定配置文件。
新版本的ices不使用任何参数,所有东西集中于配置文件。
$cat stop
killall ices
/etc/init.d/icecast stop
反正都是强制的手段,没办法了,想不出好办法的,幸好还能正常工作的。

于是,接下来的就是很简单了。
启动: ./start
关掉: ./stop

用播放器打开
http://localhost:8000/ppmm
就可以欣赏音乐了。


5,说明
    在这过程中,可以用浏览器登录http://localhost:8000/admin/stats.xsl查看当前状态,关键的是看一下listmount,只有当里面有东西被mount的时候,才表示ices已经向
icecast提供了媒体源,两者已经正常工作。不过icecast的web设置貌似有问题,自己登录
本机,没什么动作,一会儿连接数就上了100,搞得我很不爽啊。
    还有就是那个list.txt就是个普通的m3u文件,用自己机器上的的mp3文件组成的你可
以用如下命令查询硬盘上所有的mp3文件,并把他们存下来成为m3u文件。如:
$ find / -name "*.mp3" > /home/icecast/playlist.m3u
当然你可以把 / 换成你的媒体所在的文件夹。


6,其他
    粗制滥造,没啥技术含量,有什么错误原谅我则个。
    在想一下,对我的这个配置其它可以改进的还有,把启动做得简单一点,比如把那个
icecast的启动脚本写得好一点,就免得四处运行文件,方便好多啊,不过我也懒,嘿嘿。
    综合一下,如果只播放ogg文件,那么直接上最新版的icecast和最新版的ices,怎样
弄都不错。配置也差不了多少。如果只播放mp3文件,除了我这种方法之外,还可以用muse
这个程序代替ices提供媒体源。配置也比较简单,我也不介绍了,之所以不用她主要是
两点,一,她不能乱序播放。二,她不能显示 id3tag。还有就是不支持log,无法背景
启动等。这是我看的介绍上说的,没有试过,没有亲见估且信了。


7,写在最后
    我为什么会想起来配置这个东西呢,主要是因为难得一见的小巴在BT又开广播了,当
然是我最熟悉的电视主题歌曲展播了,好久没跟大家一直听广播了,真是高兴啊。想想上
一回自己开广播还是在windows下面用winamp+shoutcast配置的,要是以后还要开,当然这个
开的可能性还是很高的吗,机器上堆积了这么多的电视歌曲,不听白不听,不开白不开。
于是,聆听之余,找了资料,装了软件,光明正大的做研究了。于今终于算是大功千告成
了,远方的同学都能听见我的机器颤抖的声音,嘿嘿。有心想把这些千百首歌曲分类的说,
不过太烦琐了。坚决不干。

 类似资料: