MainRadiotalkCustom
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Icecast2+mpd+flashplayer - fail

 

2
corpse @corpse
Доброго времени суток всем!
Недавно озадачился созданием собственного онлайн радио и столкнулся с рядом проблем. Изначально попробовал обойтись чистым mpd из репозитория дебиана, благо, с версии 0.15 он умеет сам вещать. Сделал поток в ogg и столкнулся с проблемой. Единственный нормальный flash плеер, который умеет ogg, периодически заикается и впоследствии теряет поток (**********), причём на флешплеере пишет причины фейла. Спустя какое-то время нашёл на забугорном форуме диалог с разработчиком, который написал, что пока с этим ничего сделать не может. Решил перейти на mp3. Потанцевал с бубном, собрал мегабайт 20 зависимостей разных библиотек и в результате удалось собрать последний mpd с twolame в качестве mp3 энкодера. И вроде бы всё замечательно - легко цепляюсь к потоку, могу его прослушивать любым софтом на Win/Linux/Mac/FreeBSD (включая сам браузер, если URL вбить в адресной строке), но в любом flash плеере получаю облом - соединение просто не идёт. Указывал урл на поток через urlencode и открытым текстом, ставил в конце точку с запятой, указывал хостнейм и ip, перепробовал более 15 разных флеш плееров - облом.
Решил, что mpd отдаёт некошерный поток. Поставил icecast2 (2.3.2) в качестве фронтэнда для mpd, снова провёл последовательно все эксперименты со всеми флеш плеерами, что мне попадались - ноль эмоций. Другим софтом опять же, проигрывает без проблем на чём угодно.

Сервер на котором стоит айскаст и mpd находится за натом. На внешнем интерфейсе роутера - белый ip, tcp порт 8000 проброшен на внутренний серый адрес сервера с айскастом. В айскаст в качестве директивы host в конфиге указано доменное имя, привязанное к белому ip.

При подключении через браузер напрямую на урл потока получаю в еррорлоге айскаста вот это:
[2011-12-22 02:08:55] INFO source/source_main listener count on /stream.mp3 now 1
[2011-12-22 02:08:56] INFO source/source_main listener count on /stream.mp3 now 0
[2011-12-22 02:08:56] INFO source/source_main listener count on /stream.mp3 now 1
[2011-12-22 02:08:56] INFO fserve/fserve_client_create checking for file /favicon.ico (/usr/share/icecast2/web/favicon.ico)
[2011-12-22 02:08:56] WARN fserve/fserve_client_create req for file "/usr/share/icecast2/web/favicon.ico" No such file or directory
[2011-12-22 02:08:56] INFO source/source_main listener count on /stream.mp3 now 2
[2011-12-22 02:08:57] INFO source/source_main listener count on /stream.mp3 now 1

Подскажите, в чём может быть проблема и в какую сторону нужно копать?

И ещё вопрос - зачем в принципе нужен айскаст в связке айскаст+mpd при вещании по плейлисту, если mpd в этом случае генерирует поток в ворбисе, а айскаст фактически пережимает его в mp3, в то время как mpd сам прекрасно умеет генерировать стрим в mp3 с заданным битрейтом, передаёт метаданные и т.п.? Это ведь лишняя нагрузка на процессор.

49
IceMaster @IceMaster
1. айскаст ничего никогда не пережимает. Что ему дадут, то он и отдаст. Можешь хоть архивы через него слать
2. мпд кодирует mp3 сам через lame/twolame, отдает сразу на айскаст.
3. судя по логам - все правильно прописал, плеер коннектится к серверу, получает стрим, но сразу же отключается. А причина проста - нужно высрать заголовок с размером "файла", который требуется флешу, для этого в транке есть костыль. Можешь поиграть с kh-версией, от которой школьники в восторге, там еще пофиксили точки синхронизации, флеш не будет заикаться в случае если вместо синхронизации ему попадется кусок фрейма.
4. рекомендую обновить айскаст, ибо 2.3.2 дырявое говно

2
corpse @corpse
Спасибо! Причины понял, отзеркалю сервер и попробую собрать айс посвежее.