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 >

lundi 13 avril 2009

[FlowPlayer] Ajouter le bouton "Play" sur le splash image

Les utilisateurs de FlowPlayer savent que parfois, le splash screen et le bouton play pour des raisons de commodités sont souvent séparés. Ceci requiert donc de gérer dans son code html/css, deux images: le slash qui est sur le vidéo avant son lancement et le bouton play....

Il y a plusieurs moyens de fusionner les deux images. Ici je propose de le faire en une seule passe et en utilisant ffmpeg puisque c'est l'outil par excellence avec mencoder pour convertir en mp4 ou flv.

Quand on dispose de FlowPlayer, on a souvent un plash screen comme ci-dessous.


Fig 1 - Exemple de splash d'origine pour lecture

Pour information cette image a été générée grâce à la commande suivante utilisant ffmpeg

ffmpeg -y -i simba-200904092315.mp4 -an -ss 00:00:14.35 -r 1 -vframes 1 -f mjpeg  simba-200904092315-withoutplay.png

J'ai donc ici extraite l'image située au bout de 14 secondes et 35 centièmes depuis le début de la vidéo...

Maintenant on souhaite incorporer le bouton suivant


Fig 2 - Bouton à incorporer à l'image (Fig 1)

Cette image est issue du site de flowpayer disponible à http://flowplayer.org/img/player/btn/play_text.png. C'est sûrement pas moi avec mes talents de graphiste qui réussirait à la faire ...

Si on dispose d'une version de ffmpeg où vhook est disponbile - option --enable-vhook - il suffira alors de faire

ffmpeg -y -i simba-200904092315.mp4 -an -ss 00:00:14.35 -r 1 -vframes 1 -f mjpeg  \
-vhook '/usr/lib/vhook/imlib2.so -x W/2-52  -y H/2-20  -i /root/play_text.png' simba-200904092315-withplay.png 

On obtient alors l'image suivante:


Fig 3 - Injection du bouton dans l'image

En fait tout tient dans -vhook '/usr/lib/vhook/imlib2.so -x W/2-52 -y H/2-20 -i /root/play_text.png'. Décortiquons ces options:

  • -vhook: ffmpeg sait qu'il va devoir utiliser ce flag qui permetd'ajouter soit du texte ou une image à une vidéo. Chaque possibilité est liée à une librairie de vhook en particulier: drawtext.so, imblib2.so etc....Tout tient dans -vhook '..... .....'
  • imlib2.so: ici c'est une image que je veux incorporer donc je précise que c'est cette librairie que je dois utiliser. Par défaut il faut passer le chemin d'accès complet à la librairie d'où /usr/lib/vhook/imlib2.so

Il faut maintenant positionner mon image. Je dois donc préciser les coordonnées sur l'image. C'est ce que je fais en utilisant les flags -x ??? et -y ???

Comme je veux centrer mon bouton "play", je dois commencer par connaître ses dimensions. C'est ce que j'obtiens en faisant

root@olivia:/var/www/download# imgsize play_text.png 
width="104" height="40"

Mon bouton play a donc les dimensions 104x40

Dans la portion de code "-x W/2-52 -y H/2-20 -i ....png", on a donc

  • -x W/2-52: avec
    • -x: position en x
    • W: correspond à Width (longueur) de l'image. C'est une option de vhook par défaut pour désigner la longueur de l'image.
    52: c'est simplement 104/2

Il sera aussi pour -y H/2-20 avec H désignant Height la hauteur de mon image et 20=40/2

Quant à "-i ...png", c'est l'image que je souhaite incorporer.

samedi 11 avril 2009

Antibes: 1 an deux mois et une semaine déjà!

Aujourd'hui celà fait exactement la durée précisée dans le titre que je suis sur Antibes. Le temps passe excessivement vite! J'ai encore l'impression que c'était hier que je suis arrivé sur cette Région....

Mon dernier séjour sur Montpellier - une semaine de vacances en mars dernier -, j'avais bien vu que la Région du Languedoc-Roussillon m'avait un peu manqué...J'ai vu deux couples d'amis avec qui j'ai passé de bons moments...

De mon séjour, je suis revenu avec mon chat Simba...Au moins une bonne chose. Au moment où j'écris ce billet, il est confortablement assis sur le fauteuil juste à côté de moi, en train de se reposer.

Curieusement je suis reparti tout content. Au fond de moi, actuellement j'ai bien conscience que ma vie sur le Languedoc est terminée. Je passerais je pense à 'occasion les voir, histoire de prendre de leurs nouvelles.

La page de ma vie là-bas à Montpellier est terminée depuis longtemps. Il y a une semaine, j'avais posé une journée de repos au boulot. En effet, j'avais des obligations à tenir sur Avignon car je devais m'y rendre....C'était une sensation assez étrange en arrivant à la gare: l'impression d'être entre deux mondes: le Languedoc d'un côté et la côte d'azur de l'autre. Une impression d'être entre deux mondes qui n'a duré que quelques minutes, impression vite estompée..

Le fait de voir des voitures immatriculées en 30, je me suis dit "A tiens! Je ne suis pas trop loin de Nîmes"...Etant posé sur un banc à l'entrée de la gare, je regardais les gens passer. Là j'ai bien reconnu quelques dames dirons-nous assez bourges et plus que bien vêtus. Là j'ai pensé côte d'azur!!!!

