Aller au contenu Aller au menu Aller au sous menu Aller à la recherche

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

php_streaming.zip 854,40 kB

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

Commentaires

pb d'intégration

Lundi 03 Mai 2010 16:45:04 - Paye ton Ju'

bonjour,

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

Je découvre votre blog par le biais de cet article et il y a beaucoup de choses intéressantes ici. Merci pour toutes ces précieuses informations.

PHP Streaming et Flash FLV

Vendredi 12 Mars 2010 11:32:15 - Stéphane Le Merre

Bonjour,

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 -

Bonjour,

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.

Les commentaires sont tous validés par un modérateur, votre commentaire n'apparaît pas directement sur le site.
Aucun support n'est assuré ici, vous pouvez néanmoins laisser vos remarques et critiques sur l'article, les points de vue pertinents sont toujours les bienvenus.

Votez pour cet article

Vote: 4,46/5
(Nombre de votant(s) : 13)

Traduction automatique

Recherche

Ligams © 2009 tous droits réservés - Contact | Aide à la navigation | Plan du site | Glossaire | Infos légales | Accessibilité