Pull to refresh

Comments 14

Пользуюсь streamTranscoderv3 на одной из станций.
Но если 1 всего поток и просто в разных битрейтах то значительно лучше воспользоваться MPD
Он играет плейлист и может вещать на несколько айскастов в разных битрейтах и форматах.
Я имею ввиду это удобно если на всех потоках имграет одна и та-же песня просто в разном кач-ве и форматах.
А вот если нужно например разные жанры музыкальные на разных потоках тогда и пригодится этот streamTranscoderv3 или можно запускать несколько MPD. Кстати судя по замерам MP кушает меньше а делает больше. Можно еще подключить mpdscribble или lasfmsubmitd и постить пригрываемые треки на last.fm.
Да и самим воспроизведением можно управлять хоть с телефона(у MPD куча интерфейсов и клиентов) Я написал на python для django сайта панель управления для диджеев и для админа управлять Icecast2/MPD.
P.S. MPD может и без всяких Icecast2 музыку стримить. Нужно лишь сконфигурировать его чтобы он работал в режиме радиосервера еще — тогда он будет и автодиджей и радиосервер в одном лице.
К сожалению, вещание через MPD несет очень много проблем. Главная его проблема — это дизайн, скажем плеер очень любит открывать и закрывать аудиоустройство, в случае вещания — это шут-плагин, что ведет к падению радио. Каждый аудиовыход строит свою цепочку фильтров, написать фильтр для подмешивания голоса не получилось, пришлось костылять более низкоуровнево. Много интересного можно узнать при исправлении работы с тегами. В общем, мы решили написать свою вещалку. Что-то вроде гибрида транскодера + мпд + смешивание потоков в реалтайме. В отличии от aac, у нас aac+, отправляемое по rtsp + rtmp + icy (icecast). Правда, у меня никак не дойдут руки все это дописать, потому крутим пока mpd, но скоро ему придет конец.
Да, у MPD есть некоторые проблемы, но я описал схему только одного вещания из плейлиста на потоки с разными форматами и битрейтами. А насчет подключения живых шоу то действительно MPD будет выключен и нужно будет как-то решать вопрос перекодировки стрима на потоки с другими форматами/битрейтами.
Насчет подмешивания голоса можно подсмотреть как реализовано в code.google.com/p/ardj/ там много чего заюзано и festival и jabber bot итд — интересный проект.
Насчет своей вещалки — уже писал на NodeJS сервер и вещалку(кроме обычных плееров, он еще умеет стримить на странице в нужном пользователю формате и через html5 audio работать). Кое-что для него взял от Node-Icecast-Streamer и node-icecast-stack но это больше эксперименты наверное. слишком память у меня там сильно течет… никак не допилю. знаю что не лучшая идея была писать на NodeJS =) Думаю написать что-нить на своем родном питоне).
Смотрел я этот ardj, ничего интересного там нет, а жаббер-боты у нас с самого основания радио. Фестиваль не только имеет отвратительный синтез, но и очень высокие требования к ресурсам. А плеер через HTML можно и на айскасте.
По поводу вещания со странички и HTML5. Было очень много шума о том, что вот дескать придет революция в мир веба и настанет сразу глобальное добро. На практике хочешь что-то мультимедийное замутить, скажем голос добавить в эфир — лезем за старым и «ненужным» флешем, на сервере миксуем и пихаем в эфир. Аналогично со звонками в эфир.

А ваша вещалка просто готовые стримы кидала, или пережимала стрим на уровне семлов? Как там дела с aac+?
>А ваша вещалка просто готовые стримы кидала, или пережимала стрим на уровне семлов? Как там дела с aac+?
Нам нужен только mp3 другие форматы не рассматривали.
Потоки все в mp3 — 64,96,128 kbps
Одну из наших станций ребродкастит frodio.com и там есть наш поток в формате acc

Вещалка в целях экономии ресурсов стримит мастер поток mp3/128kbps и ниче не перекодирует так как файлы и так строго все mp3/128kbps. Постепенно добавляем в них обложки альбомов итд.
Но это все та вещалка что на NodeJS и она сейчас не удел — как я говорил память утекает.

