В данной статье мы рассмотрим создание станции интернет вещания на основе платы Raspberry Pi и пакетов DarkIce и Icecast, которые используются для записи аудио информации, ее кодирования и вещания/стриминга (streaming). Пакет DarkIce представляет собой аудио стример/транслятор реального времени (live audio streamer), который позволяет записывать аудио информацию с интерфейса аудио (например, микрофона), производить ее кодирование и передавать на сервер вещания/трансляции (streaming server). DarkIce позволяет записывать аудио с аудио устройств OSS, ALSA, Jack и CoreAudio. Также с его помощью можно кодировать аудио информацию в форматы MP3, MP2, AAC LC, AAC HEv2, Opus и Vorbis. После этого он может передавать кодированное аудио на стриминг серверы (Streaming Servers) ShoutCast, IceCast и Darwin.
Icecast представляет собой аудио/видео сервер трансляции/стриминга (audio/video streaming media server), который поддерживает стримы/потоки Ogg, Opus, WebM и MP3. Он может быть использован для создания различных систем вещания/трансляции, начиная от станций Интернет радио (Internet radio) и заканчивая музыкальными автоматами (jukeboxes).
Необходимые компоненты
- Плата Raspberry Pi (купить на AliExpress) (Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158).
- USB микрофон.
Установка пакетов DarkIce и Icecast на Raspberry Pi
Перед тем как устанавливать пакеты DarkIce и Icecast на Raspberry Pi, необходимо предварительно произвести ее обновление до последней версии с помощью команд:
1 2 |
sudo apt-get update sudo apt-get upgrade |
После этого используйте следующие команды чтобы скачать пакет darkice deb и установить его. По умолчанию пакет DarkIce идет без поддержки MP3.
1 2 3 4 |
Wget https://github.com/x20mar/darkice-with-mp3-for-raspberry-pi/blob/master/darkice_1.0.1-999~mp3+1_armhf.deb?raw=true mv darkice_1.0.1-999~mp3+1_armhf.deb?raw=true darkice_1.0.1-999~mp3+1_armhf.deb sudo apt-get install libmp3lame0 libtwolame0 sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb |
Теперь, перед тем как производить настройку DarkIce, нам необходимо установить пакет Icecast на Raspberry Pi. Для этого используйте команду:
1 |
sudo apt-get install icecast2 |
Во время его установки система спросит вас о необходимости настройки Icecast2. Выберите Yes (да).
На следующем экране вас попросят ввести доменное имя (domain name). Нажмите OK чтобы использовать имя хоста по умолчанию "localhost".
На следующих шагах процесса установки вам необходимо будет ввести 3 пароля. Первый из них – для доступа к источникам медиа, второй – для использования/смены потоков трансляции, третий – для осуществления доступа к консоли администратора. Нажмите ‘ok’ чтобы использовать пароль по умолчанию. Имя пользователя по умолчанию будет “admin”.
После установки Icecast2 нам необходимо создать конфигурационный файл (config file) darkice чтобы использовать корректную звуковую карту и осуществлять взаимодействие с icecast2. Для создания этого файла используйте команду:
1 |
sudo nano darkice.cfg |
Затем скопируйте и вставьте в этот файл следующие настройки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# this section describes general aspects of the live streaming session [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 # this section describes the audio input that will be streamed [input] device = plughw:0,0 # 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 # this section describes a streaming connection to an IceCast2 server # there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7] [icecast2-0] bitrateMode = abr # average bit rate format = mp3 # format of the stream: ogg vorbis bitrate = 320 # bitrate of the stream sent to the server server = localhost # host name of the server port = 8000 # port of the IceCast2 server, usually 8000 password = lolcat123 # source password to the IceCast2 server mountPoint = Stream.mp3 # mount point of this stream on the IceCast2 server name = Raspberry Pi Stream # name of the stream description = Broadcast from Raspberry Pi # description of the stream #public = yes advertise this stream? |
Сохраните изменения в файле используя Ctrl+X > Y > Enter.
Затем создайте еще файл "darkice.sh" с помощью команды:
1 |
sudo nano darkice.sh |
Скопируйте в этот файл следующую строку. Эта строка содержит адрес (путь) конфигурационного файла.
1 |
sudo /usr/bin/darkice -c /home/pi/darkice.cfg |
Затем сделайте файл darkice.sh исполнимым с помощью команды:
1 |
sudo chmod 777 /home/pi/darkice.sh |
После этого запустите сервис Icecast2:
1 |
sudo service icecast2 start |
Далее нам необходимо поставить пакет DarkIce в автозагрузку платы Raspberry Pi. Для этого используйте следующую команду чтобы открыть crontab:
1 |
crontab –e |
После этого добавьте следующую команду в конец файла. Измените путь к файлу чтобы он вел в каталог его установки.
1 |
@reboot sleep 10 && sudo /home/pi/darkice.sh |
Сохраните изменения в файле нажав CTRL+X, затем Y, затем ENTER. После этого установка будет закончена, перезагрузите плату:
1 |
sudo reboot |
Тестирование работы Интернет радио на Raspberry Pi
Теперь давайте проверим корректно ли у нас настроен стриминг/трансляция. Для этого в строке адреса вашего браузера напишите http:// Pi IP Address:8000. В нашем случае IP адрес был следующим – 192.168.1.226:8000.
Нажмите на M3U в правом верхнем углу или введите http:// 192.168.1.226:8000/Stream.mp3 чтобы открыть стрим/трансляцию. Если вы способны слышать контент, значит стрим работает корректно.