На базе Ubuntu 10.04 и 10.10 Server amd64

Потребуется:

  • icecast-2.3.2 - Ogg Vorbis and MP3 streaming media server (потоковый медиа-сервер)
  • ices-0.4 - source client for broadcasting in MP3 format to an icecast2 server (утилита для посылки MP3-аудиопотока)
  • ices-2.0.1 - source client for broadcasting in Ogg Vorbis format to an icecast2 server (утилита для посылки OGG-аудиопотока)
  • libshout-2.2.2 - MP3/Ogg Vorbis broadcast streaming library (библиотека)
  • libmp3lame-3.98.4 - An MP3 encoding library (библиотека)
  • libfaad2 - бесплатный продвинутый звуковой декодер - файлы времени выполнения (библиотека)
  • libmp4v2-0 - freeware Advanced Audio Decoder - runtime files (библиотека)
  • libperl5.10 - shared Perl library (библиотека)
  • libxslt1.1 - XSLT 1.0 processing library - runtime library (библиотека)
  • libvorbisfile3 - The Vorbis General Audio Compression Codec (High Level API)

Начнём...

Установим библиотеки

sudo apt-get install libmp3lame0 libshout3 libfaad2 libmp4v2-0 libperl5.10 libxslt1.1 libvorbisfile3

Установим утилиту ices-0.4

К сожалению её нет в репозитории, по этому необходимо загрузить:

   Загружаем Ices 0.4 для Ubuntu Server
wget http://radium.vao-ix.ru/deb/ubuntu.10.04/ices_0.4-0medibuntu2_amd64.deb

   и устанавливаем

sudo dpkg -i ices_0.4-0medibuntu2_amd64.deb

Установим потоковый медиа-сервер Icecast2

sudo apt-get install icecast2

В процессе установки будет создана новая группа icecast и системный пользователь icecast2 входящий в группу icecast

