mardi 3 février 2009
[Ffmpeg/Flvmdi/JW Player] Streaming en Flash avec pause, lecture avancée sur une vidéo flv d'un épisode d'Oggy et les cafards
Par david techer, mardi 3 février 2009 à 02:54 :: Multiméda sous GNU/Linux
Le but ici est de proposer une suite d'outils qui permettent de pouvoir regarder une vidéo avec avance rapide, arrêt sur image etc...
Le but est d'obtenir cette superbe vidéo sur laquelle on peut avancer, mettre sur pause, reculer etc...
1. Ffmpeg: conversion du avi en flv
L'épisode ayant une durée de 23 minutes pour un affichage en 352x288, on pourra rogner certaines paramètres dont qmax=31
./ffmpeg -i Oggy_2006-06-05-11-50-01.avi -y -b 700k -qmin 5 -qmax 31\ -s 352x288 -acodec libfaac -ar 11025 -ab 92k -f flv Oggy_2006-06-05-11-50-01.flv
Bien sûr ici, j'utilise ma version ffmpeg full static compilée maison
disponible à http://www.davidgis.fr/download/ffmpeg-fullstatic-svnr16921.tar.bz2 ou à http://www.davidgis.fr/download/ffmpeg-ffserver-fullstatic-svnr16676.tar.bz2
2 Flvmdi: ajout des metatags
L'ajout des metatags permet justement de pouvoir naviguer dans la vidéo.
Il faut utiliser une utilitaire comme flvmid.exe. Ce dernier est disponible à http://www.buraks.com/flvmdi/. Mon fichier ne dépassant pas la limite autorisée, je peux donc me livrer à la conversion. Bien sûr ce binaire étant prévu pour Windaube, il faut recourir à Wine
wine flvmdi.exe Oggy_2006-06-05-11-50-01.flv /k /l /p
qui affichera
Manitu Group FLV MetaData Injector 2.94 Copyright (c) 2004-2007 Manitu Group. http://www.buraks.com/flvmdi Loading FLV File... Reading FLV header Finished. Reading FLV tags 4% done 8% done 11% done 19% done 26% done ... .... 85% done 89% done 93% done 97% done Finished. Finished. MetaData injected (in memory). Saving FLV File... 4% done 8% done 12% done 16% done 20% done ... .... 89% done 93% done 97% done Finished. Completed.
3. JW Player: lecteur Flash adéquate
Ce lecteur est parfait pour ma lecture. Il s'installe en suivant les indications disponibles à http://nwayvideo.com/phpflvplayer/index.html
Dans l'exemple à télécharger (j'ai pris le n°2), il faut récupérer les fichiers disponibles dans le sous-répertoire scripts: flvprovider.php, phpsflvplayer.swf, playerProductInstall.swf, swfobject.js
Le code sera donc
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var attributes = {};
var params = {};
// for fullscreen
params.allowfullscreen = "true";
var flashvars = {};
// the video file or the playlist file
flashvars.file = "video.flv";
// the PHP script (1.5 is a recommended value for PHP Streaming for bufferlength)
flashvars.streamscript = "flvprovider.php";
flashvars.bufferlength = "1.5";
// width and height of the player (h is height of the video + 20 for controlbar)
// required for IE7
flashvars.width = "352";
flashvars.height = "288";
// width and height of the video
flashvars.displaywidth = "352";
flashvars.displayheight = "288";
flashvars.autostart = "false";
flashvars.showdigits = "true";
// for fullscreen
flashvars.showfsbutton = "true";
// 9 for Flash Player 9 (for ON2 Codec and FullScreen)
swfobject.embedSWF("phpsflvplayer.swf", "flashcontent", "352", "288", "9.0.0","playerProductInstall.swf", flashvars, params, attributes);
</script>
<div id="flashcontent"></div>
.