Une fois mon sandwich avalé, j'ai pris un taxi pour aller à mon RDV! Ayant prévu le coup, j'avais retiré suffisament pour payer le taxi...Le chauffeur m'a fait halluciner quand il m'a dit que la course me ferait 8€00......8€00!!! Moi qui m'attendait à vraiment beaucoup plus!!! Il m'a en fait expliqué que tous les chauffeurs appliquaient ce tarif dans le secteur autour de la gare car ils ont beaucoup de clients qui prennent le train puis le taxi pour aller au travail...Ce sont surtour des habitués!!! Donc depuis des années, ils se sont mis d'accord chauffeurs et clients pour ce tarif!!! Très bon système!!!

Tout le long de la course, j'ai donc discuté des prix appliqués sur les choses de la vie de tous les jours à Avignong et de ceux appliqués sur la côte...Hallucinant!!! J'en revenais pas!!! Le chauffeur a réitéré deux fois sa question en me demandant le prix d'un simple whisky coca dans les commerces touristiques de la côte!!! Il en revenait pas à son tour...

Je suis finalement arrivé à mon RDV...Une fois mon RDV terminé, je suis retourné à la gare où on 'a déposé. Dans la gare, en attendant le train, je me disais que j'avais déjà été à Avignon, il y a déjà plus de trois juste pour 3 jours, histoire de donner une formation en informatique à l'époque. C'est vrai que la ville est assez accueillante. J'en avais profité pour voir le festival. C'est d'ailleurs sur Avignon que j'ai fait mon premier billet sur le blog.

Passant complètement du coq à l'âne, ce week-end de Pâques de trois jours tombe bien. Ce sera l'occasion de faire un peu de rangement administratif

vendredi 10 avril 2009

[Lighttpd 1.4.20] Script pour démarrer/arrêter/redémarrer

Il existe un script depuis les sources de lighttpd pour l'installer en tant que service. Le script en question est lighttpd-1.4.20/doc/rc.lighttpd qu'il faut adapter à ses propres besoins.

Personellement, je me suis fait ce petit script shell tout simple

root@olivia:~# cat lighttpd-manager.sh 
# lighttpd version
VERSION="1.4.20";

LIGHTTPD_ROOT_PATH="/opt/lighttpd-${VERSION}";
LIGHTTPD_CONFILE="${LIGHTTPD_ROOT_PATH}/conf/lighttpd.conf";

test -f ${LIGHTTPD_CONFILE} || { echo "can not find '${LIGHTTPD_CONFILE}'";exit 1;} 

PATH=${LIGHTTPD_ROOT_PATH}/sbin:${PATH};

function IsRunning(){
	pidof lighttpd > /dev/null;
	return $?;
}

function Msg(){
	echo -ne "\t$1";
}

case $1 in
	"status")
		IsRunning || runResult="not";
		Msg "lighttpd is ${runResult} running\n"; 
		exit 0;
	;;
	"start")
		IsRunning && { Msg "lighttpd is already running...\n"; exit 1;}
		Msg "starting lighttpd...";
		lighttpd -f ${LIGHTTPD_CONFILE};
		sleep 0.5;
		IsRunning && { echo "[OK]";}
		IsRunning || { echo "[KO]";}
	;;
	"stop")
		IsRunning || { Msg "nothing to stop...[KO]";exit 1;}
		IsRunning && { Msg "stopping lighttpd...";killall -9 lighttpd;echo "[OK]"; exit 0;}
		exit 0;
	;;
	"restart")
		Msg "Trying to restart lighttpd...\n";
		IsRunning && { Msg  "stopping lighttpd..."; kill -9 lighttpd;echo "[OK]";sleep 0.5;}
		IsRunning || { Msg "starting lighttpd...";lighttpd -f ${LIGHTTPD_CONFILE};}
		IsRunning && { echo "[OK]";}
		IsRunning || { echo "[KO]";}
	;;
	*)
		echo " (start|stop|restart|status)";
		exit 0;
	;;
esac

On procéde à quelques tests

root@olivia:~# ./lighttpd-manager.sh restart
        Trying to restart lighttpd...
        stopping lighttpd...[OK]
        starting lighttpd...[OK]
root@olivia:~# ./lighttpd-manager.sh stop
        stopping lighttpd...[OK]
root@olivia:~# ./lighttpd-manager.sh restart
        Trying to restart lighttpd...
        starting lighttpd...[OK]
root@olivia:~# ./lighttpd-manager.sh start
        lighttpd is already running...

Petite vidéo de simba en mp4

J'ai profité de la sortie de ffmpeg-0.5 - finalisé le 20090310 -, compilé sur mon serveur pour faire un test avec bibou...

LD_LIBRARY_PATH=/opt/ffmpeg-0.5/lib /opt/ffmpeg-0.5/bin/ffmpeg -y -i simba-200904092315.mov -vcodec libx264 -vpre normal -ar 11025 simba-200904092315.mp4

Comme c'est un fichier .mov - issu de mon appareil numérique -, il faut préciser le flag -ar.

Cliquez sur l'image pour lancer la vidéo