Showing posts with label радио. Show all posts
Showing posts with label радио. Show all posts

October 7, 2010

Микрофон, mono, Sam Broadcaster и Channel Mixer

Поключив микрофон к Sam Broadcaster обнаружил что сигнал от него идёт только по левому каналу — Voice FX работает в стерео, а сам микрофон в моно. Решение оказалось довольно простым: DSP-plugin "Channel Mixer".
скачиваем плагин и копируем .dll-файл в директорию plugins, размещённую в директории с установленным Sam Broadcaster.
Далее идём в ConfigAudio mixer pipelineDSP (напротив Voice FX) → Refresh List → ставим галочку напротив Channel MixerConfigure Plugin.
В появившемся окне есть две секции с результирующими настройками каждого из каналов, т.е. мы задаём из чего оба канала "будут создаваться". Так, левый канал будет на 100% состоять из исходного сигнала левого канала и на 0% из сигнала правого. Результирующий правый канал настроим аналогично, поскольку микрофон у нас работает в режиме моно и сигнал отдаёт только по левому каналу.

January 8, 2010

Конфигурация Icecast: секция mount

Секция <mount> (mount point) определяет статическую постоянную точку монтирования на сервере Icecast. Динамическая точка — та, которая не задана в конфигурационном файле icecast.xml и создаётся автоматически при подключении источника с заданным им же (источником) именем.

Маунтов на одном сервере может быть несколько. Как правило, это разные радиостанции, разные по качеству/формату каналы, или все вместе.

Вот сожержимое секции <mount>, предложенное в официальной документации по конфигурационному файлу icecast.xml:
<mount>
    <mount-name>/example-complex.ogg</mount-name>
    <username>othersource</username>
    <password>hackmemore</password>
    <max-listeners>1</max-listeners>
    <max-listener-duration>3600</max-listener-duration>
    <dump-file>/tmp/dump-example1.ogg</dump-file>
    <intro>/intro.ogg</intro>
    <fallback-mount>/example2.ogg</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>1</fallback-when-full>
    <public>1</public>
    <stream-name>My audio stream</stream-name>
    <stream-description>My audio description</stream-description>
    <stream-url>http://some.place.com</stream-url>
    <genre>classical</genre>
    <bitrate>64</bitrate>
    <type>application/ogg</type>
    <subtype>vorbis</subtype>
    <hidden>1</hidden>
    <burst-size>65536</burst-size>
    <mp3-metadata-interval>4096</mp3-metadata-interval>
    <authentication type="htpasswd">
        <option name="filename" value="myauth"/>
        <option name="allow_duplicate_users" value="0"/>
    </authentication>
    <on-connect>/home/icecast/bin/source-start</on-connect>
    <on-disconnect>/home/icecast/bin/source-end</on-disconnect>
</mount>
А вот что всё это значит:
  • mount-name — название точки монтирования
  • username и password — необязательные значения, задающие с какими логином и паролем должен подключаться источник к этой точке для трансляции. Если не заданы, используются общие настройки для всего сервера — логин и пароль, указанные в начале файла icecast.xml
  • max-listeners — максимальное количество слушателей этой точки
  • max-listener-duration — максимальная продолжительность прослушивания
  • dump-file — файл, в который будет копироваться весь аудиопоток, проходящий через эту точку
  • intro — файл, который будет проигрываться при каждом подключении слушателя к точке, скажем, вступление
  • fallback-mount — точка монтирования в таком же формате, на которую будет перенаправлен слушатель если в данный момент времени эта точка не работает. Подробнее в статье Icecast Mountpoint Fallback или как настроить автопереключение каналов или в официальной документации
  • fallback-override — определяет возвращать ли слушателей назад если источник вновь подключится и точка монтирования заработает
  • fallback-when-full — переключать ли слушателей на fallback-mount если этот канал переполнен
  • public — показывать ли в каталоге YP
  • stream-name — название потока (не путать с mount-name), отображается в плеере у слушателя в качестве заголовка (также используется для YP)
  • stream-description — описание потока (также используется для YP)
  • stream-url — адрес потока (также используется для YP)
  • genre — жанр трансляции (также используется для YP)
  • bitrate — битрейт трансляции (по умолчанию определяется автоматически, также используется для YP)
  • type — тип аудиопотока (например, vorbis; также используется для YP)
  • subtype — mime-тип аудиопотока, определяющий конкретно его формат (например, vorbis/theora; также используется для YP)
  • hidden — скрывать точку ли на страницах статуса сервера (как например страница status.xsl)
  • burst-size — перезаписывает общую настройку объёма отправляемых в буффер плеера данных
  • mp3-metadata-interval — частота обновления метаданных
  • authentication — настройки аутентификации для прослушивания, подробнее в официальной документации
  • on-connect — адрес (путь) программы, которая будет выполняться при каждом подключении слушателя к точке
  • on-disconnect — адрес (путь) программы, которая будет выполняться при каждом отключении слушателя от точки

