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

liquidsoap. трудности в определении начала _звучания_ песни.

 

96
solariz @solariz
Здравствуйте, яхонтовые коллеги по увлечению!

У меня назрел следующий вопрос: как более или менее точно вычислить момент начала звучания? Не постановки в очередь на декодирование, что легко можно сделать в момент вызова скрипта, который отдает liquidsoap файл песни, ни момент начала декодировани, легко вычисляемый по radio.remaining, а именно начало звучания музыки на стороне слушателя.
На это дело ведь влияеть кеширование айскаста, бразуер (или плеер) слушателя...

Есть у кого-нибудь идеи?

245
radio_good @radio_good
за конф. буферизации и время начало игры отвечает секция <limits>

как более или менее точно вычислить момент начала звучания?

с момента подключения клиентом ) как лог icecast отписал так и считай подключение
зачем вдаваться такие подробности и тонкости? У вас что там 3000 слушателей на каенальчике сидят и жалуются на долгий коннект?

время/буферизацию подкл. к стриму можно проверить еще таким способом: барузер Хром --> сайт радио --> вкл. PLAY--> Просмотреть код --.> вверху будет вкладка Network --> Media, где видно будет время буферизации (ms) и поткл. к стриму (побегут цифры. трафик)

Отредактировано radio_good - 18.08.2017
419
gyurgin_ @gyurgin_
Не совсем понятно - на стороне слушателя чтоле?
Это же просто как дважды два.
И второй вопрос - зачем оно Вам?

Отредактировано gyurgin_ - 18.08.2017
96
solariz @solariz
gyurgin_ пишет:

Не совсем понятно - на стороне слушателя чтоле?
Это же просто как дважды два.
И второй вопрос - зачем оно Вам?

Проще всего вам зайти на сайт ********** дождаться момента завершения звучания песни и посмотреть в этот момент на плеер и список проигранных песен.

96
solariz @solariz
radio_good пишет:

за конф. буферизации и время начало игры отвечает секция <limits>

Про эту секцию я конечно же знаю.
radio_good пишет:

зачем вдаваться такие подробности и тонкости?

Я выше ответил уже уважаемому юзернейму gyurgin_ - проще посмотреть на сайте на то, как реагирует плеер и список песен на завершение композиции.
Айскаст рапартует о начале проигрывания песни секунд на 5-15 раньше того, как она начинает реально звучать.

radio_good пишет:

время/буферизацию подкл. к стриму можно проверить еще таким способом: барузер Хром --> сайт радио --> вкл. PLAY--> Просмотреть код --.> вверху будет вкладка Network --> Media, где видно будет время буферизации (ms) и поткл. к стриму (побегут цифры. трафик)

а разве это не для только самого первого подключения? далее ведь поток идет без перерыва, там наверняка только на буфферизацию можно будет смотреть. но вообще интересная идея.

Отредактировано solariz - 19.08.2017
245
radio_good @radio_good
посмотрел ... и что такого? Подумаешь, там, на 2-3 секунды скрипт на сайте отрабатывает быстрее ваши титры.... кто на них вообще обращает внимания? Лучше ссылки на стримы дайте юзеру, чтоб слушать можно было на тлф или комп. + облегчите немного сайт по скриптам jQuery . возможно есть какие конфликты и доп. конфигураци..

для такого простецкого сайта в две колонки грузиться такое кол-во кода, что можно игру написать на нем .. DOOM
jquery.js
jquery-migrate.min.js
ajaxify.js
ajaxify-init.js
openapi.js
regress-history.js
moment.js
featherlight.min.js
core.min.js
widget.min.js
mouse.min.js
resizable.min.js
draggable.min.js
button.min.js
position.min.js
dialog.min.js
mediaelement-and-player.min.js
wp-mediaelement.min.js
jquery.form.min.js
onnn.js
socket.io.js
bundle.js
jquery.swipebox.min.js
front.js
widget.js
soundmanager2.js
scripts.js
script.js
polls-js.js
slider.revolution.js
slider.tools.js
prettyPhoto.js
backstretch.js
carouFredSel.js
easy-ticker.js
hoverex.js
idTabs.js
flexslider.js
royal.js
sdk.js
audioplayer.js
nativeflashradiov3.js
wp-embed.min.js


и icecast тут не причем .... причина в другом. смотрите настройки Ajax / DOM

Отредактировано radio_good - 19.08.2017
419
gyurgin_ @gyurgin_
Проще надо быть, есть liquidsoap же, на on_meta вешаем асинхронный скрипт генерации всего что надо для сайта, замедляем его насколько нужно и все.

