Icecast є серверною програмою, яка може здійснювати роздачу цифрових потоків різних форматів, таких як Ogg Vorbis, Mp3, Theora, ААС, Aacplus і NSV. Власне передача даних здійснюється по стандартному протоколу HTTP, або по протоколу Shoutcast.
Icecast є аналогом програми Shoutcast компанії Nullsoft, проте має розвиненішу функціональність і підтримує більшу кількість форматів потоків. При передачі даних Icecast підтримує теги в Utf-8, що дозволяє організовувати трансляцію з кириличною анотацією.
Встановлення і налаштування Icecast2
Для встановлення Icecast2 просто запускаємо:
$ sudo apt-get install icecast2
Після цього ми повинні змінити /etc/icecast2/icecast.xml. Більшість значень по замовчуванню повинні працювати, але ви повині змінити паролі у секції <authentication>...</authentication>.
- source-password це пароль який наша програма у майбутньому буле використовувати для зв'язку з сервером Icecast2;
- admin-password це пароль який адміністратор буде використовувати у веб-інтерфейсі Icecast2;
- relay-password ми не будемо використовувати, але так чи інакше ви повинні змінити його.
[...]
<authentication>
<!-- Sources log in with username 'source' -->
<source-password>password1</source-password>
<!-- Relays log in username 'relay' -->
<relay-password>password2</relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>admin</admin-user>
<admin-password>password3</admin-password>
</authentication>
[...]
Далі редагуємо /etc/default/icecast2 і встановлюємо ENABLE як true
[...]
ENABLE=true
[...]
Запускаємо сервер Icecast2:
$ sudo /etc/init.d/icecast2 start
Зараз ви можете у веб-броузері перейти за адресою http://127.0.0.1:8000/ і подивитись на веб-інтерфейс:
Встановлення ruby-shout
Встановлюємо пакети необхідні для ruby-shout:
$ sudo apt-get install libogg-dev libshout3-dev libspeex-dev libtheora-dev libvorbis-dev
libshout - це бібліотека для трансляції аудіо до icecast або shoutcast-сумісних серверів. На даний момент вона відтримує 2 формати аудіо і 3 протоколи.
Формати аудіо:
- Ogg Vorbis
- MP3
Протоколи:
- HTTP
- Audiocast
- ShoutCast
ruby-shout це інтерфейс Ruby до libshout. Він дозволяє програмам на Ruby легко відправляти дані до icecast сервера і управляти мета-інформацією про потік.
Для інсталяції ruby-shout просто виконуємо:
$ sudo gem install ruby-shout
Приклад
Скрипт зчитує звукові дані з вхідного файлу і відправляє їх icecast серверу без resampling.
#!/usr/bin/ruby
# Stream all the files given on the commandline to the Icecast server on
# localhost.
require 'rubygems'
require 'shout'
BLOCKSIZE = 16384
s = Shout.new
s.host = "localhost"
s.port = 8000
s.mount = "/example.ogg"
s.format = Shout::VORBIS
s.user = "source"
s.pass = "password1"
s.name = "Example Radio"
s.description = "Powered by Ruby/#{VERSION}, ruby-shout/#{Shout::version}"
s.genre = "Rock"
s.connect
ARGV.each do |filename|
File.open(filename) do |file|
puts "sending data from #{filename}"
m = ShoutMetadata.new
m.add 'filename', filename
s.metadata = m
while data = file.read(BLOCKSIZE)
s.send data
s.sync
end
end
end
s.disconnect
Посилання
2 коментарі:
Круто , спасибо.
Теперь дома можно мультикомнатное радио устроить.
ля дома я бы рекомендовал связку icecast + mpd + какой-то GUI для mpd. Оч удобно =)
Дописати коментар