Мой ИП
Категории раздела
Мини-чат
Наш опрос
Главная » Статьи » Как создать своё интернет-радио |
История "Как я пришел к вопросу "Как создать
свое собственное интернет-радио?” уходит своими корнями в далекое
прошлое, и мало кого заинтересует, если вам нужны пошаговые действия.
Прежде, чем начать, качать программное обеспечение, писать
конфигурационные файлы и создавать красивую "обложку” вашему творению,
необходимо четко сразу решить, что вы будете выдавать в эфир. Какой
контент? Ибо без него все ваши труды будут напрасны и пополните
печальную статистику заведомо "мертворожденных” проектов.
ШАГ ПЕРВЫЙ: "КОНТЕНТ”
Сегодня, когда повсеместно работают механизмы по защите авторских прав, очень тяжело собрать материалы, которые будут радовать слух ваших слушателей и не опустошать ваш карман и нервы. Да и сама сеть переполнена всевозможными интернет-радиостанциями, начиная от ретрансляции обычных эфирных FM-станций и заканчивая любительскими, в разряд которых, вы, судя по всему, и будете претендовать.
Самое простое, что может прийти в голову, это использование свободных композиций, которых с каждым днем все больше и больше, но в большинстве случаев их качество мало подходит к эфиру, если конечно вы не открываете радио для совсем узкого круга истинных ценителей самиздата. Можно привлекать начинающих ДиДжеев, с их многочасовыми миксами типа "умца-умца бум-бум-бум” или же с полностью до наоборот. Только здесь кроются два неприятных момента: лицензионная чистота миксов и постоянство самих исполнителей. Именно второй момент чаще всего приводит к закрытию.
Как показывает практика, в Рунете одной музыкой сыт не будешь, да и доминирующее число потенциальных интернет-радиослушателей мотивируют свой "потенциальный” статус тем, что музыку можно слушать без радио, и к тому же, свою любимую, а не ту, что в эфирном плей-листе. И здесь возникает вопрос об уникальности вашего радио, чем оно лучше других?
"Прямой эфир” или как я его люблю называть - "Живой”. Только не надо подразумевать под этим ДиДжея, объявляющего название следующего трека, это конечно приукрасит, но не даст той "изюминки”. Использование разговорных шоу (которые так не любит молодежь на обычных эфирных станциях), транслируемых в прямом эфире с правильно подготовленными темами и хорошими ведущими, добавит отличный колорит вашему контенту в целом. Но такие шоу должны быть регулярными и выходить в одно и тоже время, иначе постоянные слушатели сменятся случайными.
Вы еще не передумали? Уже нашли и составили программу эфира? Отлично! Тогда вам есть смысл читать эту статью дальше.
ШАГ ВТОРОЙ: "РЕЖИМ ВЕЩАНИЯ”
Когда вы разобрались с содержимым будущего эфира, самое время озаботится временем работы и расписанием вещания. И это немаловажный фактор, который существенно может повлиять на выбор и конфигурацию программного обеспечения.
Не секрет, что не у всех есть возможность сидеть и вещать круглыми сутками или собрать достаточное количество музыкальных композиций и шоу. В таком случае в эфир можно выходить в определенное время, например: ежедневно с 18 до 23 часов. Здесь вам не нужны постоянный IP адрес, недешевое оборудование и сложное программное обеспечение, достаточно воспользоваться одним из многочисленных сервисов или программой NiceCast (к сожалению, она доступна только пользователям системы Mac OS) и переместиться дальше по статье на ШАГ СЕДЬМОЙ: "ЗАПУСКАЕМ ПРЯМОЙ ЭФИР”.
Если же вы решили вещать круглые сутки, то вам следует морально и физически готовиться к изучению достаточного количества программного обеспечения, его установки, настройки и эксплуатации. А если вы еще захотите поднять качество звучания, то придется обзавестись и дополнительным оборудованием, которое не всегда дешево.
Так, что решайтесь и выбирайте, но если вы решили передумать, то перескочите на ШАГ ПОСЛЕДНИЙ "GENERATION NEXT”, думаю не пожалеете.
ШАГ ТРЕТИЙ: "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ”
Вот мы и добрались до самой важной части вашей будущей интернет-радиостанции. На сегодняшний день существует достаточное количество различного ПО, в основной массе - это программы-генераторы (клиентское приложение), которые создают или организуют аудио поток. Выбирать придется вам самим, основываясь на таких параметрах как операционная система, тип потока и многих других второстепенных значений. Главное, что бы приложение умело весь воспроизводимый звуковой контент через вашу звуковую карту передавать или "упаковывать” в поток.
Но создав поток, его нужно "направить” на приложение сервер, которое будет взаимодействовать с плеерами потенциальных слушателей. Вы спросите: "А почему слушатели не могут подключаться сразу к нашему потоку? Неужели нет готовых решений все в одном?” В действительности слушатели не могут подключиться к "голому” потоку и объяснять почему не в компетенции этой статьи. Есть приложения все в одном, но как они устроенны вы поймете чуть позже, а так же и их минусы.
Если выбор с клиентскими частями у нас многообразен, то с серверными куда проще. Самым распространенным серверным ПО для интернет-вещания является Icecast (http://icecast.org), который распространятся бесплатно и доступен для Windows и Linux/UNIX систем. Он также обладает простым для восприятия конфигурационным файлом и предоставляет необходимый базовый набор функций управления. А так как этот продукт изначально был под платформу Linux/UNIX, именно на этом варианте я и остановлюсь.
Для дальнейшего повествования мне также придется выбрать и клиентские программы, которые совместимы с Icecast‘ом, а их перечень можно найти по адресу http://icecast.org/3rdparty.php.
Мой выбор пал на ices и NiceCast. Такой выбор очень полезен для станций, которые будут работать круглосуточно. NiceCast будет отвечать за прямые или "живые” эфиры, а ices за, так называемый, "беспилотный” режим работы.
ШАГ ЧЕТВЕРТЫЙ: "ОБОРУДОВАНИЕ”
Не менее значимый шаг, чем выбор ПО, ибо правильно подобранное железо залог вашей продуктивной работы! Я здесь не буду писать, что лучше, а что хуже, просто вкратце пробегусь по самому необходимому.
Что же необходимо? Это конечно же хорошая звуковая карта (проинтегрированным звуковым чипсетом тоже можно пользоваться, но он подойдет только в "беспилотных” режимах), микрофоны, студийные закрытые наушники, микшер и шнуры коммутации.
Можно долго спорить о том какие микрофоны "круче” или каких будет предостаточно для "говноэфира” (самое место для караочных или компьютерных микрофонов), но микрофон каждый должен подбирать под себя сам. С годами сложился стандарт де-факто, что для вещания очень хорошо подходит Shure SM7B, но не стоит забывать и о более дешевых (по сравнению с Shure SM7B) репортерских микрофонах компании AKG.
Примерно тоже самое можно сказать и про наушники, каждый выбирает под себя сам, но они обязательно должны быть закрытыми! Вы же не хотите, чтобы у вас в эфире было многократное эхо?
А вот с звуковыми картами и микшером надо быть очень внимательными! Карты должны быть оборудованы XLR и TRS входами и подключаться к компьютеру по FireWire или USB 2.0, но первое предпочтительней. Но самым замечательным решением могут быть микшеры со встроенным звуковым интерфейсом, например ALESIS MultiMix 8 FireWire или MultiMix 8 USB 2.0, где отпадает необходимость покупки звуковой карты.
Сюда можно добавить еще и различные ламповые преампы и компрессоры, но это скорее уже качественные улучшения, чем первоначальная необходимость.
ШАГ ПЯТЫЙ: "ПОДНИМАЕМ ICECAST”
После теоретической подготовки приступаем к созданию сервера вашей будущей станции. Я изначально подразумеваю, что у вас есть опыт установки и настройки Linux/UNIX и вам приходилось ставить программное обеспечение из исходников.
Прежде всего необходимо скачать Icecast с сайта производителя http://icecast.org, исходники lame (это очень важно!) и другие библиотеки (если они у вас уже не установлены). Внимательно ознакомьтесь с перечнем задаваемых опций при компиляции и вперед: make и make install.
Когда закончиться сборка и инсталляция необходимо привести конфигурационный файл icecast.xml в соответствии с вашими запросами.
<icecast> <limits> <clients>1000</clients> <sources>5</sources> <threadpool>5</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <!– If enabled, this will provide a burst of data when a client first connects, thereby significantly reducing the startup time for listeners that do substantial buffering. However, it also significantly increases latency between the source client and listening client. For low-latency setups, you might want to disable this. –> <!– <burst-on-connect>1</burst-on-connect> –> <!– same as burst-on-connect, but this allows for being more specific on how much to burst. Most people won’t need to change from the default 64k. Applies to all mountpoints –> <!– <burst-size>65535</burst-size> –> </limits>
Шапку файла обычно без особой надобности не трогают, да и я вам не советую этого делать, если конечно же вы не отдаете себе полный отчет о своих действиях.
<charset>UTF8</charset>
<authentication> <!– Sources log in with username ’source’ –> <source-password>yoursourcepassword</source-password> <!– Relays log in username ‘relay’ –> <relay-password>yourrelaypassword</relay-password>
<!– Admin logs in with the username given below –> <admin-user>yournameadminuser</admin-user> <admin-password>youradminpassword</admin-password> </authentication>
В приведенном выше фрагменте у вас не должно вызвать трудностей, в теге <charset></charset> указывается кодировка в которой будет отображаться вся информация в потоке. ПОМНИТЕ! Icecast не производит конвертирование информации, это надо делать вручную!!!
В последующих тегах вы указываете пароли для пользователей "source” и "relay”, с помощью которых происходит авторизованное подключение к серверу вашей клиентской программы вещания и учетные данные для административного управления через web-интерфейс.
<hostname>your.site.com</hostname>
<listen-socket> <port>8000</port> </listen-socket>
Следом задаем адрес хоста и номер порта, через который и будет идти взаимодействие.
<mount> <mount-name>/musicwave</mount-name> <charset>UTF8</charset> <stream-name>Моё интернет-радио "Моё радио”</stream-name> <stream-description>Любительское интернет-радио</stream-description> <stream-url>http://your.site.com</stream-url> <bitrate>64</bitrate> <username>source</username> <password>yoursourcepassword</password> <intro>/radiointro64.mp3</intro> <fallback-mount>/pee.mp3</fallback-mount> <fallback-override>1</fallback-override> </mount>
<mount> <mount-name>/listen</mount-name> <charset>UTF8</charset> <stream-name>Моё интернет-радио "Моё радио”</stream-name> <stream-description>Любительское интернет-радио</stream-description> <stream-url>http://your.site.com</stream-url> <bitrate>64</bitrate> <username>source</username> <password>yoursourcepassword</password> <intro>/radiointro64.mp3</intro> <fallback-mount>/musicwave</fallback-mount> <fallback-override>1</fallback-override> </mount>
В этой секции мы немного задержимся подольше, именно здесь задаются ключевые моменты или как вы уже заметили "точки”:
<mount-name>/listen</mount-name> - имя точки подключения к потоку. Обратите внимание, что оно обязательно начинается с слэша!
<charset>UTF8</charset> - аналогично глобальному тегу;
<stream-name>Моё интернет-радио "Моё радио”</stream-name> - Название потока, именно оно будет отображаться в плеерах ваших слушателей;
<stream-description>Любительское интернет-радио</stream-description> - описательная часть;
<stream-url>http://your.site.com</stream-url> - адрес сайта. Многие плеера (такие как iTunes) отображают эту строку и даже позволяют по клику перейти на сайт;
<bitrate>64</bitrate> - Битрейт вашего потока! Будьте внимательны!!! Icecast не переоцифровывает поток!!! Этот параметр носит справочный характер для неинтеллектуальных плееров;
<username>source</username> - Имя пользователя для подключения трансляции потока;
<password>yoursourcepassword</password> - Пароль для подключения трансляции потока;
<intro>/radiointro64.mp3</intro> - Интро-ролик, который будет воспроизводиться при подключении. Битрейт и частота должны совпадать с параметрами потока!
<fallback-mount>/musicwave</fallback-mount> - Ссылка на звуковой файл, точку или внешний поток, на который будет происходить перемещение слушателей, в случае пропадания сигнала. Битрейт и частота должны совпадать с параметрами потока!
<fallback-override>1</fallback-override> - Возвращать слушателей на восстановившийся поток, перешедших по <fallback-mount>;
Благодаря двум последним параметрам можно организовать безболезненное круглосуточное вещание. Точка /listen служит для прямых или "живых” эфиров, а /musicwave для "беспилотного” режима. Обратите внимание на иерархическую лестницу в последних параметрах обейх точек. Когда заканчивается прямой эфир, поток на /listen перестает существовать и все слушатели перемещаются на точку /musicwave, а уж если произойдет техническая неполадка с "беспилотным” режимом, то в эфир пойдет звук из файла pee.mp3. Существует маленькая загвоздка с автоматическими перемещениями обратно, которая заключается в строгом соблюдении восстановления потоков. Если слушатель, подключившийся по /listen, переместился на /musicwave, а потом еще и на /pee.mp3, то возвращать его надо путем восстановления потока вначале на /musicwave и только после на /listen.
<fileserve>1</fileserve>
<paths> <!– basedir is only used if chroot is enabled –> <basedir>/usr/local/share/icecast</basedir>
<!– Note that if <chroot> is turned on below, these paths must both be relative to the new root, not the original root –> <logdir>/var/log/icecast</logdir> <webroot>/usr/local/share/icecast/web</webroot> <adminroot>/usr/local/share/icecast/admin</adminroot> <!– <pidfile>/usr/local/share/icecast/icecast.pid</pidfile> –>
<!– Aliases: treat requests for ’source’ path as being for ‘dest’ path May be made specific to a port or bound address using the "port” and "bind-address” attributes. –> <!– <alias source=”/foo” dest=”/bar”/> –> <!– Aliases: can also be used for simple redirections as well, this example will redirect all requests for http://server:port/ to the status page –> <alias source=”/” dest=”/status.xsl”/> </paths>
<logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <!– <playlistlog>playlist.log</playlistlog> –> <loglevel>3</loglevel> <!– 4 Debug, 3 Info, 2 Warn, 1 Error –> <logsize>10000</logsize> <!– Max size of a logfile –> <!– If logarchive is enabled (1), then when logsize is reached the logfile will be moved to [error|access|playlist].log.DATESTAMP, otherwise it will be moved to [error|access|playlist].log.old. Default is non-archive mode (i.e. overwrite) –> <!– <logarchive>1</logarchive> –> </logging>
<security> <chroot>0</chroot> <changeowner> <user>radio</user> <group>radio</group> </changeowner> </security> </icecast>
Редактировать завершающую часть файла обычно не приходится, но иногда это сделать нужно, поправить пути или задать пользователя для chroot.
Теперь необходимо записать файлы radiointro64.mp3, pee.mp3 и разместить их в корне Icecast‘а.
И на этом наша работа с Icecast заканчивается, главное прописать его запуск при старте системы, запустить и проверить его работу по адресу http://your.site.com:8000/admin/. Не пугайтесь, если вы не увидите созданных точек, они появятся на странице только после того, как на них подадите потоки.
ШАГ ШЕСТОЙ: "ЗАПУСКАЕМ ICES”
Вы передохнули от "танцев с бубнами” после сборки и инсталляции Icecast? Да? Еще не передумали? Тогда будем двигаться дальше и запускать вашу станцию в "беспилотный” режим, а обеспечивать вам его будет приложение ices, которое необходимо скачать в исходниках с сайта http://icecast.org. Кстати для него нам также потребуются исходные коды библиотеки lame.
И снова проверяем все опции при сборке, затем make и make install. Прошло удачно? Ок. Приступаем к конфигурированию: находим файл ices.conf и правим:
<ices:Configuration xmlns:ices=”http://www.icecast.org/projects/ices”> <Playlist> <!– This is the filename used as a playlist when using the builtin playlist handler. –> <File>/your/path/to/playlist.txt</File>
Прежде мы прописываем путь к файлу плей-листа, который должен быть доступен для чтения.
<!– Set this to 0 if you don’t want to randomize your playlist, and to 1 if you do. –> <Randomize>1</Randomize>
Задаем режим воспроизведения в случайном порядке.
<!– One of builtin, perl, or python. –> <Type>builtin</Type> <!– Module name to pass to the playlist handler if using perl or python. If you use the builtin playlist handler then this is ignored –> <Module>ices</Module> <!– Set this to the number of seconds to crossfade between tracks. Leave out or set to zero to disable crossfading (the default). –> <Crossfade>5</Crossfade> </Playlist>
В следующем блоке вы можете задать время в секундах для плавного перехода между песнями.
<Execution> <!– Set this to 1 if you want ices to launch in the background as a daemon –> <Background>1</Background>
Задаем режим работы фоновым процессом.
<!– Set this to 1 if you want to see more verbose output from ices –> <Verbose>0</Verbose> <!– This directory specifies where ices should put the logfile, cue file and pid file (if daemonizing). Don’t use /tmp if you have l33t h4×0rz on your server. –> <BaseDirectory>/tmp</BaseDirectory> </Execution>
<Stream> <Server> <!– Hostname or ip of the icecast server you want to connect to –> <Hostname>127.0.0.1</Hostname>
Так как ваш ices будет работать на той же машине где и Icecast, то есть смысл прописать имя хоста через 127.0.0.1.
<!– Port of the same –> <Port>8000</Port>
Указываем на каком порту у вас работает Icecast.
<!– Encoder password on the icecast server –> <Password>yoursourcepassword</Password>
Помните, мы с вами прописывали для точки /musicwave пользователя "source” и пароль? Именно этот пароль здесь и указываем.
<!– Header protocol to use when communicating with the server. Shoutcast servers need "icy”, icecast 1.x needs "xaudiocast”, and icecast 2.x needs "http”. –> <Protocol>http</Protocol> </Server>
<!– The name of the mountpoint on the icecast server –> <Mountpoint>/musicwave</Mountpoint>
Указываем точку на которую подаем поток.
<!– The name of the dumpfile on the server for your stream. DO NOT set this unless you know what you’re doing. <Dumpfile>ices.dump</Dumpfile> –> <!– The name of you stream, not the name of the song! –> <Name>Моё интернет-радио "Моё радио”</Name>
Задаем имя станции, которое будет отображаться в экранах плееров.
<!– Genre of your stream, be it rock or pop or whatever –> <Genre>Умца-Умца-Бум-Бум-Бум</Genre>
Уточняем в каком жанре вы будете вещать.
<!– Longer description of your stream –> <Description>Любительское интернет-радио</Description>
Описываем ваш поток. Ничего не напоминает? Да, тоже самое мы уже прописывали в конфигурации Icecast, но прийдется попотеть еще раз. Не у всех плеера "умные”.
<!– URL to a page describing your stream –> <URL>http://your.site.com</URL>
И адрес еще разок.
<!– 0 if you don’t want the icecast server to publish your stream on the yp server, 1 if you do –> <Public>1</Public>
Самый интересный параметр. Если ставим 1, то Icecast будет пиарить ваш "беспилотный” режим в каких-то каталогах, но особого притока слушателей не дает.
<!– Stream bitrate, used to specify bitrate if reencoding, otherwise just used for display on YP and on the server. Try to keep it accurate –> <Bitrate>64</Bitrate>
А вот здесь будьте внимательны, указываем битрейт вашего потока и он должен совпадать с параметрами установленными в Icecast.
<!– If this is set to 1, and ices is compiled with liblame support, ices will reencode the stream on the fly to the stream bitrate. –> <Reencode>1</Reencode>
Самый магический и потребляющий много ресурсов параметр. Именно он отвечает за перекодирование потока на лету! Если ресурсы очень критичны, то можно поставить 0, но и не забудьте перекодировать все композиции из плей-листа с параметрами заданными в Icecast.
<!– Number of channels to reencode to, 1 for mono or 2 for stereo –> <!– Sampe rate to reencode to in Hz. Leave out for LAME’s best choice –> <Samplerate>44100</Samplerate> <Channels>1</Channels>
И последние штрихи, прописываем частоту и количество каналов.
</Stream> </ices:Configuration>
С конфигурированием покончено, теперь осталось загрузить музыкальный контент в mp3, сформировать плей-лист, прописать ices в автозапуск и стартовать "беспилотный” режим.
Загружать мелодии лучше в одну папку, желательно избегать имен файлов на русском языке или с использованием нетрадиционных символов. В папке /your/path/to создайте текстовый документ с именем playlist.txt с примерным следующим содержанием:
/your/path/to/music/track1.mp3 /your/path/to/music/track2.mp3 /your/path/to/music/track3.mp3 /your/path/to/music/track4.mp3 /your/path/to/music/track5.mp3
обязательно после последнего трека должен быть переход на новую строку!
Теперь уже точно все. Запускайте ices и приглашайте первых слушателей по адресу http://your.site.com:8000/listen для тестирования "беспилотного” режима.
ШАГ СЕДЬМОЙ: "ЗАПУСКАЕМ ПРЯМОЙ ЭФИР”
Вы уже в нескольких шагах от заветной мечты, когда на дверь повесите бумажку с надписью "ТИХО! ИДЕТ ЭФИР!” или даже прикрепите светящуюся табличку "ON AIR”. Я буду приводить пример организации прямого эфира с помощью программного обеспечения NiceCast на компьютере iMac 20″.
Чем мне нравится эта программа, так это ее логическая простота, в главном окне всего 6 вкладок и большая кнопка "Start Broadcast”. В первой вкладке вы выбираете ваш звуковой интерфейс, во второй прописываете Name, URL, Genre, Description (при настройке Icecast и ices делали не однократно). На вкладке Quality мы устанавливаем битрейт, частоту и количество каналов (не забываем, что эти параметры должны быть идентичным с Icecast и ices).
Я уже упоминал эту программу на втором шаге и писал, что она очень удобна, когда ваша станция не будет работать круглосуточно. Так вот если сейчас больше не менять никаких параметров и щелкнуть "Start Broadcast”, то вы окажитесь в эфире. По какому адресу пригласить гостей? Все очень просто, выбираем вкладку Share и рассылаем адресную строку, которая там указана.
Но наша задача сейчас другая, пустить поток с вашего компьютера на сервер с установленным и запущенным Icecast‘ом. Для этого в программе вызываем окно Server, щелкаем по плюсику и прописываем данные вашего сервера. Главное не ошибитесь с указанием имени пользователя, пароля и точки /listen.
Жмем "Start Broadcast” и слушатели, которые только, что наслаждались музыкой на /musicwave, автоматически переместились на /listen и внимательно вас слушают.
Вот и весь процесс создания интернет-радиостанции своими руками, теперь вам только осталось разрекламировать ваш адрес http://your.site.com:8000/listen и в путь.
ВОПРОСЫ ПРОПУЩЕННЫЕ РАНЕЕ
В этой статье я намерено пропустил ряд вопросов для того, чтобы вам был понятен "скелет” принципа организации интернет-вещания. Я ни разу не упомянул о конфигурации машины под сервер Icecast, но спешу вас заверить, что при 8 часовом плей-листе и включенном декодировании на лету все это неплохо может функционировать на Pentium III 700 MHz и 400 Mb оперативной памяти.
Не стал рассматривать настройку конкретных аппаратных средств, так как с многими бывают исключительные ситуации, которые требуют отдельного рассмотрения и по большей части относятся к вопросам не создания интернет-радио, а настройки системы.
Еще одним любопытным вопросом можно выделить Skype, а точнее его неадекватное поведение с многоканальными звуковыми картами. Не знаю почему он игнорирует настройки звука в самой системе и настройки драйвера, но он всегда считает, что микрофон находится на 1 канале.
Отдельной статьей можно вынести усовершенствования механизма работы ices и создания практичного web-сайта вашей станции, написанием которой, может быть я займусь в ближайшее время, но не факт.
| |
Просмотров: 3794 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |