Dynamic Playlist:Fr

From GeeXboX wiki

Jump to: navigation, search

View this article in english

Contents

Introduction

Cet article présente comment en utilisant le langage PHP, il est possible de générer une playlist dynamique de flux vidéos.
C'est intéressant lorsque vous souhaitez par exemple regarder le flux vidéo d'une chaîne qui ne met à disposition que ces journaux télévisés (ex. TF1). Le nom de ce flux contient en général la date et l'heure du journal et non pas un nom fixe tel que http://adresse.du .flux/leJT.asf

Pré-requis

Pour mettre au point cette génération dynamique de playlist, il vous faut :

  • un hébergement Apache + PHP
  • Support des .htaccess et/ou mod_rewrite sur cette hébergement
  • un domaine (www.mondomaine.com/) ou un sous-domaine (monsousdomaine.free.fr/)
  • un éditeur de texte
  • un client FTP
  • un logiciel de gravure
  • le paquet "geexbox-generator-1.0.i386"
  • quelques connaissances de base (utilisation d'un éditeur de texte, d'un client FTP, personnaliser sa Geexbox, graver un cd...)

Préparation du site internet

  • Créez dans votre éditeur de texte le fichier .htaccess suivant (attention, le '.' devant le nom est IMPORTANT)

Si vous utilisez notepad, changé le type à tous et entrez ".htaccess" (avec les guillemets) comme nom de fichier à sauvegarder:

Option 1:

AddType application/x-httpd-php .m3u
Explications : Ceci permet de spécifier l'extensions ".m3u" à être traiter comme un fichier PHP

De cette façon, à l'étape suivante, vous pourriez simplement nommer le fichier tv.m3u au lieu de playlist.php

Option 2:

RewriteEngine On
RewriteRule ^tv.m3u$ playlist.php
Explications : le mode rewriting d'Apache permet de transformer (réécrire) l'adresse envoyé au serveur par le navigateur.

Dans notre cas, lorsque que Geexbox demandera la playlist http://www.monsite.com/m3u/tv.m3u, Apache lira en fait http://www.monsite.com/m3u/playlist.php

  • Connectez vous à votre espace web via votre client FTP et créez un nouveau répertoire nommé m3u

Ce dernier contiendra le script PHP

  • Télécharger dans le répertoire m3u nouvellement créé, le fichier .htaccess

le script php

  • mises à jour:
    • 31.03.2007 - ajout d'une fonction get_m3u() qui permet de lire et d'intégrer dans la liste finale, une liste m3u extérieure (telle que les bandes annonces du site ALLO CINE).
  • Créez dans votre éditeur de texte le fichier playlist.php ou tv.m3u
