Vous êtes sur la page 1sur 7

Votre propre GoogleVideo :

streamingvideo en PHP
Niveau de difficulté : o
Rafal Malinowski

Vousvous êtesdemandéscommentfonctionnait
la lecturede films à partirdu Web ?
Aimez-vousGoogleVideo? Faites
connaissancedu streamingvideo (diffusionen
flux continu des vidéos)et créezvotre propre
galerieWeb de films. ll suffit de connaîtreles
basesde PHPet c'est tout !

ublier les films sur Intemet en dépendantsdu systèmed'exploitation


se basantsur Flash Playercom- aveclequelfonctionnera la galerie,
prendtroisopérations: . troisièmepartie: nous nous base-
rons sur les connaissancesacqui-
. convertirle film au formatFlashVideo ses dans la deuxièmepartie ainsi
(FLV)supportépar FlashPlayer, que sur le code que nous y aurons
. créer le lecteur (Media Player) qui créé pour réaliserune versionfinale
chargerale film depuisle serveuret le du service: une galerie de films
présenteraau clientdansle navigateur, et universelle.
fonctionnelle
. publierun site Web où vous placerez
le lecteur. Démarragerapide
Vousallezeffectuertroisétapes: étape 1
Afin de décrireles opérationsci{essus, - convertirle fichiervidéo;étape2 - rêali"
nousavonsdiviséI'articleen troisparties: ser un lecteurvidéoen Flash;étape 3 - in-
tégrerle lecteuren HTML.
. première partie: démanage rapide
Rafal Mallnowskl esl prcgnmmeur et
ænæpteur d'appliætionsréseau en
où nousvous présenterons, comment Ge qu'il faut savoir...
PHe JAUAet AdionSaipt.Pendantson publierun film sur Internet.Ce seraun Avoir les bases de PHP sera très utile.
temps libre, il crée des bibliothèques exemplepourla plate-forme Windows, Getarticleexplique...
pur Flashet pafticip à plusieursproiets . deuxièmepartie: nousdévelopperons Vous apprendrez comment créer votre
Open Source.Aduellernent,il tnvaille ensemble l'exempledécrit dans la prc,preGoogle Video: une galerie com-
chez SUPERMEDIAsur le poste de plète de films avec Media Player Flash
concepteur/prcgnmmeurJava. premièrepartie et nous présenterons sur Intemet qui permettrade charger les
@ntad: malinr@wp.pl commentautomatiserles opérations films et de les lire en continu.
décriteset commentvous rendrein-

www.phpsolmag.org PHP SolutionsN" 5/2006


En fonction du système d'exploitation
et des solutionsutilisées,il est possible Flla [ar6.u4,c ?

d'effectuer chacune de ces étapes de '*+FLv - , Online Hclp


p l u s i e u r sm a n i è r e s . D a n s u n p r e m i e r EN..DER ,;h lf,deonleb
f VA -. Forum
temps, réalisez une présentationprête
à atteindre rapidement l'objectif. Pour h.r Presel
InpulVideo
ce faire, utilisezdes programmes com- D5[,xml
,' 8rærc
merciaux (version d'essai), disponibles u.l€o
uniquement(hélas) pour la plate-forme
, fiovic Skc
Windows. Toutes les étapes seront j Mdco tmagcO
I 'eæt6-r ' {Deinterlace
présentéesI'une après I'autre. Dans la OrfFf '
Fnmcrrtc Bltràtc
partie suivante de I'article, nous vous OutputDirectory
E:\documents\adminVny-documcntsll\oje widco Brotsc
présenteronsles solutions indépendan-
Destinetion Yideo tile
tes du système d'exploitationqui néces-
sitenttoutefoisplus de travail.

Gonversiond'un fichier vidéo


Flash Player travaille avec les fichiers
vidéo au format Flash Video (FLV). Ce
format est rarement rencontré et il est
donc nécessaire de le convertir. Pour Roeult
ce faire, utilisez le programme Riva
FLV Encoder (http://www.rivavx.com/?
encoder).Comme vous le voyez sur la Êfl r|ËroûtF{f6 fffi llIE rd rfvrf,tr
Figure 1, Riva FLV Encoder vous per-
metde : Figure 1. Riva FLV Encoder - convertisseurde fichiersvidéo au format FLV

. configurerla résolutiondu film initial(1), document, par exemple, testplayer.fla et avoir la forme d'un chemin relatif ou ab-
. configurer les paramètres de com- déplacez le composant MediaPlayback solu (qui commence soit par file:\ soit par
pressiondu fichier (2), (1) sur la scène (2) (en anglais Sfage, http:\). Pour simplifier, nous admettons
. couper correctement les images du zone de travail du document). Ensuite, que aussi bien Media Player que le film
film(3), lancez Component lnspektor(3) où il faut se trouveront dans le même dossier et
. configurerles paramètresdu son (4). saisir le chemin d'accès (URL) au fichier donc qu'il suffitde saisirle nom du fichier
FLV (4) préparé au préalable.L'URL peut vidéo : videotest.flv.
De plus, ce programme vous permet de
récupérerun seul cadre du film et l'en-
registrersous forme de fichier graphique
JPEG- ongletlmage(5).
Afin d'effectuerla conversion,paramé-
trezle chemindu fichierinitialet du fichier
de sortie et cliquez sur le bouton FLV
Encode(6). Enregistrezle premier fichier
FLV.Appelez-le videote st.flv.

Lecteurvidéo Flash
MacromediaFlash, programmeque vous
utiliserezpour réaliser le premier clip
flash,disposed'un Media Player élégant.
MacromediaFlash est payant mais pour
les besoins de présentation,nous utili-
seronssa version d'essai à télécharger
depuis le site: http://www.adobe.com/
produ cts/flash/fIashp ro/.
Une fois cette version installée,vous
pouvez réaliser un lecteur vidéo Flash
attrayantavec minimum de travail. Lan-
cez Flash (Figure 2), créez un nouveau Figure 2. Macromedia Flash- zone de travailde l'application

PHPSolutionsN" 5/2006 www.phpsolmag.org


r, -ltrlIl Publicationde MovieClip
Ete Eû $ew Ep EodqËks lodr SF I Ensuite, il faut créer un fichier HTML où
vous placerez Movie Player de sorte que
t " . l |3 #] tr @ + 6lr*e'///e'/oocuncnts/ac
IGI les autres puissent le regarder. En ce qui
conceme le téléchargementdu fichiervidéo
et sa lecturedans le navigateur,c'est Movie
Playerqui s'en charge. MacromediaFlash
vous facilite ici considérablementla tâche.
Sélectionnezla 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électionnezla version 7 de Flash
(( Player (1). Cliquezsur le bouton Publish;
deux nouveaux fichiers: fesfp/ayer.svvf et
testplayer.html apparaissent dans le ré-
pertoire où vous aviez enregistréle fichier
Figrrre 4 Composant MediaPlaybackde Macromedia présentant un film dans le testplayer.fla.Si vous plaæz à présent ces
navigateur lnternet fichiers avec le fichier vidéo sur le serveur
et si vous ouvrez la page testplayer.html,
vous devriezvoirle film publiédans le navi-
gateurIntemet(Figure4).
Crrrer*profle:loefaUt gJ + lqlo | ::rI
C'est prêt !
Fsmats Flô$ l** Nous finissons ainsi cette introduction.
La page créée sera visible dans tous les
I lerdon: lrbsh Player7 :J navigateurs Internet dotés d'un plug-in
Flash Player7 ou supérieur.Comme vous
leottomup :l pouvez le constater,réaliserune publica-
âftiotSsbt vursion: lRctionscript
2.0 :J sctthEp,..I tion de fichiersvidéo est très simple. Mal-
heureusement,les solutions utilisées ne
Optbne: l- gencr*a dzefepgt répondent pas à nos besoins. Première-
J- Er*æt fromirport ment, elles sont commerciales(elles coû-
f- or* iræc ectinrs tent cher) et ne sont disponiblesque pour
I- ocUugfig pcrn*tcd la plate-formeWindows. Deuxièmement,
F Conprcssrnovb il faut effectuer toutes les opérations à la
Optnnizefor FlashPlaver6 165 main. À présent,nous essayeronsensem-
l-
ble d'automatiserle processusde conver-
Pæswsd: I sion de films, nous insisteronssur le côté
universel en nous rendant indépendants
du système d'exploitationet en plus, nous
n'utiliseronsque des logicielsgratuits.
0læ
Audo tlcsn: lfil, 16 kbps, iltrp ll est temps
de le développer
AJdo gva*: l'1P3,16 kbps, Î'lono Si vous voulez permettre à I'utilisateurde
l- Ovtrlridcsflnd scfiftgt télécharger vos propres fichiers vidéo, il
l- expo* dcrdcasdrxk faut offrir une conversion automatique de
films. Standard Flash Video (FLV) est un
LæCdrybd,sciltï:
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
cæd l lors de son téléchargement.Flash Player
dispose également d'autres méthodes,
Figure 3. Macromedia Flash- Publish Seffings permettant de foumir les films au navi-

www.phpsolmag.org PHP SolutionsN' 5/2006


gateur, par exemple, le téléchargement Voici un exemplede commande,char- -ab 32 -f fLv -s 160x120
progressif (en anglais progressive) ou gée de convertirle film du format AVI au tmp\test.flv

I'enregistrement du fichier vidéo dans le FLV (en déterminantla taille du film et la


corps Flashde Movie Clip. Ces méthodes qualitédu son) : où:
ontdes avantagesmais il est recommandé
d'utiliserla difiusion en continu pour les ffmpeg -y -i tmp\test.avi -ar rare - configure la fréquence
filmslongs. -ar 22050 -acodec mp3 en Hz,
d'échantillonnage
Dans le premier exemple, vous avez
utiliséle programmeRiva FLV Encoderpour
mrng
efiectuerla conversionde fichiersvidéo : ce
programmeutilisedeux programmesOpen frffdfnrf bry Ênf,bl8d
Sourcepourconvertirles fichiers: FFMPEG ftrshn û.3b6lsl
(http://ffmpeg. so urcefo rg e.n eUin dex. p hp)
et I-AME (httpl/lame.sourceforge.nett). Le ffmpeg
premierd'entre eux est un convertisseur
universelpour les fichiersvidéo et audio et
le secondn'estdestinéqu'auxfichiersaudio
et permetde les enregistrerau format MP3
(MP3est pour I'instantle seul format audio
lu parFlashPlayer).

FFMPEG - conversion
defichiersvidéo
Si vous décidez de compiler vous-mêmes Figure 5. phpinfo) - information sur la version installéede modules M/NG et FFMPEG
les sources du programme FFMPEG sur
le serveur,n'oubliezpas I'option-mp3lame. Listing 'l. lnitialisationde Movie Clip
Elle permet de convertir les pistes audio
des fichiersvidéo au format MP3. Si vous
ne le faitespas, lors de la lecture par Flash
Player,votre vidéo sera dépourvuedu son
(si, lors de compilation,vous obtenez un
messaged'absence de bibliothèquesné-
cessaires,nous vous recommandons de
téléchargerles sources LAME). Voici un Listing 2. Nous créons /es boufons pour Movie Clip
exemple
de commandêconfisure : l)lt ll,l.rtrt = new SWFButton, , ;
iillrtttr: = lSWFBUTTON UP I SWFBUTTON HIT I S I ^ I F B U T T O NO V E R I SWFBUTTON

./configure *
- - o n : h l o - m n f l â m ê e iT: r

--enable-gPJ- *
! ; . r ( : tr ( ) 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 ;
- - e - a h l Ê - m e mIai o n - h a c k 'a,tt:l
ljbur lrrfr- addActj-on i r t n , S W F B U T T O NM O U S E D O W N ) ;

$brrtton rr:f = $lfriS- movj-e- add,$but totrr;

La liste des formats supportés par $ b r r 1 . t - o nr e f - moveTorÇx, 1)y1;

FFMPEG, et donc des possibilitésde con-


Listing 3. Nous programmons la forme de boutons
version,
est longue.La commande rrmpeq
-rormarsaffiche leur liste : elle présente r t ç l , t . P , t t f r. t r t ! ) h a l t e : r t
function
lesconversionsque vous pouvez effectuer
à I'aidedu convertisseurinstallé. 9imq = 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, 1J tI :t i t l
g e 1= i)!611- getwidthr j;;
Afin d'effectuer la plus simple con-
5lt = t )i r n ! - getHeight' r;
versiond'un fichierAVI au FLV. utilisezla
commande : lttltitl,r: = new SWFShape l) ;

5sha1;e-,setLi.ne iI, 255, 255, 255I ;

-f f- m
. .n. pr -n r
-i
- f- m
. .n. \r , - f- ê- -q .f * V I â
e
51iI1 = lt::lt;tpç:- addFil-1 ii) trn'), SWFFILL TILED BITI4AP) ;

âshapc- setRightFil). rilt) It ;


t m p \t e s t . f l v
Sshaç,e- drawline iïw, 0 : ;

ssha;re- drawLine L0 , â l r I , '


Leprogramme reconnaîtrales extensions $ S h a ç , r - ' ,- d r a w L i n e r - 5 w , 0 t ;
de fichierset adapterales formats de Sshtrpe-.,ilswline t 0, -liht ;

conversionappropriés.ll chargeraégale- return i;shape;

mentlesparamètres par défautpourcette


opÉration.

PHPSolutions
N' 5/2006 www.phpsolmag.org
-acodec codec - force I'utilisationdu trouvesur la scène; ce demierpointest pr$
il est en plus possiblede définirla couleurde
type indiqué de codage pour le che- I'anière-plan setBackground ($r, $g,9b) etparéparla méthodenextFrame I I . Le résultat
min audio, le nombre de cadres affichés par seconde du codedu Listing1 est un MovieClipdont
-ab bj.rrate - configure le débit bi- setRate ($rramenate).Afin d'enregistrerle les dimensionssont les suivantes:200px
naire en kbit/s, fichier,appelez la méthode save($fireName) sur 100pxet dontI'anièr+planestrouge.
-s size - configure la taille du cadre de I'objet smovie, mais avant de le faire, Maintenant, organisez les éléments
WxH, veillezà ce qu'au moins un cadre généré se sur la scène de Movie Clip. Organisez
-r rmr - force le format de codage du
fichierde sortie, Listing 4. Nous créons l'objet SWFVideoStream supportant le streaming video
-y - êflrêgistrele fichier sans confir-
$stream = new SWFVideostreami);
mation.
$ s t r e a m - , s e t D i m e n s i o nr$ w i d t h , t h e i g h t t ;
$item = $this-;,movie- addi$streami ;
Voici la commande qui récupère un cadre $ i t e m - m o v e l o ,$ x , $ y ' ;
de la troisièmeseconde du film au format //non de 1'objet VideoStrean sur -la scène

AVI et l'enregistresous forme d'imageJPG : $item- setname "my_player_vstrm" ;

( : n t - i n n c c r i n f = r l

fFnnaa -i rmn\taci- 1yi *


stop O ;
-s 320x240 -vframes 1 < n e t c o n n = n e w N e t C o n n e c t i o nO ;
-ss 3 -f mjpeg test.iPg netconn.connect (null) ;
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 rn 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 ) , '
où:
n e t s t i e a m . s e t B u f f e r T i m e ( 1 0) ;
r - - - ^ 1 ^ . . l r ^ ^ - - + L \ ,
n ô t q i r ô â m n l : r r l I C V E I U . V T U E V t
\ Y a L t r l

-ss time offset configure le ',;


' /
offset(décalagepar rapportau début 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 ) ;
,movie- add i new SWFActj-on i $actj'on scrlptj I ;
du film)en secondes, $this-

-vframes number- configurele nom-


Listing 5. Sourcedu fichiertestplayer.html
bre de cadres vidéo à récupérer du
fichier initial et à passer à la conver- . html xml-ns="http: / /www.w3.org/I999lxhtml" xml: lang="sn" lang=rrs1" '

sion. head

meta http-equi,v="Content-Type" content:"text/html; charset=iso-8859-2" /.,

title rêsrnlaver /titIe


MING- créer Media Player . /head.
Maintenantvousallezréaliservotrepropre . l . r n d r rh o e n l n r = " # f
v v u r v Y v v + v f f f ff"

MediaPlayerFlash.La listedes program-


mes gratuits,capablesde générerFlash, <object
c f a s s i d = " c l s i d : d 2 7 c d b 6 e - a e 6 d -l1c f - 9 6 b B - 4 4 4 5 5 3 5 4 0 0 0 0 "
contientdeuxpositions:
codebase: "ht tp : /,/ fpdowntoad. macromedia . com/pub/

. MTASC- compilateur Open Source s h o c k w a v e/ c a b s / f l a s h / s w f l a s h. c a b # v e r s i o n = 8 , 0 , 0 , 0 "


gratuitpour Action Script(AS est un wi-dth="550"

langagede programmation utiliséen height="400"


i d = l r i - ! vovcvi -r 4 n
e lJ: vr r! c r l l
Flash), ^ 1 I ^--il*l lil ^ll\
ltlruufç /

MING- générateur
dII9rl-
. de fichiersSWF, value="sameDomain"
<.param name="aLlowScriptÀccess" /;'
écriten C. .tparam name="movie" value="testplayer.swf" />
.rparam n6,1g="quality" value="high" /;

Les deux programmes sont dotésde très iparam name="bgcolor" value="*f.fffff" /.'

grandesfonctionnalités. Nousavonsdéci-
..embed
dé d'opterpourMINGcar il est dotéde sa c r e = r r fp s f n I a v e r . s w f "
propreextensionpourPHP.Grâceà ceci, ^,,-l
vuqrr
I f .,-trhi
Ly-
âhtr
ttrYrt

il est possiblede générerMovieClipFlash hccolor="#ffffff"


v ! v v 4 v -

w i d t h = " 5 5 0"
du niveaude PHP.
height="400"
Une fois I'extensionMING installée
n a m e = "L e s t p l a y e r "
(pour savoir commentle faire, reportez- aI ign="middIe"
vous au site Web www.php.neUming), a I l o w S c r i p t A c c e s s = " s a m e D o m a i "n
commencez à réaliserle fichierSWF. t y p e = " a p p l i c a t i o n / x - s h o c k w a v e - f l a s h"
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 ac. o m / g o l g e t { i a s h p l a y e r " / : '
Dans un premiertemps,créezun Me
vie Clip élémentaire,comme le pÉsente . :/ o b j e c t : '
le Listing1. ll fauty déterminer pourquelle
versionde FlashPlayervouscréerezle clip ..:/body,
($pfayerVersion),
SWFMovie quelle est la ../htnL'

taillg de setDimension($width, $height) i

www.phpsolmag.org PHP SolutionsN'5/2006


l'ensembleen 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
Video Gallery
le film.
Dans un premier temps, créez les Choo5e frle ta' upl('Êd:

boutons.Du point de vue de I'utilisateur,


Nôflle :
le bouton en Flash est une zone ayant Ptr

n'importequelle forme qui réagit au com- Oe t cilgtron


lrbunr nd<r ô,rccfi bt'æ
portementde la souris. Du point de vue
du programmeur, le bouton est un objet Ulfo.d Ffc

qui réagit aux événements appelés par


le curseur de la souris en-dessus d'une
zone définiede la scène. En Flash, il est
possiblede programmerles événements
suivantspour les boutons:

. swFBUrroN _ MousEUe - quand vous lâ-


chez le bouton de la souris en-dessus
de la zone définie,
. swFBUTroN _ MousEovER - quand vous Figure 6. Formulairede chargement
de fichiersvidéo
placezle curseursur la zone définie,
. swFBUTToN _ MousEour- quand vous où $actionscriptest une partiedu code il est en effet possiblede dessinerpar
placez le curseur en dehors de la qu'il faut écrire vous-mêmesen Action exemple un rectanglerouge pour sym-
zonedéfinie. Script,parexemple: boliser le bouton de pause. Dans ce
. swFBUTToN _ MousEDowN- quand vous deuxièmecas, utilisezI'option,permet-
appuyez sur le bouton de la souris $actionscri-pt = tant de créer une forme où une image
en-dessusde la zone définie, ' m y V i d e o P l a y e r . p a u s (e) ; ' . bitmapconstituera un anière-plan;cette
. swFBUTToN DRAGovER - quand vous démarche est analogue à HTML où
placez le curseur de la souris sur la Ce que vousvenezd'effectuer signifieque vous pouvez créer un tableau avec un
zonedéflnietout en appuyantsur son lorsqu'on appuiesur le bouton(vousavez arrière-planqui est un fichier.Afin de
bouton, configuréles actions pour l'événement réalisercette opération,il est nécessaire
. swFBUTToN _ DRAGour- quand vous swFBUrroN_Mousroowu), la commande de créerdans un premiertempsun objet
placezle curseur de la souris en de- myVideoPlayer. pause ( ) ; SêIâ effeCtUée. SWFBitmap :
hors de la zone tout en appuyant sur Cette commande effectue la méthode
son bouton. pauseO suf I'objet myVideoPlayerdont S l m g = n e w S W F B j - t m a(P
nous parleronsdans un instant. Dès que fopen("image.dbl", "rb") ) ; .

Unefois l'instancedu bouton $burron vous aurez défini comment le bouton doit
new svùFButron ( ) créée, il est possible réagir à l'événementdonné, vous devrez SWFBirmap o permet de télécharger les
de définir une action pour chaque évé- aussi déterminerla forme, la taille,I'aspect fichiers graphiques au format DBL ou
nementou combinaisond'événements. et la position de la zone active. Pour ce JPG (le site Web du projet MING propose
Vous n'utiliserez ici que la réaction faire, utilisezla méthode : un outil de conversionde fichiers GIF ou
à l'événementappuyer sur le bouton de Sbutton->addShape (Sshape, $ f Iags ), PNG en DBL). Une fois l'objet simq initia-
/a sourls donc vous créerez un bouton ; chargéede déterminerque I'objet$shapeSê- lisé, créez une nouvelle forme $shape
vous lui définirez une action lorsque ltt une forme active pour le bouton $burron new swFshape O êt pour la remplil configu-
l'événementswFBUrroN MousEDowN sur- pour les événements$nass.ll est ainsi pos- rez I'imagegraphique:
vient.Cettecommande se présente ainsi sible de déterminerles formes diverses de
en PHP: zones pour les événements sélectionnés. $fil1 = $shape->addFiIl (
Pour I'instant,déterminezune seule forme $ i m g , S W F F I L L _ T I L E D _ B I T M A;P )

9button->addAction ($action, pour tous les événements :


SWFBUTTON
M O U S E D O W N. ) Ensuite,dessinezun rectangledont la
Sflags = (SWFBUTTON_UP tailleest identiqueà cellede I'image.Pour
où $action est une action à effectuer r S W F B U T T OHNI T ce faire, tapezla commande:
aprèsl'événement.Créez I'objet $acrion OVER
I SWFBUTTON

de manièresuivante: I S V { F B U T T ODNO W N ) ; $shape->setLine(1, 255,255,255\ ;

$action = new SV'lFAction ( En ce qui concemê $shape,vous pou- pourdéterminer lesparamètres de la ligne
$actionscript ) vez maintenant montrer vos capacités : qui serviraà tracerle contourde la zone

PHPSolutions
N' 5/2006 www.phpsolmag.org
(épaisseur et composantsRGBde la cou-
leur)ainsique : Listing 6. Conversionde fichiersvidéodu niveauPHP
'. jphp
$ s h a p e - > d r a w l i n e( $ x , $ y ) ;
d e f i n e( ' F F M P E G _ F R A M E _ S I Z E _ P A, R' -As M '1 6 0 x I 2 0 " ; / / p d r a n e t r - s
define('FFMPEG_AUDIO_RATE_PARAM'2 , ' 2- a0r5 0 ' \ ; / / - a r r a t e - s e t a u d i o s a n p T i n g
qui dessineles lignesdepuisle pointoù rate (in Hz)
se trouvaitle curseurjusqu'aupoints",$y. d e f i n e{ ' M O V I ES O U N D' , ' 1 6 0 x 1 2 0 ' ) , '
class VideoFiIe ,
Le Listing3 présentela fonction,chargée
private $dbh;
de tracerle contourdu boutonoù l'image private $osh;
image.dblconstitueI'anière-plan. public function _construct (DatabaseHandler $dbh) |
Une fois ces opérations effec- $this-,osh = PlatformFactory::getPlatformlnstanceO;
tuées, vous verrez les boutonssur la $rhis->dbh = $dbh;

scène. Maintenant, concentrez-vous


pub1J.cfunctionupIoadFiIe($fi1es-name,$fi1es-tmp_name,$sj.ze,$name,$descr
sur la lecturedu fichiervidéo. Pour ce $target path = MY MEDIA DATADIR basename($fi]es name);
faire, utilisez la commande $srream // si le )ichier telZcnurgé, dans 1e répertoire des médias
"tt "opi"r-le
: new SWFVideoStream O ;, Chafgée if ( move_uploaded_file I $files_tmp_name, $target_path) ) i
d'initier I'objet qui supporte le sfrea- // echo "Le fichier ", basenane( $_FILES['uploadedfile'] ['nane']).

ming video. Ensuite,attribuezà I'objet // " a été correctenent téLécharsé \n(br>";


: else
les dimensionsappropriées$srream-
throw new Exception("Une erreur est survenue fors du téIéchargement du
>setDimension($width, $height); 9t la fichier. "; ;
pOsitiOn gitem-)moveTo (gx, $y) ; ainSi //$nsg,= "Une erreur est survenue -lors du téléchargenent du fichier.";
qUe le îOûl $item->setname ("my_player_ / / return ;

vsrrm"); i VouSutiliserezce nom lorsde


$ t h i s - ; , d b h - : . a d d R e s o u r c e( $ n a m e ,$ d e s c , $ s i z e I ;
la gestionde la lecturedu film. Enfin,il
$ t h i s - ; , ç q n y e r t M o v i e T o F l v (b a s e n a m et $ f i l e s _ n a m ei t , .
faut initialiserle processusde téléchar- $ t h i s - > c o n v e r t M o v i e T o l m g e s ( b a s e n a n e( $ f i l e s _ n a m e t) ;
gement du fichier vidéo sur la scène.
Utilisez donc Action Script: placez-le private function convertMovieToFlv($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 ' ;
directementdans le premiercadre de
$ 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 , " " .
MovieClip. ' -ar 22050 -acodec mp3 -ab 32 -f flv -s 160x120 '.
La classe SWFVideoStream,dont '"'
. M y M E D I A D A T A D I R . $ f l v N a m e' ," ' ;
I'instanceest présentéesur le Listing4, if ( $ t h i s - : ' o s h - > e x e c ( $ c o m m a n d i = =9 1 r
est chargéede gérer les flux en flash. $this_)dbh_.,addMovie 1$flvName 1 ;
rgturn true;
Afin d'ouvrir un flux, appelez les mé-
thodes Action Script appropriées.Dans else return false;
un premier temps, procédezà la con-
nexion: private function convertMovieTolmges ($fnamel {

if 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) ; -
netConn = new NetConnection O;
$mov = new ffmpeg_movie (MY_MEDIA_DATA_DIR. $fnamel ;
netConn.connect (nu]1 ) ;
$duration = floatval{ $mov-:getDurationO ) ;
$step1 = $duration/3;
Ensuite,qêez un flux qui utiliseracette $steP2 = $step1*2;
connexion: $temp = array (0, $stepl, Sstep2) ;
foreach 1$temp as $k=;'gy1 i
$ i m g N a m e= $ t h i s - . > o s h - > g e t F i l e B a s e N a m e 1 $ f n a m e ;. " 0 $ k . j p g " ;
netstream = new NetStream(netConn) ;
$ 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
-vframes 1 -f mjpeg -ss '.$v.'
" ' . M y M E D I AD A T AD I R , g i m g N a m e . " ' , ;
L'étapesuivanteconsisteà indiquerI'ins-
tanCg my_player_vstrm ( SWFVideoStream) , if 1 $ t h i s - > o s h - > e x s c 1 $ c o m m a n d=
l = 61 {
$this->655->addlmagel $imgName );
supportantle strcamingvideopour qu'elle
utilisele flux initialisé:

my_player_vstrm. attachVideo ( else I


netStream) ; $ 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 j p e g ' . M Y _ M E D T A _ D A T A _ D$I tRh.i s - - . o s h - > g e t F i l e B a s e N a m e ( $ f n a m e t ' 0 0 . j p
.
g';
Enfin,configurezla taillede la mémoire
9this->6sl-;exec t $ c o m m a n d;l
tamponpourle flux vidéo,autrementdit, ,
définissezle nombre de secondesdu
filmque voussouhaiteztélécharger dans
la mémoiretampondu serveuravantde
lirele film.Ensuite,vouspouvezindiquer

www.phpsolmag.org PHP SolutionsN'5/2006

Vous aimerez peut-être aussi