ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
3   •   Посмотреть все темы

liquidsoap

 

6245
Тарас @tarasian666
это наложение одного потока(плейлиста) на другой

4
e-mc2 @e-mc2
здравствуйте, подскажите а можно ли сделать так - liquidsoup получает скриптом плейлист (скрипт возрващает просто список путей к файлам), проигрывает его, и когда проиграл последний трек снова подгрузил этим скриптом новый список файлов. Возможно ли? Хочу пример ) спасибо

Отредактировано e-mc2 - 06.04.2011
6245
Тарас @tarasian666
проще сделать чтоб каждый раз за новым треком обращался к скрипту

4
e-mc2 @e-mc2
tarasian666, понятно что проще, но скрипт будет выбирать песни из базы данных, и каждые 3-4 минуты делать новый запрос к базе, мне кажется весьма накладным. Проще тянуть сразу по 50-100 треков, собирать их в "плейлист", ждать пока треки кончатся, делать новый запрос и т.д. так просто экономичнее в плане ресурсов

6245
Тарас @tarasian666
экономичнее не будет !!! потому что список из одного трека будет куда меньше занимать памяти чем список из 100

И если будет плейлист загружать из базы то может занять время, так что такое решение мне кажеться будет хуже. Лучше в базе сделать плейлист на 50 -100 треков и пусть liquidsoap по одному треку тянет скриптом, и скрипт следит кончился ли плейлист или нет

у меня так работает - каждый раз берет один трек из базы, а там уже или рандумный или заказаный трек определяет перл скрипт

4
e-mc2 @e-mc2
tarasian666, хм, так liquidsoap всю музыку на входе хранит в памяти как mpd? тогда дейтвительно лучше брать по одному файлу, конечно. Хотя идеальной была бы золотая середина — брать из базы плейлист но маленькими порциями, по 10 например треков, или по пять.

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

В общем, если скрипт ничего не вернул, все равно через каждую минуту/две он должен запускать скрипт и проверять если там что-то или нет. Возможно?

Отредактировано e-mc2 - 06.04.2011
6245
Тарас @tarasian666
не понимаю вашей логики, зачем порциями?.. Он ведь не будет по окончанию треков наново обращаться к скрипту, он будет играть по кругу имеющийся плейлист или по таймеру перегружать разве.

Если не стирать трек из базы то ничего не кончиться )) Или сделайте резервную таблицу с плейлистом. А вот средствами liquidsoap делать будет трудно или через ж...

4
e-mc2 @e-mc2
tarasian666 пишет:

Если не стирать трек из базы то ничего не кончиться

В том то и дело что в моей ситуации они как раз ДОЛЖНЫ кончаться. Мне нужно чтобы трек из базы проигрывался только один раз. Поэтому отдавать я буду только "неигранные" треки из базы, и когда-нибудь они могут закончится. Но когда-нибудь они также и появятся, когда кто-нибудь пополнит базу, и вещание должно продолжиться

У меня не обычная радиостанция, специфическая. Проигрывает не песенки а кое-какие "логи". Как только в базе появляется новый такой "лог" он проирывается в эфир группе людей.

Единственное, что мне пока приходит в голову — отдавать путь на "тишину" длиной в минуту, в случае если нет неигранных треков в базе.

tarasian666 пишет:

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

Я говорил не о возможностях liquidsoap, а о производительности. Если загрузить все разом, liquidsoap съест память, если отдавать по одному треку — постоянно мучаем базу данных каждые 3 минуты. Лучшее решение в плане производительности — отдавать по 5/10 треков (не сильно грузим память, реже мучаем базу). Вот что я имел ввиду. Жаль что, liquidsoap не настолько гибок

