Начали мы внедрять в жизнь интереснейшее интернет радио “Fresh Rock”. Арендовали слабенький VPS в Киеве с жирным каналом в UA-IX. Слабенький потому что думалось на нём ставить только один Icecast, оказалось немного не так :)
На данный момент на этом сервере кроме Icecast крутится и Liquidsoap, который перекодирует основной поток MP3 формата в OGG и AAC+ потоки. OGG в основном используется для воспроизведения потока браузерами на HTML5, AAC+ используется в основном для прослушивания на мобильных телефонах, андроидофонах и т.д.

Вообще люблю RedHat based дистрибутивы, но поскольку сам собрать liquidsoap на них не в силах, а в репозиториях он есть только для Debian, Ubuntu, то решено было устанавливать именно Debian. Пришлось подключить тестовые репозитарии чтоб получилось установить версию liquidsoap, которая в силах перекодировать поток в AAC+. Как это делалось уже не опишу, много чего пробовал, кое как поставил :)

Ниже привожу конфиг liquidsoap с помощью которого мы перекодируем из одного формата в другой.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/liquidsoap

# Log dir
set("log.file.path","/var/log/liquidsoap/basic.log")
set("log.stdout",true)
set("log.level",4)

# Input HTTP
url=mksafe(input.http("http://ua.freshrock.net:8000/mp3"))

#AAC+
output.icecast(%aacplus(channels=2, samplerate=44100, bitrate=64),
 icy_metadata="true",
 mount = "aac",
 host = "localhost", port = 8000, password = "hackme",
 genre="Rock",
 description="Fresh Rock, Lugansk Rock, Ukrainian Rock",
 name="Fresh Rock",
 url="http://freshrock.net",
url)

#MP3
#output.icecast(%mp3(bitrate=128, id3v2 = true),
# mount = "mp3128",
# host = "localhost", port = 8000, password = "hackme",
# genre="Rock",
# name="Test 128kb\s",
# url="http://freshrock.net",
#url)

#OGG
output.icecast(%vorbis (channels=2, samplerate=44100, quality=0.4),
 icy_metadata="false",
 mount = "ogg",
 host = "localhost", port = 8000, password = "hackme",
 genre = "Rock",
 description = "Fresh Rock, Lugansk Rock, Ukrainian Rock",
 name = "Fresh Rock",
 url = "http://freshrock.net",
drop_metadata(url))

Заметьте, активно только два потока. Не знаю почему, но на моём сервере если активировать третий поток, то процессор начинает очень активно использоваться и Icecast начинает “икать”. Может действительно очень слабый, а может какой-то глюк.
На OGG потоке обрезаются тэги, делается это для того, чтоб браузеры не переподключались при смене тэга на OGG потоке. Кому интересно, могут почитать об этом глюке в интернете.
Каким то странным образом иногда начали обрезаться тэги и на AAC+ потоке, причём далеко не на всех песнях. Какой-то зависимости я увидеть не смог.

Заметка создана себе на память, если кому-то пригодится, буду рад! Пароли изменены на стандартные, все описания и адреса не изменены, при надобности сами меняйте.