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

Связка ices и perl

 

34
Артём @Artyom_Glazunov
Столкнулся с некой проблемой.

Когда в конфиге ices пишу

<Type>perl</Type>
<Module>hit90</Module>


Ставлю скрипт perl c именем hit90.pm

#!/usr/bin/perl -w
#Процедура инициализации, обычно тут вызываются все листинги директории с файлами,
#подключения к базам и тд и тп
sub ices_init {
print "Perl subsystem Initializing:\n";
return 1;
}
#Процедура завершения работы ices, тут желательно закрыть все соединения из скрипта
#и тому подобное
sub ices_shutdown {
print "Perl subsystem shutting down:\n";
}
#А вот это и есть процедура получения нового трека для проигрывания
#Мы каждый раз перечитываем всю директорию, на тот случай
#на тот случай если появились новые треки для проигрывания на радио
sub ices_get_next {
print "Perl subsystem quering for new track:\n";
#chomp $music[2];
$num=`/bin/ls /home/hit90/*.mp3 | /usr/bin/wc -l`;
@music=`/bin/ls -1 /hit90/test/*.mp3`;
$play=int(rand($num));
chomp $music[$play];
return $music[$play];
}

# Процедура получения информации о треке, для вывода в плеере
sub ices_get_metadata {
use MP3::Info;
$tag = get_mp3tag($file) or die "No TAG info";
return "$tag->{TITLE} ";
}

#
sub ices_get_lineno {
return 1;
}


То при запуске этого конфига выбивает ошибку

root@185:~# ices -c /etc/icecast/music_90.conf
Logfile opened
Could not find a valid playlist file.
Ices Exiting...



Что делать?

6245
Тарас @tarasian666
Куда положилы скрипт?

34
Артём @Artyom_Glazunov
папка конфигов ices/modules

6245
Тарас @tarasian666
тогда покажите что в логе пишет

34
Артём @Artyom_Glazunov
Логи ices или icecast?

в var/log/ есть только icecast

ices папки там нет

888
Falcon @Falcon
Такое бывает:
1)Ошибка в скрипте, т.е. он не компилируется или работает неправильно (не выдает путь к файлу).
2)У скрипта не хватает прав (чтение, запуск). Файл скрипта, вроде бы, должен быть исполняемым (chmod +x)

34
Артём @Artyom_Glazunov
Falcon пишет:

Такое бывает:
1)Ошибка в скрипте, т.е. он не компилируется или работает неправильно (не выдает путь к файлу).
2)У скрипта не хватает прав (чтение, запуск). Файл скрипта, вроде бы, должен быть исполняемым (chmod +x)


Поставил права на паку modules и все ее файлы 777, ices запустился

Into the land of the dreaded daemons we go... (pid: 24512)


Но маунт в icecast2 не появился

6245
Тарас @tarasian666
путь к логу ices указывается в его конфиге

34
Артём @Artyom_Glazunov
Вот нужна строчка в ices

Logfile opened
Initialization of playlist handler failed. [This binary has no support for embedded perl]
Ices Exiting...


Perl не поддерживается?

Хотя я устанавливал его "apt-get install perl"

Отредактировано Artyom_Glazunov - 24.07.2014
6245
Тарас @tarasian666
perl сам по себе тут не при чем, ices должен быть собран с поддержкой perl

34
Артём @Artyom_Glazunov
Ну я когда perl установил выполнил команды:

wget **********
tar -zxvf ices-cc-0.4.2.tar.gz
cd ices-cc-0.4.2
./configure
make
make install


P.S. на сервере ОС ubuntu 12.04

6245
Тарас @tarasian666
Вот к чему приводит слепое выполнение команд.
После configure пишет какие модули будут собраны.
Я уже не знаю в какой раз пишу одно и то же..

34
Артём @Artyom_Glazunov
Features:
XML : yes
Python : no
Perl : no
LAME : yes
Vorbis : yes
MP4 : no
FLAC : no

Что делать?

Отредактировано Artyom_Glazunov - 24.07.2014
6245
Тарас @tarasian666
установить perl-dev и пересобрать

34
Артём @Artyom_Glazunov
tarasian666 пишет:

установить perl-dev и пересобрать



Можете подсказать как?

Я гугл перерыл perl-dev не нашел

Ос ubuntu

68
Алексей @features
Ну как минимум в стандартной репе:
aptitude search perl-dev
p libperl-dev - Perl library: development files
p libperl-dev:i386 - Perl library: development files

Отредактировано features - 25.07.2014
34
Артём @Artyom_Glazunov
features пишет:

Ну как минимум в стандартной репе:
aptitude search perl-dev
p libperl-dev - Perl library: development files
p libperl-dev:i386 - Perl library: development files



Спасибо! Помогло, в модулях ices Perl поддерживается теперь.

Заработал поток

34
Артём @Artyom_Glazunov
Сейчас назрел такой вопрос, я поставил скрипт perl с джинглами. При проверке оказалось, что: игарет трек, после него включается джинг, а после джингла снова тот же самый трек включается.

Я видел на форуме подобный вопрос, но так толком никто не ответил ничего.

Кто подскажет как убрать такую проблему?! Или может треки включать не рандомно, а по списку, как и стандартно в ices?!

68
Алексей @features
Надо знать по какому алгоритму выбирает треки скрипт + определиться как ты хочешь чтобы они выбирались. Ну а потом просто сделать :)

У меня крутится скрпт, который формирует сетку вещания. А скрипт на вещателе просто берёт новую позицию из списка и играет.

Отредактировано features - 25.07.2014
34
Артём @Artyom_Glazunov
Ну вот мой скрипт:

sub ices_shutdown {
print "Perl subsystem shutting down:\n";
}

sub ices_get_next {
print "Perl subsystem quering for new track:\n";
if($jingle < 5){
$jingle ++;
@music=`/bin/ls -1 /mnt/music_90/*.mp3`;
}else{
$jingle = 0;
@music=`/bin/ls -1 /mnt/jingles/*.mp3`;

}
$num = scalar (@music);
$play=int(rand($num));
chomp $music[$play];
return $music[$play];
}

sub ices_get_metadata {
$tag = get_mp3tag($file) or die "No TAG info";
return "$tag->{TITLE} ";
}

return 1;



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