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 289 290 291 292 293 >

lundi 2 mars 2009

Baladeur BMP 8807 sous Ubuntu Studio - conversion vidéo

Comme je le mentionnais dans l'un de mes précédents billets concernant ce baladeur pour les conversions vidéos, on peut essayer la ligne de commande suivante employant directement mencoder

http://www.davidgis.fr/download/bmp8807.gif
baladeur BMP 8807
mencoder ${InputFile} -ofps 18 -vf-add scale=220:176, -vf-add expand=220:176:-1:-1:1,rotate=2,flip -srate 44100 -ovc xvid -xvidencopts\

bitrate=1000:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=64 -o ${OutputFile}

Par défaut le logiciel AVI Converter - prévu pour Windows - propose un bitrate à 550. Avec 1000, la qualité est intéressante.

L'écran étant prévu pour 2.0 inches, 220x176 est la meilleure disponibilité d'écran selon la documentation.

Un exemple

[Ffmpeg] Erreur "Audio resampler only works with 16 bits per sample, patch welcome" - version static pour convertir directement de .mov à .flv

Parfois avec mon appareil numérique dont les vidéos sont au format .mov, je suis obligé de faire la conversion suivante pour parvenir au flv

[.mov] -->mencoder-->[.avi]-->ffmpeg-->[.flv]

Tenter de faire la conversion directement à partir de ffmpeg se solde par l'erreur:

Audio resampler only works with 16 bits per sample, patch welcome

Ceci est due à un souci concernant la version de lame. Il faut compiler ffmpeg en prenant la version 3.97 de lame. Ici je vais compiler lame et recompiler ffmpeg sur mon serveur à Montpellier et le rapatrier chez moi à Antibes pour faire des tests.

0. Téléchargement d'une version full static corrigeant le problème

Je dispose maintenant d'une version de ffmpeg qui marche bien qu'on peut télécharger à http://www.davidgis.fr/download/ffmpeg-fullstatic-svn13000.tar.bz2

1. Compilation de lame 3.97

On télécharge, on compile mais pas besoin d'installer

wget http://freefr.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz -O - | tar xzf -
cd lame-3.97
./configure --enable-shared --enable-static
make

PAS DE MAKE INSTALL !!!

2. Compilation de ffmpeg en full static révision 13000

C'est la plus appropriée apparemment selon http://drupal.org/node/364269

On récupère donc la version

svn checkout --revision 13000 svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg-13000

Un petit configure pour la route avec quelques options dont --enable-libmp3lame

./configure --enable-libmp3lame --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-nonfree \
--enable-gpl --enable-static --disable-shared
make

PAS DE MAKE INSTALL !!!

On localise la ligne responsable pour l'édition de liens pour ffmpeg et on fait les remplacement adéquate (sinon on peut aussi modifier la ligne EXTRALIBS=... dans le fichier config.mak

Et une dernière commande pour la route

gcc -L"/mnt/ffmpeg-repository/ffmpeg-13000"/libavdevice -L"/mnt/ffmpeg-repository/ffmpeg-13000"/libavformat \
-L"/mnt/ffmpeg-repository/ffmpeg-13000"/libavcodec -L"/mnt/ffmpeg-repository/ffmpeg-13000"/libavutil -rdynamic\
 -export-dynamic -Wl,--warn-common -Wl,--as-needed -Wl,-rpath-link,"/mnt/ffmpeg-repository/ffmpeg-13000"/libavcodec \
-Wl,-rpath-link,"/mnt/ffmpeg-repository/ffmpeg-13000"/libavformat -Wl,-rpath-link,"/mnt/ffmpeg-repository/ffmpeg-13000"/libavutil \
-Wl,-Bsymbolic -o ffmpeg_g ffmpeg.o cmdutils.o -lavdevice -lavformat -lavcodec -lavutil /usr/lib/libz.a  /usr/lib/libm.a \
 /usr/local/lib/libamrnb.a  /usr/lib/libm.a /usr/local/lib/libamrwb.a  /usr/lib/libm.a /root/lame-3.97/libmp3lame/.libs/libmp3lame.a  /usr/lib/libm.a /usr/local/lib/libxvidcore.a  -ldl -ldl
