zoukankan      html  css  js  c++  java
  • Icecast流媒体广播的设置(转)

    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配置的,要是以后还要开,当然这个
    开的可能性还是很高的吗,机器上堆积了这么多的电视歌曲,不听白不听,不开白不开。
    于是,聆听之余,找了资料,装了软件,光明正大的做研究了。于今终于算是大功千告成
    了,远方的同学都能听见我的机器颤抖的声音,嘿嘿。有心想把这些千百首歌曲分类的说,
    不过太烦琐了。坚决不干。

  • 相关阅读:
    C#博客随笔之四:使用C#模拟办公网登录HttpClient的使用
    C#博客随笔之三:Linq in C#
    C#博客随笔之二:wp开发之弹出对话框
    C#博客随笔之一:使用C#的第一个WP程序
    Fedora15命令速查手册
    乐观是一种智慧
    完全教程 Aircrackng破解WEP、WPAPSK加密利器
    FreeBSD常用命令大全
    Linux 网络管理员指南——前言
    API
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2494489.html
Copyright © 2011-2022 走看看