Multi Stream Check (DJ Overname)

Voor vragen over Playlist Automation Language.
Plaats reactie
staafmixer
***
Berichten: 58
Lid geworden op: 11 feb 2008, 11:46

Multi Stream Check (DJ Overname)

Ongelezen bericht door staafmixer » 03 jan 2011, 13:52

Beste broadcasters,

Sinds een tijdje zijn wij ook bezig Sam broadcaster. We hebben een stream met 24/7 nonstop en willekeurig 4 Live Dj's vanaf eigen studio's.
Onze hoofdstream is IceCast2 deze draait vanaf onze 64bit colocate server in Amsterdam
(omdat ie op ubuntu 64bit draait kan ik dus geen shoutcast gebruiken)
Deze wordt aangestuurd door een WinXP Server @home met Sam & 4 shoutcast servers.
(Alle streams draaien met 192kbps zonder problemen.)
Ik had een mooi script gevonden op dit forum

Code: Selecteer alles

// *******************************************
// *** Doet een check op shoutcast server  ***
// *** en indien actief plaatst hij de url ***
// ***      bovenaan in de queue lijst     ***
// *******************************************

// te doen vooraf :
// ================
// - Geef de stream bij 'song info' als type : 'C'  ( = Unknown Content)
// - Zorg dat de stream die gecheckt moet worden bij "statistic relay" ingevuld staat !

pal.Loop:=True;
var I : Integer;
var SongA : TsongInfo;
SongA := Activeplayer.GetSonginfo();
PAL.LockExecution;
I := 1 ; //  Statistics Relay nummer (#) -1 (min één) !!!!
begin;
    WriteStr('Relay number '); WriteLn(I);
    WriteStr('--Active: '); WriteLn(Relays[I].Active);
//    WriteStr('--Status: '); WriteLn(Relays[I].Status);
  end;
PAL.UnlockExecution;
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
Queue.AddUrl('http://localhost:8000/',ipTop); // IP + poort van stream die gestart moet worden.
PAL.WaitForTime(T['+00:00:05']);  // PAL script was soms te snel waardoor stream soms 2x in queue stond. 5 sec pauze dus.
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is in de queue !!! Wacht 1 plaat
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is aan het spelen !!! Wacht tot stream stopt ...
SongA.Free;
PAL.WaitForTime(T['+00:00:25']); // 25 seconden pauze voor volgende stream check
Pal.LockExecution;
Dit script werkt overigens super!.
Nu mijn probleem (Wil graag het neusje van de zalm)
Ik heb voor iedere DJ een eigen shoutcast server geïnstalleerd. Dit omdat ik van iedere shoutcast server de titel weergave heb aangepast. ( Live uitzending met DJ Mark ) Bijvoorbeeld. Zo ziet iedere luisteraar van de hoofd stream welke dj er wordt doorgestuurd.

Hiervoor heb ik het script uiteraard wat aangepast.

Code: Selecteer alles

pal.Loop:=True;
var I : Integer;
var SongA : TsongInfo;
// DJ Mark
SongA := Activeplayer.GetSonginfo();
PAL.LockExecution;
I := 1 ; //  Statistics Relay nummer (#) -1 (min één) !!!!
begin;
    WriteStr('Relay number '); WriteLn(I);
    WriteStr('--Active: '); WriteLn(Relays[I].Active);
//    WriteStr('--Status: '); WriteLn(Relays[I].Status);
  end;
PAL.UnlockExecution;
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
Queue.AddUrl('http://localhost:1050/',ipTop); // IP + poort van stream die gestart moet worden.
PAL.WaitForTime(T['+00:00:05']);  // PAL script was soms te snel waardoor stream soms 2x in queue stond. 5 sec pauze dus.
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is in de queue !!! Wacht 1 plaat
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is aan het spelen !!! Wacht tot stream stopt ...
// DJ Peter
SongA := Activeplayer.GetSonginfo();
PAL.LockExecution;
I := 2 ; //  Statistics Relay nummer (#) -1 (min één) !!!!
begin;
    WriteStr('Relay number '); WriteLn(I);
    WriteStr('--Active: '); WriteLn(Relays[I].Active);
//    WriteStr('--Status: '); WriteLn(Relays[I].Status);
  end;
PAL.UnlockExecution;
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
Queue.AddUrl('http://localhost:1052/',ipTop); // IP + poort van stream die gestart moet worden.
PAL.WaitForTime(T['+00:00:05']);  // PAL script was soms te snel waardoor stream soms 2x in queue stond. 5 sec pauze dus.
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is in de queue !!! Wacht 1 plaat
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is aan het spelen !!! Wacht tot stream stopt ...
// DJ Henri
SongA := Activeplayer.GetSonginfo();
PAL.LockExecution;
I := 3 ; //  Statistics Relay nummer (#) -1 (min één) !!!!
begin;
    WriteStr('Relay number '); WriteLn(I);
    WriteStr('--Active: '); WriteLn(Relays[I].Active);
//    WriteStr('--Status: '); WriteLn(Relays[I].Status);
  end;
PAL.UnlockExecution;
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
Queue.AddUrl('http://localhost:1054/',ipTop); // IP + poort van stream die gestart moet worden.
PAL.WaitForTime(T['+00:00:05']);  // PAL script was soms te snel waardoor stream soms 2x in queue stond. 5 sec pauze dus.
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is in de queue !!! Wacht 1 plaat
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is aan het spelen !!! Wacht tot stream stopt ...
// DJ Andy
SongA := Activeplayer.GetSonginfo();
PAL.LockExecution;
I := 4 ; //  Statistics Relay nummer (#) -1 (min één) !!!!
begin;
    WriteStr('Relay number '); WriteLn(I);
    WriteStr('--Active: '); WriteLn(Relays[I].Active);
