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

liquidsoap

 

6245
Тарас @tarasian666
Я имел ввиду кодировку не файлов, а в самои жидком мыле задается кодировка, ну да ладно раз работает)

67
nivs @nivs
tarasian666 пишет:

в самом жидком мыле задается кодировка
Где?

А как пользоваться liguidsoap? Я подключился, но в чём смысл этой программы - не могу понять. Как я понимаю, что-то надо включить в конфиг, кроме:set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet",true)

mix смог прикрутить, а остальное как?

Отредактировано nivs - 16.09.2012
6245
Тарас @tarasian666
set("tag.encodings",["UTF-8","ISO-8859-1"])

может вы имели ввиду как пользоваться telnet ?

67
nivs @nivs
tarasian666 пишет:

set("tag.encodings",["UTF-8","ISO-8859-1"])
Видимо, вы не поняли. У меня нет проблем с тегами музыкальных файлов, проблема с бегущей строкой. Хотя я таки попробую, спасибо.

tarasian666 пишет:

может вы имели ввиду как пользоваться telnet ?
Ну liguidsoap же GUI'шный клиент telnet'а. Так что, в принципе, да. Mix прикрутил, довольно забавно - добавил строку radio = mix([radio]). Что ещё он умеет, этот telnet (liguidsoap)?

6245
Тарас @tarasian666
кроме вывода разного вида информации переключение на сл. трек, поставить в очередь трек, вкл выкл вещание и тд и тп
зайдя через telnet и написать help выдаст все доступные команды для данного конфига

67
nivs @nivs
Спасибо, буду тестить. А для дополнительных возможностей удалённого управления что-нибудь в скрипт добавлять надо? Типа этого mix([]). В информации, которая выводится в liguidsoap что-то такое написано, но не понятно что.

6245
Тарас @tarasian666
в скрипт добавить врядли можно, можно задавать какие-то переменые но я сам толком не понял какие и что оно даст

а в mix сразу надо в конфиге вписать потоки которые микшировать

не пользуюсь liguidsoap так как там интерфейс не очень дружелюбен, на вебе можно поприятней гуи накатать )

67
nivs @nivs
tarasian666 пишет:

не пользуюсь liguidsoap так как там интерфейс не очень дружелюбен, на вебе можно поприятней гуи накатать )
airtime, к примеру :)

6245
Тарас @tarasian666
в аиртайм много ненужного, к примеру все что вещается записывается и сохраняется что занимает со временем огого и еще какоето перекодирование отдельной прогой треков там идет (выравнивание громкости или еще что точно не помню) и при всем этом попробовал вывести звук "на колонки" прям оттуда - и оно все не смогло "взлететь", звук прерывался каждые пол секунды если не чаще
А еще неудобство что нельзя локальную музыку просто добавить - только загрузить через вэб

в итоге я себе сделал автодиджей по принципу как в сэме и управление им через вэб и мне этого хватает

Отредактировано tarasian666 - 17.09.2012
67
nivs @nivs
Я когда-то пробовал Airtime, но мне не понравилось то, что я не смог выставлять управление группами плейлистов и импортировать их с компьютера - приходилось вручную создавать. Кроме того, там нельзя было выставить плейлист на определённый день недели и редактировать его как группу. Я познакомился с ним ещё до liquidsoap. Лучше уж посложнее конфигурация, но зато более гибкая.

Программа ваша только для личного пользования? Я в программировании не силён, кое-как начинаю изучать Python, так что до автодиджея с вебовским фронтэндом мне далеко, а это на самом деле очень удобно.

6245
Тарас @tarasian666
Пока только для личного, если для общества ее еще "доводить до ума" надо

А я пайтон так и не взялся изучать )

67
nivs @nivs
tarasian666 пишет:

Пока только для личного, если для общества ее еще "доводить до ума" надо

А я пайтон так и не взялся изучать )


Если захотите, можем вместе написать подобное на нём, заодно оба подучимся :) Я SVN оформлю, книжек подкину, теорией помогу. Какой-нибудь конфигуратор гуишный на PyQT, я сейчас калькулятор пишу на нём. Наипростейший язык, одно удовольствие кодить на нём, особенно после университетского С++.

6245
Тарас @tarasian666
было б неплохо, но было б еще время )

