DigitalSpirit / Blog

Une télécommande de poche pour Canon EOS ou Sony Alpha

Voici une petite télécommande de poche qui fait suite à cette précédente version.

Vous trouverez sur la page de l'article dans le wiki les infos pour les connectiques de télécommandes Canon de type jack et Sony Alpha, bien sûr, il doit être possible d'étendre la compatiblité de cette télécommande à d'autres marques, si vous avez l'occasion de tester, n'hésitez pas à faire un retour d'informations...

L'article sur le wiki

Ouvrir l'article

Des USE flags à jour pour votre Gentoo

Utilisateur de Gentoo, il m'arrive fréquemment d'ajouter des USE flags afin de profiter de fonctionnalités supplémentaires pour tel ou tel programme, or, j'installe en général les mêmes applications sur mes machines (pro ou perso), du coup, je me retrouve à installer les mêmes USE flags un peu partout.

Afin d'éviter les erreurs de copie de USE flags et d'être synchro entre mes machines, j'ai créé un outils tout simple permettant de fusionner les USE flags, ce dernier est utilisable en ligne à l'adresse suivante : /lab/misc/merge-use-flags.php

L'utilisation est, me semble-t-il, assez claire, copiez dans les champs les contenus de "USE flag" de vos machines, validez, un nouveau champs apparait alors avec un USE flag correspondant à la fusion des 2 précédents.

Cependant, certain USE flags reste spécifique à certaine architecture, prenez garde de ne pas les mélanger, pour ma part, je procède simplement en séparant d'une ligne vide les USE flags génériques (en vert) de ceux spécifiques au matériel (en rouge) :

USE="
alsa automount avahi
bash-completion bluetooh bzip2
cairo cdaudio cdr code
dbus directfb doc dvb dvd dvdr
exif
fat ffmpeg firefox
gif gimp glitz gnome gstreamer gtk
ipod
jpeg jpeg2k
lame libcaca
matroska mng mp3 mpeg mysql
ogg opengl
pdf png php
quicktime
raw
samba sqlite subversion svg
theora tiff truetype type1
unicode usb
v4l v4l2 vnc vorbis
win32codecs
X
x264 xcb xine xinerama xml xulrunner xvid

mmx sse smp
"

Ce script permet aussi de trier les USE flags et éventuellement des les grouper par critères de tri, pratique pour s'y retrouver facilement dans son make.conf ...

Ouvrir l'article

Manipulez des vidéos en Php avec ffmpeg-php

Le projet ffmpeg-php est, comme son l'indique, une interface Php au projet ffmpeg, une application conçue pour manipuler les flux audios et vidéos et basé sur libavcodec, ce qui lui permet de gérer un grand nombre de format de compression dont : MPEG-1, MPEG-2, MPEG-4 Part 2, H.264, WMV, MJPEG, Theora, FLAC, MP2, MP3, RealAudio 1.0, RealAudio 2.0, Vorbis, Windows Media Audio...
ffmpeg-php est notamment utilisé par Vimeo pour la création des vignettes lors du téléchargement des vidéos, c'est le gage d'une application stable et optimisée.

L'installation

L'installation est très simple puisque c'est une simple extension Php qu'il suffit de déclarer dans le php.ini...

Sous Gentoo, l'installation peut se résumer à cette ligne de commande :

 $ sudo emerge -v ffmpeg-php

Ensuite, il suffit d'éditer le fichier php.ini et de déclarer la nouvelle extension afin que Php la charge au démarrage :

extension=ffmpeg.so

Recharger la configuration de votre serveur web, et voilà, nous sommes prêt à jouer avec ffmpeg-php...

Et maintenant, jouons !

Comme nous l'indique la documentation de l'API, il existe 2 types d'objets avec ffmpeg-php :

  • movie qui est retourné par ffmpeg_movie(), c'est un objet contenant des méthodes permettant d'obtenir tout un tas d'informations sur le fichier courant, c'est la première fonction que nous utiliserons
  • frame renvoyé par getFrame() et getNextKeyFrame(), il s'agit là d'une image fixe extraire du flux vidéo