Icecast Mountpoint Fallback или как настроить автопереключение каналов

Бывает что необходимо настроить Icecast на работу с двумя источниками на одной точке монтирования (т.н. mountpoint), например когда у Вас есть круглосуточно транслирующий музыку компьютер (источник №2), и Вы хотите время от времени включаться в эфир со своего компьютера (основной источник №1), вести этот эфир, но так, чтобы в процессе этих переключений слушателей не отсоединяло, а они оставались подключенными к трансляции, чтобы их перебрасывало автоматически. Ниже я опишу один из возможных вариантов реализации такой схемы.

Допустим, у нас есть канал /radio_128, работающий в формате MP3 и качестве 128 килобит в секунду. Это — основной канал, и к нему будет подключаться основной источник (в нашей ситуации — домашний компьютер). Для резервного источника №2 мы создадим вторую точку монтирования — /radio_128_fallback, и настроим вещание со второго источника именно на неё. Важно: сигнал на второй точке монтирования должен иметь такие же битрейт, частоту и формат, иначе айскаст не сможет, переключившись, воспроизвести сигнал.

Теперь настроим связь между этими точками. Нам нужно, чтобы вторая точка использовалась в качестве резервной. Для этого пропишите в конфиге icecast.xml (в системе FreeBSD он расположен по /usr/local/etc/icecast.xml) в настройках первой (основной) точки /radio_128 следующее:
<mount>
<mount-name>/radio_128</mount-name>
<fallback-mount>/radio_128_fallback</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
Как видим, добавлены опции fallback-mount и fallback-override:
  • fallback-mount определяет точку монтирования (mountpoint), на которую следует переадресовывать слушателей если этот источник выключен
  • fallback-override определяет возвращать ли слушателей назад если источник вновь подключится и точка монтирования заработает

Внимание! У Вас в icecast.xml, вполне вероятно, может не оказаться секции <mount>* — в таком случае впишите её вручную в соответствии с этим описанием настройки секции <mount>.

* значит icecast автоматически создавал mountpoint на время работы подключившегося источника

December 11, 2009

Как создать базу данных MySQL для SAM Broadcaster в ISPmanager

Для того, чтобы создать базу данных в ISPmanager слева в разделе «Инструменты» выберите модуль «Базы данных».

В открывшемя окне выберите «Создать новую» (самая левая иконка с зелёным плюсом). Открывается диалоговое окно добавления базы данных.

Заполните форму. Введите произвольное название для базы данных (например, SAMDB), выберите опцию «Создать нового пользователя», введите его имя (например, SAMBC) и пароль (рекомендуется как можно сложнее, можете воспользоваться функцией генерации пароля*). Обязательно включите удалённый доступ, поскольку подключение на сервер будет выполняться с отдалённого компьютера, а значит входящие соединения извне к базе данных должны быть разрешены. в частности, именно поэтому рекомендуется выбрать пароль как можно сложнее.

* — если Вы решите сгенерировать пароль, то может возникнуть ошибка a-la не введен (или плохо введен) пароль. Это внутренняя ошибка ISPmanager. Скопируйте получившийся пароль, закройте и заново окройте окно создания базы данных и проставьте скопированный пароль в соответствующие поля. Заодно, сохраните и себе его кдуа-нибудь.

