Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-01-2010 18:37:14

ferdikam
Membre
Date d'inscription: 03-05-2009
Messages: 18

Afficher vidéo dans une vue

Salut!
je suis la structure classique du zend framework.
Dans mon dossier application j'ai créer un dossier assets.
A l'intérieur de ce dossier j'ai deux autres dossiers : vignettes et videos.
j'arrive à afficher mes images dans ma vue avec un plugin que j'ai utilisé pour le controller.Voici le plugin que j'ai créer:

Code:

class App_Controller_Plugin_AssetGrabber extends
            Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        if ($request->getControllerName() != 'assets')
            return;
        $action = $request->getActionName();
        $value = $request->getParam('media',0);
        echo file_get_contents(APPLICATION_PATH.'/assets/' .$action . '/' .$value);
        
        exit;
    }
}

dans mon bootstrap, j'ai créer des routes personnalisées :

Code:

protected function _initRoutes() {
        $routeur = Zend_Controller_Front::getInstance ()->getRouter ();
        
        $routeur->addRoute ( 'watchVideo', 
                    new Zend_Controller_Router_Route ( 'watch/:title', 
                          array ('controller' => 'watch', 'action' => 'index' ) ) );
        
        $routeur->addRoute('assetsImg',
                    new Zend_Controller_Router_Route('assets/vignettes/:media',
                          array('controller' => 'assets','action'=>'vignettes')));
                          
        $routeur->addRoute('assetsVideo',
                    new Zend_Controller_Router_Route('assets/videos/:media',
                          array('controller' => 'assets','action'=>'videos')));
        
        return $routeur;
    }
    
    protected function _initControllerPlugin()
    {
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->registerPlugin(new App_Controller_Plugin_AssetGrabber);
    }

Mon problème est que je n'arrive pas à lire mes vidéos.
par contre pour mes images je les recupère facilement dans ma vue avec par exemple ce code :

Code:

/assets/vignettes/<?php echo $videoRecent['video_img']; ?>

dans mon fichier log de mon zend server il me met ce message aussi:

Code:

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 83466241 bytes) in C:\Program Files\Zend\Apache2\htdocs\globetv\library\App\Controller\Plugin\AssetGrabber.php on line 12

comment puis-je récupérer l'url des vidéos ?
Sachez que les vidéos sont au format flv.

Hors ligne

 

#2 07-01-2010 08:29:19

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Afficher vidéo dans une vue

Si ta vidéo fait 1Go, avec cette méthode, tu as besoin d'un peu plus d' 1 Go authorisé pour ton script PHP pour que ton file_get_content s'execute sans provoquer d'erreur.
Tu peux changer ça avec ini_set("memory_limit","la taille dont tu as besoin");

Par contre ça n'est a priori pas judicieux de mettre des mémory limit très grands pour un script. Il vaut mieux envoyer ton fichier flv en progressif (avec des fread d'une longueur donnée plusieurs fois jusqu'à la fin du fichier à envoyer).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages