1,151

Re: liquidsoap

POMAGITE ZAMU4ELSA !!! nuzna 4 playlist vraznoe vrema.Uze zaparilsa nu nepalucaitsa gde osibvka? kak izpravit aaaaaaaaaaaaaaaaaa nervi uze nekuda negodni.

moi config.

evening = mksafe(audio_to_stereo(playlist(reload=3600, '/home/liquidsoap/playlists/evening.m3u')))
afternoon = mksafe(audio_to_stereo(playlist(reload=3600, '/home/liquidsoap/playlists/afternoon.m3u'))) 
morning = mksafe(audio_to_stereo(playlist(reload=3600, '/home/liquidsoap/playlists/morning.m3u')))
day = mksafe(audio_to_stereo(playlist(reload=3600, '/home/liquidsoap/playlists/day.m3u')))
night = mksafe(audio_to_stereo(playlist(reload=3600, '/home/liquidsoap/playlists/night.m3u')))

myplaylist = switch([({7h-12h}, morning), ({12h-18h}, afternoon), ({18h-24h}, evening), ({0h-7h}, night)])
radio = myplaylist


jingles = mksafe(audio_to_stereo(playlist(reload=3600, '/home/liquidsoap/playlists/jingles.m3u')))

clock = audio_to_stereo(single("/home/liquidsoap/clock/clock.ogg"))



radio = random(weights = [1, 4],[jingles, radio])

radio = add([radio, switch([({0m0s},clock)])])
radio = crossfade(start_next=6.0, fade_out=3.0, fade_in=3.0, radio)
radio = mksafe(fallback(track_sensitive=false, [live, radio]))

https://cdn1.iconfinder.com/data/icons/fatcow/16/debian.png

1,152

Re: liquidsoap

Ребята, прошу помощи в следующем вопросе: установлен liquidsoap и Icecast 2.3.2. Конфиг liquidsoap:

#!/usr/bin/liquidsoap -d
set("init.daemon",true)
set("init.daemon.pidfile",false)
set("log.file.path","/var/log/liquidsoap/basic.log")
set("log.stdout",true)
set("log.level",3)
set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet",true)
myplaylist = mksafe(playlist(mode='normal',  '/home/users/kaster1980/autodj/playlist.txt', reload=360 ))
radio = myplaylist
radio = mksafe(radio)
radio = crossfade(start_next=6.0, fade_out=3.0, fade_in=3.0, radio)
output.icecast(%mp3(bitrate=192),
mount = "/live.mp3", radio,
host = "localhost", port = 8000, password = "",
genre="",
name="",
url="",
description="")
output.icecast(%mp3(bitrate=96),
mount = "/live2.mp3", radio,
host = "localhost", port = 8000, password = "",
genre="",
name="",
url="",
description=""]

Также имеется файл плейлиста - playlist.txt. При такой конфигурации автообновление плейлиста происходит без проблем, однако постоянно проигрывается первый трек плейлиста (в плейлисте их всего около 10 треков).  При выполнении команды по telnet  - playlist(dot)txt.next показываются все файлы данного плейлиста. Если во время постоянно звучащего трека (№1 в плейлисте) по телнет выполнить команду (dot)mp3.skip то без проблем начинают проигрываться следующие файлы плейлиста, а без применения данной команды, как я уже описывал выше, постоянно звучит один трек.  Если из конфига убираю reload=360, проигрываются все файлы и в той же последовательности как и в плейлисте, однако не происходит автообновления плейлиста.
Ребята, огромная просьба помочь в данной проблеме. Хочу добиться воспроиведения треков плейлиста в заданной последовательности вместе с автообновлением. Заранее благодарен всем откликнувшимся!

Отредактировано meloman197 (19-04-2015 00:02:42)

1,153

Re: liquidsoap

Может еще кто - нибудь приведет пример как прописать в конфиге liquidsoap mp3.metadata чтобы через файл php используя телнет выдернуть последние проигранные треки в формате: Исполнитель - Трек. Заранее благодарен!

1,154

Re: liquidsoap

пишет meloman197:

Может еще кто - нибудь приведет пример как прописать в конфиге liquidsoap mp3.metadata чтобы через файл php используя телнет выдернуть последние проигранные треки в формате: Исполнитель - Трек. Заранее благодарен!

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

 
#!/usr/bin/liquidsoap
set("init.daemon.pidfile",true)
#set("init.daemon.pidfile.path","/var/run/liquidsoap.pid")
set("server.telnet",true)
set("server.timeout",-10.)
set("encoder.encoder.export",["artist","title"])
set("init.daemon",true)
set("log.file.path","/radio/logs/liquidsoap.log")
set("harbor.bind_addr","0.0.0.0")

def startcast(pls)
output.icecast(%mp3(samplerate = 44100, bitrate = 192),
    fallible = true,
    host = "localhost", port = 8180,
    url = "http://radio.ru",
    password = "coolpass",
    mount = "/autoplay",
    pls)
end

#Функция для подпихивания liquidsoap треков
def my_request_function() =
  #Пишем информацию в лог с тэгом "rotator"
  log = log(label="rotator")
  log("Getting song")
  result =
    list.hd( 
      get_process_lines("php /radio/scripts/rotation.php"))
      log("Got answer: #{result}")
  #Возвращаем запрос на трек в liquidsoap
  request.create(result)
end


def change_metadata_to_scr(m) =
  title = m["title"]
  artist = m["artist"]
  [("song","#{artist} - #{title}")]
end

#Функция для загрузки информации на lastfm.ru
def lastfm(m) =
  #Пишем информацию в лог с тэгом "LastFM"
  log = log(label="LastFM")
  log("#{m['song']}")
  #Запускаем python-скрипт для скробблинга
  system("/radio/scripts/scrobbler.py #{quote(m['song'])} 300 & >/dev/null")
end

#Функция для загрузки информации о проигранном треке в базу данных
def info2db(m)=
 #Запускаем python-скрипт для апдейта информации в базе данных
 system("/radio/scripts/db_played.py #{quote(m['song'])} #{quote(m['type'])}")
end 

#Организуем harbor
live = input.harbor(id="live", "play", port=9000, password="aga")
#Меняем метаданные для живого вещания (type -> live)
live = rewrite_metadata([("type","live")], live)

#Плейлист у нас динамический - подсовываем треки, возвращаемые скриптом
playlist = request.dynamic(id="playlist", my_request_function)
#Меняем метаданные для обычных треков (type -> music)
playlist = map_metadata(change_metadata_to_scr, playlist)
playlist = rewrite_metadata([("type","music")], playlist)

#Организуем заказы
queue = request.queue(id="queue")
#Меняем метаданные для заказов (type -> queue)
queue = map_metadata(change_metadata_to_scr, queue)
queue = rewrite_metadata([("type","request")], queue)

#Настраиваем фоллбеки (обособленно, т.к. нас необходима опция track_sensitive для пары queue <-> playlist, а вот live у нас должен включаться сразу)
playlist = fallback(replay_metadata=false,track_sensitive=true,[queue,playlist])
playlist = fallback(replay_metadata=false,track_sensitive=false,([fallback.skip(input=live,playlist)]))

#При изменении метаданных запускаем работу двух скриптов: обновления базы проигранных ранее треков и скробблинга
playlist = on_metadata(info2db, playlist)
playlist = on_metadata(lastfm, playlist)
startcast(playlist)

Отредактировано Ok_go_love (20-04-2015 18:30:28)

1,155

Re: liquidsoap

Я в шоке

#Плейлист у нас динамический - подсовываем треки, возвращаемые скриптом

А всю работу по метаданным,  скробблингу, чему там еще... Почему одному скрипту который отдает треки не делать?

1,156

Re: liquidsoap

myplaylist = mksafe(playlist(mode='normal',  '/home/users/kaster1980/autodj/playlist.txt', reload=360 ))

Ребята, прошу разъяснить: в данной ситуации reload=360 должен просто перечитывать плейлист и если он не изменился продолжать воспроизведение в той последовательности, которая в самом плейлисте либо в любом случае после истечения 360 с плейлист будет перегружен и воспроизведение начнется с первого трека данного листа? Заранее благодарен за помощь!

1,157

Re: liquidsoap

пишет gyurgin_1:

Я в шоке

#Плейлист у нас динамический - подсовываем треки, возвращаемые скриптом

А всю работу по метаданным,  скробблингу, чему там еще... Почему одному скрипту который отдает треки не делать?

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

Отредактировано Ok_go_love (22-04-2015 16:43:14)

1,158

Re: liquidsoap