On vérifie les dépendances
root@olivia:/mnt/ffmpeg-repository/ffmpeg-13000# ldd ffmpeg_g
	linux-gate.so.1 =>  (0xffffe000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7eeb000)
	libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7ed3000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d88000)
	/lib/ld-linux.so.2 (0xb7f0f000)

Bingo !

3. Réception sur Antibe et tests

On rapatrie le binaire tout chaudement compilé o coup de scp et on le teste sur un fichier .mov

./ffmpeg_g -i Desktop/tmp/PICT0952.MOV -acodec libmp3lame -ab 48k -ac 1 -ar 44100 -f flv \
-deinterlace -nr 500 -croptop 4 -cropbottom 4 -cropleft 8 -cropright 8  -aspect 4:3 -r 25 -b 270k \
-me_range 25 -i_qfactor 0.71 -g 500 Desktop/tmp/denise-bmp8807.flv

Nickel on a le son et la vidéo!

dimanche 1 mars 2009

Premier week-end de mars: PgRouting/Vidéos de Denise Milanie/Converson vidéo sous GNU/Linux pour le baladeur BMP8807...en moins de 48H00

Ce week-end j'avais prévu de sortir faire un tour mais finalement, j'ai laissé tomber....Ou konné le gar commen i lé! Y di un z'affair aprè seulement i fé pas.... J'ai finalement passé mon week-end à faire

Vendredi soir: PgRouting Tests d'OpenStreetMap sur les données de la ville d'Antibes/Sophia Antipolis

A la sortie du travail vendredi soir après une semaine assez costaud , j'ai déposé un collègue puis direction Juan-Les-Pins au Crystal, histoire de prendre un verre. J'ai donc pris un whisky-coca, ai mangé une omellettre garnie sur place, salué le barman Mika, puis je suis rentré...Comme tous les soirs ces temps-ci, je n'ai pas tenu longtemps, assez épuisé. J'ai regardé la télé puis direction le portable pour tenter de faire correspondre mes test de PgRouting actuels avec les travaux de du tutorial de CampToCamp/PgRouting du FOSS4G2007 sur les données du réseau routier d'Antibes pris depuis le site d'OpenStreetMap. Rien de compliqué en soit

Remarque au passage concernant l'option enable-debug: Une des options qui me paraît actuellement intéressante dans PostGIS est l'option enable-debug pour les développeurs notamment en jouant avec la fonction de support LWDEBUGF(.....) mais je déconseille de la jouer sur des tests mettant en jeu de gros jeux de données car plus elle est utilisée et plus les logs seront bavard. A utiliser avec soin et modération car elle est très utilsée. Mais bon sur une simple requête cela montre tout le mécanisme mis en place pour effectuer une simple requête spatiale...

  1. Récupération des données! Il faut d'abord se rendre sur le site d'OpenStreetMap pour récupérer les données (à exporter en cliquant sur export). On récupère ainsi un fichier au format .osm. Pour moi, il s'agit ici du fichier antibes.osm pesant 6,5Mo.

  2. Ayant effectué mes tests pour PostgreSQl 8.3.6 et PostGIS 1.4.0 SVN, il faut maintenant créer la base. Je commence donc par lancer mon serveur en configurant mes variables

    export PATH=/opt/pgsql/bin/:$PATH
    export PGPORT=5433 PGDATA=/opt/pgdata/
    export LD_LIBRARY_PATH=/opt/pgsql/lib/:$LD_LIBRARY_PATH
    

    Ensuite on crée sa base comme d'habitude

    createdb antibes
    createlang plpgsql antibes;
    psql -d antibes -f /opt/pgsql/share/contrib/postgis.sql 
    psql -d antibes -f /opt/pgsql/share/contrib/spatial_ref_sys.sql 
    psql -d antibes -f /opt/pgsql/share/contrib/routing_core.sql 
    psql -d antibes -f /opt/pgsql/share/contrib/routing_core_wrappers.sql
    psql -d antibes -f /opt/pgsql/share/contrib/routing_topology.sql 
  3. Pour importer les données du fichier antibes.osm, il faut utiliser le binaire osm2pgrouting comme proposé et documenté à http://pgrouting.postlbs.org/wiki/tools/osm2pgrouting. Comme toujours pour la compilation configure && make.Une fois compilé, on fait

    osm2pgrouting -file /home/user/postgres/antibes.osm -port 5433 -user postgres  -dbname antibes -conf mapconfig.xml -clean

