Интернет-вещание "заикается"

Aki

New member
Добрый день.

Вынужден ещё раз просить "помощь зала".

Ситуация: пытаюсь наладить вещание на удалённые точки через сеть. Есть сервер IceCast (Win32), работает давно (использовал EZ Stream с кучей скриптов - неудобно, но работало в общем-то как часы).

Поставил RadioBOSS, прописал точки монтирования, использовал три потока (ogg, aacp и mp3). Заметил, что при достаточно большой доле запусков (старт автоматом, вместе с загрузкой системы), а именно семь-восемь из десяти, происходит постоянное "заикание" вещания по сети. Оно выражается в периодическом пропадании сигнала, иногда раз в минуту-две, иногда реже, а иногда в непрерывном "треске", при котором даже слышно, что проигрываемая музыка как бы замедленна. Когда пропадания редкие, но длительные, удалённые приёмники показывают отсутствие сигнала от сервера, иногда с последующим "отпаданием" точки монтирования и быстрым появлением её снова (в логах RadioBOSS об этом записей нет). Увеличение размера приёмных буферов частично проблему решает, но в общем это не выход. Наиболее заметно это на форматах OGG, AAC...

Музыка на "контрольке" - на звуковой карточке, подаваемая туда самим RadioBOSS всегда в полном порядке.

Системы пробовал XP w/sp3 и Win2008 Std w/sp2 (на первой тренируюсь, вторую готовлю для работы в режиме "автопилота"). На XP это как-то само-собой рассосалось, по крайней мере сейчас большинство запусков беспроблемные. На Win2008 проблема в полный рост - удачно запуститься удалось за день пару раз. Будучи один раз правильно запущеной, программа работает долго без проблем.

Было подозрение на недостаточность выделения времени кодировщикам, пробовал выставлять приоритеты через настройку программы - результата ноль.

Ещё наблюдение (возможно не в тему): логотип при старте рисуется посередине экрана. Ещё через пару-тройку секунд он рисуется ещё раз, как бы поверх первого, немного выше, после чего запускается программа, интересно, зачем?

В связи с этим вопрос: в какую сторону посмотреть, покрутить, чтобы гарантированно избавиться от такой ситуации? Прошу прощения, если описал несколько сумбурно...
 
Очень странная пробема. Возможно, программа запускается слишком рано, и после нее стартует какой-либо сервис, и из-за этого что-то потом работает не так.

Также, проверьте связь с интернет/сетью - возможно, просто не хватает пропускной способности канала.

Как вариант, можно попробовать сделать программу которая будет откладывать запуск Radioboss на некоторое время, чтобы он запускался гарантированно после запуска системы, возможно это решит проблему. Напишите если такой вариант вас устроит.
 
Нет, с сетью полный порядок, тем более, что "икота" проявлась даже в режиме, когда я попробовал специально поставить IceCast на localhost (т.е. всё на одном компьютере)...

Вариант с задержкой запуска по-видимому тупиковый, т.к. сегодня, занимаясь тем, что пытался найти хоть какие-то зависимости, таковых от типа запуска не нашёл (запускал и автоматом, и вручную, и перезапускал и т.д.). Однако обнаружил, что если программа стартовала "неудачно", сделать: Вид -> BroadCast Statistic -> Stop -> Start (т.е. перезапустить вещание вручную), "икота" пропадает (правда, imho не до конца, т.к. на сетевой контрольке всё-равно слышу спорадическое "подрагивание" звука на aac/aac+).

Загрузка процессора программой 30-35% (P4D#915), ещё процентов 10 забирают другие программы.

Да, ещё момент. Занимаясь "вкл-выкл" вещательных потоков, обнаружил в диспетчере задач вдруг появился вначале один "лишний" lame, потом ещё один.... При этом диспетчер показывал работу только одного lame, но с удвоенной и соответственно утроенной затратой ресурса процессора... "Прибитие" неработающих lame на процессе работы программы не сказался...

p.s. Ещё вдогонку: выявилась зависимость от того, включено ли основное звуковое устройство вывода. Если поставить None, то "провалы" вещания становятся реже, но зато такие длинные, что клиенты регистрируют потерю сервера (вначале обрыв вещания - статус 200, затем 404)...
 
В общем, похоже, что это надо править. Попробуйте сделать вот так:

704806.gif


После чего перезагрузитесь и запустите вещание. Контроль звука должен быть на клиенте, подключенном к вещательному серверу.
Примечательно, что включение основного звукового устройства (и перезагрузка), заикания не убирает. От заиканий я могу избавиться только если после всего сделаю "Вид" -> "Broadcasting Statistics" -> "Stop" -> "Start" для каждого работающего потока.

! Если нажать много раз "Start" и не нажимать Stop - запускается МНОГО кодировщиков на один единственный поток - упоминал выше. Господа, ну, ей-Богу, глюк на глюке... В логах при этом пишет "Cannot start broadcasting: Error -1

Сосчитайте сами, сколько здесь запустилось кодеков после того, как я несколько раз подряд нажал "Start":

704891.gif


p.s. Да, описанная выше проблема с "дрожанием звука" (когда заикания нет) похоже к программе отношения не имеет - уже хорошо (если кратко - это похоже хардверная проблема конкурирующих устройств на шине PCI)

p.p.s. С проблемой запуска множества потоков, мне видится достаточно простое решение в преобразовании двух конопок "Start" и "Stop" в одну. Если поток запущен, кнопка должна иметь надпись "Stop" и выполнять соответствующее действие. После нажатия, для юзера кнопка "деактивируется", становясь серой, и тем самым говоря "второй раз нажать нельзя". После того, как поток выгружен (как я понимаю, это контролируется, ибо я здесь же в окне вижу состояние), кнопку можно активировать, изобразив на ней "Start" и привязав соответствующее действие... далее алгоритм такой же: по нажатию кнопка "серая", с запуском потока изображается "Stop"...

Надеюсь, не сильно утомил? :)
 
Насчет заиканий/дрожаний звука, может это и есть следствие аппаратного конфликта? Тем более, пару лет назад что-то подобное обсуждалось, и решения были разные: для карт c-media установка последних драйверов; выкидывание старых устройств (в частности, видеокарт) из компьютера - они тоже могли приводить к старнным глюкам.
Вообще, я бы советовал пока обновить все драйвера (а лучше, поставить свежую систему только с необходимыми драйверами) и тестировать уже на ней.
Также, скоро выходит новая версия RadioBOSS с множеством исправленных ошибок, думаю, она должна работать лучше.

По поводу объединения кнопок Start/Stop, возможно Вы правы. Также, наверное будет добавлена кнопка для перезапуска всех потоков.
 
Нет, это стоит рассматривать как разные явления. С дрожанием разборки произошли - его удалось сымитировать без участия RadioBOSS. А вот заикания я всё-таки прошу проверить. У меня они прекрасно возникают вновь и вновь, как только я поставлю переключатели выходов в положение, как на картинке выше (переключатель подслушки в общем-то индифферентен). На разных конфигурациях, на разных ОС, и даже, когда весь софт на чистой машине без подключения к сети (всё на localhost - я не поленился проверить ещё раз). Я не спорю, возможно у вас оно и было исправлено и вы этого уже не видите, но судя по Вашей реакции, проблема ранее как-то не освещалась, но и не исправлялась специально (ибо мало кому в голову приходит выключить основной выход). А ведь она была ещё на 3.x, тогда я постеснялся её озвучить, поскольку посчитал её за глюки демо-версии...

---- добавлено позже ----
"Заикание" возникает двух видов.

Первый вид - это периодические "отваливания" от точки монтирования с последующим восстановлением. Настройки звука - как в ответе #3 выше. Клиент видит это как потерю потока. В логах ничего нет. Звуковой поток от потери до потери идёт ровный. Потери один раз в несколько минут, интервал варьируется минут от двух до пяти-восьми. Примечательно, что реакция на воздействия до клиента идёт очень длительное время - 25-30 секунд (по-видимому, полностью заполняется буфер на сервере). Однако старт потока доходит быстро, как и положено.

Второй вид - бесконечное "скоростное икание", причём по ощущениям, тональность звука остаётся такой же как в оригинале, а вот всё остальное замедленно в два раза, однако длинные музыкальные фрагменты длятся тоже вроде нормально. Перехват на клиенте показывает, что звук действительно состоит как бы из коротких кусочков, повторяющихся по два раза (фреймов?). Возникает в двух случаях: первый - иногда при старте с установками, как на рисунке ответа #3; второй - когда при автозапуске плейлиста возникает штук 10-15 "unable to play. Error code 41 (unsupported format) [на эту тему уже писал], затем попадает файл, который играется. При этом возникают по две записи в логе на каждый поток: Connection/encoder died и тут же вторая Connected to server.
При этом есть нюансы: якобы "неподдерживаемых файлов" должно быть не меньше, чтобы потоки успели "умереть", но и не превышать какого-то определенного количества (по-видимому, здесь критерием выступает время). Мистика, короче...

Драйверы и пр. совершенно ни при чём, т.к. у меня явление стабильно возникает на совершенно разных конфигурациях и разных ОС, чаще во втором "варианте", иногда в первом.

Очень надеюсь на новую версию...
 