Добавляется группа `icecast' (GID 114) ...
Готово.
Добавляется системный пользователь `icecast2' (UID 107) ...
Добавляется новый пользователь `icecast2' (UID 107) в группу `icecast' ...
Не создаётся домашний каталог `/usr/share/icecast2'.
icecast2 daemon disabled - read /etc/default/icecast2.
Обрабатываются триггеры для libc-bin ...
ldconfig deferred processing now taking place

Настройка сервера Icecast2

Конфигурационный файл находится /etc/icecast2/icecast.xml

<icecast>
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <!-- If enabled, this will provide a burst of data when a client 
             first connects, thereby significantly reducing the startup 
             time for listeners that do substantial buffering. However,
             it also significantly increases latency between the source
             client and listening client.  For low-latency setups, you
             might want to disable this.
	-->
        <burst-on-connect>1</burst-on-connect>
        <!-- same as burst-on-connect, but this allows for being more
             specific on how much to burst. Most people won't need to
             change from the default 64k. Applies to all mountpoints
	-->
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>you_source_password</source-password>
        <!-- Relays log in username 'relay' -->
        <relay-password>you_relay_password</relay-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>you_admin_password</admin-password>
    </authentication>

    <!-- set the mountpoint for a shoutcast source to use, the default if not
         specified is /stream but you can change it here if an alternative is
         wanted or an extension is required
    -->
    <!-- <shoutcast-mount>/live.nsv</shoutcast-mount> -->

    <!-- Uncomment this if you want directory listings -->
    <!--
    <directory>
        <yp-url-timeout>15</yp-url-timeout>
        <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
    </directory>
    -->

    <!-- This is the hostname other people will use to connect to your server.
    It affects mainly the urls generated by Icecast for playlists and yp
    listings.
    -->
    <hostname>localhost</hostname>

    <!-- You may have multiple <listener> elements -->
    <listen-socket>
        <port>8000</port>
        <!-- <bind-address>127.0.0.1</bind-address> -->
        <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
    </listen-socket>
    <!--
    <listen-socket>
        <port>8001</port>
    </listen-socket>
    -->

    <!-- <master-server>127.0.0.1</master-server> -->
    <!-- <master-server-port>8001</master-server-port> -->
    <!-- <master-update-interval>120</master-update-interval> -->
    <!-- <master-password>hackme</master-password> -->

    <!-- setting this makes all relays on-demand unless overridden, this is
         useful for master relays which do not have <relay> definitions here.
         The default is 0
    -->
    <!-- <relays-on-demand>1</relays-on-demand> -->

    <!--
    <relay>
        <server>127.0.0.1</server>
        <port>8001</port>
        <mount>/example.ogg</mount>
        <local-mount>/different.ogg</local-mount>
        <on-demand>0</on-demand>

        <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    -->

    <!-- Only define a <mount> section if you want to use advanced options,
         like alternative usernames or passwords
    <mount>
        <mount-name>/example-complex.ogg</mount-name>

        <username>othersource</username>
        <password>hackmemore</password>

        <max-listeners>1</max-listeners>
        <dump-file>/tmp/dump-example1.ogg</dump-file>
        <burst-size>65536</burst-size>
        <fallback-mount>/example2.ogg</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>1</fallback-when-full>
        <intro>/example_intro.ogg</intro>
        <hidden>1</hidden>
        <no-yp>1</no-yp>
        <authentication type="htpasswd">
                <option name="filename" value="myauth"/>
                <option name="allow_duplicate_users" value="0"/>
        </authentication>
        <on-connect>/home/icecast/bin/stream-start</on-connect>
        <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
    </mount>

    <mount>
        <mount-name>/auth_example.ogg</mount-name>
        <authentication type="url">
            <option name="mount_add"       value="http://myauthserver.net/notify_mount.php"/>
            <option name="mount_remove"    value="http://myauthserver.net/notify_mount.php"/>
            <option name="listener_add"    value="http://myauthserver.net/notify_listener.php"/>
            <option name="listener_remove" value="http://myauthserver.net/notify_listener.php"/>
        </authentication>
    </mount>
    -->

    <fileserve>1</fileserve>

    <paths>
        <!-- basedir is only used if chroot is enabled -->
        <basedir>/usr/share/icecast2</basedir>

        <!-- Note that if <chroot> is turned on below, these paths must both
             be relative to the new root, not the original root
        -->
        <logdir>/var/log/icecast2</logdir>
        <webroot>/usr/share/icecast2/web</webroot>
        <adminroot>/usr/share/icecast2/admin</adminroot>
        <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->

        <!-- Aliases: treat requests for 'source' path as being for 'dest' path
             May be made specific to a port or bound address using the "port"
             and "bind-address" attributes.
        -->
        <!--
        <alias source="/foo" dest="/bar"/>
        -->
        <!-- Aliases: can also be used for simple redirections as well,
             this example will redirect all requests for http://server:port/ to
             the status page
        -->
        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
	<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
	<logsize>10000</logsize> <!-- Max size of a logfile -->
        <!-- If logarchive is enabled (1), then when logsize is reached
             the logfile will be moved to [error|access|playlist].log.DATESTAMP,
             otherwise it will be moved to [error|access|playlist].log.old.
             Default is non-archive mode (i.e. overwrite)
        -->
        <!-- <logarchive>1</logarchive> -->
    </logging>

    <security>
        <chroot>0</chroot>
        <!-- Системный пользователь и группа под которым будет запускаться icecast2
	     0 выключено, 1 включено 
         -->
        <!--
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
        -->
    </security>
</icecast>

Далее в файле /etc/default/icecast2 изменяем ENABLE=false на ENABLE=true

# Defaults for icecast2 initscript
# sourced by /etc/init.d/icecast2
# installed at /etc/default/icecast2 by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Full path to the server configuration file
CONFIGFILE="/etc/icecast2/icecast.xml"

# Name or ID of the user and group the daemon should run under
USERID=icecast2
GROUPID=icecast

# Edit /etc/icecast2/icecast.xml and change at least the passwords.
# Change this to true when done to enable the init.d script
ENABLE=true

А теперь, попробуем взлететь :) (В ubuntu 10.04 и 10.10 можно запутсить командой):

service icecast2 start
Так выглядит результат нормального взлёта:
Starting icecast2: Starting icecast2
Detaching from the console
icecast2.

Теперь проверим:

ps waux | grep icecast

результат:

icecast2 23959  0.0  0.3 136864  3272 pts/1    Sl   04:19   0:00 /usr/bin/icecast2 -b -c /etc/icecast2/icecast.xml

Можно посмотреть порт:

netstat -na | grep -i listen | grep 8000

результат:

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN

Ну и заглянем через браузер:

icecast2-web

Если что-то пошло не так, изучаем ошибки в файле /var/log/icecast2/error.log


Настройка ices 0.4

Cоздаем файл /usr/local/etc/ices.conf

touch /usr/local/etc/ices.conf

Открываем в редакторе /usr/local/etc/ices.conf и копируем:

<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
    <Playlist>
	<File>/home/radio/play/playlist.txt</File>
	<Randomize>1</Randomize>
	<Type>builtin</Type>
	<Module>ices</Module>
    </Playlist>
 
    <Execution>
	<Background>1</Background>
	<Verbose>0</Verbose>
	<BaseDirectory>/tmp</BaseDirectory>
    </Execution>
 
    <Stream>
	<Server>
	    <Hostname>localhost</Hostname>
	    <Port>8000</Port>
	    <Password>you_source_password</Password>
	    <Protocol>http</Protocol>
	</Server>
 
	<Mountpoint>/playlist</Mountpoint>
	<Name>Default stream</Name>
	<Genre>Default genre</Genre>
	<Description>Default description</Description>
	<URL>http://localhost:8000/playlist</URL>
	<Public>0</Public>
 
	<Bitrate>128</Bitrate>
	<Reencode>1</Reencode>
	<Samplerate>44100</Samplerate>
	<Channels>2</Channels>
    </Stream>
</ices:Configuration>

Ограничим доступ к файл конфигурации:

sudo chown icecast2:icecast /usr/local/etc/ices.conf
sudo chmod 640 /usr/local/etc/ices.conf

Создадим катаолог для музыкальных файлов:

mkdir /home/radio
mkdir /home/radio/play

Поместим в каталог /home/radio/play несколько mp3 файлов и после создадим playlist.txt для этого каталога:

cd /home/radio/play
ls > playlist.txt

В связи с тем, что в каталог с музыкой могут попасть не только mp3 файлы, а ls затянет в playlist.txt всё что найдёт в каталоге, от чего в дальнейшем возникнут затыки, рекомендую создавать отфильтрованный playlist.txt следующим способом.

find -name '*.mp3' -exec echo '{}' \; > playlist.txt

Запускаем находясь в /home/radio/play (в каталоге с файлом playlist.txt и mp3 файлами)

ices -c '/usr/local/etc/ices.conf'

По адресу http://192.168.1.251:8000/playlist должна играть музыка


На этом пока всё! :)


一步一步地会到目的

I do not smoke or drink



Search for Extra-Terrestrial Intelligence at Home
Search for Extra-Terrestrial Intelligence at Home

User signature graphic BOINC Stars

Power by BOINC


International Space Station
Прямая трансляция переговоров космонавтов МКС с ЦУП.
Только голос | Голос и Видео
Говорят они не всегда, только по необходимости, так что не удивляйтесь, если на канале будет тишина.

Ubuntu 14.04 (Trusty Tahr) Daily Build

>>> Старые релизы Ubuntu <<<

Оглавление

Cisco Systems

Связь через консольный кабель
Сброс пароля на Catalyst 2950
Создание VLAN на Catalyst 2950
Создание и управление стеками коммутаторов

FreeBSD 8.2 - Сервер с "нуля"

Установка
Начальная настройка
Сборка ядра (c Kernel NAT)
Named
OpenVPN

Ubuntu Server

Настраиваем WEB-сервер
Apache2 + PHP5 + MySQL + phpMyAdmin
Пример для виртуальных хостов

VSFTPd + SSL Не закончено!
Установка TFTP сервера (tftpd)
Установка Midnight Commander
Установка Deluge с Web-интерфейсом
Бэкапим MySQL базы
MySQL шпаргалки
Резервное копирование - м1
Простой шлюз на Ubuntu Server
Сетевое радио на Icecast2
Объединение HDD дисков
Управление автозагрузкой
Настройка сети вручную
Защита от брутфорса
ssh, ftp, http: fail2ban

OpenVPN Installation Ubuntu

Ubuntu Desktop

Настройка Ubuntu Desktop 10.10
Раскукоживаем Менеждер обновлений
Раскладка - флажки вместо текста
QutIM - клиент ICQ, Jabber, MAgent, IRC
Температура железа на панеле

Горячие клавиши в Ubuntu Unity

Драйвера NVIDIA в Ubuntu
Радио лоток в области уведомлений
SSHFS - Монтируем удаленную FS
Резервное копирование Ubuntu Desk
Загрузочная флешка Ubuntu Server
Загрузочная USB из под Windows
Как найти нужный PPA-репозиторий
Видеонаблюдение под Ubuntu 10.04 для "чайников"
Видеонаблюдение легально!

Linux

Полезные команды Linux
Конфиг железа в Ubuntu
Мониторинг хостов в сети
Разное на одном листе
inotify - это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе.

Полезное под Windows

FTPS - защищённое соединение
PuTTY - Как сохранить настройки
VirtualBox - Клонирование виртуальных машин.

Скриптовые языки

AWK - Язык обработки структурированных текстов

Чит-листы или Шпаргалки

pdf css_cheat-sheet ver.1
pdf css_cheat-sheet ver.2
pdf php_cheat-sheet ver.1
pdf php_cheat-sheet ver.2
pdf javascript_cheat-sheet ver.1
pdf mysql_cheat-sheet ver.1
pdf html_cheat-sheet ver.1
pdf regular_expressions ver.1
pdf regular_expressions ver.2
pdf mod_rewrite_cheat-sheet ver.1
pdf mod_rewrite_cheat-sheet ver.2
pdf sql_server_cheat-sheet ver.1
pdf microformats_cheat-sheet ver.1
pdf seo_cheat-sheet ver.0.4
pdf wordpress_designer ver.1

Последовательное соединение проводников
Последовательное соединение проводников

Параллельное соединение проводников
Параллельное соединение проводников


Gedit style schemes

xml darktango.xml
xml emacs-darkslategrey.xml

HTML заметки

Разные валидные фичи
10 преступлений с HTML тегами
Заметки по установке
MaxSite CMS версия 0.42

Горизонтальное CSS Меню
.htacces паролим сайт
Противоугонный пакет

Коллекция jQuery plagins

Quovolver [?]
Custom Animation Banner [?]
Style my tooltips [?]


ipv6.nic.ru

QR Coder.ru
Генератор QR-кодов


2:5020/1209.12@FidoNet

Logo WebMoney
WMIDwmid 358066815673
pursewmzZ452007172362
wmrR568219491953
wmeE770110075404

Logo Yandex.Money
 Yndex purse4100178599238



Мои телефоны:
  1. Билайн AMPS/DAMPS - модели ERICSSON DH318,
    ERICSSON DH618
  2. Билайн GSM - Siemens C25 корпус "Хамелион" (тариф "Серебрянный")
  3. Мегафон GSM - SAMSUNG SGH-T400
  4. Мегафон GSM / AIS GSM Thailand - Qtek s100
  5. Мегафон GSM - SAMSUNG SGH-i900 WiTu 8Gb
  6. Мегафон GSM - HTC Wildfire S
  7. Мегафон GSM - HTC One S
  8. Мегафон GSM / Теле2 GSM - ASUS Zenfone 2 ZE550ML
  9. Мегафон GSM - Xiaomi Redmi Note 4 4Gb 64Gb
  10. Мегафон GSM - Xiaomi Redmi Note 8 6Gb 64Gb