Сетевое радио ICECAST + FM тюнер

Категория: / DEV Блог / Сервер (FreeBSD)
Нашелся ненужный тюнер avermedia 307, решил поднять на локальном сервере радио.
Максимум конечно (который 103,7), жаль ультра сейчас на запредельной частоте - 70,9...

Вообщем к делу!

Вставляем тюнер в свободный слот, соединяем его выход с line-in входом звуковой карты.
До этого мне не нужна была звуковая карта, поэтому надо подключить ее в ядре, заодно с тюнером.

# sounds
# device PCM
device sound
device snd_ich
device bktr
device iicbus
device iicbb
device smbus


Конфигурация компьютера старенькая - intel ich3, встроенный звук.

make buildkernel KERNCONF=KERN
make installkernel KERNCONF=KERN


Получили новое ядро.

1. нам нужен darkice (захватывает звук с Line-in звуковой платы и отдает icecast'у)

http://darkice.tyrell.hu/


2. нам нужен icecast (будет отдавать поток в сеть)

http://www.icecast.org/



Можно ставить из портов, так проще, если нет проблем с тырнетом. В случае ручной установки, потребуются дополнительные
библиотеки, например lame..

Правим конфиги. Вот пример darkice.cfg

[general]
duration        = 0         # duration of encoding, in seconds. 0 means forever
bufferSecs      = 5         # size of internal slip buffer, in seconds
reconnect       = yes       # reconnect to the server(s) if disconnected
[input]
device          = /dev/dsp  # OSS DSP soundcard device for the audio input
sampleRate      = 22050     # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample   = 16        # bits per sample. try 16
channel         = 2         # channels. 1 = mono, 2 = stereo
[icecast2-0]
bitrateMode     = abr       # average bit rate
format          = mp3    # format of the stream: ogg vorbis
bitrate         = 96        # bitrate of the stream sent to the server
server          = 172.16.13.37
                            # host name of the server
port            = 8000      # port of the IceCast2 server, usually 8000
password        = password    # source password to the IceCast2 server
mountPoint      = headsup  # mount point of this stream on the IceCast2 server
name            = j4ck roxx
                            # name of the stream
description     = nothing
                            # description of the stream
url             = http://172.16.13.37/
                            # URL related to the stream
genre           = rock    # genre of the stream
public          = yes       # advertise this stream?


3. Качаем тулзу fmio (http://jumbo.narod.ru/fmio.ru.html)
с помощью этой утилиты мы можем управлять тюнером из консоли

Дальше самое интересное. диджей жги!

echo start iceradio
./icecast -c /usr/local/etc/icecast.xml -b
#./ices -c /usr/local/etc/ices.xml -B -C 5  -F /usr/local/etc/playlist.txt
 
killall bktrctl
bktrctl
fmio -d bktr -f 103.7 -v 100
mixer -s \=rec line
mixer -s rec 75:75
/usr/local/bin/darkice -c /usr/local/etc/darkice.cfg -v 0 &


Необходимо выставить правильный девайс для записи (line-in) и подгрузить bktrctl для того чтобы радио завелось.
Далее пускаем icecast в бэкграунде и darkice. Теперь по ссылке http://172.16.13.37:8000/headsup.m3u можно наслаждаться любимым радио!

Система freebsd 5.3
Author: J4ck