Не знаю, знаете ли вы или нет, но сильно популярный когда-то формат mp3 обложен лицензионными отчислениям. Каждый производитель софта создающего mp3 файлы обязан заплатить некоторую денежку владельцу алгоритма, как минимум по американским законам, а не то будет подвергнут низвергнут и т.п. В качестве альтернативы был создан формат ogg (точнее ogg-vorbis там внутри на самом деле два формата), призванный сделать создание и проигрывание музыкальных файлов реально свободным и бесплатным. Какое-то время шла вялая конкуренция, не в пользу последнего, так-как mp3 уже успел захватить мир (и только после этого владелец объявил о необходимости отчислений, а до этого было все как-бы бесплатно), но со временем конкуренция угасла, потому что диски и интернет подешевели, и появились алгоритмы сжатия музыки без потерь, и хранить музыку в mp3 а равно как и в ogg стало бессмысленно.
Но осталось одна область где использование сжатия с потерями оправдано: это сетевое вещание. Поток несжатого звука через современные каналы в режиме реального времени не везде достаточно хорошо пролазит (особенно на выходе с сервера, нормального мультикаста в IPv4 без нетривиальных усилий с обоих сторон таки не дают), а требования к качеству -- ниже.
Когда возникла задача вещания, я сразу сказал что вещаться будет в ogg, во-первых потому что пользователи должны таки научиться пользоваться правильными форматами (если конечно не заплатят мне кучу денег, чего тут не было), а во-вторых софта для кодирования mp3 в опенсорсных дистрибутивах по умолчанию нету (потому что в Америке такой софт может быть только за деньги из-за патентных отчислений) а вот для кодирования ogg -- подалуйста, ставиться одной командой, только настрой.
Так вот, собственно я собираюсь рассказать о том как это надо настраивать.
Собственно что, сетевое вещание оно суть двухголовое. Есть сервер, который из доверенных источников принимает аудио поток и as is передает его всем изъявившим желание послушать. В нашем случае это icecast2. И есть источник, который занимается кодированием аудио потока в месте его происхождения и через посредством авторизации передающего его на сервер. В нашем случае это ices2, который умеет как live вещание прямо с line in'а, так вещание play list'а. Нас в данном случае интересует первое.
Настраиваем icecast2
Ставим соответствующий пакет, редактируем /etc/icecast2/icecast.xml задав три разных пароля
А так же меняем hostname, указав там тот хост, с которого будет видна вещалка (будет использован при создании url'ев)
Далее в файле /etc/default/icecast2 ставим ENABLE=true, перезапускаем icecast: sudo /etc/init.d/icecast2 restart и если все было сделанно правильно, и вы пробросили все нужные порты наружу, то по адресу yourhostname.com:8000 вам покажут страничку, и при заходе в админку спросят пароль.
Далее, для того чтобы оный поток успешно игрался во флешевом проигрывателе (об это позже), нужно положить файл /usr/share/icecast2/web/crossdomain.xml с контентом
И убедиться что в системе есть файл /etc/mime.types ; если его нет, то доставить пакет
mime-support (Это нужно чтобы xml'ка отдавалась с правильным контент-тайпом) http://yourdomain.com:8000/crossdomain.xml теперь должен (в нормальных браузерах, не IE) не предлагать сохранить файл, а показать его контент.
Настраиваем ices2
Ставим пакет ices2, создаем директорию /var/log/ices и /etc/ices2, копируем файл /usr/share/doc/ices2/examples/ices-alsa.xml в /etc/ices2;
В оном файле меняем <param name="device">hw:0,0</param> на то алса устройство из которого пойдет входящий звук, в разделе
в качестве хост-нейма ставим то доменное имя по которому виден настроенный уже icecast2, в качестве пароля указываем пароль из айс-кастового конфига (не скажу какой, я нерадивый админ поставил все три одинаковых и теперь меня взломают... Если успеют)
Отдельное внимание следует уделить параметру mount. Это то имя, которое будет присвоено потоку, оно будет частью его url. С одной стороны совершенно не требуется чтобы оно заканчивалось на ogg, но с другой стороны говно-виндовые браузеры, если оно заканчивается на ogg по умолчанию открывают его в WinAmp который вот уже более десяти лет ogg умеет, а если не присвоено, то можно попасть в Windows Media Player со всеми вытекающими. Поэтому .ogg добавляем.
Далее, коленым железом выжигаем блок
потому что с ним не работает...
И так же в соответсвующем месте добавляем <param name="metadatafilename">/etc/ices2/ices-alsa.meta</param> и создаем файл /etc/ices2/ices-alsa.meta с содержимым
title=Кто
artist=Что
Далее организуем запускатор. Копируем /usr/share/doc/ices2/ices.init.example в /etc/init.d/ices2 ставим ему +x, создаем файл /etc/ices2.conf с единственной строкой
и останавливается /etc/init.d/ices2 stop
И волшебной конмандой update-rc.d ices2 defaults заставляем его запускатиься при старте.
Так, или примерно так мне удалось его запустить играть... По результатам этого в веб админке icecast'а должен появиться поток вещяние который можно проигрывать.
Чем можно проигрывать
1. Любым линуксовым сетевым проигрывателем
2. WinAmp последние десять лет умеет .ogg. Чтобы по ссылке с сайта случайно не окрылся Window Media Player, не следует давать ссылку на m3u которая указана в админке айс-каста, а давать адрес самого потока с расширением .ogg, чтобы он точно попал в WinAmp
3. В теории Windows Media Player может играть ogg, если поставить вот это http://xiph.org/dshow/, не проверял
4. Существуют флеш плееры играющие ogg потоки. Например http://www.musesradioplayer.com/setup При его использовании главное не забыть правильно положить файлик crossdomain.xml как это сказано в настройках icecast2, иначе ничего играться не будет.
Но осталось одна область где использование сжатия с потерями оправдано: это сетевое вещание. Поток несжатого звука через современные каналы в режиме реального времени не везде достаточно хорошо пролазит (особенно на выходе с сервера, нормального мультикаста в IPv4 без нетривиальных усилий с обоих сторон таки не дают), а требования к качеству -- ниже.
Когда возникла задача вещания, я сразу сказал что вещаться будет в ogg, во-первых потому что пользователи должны таки научиться пользоваться правильными форматами (если конечно не заплатят мне кучу денег, чего тут не было), а во-вторых софта для кодирования mp3 в опенсорсных дистрибутивах по умолчанию нету (потому что в Америке такой софт может быть только за деньги из-за патентных отчислений) а вот для кодирования ogg -- подалуйста, ставиться одной командой, только настрой.
Так вот, собственно я собираюсь рассказать о том как это надо настраивать.
Собственно что, сетевое вещание оно суть двухголовое. Есть сервер, который из доверенных источников принимает аудио поток и as is передает его всем изъявившим желание послушать. В нашем случае это icecast2. И есть источник, который занимается кодированием аудио потока в месте его происхождения и через посредством авторизации передающего его на сервер. В нашем случае это ices2, который умеет как live вещание прямо с line in'а, так вещание play list'а. Нас в данном случае интересует первое.
Настраиваем icecast2
Ставим соответствующий пакет, редактируем /etc/icecast2/icecast.xml задав три разных пароля
<authentication>
<!-- Sources log in with username 'source' -->
<source-password>hackme</source-password>
<relay-password>hackme</relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
А так же меняем hostname, указав там тот хост, с которого будет видна вещалка (будет использован при создании url'ев)
<hostname>yourhostname.com</hostname>
Далее в файле /etc/default/icecast2 ставим ENABLE=true, перезапускаем icecast: sudo /etc/init.d/icecast2 restart и если все было сделанно правильно, и вы пробросили все нужные порты наружу, то по адресу yourhostname.com:8000 вам покажут страничку, и при заходе в админку спросят пароль.
Далее, для того чтобы оный поток успешно игрался во флешевом проигрывателе (об это позже), нужно положить файл /usr/share/icecast2/web/crossdomain.xml с контентом
<cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
И убедиться что в системе есть файл /etc/mime.types ; если его нет, то доставить пакет
mime-support (Это нужно чтобы xml'ка отдавалась с правильным контент-тайпом) http://yourdomain.com:8000/crossdomain.xml теперь должен (в нормальных браузерах, не IE) не предлагать сохранить файл, а показать его контент.
Настраиваем ices2
Ставим пакет ices2, создаем директорию /var/log/ices и /etc/ices2, копируем файл /usr/share/doc/ices2/examples/ices-alsa.xml в /etc/ices2;
В оном файле меняем <param name="device">hw:0,0</param> на то алса устройство из которого пойдет входящий звук, в разделе
<hostname>localhost</hostname>
<port>8000</port>
<password>hackme</password>
<mount>/example1.ogg</mount>в качестве хост-нейма ставим то доменное имя по которому виден настроенный уже icecast2, в качестве пароля указываем пароль из айс-кастового конфига (не скажу какой, я нерадивый админ поставил все три одинаковых и теперь меня взломают... Если успеют)
Отдельное внимание следует уделить параметру mount. Это то имя, которое будет присвоено потоку, оно будет частью его url. С одной стороны совершенно не требуется чтобы оно заканчивалось на ogg, но с другой стороны говно-виндовые браузеры, если оно заканчивается на ogg по умолчанию открывают его в WinAmp который вот уже более десяти лет ogg умеет, а если не присвоено, то можно попасть в Windows Media Player со всеми вытекающими. Поэтому .ogg добавляем.
Далее, коленым железом выжигаем блок
<resample>
<in-rate>44100</in-rate>
<out-rate>22050</out-rate>
</resample>потому что с ним не работает...
И так же в соответсвующем месте добавляем <param name="metadatafilename">/etc/ices2/ices-alsa.meta</param> и создаем файл /etc/ices2/ices-alsa.meta с содержимым
title=Кто
artist=Что
Далее организуем запускатор. Копируем /usr/share/doc/ices2/ices.init.example в /etc/init.d/ices2 ставим ему +x, создаем файл /etc/ices2.conf с единственной строкой
XMLFILE=/etc/ices2/ices-alsa.xml, проверяем что он запускается /etc/init.d/ices2 start
и останавливается /etc/init.d/ices2 stop
И волшебной конмандой update-rc.d ices2 defaults заставляем его запускатиься при старте.
Так, или примерно так мне удалось его запустить играть... По результатам этого в веб админке icecast'а должен появиться поток вещяние который можно проигрывать.
Чем можно проигрывать
1. Любым линуксовым сетевым проигрывателем
2. WinAmp последние десять лет умеет .ogg. Чтобы по ссылке с сайта случайно не окрылся Window Media Player, не следует давать ссылку на m3u которая указана в админке айс-каста, а давать адрес самого потока с расширением .ogg, чтобы он точно попал в WinAmp
3. В теории Windows Media Player может играть ogg, если поставить вот это http://xiph.org/dshow/, не проверял
4. Существуют флеш плееры играющие ogg потоки. Например http://www.musesradioplayer.com/setup При его использовании главное не забыть правильно положить файлик crossdomain.xml как это сказано в настройках icecast2, иначе ничего играться не будет.