Выключение основного выхода не очень редкая операция. Особенно это используется на серверах, где просто нет звуковых карт, и используется только везание в сеть. Т.е. если не менять настройки выхода (на какие колонки) то должно работать.
Правда, недавно удалось воспроизвести ошибку с нехваткой буфера, т.е. как раз происходят пропадания звука при воспроизведении потока. Сейчас разбираемся из-за чего это может быть. Думаю, в следующей версии уже будет исправлено.
 
Я надеюсь, что у меня не эффект плацебо, и здесь действительно стало лучше. Потоки включаются-выключаются замечательно, лишние задачи тоже пропали, буфер теперь нормально заполняется независимо от включения основного звукового устройства. По крайней мере, "отваливаний" уже не наблюдаю...

--- Добавил позже ---
Появился эффект "подтормаживания" основого окна программы при открытии "Broadcasting statistics" - ежесекундно (но неравномерно) замирает на время от пары десятых до полусекунды...
Вроде ни на что отрицательно не влияет, но как-то....
 
Aki сказал(а):
Я надеюсь, что у меня не эффект плацебо, и здесь действительно стало лучше. Потоки включаются-выключаются замечательно, лишние задачи тоже пропали, буфер теперь нормально заполняется независимо от включения основного звукового устройства. По крайней мере, "отваливаний" уже не наблюдаю...
Пока что тесты показывают, что все нормально, но т.к. ошибка "плавающая" (то есть то  нет), точно сказать сложно полностью ли она исправлена.

Aki сказал(а):
Появился эффект "подтормаживания" основого окна программы при открытии "Broadcasting statistics" - ежесекундно (но неравномерно) замирает на время от пары десятых до полусекунды...
Вроде ни на что отрицательно не влияет, но как-то....
Да, это будет т.к при открытии этого окна опрашиваются все вещательные сервера. Сейчас это делается в том же потоке где рисуется интерфейс - отсюда и тормоза окон. На воспроизведение влиять по идее не должно, т.к. оно идет в отдельных потоках.
 
Да, на воспроизведение не влияет - только на прорисовку и обработку запросов от пользователя, но по-видимому не критично, т.к. запросы не теряются...
 
Теоретически, если используются все 5 каналов вещания, и все 5 серверов очень медленные, то звук может ненадолго заикнуться. Но пока это не стало проблемой, думаю, можно оставить так как есть...
 
Всё-таки ерунда продолжается... В видоизменённом виде, но по-видимому, суть остаётся.
Не знаю, насколько это важно (может быть), программа работает в среде Win2008 Server std (мультимедиа функции включены, лишних "навесов нет"). Музыкальный архив на сетевом хранилище, всё увязано слабозагруженной локалкой (отделный сегмент 1 ГБит). Потоки скоростные (256к и выше).

Заикания видоизменились в пропуски, на которые разные программы (и разные потоки в них, но это по-видимому от декодера формата ещё зависит).

а) Звуковое устройство установлено в None. После запуска программы, контролируя на приёмнике (их два - один тут же на этом же компе, второй на другом компьютере), отмечаю, что звук на них появляется спустя две-три секунды после начала проигрывания RadioBOSS...
Но с течением времени, с каждым треком, отмечаю, что начало треков происходит всё раньше и раньше от момента, когда это будет отображено на приёмнике. Разница доходит до >20 секунд. После превышения какого-то предела, происходит пропуск куска звука (солидного такого, секунд на 15) - просто как перескок вперёд. Причём плееры на разных потоках реагируют по-разному. На AAC и OGG - перескок вперёд. На MP3 плееры перезаполняют буфер, а некоторые (Foobar) просто говорят "Stopped").

Начинается это через пять-семь минут после старта, и повторяется нерегулярно, но один раз в полторы-две минуты.

Сторонние наблюдатели, решившиеся попробовать перейти на новый формат отмечают то же самое....

б) Если установить звуковое устройство, то проблема вроде бы исчезает, но тщательное наблюдение всё-таки отмечает, что глюк не исчезает, а просто становится редким - один раз в 25-30 минут и достаточно слабовыраженным... Интересно на винампе наблюдать: у него есть зелёный и красный индикаторы, показывающие в совокупности сетевую активность и наполнение буфера. Поначалу горит в основном зелёный. Затем, по прошествии времени, вспыхивает красный, всё чаще и чаще. Ближе к "проскоку" красный уже не перестаёт гореть, а зелёный и вовсе пропадает. Затем "проскок", винамп показывает заполнение буфера, и снова вроде ничего... Капризный Foobar в этом случае уже не отваливается, воспроизводя только что-то вроде глитча...
 