> А плеер через HTML можно и на айскасте.
Но только пара браузеров смогут стримить через html5 audio.
Ну да джаббер ботов написать не проблема.

> На практике хочешь что-то мультимедийное замутить, скажем голос добавить в эфир
У нас есть живые шоу — диджеят реальные диджеи из америки и европы на реальных винилах и сидидеках которые говорят в микрофон во время шоу — у них все через пульт и вещается на станцию.
На тему Icecast скажу что есть два отличных репозитория от Карла Хайеса icecast-kh обновляется почти ежедневно.
И еще от русских ребят из радио анон. icecast-ra — судя по коммитам они добавили поддержку статистики в формате json, персональныйх паролей для каждого диджея итд.
Много говорил с разработчиками Icecast2 они обещали выпустить новую версию еще до конца прошлого года а воз и ныне там. Скажу лишь что в следующей версии будут лишь багфиксы а вот в версиях после появятся мои коммиты и доработки(я добавил поддержку geoip локации слушателей, более широкую статистику с выводом на карты гугла и обновленный интерфейс админки. И еще пара моментов насчет более близкой интеграции Icecast2 с nginx например чтобы nginx перемалывал xsl файлы с помощью ngx_http_xslt_module ну и балансировка нагрузки между нарзными потоками итд).
Самое главное забыл — это играющий трек и слушатели с их данными будут добавляться Icecast'ом сразу в redis и можно шустро получать оттуда данные и не беспокоить лишний раз радиосервер) Это опционально.
Ибо у айскаста посещение страницы статистики приравнивается к слушателю. тоесть если открыть старинцу статистики кроме ресурсов на генерацию этих страниц, занимается еще и один слот клиента. а мог ведь быть слушатель а не какой-то скрипт или бот.
Сорри за спам) я пойду.
И вовсе не спам. Всегда приятно послушать знающего человека, продолжайте)
А у вас есть патчи, которые влияют непосредственно на вещание? Могли бы обменяться патчсетами (все наше в репозитории). У нас персональные пароли для диджеев, исправление кириллицы (из микса кодировок) и немного переделано подключение слушателя для стриминга aac+/wav. Что касается xsl, то можно вообще файлсерв выключить, логи у нас пишет патченый mpd (тоже можно взять в репозитории), в этих логах можно взять все необходимое, статус раздавать статикой (сейчас пишу обновление вещалки, кроме всего прочего вещалка еще обложки будет вытаскивать из mp3-файлов и публиковать вместе со статусом). Карты с geoip у нас генерятся обычным перловым скриптом, без всяких гугломапсов. В общем, можно сотрудничать.
Да насчет обложек тоже недавно добавили такой функционал — сейчас сделали пока просто дергаем из тегов mp3-шки чаще быстрее чем ждать резултат с last.fm/google итд. Ну мои подопечные станции все зарубежные — англия/сша так что поддержка кириллицы не в приоритете совсем. Насчет geoip сначала вообще делал nginx proxy перед icecast2 с балансировкой нагрузки, геобалансировкой, и плюс подставлялись геоданные к юзерагенту так что типа:

...

proxy_set_header User-agent $geoip_city_country_code,$geoip_city_country_name,$geoip_city,$geoip_latitude,$geoip_longitude,$http_user_agent;
proxy_pass icecast2-server.com:port;
...


И потом уже гео данные фигурировали в админке айсика и во всех логах итд.
Имхо лучше добавлять такие данные при добавлении слушателя чем постоянно генерить perl скриптом и каждый раз перелопачивать айпишники и записи в бд.

P.S. fileserve тоже выключен скрипты и стили в cdn хостятся.
Могу сейчас выложить на github кое-что из интерфейса для стандартного айсика.
Сделано 2 темы одна на jquerymobile а вторая Twitter Bootstrap.
Sign up to leave a comment.

Articles