Pour les utilisateur de darwin streaming server (ou qtss)

Contenu du snippet

Ce code servira à tous les utilisateurs de Darwin Streaming Server ou QuickTime Streaming Server.
Dans une utilisation du serveur en mode Live (et non pas à la demande), ce code permet savoir ce qui est diffusé au moment où l'on arrive sur la page, de récupérer la playlist et d'autres petites informations.

Ce code a été testé avec Darwin 5.5 et uniquement sous linux (debian et mandriva).
Pour que le code fonctionne, vous devez disposer des droits de lecture du repertoire et des fichier de "/var/streaming/playlists" (voir le repertoire dans la doc selon la version et l'os).

le paramètrage du code est simple : il faut renseigner les 2 premières lignes en donnant le nom de la playlist et le repertoire des fichiers d'information de DSS (par défaut /var/streaming/playlists).

Ensuite, il suffit de mettre ce code au début de la page. Il créera 2 variables de type array : $dss_current et $dss_playlist.

Voir en dessous du code pour plus d'explication

Source / Exemple :


<?php

//    Définition des chemins des fichiers

$name_playlist="nom_playlist";
$dir="/var/streaming/playlists/$name_playlist";

$current=$dir."/".$name_playlist.".current";
$playlist=$dir."/".$name_playlist.".playlist";

// Récupération des données

#####  le fichier multimédia courant (en train d'être diffusé) #####
if (is_readable($current)) {
		$tmp_current=file($current);
		
		//traitement des données
		$path=trim(substr($tmp_current[0],strpos($tmp_current[0],"/")));
		$name=trim(substr($tmp_current[0],strrpos($tmp_current[0],"/")+1));
		
		$debut=trim(substr($tmp_current[1],strpos($tmp_current[1]," ")+1));
		$debut=substr($debut,0,strpos($debut," "));
		
		$fin=trim(substr($tmp_current[2],strpos($tmp_current[2]," ")+1));
		$fin=substr($fin,0,strpos($fin," "));
		
		$duree=substr($tmp_current[3],strpos($tmp_current[3]," ")+1);
		$duree=substr($duree,0,strpos($duree," "));
		
		$dss_current=array(0=>$path,'path'=>$path,
						   1=>$name,'name'=>$name,
						   2=>$debut,'debut'=>$debut,
						   3=>$fin,'fin'=>$fin,
						   4=>$duree,'duree'=>$duree);

}else{
	echo "Le fichier $current n'est pas accessible";
}

#####  La playlist complète  ####
if(is_readable($playlist)){
		$tmp_playlist=file($playlist);
}else{
	echo "Le fichier $playlist n'est pas accessible";
}
for($i=4;$i<sizeof($tmp_playlist);$i++){
	$j=$i-4;
	
	$dss_playlist['path'][$j]=substr($tmp_playlist[$i],strpos($tmp_playlist[$i],"\"")+1,strrpos($tmp_playlist[$i],"\"")-1);
	$dss_playlist['name'][$j]=substr($dss_playlist['path'][$j],strrpos($dss_playlist['path'][$j],"/")+1);
}

//détruit les variables temporaires
unset($tmp_current, $tmp_playlist);
?>

Conclusion :


$dss_current : tableau accessible par indice ou en assoc :
[0]=['path'] => Chemin complet du fichier courant (/usr/local/movies/sample.mov)
[1]=['name'] => Nom du fichier courant (sample.mov)
[2]=['debut'] => Date du début de la lecture en timestamp Unix (1171542513)
[3]=['fin'] => Date de fin de la lecture en timestamp Unix (1171544251)
[4]=['duree'] => Duree du fichier multimedia en timestamp Unix (770)

$dss_playlist : tableau multidimensionnel (2)
$dss_playlist['path'][0] -> $dss_playlist['path'][n] => Chemin complet de tous les fichiers de la playlist
$dss_playlist['name'][0] -> $dss_playlist['name'][n] => Nom de tous les fichiers de la playlist

Voilà pour récupérer les infos.

NB: J'ai réalisé ce code rapidement et il doit surement être facilement améliorable. Soyez indulgents SVP.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.