Нажмите «ОК», и если всё было заполнено верно, то база создастся.
В SAM Broadcaster введите имя базы, имя пользователя, пароль и домен или ip-адрес сервера с MySQL (внимание, localhost вводите только в случае если MySQL размещён на том же компьютере что и SAM Broadcaster). Если Вам надо изменить настройки уже установленного SAM Broadcaster'а, откройте в директории где он установлен файл SAMBC.core.xml, и измените соответствующие значения в нём.

August 14, 2009

Установка Icecast2 под FreeBSD

Вот как установить Icecast в системе FreeBSD:

Запускаем установку из портов:
cd /usr/ports/audio/icecast2 && make install clean

(см. ниже все эти команды одной строкой)

Добавляем пользователя и группу для Icecast'а:
pw groupadd icecast && pw useradd icecast -g icecast

Создаём папку для log-файлов:
mkdir /var/log/icecast

Создаём собственно log-файлы:
touch /var/log/icecast/access.log && touch /var/log/icecast/error.log && touch /var/log/icecast/playlist.log

Предоставляем права на эти файлы (а затем и на саму директорию) свежесозданному пользователю Icecast'а:
chown -R icecast /var/log/icecast/* && chgrp -R icecast /var/log/icecast/* && chmod 644 /var/log/icecast/*

Копируем конфиг из образца в рабочий:
cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml

Старт сервиса при запуске системы:
echo "icecast_enable=YES">>/etc/rc.conf

Все те же самые команды одной строкой:
pw groupadd icecast && pw useradd icecast -g icecast && mkdir /var/log/icecast && touch /var/log/icecast/access.log && touch /var/log/icecast/error.log && touch /var/log/icecast/playlist.log && chown -R icecast /var/log/icecast/* && chgrp -R icecast /var/log/icecast/* && chmod 644 /var/log/icecast/* && cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml && echo "icecast_enable=YES">>/etc/rc.conf

Прописываем в конфиге новые пути к лог-файлам!

Запускаем Icecast:
/usr/local/etc/rc.d/icecast2 start


После установки может ругаться на права root'а:
ERROR: You should not run icecast2 as root
Use the changeowner directive in the config file
Чтобы исправить это, откройте /usr/local/etc/icecast.xml и в секции security (в самом конце файла) выставьте работу от имени специально созданного выше пользователя icecast из одноимённой группы. Для этого найдите секцию <security> и отредактируйте её содержимое как показано в примере:
<security>
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
</security>
То есть:
  • Значение chroot выставьте равным 0
  • Значения user и group выставьте равными icecast

Внимание! Если вообще не запускается, не висит в активных процессах, и не подаёт никаких признаков жизни, в конфиге icecast.xml проверьте правильность указания пути к папке с лог файлами (в секции paths). Зачастую, там по умолчанию выставлено /usr/local/var/log/icecast, а мы при установке создали директорию /var/log/icecast. Укажите это в logdir.

Если теперь Вы задаётесь вопросом с чего бы передать сигнал на Icacast чтобы тот раздавал его слушателям, почитайте статью со скриншотами об установке SAM Broadcaster.

July 24, 2009

Установка SAM Broadcaster 4.3.6 и настройка радио транслятора на Icecast 2: мануал в картинках

Добываем установщик Sam Broadcaster, запускаем.
Нас встречают вопросом: «Распакуются необходимые файлы. Продолжить?».
Отвечаем утвердительно.


Затем появляется окно приветствия. Жмём «Далее» («Next»)


Лицензионное соглашение. Принимаем.


Выбираем директорию куда устанавливать.


Затем нам предложат выбрать тип сервера для базы данных Sam Broadcaster. Там будет храниться список песен, запросов, проигрываний и т.д. Один из наиболее распространённых — MySQL, предоставляется даже на дешёвом хостинге за доллар, что уж говорить о VDS и VPS. Также сервер MySQL можно установить и использовать у себя на компьютере.
Внимание! О том, как создать базу данных в ISPmanager или изменить в SAM Broadcaster уже введенные настройки подключения к БД написано здесь.


Настройки подключения к выбранному серверу. На скриншоте это настройки для MySQL. Выбраны опции «Specify custom settings» (это значит что используются не настройки по умолчанию, а вводятся вручную) и «Remote server» (значит что подключение выполняется к удалённому серверу; далее указываются его адрес и порт, логин и пароль, а также имя базы данных)


В случае успешного подключения продолжается установка — извлекаются файлы


Предлагается ввести ключ для Sam Broadcaster.
Если у Вас он не совсем подлинный, задумайтесь над галочкой, стоящей возле «Automatically activate product». Также имеются варианты купить ключ или же попробовать программу в демонстрационном режиме.


Установка завершена. Предлагается запустить Sam Broadcaster, почитать Readme-файл, воспользоваться помощником и купить у Spacial Audio хостинг. Тут уже по желанию.


Мы выбрали «Run SAM program», запускается.


Запустилась. Интерфейс состоит из трёх вкладок: Desktop A, B и C. На каждой из них расположены отдельные окна, сгруппированные по функциональности. Комплектацию можно беспрепятственно менять, сохранять и потом загружать. Здесь изображён мой (изменённый) вариант расположения окон на вкладке Desktop C, но принцип тот же: На Desktop A Вы увидите две деки, справа от них блок Voice FX. Ниже (слева направо) будут плейлист, очередь и история, Sound FX и часы. Это — основной блок воспроизведения по-умолчанию.


На вкладке Desktop B расположены логи, скрипты, настройки ретрансляторов (Encoders), Statistic relays и т.д. Нас в данный момент интересуют ретрансляторы. Роль SAMа заключается в генерации потока, однако он не занимается непосредственно доставкой сигнала к слушателям. Этим занимаются вещательные сервера а-ля Icecast и Shoutcast. Второй очень примитивный, не гибкий, не эффективный, и я его в такой же степени настойчиво не рекомендую, насколько я советую Icecast 2.
Итак, настраиваем ретрансляторы. В окне Encoders жмём чёрный плюс.


Появляется диалоговое окно, в нём нам предложено выбрать формат потока. MP3 распространённее AAC Plus, однако второй круче ибо при равном объёме данных обеспечивает передачу лучшего качества. Но максимальный битрейт у него — 128 kbps, в то время как у MP3 — 320 kbps. Но в этом плане безусловно рулит OGG, который вмещает до 500 kbps. Итак, пока что выбираем MP3.


На первой вкладке последующего окна настраиваем качество сигнала, тип кодирования (с акцентом на качество или на производительность), а справа настраиваем автозапуск создаваемого Encoder'а. Будьте осторожны при выборе битрейта канала. В выпадающем списке сначала идёт mono и лишь потом stereo, поэтому легко недоглядеть, ошибиться и выбрать желаемый формат но в моно-варианте.


Вторая вкладка — настройки сервера. На скриншоте это Icecast2 с настройками, предлагаемыми по-умолчанию. То есть, предполагается что Icecast установлен на этом же компьютере (Server IP -> localhost), работает на порте 8000 (стандартно) с точкой монтирования «/live» и заданным паролем. Если Icecast работает на удалённом сервере, сюда следует ввести его IP адрес, указать порт (если там используется не стандартный 8000 а другой), точку монтирования и пароль к ней.
Пароль задаётся в файле /usr/local/etc/icecast.xml. Вариант №1 — общий на все источники, найдите секцию authentication и отредактируйте в ней source-password на свой. Это — общий пароль на подключение к серверу. Вариант №2 — создайте точку монтирования и задайте пароль конкретно к ней. Как это сделать напишу позже.
Возвращаемся к настройке подключения в SAM Broadcaster: справа — информация о станции, выводимая сервером (название, жанр, описание), а также адрес сайта радиостанции, предложение опубликовать её в каталоге Spacial Audio (опять же акцентирую сюда внимание пользователей особо "лицензионной" версии), и затем настройка трансляции в поток метаданных. Если Вы хотите чтобы слушатели в своих плеерах видели испонителя и заголовок трека (берутся из ID3 тегов), включите эту опцию.


Следующая вкладка — сохранение всего эфира в файл.


Сохраняем, выбираем в списке появившийся ретранслятор, жмём на «Play» (чёрный треугольник, запускает encoder). Если параметры подключения к серверу указаны правильно, то статус будет «Encoding», справа от него будет указываться продолжительность работы и объём переданной информации.