Upload
dvdstory
View
1.048
Download
2
Embed Size (px)
DESCRIPTION
PHP SOLUTIONS
Citation preview
Votre propre Google Vi deo :streaming video en PHPRafal Malinowski
Niveau de difficulté : o
Vous vous êtes demandés comment fonctionnaitla lecture de films à partir du Web ?Aimez-vous Google Video ? Faitesconnaissance du streaming video (diffusion enflux continu des vidéos) et créez votre propregalerie Web de films. ll suffit de connaître lesbases de PHP et c'est tout !
ublier les films sur Intemet ense basant sur Flash Player com-prend trois opérations :
. convertir le film au format Flash Video(FLV) supporté par Flash Player,
. créer le lecteur (Media Player) qui
chargera le film depuis le serveur et leprésentera au client dans le navigateur,
. publier un site Web où vous placerez
le lecteur.
Afin de décrire les opérations ci{essus,nous avons divisé I'article en trois parties :
. première partie: démanage rapideoù nous vous présenterons, commentpublier un film sur Internet. Ce sera unexemple pour la plate-forme Windows,
. deuxième partie : nous développeronsensemble l'exemple décrit dans lapremière partie et nous présenterons
comment automatiser les opérationsdécrites et comment vous rendre in-
dépendants du système d'exploitationavec lequel fonctionnera la galerie,
. troisième partie : nous nous base-rons sur les connaissances acqui-ses dans la deuxième partie ainsique sur le code que nous y auronscréé pour réaliser une version finaledu service: une galerie de fi lmsfonctionnelle et universelle.
Démarrage rapideVous allez effectuer trois étapes: étape 1- convertir le fichier vidéo; étape 2 - rêali"ser un lecteur vidéo en Flash; étape 3 - in-tégrer le lecteur en HTML.
Ge qu'il faut savoir...Avoir les bases de PHP sera très utile.
Get article explique...Vous apprendrez comment créer votreprc,pre Google Video: une galerie com-plète de films avec Media Player Flashsur Intemet qui permettra de charger lesfilms et de les lire en continu.
Rafal Mallnowskl esl prcgnmmeur etænæpteur d'appliætions réseau enPHe JAUA et AdionSaipt. Pendant sontemps libre, il crée des bibliothèquespur Flash et pafticip à plusieurs proietsOpen Source. Aduellernent, il tnvaillechez SUPERMEDIA sur le poste deconcepteur/prcgnmmeurJava.@ntad: [email protected]
www.phpsolmag.org PHP Solutions N" 5/2006
En fonction du système d'exploitat ion
et des solut ions ut i l isées, i l est possible
d'effectuer chacune de ces étapes deplus ieurs manières. Dans un premier
temps, réal isez une présentation prête
à atteindre rapidement l 'object i f . Pour
ce faire, ut i l isez des programmes com-
merciaux (version d'essai), disponibles
uniquement (hélas) pour la plate-forme
Windows. Toutes les étapes serontprésentées I 'une après I 'autre. Dans lapart ie suivante de I 'art icle, nous vous
présenterons les solut ions indépendan-
tes du système d'exploitat ion qui néces-
sitent toutefois plus de travai l .
Gonversion d'un fichier vidéoFlash Player travai l le avec les f ichiers
vidéo au format Flash Video (FLV). Ce
format est rarement rencontré et i l est
donc nécessaire de le convert ir . Pour
ce faire, ut i l isez le programme Riva
FLV Encoder (http://www.rivavx.com/?
encoder). Comme vous le voyez sur la
Figure 1, Riva FLV Encoder vous per-
met de :
. configurer la résolution du film initial (1),
. configurer les paramètres de com-pression du fichier (2),
. couper correctement les images du
fi lm (3),. configurer les paramètres du son (4).
De plus, ce programme vous permet de
récupérer un seul cadre du film et l'en-
registrer sous forme de fichier graphique
JPEG - onglet lmage (5).
Afin d'effectuer la conversion, paramé-
trez le chemin du fichier initial et du fichier
de sortie et cliquez sur le bouton FLV
Encode (6). Enregistrez le premier fichier
FLV. Appele z-le v i d eote st. flv.
Lecteur vidéo FlashMacromedia Flash, programme que vous
utiliserez pour réaliser le premier clip
flash, dispose d'un Media Player élégant.
Macromedia Flash est payant mais pour
les besoins de présentation, nous utili-
serons sa version d'essai à télécharger
depuis le site: http://www.adobe.com/prod u cts/fl a sh/f I a sh p ro/.
Une fois cette version installée, vouspouvez réaliser un lecteur vidéo Flash
attrayant avec minimum de travail. Lan-
cez Flash (Figure 2), créez un nouveau
Figure 1. Riva FLV Encoder - convertisseur de fichiers vidéo au format FLV
document, par exemple, testplayer.fla et
déplacez le composant MediaPlayback
(1) sur la scène (2) (en anglais Sfage,
zone de travai l du document). Ensuite,
lancez Component lnspektor (3) où il faut
saisir le chemin d'accès (URL) au f ichier
FLV (4) préparé au préalable. L'URL peut
avoir la forme d'un chemin relatif ou ab-
solu (qui commence soit par file:\ soit par
http:\). Pour simplifier, nous admettonsque aussi bien Media Player que le f i lm
se trouveront dans le même dossier et
donc qu' i l suff i t de saisir le nom du f ichier
vidéo : videotest.flv.
Figure 2. Macromedia Flash - zone de travailde l'application
Flla [ar6.u4,c ?
f VA
'*+FLv EN..DER- , Online Hclp
,;h lf,deonleb
-. Forum
Presel
D5[ ,xml
h.rInpul Video
j Mdco I tmagc O
,' 8rærcu.l€o
, fiovic Skc
'eæt6-r ' {Deinterlace
' Fnmcrrtc BltràtcOrfFf
Output Directory
E:\documents\adminVny-documcntsll\oje widco Brotsc
Destinetion Yideo tile
Roeult
Êfl r|ËroûtF{f6 fffi llIE rd rfvrf,tr
PHP Solutions N" 5/2006 www.phpsolmag.org
r, -ltr lI l
Ete Eû $ew Ep EodqËks lodr SF I
t " . l |3 #] tr @ + 6lr*e'///e'/oocuncnts/ac IGI
( (
Figrrre 4 Composant MediaPlayback de Macromedia présentant un film dans lenavigateur lnternet
Crrrer* profle: loefaUt
Fsmats Flô$ l**
I lerdon: lrbsh Player 7 :J
leottom up :l
Publication de Movie ClipEnsuite, il faut créer un fichier HTML où
vous placerez Movie Player de sorte que
les autres puissent le regarder. En ce qui
conceme le téléchargement du fichier vidéo
et sa lecture dans le navigateur, c'est Movie
Player qui s'en charge. Macromedia Flash
vous facilite ici considérablement la tâche.
Sélectionnez la commande File -> Publish
Seffings dans le menu (Figure 3). Dans
la nouvelle fenêtre, dans I'onglet Flash,
configurez les paramètres de la publica-
tion et sélectionnez la version 7 de Flash
Player (1). Cliquez sur le bouton Publish ;deux nouveaux fichiers : fesfp/ayer.svvf et
testplayer.html apparaissent dans le ré-pertoire où vous aviez enregistré le fichier
testplayer.fla. Si vous plaæz à présent ces
fichiers avec le fichier vidéo sur le serveur
et si vous ouvrez la page testplayer.html,
vous devriezvoir le film publié dans le navi-gateur Intemet (Figure 4).
C'est prêt !Nous finissons ainsi cette introduction.
La page créée sera visible dans tous les
navigateurs Internet dotés d'un plug-in
Flash Player 7 ou supérieur. Comme vouspouvez le constater, réaliser une publica-
tion de fichiers vidéo est très simple. Mal-
heureusement, les solutions utilisées ne
répondent pas à nos besoins. Première-
ment, elles sont commerciales (elles coû-
tent cher) et ne sont disponibles que pour
la plate-forme Windows. Deuxièmement,
il faut effectuer toutes les opérations à la
main. À présent, nous essayerons ensem-
ble d'automatiser le processus de conver-
sion de films, nous insisterons sur le côté
universel en nous rendant indépendants
du système d'exploitation et en plus, nous
n'utiliserons que des logiciels gratuits.
l l es t tempsde le déve lopperSi vous voulez permettre à I'utilisateur de
télécharger vos propres fichiers vidéo, il
faut offrir une conversion automatique de
films. Standard Flash Video (FLV) est un
format destiné aux fichiers vidéo, inventépar Macromedia; il permet une difiusion
en continu (en anglais streaming) des
films du serveur à I'aide de Macromedia
Flash Player (version 6 ou supérieure).
Le streaming permet de montrer le film
lors de son téléchargement. Flash Player
dispose également d'autres méthodes,permettant de foumir les films au navi-
âftiotSsbt vursion:
Optbne:
lRctionscript 2.0 :J
l- gencr*a dze fepgtJ- Er*æt from irportf- or* iræc ectinrsI- ocUugfig pcrn*tcd
F Conprcss rnovb
cæd l
gJ + lqlo | ::r I
Figure 3. Macromedia Flash - Publish Seffings
sctthEp,.. I
l- Optnnizef or FlashPlaver 6 165
Pæswsd: I
0 l æ
Audo tlcsn: lfil, 16 kbps, iltrp
AJdo gva*: l'1P3, 16 kbps, Î'lono
l- Ovtrlridcsflnd scfiftgt
l- expo* dcrdca sdrxk
LæCdrybd,sciltï:
www.phpsolmag.org PHP Solutions N' 5/2006
gateur, par exemple, le téléchargementprogressif (en anglais progressive) ou
I'enregistrement du fichier vidéo dans le
corps Flash de Movie Clip. Ces méthodes
ont des avantages mais il est recommandé
d'utiliser la difiusion en continu pour les
films longs.
Dans le premier exemple, vous avez
utilisé le programme Riva FLV Encoder pour
efiectuer la conversion de fichiers vidéo : ceprogramme utilise deux programmes Open
Source pour convertir les fichiers : FFMPEG
(http ://ff m peg. so u rcefo rg e. n eUi n de x. p h p)
et I-AME (httpl/lame.sourceforge.nett). Lepremier d'entre eux est un convertisseur
universel pour les fichiers vidéo et audio et
le second n'est destiné qu'aux fichiers audio
et permet de les enregistrer au format MP3
(MP3 est pour I'instant le seul format audio
lu par Flash Player).
FFMPEG - conversionde fichiers vidéoSi vous décidez de compiler vous-mêmes
les sources du programme FFMPEG sur
le serveur, n'oubliez pas I'option -mp3lame.
Elle permet de convertir les pistes audio
des fichiers vidéo au format MP3. Si vous
ne le faites pas, lors de la lecture par Flash
Player, votre vidéo sera dépourvue du son(si, lors de compilation, vous obtenez un
message d'absence de bibliothèques né-
cessaires, nous vous recommandons de
télécharger les sources LAME). Voici un
exemple de commandê confisure :
. / con f igure *
- - o n : h l o - m n f l â m ê e
- -enab le-gPJ- *
- - e - a h l Ê - m e m a I i o n - h a c k
La liste des formats supportés par
FFMPEG, et donc des possibilités de con-
version, est longue. La commande rrmpeq-rormars affiche leur liste : elle présente
les conversions que vous pouvez effectuer
à I'aide du convertisseur installé.
Afin d'effectuer la plus simple con-
version d'un fichier AVI au FLV. utilisez la
commande :
f f m n p n - i f m n \ f ê q f â- - . . . r - r - - . . . r , - - - - . * V I e
tmp\ tes t . f l v
Le programme reconnaîtra les extensionsde fichiers et adaptera les formats deconversion appropriés. ll chargera égale-ment les paramètres par défaut pour cetteopÉration.
PHP Solutions N' 5/2006
Voici un exemple de commande, char-gée de convertir le film du format AVI au
FLV (en déterminant la taille du film et laquali té du son) :
f f m p e g - y - i t m p \ t e s t . a v i
- a r 2 2 0 5 0 - a c o d e c m p 3
- a b 3 2 - f f L v - s 1 6 0 x 1 2 0
t m p \ t e s t . f l v
o ù :
-ar rare - configure la fréquence
d'échanti l lonnage en Hz,
Figure 5. phpinfo) - information sur la version installée de modules M/NG et FFMPEG
www.phpsolmag.org
mrng
frffdfnrf bry Ênf,bl8d
ftrshn û.3b6lsl
ffmpeg
Listing 'l. lnitialisation de Movie Clip
Listing 2. Nous créons /es boufons pour Movie Clip
l ) l t l l , l . r t r t = n e w S W F B u t t o n , , ;
i i l l r t t t r : = lSWFBUTTON UP I SWFBUTTON HIT I SI^ IFBUTTON OVER I SWFBUTTON
iT: r
! ; . r ( : t r ( ) t t = n e w S W F A c t i o n r i ; r c ; t i r : r r i c : r i 1 , t I ;
l j b u r l r r f r - a d d A c t j - o n ' a , t t : l i r t n , S W F B U T T O N M O U S E D O W N ) ;
$ b r r t t o n r r : f = $ l f r i S - m o v j - e - a d d , $ b u t t o t r r ;
$ b r r 1 . t - o n r e f - m o v e T o r Ç x , 1 ) y 1 ;
Listing 3. Nous programmons la forme de boutons
funct ion r tç l , t .P, t t f . t r t r t ! )ha l te : r t
9 i m q = n e w S W F B i t m a p , f o p e n v . t t " 1 1 1 a r 1 t : . , J I t i t l
g e 1 = i ) ! 6 1 1 - g e t w i d t h r j ; ;
5 l t = t ) i r n ! - g e t H e i g h t ' r ;
l t t l t i t l , r : = n e w S W F S h a p e l ) ;
5 s h a 1 ; e - , s e t L i . n e i I , 2 5 5 , 2 5 5 , 2 5 5 I ;
5 1 i I 1 = l t : : l t ; t p ç : - a d d F i l - 1 i i ) t r n ' ) , S W F F I L L T I L E D B I T I 4 A P ) ;
â s h a p c - s e t R i g h t F i l ) . r i l t ) I t ;
S s h a ç , e - d r a w l i n e i ï w , 0 : ;
s s h a ; r e - d r a w L i n e L 0 , â l r I , '
$ S h a ç , r - ' - , d r a w L i n e r - 5 w , 0 t ;
S s h t r p e - . , i l s w l i n e t 0 , - l i h t ;
r e t u r n i ; s h a p e ;
-acodec codec - force I'utilisation du
type indiqué de codage pour le che-
min audio,-ab bj.rrate - configure le débit bi-
naire en kbit/s,-s size - configure la taille du cadre
WxH,-r rmr - force le format de codage du
fichier de sortie,-y - êflrêgistre le fichier sans confir-
mation.
Voici la commande qui récupère un cadre
de la troisième seconde du film au format
AVI et l'enregistre sous forme d'image JPG :
f F n n a a - i r m n \ t a c i - 1 y i *
-s 320x240 -v f rames 1 <
- s s 3 - f m j p e g t e s t . i P g
o ù :
-ss t ime of fset conf igure le
offset (décalage par rapport au débutdu film) en secondes,-vframes number - configure le nom-
bre de cadres vidéo à récupérer du
fichier initial et à passer à la conver-
sion.
MING - créer Media PlayerMaintenant vous allez réaliser votre propre
Media Player Flash. La liste des program-
mes gratuits, capables de générer Flash,contient deux positions :
. MTASC - compilateur Open Sourcegratuit pour Action Script (AS est unlangage de programmation utilisé enFlash),
. MING - générateur de fichiers SWF,écrit en C.
Les deux programmes sont dotés de trèsgrandes fonctionnalités. Nous avons déci-dé d'opter pour MING car il est doté de sapropre extension pour PHP. Grâce à ceci,il est possible de générer Movie Clip Flashdu niveau de PHP.
Une fois I'extension MING installée(pour savoir comment le faire, reportez-vous au site Web www.php.neUming),commencez à réaliser le fichier SWF.
Dans un premier temps, créez un Mevie Clip élémentaire, comme le pÉsente
le Listing 1. ll faut y déterminer pour quelle
version de Flash Player vous créerez le clipSWFMovie ($pfayerVersion), quelle est la
ta i l lg de setDimension($width, $height) i
il est en plus possible de définir la couleur de
I'anière-plan setBackground ($r, $g, 9b) et
le nombre de cadres affichés par seconde
setRate ($rramenate). Afin d'enregistrer le
fichier, appelez la méthode save($fireName)
de I'objet smovie, mais avant de le faire,
veillez à ce qu'au moins un cadre généré se
trouve sur la scène ; ce demier point est pr$paré par la méthode nextFrame I I . Le résultatdu code du Listing 1 est un Movie Clip dontles dimensions sont les suivantes: 200pxsur 100px et dont I'anièr+plan est rouge.
Maintenant, organisez les élémentssur la scène de Movie Clip. Organisez
Listing 4. Nous créons l'objet SWFVideoStream supportant le streaming video
$ s t r e a m = n e w S W F V i d e o s t r e a m i ) ;
$ s t r e a m - , s e t D i m e n s i o n r $ w i d t h , t h e i g h t t ;
$ i t e m = $ t h i s - ; , m o v i e - a d d i $ s t r e a m i ;
$ i t e m - m o v e l o , $ x , $ y ' ;
/ / n o n d e 1 ' o b j e t V i d e o S t r e a n s u r - l a s c è n e
$ i tem- se tname "my_p layer_vs t rm" ;
( : n t - i n n c c r i n f = r l
s top O ;
n e t c o n n = n e w N e t C o n n e c t i o n O ;
n e t c o n n . c o n n e c t ( n u l l ) ;
n e L s t r e a m = n e w N e t S t r e a m ( n e t C o n n ) ;
m r r n l a v e r v s f r m - a t t a c h V i d e o ( n e t S t r e a m ) , '
n e t s t i e a m . s e t B u f f e r T i m e ( 1 0 ) ;
n ô t q i r ô â m n l : r r l r - - - ^ 1 ^ . . l r ^ ^ - - + L \ ,\ I C V E I U . V T U E V Y a L t r l t
' , ;' / n e t S t r e a n . p l a y ( _ l e v e I 0 . v i d e o - p a t h ) ;
$ t h i s - , m o v i e - a d d i n e w S W F A c t j - o n i $ a c t j ' o n s c r l p t j I ;
Listing 5. Source du fichier testplayer.html
. h t m l x m l - n s = " h t t p : / / w w w . w 3 . o r g / I 9 9 9 l x h t m l " x m l : l a n g = " s n " l a n g = r r s 1 " '
h e a d
m e t a h t t p - e q u i , v = " C o n t e n t - T y p e " c o n t e n t : " t e x t / h t m l ; c h a r s e t = i s o - 8 8 5 9 - 2 " / . ,
t i t l e r ê s r n l a v e r / t i t I e
. / h e a d .
. l . r n d r r h o e n l n r = " # f f f f f f "v v u r v Y v v + v
< o b j e c t
c f a s s i d = " c l s i d : d 2 7 c d b 6 e - a e 6 d - 1 l c f - 9 6 b B - 4 4 4 5 5 3 5 4 0 0 0 0 "
codebase: "h t tp : / , / fpdowntoad. macromedia . com/pub/
shockwave / cabs / f lash / swf lash . cab#vers ion=8, 0 , 0 , 0 "
w i - d t h = " 5 5 0 "
h e i g h t = " 4 0 0 "i d = l r i - o c i - n l : r r c r l l! v v v r 4 e J v !
^ 1 I ^ - - i l * l l i l ^ l l \d I I 9 r l - l t l r u u f ç /
< . p a r a m n a m e = " a L l o w S c r i p t À c c e s s " v a l u e = " s a m e D o m a i n " / ; '
. t p a r a m n a m e = " m o v i e " v a l u e = " t e s t p l a y e r . s w f " / >
. r p a r a m n 6 , 1 g = " q u a l i t y " v a l u e = " h i g h " / ;
i p a r a m n a m e = " b g c o l o r " v a l u e = " * f . f f f f f " / . '
. .embed
c r e = r r f p s f n I a v e r . s w f "
^ , , - l I f . , - t r h i â h t rv u q r r L y - t t r Y r t
h c c o l o r = " # f f f f f f "v ! v v 4 v -
w i d t h = " 5 5 0 "
h e i g h t = " 4 0 0 "
name=" Les tp layer "
a I i g n = " m i d d I e "
a I lowScr ip tAccess=" sameDomain "
type="app l i ca t ion / x -shockwave- f lash "
p l u g i n s p a g e = " h t t P : / / w w w . m a c r o m e d i a . c o m / g o l g e t { i a s h p l a y e r " / : '
. : /ob j ec t : '
. . : /body ,
.. /htnL'
www.phpsolmag.org PHP Solut ions N'5/2006
l 'ensemble en un seul cadre ; le Movie
Clip comprendra en réalité un seul ca-
dre. Media Player, que vous créez, se
compose de trois boutons (Stop, Play,
Pause) et d'une zone où vous afficherez
le f i lm.
Dans un premier temps, créez les
boutons. Du point de vue de I'utilisateur,
le bouton en Flash est une zone ayant
n'importe quelle forme qui réagit au com-
portement de la souris. Du point de vue
du programmeur, le bouton est un objet
qui réagit aux événements appelés par
le curseur de la souris en-dessus d'une
zone définie de la scène. En Flash, il est
possible de programmer les événements
suivants pour les boutons :
. swFBUrroN _ MousEUe - quand vous lâ-
chez le bouton de la souris en-dessus
de la zone définie,. swFBUTroN _ MousEovER - quand vous
placez le curseur sur la zone définie,. swFBUTToN _ MousEour - quand vous
placez le curseur en dehors de la
zone définie.. swFBUTToN _ MousEDowN - quand vous
appuyez sur le bouton de la souris
en-dessus de la zone définie,. swFBUTToN DRAGovER - quand vous
placez le curseur de la souris sur la
zone déflnie tout en appuyant sur son
bouton,. swFBUTToN _ DRAGour - quand vous
placez le curseur de la souris en de-
hors de la zone tout en appuyant sur
son bouton.
Une fois l ' instance du bouton $burron
new svùFButron ( ) créée, i l est possible
de définir une action pour chaque évé-
nement ou combinaison d'événements.
Vous n'utiliserez ici que la réaction
à l'événement appuyer sur le bouton de
/a sourls donc vous créerez un bouton ;vous lui définirez une action lorsque
l'événement swFBUrroN MousEDowN sur-
vient. Cette commande se présente ainsi
en PHP :
9 b u t t o n - > a d d A c t i o n ( $ a c t i o n ,
S W F B U T T O N M O U S E D O W N ) .
où $action est une action à effectuer
après l'événement. Créez I'objet $acrion
de manière suivante :
$ a c t i o n = n e w S V ' l F A c t i o n (
$ a c t i o n s c r i p t )
PHP Solutions N' 5/2006
Figure 6. Formulaire de chargement de fichiers vidéo
où $actionscript est une partie du codequ'il faut écrire vous-mêmes en ActionScript, par exemple :
$ a c t i o n s c r i - p t =
' m y V i d e o P l a y e r . p a u s e ( ) ; ' .
Ce que vous venez d'effectuer signifie quelorsqu'on appuie sur le bouton (vous avezconfiguré les actions pour l'événementswFBUrroN_Mousroowu), la commandemyVideoPlayer . pause ( ) ; Sê Iâ e f feCtUée.
Cette commande effectue la méthode
pause O suf I 'objet myVideoPlayer dont
nous parlerons dans un instant. Dès que
vous aurez défini comment le bouton doit
réagir à l'événement donné, vous devrez
aussi déterminer la forme, la taille, I'aspect
et la position de la zone active. Pour ce
faire, utilisez la méthode :
S b u t t o n - > a d d S h a p e ( S s h a p e , $ f I a g s ) ,
chargée de déterminer que I'objet $shape Sê-
ltt une forme active pour le bouton $burronpour les événements $nass. ll est ainsi pos-
sible de déterminer les formes diverses de
zones pour les événements sélectionnés.
Pour I'instant, déterminez une seule forme
pour tous les événements :
Sf lags = (SWFBUTTON_UP
r SWFBUTTON HIT
I SWFBUTTON OVER
I SV{FBUTTON DOWN);
En ce qui concemê $shape, vous pou-
vez maintenant montrer vos capacités :
il est en effet possible de dessiner parexemple un rectangle rouge pour sym-boliser le bouton de pause. Dans cedeuxième cas, utilisez I'option, permet-tant de créer une forme où une imagebitmap constituera un anière-plan; cettedémarche est analogue à HTML oùvous pouvez créer un tableau avec unarrière-plan qui est un fichier. Afin deréaliser cette opération, il est nécessairede créer dans un premier temps un objetSWFBitmap :
Slmg = new SWFBj - tmaP (
f o p e n ( " i m a g e . d b l " , " r b " ) ) ; .
SWFBirmap o permet de télécharger les
fichiers graphiques au format DBL ou
JPG (le site Web du projet MING propose
un outil de conversion de fichiers GIF ou
PNG en DBL). Une fois l'objet simq initia-
lisé, créez une nouvelle forme $shape
new swFshape O êt pour la remplil configu-
rez I'image graphique :
$ f i l 1 = $ s h a p e - > a d d F i I l (
$ img, SWFFILL_TILED_BITMAP) ;
Ensuite, dessinez un rectangle dont lataille est identique à celle de I'image. Pource faire, tapez la commande :
$ s h a p e - > s e t L i n e ( 1 , 2 5 5 , 2 5 5 , 2 5 5 \ ;
pour déterminer les paramètres de la lignequi servira à tracer le contour de la zone
Video Ga l le ry
C h o o 5 e f r l e t a ' u p l ( ' Ê d :
Nôf l le :
Ptr
Oe t ci lgtron
lrbunr nd<r ô,rccfi bt'æ
Ulfo.d Ffc
www.phpsolmag.org
(épaisseur et composants RGB de la cou-leur) ainsi que :
$ s h a p e - > d r a w l i n e ( $ x , $ y ) ;
qui dessine les lignes depuis le point oùse trouvait le curseur jusqu'au point s",$y.Le Listing 3 présente la fonction, chargéede tracer le contour du bouton où l'imageimage.dbl constitue I'anière-plan.
Une fois ces opérations effec-tuées, vous verrez les boutons sur lascène. Maintenant, concentrez-voussur la lecture du fichier vidéo. Pour cefaire, uti l isez la commande $srream: new SWFVideoSt ream O ; , Chafgée
d'initier I'objet qui supporte le sfrea-ming video. Ensuite, attribuez à I'objetles dimensions appropriées $srream-> s e t D i m e n s i o n ( $ w i d t h , $ h e i g h t ) ; 9 t l a
pOs i t iOn g i tem-)moveTo (gx , $y) ; a inS i
qUe le îOû l $ i tem->setname ( "my_p layer_
vsrrm"); i VouS uti l iserez ce nom lors dela gestion de la lecture du film. Enfin, ilfaut initialiser le processus de téléchar-gement du fichier vidéo sur la scène.Utilisez donc Action Script: placez-ledirectement dans le premier cadre deMovie Clip.
La classe SWFVideoStream, dontI'instance est présentée sur le Listing 4,est chargée de gérer les flux en flash.Afin d'ouvrir un flux, appelez les mé-thodes Action Script appropriées. Dansun premier temps, procédez à la con-nexion :
netConn = new NetConnect ion O;
netConn. connect (nu ]1 ) ;
Ensuite, qêez un flux qui utilisera cetteconnexion :
nets t ream = new NetSt ream(netConn) ;
L'étape suivante consiste à indiquer I'ins-tanCg my_player_vstrm ( SWFVideoStream) ,
supportant le strcaming video pour qu'elleutilise le flux initialisé :
my_player_vstrm. attachVideo (
ne tSt ream) ;
Enfin, configurez la taille de la mémoiretampon pour le flux vidéo, autrement dit,définissez le nombre de secondes dufilm que vous souhaitez télécharger dansla mémoire tampon du serveur avant delire le film. Ensuite, vous pouvez indiquer
Listing 6. Conversion de fichiers vidéo du niveau PHP
' . j php
d e f i n e ( ' F F M P E G _ F R A M E _ S I Z E _ P A R A M ' , ' - s 1 6 0 x I 2 0 " ; / / p d r a n e t r - s
d e f i n e ( ' F F M P E G _ A U D I O _ R A T E _ P A R A M ' , ' - a r 2 2 0 5 0 ' \ ; / / - a r r a t e - s e t a u d i o s a n p T i n g
r a t e ( i n H z )
d e f i n e { ' M O V I E S O U N D ' , ' 1 6 0 x 1 2 0 ' ) , '
c lass V ideoF i Ie ,
p r i v a t e $ d b h ;
p r i v a t e $ o s h ;
pub l ic func t ion _cons t ruc t (DatabaseHand ler $dbh) |
$ t h i s - , o s h = P l a t f o r m F a c t o r y : : g e t P l a t f o r m l n s t a n c e O ;
$rh is ->dbh = $dbh;
p u b 1 J . c f u n c t i o n u p I o a d F i I e ( $ f i 1 e s - n a m e , $ f i 1 e s - t m p _ n a m e , $ s j . z e , $ n a m e , $ d e s c r
$ targe t pa th = MY MEDIA DATA DIR basename($ f i ]es name) ;
/ / s i le ) i ch ie r " t t
te lZcnurgé, "op i " r - le
dans 1e réper to i re des méd ias
if ( move_uploaded_fi le I $f i les_tmp_name, $target_path) ) i
/ / e c h o " L e f i c h i e r " , b a s e n a n e ( $ _ F I L E S [ ' u p l o a d e d f i l e ' ] [ ' n a n e ' ] ) .
/ / " a é té cor rec tenent téLécharsé \n (br>" ;
: e lse
throw new Except ion( "Une er reur es t survenue fo rs du té Iéchargement du
f i c h i e r . " ; ;
/ /$nsg,= "Une er reur es t survenue - lo rs du té léchargenent du f i ch ie r . " ;
/ / re tu rn ;
$ th i s - ; ,dbh- : .addResource ( $name, $desc , $ s i ze I ;
$ th i s - ; , çqnyer tMov ieToFlv ( basename t $ f i les_name i t , .
$ th is ->conver tMov ieTo lmges (basenane ( $ f i les_namet ) ;
p r iva te func t ion conver tMov ieToFlv ($ fnamel I
$ f l v N a m e = $ t h i s - ; e 5 [ - ' ' g e t F i I e B a s e N a m e 1 $ f n a m e ) . ' . f l v ' ;
$ c o m m a n d = ' f f m p e g - i " ' . M y M E D I A D A T A p 1 p . $ f n a m e , " " .' - a r 2 2 0 5 0 - a c o d e c m p 3 - a b 3 2 - f f l v - s 1 6 0 x 1 2 0 ' .
' " ' . M y M E D I A D A T A D I R . $ f l v N a m e , ' " ' ;
i f ( $ t h i s - : ' o s h - > e x e c ( $ c o m m a n d i = = 9 1 r
$this_)dbh_.,addMovie 1 $f lvName 1 ;rg tu rn t rue ;
e lse re tu rn fa lse ;
private function convertMovieTolmges ($fnamel {
i f t $ t h i s - . , o s h - ' i s P h p F f m p e g E x t e n s i o n L o a d e d O ) ; -
$mov = new ffmpeg_movie (MY_MEDIA_DATA_DIR. $fnamel ;
$ d u r a t i o n = f l o a t v a l { $ m o v - : g e t D u r a t i o n O ) ;
$ s t e p 1 = $ d u r a t i o n / 3 ;
$ s t e P 2 = $ s t e p 1 * 2 ;
$ temp = ar ray (0 , $s tep l , Ss tep2) ;fo reach 1$ temp as $k=; 'gy1 i
$ imgName = $ th is - .>osh->getF i leBaseName 1$fname; . "0$k . jpg" ;
$ c o m m a n d = r f f m p e g - i " ' . M y M E D I A D A T A D I R . $ f n a m e . " ' - s 1 6 0 x 1 2 0- v f r a m e s 1 - f m j p e g - s s ' . $ v . ' " ' . M y M E D I A D A T A D I R , g i m g N a m e . " ' , ;
i f 1 $ t h i s - > o s h - > e x s c 1 $ c o m m a n d l = = 6 1 {
$ th is ->655->add lmage l $ imgName ) ;
e lse I
$ c o m m a n d = r f f m p e g - i ' . M y M E D r A D A T A D I R . $ f n a m e . ' - s 1 5 0 x 1 2 0 - v f r a m e s I- f m jpeg ' .MY_MEDTA_DATA_DIR. $ th is - - .osh->getF i leBaseName ($ fnamet . '00 . jp
g ' ;
,
9 th is ->6s l - ;exec t$commandl ;
www.phpsolmag.org PHP Solutions N'5/2006