Ensuite il s'agit de télécharger le fichier http://pgrouting.postlbs.org/attachment/wiki/WorkshopFOSS4G2007/foss4g_w12.tar.gz. Ensuite

  • On le décompresse sur le serveur Web.
  • On s'assure d'avoir une clé pour Google Maps (facile à obtenir donc pas détaillé ici ....) puis la remplacer comme il se doit dans le fichier foss4g_w12/index.html à la ligne
    <script src="http://maps.google.com/maps?file=api&v=2&key=....>
  • Il faut maintenant effectuer quelques requêtes SQL pour la suite:
    • extent de la carte et mise à jour du srid. Les données issues de OpenStreetMap étant dans le système de projection habituelle WGS 84 donc srid=4326, on effectue
      select updategeometrysrid('ways','the_geom',4326);
      Ici la tables ways est une table crée par osm2pgrouting contenant le réseau routier.
    • Ajout dans spatial_ref_sys pour sird=54004Foss4g_w12 travaille pour srid=54004. Comme j'ai la flemme de faire une projection de mes données (coût relativement peu important car j'ai peu de données pour des reprojection à la volée par rapport à ma quantité de données estimées à moins de 6000 tuples pour le réseau routier), il faut ajouter l'entrée correspondant à srid=54004 dans la table spatial_ref_sys.
      INSERT INTO spatial_ref_sys VALUES (
      54004,
       'spatialreference.org', 
      54004, 'PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_1SP"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",0],UNIT["Meter",1],AUTHORITY["EPSG","54004"]]', '+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ');
    • Modifications des fichiersDeux fichiers doivent maintenant être modifiés: foss4g_w12/index.html et foss4g_w12/ax_routing.php
      • Pour foss4g_w12/index.html, il faut exécuter la requête
        select astext(extent(transform(the_geom,54004))) from ways;
        ce qui donnera un truc du style
        POLYGON((XXXXXXXXXXXXXXXXXXXXXX))
        Dans le fichier foss4g_w12/index.html, ilf faut repérer les lignes - il y en a deux -
        new OpenLayers.Bounds (YYYYYYYYYYYYYYYYYY)
        et remplacer YYYYYYYYYYYYYYYYYY par XXXXXXXXXXXXXXXXXXXXXX Puis excécutez la requpête
         select astext(transform(setsrid(extent(the_geom),4326),54004)) from ways ;
        qui donnera par exemple chez moi
        POLYGON((773661.893696331 5366204.60480585,773661.893696331 5384242.9623652,796235.71215592 5384242.9623652,796235.71215592 5366204.60480585,773661.893696331 5366204.60480585))
        toujours dans le même fichier, il suffit à la ligne
        var wkt = "POLYGON((...))"
        par le résultat de la précédente requête. Ceci donnera donc le carré rouge de la fig 1 (voir plus bas).

        Fig 1 - Visualisation Antibes / Sophia Antipolis
      • Pour foss4g_w12/ax_routing.php, commencez par remplacer les paramètres de connexion du serveur par vos propres motifs de connexion. J'ai juste effectuer mes modifs pour la fonctionnalité shortes_path_shootingstar()
      • ...
         // Connect to database
            $con = pg_connect("dbname=".PG_DB." host=".PG_HOST." user=".PG_USER." port=".PG_PORT);
            
            $sql = "SELECT gid, source, target, the_geom, 
                                 distance(the_geom, Transform(GeometryFromText('POINT(".$lonlat[0]." ".$lonlat[1].")', 54004),4326)) AS dist 
                    FROM ".TABLE."  
                    WHERE the_geom && Transform(setsrid(
                          'BOX3D(".($lonlat[0]-20)." 
                                 ".($lonlat[1]-20).", 
                                 ".($lonlat[0]+20)." 
                                 ".($lonlat[1]+20).")'::box3d, 54004),4326) 
                    ORDER BY dist LIMIT 1";
        
        .....
        puis
        ....
        case 'SPS':
              $sql = "SELECT rt.edge_id as gid, AsText(Transform(".TABLE.".the_geom,54004)) AS wkt,
                             length(".TABLE.".the_geom) AS length, ".TABLE.".gid
                          FROM ".TABLE.",
                              (SELECT edge_id
                                  FROM shortest_path_shooting_star(
                                      'SELECT gid as id,source,target,length as cost,reverse_cost,x1,y1,x2,y2,rule,to_cost from ".TABLE."' ,
                                      ".$startEdge['gid'].",
                                      ".$endEdge['gid'].", true, true)
                               ) as rt
                          WHERE ".TABLE.".gid=rt.edge_id;";
        break;
        

Pour se faire, il fallait juste ajouter le correspondance pour srid=54004 dans la table spatial_ref_sys et modifier certains fichiers en ayant recours à la fonctionnalité Transform(). Pendant que je faisais mes tests, mon petit serveur à Montpellier en profitait pour me rapatrier de bonnes données de Denise Milani.

Pour la suite comme tout est en SVG, il faut disposer du navigateur Opera par exemple qui s'apprête parfaitement pour la situation




Fig 2 - Test des données pour aller de chez moi à Carrefour. J'me disais bien qu'il y avait un autre chemin.

Fig 3 - Test des données pour aller du taf à Garbejaire...Très important, le jeud soir notamment pour se détendre !

Samedi midi: Vidéos de Denise Milani

Mes données sur Denise Milani ayant été rapatriées à mon réveil samedi matin, j'en ai profité pour faire quelques conversions en utilisant ma petite compil' perso de ffmpeg avant de partie en direction de Carrefour!

Quelques vidéos de Denise Milani...

Ce qui a de bien avec elle, c'est qu'elle ne fait pas dans le vulgaire. Très beau mannequin de charme connue sur le Web! Le lecteur Flash possède 6 vidéos de la splendide demoiselle.

  1. Pour le fichier torrent http://torrents.thepiratebay.org/3961052/Denise.Milani_6.HD.Videos_HOT.Bikini.Model.3961052.TPB.torrent

    Si on veut un client torrent disponible depuis le shell, il y a bien sûr ce bon vieux rtorrent. Pour l'utiliation, il y a la doc disponible sur le site de ubuntu-fr pour rtorrent. Pour les habitués de la compilation sous Ubuntu, on peut aussi essayer cet article que j'ai publié pour la compilation de rtorrent

  2. Pour la conversion en flv en utilisant ffmpeg/flvtool.

    On peut télécharger ma version statique de ffmpeg qui contient les dépendances nécessaires (donc rien à installer quasiment)

    Le torrent propose des films au format .wmv et .mov. On se contentera donc de faire une boucle sur *v pour la conversion comme suit.

    for input in *v;
    do 
    output=${input%.*};
    ffmpeg -i ${input} -y -b 450k  -s 320x240 -acodec libmp3lame -ar 11025 -ab 92k -f flv - | \
    flvtool2 -U stdin ${output}.flv;done
  3. Pour le lecteur Fash:

    Il faut se rendre à http://flv-player.net/players/multi/generator/ pour générer sa playlist et faire un simple copier-coller comme proposer sur le site...

Samedi après-midi et soir: achat du baladeur

J'étais spécialement passé à Carrefour pour me prendre un petit baladeur mp3/mp4.

Sur le Web, je mettais renseigné pour voir la compatibilité et le nécessaire pour faire fonctionner un ipod avec Ubuntu. Juste par curiosité et en dépit des prix affichés sur le Web, je suis donc allé à Carrefour pour voir le prix...Comme on dit quand, j'ai vu les prix, j'ai fait demi-tour...

Oté créole!!!.........le z'affair l" pas doné!!! Un z'affair pareil juste pour 2 Go à un prix pareil...Houla! Finalement je me suis laissé tenter par le petit baladeur - qui était juste à côté de marque Carrefour -. Je n'ai pas regretté mon investissement de 50€, comparé à 200~400 €. Oté...Faut aimé comme i dit...


Fig 4 - Baladeur BMP 8807

Pour la route au retour, je me suis pris deux pains bagnats. Rentré à la case, j'ai donc mangé puis me suis mis sur ma nouvelle acquisition...Déjà la conversion vidéo n'a pas été des plus aisée au début. Finalement, j'ai réussi à trouver la ligne de commande depuis mencoder pour réussir à faire la conversion...La ligne suivante donne de bons résultats

mencoder ${InputFile} -ofps 18 -vf-add scale=220:176, -vf-add expand=220:176:-1:-1:1,rotate=2,flip -srate 44100 -ovc xvid -xvidencopts\

bitrate=1000:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=64 -o ${OutputFile}

Comme tous les samedis soirs ces temps-ci, j'ai finalement retrouvé cette ligne en me rappelant que comme le baladeur est livré avec AVI Converter, ce dernier n'est qu'un simple Front-End pour Mencoder. Il a donc suffit d'ouvrir le fichier converter.ini qui l'accompagnait pour trouver la bonne ligne...J'ai opté pour unbitrate =1000 pour une meilleur qualité d'image en dépit du poids alourdi des vidéos.

Dimanche: carry lapin et rédaction du billet

Dimanche vers 14h00, je me suis cuisiné un petit carry lapin, accompagné de lentilles et de blé...J'en ai aussi profité pour faire mes conversions et déposer mes mp3 sur mon nouveau joujou.

J'ai aussi profité de ma soirée pour rédiger cet énorme billet et recompiler ffmpeg pour trouver un moyen pour conversion de .mov vers .flv directement sans passer par mencoder.

samedi 28 février 2009

[FFMPEG/Flvtool2]Vidéos de Denise Milani

Quelques vidéos de Denise Milani...

Ce qui a de bien avec elle, c'est qu'elle ne fait pas dans le vulgaire. Très beau mannequin de charme connue sur le Web! Le lecteur Flash possède 6 vidéos de la splendide demoiselle.

  1. Pour le fichier torrent http://torrents.thepiratebay.org/3961052/Denise.Milani_6.HD.Videos_HOT.Bikini.Model.3961052.TPB.torrent

    Si on veut un client torrent disponible depuis le shell, il y a bien sûr ce bon vieux rtorrent. Pour l'utiliation, il y a la doc disponible sur le site de ubuntu-fr pour rtorrent. Pour les habitués de la compilation sous Ubuntu, on peut aussi essayer cet article que j'ai publié pour la compilation de rtorrent

  2. Pour la conversion en flv en utilisant ffmpeg/flvtool.

    On peut télécharger ma version statique de ffmpeg qui contient les dépendances nécessaires (donc rien à installer quasiment)

    Le torrent propose des films au format .wmv et .mov. On se contentera donc de faire une boucle sur *v pour la conversion comme suit.

    for input in *v;
    do 
    output=${input%.*};
    ffmpeg -i ${input} -y -b 450k  -s 320x240 -acodec libmp3lame -ar 11025 -ab 92k -f flv - | \
    flvtool2 -U stdin ${output}.flv;done
  3. Pour le lecteur Fash:

    Il faut se rendre à http://flv-player.net/players/multi/generator/ pour générer sa playlist et faire un simple copier-coller comme proposer sur le site...