Отредактировано e-mc2 - 06.04.2011
4
Dant1k @Dant1k
Народ, подскажите как организовать вещание с мплеера(так понял что есть такая возможность)
mplayer = input.mplayer(id="input.mplayer",restart=true,restart_on_error=false,buffer=0.2,max=10.)
эта запись ему вообще никак :(
вывод:
output.icecast.vorbis(mplayer,mount="mplayer",id="mplayer",name="mplayer",quality=8.,
host=Host,port=Port,password=Password,genre=Genre,url=Url,description=Desc,restart=true)
и есть какойто способ вывести device=dev/radio1 driver v4l2 звук идет по писиай шине с тв тюнера с заданием частоты фм
ИХМО dev/dsp не предлагать т.к. федора, тама этого чуда нету

6245
Тарас @tarasian666
e-mc2 пишет:

Я говорил не о возможностях liquidsoap, а о производительности. Если загрузить все разом, liquidsoap съест память, если отдавать по одному треку — постоянно мучаем базу данных каждые 3 минуты. Лучшее решение в плане производительности — отдавать по 5/10 треков (не сильно грузим память, реже мучаем базу). Вот что я имел ввиду. Жаль что, liquidsoap не настолько гибок

это все решаеться внешним скриптом что связываеться с базой.
1 запрос каждых 3 минуты ни как не мучение базы, она легко выдерживает 10 запросов за секунду и даже больше. Может вы еще боитесь двойной клик на мышке делать? :D

Dant1k пишет:

Народ, подскажите как организовать вещание с мплеера(так понял что есть такая возможность)
mplayer = input.mplayer(id="input.mplayer",restart=true,restart_on_error=false,buffer=0.2,max=10.)
эта запись ему вообще никак :(
вывод:
output.icecast.vorbis(mplayer,mount="mplayer",id="mplayer",name="mplayer",quality=8.,
host=Host,port=Port,password=Password,genre=Genre,url=Url,description=Desc,restart=true)
и есть какойто способ вывести device=dev/radio1 driver v4l2 звук идет по писиай шине с тв тюнера с заданием частоты фм
ИХМО dev/dsp не предлагать т.к. федора, тама этого чуда нету

зачем городить такой огород если есть графическая оболочка? Используйте jack и idjc

ps dev/dsp нет там где нет oss и федора тут ни при чем, есть еще /dev/adsp и /dev/audio например

4
Dant1k @Dant1k
tarasian666 пишет:

зачем городить такой огород если есть графическая оболочка? Используйте jack и idjc

Ну тут все просто :)
на сервере нет гуишки :)

6245
Тарас @tarasian666
в таком случае такой замысел вообще может быть неосуществлен

65
Кирилл @4ell
Ни у кого не возникало проблемы с liquidsoap когда, трек повторяется второй раз, или через один?
Как можно с этим бороться?

Отредактировано 4ell - 07.05.2011
223
Игорь @devilben
4ell пишет:

Ни у кого не возникало проблемы с liquidsoap когда, трек повторяется второй раз, или через один?
Как можно с этим бороться?

А конфиг не хотите показать ?

65
Кирилл @4ell
Конфиг длинный выложу основное


new = mksafe(playlist(reload=3600, mode='random', string.concat([mpath ,"new"])))
#другие категории импортируются аналогично
morning = random(weights = [4, 2, 1], [hot, cooled, new])
#а также создаются плейлисты на для разного времени суток
myplaylist = switch([({7h-12h}, morning), ({12h-18h}, afternoon), ({18h-24h}, evening), ({0h-7h}, night)])

radio = rotate(weights = [1, 3], [jingles, myplaylist])
radio = crossfade(start_next=6.,fade_out=5.,fade_in=3.,radio)
#Добавляются джинглы

223
Игорь @devilben
mode='random', вроде как писать не нужно, это значение и так по умолчанию если ничего не задано. А так хз, ничего не понятно, возможно неверно конфиг составлен. Он по кругу зацикливает трек или вам просто не нравится рандомность? Лог что то пишет подозрительное?

65
Кирилл @4ell
он может один трек проиграть два раза подряд, ничего не зацикливает...
можно ли сделать правило, чтоб один трек повторялся например не чаще чем через час?

468
Klef @Klef
devilben пишет:

mode='random', вроде как писать не нужно, это значение и так по умолчанию если ничего не задано.

как раз по дефолту normal (во всяком случае в свежей SVN версии)

223
Игорь @devilben
Klef пишет:

devilben пишет:

mode='random', вроде как писать не нужно, это значение и так по умолчанию если ничего не задано.

как раз по дефолту normal (во всяком случае в свежей SVN версии)

хм... а таки да :) тогда я вообще ниче не понимаю...
У меня так:
jingles = playlist("/data/storage/radio/jingles")
music = playlist(reload=600, "/data/storage/radio/music")
music = mksafe(music)
music = crossfade( fade_out = 7.0, fade_in = 7.0, start_next = 7.0, music )
radio = smooth_add(normal=music,special=switch([({ 00m0s or 30m0s }, jingles)]))

свежая версия из svn, аптайм чуть больше месяца, повторений треков ни разу не слышал, берется всегда случайный трек, в ротации 1,5к треков.
Если ставлю mode="normal" то играет по порядку треки :D

468
Klef @Klef
гг, svn скачал в пятницу


motiv = mksafe(playlist(reload=3600,"/data/radio/motiv"))
radio = crossfade(start_next=1.,fade_out=5.,fade_in=2.,motiv)

в процессе отладки (экспериментировал с различными кодеками и качеством) 7 раз подряд (при перезапуске в смысле) слышал 1 трек из диры :)
когда поднадоело, добавил mode="random"