Retourner en haut de la page Aller au bas de la page
Logo de mon site
Logo de mon site

Yasser Arafat

Item 1 Description

Yasser Arafat

Hugo Chávez

Item 1 Description

Hugo Chávez

Mikhaïl Gorbatchev

Item 1 Description

Mikhail Sergueievitch Gorbatchev

L'Abbé Pierre

Item 1 Description

Abbe Pierre

Salvadore Allende

Item 1 Description

Salvadore Allende

Angela Yvonne Davis

Item 1 Description

Angela Yvonne Davis

Jean Moulin

Item 1 Description

Jean Moulin

Nelson Mandela

Item 1 Description

Nelson Mandela

Martin Luther King

Item 1 Description

Martin Luther King

Gamal Abdel Nasser

Item 1 Description

Gamal Abdel Nasser

Richard Stallman

Item 1 Description

Richard Stallman

Simone Veil

Item 1 Description

Simone Veil

Hand Shake

Item 1 Description

Hand Shake

Wangari Muta Maathai

Item 1 Description

Wangari Muta Maathai

Michel Colucci

Item 1 Description

Coluche

Mère Teresa

Item 1 Description

Mère Térésa

Charles de Gaulle

Item 1 Description

Charles de Gaulle

Che Guevara

Item 1 Description

Ernesto Rafael Guevara

Mohandas Gandhi

Item 1 Description

Mohandas Karamchand Gandhi

Lech Walesa

Item 1 Description

Lech Walesa

Linus Benedict Torvalds

Item 1 Description

Linus Benedict Torvalds

Sous-commandant Marcos

Item 1 Description

Sous commandant Insurge Marcos

Ahmed Shah Massoud

Item 1 Description

Ahmed Shah Massoud

Luxpopuli / eZ Publish / Trucs & astuces / eZ Publish : installer JW Desktop Player (lecteur flash video avec liste de lecture)





Right menu

OBLIGATOIRE

Un professeur témoigne

La brigade canine dans un collège du Gers.
Réaction d'une internaute Québécoise:
«quand on est rendu à accepter que (...) les autorité mettent leurs sales pattes dans les culottes de vos enfants (...) il est temps (...) de vous réveiller.»
OBLIGATOIRE

Les mensonges de R. Dati

La note de recadrage statistique du sociologue L. Mucchielli recadre également les mensonges de la propagande sécuritaire dont on nous rabat les oreilles depuis déjà trop longtemps et dont les mineurs de France sont à présents la cible.
Le rapport de L. Mucchielli
OBLIGATOIRE

L'aveu de Jean-Marc Sylvestre

«Le système financier s'effondre aujourd'hui comme un jeu de carte... parce que... il a été géré d'une part.... par les États-Unis sans règle... et il a été d'autre part géré... par une bande de voyous... qui se sont gouinfrés... au détriment des autres.»
VOIR LES VIDÉOS

OBLIGATOIRE

prev prev prev prev


eZ Publish : installer JW Desktop Player (lecteur flash video avec liste de lecture)

Date de publication: le Mardi 11 Novembre 2008 à 17h16
Dernière modification: par Pascal BOYER le Mercredi 6 Mai 2009 à 13h37
« Article précédent: eZ Publish : création automatique d'une galerie d'images CSS - Partie I
» Article suivant: eZ Publish : créer un multi-site I

Objectif

Cet article détaille la mise en oeuvre du lecteur flash créé par Jeroen Wijering.

Ce lecteur a l'avantage d'être libre de droit pour les sites non commerciaux (30 euros par site pour une utilisation commerciale), de proposer le code source, d'être très configurable, et de proposer de nombreuses documentations pour l'adapter à nos besoins.

  • Consultez également cette page pour de plus amples informations sur les innombrables possibilités offertes par le lecteur de Jeroen Wijering.
  • Sur cette page vous trouverez l'ensemble des flashvars supportées par le lecteur.

De plus, ce lecteur contient une liste de lecture (playlist) qu'il est possible d'afficher à droite ou sous le lecteur et pouvant être alimentée par le biais d'un fichier xml. C'est d'ailleurs la solution que j'ai retenue pour l'exemple de cet article.

Cette dernière solution sera l'occasion de visiter quelques solutions techniques intéressantes proposées par eZ Publish.

Compatibilité du lecteur

Ce lecteur est compatible avec les navigateurs suivants:

  • Firefox 2 et 3.x (Linux et Windows)
  • Opéra 9.61 (Linux et Windows)
  • Safari (Windows et MAC)
  • IE7 et IE8

Les navigateurs et versions cités ci-dessus sont ceux que j'ai effectivement testés.