<?php
// News from TF1 - Parsing date
function TF1JT()
{
	$time = date("Hi");
	if($time>="0000" && $time<"1300")
	{
		$JTdate="jt20d".date("dmY", (time()-86400));
	}
	elseif($time>="1300" && $time<"2000")
	{
		$JTdate="jt13d".date("dmY");}
	elseif($time>="2000" && $time<="2359")
	{
		$JTdate="jt20d".date("dmY");
	}
	return "http://213.205.97.105/tf1jt/".$JTdate.".asf";
}
// News from TV5 Monde - Parsing date
function TV5JT()
{
	$time = date("Hi");
	if($time>="0000" && $time<"1100")
	{
		$JTdate="18".date("dmy", (time()-86400))."/jt18".date("dmy", (time()-86400));
	}
	elseif($time>="1100" && $time<"1900")
	{
		$JTdate="10".date("dmy")."/jt10".date("dmy");}
	elseif($time>="1900" && $time<="2359")
	{
		$JTdate="18".date("dmy")."/jt18".date("dmy");
	}
	return "mms://a1197.v18792.c1879.g.vm.akamaistream.net/7/1197/1879/v0001/viewontv.download.akamai.com/1879/tv5/jt_international/".$JTdate.".wmv";
}
// Get External m3u list infos - Parsing external file
function get_m3u($url)
{
	global $ext_list;
	$lines = split("\n", file_get_contents($url, "r"));
	foreach ($lines as $line) 
	{
		if ($line !== "") 
			if(!preg_match("/#EXTM3U/i", $line))
				$ext_list .= utf8_encode($line)."\n";
	}
	return $ext_list;
}
$PLheader = "#EXTM3U\n";
$PLlist = array(
		array("TF1 JT",
					"tf1JT"),
		array("TV5 Monde JT",
					"tv5JT"),
		array("Allocine ",
					"m3u_ext|http://www.rss-one.com/m3u-782.m3u"),
		array("France24",
					"mms://live.france24.com/france24_fr.wsx"),
		array("La Chaine Parlementaire",
					"mms://vipmms9.yacast.net/rcs_lcplive?WMThinning=0"),
		array("Normandie TV",
					"mms://a1251.l252123153.c2521.e.lm.akamaistream.net/D/1251/2521/666/reflector:23153"),
		array("JetTV",
					"mms://tf1.yacast.net/tf1_live13"),
		array("iTele",
					"mms://vipmms.itele.fr/cpi_itele"),
		array("Direct8",
					"mms://212.3.240.67/ffnet/212.3.240.70_0.0.115.1"),
		array("Arte",
					"rtsp://212.95.67.121:554/permanent/c7/info/INFO_FR.rmvb?cloakport=80,554,7070"),
		array("Senat TV",
					"http://www.tv-radio.com/station/public_senat/public_senat-150k.asx"),
		array("NT1",
					"mms://streaming.newmedia.lu/telehighres"),
		array("BFM",
					"mms://vipmms9.yacast.net/bfm_bfmtv"),
	);
// send m3u playlist to the browser
header("content-type: audio/x-mpegurl");
//echo"<pre>";
print_r($PLheader);
for($i=0; $i<count($PLlist); $i++)
{
	if($PLlist[$i][1]=="tf1JT") $link = TF1JT();
	elseif($PLlist[$i][1]=="tv5JT") $link = TV5JT();
	elseif(preg_match("/m3u_ext/i",$PLlist[$i][1]))
	{
		$tmp = explode("|",$PLlist[$i][1]);
		get_m3u($tmp[1]);
	}
	else $link = $PLlist[$i][1];
	print_r( "#EXTINF:".($i+1).",".$PLlist[$i][0]."\n".$link."\n" );
}
if($ext_list!="")
	print_r($ext_list);
?>
Explications : Ce script contient une série de flux vidéos avec des noms statiques (qui ne changent pas) et 2 autres flux (TF1 et TV5 Monde) qui eux sont générés en fonction de la date d'ouverture du fichier PHP.

Par exemple, si vous lancez votre Geexbox à 21h30 le 1 mars 2007, le flux vidéo pour TF1 sera :
http://213.205.97.105/tf1jt/jt20d010307.asf

installation dans votre Geexbox

  • Ouvrez le fichier netstream qui se trouve là : /geexbox-generator-1.0.i386-OK/iso/GEEXBOX/etc/ (sous linux)
  • ajouter la ligne suivante à la fin du fichier :
# Dynamic Playlist
EXTM3U="http://www.mondomain.com/m3u/tv.m3u":FrenchTV
NOTE : Attention, pensez à changer www.mondomain.com par l'adresse de votre site internet (mondomain.free.fr par exemple)
  • générez un nouvel iso à partir du générateur fourni
    • sous linux : generator.sh (en console)
    • sous Windows : generator.exe
  • ouvrez votre logiciel de gravure et gravez l'iso généré

limitations

Geexbox ne charge la playlist qu'une fois lors du démarrage.
Ainsi si vous lancez votre Geexbox à 20h30, que vous regardez un film pendant une heure et qu'ensuite vous souhaitez regarder le journal de TF1, vous aurez le journal de 13h et non celui de 20h logiquement disponible !
Pour corriger cela, il suffit de redémarrer votre Geexbox.

Personal tools