Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl Скрипт, Скрипт проигрывания музыки 
V
    Опции темы
Louie
Дата 28.2.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Вем добрый день.

Сразу приступлю к теме.

Имеется скрипт проигрывания музыки. Он беред рандомную музыку из папки и через кажды 5 песенок вставляет другую песенку. Но суть в другом. 
Как я уже подметил , скрипт играет рандомно, но мне надо чтобы всё шло по порядку. вот код:

Код

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

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




Можете помочь и поправить этот код?

Это сообщение отредактировал(а) Louie - 28.2.2011, 16:53
PM MAIL   Вверх
powerfox
Дата 28.2.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Как-то так:
Код

    sub ices_get_next {
        state $cur_track = -1;
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmuzika/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/muzika/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];
    }


Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:19


--------------------
user posted image
PM WWW   Вверх
Louie
Дата 28.2.2011, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



так. походу что-то не так.
выложу полностью плагин
Код

sub ices_init {
        print "Perl subsystem Initializing:\n";
        $jingle = 0;
        return 1;
}

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 /home/rmusic/*.mp3`;
    }else{
        $jingle = 0;
        @music=`/bin/ls -1 /home/music/vstavki/*.mp3`;

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

return 1;



после замены он выглядит так: 

Код

sub ices_init {
        print "Perl subsystem Initializing:\n";
        $jingle = 0;
        return 1;
}

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 /home/rmusic/*.mp3`;
    }else{
        $jingle = 0;
        @music=`/bin/ls -1 /home/music/vstavki/*.mp3`;

    }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        cur_track++;
        chomp $music[$cur_track];
       return $music[$cur_track];

}
sub ices_get_metadata {
       return "blablabla";
}
return 1;


и тогда Перл начинает ругаться:

Код

Logfile opened
Can't modify constant item in scalar assignment at /usr/local/etc/modules/ices.pm line 23, near "1;"
Missing right curly or square bracket at /usr/local/etc/modules/ices.pm line 32, at end of line
syntax error at /usr/local/etc/modules/ices.pm line 32, at EOF
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []

PM MAIL   Вверх
powerfox
Дата 28.2.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Стр. 22-24:
Код

        if (cur_track == @music) {
            cur_track = -1;
        }
        cur_track++;


Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:55


--------------------
user posted image
PM WWW   Вверх
Louie
Дата 28.2.2011, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Код

Logfile opened
Can't modify constant item in scalar assignment at /usr/local/etc/modules/ices.pm line 23, near "1;"
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []


PM MAIL   Вверх
powerfox
Дата 28.2.2011, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Извиняюсь, ошибся smile
Надо так (не забудьте скобки в начали в конце):
Код

{
    my $cur_track = -1;
    sub ices_get_next {
        state 
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmuzika/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/muzika/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        }
        cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];
}    



--------------------
user posted image
PM WWW   Вверх
Louie
Дата 28.2.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Код

Logfile opened
syntax error at /usr/local/etc/modules/ices.pm line 15, near "state
        print"
Missing right curly or square bracket at /usr/local/etc/modules/ices.pm line 37, at end of line
syntax error at /usr/local/etc/modules/ices.pm line 37, at EOF
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []


Наверное уже достал Вас =( 

Общий код теперь выглядит так -

Код

sub ices_init {
        print "Perl subsystem Initializing:\n";
        $jingle = 0;
        return 1;
}

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

{
    my $cur_track = -1;
    sub ices_get_next {
        state 
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmusic/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/music/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            cur_track = -1;
        }
        cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];


sub ices_get_metadata {
       return "blabla";
}
return 1;



PM MAIL   Вверх
powerfox
Дата 1.3.2011, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Цитата(Louie @  28.2.2011,  21:38 Найти цитируемый пост)
Наверное уже достал Вас =( 

Да это я косячу smile

Код

{
    my $cur_track = -1;
    sub ices_get_next {
        print "Perl subsystem quering for new track:\n";
        if($jingle < 5){
            $jingle++;
            @music=`/bin/ls -1 /home/rmuzika/*.mp3`;
        }else{
            $jingle = 0;
            @music=`/bin/ls -1 /home/muzika/vstavki/*.mp3`;
        }
        $num = scalar (@music);
        if (cur_track == @music) {
            $cur_track = -1;
        }
        $cur_track++;
        chomp $music[$cur_track];
        return $music[$cur_track];
    }
}




Это сообщение отредактировал(а) powerfox - 1.3.2011, 00:43


--------------------
user posted image
PM WWW   Вверх
Louie
Дата 1.3.2011, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



так.. код работает. считывает все по порядку!! но теперь он ненаходит вставки .
Тобишь через каждые 5 песен он играет "вставку". Но когда дело доходит до этого, то перл выдает вот это.

Код

Perl subsystem quering for new track:
Playlist file name is empty, shutting down.
Perl subsystem shutting down:



Хотя до этого находил так же рандомно из папки и никакой плейлист ему не нужен был.. 

Исправили одно, нарисовался другой косяк +(

Эх... достал уже этот скрипт...


_-------------------------------------------

Хотя если поменять название папки - vstavki , на основную папку, то все продолжает играть дальше, по порядку. Т.е. Перл "потерял" папку. Права поставил 777 и на все песни в ней (ради проверки), всё равно не находит =( Он хочет играть только с одной папки =(

Это сообщение отредактировал(а) Louie - 1.3.2011, 04:13
PM MAIL   Вверх
powerfox
Дата 1.3.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Нужно так:
Код

if (cur_track == @music) {

--->
Код

if (cur_track >= @music) {




--------------------
user posted image
PM WWW   Вверх
arto
Дата 1.3.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



my @mp3;

sub ices_init {
   my @j = </home/muzika/vstavki/*.mp3>
   my ( $i,$j );
   @mp3 = map { if (++$i%5 == 0) { $j[++$j%$#j] } else { $_ } } </home/muzika/*.mp3>;
}

sub ices_get_next { return shift @mp3; }

проверить крайние эффекты.
PM MAIL ICQ   Вверх
Louie
Дата 2.3.2011, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



arto - 
Код

my @mp3;

sub ices_init {
   my @j = </home/muzika/vstavki/*.mp3>
   my ( $i,$j );
   @mp3 = map { if (++$i%5 == 0) { $j[++$j%$#j] } else { $_ } } </home/muzika/*.mp3>;
}


sub ices_shutdown {
        print "Perl subsystem shutting down:\n";
}
sub ices_get_next { return shift @mp3; }



sub ices_get_metadata {
       return "GunGames.Lv Radio";
}



Код

Logfile opened
syntax error at /usr/local/etc/modules/ices.pm line 5, near "my "
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []

powerfox - Поменял код, выдаёт тоже-самое +(



Это сообщение отредактировал(а) Louie - 2.3.2011, 01:20
PM MAIL   Вверх
arto
Дата 2.3.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а чыто там до 5'ой строчки?
PM MAIL ICQ   Вверх
Louie
Дата 2.3.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Это весь код, который я вставил. Тобишь всё что есть, написано выше
PM MAIL   Вверх
arto
Дата 2.3.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



my @j = </home/muzika/vstavki/*.mp3>;
PM MAIL ICQ   Вверх
Louie
Дата 2.3.2011, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Код

Logfile opened
ices.pm did not return a true value at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []


перл файл:

Код

my @mp3;

sub ices_init {
   my @j = </home/music/vstavki/*.mp3>; 
   my ( $i,$j );
   @mp3 = map { if (++$i%5 == 0) { $j[++$j%$#j] } else { $_ } } </home/music/muzika/*.mp3>;
}


sub ices_shutdown {
        print "Perl subsystem shutting down:\n";
}
sub ices_get_next { return shift @mp3; }



sub ices_get_metadata {
       return "blablabla";
}


PM MAIL   Вверх
arto
Дата 2.3.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



1; в самый конец файла
PM MAIL ICQ   Вверх
Louie
Дата 2.3.2011, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Спасибо ОГРОМНОЕ!!!!!! Я бы сказал СПАСИБИЩЕ! =))

Буду теперь думать как его заставить считывать новые песенки без перезапуска программы +)
PM MAIL   Вверх
arto
Дата 2.3.2011, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



stat на "." и сравнивать mtime.
PM MAIL ICQ   Вверх
Louie
Дата 8.3.2011, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Товарищи! Извиняйте меня пожалуйсто.
Но вопрос.. Всё работает супер. как часики, по после проигрывания всех треков, программа выходит.
А можно ли сделать чтобы после того как в папке закончилась музыка, то начаналось проигрывание с первого трека. 
Спасибо заранее!!! 
PM MAIL   Вверх
arto
Дата 8.3.2011, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



по исчерпанию @mp3 запускать ices_init.
PM MAIL ICQ   Вверх
Louie
Дата 8.3.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



А поподробнее? Если Вас не затруднит...
PM MAIL   Вверх
arto
Дата 8.3.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ices_init () unless (@mp3);
PM MAIL ICQ   Вверх
Louie
Дата 12.3.2011, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Playlist file name is empty, shutting down.
Perl subsystem shutting down:


Как понимаете, плэйлиста и нету =( Сделал, ради проверки. Указал файл, а ему всё равно +(

может не туда строчку вставил?

Код

my @mp3; sub ices_init {
   my @j = </home/gguser/radio/jingli/*.mp3>;
   my ( $i,$j );
   @mp3 = map { if (++$i%6 == 0) { $j[++$j%$#j] } else { $_ } } 
</home/gguser/radio/muzika/*.mp3>;
}
ices_init () unless (@mp3);

sub ices_shutdown {
        print "Perl subsystem shutting down:\n";
}
sub ices_get_next { return shift @mp3; } sub ices_get_metadata {
       return "blablabla";

}

1;


Это сообщение отредактировал(а) Louie - 12.3.2011, 20:33
PM MAIL   Вверх
arto
Дата 13.3.2011, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



поместить в ices_get_next
PM MAIL ICQ   Вверх
Louie
Дата 13.3.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Спасибо огромное!!! Все заработало +) 
PM MAIL   Вверх
Badmne
Дата 4.4.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



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

апуск файла каждый час (отбивка времени):

var P    : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;

strPath := 'C:\CLOCK\'; // Путь к папке, где лежат отбивки часов
strJingle := 'C:\CLOCK\start_hour.mp3'; //Путь и название джингла после отбивки часов

PAL.Loop := True;

PAL.WaitForTime('XX:59:15'); //запускаемся в конце каждого часа. 45 сек - время буферезации, подбираем по свом параметрам, вкусам

strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3

P := Aux1;
if P <> nil then
begin

    Queue.AddFile(strJingle, ipTop);
    Queue.AddFile(strFile, ipTop);



P := ActivePlayer;
if P <> nil then P.FadeToNext;


end;
 
PM MAIL   Вверх
Pfailed
Дата 4.4.2011, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Цитата(Badmne @ 4.4.2011,  18:27)
Извините,что открываю тему заного. Но можно ли как-нибудь дополнить этот скриптик, тем чтобы он каждый час проигрывал файл. Тобишь допустим в каждую 59 минуту он проигрывает файл определенный. Есть скрипт для программы под Виндовс, а в перле несмыслю ничего. 
Вот код ( может поможет ) 
Код

апуск файла каждый час (отбивка времени):

var P    : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;

strPath := 'C:\CLOCK\'; // Путь к папке, где лежат отбивки часов
strJingle := 'C:\CLOCK\start_hour.mp3'; //Путь и название джингла после отбивки часов

PAL.Loop := True;

PAL.WaitForTime('XX:59:15'); //запускаемся в конце каждого часа. 45 сек - время буферезации, подбираем по свом параметрам, вкусам

strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3

P := Aux1;
if P <> nil then
begin

    Queue.AddFile(strJingle, ipTop);
    Queue.AddFile(strFile, ipTop);



P := ActivePlayer;
if P <> nil then P.FadeToNext;


end;

Это не Perl, а нечто Pascal подобное.


--------------------
PM MAIL   Вверх
Badmne
Дата 4.4.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Ну это код для программы под Виндовсом. это я просто в пример выложил, может его можно переделать как-то... 
PM MAIL   Вверх
arto
Дата 4.4.2011, 23:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



50€/hour.

слишком много надо разбираться, как работает ваша система, как можно прервать трансляцию текущей музыки, как ее возобновить.
PM MAIL ICQ   Вверх
Badmne
Дата 5.4.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



хорошо. А можно сделать, чтобы просто в определенное время играла музыка из другой папочки? Ведь с джинглами получилось, только там была зависимость от кол-ва песенок, а нельзя сделать зависимость от времени?
PM MAIL   Вверх
arto
Дата 5.4.2011, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



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

или -- определяем перед каждым проигрыванием длину файла, и вычисляем, сколько он может играть.
как запустить на проигрывание только части файла?
PM MAIL ICQ   Вверх
Badmne
Дата 5.4.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Ну скрипт который я предоставил, он сам обрывает песенку и включает другую из указанной папки. Следовательно в нём лежит информация, как останавливать музыку.
PM MAIL   Вверх
arto
Дата 5.4.2011, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



вы его подробно прокомментируйте, и я, если будет время, прочитаю
PM MAIL ICQ   Вверх
gcc
Дата 5.4.2011, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Badmne, Вам сюда: http://forum.vingrad.ru/forum/Vingrad-help-center.html


Это сообщение отредактировал(а) gcc - 5.4.2011, 22:16
PM WWW ICQ Skype GTalk Jabber   Вверх
Badmne
Дата 6.4.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



arto,  кого именно прокоментировать? Я в скриптах не очень. Код который я выложил добавляем в програмку которая работает под Виндовсом и там всё происходит само. Значит в тех строчках всё прописано. Вот я и думал, поскольку там другой язык, то возможно ли его перевести на пэрл язык?
PM MAIL   Вверх
arto
Дата 6.4.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



для того, чтобы понять, что надо сделать, надо смотреть на вашу систему, а это займет время.


PM MAIL ICQ   Вверх
Badmne
Дата 6.4.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



хм... и как Вам в этом помочь? что необходимо?
PM MAIL   Вверх
arto
Дата 6.4.2011, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



50€/hour

вам ведь еще fade понадобится для прерванного фрагмента?
PM MAIL ICQ   Вверх
Badmne
Дата 7.4.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Так.. нашел в интернете, что можно использовать скрипт который вы уже написали, но дополнить его. суть такова:

Цитата
модуль перл будет брать треки из одной папки, и проверять каждый раз время, если больше или ровно 22:00 и меньше нужного (допустим 23.00 или 22.30) будет брать из другой. Если надо строго в 22.00 то в 22.00 крон пускает сигнал перейти на сл трек


Такое реально сделать?
PM MAIL   Вверх
arto
Дата 7.4.2011, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



как ловить сигнал? как я понимаю, у вас embedded perl.
в предложенном решении нет понятия fade (приглушения), музыка будет рваться резко.

так что все равно надо будет вашу систему изучать.
PM MAIL ICQ   Вверх
Badmne
Дата 7.4.2011, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



"оборваться" не даст сервер.
Так скажем это транслятор, который выполняет скрипты. А сервер плавные переходы делает. Поэтому может сделать чтобы он обрывал их? 
PM MAIL   Вверх
arto
Дата 7.4.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



какие сигналы он ловит?
как он прерывает музыку?
после прерывания он вызывает ices_get_next?
PM MAIL ICQ   Вверх
Badmne
Дата 7.4.2011, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



всё что он ловит, было написано в скрипте указанном выше..
а подробнее я не скажу , т.к. не знаю эту программу так досканально.
Ну скорей всего ices_get_next, в том то скрипте он этот сигнал цепляет?
PM MAIL   Вверх
arto
Дата 7.4.2011, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



все упирается в то, что в любом случае надо смотреть, как ваша система работает.

Добавлено через 11 минут и 2 секунды
sub ices_get_next {
    my ($h, $m, $s) = ( localtime )[2,1,0];

    if ($h == 12 && $m == 55 && $s == 0)
       return ( </home/gguser/radio/other_muzika/*.mp3> )[0];
    return shift @mp3;
}
PM MAIL ICQ   Вверх
Badmne
Дата 7.4.2011, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



ну в смысле , как? =) что показать? 
PM MAIL   Вверх
arto
Дата 7.4.2011, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



написал вам -- если время ровно 12:55:00, то вам проиграют музыку из другого каталога.
PM MAIL ICQ   Вверх
Badmne
Дата 7.4.2011, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Извините, не понял последней фразы +(
PM MAIL   Вверх
arto
Дата 7.4.2011, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



PM MAIL ICQ   Вверх
Badmne
Дата 10.4.2011, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Вставил код. 
Код

Logfile opened
syntax error at /usr/local/etc/modules/ices.pm line 17, near ")
       return"
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Initialization of playlist handler failed. []
Ices Exiting...



сам плагин выглядит так:
Код

my @mp3; sub ices_init {
   my @j = </home/gguser/radio/vstavki/*.mp3>;
   my ( $i,$j );
   @mp3 = map { if (++$i%6 == 0) { $j[++$j%$#j] } else { $_ } } 
</home/gguser/radio/nonstop/*.mp3>;

}

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

sub ices_get_next { 
    my ($h, $m, $s) = ( localtime )[2,1,0];

    if ($h == 12 && $m == 55 && $s == 0)
       return ( </home/gguser/radio/other_muzika/*.mp3> )[0];
 
ices_init () unless (@mp3);
return shift @mp3;
}

sub ices_get_metadata {
       return "blablabla";

}

1;


PM MAIL   Вверх
arto
Дата 11.4.2011, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



if ($h == 12 && $m == 55 && $s == 0) {
       return (( </home/gguser/radio/other_muzika/*.mp3> )[0]);
}
PM MAIL ICQ   Вверх
Badmne
Дата 11.4.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Скрипт прочёлся без проблем. Перл его скушал, только в заданное время - 0 реакции =( Проигрывает дальше музыку из первоначальной папки. 
PM MAIL   Вверх
arto
Дата 11.4.2011, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



естественно.
система должна прерваться.
пошлите ей сигнал, например KILL
PM MAIL ICQ   Вверх
Badmne
Дата 11.4.2011, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



я полностью перезапустил всю систему... +(
PM MAIL   Вверх
arto
Дата 11.4.2011, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ну. я не знаю, как работает ваша система.
изучайте документацию.
PM MAIL ICQ   Вверх
Badmne
Дата 12.4.2011, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



Your script module has to define at least a function named ices_get_next, which should return a path to a file or FIFO containing MP3 data.
In addition you may define the functions ices_init and ices_shutdown which will be called by ices once before asking for the first song and before shutting down, respectively.
You may also define ices_get_lineno, which specifies the line number of the current track in the cue file. If you don't use the cue file it is safe to omit this function.
Finally you can define ices_get_metadata to return a string you want to use for title streaming. Ices will call this function once per track after calling ices_get_next. If this function is not defined or returns null, ices will use whatever it can get out of the file itself, either tags or the file name.
I suggest you take a look in the distributed module files and just expand on that. 

Нашел вот это... может не ту команду подаёт перл скрипт?
PM MAIL   Вверх
arto
Дата 12.4.2011, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



вы английский понимаете?
нет там возможности прервать текущий трек.
можете попробовать вот эти сигналы для передргивания трека: HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS, но я не уверен, что они помогут.

максимум -- обрезать перед запуском трек, подстраиваясь под время.
PM MAIL ICQ   Вверх
Badmne
Дата 12.4.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.4.2011

Репутация: нет
Всего: нет



ну допустим команда USR1 - включает сразу следующую песню.
Значит делаем вывод, что перл не может оборвать песенку в опред. время и поставить другую из другой папки. А как-нибудь заставить через cron это сделать тоже нереально?


Это сообщение отредактировал(а) Badmne - 12.4.2011, 20:28
PM MAIL   Вверх
arto
Дата 12.4.2011, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ну и проверяйте в ices_get_next время, и в нужное включайте нужный трек.
в crontab пропишите посылку сигнала в нужное время.
PM MAIL ICQ   Вверх
Louie
Дата 21.4.2011, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Товарищи.. вернусь к скрипту, который Вы написали. Спасибо Вам огромное, но у меня вопросик. Можно ли как-то подправить скрипт, чтобы после "вставки" он проигрывал следующий файл, а не через один. Получается что "вставка" сьедает композицию. Вот пример:
У меня есть 20 файлов в основной папке. Вставки играют каждые 5 файлов. И получается что у меня сьедается файл под номером 6,11,16.
Как то можно подредактировать ?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1862 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.