![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Вем добрый день.
Сразу приступлю к теме. Имеется скрипт проигрывания музыки. Он беред рандомную музыку из папки и через кажды 5 песенок вставляет другую песенку. Но суть в другом. Как я уже подметил , скрипт играет рандомно, но мне надо чтобы всё шло по порядку. вот код:
Можете помочь и поправить этот код? Это сообщение отредактировал(а) Louie - 28.2.2011, 16:53 |
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Как-то так:
Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:19 |
|||
|
||||
Louie |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
так. походу что-то не так.
выложу полностью плагин
после замены он выглядит так:
и тогда Перл начинает ругаться:
|
||||||
|
|||||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Стр. 22-24:
Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:55 |
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
|
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Извиняюсь, ошибся
![]() Надо так (не забудьте скобки в начали в конце):
|
|||
|
||||
Louie |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Наверное уже достал Вас =( Общий код теперь выглядит так -
|
||||
|
|||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Да это я косячу ![]()
Это сообщение отредактировал(а) powerfox - 1.3.2011, 00:43 |
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
так.. код работает. считывает все по порядку!! но теперь он ненаходит вставки .
Тобишь через каждые 5 песен он играет "вставку". Но когда дело доходит до этого, то перл выдает вот это.
Хотя до этого находил так же рандомно из папки и никакой плейлист ему не нужен был.. Исправили одно, нарисовался другой косяк +( Эх... достал уже этот скрипт... _------------------------------------------- Хотя если поменять название папки - vstavki , на основную папку, то все продолжает играть дальше, по порядку. Т.е. Перл "потерял" папку. Права поставил 777 и на все песни в ней (ради проверки), всё равно не находит =( Он хочет играть только с одной папки =( Это сообщение отредактировал(а) Louie - 1.3.2011, 04:13 |
|||
|
||||
powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Нужно так:
--->
|
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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; } проверить крайние эффекты. |
|||
|
||||
Louie |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
arto -
powerfox - Поменял код, выдаёт тоже-самое +( Это сообщение отредактировал(а) Louie - 2.3.2011, 01:20 |
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
а чыто там до 5'ой строчки?
|
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Это весь код, который я вставил. Тобишь всё что есть, написано выше
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
my @j = </home/muzika/vstavki/*.mp3>;
|
|||
|
||||
Louie |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
перл файл:
|
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
1; в самый конец файла
|
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Спасибо ОГРОМНОЕ!!!!!! Я бы сказал СПАСИБИЩЕ! =))
Буду теперь думать как его заставить считывать новые песенки без перезапуска программы +) |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
stat на "." и сравнивать mtime.
|
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Товарищи! Извиняйте меня пожалуйсто.
Но вопрос.. Всё работает супер. как часики, по после проигрывания всех треков, программа выходит. А можно ли сделать чтобы после того как в папке закончилась музыка, то начаналось проигрывание с первого трека. Спасибо заранее!!! |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
по исчерпанию @mp3 запускать ices_init.
|
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
А поподробнее? Если Вас не затруднит...
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
ices_init () unless (@mp3);
|
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Playlist file name is empty, shutting down.
Perl subsystem shutting down: Как понимаете, плэйлиста и нету =( Сделал, ради проверки. Указал файл, а ему всё равно +( может не туда строчку вставил?
Это сообщение отредактировал(а) Louie - 12.3.2011, 20:33 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
поместить в ices_get_next
|
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Спасибо огромное!!! Все заработало +)
|
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Извините,что открываю тему заного. Но можно ли как-нибудь дополнить этот скриптик, тем чтобы он каждый час проигрывал файл. Тобишь допустим в каждую 59 минуту он проигрывает файл определенный. Есть скрипт для программы под Виндовс, а в перле несмыслю ничего.
Вот код ( может поможет )
|
|||
|
||||
Pfailed |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Это не Perl, а нечто Pascal подобное. |
||||
|
|||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Ну это код для программы под Виндовсом. это я просто в пример выложил, может его можно переделать как-то...
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
50€/hour.
слишком много надо разбираться, как работает ваша система, как можно прервать трансляцию текущей музыки, как ее возобновить. |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
хорошо. А можно сделать, чтобы просто в определенное время играла музыка из другой папочки? Ведь с джинглами получилось, только там была зависимость от кол-ва песенок, а нельзя сделать зависимость от времени?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
что делать, если в определенное время уже играет музыка?
как ее прервать? как ее восстановить после проигрывания музыки из другой папки? или -- определяем перед каждым проигрыванием длину файла, и вычисляем, сколько он может играть. как запустить на проигрывание только части файла? |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Ну скрипт который я предоставил, он сам обрывает песенку и включает другую из указанной папки. Следовательно в нём лежит информация, как останавливать музыку.
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
вы его подробно прокомментируйте, и я, если будет время, прочитаю
|
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
Badmne, Вам сюда: http://forum.vingrad.ru/forum/Vingrad-help-center.html
Это сообщение отредактировал(а) gcc - 5.4.2011, 22:16 |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
arto, кого именно прокоментировать? Я в скриптах не очень. Код который я выложил добавляем в програмку которая работает под Виндовсом и там всё происходит само. Значит в тех строчках всё прописано. Вот я и думал, поскольку там другой язык, то возможно ли его перевести на пэрл язык?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
для того, чтобы понять, что надо сделать, надо смотреть на вашу систему, а это займет время.
|
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
хм... и как Вам в этом помочь? что необходимо?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
50€/hour
вам ведь еще fade понадобится для прерванного фрагмента? |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Так.. нашел в интернете, что можно использовать скрипт который вы уже написали, но дополнить его. суть такова:
Такое реально сделать? |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
как ловить сигнал? как я понимаю, у вас embedded perl.
в предложенном решении нет понятия fade (приглушения), музыка будет рваться резко. так что все равно надо будет вашу систему изучать. |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
"оборваться" не даст сервер.
Так скажем это транслятор, который выполняет скрипты. А сервер плавные переходы делает. Поэтому может сделать чтобы он обрывал их? |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
какие сигналы он ловит?
как он прерывает музыку? после прерывания он вызывает ices_get_next? |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
всё что он ловит, было написано в скрипте указанном выше..
а подробнее я не скажу , т.к. не знаю эту программу так досканально. Ну скорей всего ices_get_next, в том то скрипте он этот сигнал цепляет? |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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; } |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
ну в смысле , как? =) что показать?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
написал вам -- если время ровно 12:55:00, то вам проиграют музыку из другого каталога.
|
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Извините, не понял последней фразы +(
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
||||
|
||||
Badmne |
|
||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Вставил код.
сам плагин выглядит так:
|
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
if ($h == 12 && $m == 55 && $s == 0) {
return (( </home/gguser/radio/other_muzika/*.mp3> )[0]); } |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
Скрипт прочёлся без проблем. Перл его скушал, только в заданное время - 0 реакции =( Проигрывает дальше музыку из первоначальной папки.
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
естественно.
система должна прерваться. пошлите ей сигнал, например KILL |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
я полностью перезапустил всю систему... +(
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
ну. я не знаю, как работает ваша система.
изучайте документацию. |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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. Нашел вот это... может не ту команду подаёт перл скрипт? |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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, но я не уверен, что они помогут. максимум -- обрезать перед запуском трек, подстраиваясь под время. |
|||
|
||||
Badmne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.4.2011 Репутация: нет Всего: нет |
ну допустим команда USR1 - включает сразу следующую песню.
Значит делаем вывод, что перл не может оборвать песенку в опред. время и поставить другую из другой папки. А как-нибудь заставить через cron это сделать тоже нереально? Это сообщение отредактировал(а) Badmne - 12.4.2011, 20:28 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
ну и проверяйте в ices_get_next время, и в нужное включайте нужный трек.
в crontab пропишите посылку сигнала в нужное время. |
|||
|
||||
Louie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Товарищи.. вернусь к скрипту, который Вы написали. Спасибо Вам огромное, но у меня вопросик. Можно ли как-то подправить скрипт, чтобы после "вставки" он проигрывал следующий файл, а не через один. Получается что "вставка" сьедает композицию. Вот пример:
У меня есть 20 файлов в основной папке. Вставки играют каждые 5 файлов. И получается что у меня сьедается файл под номером 6,11,16. Как то можно подредактировать ? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |