Aller au contenu

Utiliser Radionomy uniquement pour héberger


Floran

Messages recommandés

Bonsoir !

 

Avez-vous une méthode pour utiliser Radionomy seulement pour l'hébergement, et ne pas utiliser son auto dj ?

 

J'ai pensé à mettre un serveur VPS toujours connecté au serveur, qui diffuse lui la musique de manière à ce que je puisse programmer exactement comme je le souhaite ma playlist, et rajouter du traitement directement dessus, mais là où je suis embêté, c'est que si ce VPS est toujours connecté au steam, ça va poser des problèmes quand les animateurs prennent l'antenne pour le live :/ Quelqu'un a t-il une méthode? ;)

 

Merci d'avance pour vos réponses !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

dans ton pal, tu lance une requette si le shoutcast est vide alors, la quete n'aboutit plus...

Lien vers le commentaire
Partager sur d’autres sites

Oui je vois parfaitement ! ^^

 

Donc ça demande à l'animateur de se connecter 3/4 minutes avant la mise à l'antenne, de mettre une musique ou un bed pour qu'il n'y ait pas de blanc lors de la mise à l'antenne, mais voilà par contre ça oblige l'animateur a terminer à heure pile (oui, parce que chez nous on aime bien dépasser de 5-10 minutes de temps en temps lol). Par contre voilà suffit que l'animateur se soit pas connecté à temps ou que son shoutcast plante pendant l'émission et c'est terminé :/

Lien vers le commentaire
Partager sur d’autres sites

  • Super-modérateurs

Un apache sur la machine qui diffuse et tu peux forcer la remise a l'antenne ;-) (voir sam avec mysql)

Pour l'heure, il n'y a rien a faire ! Par contre ça décroche proprement et ça raccroche bien aussi. Pas de blanc ou de truc moche

Lien vers le commentaire
Partager sur d’autres sites

Pour résumer cela brièvement, on utilisait une technique similaire sur PlayAgain Radio. On possédait un VPS avec un Sam Broadcaster qui tournait 24h/24 (avec du coup un traitement de son général, bien plus agréable que la daube de Radionomy), et chaque animateur possédait un serveur SHOUTcast personnel où il diffusait son émission. Tout était géré par des scripts PAL.
 
Quelques considérations à prendre quand on se lance dans un tel système :
 
- Les transitions quand deux émissions s'enchaînent : si on code "bêtement" ses scripts, on peut se retrouver avec une émission qui fait un "FadeToNext" car elle est terminée, et la prochaine qui fait également un "FadeToNext" pour se mettre à l'antenne, ce qui peut amener à tout simplement skipper la prochaine émission.
 
- La gestion des top horaires s'ils sont ajoutés automatiquement toutes les heures par un script PAL (ou tout autre moyen de programmation automatique). Dans le cas d'une émission qui dure 2h, 2 top horaires seront lus à la fin de l'émission.
 
- Si Sam Broadcaster est capable de lire des streams, il est cependant incapable d'envoyer à l'encodeur l'artiste et le titre joués sur le stream (du moins à mon époque, je pense que ça n'a pas dû évoluer). Et ça, c'est problématique puisque Radionomy a besoin de la liste des titres joués pour les déclarations aux organismes style SABAM, etc.
 
Je vous propose le script PAL que j'utilisais sur PlayAgain et qui répond à toutes ces problématiques. Le code n'est pas beau, dû entre autres aux limitations du langage de scripting du logiciel, mais il fait le job. C'est assez commenté, donc vous devriez pouvoir trouver votre bonheur.
 