Ребята, подскажите пожалуйста какую стабильную и проверенную версию Icecast2 лучше ставить: последнюю 2.4.1 с официального сайта http://www.icecast.org/, версию trunk отсюда http://svn.xiph.org/icecast/trunk/ либо вообще KH 2.3.1? Заранее благодарен!

Отредактировано meloman197 (23-04-2015 03:11:22)

1,159

Re: liquidsoap

пишет meloman197:

Ребята, подскажите пожалуйста какую стабильную и проверенную версию Icecast2 лучше ставить: последнюю 2.4.1 с официального сайта http://www.icecast.org/, версию trunk отсюда http://svn.xiph.org/icecast/trunk/ либо вообще KH 2.3.1? Заранее благодарен!

Если не надо aac+ играть в браузере ставьте с офсайта, если надо - KH.

1,160

Re: liquidsoap

Спасибо, будем действовать.

1,161

Re: liquidsoap

пишет meloman197:

myplaylist = mksafe(playlist(mode='normal',  '/home/users/kaster1980/autodj/playlist.txt', reload=360 ))

Ребята, прошу разъяснить: в данной ситуации reload=360 должен просто перечитывать плейлист и если он не изменился продолжать воспроизведение в той последовательности, которая в самом плейлисте либо в любом случае после истечения 360 с плейлист будет перегружен и воспроизведение начнется с первого трека данного листа? Заранее благодарен за помощь!

В данном случае происходит проверка не изменился ли плей лист, если изменился то подгрузится новый.

1,162

Re: liquidsoap

Плейлист грузится один раз при запуске, запомните это раз и навсегда.

1,163

Re: liquidsoap

пишет Infector:

пишет meloman197:

myplaylist = mksafe(playlist(mode='normal',  '/home/users/kaster1980/autodj/playlist.txt', reload=360 ))

Ребята, прошу разъяснить: в данной ситуации reload=360 должен просто перечитывать плейлист и если он не изменился продолжать воспроизведение в той последовательности, которая в самом плейлисте либо в любом случае после истечения 360 с плейлист будет перегружен и воспроизведение начнется с первого трека данного листа? Заранее благодарен за помощь!

В данном случае происходит проверка не изменился ли плей лист, если изменился то подгрузится новый.

точно не помню но проводил эксперименты насчет этого - мониторя плейлист через telnet, менял содержимое папки, чтоб убедится как этот reload работает.

1,164

Re: liquidsoap

liquidsoap 1.1.1
ставил из сырцов

* Supported input formats
   - Vorbis            : yes
   - Theora            : no (requires theora)
   - Speex             : no (requires speex)
   - Dirac             : no (requires schroedinger)
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - MP3               : yes
   - AAC               : no (requires faad)
   - text-to-speech    : requires text2wave (festival) and sox at runtime
   - XML playlists     : no (requires xmlplaylist)
   - Lastfm            : no (requires lastfm)

 * Supported output formats
   - Vorbis            : yes
   - MP3               : yes
   - MP3 (fixed-point) : no (requires shine)
   - AAC               : no (requires voaacenc)
   - AAC+              : detected at runtime
   - FDK-AAC           : no (requires fdkaac)
   - SPEEX             : no (requires speex)
   - Opus              : no (requires opus)
   - Theora            : no (requires theora)
   - Dirac             : no (requires schroedinger)

 * Tags
   - Taglib (ID3 tags) : yes
   - Vorbis            : yes
   - charset detection : yes

 * Input / output
   - Icecast/Shoutcast : yes
   - AO                : yes
   - OSS               : yes
   - ALSA              : no (requires alsa)
   - Portaudio         : no (requires portaudio)
   - Pulseaudio        : no (requires pulseaudio)
   - JACK              : no (requires bjack)
   - GStreamer         : no (requires gstreamer)

 * Audio manipulation
   - Samplerate        : yes
   - SoundTouch        : no (requires soundtouch)
   - LADSPA            : no (requires ladspa)

 * Video manipulation
   - Gavl              : no (requires gavl)
   - FFmpeg            : no (requires ffmpeg)
   - frei0r            : no (requires frei0r)
   - camlimages        : no (requires camlimages)

 * MIDI manipulation
   - DSSI              : no (requires dssi)

 * Visualization
   - Graphics          : no (requires graphics)
   - SDL               : no (requires sdl)
   - GD                : no (requires gd)

 * Additional libraries
   - dynlink           : yes
   - inotify           : no (requires inotify)
   - lo                : no (requires lo)
   - magic             : yes
   - yojson            : yes
   - windows service   : no (requires winsvc)

 * Graphical interfaces
   - Python GUI        : no

при запуске /etc/liquidsoap/radio.liq выдает

At line 20, char 15: the variable output.icecast used here has not been previously defined.
#!/usr/local/bin/liquidsoap
# Log dir
set("log.file.path","/tmp/basic-radio.log")

# Music
myplaylist = playlist("etc/liquidsoap/playlist.m3u")
# Some jingles
jingles = playlist("etc/liquidsoap/playlist.m3u")
# If something goes wrong, we'll play this
security = single("etc/liquidsoap/playlist.m3u")

# Start building the feed with music
radio = myplaylist
# Now add some jingles
radio = random(weights = [1, 4],[jingles, radio])
# And finally the security
radio = fallback(track_sensitive = false, [radio, security])

 # Stream it out
output.icecast(%mp3,
  host = "192.168.1.40", port = 8000,
    password = "12qwas", mount = "live",
      radio)

Кто знает в чем ошибка, помогите пожалуйста!
В лог ничего не пишет

Отредактировано Maksim.CHaykin (07-06-2015 20:00:42)

1,165

Re: liquidsoap

других версий не установлено ?
что говорит команда liquidsoap --list-plugins ?
чтоб уж наверняка /usr/local/bin/liquidsoap --list-plugins

1,166

Re: liquidsoap

пишет tarasian666:

других версий не установлено ?

Сначала ставил с репозитория 1.0.1
Потом собрал поверх него 1.1.1

/usr/local/bin/liquidsoap --list-plugins - http://pastebin.com/t3QFFUJ4

Отредактировано Maksim.CHaykin (07-06-2015 21:29:36)

1,167

Re: liquidsoap

/usr/bin/liquidsoap --list-plugins - http://pastebin.com/V4hUbVQp

1,168

Re: liquidsoap

надо все удалить и ставить что-то одно иначе непонятно что запускается и с какими плагинами, output.icecast в первом есть во втором нет

1,169

Re: liquidsoap

Я  так и понял. Единственное как мне полностью все подчистить?
apt-get remove liquidsoap
apt-get autoremove
apt-get purge
особо не помогли

UPD: удалил 1.0.1 вроде больше этой ошибки нет, пошел дальше разбираться. Спасибо за помощь, tarasian666!

Отредактировано Maksim.CHaykin (07-06-2015 21:50:52)

1,170

Re: liquidsoap

еще удалить то что установлено из исходников, из папки где делалось make install сделать make uninstall
после убедиться что нет такого исполняемого файла как liquidsoap и любых других воспоминаний этого слова в файлах или названиях файлов.
И тогда уже установить.

1,171

Re: liquidsoap

а есть ли такая реализация, например
Первая программа выходит в эфир во вторую пятницу месяца с 20-21
Вторая программа выходит в эфир четвертый четверг месяца с 20-21
И чтобы после окончания плейлиста, который может закончится и немного раньше не шла тишина, а продолжала играть музыка с другого плейлиста
Как это прописать, кто-нибудь знает?

На ум только приходит поднимать еще один маунт, который будет выключаться после окончания on_done = shutdown. Но вот как реализовать плавающий день недели?

В кроне раньше делал:

0 20 8-14 * * [ "$(date '+%u')" -eq 5 ] && скрипт запуска

может можно сделать что-то подобное?

Отредактировано Maksim.CHaykin (08-06-2015 21:36:01)

1,172

Re: liquidsoap

все делается через switch, fallback и не надо двух маунтов

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

1,173

Re: liquidsoap

пишет tarasian666:

все делается через switch, fallback и не надо двух маунтов

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

А вот с этим у меня проблема. Если не сложно не могли бы вы мне помочь в этом

1,174

Re: liquidsoap

вроде более или менее разобрался.
Вопрос один остался: В запросе на следующую песню (queue) можно ли чтобы скрипт выдавал путь к папке, а не путь к файлу

1,175

Re: liquidsoap

Функция smooth_add сжирает очень много памяти, можно ли с этим что-то сделать?

radio_main = smooth_add(normal=radio,special=switch([({ 00m0s or 25m0s }, jingles)]))