Fil d'ariane
Ligams » Publications » Serveur Web » PHP Streaming et Flash FLV
PHP Streaming et Flash FLV
Faire lire directement un fichier FLV par un composant Flash (FLVPlayback, VideoPlayer ou autre...) pose un problème majeur : ce fichier FLV passera dans le cache du navigateur du client, et pourra ainsi facilement être copié sur sur le poste de l'utilisateur. Si vous souhaitez protéger vos fichiers FLV en utilisant du "vrai" Streaming, il existe plusieurs solutions :
- Flash media server : La solution est payante
- Wowza : Une solution payante plus économique que FMS
- Red5 : Un serveur de streaming open source : davantage d'information sur l'installation de Red5 et sur la manière de créer des applications Red5
- Génerer le fichier avec un langage serveur : Streaming PHP, Streaming ASP...
Nous allons voir dans cet article comment générer un fichier FLV avec PHP.
La classe Streamer FLV
C'est cette classe Streamer (au demeurant très simple) qui va nous permettre de générer le fichier PHP Streaming : (vous pourrez télécharger une source avec un exemple en bas de ce document).
<?php
set_time_limit(0);class Streamer
{
var $flv;
var $pos;
function __construct($flv_file_url)
{
$this->flv = $flv_file_url;
$this->pos = 0;
}
function setHeader()
{
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: video/x-flv");
}
function setPosition()
{
print("FLV");
print(pack('C', 1 ));
print(pack('C', 1 ));
print(pack('N', 9 ));
print(pack('N', 9 ));
}
function buildStream()
{
$fh = fopen($this->flv, "rb");
fseek($fh, $this->pos);
while (!feof($fh))
{
print (fread($fh, 16384));
}
fclose($fh);
}
}
?>Fichier Streamer.php
Instanciation d'un objet Streamer et génération du fichier FLV
Voici un aperçu du fichier film.php :
<?php
require("Streamer.php");
set_time_limit(0);
$film = $_GET['video'];$oStream = new Streamer($film);
$oStream->buildStream();
?>L'appel de ce film.php en passant en paramètre GET l'url du film, générera le fichier streaming requis par votre player Flash.
Téléchargement de l'exemple PHPStreaming
Ce fichier contient :
- Les sources FLA
- Un fichier FLV exemple
- Les sources PHP streaming
Conclusion
Le streaming PHP est très simple à mettre en place sur son site, et très utile si vous ne souhaiter pas que l'on puisse facilement copier vos vidéos. On pourrait également décliner cette classe PHP pour faire du streaming mp3.
Articles connexes
- Vidéo et Sous-titres sous Flash (FLV et Actionscript 3)
- FFmpeg : Génerer des vidéos en FLV pour le web
Commentaires
pb d'intégration
Lundi 03 Mai 2010 16:45:04 - Paye ton Ju'
Moi perso le code ne fonctionne pas. Et j'aurais aimé en savori d'avantage sur la manière de développer tout ce code.
Merci
Bonne info
Samedi 13 Mars 2010 13:12:16 - depannage informatique
PHP Streaming et Flash FLV
Vendredi 12 Mars 2010 11:32:15 - Stéphane Le Merre
Je ne vous suis pas... le but de l'article est de montrer comment on stream une vidéo FLV avec PHP, pas de parler d'intégration HTML/Javascript. L'intégration est réalisée ici par les soins du logiciel Flash d'Adobe, rien de plus, et elle n'a pas grand intérêt dans cet exemple.
Vous obtiendrez le même résultat avec SWFObject, Flash Satay et toutes les autres méthodes plus ou moins propres d'intégrer des objets flash dans vos pages.
Dans le flash, au lieu d'appeler un fichier FLV, vous appelez le fichier PHP (quelque soit la méthode utilisée, NetConnection etc. dans le cas présent, FLVPlayback a été utilisé pour gagner du temps dans la démo).
Je vous invite donc à plus vous intéresser à la source flash qu'au HTML qui est dénué d'intérêt sur ce thème précis.
PHP Streaming et Flash FLV
Vendredi 12 Mars 2010 11:23:10 -
Très bien ce code, mais j'aimerai bien savoir COMMENT faites-vous
la relation entre les fichier HTML et JavaScript et le fichier film.php ?
Autrement dit, quel script demande à film.php d'éxecuter le film ?
De plus, dans la fonction AC_Generateobj(), le "document.write" ne
sert à rien puisque même en commentaire on voit le film.
A moin d'avoir des explications claire, je pense que le code est à revoir et à bien commenter pour savoir "qui fait quoi".
Merci.
Votez pour cet article
Vote: 4,46/5
(Nombre de votant(s) : 13)