96
solariz @solariz
radio_good пишет:

Лучше ссылки на стримы дайте юзеру,


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

И конечно, искреннее спасибо за дельные советы!

96
solariz @solariz
gyurgin_ пишет:

Проще надо быть, есть liquidsoap же, на on_meta вешаем асинхронный скрипт генерации всего что надо для сайта, замедляем его насколько нужно и все.

Интересная идея! Но вот ведь незадача, время замедления тоже будет "плавать" (ведь не для всех песен разница во времени начала декодирования и начала воспроизведения одинаковая) и по сути мы получим лишь частичное решение проблемы.

245
radio_good @radio_good
оффтоп

ваше бюджетное радио работающее за копейки вам тем же и отдает - низким качеством эфира и работой сайта .... а вы говорите слушателя на сайте удержать ... за что он должен цепляться?
Напрашивается вопрос - вы этим занимаетесь для себя?

Отредактировано radio_good - 20.08.2017
96
solariz @solariz
radio_good пишет:

оффтоп

ваше бюджетное радио работающее за копейки вам тем же и отдает - низким качеством эфира и работой сайта .... а вы говорите слушателя на сайте удержать ... за что он должен цепляться?
Напрашивается вопрос - вы этим занимаетесь для себя?


Мне не совсем ясно, зачем вы написали этот желчный комментарий. Без сомнения все некоммерческие проекты делаются "для себя и для друзей". Ну, продемонстрируйте свой высококачественный сайт - возможно мне будет на что равняться.

419
gyurgin_ @gyurgin_
solariz пишет:

gyurgin_ пишет:

Проще надо быть, есть liquidsoap же, на on_meta вешаем асинхронный скрипт генерации всего что надо для сайта, замедляем его насколько нужно и все.

Интересная идея! Но вот ведь незадача, время замедления тоже будет "плавать" (ведь не для всех песен разница во времени начала декодирования и начала воспроизведения одинаковая) и по сути мы получим лишь частичное решение проблемы.

С какого перепугу оно плавать будет, не надо выдумывать чего нет.

96
solariz @solariz
gyurgin_ пишет:

С какого перепугу оно плавать будет, не надо выдумывать чего нет.

я пробовал сделать следующее:

def apply_metadata(m) =
system("/home/nodeuser/rserver/liq.sh")
end
....
radio = on_metadata(apply_metadata,radio)

в результате скрипт liq.sh отрабатывает в тот же момент, что и меняется метадата в icecast, откуда её и берёт плеер.
и в том и в другом случае информация появляется раньше на 5-15 секунд, чем начинает звучать песня.
Время этого опережения разное - вот о чем я говорю.
Можно работать с метадатой асинхронно и замедлить ее, например так, что бы она обновлялась позже на 5 секунд, но это лишь сократит промежуток и не решит полностью вопроса.

419
gyurgin_ @gyurgin_
Я по-моему ясно обьяснил как надо сделать, по on_meta ПЕРЕДАТЬ внешнему скипту метаданные, получится что-то в этом роде: system("/home/nodeuser/rserver/liq.sh #{quote(m['artist'])} #{quote(m['title'])} > /dev/null &"). И с чего Вы взяли что временная разница там будет разная, у например все совпадает в ноль.

96
solariz @solariz
gyurgin_ пишет:

И с чего Вы взяли что временная разница там будет разная, у например все совпадает в ноль.

В моем случае скрипт просто писал в лог timestamp о том, что сработал, а я наблюдал tail -f и если бы эта строчка появлялась в логе строго на 5 секунд раньше начала звучания - вопрос был бы решен, но вот по какой причине он задерживается на разное количество времени.
Почему - разбираюсь. Откровенно говоря, я в некоторой растерянности.

96
solariz @solariz
gyurgin_ пишет:

у например все совпадает в ноль.

после полного перезапуска системы у меня тоже стало все совпадать в ноль. с учетом выставленного в параметрах замедления конечно.
Спасибо за оказанную помощь!

Итак, если кто-то столкнется с подобным вопросом:

def set_metadata(m) =
title = m["title"]
artist = m["artist"]
system("/home/nodeuser/rserver/liq.sh '#{artist}' '#{title}'")
end

radio = on_metadata(fun(metadata) -> add_timeout(6.7, {set_metadata(metadata); 0.-1.}), radio)

Отредактировано solariz - 21.08.2017
419
gyurgin_ @gyurgin_
Ну вот - опять рецепты с пылу с жару, я рекомендовал замедлить во внешнем скрипте, ну зачем нагружать основной рабочий инструмент.