PHP streaming avec le lecteur JW Desktop Player

Je profite de l'occasion pour vous signaler l'existence d'un projet de streaming PHP articulé autour du lecteur JW Desktop Player:

Exemple du lecteur JW Desktop Player

La figure ci-dessous illustre le résultat de la mise en oeuvre du lecteur JW Desktop Player sur un site eZ Publish:

Fig. 1: Exemple de mise en oeuvre du lecteur JW Desktop Player

Prérequis

Pour la suite de l'article, on supposera

  1. que le siteaccess se nomme plain_site (settings/siteaccess/plain_site/),
  2. que les vidéos sont placées sous «un noeud/une rubrique» de type "folder" (description détaillée ci-après),
  3. que ce noeud appartient à une section pour laquelle les visiteurs anonymes ont le droit de lecture,
  4. que les vidéos sont instanciées à partir d'une classe d'objet dont l'identifiant est video_flash,
  5. que le lecteur sera affiché lorsque les visiteurs cliqueront, dans le menu du site, sur le nom de la rubrique.

La classe d'objet rubrique_mediatheque

Cette classe d'objet est créée afin d'instancier le noeud (la rubrique) qui contiendra les vidéos.

Fig. 2: Description de la classe d'objet rubrique_mediatheque

:
On supposera que le noeud instancié à partir de cette nouvelle classe est situé sous le noeud racine de l'arborescence (de ID=2) et se nomme simplement «Médiathèque».

La classe d'objet video_flash

Cette classe d'objet est créée afin d'instancier les objets vidéos placés sous la rubrique «Médiathèque».

Fig. 3: Description de la classe d'objet flash_video

Description des attributs de la classe flash_video:

  1. Nom de la vidéo : cet attribut permet de définir le nom de l'objet vidéo tel qu'il apparaît dans l'arborescence (voir fig. 4 ci-dessous)
  2. Titre de la vidéo : cet attribut permet de définir le titre de la vidéo tel qu'il apparaît en gras sur la première ligne de la liste de lecture (voir fig. 1)
  3. Synopsis de la vidéo : cet attribut permet de définir le résumé de la vidéo tel qu'il apparaît sous le titre dans la liste de lecture (voir fig. 1).
  4. Vignette associée à la vidéo : cet attribut permet de télécharger une vignette associée à la vidéo tel qu'elle apparaît à gauche du titre dans la liste de lecture (voir fig. 1). A noter que cette vignette peut être affichée avant le démarrage de la vidéo associée.
  5. Télécharger la vidéo : cet attribut permet de télécharger le fichier/la vidéo au format .flv.

Pour le lecteur présenté par cet article, je me suis contenté de prendre un des skins proposé par la page SetupWizard. Il s'agit de l'exemple 6 flvplayer with en rss playlist dont j'ai configuré les options proposées sur cette même page.

Cependant vous pouvez tout à fait créer votre propre skin où en choisir un parmi tous ceux proposés sur cette page.

Tout en conservant le skin que j'ai retenu pour l'exemple de cet article, vous pouvez très facilement en changer les couleurs pour les adapter à votre site.

:
Le choix du lecteur s'est porté sur l'exemple N°6 car il est nativement prévu pour lire une liste de lecture au format xml que je suis en mesure de produire automatiquement et contenant exactement les informations que je souhaite.

Création des objets vidéo

Après avoir créé la rubrique Médiathèque et les objets vidéo qu'elle contient, voici à quoi ressemble le menu Contenus de l'interface d'administration:

Fig. 4: Arborescence du menu Contenus de l'interface d'administration

Le template de vue du noeud Médiatèque

Par défaut, eZ Publish utilise le template design/standard/templates/node/view/full.tpl pour afficher les objets instanciés par de nouvelles classes.

C'est donc ce template qui sera utilisé, par défaut, pour l'affichage du noeud Médiathèque.

Ce template ne convenant pas à notre cas particulier, nous allons commencer par créer une surcharge.

Surcharge du template full.tpl

Au tout début du fichier de surcharge settings/siteaccess/plain_site/override.ini.append.php, placez les lignes suivantes:

[full_rubrique_mediatheque]
Source=node/view/full.tpl
MatchFile=full/dossierMediatheque.tpl
Subdir=templates
Match[class_identifier]=rubrique_mediatheque

Puis créez, dans le répertoire design/plain_site/override/templates/full/ le template dossierMediatheque.tpl:

Contenu du template dossierMediatheque.tpl

Vous trouverez ci-après les lignes nécessaires et suffisantes pour afficher le lecteur JW Desktop Player:

{def  $liste_videos=fetch('content','list_count',hash( parent_node_id, $node.node_id,
                                                            'class_filter_type', 'include',
                                                            'class_filter_array', array( 'video_flash')))}

<div class="content-view-full">
    <div class="class-folder">
                {if gt($liste_videos,0)}
                    <div class="ombrePlayer">
                    <div id="player"></div>{* INDISPENSABLE POUR L'AFFICHAGE DU PLAYER *}
                    {literal}
                        <script type="text/javascript" src={/literal}{'flashPlayer/swfobject.js'|ezdesign}{literal}></script>
                        <script type="text/javascript">
                            var so = new SWFObject('{/literal}{'flashPlayer/playerListe.swf'|ezdesign(no)}{literal}','mpl','700','480','9');
                            so.addParam('allowscriptaccess','always');
                            so.addParam('allowfullscreen','true');
                            so.addParam('flashvars','file={/literal}{'flashPlayer/liste.xml'|ezdesign(no)}{literal}&backcolor=0B3257&frontcolor=98A7B7&lightcolor=b2c2b9&screencolor=000000&playlistsize=181&streamer=lighttpd&playlist=bottom&autostart=false');
                            so.write('player');
                        </script>
                    {/literal}
                    </div>{* ombrePlayer *}
                {/if}
    </div>
</div>
  1. Les paramètres de la ligne «so.addParam('flashvars',.....» sont issus de la page FlashVars. Vous pouvez bien évidemment les tester en temps réel sur la page Setup Wizard.
  2. A noter que cette ligne contient l'appel au fichier liste.xml (voir ci-dessous) contenant la liste de lecture des vidéos.
  3. Consultez la documentation traduite de ezdesign si vous ne comprenez pas l'emploi de l'option «(no)»

Télécharger le fichier swfobject.js

Le fichier swfobject.js (placé dans le répertoire design/plain_site/flashPlayer/) est téléchargeable à partir de cet URI: http://content.longtailvideo.com/files/swfobject.js

Télécharger le lecteur flash

Comme je l'ai déjà indiqué précédemment, le lecteur utilisé pour l'exemple de cet article est celui employé par l'exemple 6 de la page Setup Wizard.

Pour télécharger le lecteur, placez-vous dans le répertoire design/plain_site/flashPlayer/ puis lancez la commande suivante:

wget http://content.longtailvideo.com/files/player.swf -O playerListe.swf

Création de la liste de lecture (fichier liste.xml)

Le modèle de fichier xml à produire est donné par le code source de la page suivante: mrss.xml

Pour créer ce fichier, nous allons utiliser le module layout.

Création du template de mise en page videoplayer_pagelayout.tpl

Comme l'indique la documentation, le module layout permet de forcer l'utilisation d'un template de mise en page autre que celui utilisé par défaut, à savoir pagelayout.tpl.

La définition de ce nouveau template de mise en page se fait à partir du fichier de configuration de surcharge suivant:

settings/siteaccess/plain_site/layout.ini.append.php

Sont contenu est le suivant:

<?php ini charset="iso-8859-1"?

# Le nom de la rubrique, ici xml, devra etre repris dans l'URI de type /layout/set/xml/content/view/
[xml]
PageLayout=videoplayer_pagelayout.tpl

Ceci indique au système que l'utilisation d'un URI de la forme http://monsite.com/layout/set/xml/content/view/template_de_vue/ID_du_noeud doit utiliser le template de mise en page videoplayer_pagelayout.tpl.

Afin de reproduire le code source de la page mrss.xml, voici ce que doit contenir le template videoplayer_pagelayout.tpl placé dans design/plain_site/templates/:

<!-- CE FICHIER EST UTILISE EN RAISON DE CE QUI EST INDIQUE DANS settings/siteaccess/plain_site/layout.ini.append.php -->
<rss version="2.0" xmlns:media="http://luxpopuli.fr/">
    <channel>
    <title>Example media RSS playlist for the JW Player</title>
     <link>http://www.jeroenwijering.com</link>
   {$module_result.content}
    </channel>
</rss>
<!--DEBUG_REPORT-->

Le tableau $module_result contient le résultat de l'exécution du couple module/vue.

Dans l'URI http://monsite.com/layout/set/xml/content/view/template_de_vue/ID_du_noeud, le nom du template de vue (voir ci-après) est défini par /template_de_vue/. Quant au ID_du_noeud qui termine l'URI il vaut bien sûr celui du noeud Médiathèque que vous avez précédemment créé.

Création du template de vue videolist.tpl

Placé dans le répertoire design/plain_site/templates/node/view/, ce template contient le code suivant:

{let    $videos=fetch_alias(children,hash( 'parent_node_id', $node.node_id,
                                            'sort_by', array('priority',true()),
                                            'class_filter_type', 'include',
                                            'class_filter_array', array( 'video_flash')),
                                            'depth', 1)}
{foreach $videos as $video}
        <item>
            <title>{$video.data_map.title.content}</title>
            <link>http://linuxorable.fr</link>
            <description>{$video.data_map.description.content.input.input_xml}</description>
            <media:content url={concat('"http://',ezsys('hostname'),$video.data_map.content.content.filepath|ezroot(no),'"')} type="video/x-flv" />
            <media:thumbnail url={concat('"http://',ezsys('hostname'),$video.data_map.thumbnail.content[vignettePlaylist].full_path|ezroot(no),'"')} />
        </item>
{/foreach}

Création de la liste de lecture liste.xml

Ce fichier sera placé, par exemple, dans le répertoire design/plain_site/flashPlayer/

Placez-vous dans ce répertoire et lancez la commande suivante:

wget http://monsite.com/index.php/plain_site/layout/set/xml/content/view/videolist/226 -O liste.xml

--2008-11-12 20:06:05--  http://linuxorable.fr/index.php/plain_site/layout/set/xml/content/view/videolist/226
Résolution de linuxorable.fr... 88.180.9.115
Connexion vers linuxorable.fr|88.180.9.115|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 4870 (4,8K) [text/html]
Saving to: `liste.xml'

100%[============================================>] 4 870       --.-K/s   in 0s

2008-11-12 20:06:06 (709 MB/s) - « liste.xml » sauvegardé [4870/4870]

...où:

  1. monsite.com sera remplacé par le nom de domaine de votre site,
  2. plain_site sera remplacé par le nom du siteacces public de votre site
  3. 226 sera remplacé par le numéro de ID du noeud Médiathèque.

Ce fichier une fois créé, vous pouvez afficher votre player sur votre site.

Automatisation de la création du fichier liste.xml

Si dans le template dossierMediatheque.tpl on indique directement l'URI du fichier liste.xml:

so.addParam('flashvars','file={/literal}http://monsite.com/index.php/plain_site/layout/set/xml/content/view/videolist/226{literal}........

alors on obtient le message d'erreur suivant lors de l'affichage du lecteur:

Fig. 5: Erreur #2048: le fichier liste.xml n'est pas trouvé

...et la liste est vide.

Pour contourner le problème, il suffit d'utiliser une tâche cron qui lancera un exécutable tous les quarts d'heures ou toutes les demi-heures.

Contenu de l'exécutable creationPlaylist.

Voici un exemple de contenu du fichier creationPlaylist.txt:

#!/bin/bash
cd /usr/local/www/design/plain_site/flashPlayer/
rm -f liste*.xml
wget http://monsite.com/index.php/plain_site/layout/set/xml/content/view/videolist/226 -O liste.xml
chown www-data:www-data liste.xml

Explications:

  1. ligne 2: le système se place dans le répertoire où doit être sauvegardé le fichier liste.xml
  2. ligne 3: le système efface les fichiers commençant par liste et se terminant par l'extension .xml
  3. ligne 4: le système télécharge la page http://linuxorable.fr/congo5/index.php/mae/layout/set/xml/content/view/videolist/226 et l'enregistre sous le nom liste.xml
  4. ligne 5: le système attribut au fichier liste.xml le user www-data et le groupe www-data (par défaut le user et le groupe sont root et root).

Le fichier creationPlaylist.txt devant être exécutable, lancer la commande suivante:

chmod +x creationPlaylist.txt

Créer la tâche cron

En tant que root, éditer la liste des tâches cron liées à l'utilisateur www-data:

crontab -u www-data -e

...puis ajouter cette ligne au fichier (vous êtes alors dans un environnement Vim):

*/20 * * * *    /usr/local/www/monsite.com/creationPlaylist.txt

Cette ligne indique au système d'exécuter le script creationPlaylist.txt toutes les 20 minutes.

:
Le fichier xml ne sera pas valide si le système de débugage est activé car alors le code source des lignes de débugage seront incluses dans le code source du fichier xml.

Lien vers l'article précédent
eZ Publish : création automatique d'une galerie d'images CSS - Partie I
eZ Publish : créer un multi-site I
Lien vers l'article suivant

Commentaires

Farid
Lundi 26 Octobre 2009 14:24:56
No suitable model found for playback of this file

Hi,
I did the installation of the flash player. When I play the vidéo I have this error :

"No suitable model found for playback of this file"

please help ???!???