Розгортання радіостанції на GNU

Що мені потрібно від потоку мовлення:

  • програвання музики
  • прямий ефір (голос)
  • вищеперелічене разом
  • всякі штуки на кшталт заставок, сміху та ін.
  • заміщаючий потік, що працює 24/7 (бажано)

  • Роутер Dlink DIR-320 (я жебрак той ще економ)
  • ПК із Gentoo Linux
  • Мікрофон звичайний за 50 рублів, 1 шт.

Мікрофон студійний, 1 шт Накопичувач USB 64 Мб

Насамперед було знесено стокову прошивку роутера, і на її місце став OpenWRT з транку. Я не розповідатиму про те, як накотити OpenWRT, це можна прочитати, наприклад, тут. Скажу лише, щонеобхідноперенести корінь ФС роутера на зовнішню флешку за допомогою block-extroot, адже вбудованої пам'яті всього 4 мегабайти, а також включити в параметрах складання busybox програму useradd.

Отже, прошивка встановлена, інтернет працює, SSH теж заходимо по SSH на наш роутер і починаємо розбиратися.

I. IcecastПитання, 'а що ж використовувати як стрім-сервер?' у мене не виникало. До того ж, він досить стабільний та легковажний.

Встановлюємо icecast на роутер:

Чому на роутер? Звичайно, комп'ютер вночі вимкнено, а планується 24/7 режим.

Я буду використовувати Icecast у пісочниці, тому створю користувача icecast. Конфігураційний файл icecast має формат XML

Правду кажучи, я взагалі використовував kate (kio-sftp) для редагування цього конфігу, втім, це значення не має.

Конфіг добре документований. Для безпеки нам потрібно встановити chroot в одиницю, а changeowner в нашого користувача. Також зверніть увагу, що paths (шляхи) в такому випадку повинні бутивідносними від базидир, але зі слішем на початку. А ще icecast дуже не любить створювати шляхи сам. Як приклад, ось мій конфіг.

У моєму випадку потрібно створити лог-файли для користувача icecast:

Веб-інтерфейс доступний на 192.168.1.1:8000

До речі, додайте рядок icecast -b -c /usr/share/icecast/icecast.xml в /etc/rc.local, щоб запускати icecast під час завантаження роутера.

Я не зможу працювати 24 години на добу, тому мені потрібен fallback-потік, який заміщатиме основний на тому ж URL, у разі офлайну першого. Остаточний варіант налаштування fallback-потоку ви знайдете в другій частині, а поки я використовуватиму для цього MPD.

У налаштуванні MPD для icecast немає нічого складного, зараз він у мене транслює паралельно до ALSA та IceCast. Просто встановіть mpd та відкрийте

Припустимо, наш основний потік називається/live, а fallback -/mpd.oggТоді в icecast.xml слід додати:

III: Лезем в інтернет

Настав час налаштувати firewall для прийняття з'єднань ззовні. Якщо у вас немає "білого" IP, скористайтеся dyndns.org і зверніться до документації openwrt.

У /etc/config/firewall внесіть такі рядки:

і перезапустіть фаєрвол: /etc/init.d/firewall restart До речі, на мене, найкращий спосіб перевірки - не isup.me, а мобільник :). Загалом поїхали далі

IV: Налаштування клієнтаКлієнтська машина, тобто. десктоп - теж лінукс, як я сказав на початку посту. Для управління радіо використовуватимемо безкоштовну відкриту, і що головне, непортабельну (Linux only ☻) програму idjc. Дозволю собі процитувати відгук з SourceForge:

In the past, I має streamed на Windows XP with both SAM and ShoutCast. After trying Internet DJ Console on UbuntuStudio, я повинен думати, що це було велике streaming experience в моєму житті. Над шістьма годинами connected to my server, and it preformed flawlessly. Kudos до того, що put this together.

У портежах Gentoo її виявилося, а, наприклад, у Ubuntu вона є. Я зібрав програму із вихідників. Також мені знадобилося додати USE-прапор «jack» в /etc/make.conf для встановлення цього та інтеграції з alsa.

Для роботи програма вимагає звуковий сервер JACK (коли мене запитують, що з видатних програм є в Linux, але немає в m$, я відповідаю: Rosegarden, Cinelerra, JACK, Ardour, MythTV ! Ну і idjc). Інші залежності: GTK+, pygtk та наявність звукової картки з навушниками та мікрофоном.

IV.1 Налаштування JackJACK працює в realtime-режимі, так що йому потрібно дати де розвінутися. Додайте себе в групу audio, потім /etc/security.conf додайте:

і перекиньтеся. Також необхідно створити конфігураційний файл, наприклад: echo "/usr/bin/jackd -d -r 44100 -p 256" >

/.jackdrc Після цього запустіть сервер JACK, використовуючи як back-end'а вашу звукову систему (за що ви конфіг створювали): jackd -d тобто. alsa або pulse

IV.2 Налаштування та використання idjcidjc підтримує безліч профілів, мені вистачило й одного. Головне вікно виглядає так (все клікабельно):

розгортання

  • Запис із 4 мікрофонів
  • Виведення в 6 потоків Icecast/Shoutcast
  • Виведення в MP3 та OGG (потоки)
  • Запис у FLAC на жорсткий диск

Кнопка налаштувань внизу ліворуч. Preferences та Jingles я розгляну в другій частині, а зараз перейдемо до Output:

радіостанції

Налаштування не вміщаються у мене на екрані, унизу запис на диск, там нічого цікавого. Вгорі можна відзначити потрібні стрими тапідключитися до них, або змінити шаблон виведення метаданих.

Нижче натиснена кнопка означає, що стрима йде на вкладці Format можна задати формат і бітрейт і т.д. все настільки тривіально, що не бачу сенсу викладати окремі скріншоти. Зазначу, що також можна транслювати назви пісень в IRC.

V. Налаштування SkypeСпершу встановіть skype ☻ та alsa-plugins. У Gentoo: emerge alsa-plugins #з USE="jack" Потім у файл

/.asoundrc додайте: # VoIP plugin for IDJC default profile. pcm.idjcvoip type plug slave.pcm type jack playback_ports 0 idjc-mx_default:voip_in_l 1 idjc-mx_default:voip_in_r > capture_ports 0 idjc-mx_default:voip_out_l 1 idjc-mx_default:voip_out_r > > > і перекиньтесь. До речі, перед будь-яким запуском idjrc обов'язково запустіть JACK командою jackd -d alsa (підставивши pulse, якщо потрібно). Якщо ви любите графічні інтерфейси, скористайтеся qjackctl.

У скайпі виберіть пристрій idjcvoip (це працює взагалі для будь-якої програми, можна використовувати Ekiga або будь-що):