{*********************************************************************************************************** SCRIPT DE MISE A L'ANTENNE AVEC MISE A JOUR DES ENCODERS EN FONCTION DU TITLE DU STREAM ************* Script par Thunderya pour PlayAgain Radio, respecter le travail effectué ****************************************************************************************************************************Ce script met à l'antenne un stream et récupère les paramètres de SHOUTcast depuis l'urlhttp://server:port/7.html, extrait l'artiste et le titre, et met à jour les encoders toutes les secondes.Grâce à la directive "PAL.LockExecution;", ce code s'exécute rapidement.	- NECESSITE UNE VERSION DE SHOUTCAST < 2.0 (1.9.8 recommandée)- NE JAMAIS UTILISER DE IF ELSE MAIS JUSTE DES WHILE (problèmes avec PAL.WaitForTime)- Chaque émission doit faire partie d'un dossier "Streams" et avoir pour album "EMISSION"		-> ATTENTION : Quand on ajoute l'url au dossier Streams, elle ne doit SURTOUT PAS avoir de slash à la fin !- Le StartTime devrait toujours commencer à HH:59:50 pour éviter les problèmesd'inter-décrochage- Le EndTime doit être à l'heure suivante pile.- Le Top Horaire habituel devrait être réglé pour HH:59:30- STRUCTURE DU FICHIER DE CONFIGURATION	0 : ip du serveur des SHOUTcasts animateurs (ligne 1)	1 : Catégorie des musiques (ligne 2)	2 : Catégorie des jingles (ligne 3)	3 : id du TopHoraire (ligne 4)- POUR L'ENCODEUR D'ENREGISTREMENT	-> L'array commence à l'indice 0, donc l'encoder 1 est le [0], le 2 est le [1], etc	-> Le PREMIER[0] encodeur est l'officiel, le DEUXIEME[1] est l'enregistreur}// Ce code accélère l'exécution du codePAL.LockExecution;// Variables nécessaires au scriptPAL.Loop := True;var config : TStringList = TStringList.Create;var CurSong : TSongInfo;var areTopHDeleted : Boolean = False;{====== CONSTANTES A MODIFIER ======}// Url du fichier de configurationconst configFile = 'C:\config.txt';config.LoadFromFile(configFile);// Port du SHOUTcast de l'animateurconst ShowPort = '20000';// Url du serveur SHOUTcast (sans slash à la fin !)var ShowURL : String = config[0] + ':' + ShowPort;// ID de l'émissionconst idShow = '1035';// Heure de début de l'émissionvar StartTime : DateTime = T['17:31:50'];// Heure de fin de l'émissionvar EndTime : DateTime = T['17:33:00'];// Rajouter ici les jours où doit s'exécuter l'évènementvar canRun : Boolean;canRun := ((DayOfWeek(Now) = Saturday) or (DayOfWeek(Now) = Tuesday) or (DayOfWeek(Now) = Thursday));// Catégorie des musiques de la playlistvar catMusic : String = config[1];// Catégorie des jingles normauxvar catJingles : String = config[2];// ID du TopHorairevar idTopH : String = config[3];// Url pour accéder au titragevar ShowStats : String = ShowURL + '/7.html';{====== NE PLUS MODIFIER A PARTIR D'ICI ======}while canRun dobegin	// On vérifie qu'on peut lancer le WaitForTime	var canWait : Boolean;	canWait := (Now < StartTime);		while canWait do	begin			// On attend l'heure de début		PAL.WaitForTime(StartTime);		     				// Ajoute l'émission à la queue que l'on a vidée avant.		Queue.Clear;		Queue.AddURL(ShowURL,ipTop);				// On vérifie si le titre en cours est une émission		var canFade : Boolean;		CurSong := ActivePlayer.GetSongInfo;		canFade:= (CurSong['album'] <> 'EMISSION');		CurSong.Free;				while canFade do		begin			// On lance le show directement			ActivePlayer.FadeToNext;			// On remet le booléen à False			canFade := False;		end;				// On lance l'enregistrement du show		// encoders[1].start;				// Par précaution, on ajoute le stream 5 fois à la queue avec des musiques entre chaque		// stream, pour que l'animateur puisse reprendre le live en cas de problème		var T : Integer;		T := 0;		while (T < 5) do		begin		  Queue.AddURL(ShowURL,ipBottom);		  CAT[catJingles].QueueBottom(smRandom, NoRules);		  CAT[catMusic].QueueBottom(smLRP,EnforceRules);				  T := T + 1;		end;		// On initialise un oldArtist et un oldTitle en cache pour éviter d'envoyer tout le temps des métadonnées identiques		var oldArtist : String;		var oldTitle : String;				// Mise à jour du titrage toutes les 3 secondes		while(Now < EndTime) do		begin			var html : String = WebToStr(ShowStats);			var head : String = '<HTML><meta http-equiv="Pragma" content="no-cache"></head><body>';			var tail : String = '</body></html>';			WriteLn(html);			Delete(html, Pos(head, html), Length(head));			WriteLn(html);			Delete(html, Pos(tail, html), Length(tail));			WriteLn(html);			var i : Integer = 0;			var j : Integer = 0;			while j < 6 do			begin				i := i + 1;				var myBool : Boolean;				myBool := (CharAt(html, i) = ',');				while(myBool) do				begin					j := j + 1;					myBool:= False;				end;			end;			Delete(html, 1, i);			WriteLn(html);			var sepa : String = ' - ';			var artist : String = html;			var title : String = html;			Delete(artist, Pos(sepa, artist), Length(artist));			Delete(title, 1, Pos(sepa, title) + Length(sepa) - 1);			WriteLn(artist);			WriteLn(title);			var Song : TSongInfo;			Song := TSongInfo.Create;			Song['artist'] := artist;			Song['title'] := title;						writeLn('Old artist : ');			writeLn(oldArtist);						writeLn('Old title : ');			writeLn(oldTitle);					var isDifferent : Boolean;			isDifferent := ((oldTitle <> title) and (oldArtist <> artist));						while(isDifferent) do			begin				writeLn('Envoi de nouvelles métadonnées');				Encoders.SongChange(Song);				oldArtist := artist;				oldTitle := title;							// On remet le booléen à false				isDifferent := False;			end;						Song.Free;						// On vérifie si l'on doit supprimer les top horaires 10 minutes avant la fin de l'émission			var delTopH : Boolean;			delTopH := ((Now + StrToTime('00:10:00')) > EndTime);						while ((delTopH) and (areTopHDeleted <> True)) do			begin				ExecSQL('DELETE FROM queuelist WHERE songID = :idTopH', [config[3]]);				areTopHDeleted := True;								// On remet le booléen à False				delTopH := False;			end;						// On fait une pause avant de récupérer de nouvelles métadonnées (on peut essayer 00:00:00, ça ne devrait pas freezer)			WriteLn('En attente de mise à jour des métadonnées');						PAL.WaitForTime('+00:00:01');		end;				// On efface les émissions de débug		ExecSQL('DELETE FROM queuelist WHERE songID = :idShow', [idShow]);				// On stop l'enregistrement		// encoders[1].stop;				// On passe à la suite de la programmation		ActivePlayer.FadeToNext;				// On remet le booléen des top horaires à False		areTopHDeleted := False;				// On remet le booléen à FALSE		canWait := False;	end;		// On remet le booléen à FALSE	canRun := False;end;// On libère l'objet configconfig.Free;// On désactive l'accélération du codePAL.UnlockExecution;

Il y a un tout petit bug avec ce script, c'est que le titrage est rafraîchit instantanément alors qu'il y a un décalage au niveau sonore. Il faudrait donc mettre en place un délai d'attente pour l'actualisation du titrage.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Je vois,

 

Sinon n'y a t-il pas une méthode pour que Sam soit connecté, et que lorsqu'un animateur se connecte, il devient prioritaire sur la connexion au serveur, donc il est mis à l'antenne, mais Sam continue à tourner en Off (de manière à ne pas s'arrêter donc à garder la programmation calée), et lorsque l'animateur se déconnecte, Sam Broadcaster se connecte en prioritaire ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Mais il peux dépasser car temps que ton animateur ne coupe pas son Shoutcast, cet animateur sera encore à l'antènne.

 

il y a pas a chercher midi a 14h...

 

Tu lances un event qui met shoutcast de l'animateur dans la file de lecture, si shoutcast est vide que l'animateur es plus dessus ton sam reprendre le ficheir juste derrière... 

 

Cordialement.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...