67
nivs @nivs
Да, у меня со временем тоже беда... В свободное время пока занимаюсь калькулятором, почти дописал. Как допишу - начну делать что-нибудь по liquidsoap'у

67
nivs @nivs
Блин, который раз уже... Подскажите, пожалуйста, по какой причине liquidsoap может выдавать тишину? Всё настроено верно, но всё равно тишина. Только что вот работало, перезапустил - потока нет.#!/usr/local/bin/liquidsoap

# создаём переменные быстрого исправления в одном месте по необходимости
# базовая информация о выводимом потоке
out = output.icecast(
# хост с icecast
host = "192.168.56.1",

# его порт
port = ,

# логин
user = "",

# и пароль
password = "",

# и всякое разное
# название
name = "Поток для форума",

# жанр
genre = "NON-STOP music",

# ссылка на сайт
url = "http://",

# кодировка
encoding = "UTF-8"
)


# _____________________________________

# абсолютный путь к рабочей директории
wd = "/home/stream/radio/radioFORUM"

# путь к папке с коллекцией
pl = "#{wd}/collection"

# техническая папка
tech = "#{wd}/technical"

# логи
set("log.file.path","#{tech}/liquidsoap.log")
set("log.level", 3)

# папка с объявлениями
promo_dir = "#{pl}/promo"

# папка с программами
program_dir = "#{pl}/programs"

# папка с коллекцией временных вставок
#clock_dir = "#{pl}/clock"

# папка с изменяющимся эфиром
ef = "#{pl}/efir"

# папки соответствующих эфиров
ni = "#{ef}/night"
mo = "#{ef}/morning"
da = "#{ef}/daytime"
ev = "#{ef}/evening"
F1 = "#{wd}/FORUM/9-11"
F2 = "#{wd}/FORUM/14-16"
F3 = "#{wd}/FORUM/18-20"

# папки с музыкой
mus_ni_dir = "#{ni}/music"
mus_mo_dir = "#{mo}/music"
mus_da_dir = "#{da}/music"
mus_ev_dir = "#{ev}/music"
mus_F1_dir = "#{F1}/music"
mus_F2_dir = "#{F2}/music"
mus_F3_dir = "#{F3}/music"

# папки с джинглами
jin_ni_dir = "#{ni}/jingles"
jin_mo_dir = "#{mo}/jingles"
jin_da_dir = "#{da}/jingles"
jin_ev_dir = "#{ev}/jingles"
jin_F1_dir = "#{F1}/jingles"
jin_F2_dir = "#{F2}/jingles"
jin_F3_dir = "#{F3}/jingles"

# _____________________________________

# загружаем плейлисты, джинглы, новости и всё такое
mus_ni = playlist (reload = 360, "#{mus_ni_dir}")
mus_mo = playlist (reload = 360, "#{mus_mo_dir}")
mus_da = playlist (reload = 360, "#{mus_da_dir}")
mus_ev = playlist (reload = 360, "#{mus_ev_dir}")
mus_F1 = playlist (reload = 360, "#{mus_F1_dir}")
mus_F2 = playlist (reload = 360, "#{mus_F2_dir}")
mus_F3 = playlist (reload = 360, "#{mus_F3_dir}")

jin_ni = playlist (reload = 360, "#{jin_ni_dir}")
jin_mo = playlist (reload = 360, "#{jin_mo_dir}")
jin_da = playlist (reload = 360, "#{jin_da_dir}")
jin_ev = playlist (reload = 360, "#{jin_ev_dir}")
jin_F1 = playlist (reload = 360, "#{jin_F1_dir}")
jin_F2 = playlist (reload = 360, "#{jin_F2_dir}")
jin_F3 = playlist (reload = 360, "#{jin_F3_dir}")


program = playlist (reload = 360, "#{program_dir}")
promo = playlist (reload = 360, "#{promo_dir}")

#clock_0 = single ("#{clock_dir}/jingleT_0.mp3")
#clock_1 = single ("#{clock_dir}/jingleT_1.mp3")
#clock_2 = single ("#{clock_dir}/jingleT_2.mp3")
#clock_3 = single ("#{clock_dir}/jingleT_3.mp3")
#clock_4 = single ("#{clock_dir}/jingleT_4.mp3")
#clock_5 = single ("#{clock_dir}/jingleT_5.mp3")
#clock_6 = single ("#{clock_dir}/jingleT_6.mp3")
#clock_7 = single ("#{clock_dir}/jingleT_7.mp3")
#clock_8 = single ("#{clock_dir}/jingleT_8.mp3")
#clock_9 = single ("#{clock_dir}/jingleT_9.mp3")
#clock_10 = single ("#{clock_dir}/jingleT_10.mp3")
#clock_11 = single ("#{clock_dir}/jingleT_11.mp3")
#clock_12 = single ("#{clock_dir}/jingleT_12.mp3")
#clock_13 = single ("#{clock_dir}/jingleT_13.mp3")
#clock_14 = single ("#{clock_dir}/jingleT_14.mp3")
#clock_15 = single ("#{clock_dir}/jingleT_15.mp3")
#clock_16 = single ("#{clock_dir}/jingleT_16.mp3")
#clock_17 = single ("#{clock_dir}/jingleT_17.mp3")
#clock_18 = single ("#{clock_dir}/jingleT_18.mp3")
#clock_19 = single ("#{clock_dir}/jingleT_19.mp3")
#clock_20 = single ("#{clock_dir}/jingleT_20.mp3")
#clock_21 = single ("#{clock_dir}/jingleT_21.mp3")
#clock_22 = single ("#{clock_dir}/jingleT_22.mp3")
#clock_23 = single ("#{clock_dir}/jingleT_23.mp3")

# _____________________________________

# строим 4 потока, сразу всё перемешивая
# смешиваем вставки
ins_ni = rotate (weights = [2, 1, 1], [jin_ni, program, promo])
ins_mo = rotate (weights = [2, 1, 1], [jin_mo, program, promo])
ins_da = rotate (weights = [2, 1, 1], [jin_da, program, promo])
ins_ev = rotate (weights = [2, 1, 1], [jin_ev, program, promo])

# смешиваем вставки и потоки
rot_ni = rotate (weights = [1, 1], [mus_ni, ins_ni])
rot_mo = rotate (weights = [3, 1], [mus_mo, ins_mo])
rot_da = rotate (weights = [3, 1], [mus_da, ins_da])
rot_ev = rotate (weights = [3, 1], [mus_ev, ins_ev])
rot_F1 = rotate (weights = [3, 1], [mus_F1, jin_F1])
rot_F2 = rotate (weights = [3, 1], [mus_F2, jin_F2])
rot_F3 = rotate (weights = [3, 1], [mus_F3, jin_F3])


#_______________________________________________________________________

radio = switch (track_sensitive = true,
[
({ 2h - 6h }, rot_ni),
({ 6h - 9h }, rot_mo),
({ 9h - 11h }, rot_F1),
({ 11h - 14h }, rot_da),
({ 14h - 16h }, rot_F2),
({ 16h - 18h }, rot_da),
({ 18h - 20h }, rot_F3),
({ 20h - 2h }, rot_ev)
])



#_______________________________________________________________________


# делаем красивые вхождения. crossfade оставим на будущее, посмотрим на звучание smart_crossfade
radio = crossfade(start_next=1., fade_out=1., fade_in=1., radio)

# запускаем вещалку

out(
%mp3(bitrate = 256, id3v2 = true),
description = "MP3 256 Kbps",
mount = "Radio_for_Forum",
mksafe(radio)
)


Отредактировано nivs - 01.10.2012
6245
Тарас @tarasian666
ну а что лог пишет?

67
nivs @nivs
tarasian666 пишет:

ну а что лог пишет?

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

6245
Тарас @tarasian666
кстате не помню нормально ли понимает это 20h - 2h или это у сэма с этим проблемы были

67
nivs @nivs
Нормально понимает, крутится хорошо. Если не трогать... У меня когда-то была такая же проблема, насколько я помню, без перезагрузки справится помогало удаление строкиradio = crossfade(start_next=1., fade_out=1., fade_in=1., radio)

Отредактировано nivs - 02.10.2012
67
nivs @nivs
А возможно ли как-то сделать так, чтобы плейлист обновлялся не каждый час, а строго в заданное время? Я про:mus_ni = playlist (reload = 360, "#{mus_ni_dir}")