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 288 >

lundi 16 février 2009

[FFMPEG/VLC] Streaming en Flash pour le multiposte de Free ou une vidéo vers internet

Il est possible de combiner VLC et ffmpeg pour faire du streaming en Flash si on dispose d'une FreeBox. Pour l'exemple fourni ici la vidéo sera de qualité très moyenne afin de ne pas trop pénaliser mon petit serveur. J'ai donc ici l'occasion de tester mes deux outils préférés pour le multimédia . C'est bien pratique car ma Freebox V4 - qui date un peu- est à Montpellier et moi à Antibes .

1. Illustration


Fig 0 - Configuration pour le streaming


Fig 1 - côté serveur à Montpellier: VLC en cours sur la playlist.


Fig 2 - côté client à Antibes: Réception du flux au format FLV


Fig 3 - côté client à Antibes: La sortie du script php en FLV s'intègre parfaitement à un lecteur Flash

2. Intégration depuis le Web à un lecteur Flash

Le couple VLC/Ffmpeg est donc utilisé ici. Dans les lignes de commandes suivantes, [PORT] désigne le port de sortie.

  1. vlc

    VLC est utilisé en premier. Suite à des crashs remontés par les users de VLC version 0.9.8a sur le forum pour le h264, je teste moi-aussi cet encodage afin de vérifier combien de temps, on peut le faire tourner. J'ai choisi l'option dummy au lieu de ncurses afin de mieux tracer les divers messages. J'ai pris une chaîne au hasard du bouquet du multiposte pour faire mes tests.

    /opt/vlc-0.9.8a/bin/vlc 'rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=372&flavour=sd' \
    --sout '#transcode{vcodec=h264,vb=192,acodec=mpga,ab=32,channels=1,samplerate=48000,width=320,height=240,deinterlace}:standard{mux=ts,dst=0.0.0.0:[PORT]/stream.ts,access=http}' -vvv -I dummy --interact

    Ceux qui sont sous VLC 0.8.6 préfèront plutôt directement d'utiliser ncurses qui s'intègre parfaitment en optant par exemple pour

    vlc 'playlist.m3u' \
    --sout '#transcode{vcodec=mp2v,vb=384,acodec=mpga,ab=32,channels=1,samplerate=48000,width=320,height=240,deinterlace}:\
    standard{mux=ts,dst=0.0.0.0:[PORT]/stream.ts,access=http}'  -I ncurses 2> /dev/null
  2. php script avec ffmpeg

    L'option "-" redirige le flux en direct comme la redirection vers un fichier pour le stdout du shell. L'idée ici consiste à utiliser Php afin de faire appel à ffmpeg à partir de la fonction system(). Ffmpeg se charge donc de vers la conversion du flux de la chaine. Le script php est donc à déposer sur votre serveur Web.

    <?php
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
    system("ffmpeg -i http://votre.host:[PORT]/stream.ts -acodec libmp3lame -b 300k -s 320x240 -ab 36k -ar 11025 -y  -f flv -");
    ?>:
  3. le lecteur Flash

    Le lecteur Flv-Player disponible à http://flv-player.net/ fera parfaitement l'affaire...C'est la variable suivante qu'il faut préciser par rapport à votre script php

        <param name='FlashVars' value='flv=http://votre.host/votre_script.php&width=...&height=....&...

    L"intégralité du code à insérer dans une page Web serait donc

    <object type='application/x-shockwave-flash' data='http://mon.site.perso/player_flv_maxi.swf' width='368' height='288'>
        <param name='movie' value='http://mon.site.perso/player_flv_maxi.swf' />
        <param name='allowFullScreen' value='true' />
        <param name='FlashVars' value='flv=http://mon.site.perso/mon_script.php&width=320&height=240&autoplay=0&showstop=1&showvolume=1&showtime=1&showloading=always&showfullscreen=1&shows
    witchsubtitles=1&showiconplay=1&iconplaybgalpha=100' />
    </object>

    Ce lecteur est très sympathique car il propose un générateur pour le reste. Il suffit pour celà de se balader sur le site de flv-player pour accéder au générateur.

Source: http://forum.videolan.org/viewtopic.php?f=4&t=55069

dimanche 15 février 2009

Petit week-end ensoleillé sur Antibes et nouvelles de la Réunion...

Enfin un week-end entient en compagnie du soleil :) aussi bien samedi que dimanche.

Samedi au levé, ça a été repasage et repassage puis petite sieste de deux bonnes heures avant d'aller faire les courses!

Ca a été un vrai plaisir que de rouler simplement même en allant faire les courses samedi que de croiser du soleil!...en fin d'après-midi, j'ai donc fais les courses. Au menu samedi soir, quelques manchons de poulet façon réunionnaise comme toujours, du riz et des lentilles. Un vrai régal devant le journal de 20h00 ....

Comme il n'y avait rien d'intéressant à la télévision - comme d'habitude ces temps-ci -, j'ai donc passé toute ma soirée à tester diverses versions de VLC...

Vendredi au suivi de la branch 0.9.X de VLC, j'essayais de comprendre

  1. Pourquoi on ne pouvait plus utiliser VLC en tant qu'utilisateur root? J'ai finalement compris que c'était l'option --enable_as_root qui me manquait. Je n'ai pas suivi le développement de la branche 0.9 depuis le début. Cette option est donc nouvelle pour cette branche.
  2. Quelle était l'option qui me manquait pour avoir ncurses pour gérer VLC? Bien sûr, il s'agissait là-aussi de l'option --enable-ncurses
  3. Quelles sont les erreurs qui font coredumper h264/aac quand on fait du streaming ou bien lorsqu'on change de piste sur une playlist...?

J'ai donc passé toute ma soirée de samedi -comme lors du bon vieux temps en 2003/2005 à compiler VLC...

Dimanche, il faisait aussi bien beau. Ma mama m'a appelé samedi pour me faire donner des nouvelles de la famille et le point sur la Réunion actuellement..On a beau en parlé à la télévision de la contagion qui s'étend dans tous les DOM mais sincèrement je trouve que les infos sont vraiment maquillés comme il faut :(

De toute façon lo band' politik cé rien qu'in band' voler comme di progression dans son sanson "Ker maléré.".. Arrêt' un pé zoué som' nou lé gars...Ecoute un pé zot band' paroles avant fer zot ' band' conn'ri

Poukwé???
Néna domoun' y comprend pas

Poukwé?
Ti dépense tout' ton l'arzen?

Poukwé?
Ti donne a moin bompé souci?

Poukwé?
Néna domoun' lo ker maléré

La pa bezoin fé sa!!!
Néna domoun' y comprend pas
Zot lé né sous la coupe lo diab'
Et tous les dimanses i ca va la messe

La pa bezoin fé sa!!!
Néna domoun' y comprend pas
Zot lé né sous la coupe lo diab'
Et lé septième zour li lé croyant'
Sérieux té arrêt déconné dont :)

N'ayant plus de cigarettes vers 17h00, j'ai pris la voiture et direction le tabac à côté du Casinon de Juan-Les-Pins. Il a fallut me garer un peu loin car comme il faisait beau, il y avait du monde. Ainsi pas de place à proximité pour se garer...

Au crystal, j'ai croisé une connaissance. Juste le temps de parler un peu et je suis rentré à la maison. Ce soir je termine mes investigations sur VLC en attendant de réattaquer la semaine lundi.

samedi 14 février 2009

[VLC 0.9.8.a] Erreur x264.c:1127: erreur: ‘struct <anonymous>’ has no member named ‘i_direct_8x8_inference’ - Résolu

Par rapport à un de mes précédents billets sur cette erreur, si on doit tout refaire depuis le début, il faudra jouer les commandes suivantes

wget "http://download.videolan.org/pub/videolan/vlc/0.9.8a/vlc-0.9.8a.tar.bz2" -O - | tar xjf -
cd vlc-0.9.8a
wget --no-check-certificate "https://trac.videolan.org/vlc/attachment/ticket/2431/x264.patch?format=raw" -O x264.patch
patch -p1 < x264.patch

Ce qui est beaucoup plus propre , il faut le noter !

vendredi 13 février 2009

[PostgreSQL] Connaître les colonnes d'un table et leur ordre

J'ai une table qui 'appelle wr. Comme elle est déjà dans le schéma public, je ne ferais donc pas de discrimination sur le nom du schéma. On aura donc

routing_db=# select a.attname,a.attnum from pg_attribute a  join pg_class b on (a.attrelid=b.relfilenode)  
where b.relname ='wr' and a.attnum>0
  attname   | attnum 
------------+--------
 gid        |      1
 source     |      2
 target     |      3
 cost       |      4
 reverse_co |      5
 to_cost    |      6
 x1         |      7
 y1         |      8
 x2         |      9
 y2         |     10
 rule       |     11
 the_geom   |     12
(12 lignes)