А в каком формате идет вещание?
Недавний тест программы, работа в течение одной недели без перерыва, со включенным вещанием, и никаких проблем.
Проблема наблюдается только на Windows 2008? Или на других тоже есть такое?
 
Три потока: MP3, AAC и OGG. Пробовал оставлять один - изменений не заметил, но заметил, что при снижении скорости потока проблема как-бы исчезает - на 192к становится значительно реже, на 128 и ниже -> 0 (но в данном эффекте не полностью уверен, т.к. экспериментировал на XP ещё до выхода 449).

На WinXP на версиях до 449 наблюдалось аналогичное поведение, с выходом 449 вроде пропало, но длительного наблюдения не проводил - займусь этим в ближайшее время, будут результаты - отпишусь...

С 449 версии отваливания от сервера уже не происходит (клиенты не фиксируют, за исключением Foobar который изредка может стать Stopped), ни там ни там, программа работает сколь угодно долго без дополнительных проблем.

------- добавил позже --------

Быстрая проверка на XP багу подтвердила.
Основной выход "No Sound". Программу после нужно перегрузить. После этого все симптомы налицо, аналогично работе на Win2008 - огромный, десятки секунд, выбег буфера, "проскоки" вперёд (или переподключения - на AIMP)... всё плохо... как на свежеустановленной системе, так и на старожилке с кучей резидентов...

Примечательно то, что в этом режиме трек, который должен играть пять с половиной минут "пробегает" за три с половиной минуты...
 
Если в компьютере есть звуковая карта, лучше тогда использовать ее, а не No Sound.
На каком именно потоке и битрейте это наблюдается? Или вообще на всех форматах?
Если трек играет более меньше времени, чем должен - возможно, дело в частоте дискретизации (например, трек 30кГц запускается на 44.1 - в итоге, играть будет быстрее). Это может быть если кодировщик не так производит сжатие потока - поэтому важно знать, какой именно формат используется.
 
На все форматах эффект одинаковый. Немного разнится реакция плееров, но это их особенности...
С частотами дискретизации это никоим образом не связано - проверял и на 22 кГц, и на 96 - передискретизация прекрасно работает...
От форматов исходных файлов не зависит.

У меня создаётся впечатление, что синхронизация в программе происходит лишь по потоку, подаваемому на звуковую плату. Если его выключить (No Sound) - возникает переполнение буфера на сервере (туда посылается поток с увеличенной скорость, отсюда и эффект, что после выгрузки программы плеер, озвучивающий поток, может играть ещё до 40 секунд).

Позвольте вопрос чайника: а как происходит синхронизация источника с сервером?
Потому как сколько пользую банальный ezstream, который сам ничего не играет, а только формирует, у него никогда такого не наблюдалось...
 
Да, при использовании звуковой платы (не No Sound) скорость отправки данных на сервер зависит от скорости воспроизведения. При использовании No Sound скорость ограничивается искуственно, и, видимо, не совсем правильно.
А каким способом использовался EZstream? В связке с какой-то программой?
 
Да, получал имя файла для передачи из stdin от самодельной программы-ротатора, которая в свою очередь выбирала его из специально подготовленных m3u плейлистов...
 
Просто были мысли внедрить использование ezstream в RadioBOSS :) Для случаев, когда стандартное вещание не работает.

Насчет вещания с No Sound - вышла новая версия (.457), там скорость потока идет с достаточно большой точностью (насколько позволяет это делать Windows), теперь проблем с буферизацией быть не должно.

При использовании звуковой карты, проблему воспроизвести теперь не удается (или нужно дольше ждать...) - возможно, в этой версии проблемы больше не будет.
 
djsoft сказал(а):
Насчет вещания с No Sound - вышла новая версия (.457), там скорость потока идет с достаточно большой точностью (насколько позволяет это делать Windows), теперь проблем с буферизацией быть не должно.
ан нет... некоторые проблемы наблюдаются... к сожалению смогу объяснить только на словах, ибо скриншоты тут не помогут.
вещание ведётся с РадиоБосса последней версии чеез сервер IceCast.
пытаюсь прослушать поток плеером AIMP последней версии - вещине сбрасывается, приблизительно каждые полминуты - минуту, и продолжается дальше по треку, и дальше, чем должно быть - как будто радиобосс пытается промотать вперёд дальше.
так же дела обстоят с Winamp.
с WMP ещё более странно - играет поток без заиканий, как в AIMP и Winamp, но при переподключении к каналу РадиоБосса WMP играет уже конец трека, хотя приблизительно по времени, должна быть ещё только середина.

.457-ую версию ставил поверх предыдущей, настройки звука не менял (перед этим была версия 4.02 и работало всё отлично). вещание ведётся на удалённом сервере2003, естественно с NoSound.

что посоветуете?
 
Назад
Верх