//    WriteStr('--Status: '); WriteLn(Relays[I].Status);
  end;
PAL.UnlockExecution;
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
Queue.AddUrl('http://localhost:1056/',ipTop); // IP + poort van stream die gestart moet worden.
PAL.WaitForTime(T['+00:00:05']);  // PAL script was soms te snel waardoor stream soms 2x in queue stond. 5 sec pauze dus.
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is in de queue !!! Wacht 1 plaat
If Relays[I].Active = False or (SongA['songtype'] = 'C') then
//do nothing
Else
PAL.WaitForPlayCount(1);  // Stream is aan het spelen !!! Wacht tot stream stopt ...
SongA.Free;
PAL.WaitForTime(T['+00:00:25']); // 25 seconden pauze voor volgende stream check
Pal.LockExecution;
Het script werkt hier. Alleen wat ik graag anders zou willen is:
Als 1 DJ klaar is met draaien en er een andere DJ op zijn eigen stream inlogt.
Dan doet Sam: De stream van de DJ die klaar is gooit ie automatisch uit de player en draait dan weer muziek uit zijn eigen playlist. 1 á 2 mp3's later ziet Sam dat er een nieuwe DJ is en plaats hem netjes in de top van de queue list.

Weet iemand of dit sneller kan. Dus dat Sam de nieuwe dj meteen doorstreamt als de vorige klaar is, zonder zelf eerst een eigen plaat te draaien??

zelf al geprobeerd:
er zit vertraging in de refresh tijd van de static relays. Mischien kan dit ergens versneld worden?
Ook als de 2e DJ 5 min inschakeld voor de volgende uitschakeld, draait sam toch 1 mp3 tussendoor.
Dit lukt me niet?

Dussss..... Wie heeft een oplossing??

audiostreamen
*
Berichten: 10
Lid geworden op: 11 apr 2011, 22:11
SAM-versie: 4.7.4.*
Database: MySQL 5.1
Windows: Server 2003
Contacteer:

Re: Multi Stream Check (DJ Overname)

Ongelezen bericht door audiostreamen » 11 apr 2011, 22:13

Probeer deze eens minder rekenwerk voor je database:

Code: Selecteer alles

const ShowURL1 = 'http://localhost:1050/';
const ShowURL2 = 'http://localhost:1052/';
const ShowURL3 = 'http://localhost:1054/';
var P1, P2 : TPlayer;
var Song : TSongInfo;

Queue.Clear;


begin
Queue.AddURL(ShowURL1,ipBottom);
Queue.AddURL(ShowURL2,ipBottom);
CAT['jingle'].QueueBottom(smLemmingLogic,EnforceRules);
Queue.AddURL(ShowURL3,ipBottom);
Queue.AddURL(ShowURL1,ipBottom);
CAT['favoriet'].QueueBottom(smLemmingLogic,EnforceRules);
CAT['favoriet'].QueueBottom(smLemmingLogic,EnforceRules);

end;
Met vriendelijke groet,

Mark
http://www.audiostreamen.nl

Silvertop
**
Berichten: 30
Lid geworden op: 20 apr 2010, 09:32
SAM-versie: 4.9.2.*
Database: FireBird
Windows: 7 32-bits
Locatie: Dedemsvaart
Contacteer:

Re: Multi Stream Check (DJ Overname)

Ongelezen bericht door Silvertop » 13 apr 2011, 17:57

Wie kan mij dit uitleggen?

Code: Selecteer alles

// - Geef de stream bij 'song info' als type : 'C'  ( = Unknown Content)
// - Zorg dat de stream die gecheckt moet worden bij "statistic relay" ingevuld staat !
Wie kan er een compleet kant er klaar zonder al die uitleg zooit script geven veel makkelijker! ik snap er zo geen snars van..

Alvast vriendelijke bedankt!

Gebruikersavatar
drOhimself
Moderator
Berichten: 2941
Lid geworden op: 27 mar 2010, 11:44
SAM-versie: SAM 2014.7
Database: MySQL 5.0
Windows: 2000

Re: Multi Stream Check (DJ Overname)

Ongelezen bericht door drOhimself » 13 apr 2011, 18:18

Huh ?

De regels met // ervoor, ZIJN juist de regels om te zorgen dat hetgeen volgt, begrepen wordt.
Dus je kan wel al de uitleg eruithalen, maar of je het dan nog snapt...???
Groedjez,
drO

sjerow
Beginnende SAM-gebruiker
Berichten: 2
Lid geworden op: 29 mar 2017, 19:51
SAM-versie: 4.2.2.*
Database: FireBird
Windows: 7 64-bits

Re: Multi Stream Check (DJ Overname)

Ongelezen bericht door sjerow » 05 jan 2018, 19:23

// - Geef de stream bij 'song info' als type : 'C' ( = Unknown Content)
// - Zorg dat de stream die gecheckt moet worden bij "statistic relay" ingevuld staat !

wie kan mij zeggen waar je de 'c' in moet zetten heb alles gedaan wat er stond maar hij zegt nu schript source file dont exist [smilie=negative.gif]
alvast bedankt zit er met smart op te wachten :D

Gebruikersavatar
drOhimself
Moderator
Berichten: 2941
Lid geworden op: 27 mar 2010, 11:44
SAM-versie: SAM 2014.7
Database: MySQL 5.0
Windows: 2000

Multi Stream Check (DJ Overname)

Ongelezen bericht door drOhimself » 08 jan 2018, 23:09

Open even een nieuw topic en geef daar in aan wat je precies hebt, en wat je precies hebt gedaan.
Je zult vast niet alles precies hetzelfde hebben als in dit jaren oude topic !


Verzonden vanaf mijn iPhone met Tapatalk
Groedjez,
drO

Plaats reactie
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht