Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 >

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

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>

[Ffmpeg] Streaming vidéo - SVN Révision 16676en full static

C'est la seule révision du dépôt que j'ai pu trouvé qui ne pose pas de problème pour faire du streaming.

0. Scénario - Client/Serveur

Mon serveur de streaming est à Montpellier. Il est composé du couple ffserver/ffmpeg. Je suis sur Antibes pour essayer de regarder une vidéo sur le disque dur de mon ordinateur à Montpellier (= le serveur).

1. Téléchargement

Les binaires sont disponibles à http://www.davidgis.fr/download/ffmpeg-ffserver-fullstatic-svnr16676.tar.bz2 en full static comme toujours .

<2. Côté serveur à Montpellier

2.a) Port pour le serveur

Pour ce scénario, on va ouvrir le port sur le serveur sur un port comme 8090.C'est le port par défaut du fichier de configuration. Un petit coup d'iptables donnera donc les commandes suivantes

PORT=8090
$IPTABLES -A INPUT -i $INTERFACE_INTERNET -p tcp --dport $PORT -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport $PORT -j ACCEPT

2.b) Fichier de configuration de ffserver

Le fichier de configuration ffserver.conf sera le suivant

Port 8090
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 30000
NoDaemon
<Feed feed1.ffm>
	File /tmp/feed1.ffm
	FileMaxSize 0
        ACL allow 127.0.0.1
	ACL allow XXX.YYY.UUU.VVV
	ACL allow 82.236.232.???
</Feed>

<Stream test.swf>
	Feed feed1.ffm
	Format swf
	VideoFrameRate 7
	VideoBufferSize 80000
	VideoBitRate 400
	VideoQMin 3
	VideoQMax 5
	VideoSize 320x240
	PreRoll 10
        ACL allow 127.0.0.1
	ACL allow XXX.YYY.UUU.VVV
	ACL allow 82.236.232.???
</Stream>

<Stream stat.html>
	Format status
	ACL allow XXX.YYY.UUU.VVV
</Stream>

<Redirect index.html>
	# credits!
	URL http://ffmpeg.sourceforge.net/
</Redirect>

XXX.YYY.UUU.VVV est mon IP sour Antibes et 82.236.232.??? est l'IP de mon serveur sur Montpellier.

2.c) Lancement de ffserver

On se connecte en ssh sur le serveur et on effectue

/chemin/vers/ffserver -f /chemin/vers/ffserver.conf

Ce qui donnera


Fig 1. Lancement de ffserver.

Maintenant, il faut envoyer un flux par ffmpeg

2.c) Lancement d'un flux à streamer par ffmpeg vers le serveur

Dans un autre terminal, on se connecte par ssh et on effectue la command suivante

/chemin/vers/ffmeg/ffmeg -i fichier_video_a_streamer http://localhost:8090/feed1.ffm

Soit par exemple l'image suivante


Fig 2. Proposition de flux par ffmpeg à ffserver.

Dans le terminal de ffervser, on vérifie qu'on a bien reçu le flux


Fig 3. Réception de fflux de ffmpeg par ffserver.

Côté client à Antibes.

Mon IP ayant été spécifiée comme recevable dans le fichier de configuration, je peux donc essayer d'interroger le flux par mplayer ou VLC en faisant

mplayer http://www.davidgis.fr:8090/test.swf

Et oh miracle de la sainte-linux


Fig 4. Réception du film.

lundi 2 février 2009

[FFmpeg] Nouvelle version en full static pour Ubuntu.

Voici ma nouvelle version de ffmpeg compilée en full static avec les supports pour libdirac et libschroedinger. Les compilations proviennent du full checkout SVN de FFMPEG d'aujourd'hui 2009-02-02

1. Téléchargement

Pour le téléchargement, il est possible de récupérer le binaire à http://www.davidgis.fr/download/ffmpeg-fullstatic-svnr16921.tar.bz2

ll a été compilé sur mon serveur Ubuntu Studio sous Feisty/Gusty. Un petit téléchargement par wget nous fournit les renseignements suivants ainsi que les dépendances


Fig 1.Configuration pour ffmpeg.


Fig 2.Dépendances du binaire.

2. Configuration

Le web regorge des diverses façons de compiler les dépendances. Je noterais ici juste les deux options qui me semblent utiles

  1. La ligne du configure:

    ./configure  --enable-gpl --enable-pthreads --enable-libgsm \
    --enable-debug --enable-static --disable-shared --enable-libmp3lame \
    --enable-libfaac --enable-libfaad --enable-swscale --enable-libtheora\
     --enable-libvorbis --enable-zlib --enable-bzlib --enable-libx264 --enable-libxvid \
    --enable-libamr-nb --enable-libamr-wb --enable-nonfree --prefix=/opt/ffmpeg-svn-static\
     --enable-avfilter --enable-libdc1394 --enable-libnut --enable-libschroedinger --disable-vhook \
    --enable-libdirac
  2. La modification du fichier config.mak (ligne EXTRALIBS)

  3. EXTRALIBS=/usr/lib/libz.a -pthread /usr/lib/libbz2.a /usr/lib/libm.a /usr/local/lib/libamrnb.a /usr/lib/libm.a /usr/local/lib/libamrwb.a\
     /usr/lib/libm.a /usr/local/lib/libdirac_decoder.a /usr/local/lib/libdirac_encoder.a /usr/lib/libstdc++.so.6 /usr/lib/libfaac.a \
    /usr/lib/libfaad.a /usr/lib/libgsm.a /usr/local/lib/libmp3lame.a /usr/lib/libm.a /usr/local/lib/libnut.a /usr/lib/libm.a /usr/lib/librt.a \
    /usr/lib/libtheora.a /usr/lib/libogg.a /usr/lib/libvorbisenc.a /usr/lib/libvorbis.a /usr/lib/libogg.a /usr/local/lib/libx264.a /usr/lib/libm.a \
    /usr/local/lib/libxvidcore.a /usr/lib/libdc1394_control.a /usr/lib/libraw1394.a -ldl -ldl /usr/local/lib/libschroedinger-1.0.a -pthread \
    /usr/local/lib/liboil-0.3.a /usr/lib/libm.a /usr/lib/librt.a
    
  4. Ensuite comme toujours

    make
    make install

[Fedora 8/AMD64] Installation du lecteur Flash pour FireFox 2.0.0

Il suffit de faire

rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
mkdir -p /usr/lib/mozilla/plugins
yum install flash-plugin
yum remove nspluginwrapper-0.9.91.5-18.fc8
yum install nspluginwrapper-0.9.91.5-18.fc8
mozilla-plugin-config -i -g -v

source: http://fedoraforum.org/forum/showthread.php?t=170472