Re: Скрипты PAL для Sam Broadcaster
mihtel
Первый русскоязычный форум посвященный интернет-радиовещанию
Форум интернет радио Icecast и Shoutcast → Технологии вещания, софт, скрипты → Скрипты PAL для Sam Broadcaster
Страницы Назад 1 … 12 13 14 15 16 … 21 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
mihtel
пишет vitmain:
mihtel
ребята,ну не вижу я совсем!
если кто может помочь ну киньте как и что делать,а
главное,где взять то,о чём тут так октивно пишут последние несколько сообщений?
изображения конечно хорошо,но мне их извените за прямоту смотреть нечим.
ребята держите,кому нужно
// Планировщик запуска файлов v 1.1 :
// Справка по настройке скрипта находится в подвале кода
var Time, str, PlayerMode, scheduler, FName: string;
var P: TPlayer;
var Song: TSongInfo;
var s, q, w: integer;
PAL.Loop := True;
PAL.WaitForTime('XX:XX:40'); // запускаемся в конце каждой минуты
Time:= FormatDateTime('hh:nn', now+1/1440);
FName:= '';
scheduler:= '';
q:= 0;
repeat
q:= q+1;
Case Time of
// планировщик запуска файлов:
//'XX:15': scheduler:= 'Q/D:\Radio\Jingles\соц. реклама\соц. реклама 1.wav';
//'XX:45': scheduler:= 'Q/D:\Radio\Jingles\соц. реклама\соц. реклама2.mp3';
//'XX:00': scheduler:= 'Q/D:\Radio\Jingles\для рекламы программы.wav';
'XX:28': scheduler:= 'Q/D:\Radio\Jingles\music life - музыка которую слушают.mp3';
'15:58': scheduler:= 'FTN/D:\Radio\Jingles\помните на тлене растут деревья.mp3';
'15:59': scheduler:= 'fts';
'XX:20': scheduler:= 'mf/D:\Radio\Jingles\вы устали от цивильной жизни (голос RMS -6db) v1.wav';
'XX:40': scheduler:= 'mf/D:\Radio\Jingles\вы устали от цивильной жизни (голос RMS -6db) v1.wav';
'XX:00': scheduler:= 'q/D:\Radio\Jingles\вы устали от цивильной жизни v1.wav';
end; // case
if q= 1 then
for s:= 1 to 2 do Time[s]:= 'X';
until (scheduler<>'') or (q=2);
if scheduler<> '' then begin
scheduler:= AnsiLowerCase(scheduler);
// парсим параметры
str:= '';
w:= 0;
PlayerMode:= '';
scheduler:= scheduler+ '/';
For q:= 1 to length(scheduler) do begin
if scheduler[q]<> '/' then str:= str+scheduler[q]
Else begin
Case w of
0: PlayerMode:= str;
1: FName:= str;
end; // case
str:= '';
w:= w+1;
end; // else
end; // For q
// режимы проигрывания
Case PlayerMode of
'q': Queue.AddFile(FName, ipTop); // ставим в очередь
'ftn': begin
P := Aux1;
if P <> nil then
begin
Queue.AddFile(FName, ipTop);
P := ActivePlayer;
if P <> nil then P.FadeToNext;
end;
end; // проигрываем через Fade To Next
'm': begin
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom, NoRules);
if Song <> nil then
begin
P.QueueSong(Song);
P.Play;
end;
end;
end; // миксуем трек
'ftp': begin
P:= DeckA;
P.FadeToPlay; end;
'fts': ActivePlayer.FadeToStop;
'mf': begin
P := SoundFX;
if P <> nil then begin
Queue.AddFile(FName, ipTop);
Song:= Queue.NextInQueue;
if Song <> nil then begin
P.QueueSong(Song);
P.Play;
end;
end;
//rewrited by beqa
end; // mf. миксуем файл на играющий трек
end; // case
end; // scheduler<>''
{ инструкция по использованию планировщика запуска файлов:
подключите к SamBroadcaster файл скрипта - scheduler.pal .
можете сразу отметить его авто запуск, поставив флажок на:
"Automatically start script".
впишите в редактор полный путь к скрипту. например:
Script source file
C:\Program Files\SpacialAudio\SAMBC\PAL\scheduler.pal
перейдите на jaws курсор и нажмите кнопку - OK.
после этого скрипт будет подключен, а также запускаться автоматически при запуске Сэма.
далее настраиваем планировщик.
описание:
планировщик может запускать медиа файлы непосредственно с диска.
умеет стартовать плеер (чтобы это сработало нужно после запуска сэма запустить по F1 проигрывание , и сразу остановить его - F3.
видимо чтобы это работало нужен запуск энкодера. после этого скрипт уже может стартовать воспроизведение в указаное в нем времени).
может останавливать плеер.
может ставить в очередь файл с диска.
может миксовать в случайном порядке файлы из папки "Sound FX (All)".
также может миксовать файл с диска, на играющий трек.
понимает как абсолютное , так и относительное время.
не рекомендуется изменять код скрипта, во избежание глюков в работе оного.
скрипт распространяется совершенно бесплатно.
и предлагается - как есть..
настройка планировщика:
открываем в обычном блокноте файл скрипта - scheduler.pal
находим строку:
---
Case Time of
// планировщик запуска файлов:
--
после коментария - "планировщик запуска файлов", пишем программу запуска..
не выходя за операторную скобку - "end; // case"
иными словами - ваш код находится внутри этой скобки.
синтаксис ваших команд следующий:
['HH:MM': scheduler:= 'PlayerMode/FileNamePath';]
левую и правую квадратные скобки не вписываем..
в левой части командной строки вписывается время срабатывания в минутах и часах, в правой действие проигрывателя.
часы и минуты обязательно указываются двусимвольными.
например - "02:05".
HH - означают часы.
MM - означают минуты.
если например нужно, чтобы файл проигрывался каждый час в двадцать пять минут,
тогда вместо абсолютных часов вписываем - "XX" , только большими буквами.
тоесть полная запись будет такая - "'XX:25':" , без кавычек разумеется.
все знаки апострофа обязательны (литерал).
"scheduler:=" - зарезервированное слово - переменная: string;
ей присваивается выражение - "PlayerMode/FileNamePath"
PlayerMode - режим проигрывания плеера.
FileNamePath - полный путь к медиа-файлу
PlayerMode может иметь следующие параметры:
"q" - поставить файл в очередь за играющим в данный момент треком.
"ftn" - остановить играющий трек и проиграть указанный файл (FadeToNext (фейд уменьшения на фейд увеличения))
"m" - миксовать случайно выбранный трек из "Sound FX (All)" на играющий трек
"mf" - миксовать файл на играющий трек
"ftp" - включить воспроизведение трека вверху очереди в списке Queue
"fts" - остановить играющий трек.
FileNamePath имеет только один параметр - полное указание пути к медиа-файлу (относительный путь не прокатит).
если в параметре PlayerMode вы указываете - "m", "ftp", "fts", то вписывать параметр "FileNamePath" не нужно..
полный пример написания:
'XX:25': scheduler:= 'q/c:\music\mihtelradio.mp3';
это значит, что файл - mihtelradio.mp3 будет ставится в очередь за играющим в данный момент треком, каждый час в двадцать пять минут.
'19:00': scheduler:= 'ftn/c:\music\news.mp3';
это значит, что файл - news.mp3 прервет в 19:00 играющий в данный момент трек, после сам проиграется и после окончания запустит первый в очереди плей-листа Сэма файл на проигрывание.
'XX:30': scheduler:= 'm';
это значит, что случайно выбранный трек из папки - Sound FX (All), будет микшироваться с играющим треком в 30 минут каждого часа.
'XX:00': scheduler:= 'mf/c:\music\time.mp3';
Это значит, что файл "time.mp3" будет микшироваться с играющим треком каждый час.
'07:00': scheduler:= 'ftp';
это значит, что в 7:00 утра включится плеер и начнет играть первый в очереди списка воспроизведения файл.
'23:59': scheduler:= 'fts';
это значит, что в 23:59 плеер остановит воспроизведение.
обратите внимание, что параметры PlayerMode и FileNamePath разделены знаком - "/".
который является разделителем.
знаки "//" - закомментированная строка.
если допустим у вас введено абсолютное время такое же, как и относительное (это когда минуты равны),
то приоритет срабатывания программы отдается абсолютному времени.
когда плеер остановлен, то скорее всего энкодер не отключается и канал будет занят вашим Сэмом.
поэтому имейте это ввиду! }
// Запуск файла каждый час (отбивка времени)
// а также счетчик дней и часов до нового года.
var P: TPlayer;
var Song: TSongInfo;
var D: DateTime;
var ClockFile, ClockPath, DayFile, UDayPath, DayPath, UHourPath, UHourFile: String;
// прописываем пути к джинглам
ClockPath:= 'd:\Radio\DateTime\CLOCK\'; // Путь к папке, где лежат отбивки часов
UDayPath:= 'd:\Radio\DateTime\days_before_new_year\'; // путь к папке, где лежат дни до нового года
DayPath:= 'd:\Radio\DateTime\days_new_year\'; // путь к папке, где лежат дни нового года
UHourPath:= 'd:\Radio\DateTime\hours_before_new_year\'; // путь к папке, где лежат часы до нового года
PAL.Loop := True;
PAL.WaitForTime('XX:00:00');
P:= Aux1;
if P <> nil then
begin
D:= Now+ 0/24; // системное время плюс смещение
DayFile:= '';
UHourFile:= '';
ClockFile:= ClockPath + FormatDateTime('hh', D) + '-00.mp3'; // определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3
Case FormatDateTime('m', D) of
'1': DayFile:= DayPath + FormatDateTime('d', D) + '.mp3';
'12': begin
DayFile:= UDayPath + IntToStr(31- StrToInt(FormatDateTime('d', D))) + '.mp3';
if FormatDateTime('d', D)= '31' then
UHourFile:= UHourPath + IntToStr(24- StrToInt(FormatDateTime('h', D))) + '.mp3';
end; // 12
end; // case
if UHourFile<> '' then Queue.AddFile(UHourFile, ipTop);
if DayFile<> '' then Queue.AddFile(DayFile, ipTop);
Queue.AddFile(ClockFile, ipTop);
Queue.AddFile(ClockPath+'start_hour.mp3', ipTop);
P := ActivePlayer;
if P <> nil then P.FadeToNext;
end;
скрипт на лайнер:
var Song : TSongInfo;
var P : TPlayer;
PAL.Loop := False;
PAL.WaitForTime('+00:00:00:00');
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom, NoRules);
if Song <> nil then
begin
P.QueueSong(Song);
//P.Play;
P.FadeToPlay;
PAL.WaitForPlayCount(1);
DeckA.Play;
end;
end;
а таким скриптом я вывожу рекламу в эфир:
PAL.Loop := True;
PAL.WaitForPlayCount(10);
CAT['Promos (All)'].QueueTop(smRandom, NoRules);
mihtel,
PAL.WaitForPlayCount(10);
Это значит, что после каждой 10-ой песни запускается файл из категории 'Promos'?
Я правильно понял?
Вот, кому нужно, после долгих мучений(слабо разбираюсь в программировании), допилил скрипт отбивки времени ( часа ) кто как называет...
var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;
PAL.Loop := True; // Закольцуем срабатывание скрипта
P := SoundFX; // Проигрывание файлов **-00.mp3 через SoundFX, а не через деки.
strPath := 'D:\TIME\'; // Папка где должны находиться файлы MP3 в формате "XX-00.mp3" (XX - это от 00 до 23 - 24 файла для каждого часа отдельно в папке D:\TIME\ )
PAL.WaitForTime('XX:59:24'); // Скрипт сработает на 59 минуте 24 секунде текущего часа
strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; // Собственно строка которая угадывает какой файл нужно выбирать в конце часа
Queue.AddFile(strFile, ipTop); // Добавка файла временной отбивки в очередь
Song := Queue.NextInQueue; // трудно объяснимое =)
P.QueueSong(Song); // трудно объяснимое =)
ActivePlayer.FadeToPause; // А вот самое интересное... То что сейчас проигрывается ставится с фейдингом на паузу
P.Play; // Начинает проигрываться наш файл XX-00.mp3
PAL.WaitForTime('+00:00:30'); // Фай у меня на 30 сек. , так что подгоняйте под своё время =)
QueuedPlayer.FadeToPlay; // Снимается с паузы дека A или B - не важно, и трек проигрывается дальше...
Если кому подойдет, был рад помочь добрым людям
Queue.AddFile(strFile, ipTop); // Добавка файла временной отбивки в очередь
Song := Queue.NextInQueue; // трудно объяснимое =)
P.QueueSong(Song); // трудно объяснимое =)
трудно обьяснимое и ненужное ) зачем добавлять в очередь если можно сразу всунуть в soundfx ?
пишет tarasian666:
Queue.AddFile(strFile, ipTop); // Добавка файла временной отбивки в очередь Song := Queue.NextInQueue; // трудно объяснимое =) P.QueueSong(Song); // трудно объяснимое =)
трудно обьяснимое и ненужное ) зачем добавлять в очередь если можно сразу всунуть в soundfx ?
А можно поподробнее... чет пока в голову не приходит, как же именно сразу всунуть в soundfx ?
По сей идее эта отбивка и так работает, но все же хочется доработать до идеала... что можете посоветовать?
Дайте пожалуйста маленькую наводку... Где рыть?!
Отредактировано ansaval (01-08-2013 20:53:06)
Приветствую всех!
Долго читаю этот форум и вот назрела необходимость обратиться с вопросом за помощью.
Друзья, есть вот такой скрипт:
var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;
strPath := 'C:\Users\saxell\Desktop\Jingles\'; // Ïóòü ê ïàïêå, ãäå ëåæàò îòáèâêè ÷àñîâ
strJingle := 'C:\Users\saxell\Desktop\Jingles\EuropeRussia-reklama.mp3'; //Ïóòü è íàçâàíèå äæèíãëà ïîñëå îòáèâêè ÷àñîâ
PAL.Loop := True;
PAL.WaitForTime('XX:59:45'); //çàïóñêàåìñÿ â êîíöå êàæäîãî ÷àñà. 45 ñåê - âðåìÿ áóôåðåçàöèè, ïîäáèðàåì ïî ñâîì ïàðàìåòðàì, âêóñàì
strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //îïðåäåëÿåì íàçâàíèå ôàéëà ñ íóæíûìè ÷àñèêàìè. Ôîðìàò èìåíè ôàéëà XX-XX.mp3
P := Aux1;
if P <> nil then
begin
Queue.AddURL('mms://live.rfn.ru/vesti_fm',ipTop);
PAL.WaitForTime(T['+00:00:15']); //Wait 15 secs
Queue.AddFile(strJingle, ipTop);
Queue.AddFile(strFile, ipTop);
P := ActivePlayer;
if P <> nil then P.FadeToNext;
end;
Здесь часовая отбивка, далее промо радио, далее новости с внешнего источника. Все работает прекрасно, но вот как сделать, чтобы этот внешний источник играл определенное время? Например 5 минут, а дальше штатный плейлист??
Прошу помощи!!
И вдогонку вопрос. Умеет ли SAM работать по DTMF или по какой-либо другой метке?
Отредактировано saxell (17-08-2013 14:39:24)
А как этот скрипт проигрывания в каждом часе на определенной минуте, привести к тому, чтобы он выбирал любой трек из нужной мне папки и ставил во время, просто сейчас вручную забит файл например REKLAMA20-3 и он ставит только его, а мне нужно, чтобы он гонял Рекламные блоки 1,2,4 и т.д
var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;
strPath := 'D:\Jn\2013\';
strJingle := 'D:\Jn\2013\REKLAMA20-3.mp3';
PAL.Loop := True;
PAL.WaitForTime('XX:19:48');
P := Aux1;
if P <> nil then
begin
Queue.AddFile(strJingle, ipTop);
P := ActivePlayer;
if P <> nil then P.FadeToNext;
end;
Всем привет, просьба помочь, в запаре опять.
Есть скрипт, который выводит джингл через определенное время
var Song : TSongInfo;
//скрипт будет выполнятся постоянно(многократно)
PAL.Loop := True;
//ставим задержку на 15 минут
PAL.WaitForTime('+00:15:00');
//выбираем трек наугад из "Station IDs" и ставим его вверх очереди
Song := CAT['Jingles_on_air'].ChooseSong(smRandom,NoRules);
//добавляем его в начало очереди
Queue.Add(song,ipTop);
Задача, добавить после джингла трек из категории Hit (CAT['Hit'].ChooseSong(smRandom,NoRules)), пробовал по разному, не идет чтото, выдает ошибку компиляции. Помогите пожалуйста
как-то так
var Song : TSongInfo;
//скрипт будет выполнятся постоянно(многократно)
PAL.Loop := True;
//ставим задержку на 15 минут
PAL.WaitForTime('+00:15:00');
Song := CAT['Hit'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop);
//выбираем трек наугад из "Station IDs" и ставим его вверх очереди
Song := CAT['Jingles_on_air'].ChooseSong(smRandom,NoRules);
//добавляем его в начало очереди
Queue.Add(Song,ipTop);
tarasian666, большое вам спасибо.
Всем привет.
Набыдлокодил вывод новостей на 15 и 45 минуте каждого часа с радиостанции Эхо Москвы.
Комментарии приветствуются, ибо постигаю дзен.
ps. В PAL вообще существуют функции? А то переписывать по сто раз одно и то же геморрой, проще же вызвать функцию с нужным аргументом.
PAL.Loop:=True;
PAL.WaitForTime('XX:15:00');
Queue.AddURL('http://radio.memonet.ru:501/current.mp3',ipTop);
ActivePlayer.FadeToNext;
PAL.WaitForTime('XX:45:00');
Queue.AddURL('здесь такая же ссылка, как и сверху, форум не дает вставить :)',ipTop);
ActivePlayer.FadeToNext;
Можете помочь со скриптом? В общем ситуация следующая, джингл играет через деки и на странице в SHOUTCAST - SONG HISTORY показывается его название. Как его скрыть? Переименовка джинглов это не выход, как и скрыть все проигранные треки. Можно ли это сделать с помощью скрипта? Спасибо!
Ok_go_love есть
isaul используйте aux вместо деки
пишет tarasian666:
Ok_go_love есть
isaul используйте aux вместо деки
Может есть какое готовое решение у тебя? Не поможешь со скриптом?
В этой же ветке должен быть такой скрипт
Доброго времени суток! Есть скрипт, который в конце каждого часа запускает "закрывашку" (последний трек в часе) для добивки и выравнивания часа. После него идёт отбивка времени через ftn. Можно ли сделать так, чтобы ftn не сразу обрывал предыдущую композицию, а с fade out'ом в 15 секунд. Может есть какой-то параметр или скрипт, который можно применить "в определённое время" или к определённой папке "закрывашек". Настройках в самой композиции отпадает ручная установка Fade out, т.к. песня будет играть не до конца, поэтому Fade out не будет применяться (мне так кажется). Лучше бы параметр для ftn... В общем, у коого есть какие идеи? Заранее спасибо!
пишет BadFM Radio:
Доброго времени суток! Есть скрипт, который в конце каждого часа запускает "закрывашку" (последний трек в часе) для добивки и выравнивания часа. После него идёт отбивка времени через ftn. Можно ли сделать так, чтобы ftn не сразу обрывал предыдущую композицию, а с fade out'ом в 15 секунд. Может есть какой-то параметр или скрипт, который можно применить "в определённое время" или к определённой папке "закрывашек". Настройках в самой композиции отпадает ручная установка Fade out, т.к. песня будет играть не до конца, поэтому Fade out не будет применяться (мне так кажется). Лучше бы параметр для ftn... В общем, у коого есть какие идеи? Заранее спасибо!
PAL.Loop:=True;
PAL.WaitForTime('XX:59:50'); - момент, когда нужно сфэйдить
ActivePlayer.FadeToNext;
Судя по всему, как-то так.
пишет Falcon:
пишет BadFM Radio:
Доброго времени суток! Есть скрипт, который в конце каждого часа запускает "закрывашку" (последний трек в часе) для добивки и выравнивания часа. После него идёт отбивка времени через ftn. Можно ли сделать так, чтобы ftn не сразу обрывал предыдущую композицию, а с fade out'ом в 15 секунд. Может есть какой-то параметр или скрипт, который можно применить "в определённое время" или к определённой папке "закрывашек". Настройках в самой композиции отпадает ручная установка Fade out, т.к. песня будет играть не до конца, поэтому Fade out не будет применяться (мне так кажется). Лучше бы параметр для ftn... В общем, у коого есть какие идеи? Заранее спасибо!
PAL.Loop:=True;
PAL.WaitForTime('XX:59:50'); - момент, когда нужно сфэйдить
ActivePlayer.FadeToNext;Судя по всему, как-то так.
спасибо!
пишет Leff27:
PAL.Loop := True; if (Queue.Count < 3) then begin SubDir['C:\Users\Administrator\Downloads\music'].QueueBottom(smLemmingLogic, EnforceRules); SubDir['C:\Users\Administrator\Downloads\music2'].QueueBottom(smLemmingLogic, EnforceRules); end; PAL.WaitForPlayCount(3);
Вставил в pal файл, сохранил, вставил в сэм, проверяю в режиме правки кода в сэме, все срабатывается, если в queue больше 3 треков, то ждет 3 трека, затем повторяет и если меньше, то добавляет... жму окей, выключаю-включаю скрипт через блок PAL scripts, он выполняется независимо сколько треков в queue, все равно добавляет треки из папок, чего не так!?!?!'
зы Разобрался, не актуально
Так что там было? У меня похожая трабла
Помогите кто может Кто может помогите. Подскажите как реализовать проблемку есть 4 плейлиста или папки и из них по очереди проигрывать музыку такое возможно?
Страницы Назад 1 … 12 13 14 15 16 … 21 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум интернет радио Icecast и Shoutcast → Технологии вещания, софт, скрипты → Скрипты PAL для Sam Broadcaster