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

Проблема perl и ices0

 

34
Артём @Artyom_Glazunov
Всем привет!

В чем может быть беда?

ices не создает маунт в icecas2, если работает с perl. Оговорюсь сразу, ices сконфигурирован с perl. ./configure показывает, что связан perl и ices. Ошибок при запуске никаких нет.
ices -c /usr/local/etc/ra-ex.conf
Into the land of the dreaded daemons we go... (pid: 19843)


Если ставить в <Type> не перл, а плейлист, то маунт создается без проблем, но как всегда русский не поддерживает, хоть и теги в UTF-8.
В <Module> пробовал и прямую ссылку писать на скрипт perl, и просто название файла скрипта, и название скрипта с окончанием .pm, все равно не работает.

скрипт перл лежит в папке modules.

Сам скрипт думал не рабочий, пробовал разные, результат один и тот же.


Скрипт perl
#!/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 /ex-radio/ra-ex/*.mp3 | /usr/bin/wc -l`;
@music=`/bin/ls -1 /ex-radio/ra-ex/*.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;
}


конфиг ices0:
<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
<Playlist>
<!-- Эта опция теперь не нужна -->
<File>/ex-radio/ra-ex/playlist.txt</File>
<Randomize>1</Randomize>
<!-- Для перлового скрипта указываем perl -->
<Type>perl</Type>
<!-- Имя файла который будет обрабатываться перловым интерпретатором
файл обязательно должен иметь расширение pm -->
<Module>/usr/local/etc/modules/ra-ex.pm</Module>
<Crossfade>5</Crossfade>
</Playlist>
<Execution>
<Background>1</Background>
<Verbose>0</Verbose>
<BaseDirectory>/tmp</BaseDirectory>
</Execution>
<Stream>
<Server>
<!-- Сервер на который мы будем отправлять поток -->
<Hostname>radio.tehmir.com.ua</Hostname>
<Port>8000</Port>
<Password>26072013tehmir</Password>
<Protocol>http</Protocol>
</Server>
<!-- Точка монтирования на сервере и описание нашего потока -->
<Mountpoint>/ra-ex</Mountpoint>
<Name>Radio EXCLUSIVE</Name>
<Genre>Dance</Genre>
<Description>Only best music</Description>
<URL>http://radio.tehmir.com.ua:8000/ra-ex.m3u</URL>
<Public>0</Public>
<!-- Настройка передаваемого потока -->
<Bitrate>192</Bitrate>
<Reencode>1</Reencode>
<Samplerate>44100</Samplerate>
<Channels>2</Channels>
</Stream>
</ices:Configuration>

888
Falcon @Falcon
Поставьте в конфиге ices
<Verbose>1</Verbose>
Это запишет вам детальный лог файл и там посмотрите, в чем именно ошибка.

34
Артём @Artyom_Glazunov
Поставил, а где файл логов искать теперь?

34
Артём @Artyom_Glazunov
Нашел, вот логи:

Logfile opened
DEBUG: Sending following information to libshout:
DEBUG: Stream: 0
DEBUG: Host: radio.tehmir.com.ua:8000 (protocol: http)
DEBUG: Mount: /ra-ex, Password: 26072013tehmir
DEBUG: Name: Radio EXCLUSIVE URL: **********
DEBUG: Genre: Dance Desc: Only best music
DEBUG: Bitrate: 192 Public: 0
DEBUG: Dump file: (null)
DEBUG: Initializing playlist handler...
DEBUG: Importing perl module: ra-ex
DEBUG: perl_parse() error: parse problem
Initialization of playlist handler failed. []
DEBUG: Crossfader shutting down
Ices Exiting...

23
Владимир @Riffi
DEBUG: perl_parse() error: parse problem

Синтаксические ошибки в скрипте перловом.

На вскидку на скажу где проблема, в листинге ничего бросающегося в глаза не увидел
Попробуйте по-очереди закомментировать тела функций, чтобы выявить где ошибка возникает.
Еще, возможно, не установлено какое-нибудь расширение perl, например
use MP3::Info;