Commençons par obtenir des informations sur la vidéo :

<?php

$mov = new ffmpeg_movie('/path/to/video.avi');

echo sprintf('<p>Duration : %.1f, bit rate : %d, frame count : %d, video codec : %s, audio codec : %s, audio channel : %s</p>',
$mov->getDuration(),
$mov->getBitRate(),
$mov->getFrameCount(),
$mov->getVideoCodec(),
$mov->getAudioCodec(),
$mov->getAudioChannels());

?>

Qui devait afficher quelque chose comme ceci :

Duration : 18.7, bit rate : 2169054, frame count : 283, video codec : mjpeg, audio codec : pcm_u8, audio channel : 1

Essayons maintenant de lire la frame 23 et de l'envoyer au navigateur :

<?php

// On charge la vidéo
$mov = new ffmpeg_movie('/path/to/video.avi');

// Récupère la frame 23
$frame = $mov->getFrame(23);

// Transforme la frame récupérée au dessus en ressource GD
$img = $frame->toGDImage();

// Envoie l'image au navigateur
header("Content-type: image/jpeg");
imagejpeg($img);

?>

Et voilà, déconcertant de simplicité ! non ?

La suite

Ci-joint, en annexe, un petit bout de code qui vous affichera les informations sur la vidéo, créera 50 miniatures et affichera enfin la vidéo convertie en animation GIF.
Un aperçu du résultat :

ffmpeg-php au boulot

Amusez-vous bien !

Ouvrir l'article

Css3 en action avec Firefox 3.1b1pre

Voici une petite vidéo de ce qu'il sera possible de faire avec les CSS3, et, notamment, les transformations proposés par WebKit et border-image.

Css3 in action with Firefox 3.1b1pre


Css3 in action with Firefox 3.1b1pre from hugo on Vimeo.

Pour le déplacement des post-it, j'ai utilisé jquery-ui, j'aurai tout à fait pû utiliser -moz-transform: translate() mais le but était, évidemment, de montrer quelque chose qu'on a pas l'habitude de voir : la rotation et le redimensionnement d'objet en CSS...

Actuellement, la spécification n'est encore qu'un brouillon (ce qui explique l'utilisation du préfixe "-moz-") mais il existe un comportement, qui me semble gênant, ainsi, si on souhaite appliquer une transformation de type rotation ou redimensionnement, il faut passer par le mot-clef Css -moz-transform, édudiez l'exemple suivant :

p {
-moz-transform: rotate(15deg);
-moz-transform: scale(2);
}

Que va-t-il se passer ?
Les élements paragraphes vont subir une transformation de type scale, c'est tout, pas de rotation, le problème est qu'on ne peut pas, pour le moment, définir une transformation sans modifier les autres, ainsi, si une feuille de style externe veut appliquer une rotation à tous les élements p de la page, elle pourra le faire mais en "écrasant" aussi les autres transformations...cela est tout à fait normal à vrai dire, c'est écrit dans la spécification... 

Ne serait-il pas judicieux de créer des propriétés transform-rotate, transform-scale, transform-skew...?

Ouvrir l'article

Vie de merde dans vos scripts Php ...simplement

Pour afficher aléatoirement les fortunes de Vie de merde en Php de la manière la plus simple qu'il soit, vous pouvez faire comme ci dessous...ou pas...

<?php

header('Content-type: text/html; charset=UTF-8');

$xml = simplexml_load_file('http://api.viedemerde.fr/1.2/view/random?key=readonly');

echo <<<EOD
<html>
<body>
<h1>{$xml->vdms->vdm->categorie}</h1>

<p>
<a href="http://www.viedemerde.fr/{$xml->vdms->vdm['id']}">#</a>
{$xml->vdms->vdm->texte}
</p>
</body>
</html>
EOD;

?>

Voilà, rien de bien sorcier, donc, pas d'explication, vous pouvez retourner à vos occupations, je vais en faire de même !

Ouvrir l'article

« Page 18 / 32 »