Le format de fichiers JPEG est généralement associé aux images, mais saviez-vous qu’un fichier JPEG peut contenir de l’audio ?
Il faut expliquer un point pour commencer : il y a le JPEG (la méthode employée pour compresser les images) et le format de fichiers JPEG, qui définit comment sont enregistrées les données. On peut mettre des images en JPEG dans d’autres conteneurs, comme des MP3, de la vidéo, etc. Un exemple dont j’ai déjà parlé est le FlashPix. Et dans un fichier JPEG (le conteneur), on peut mettre des métadonnées, comme une miniature, des informations sur l’image, une position GPS, etc. Le format de métadonnées le plus connu est l’Exif, et il peut aussi contenir de l’audio.
En lisant un sujet sur un blog sympa quand on aime les trucs atypiques, j’ai découvert que certains appareils photo permettaient d’enregistrer de l’audio, par exemple pour des commentaires. Et l’appareil photo sur lequel j’avais joué à Doom est justement compatible.
Enregistrer du son
Le fonctionnement est un peu particulier, parce qu’il faut être rapide. Un point physique, d’abord : il y a un bouton dédié pour enregistrer les commentaires, mais il est à côté de l’écran alors que le microphone est à l’avant, ce qui est moyennement pratique pour des commentaires. D’un point de vue pratique, il faut presser le bouton pendant que la photo est prévisualisée… et par défaut vous n’avez que trois secondes. Heureusement, il est possible de modifier le temps de prévisualisation dans Menu -> Préférences -> Affichage -> Affich. immédiat.
Pour tester, j’ai juste pris quelques photos et enregistré ma voix et de la musique. L’appareil peut enregistrer un commentaire de 45 secondes au maximum, et il s’arrête automatiquement après cette durée. L’appareil enregistre visiblement dans sa RAM : quand on coupe l’enregistrement (ou après 45 secondes), on voit qu’il écrit sur la carte mémoire.
Récupérer le son
Par défaut, la présence de l’audio n’est pas réellement visible. Les fichiers JPEG sont un peu plus lourds que d’habitude, mais c’est assez peu visibles : même en enregistrant 45 secondes, la partie audio ne pèse que 250 ko environ, quand l’image dépasse 1 Mo avec l’appareil photo. macOS n’indique pas la présence de l’audio dans Aperçu, et même un outil comme GraphicConverter ne montre pas la présence de l’audio au premier abord. On peut le voir avec les informations fournies par exiftool, qui peut aussi être installé en ligne de commande.
Pour extraire l’audio, il faut passer en ligne de commande. Avec exiftool, la commande est simple.
exiftool -b -AudioStream Image.JPG > Image.WAV
Le résultat, lui, n’est pas parfait. J’ai des craquements assez rapidement sur ma voix, par exemple, alors que l’enregistrement est lu correctement depuis l’appareil photo. Et un passage dans Audacity montre bien un problème : je devrais avoir une ligne droite et pas une ligne qui oscille comme sur la capture. Je suppose que le format ADPCM employé par HP sur son appareil photo n’est pas un truc tout à fait standard, mais en tout cas je n’arrive pas à le décoder proprement. Quelques essais avec de la musique donne un résultat du même ordre.
Le premier extrait est celui récupéré dans le fichier, le second celui lu sur la sortie de l’appareil. On entend bien le problème vers la fin.
Il y a probablement moyen de forcer le bon décodeur d’une façon ou d’une autre, mais je n’ai pas trouvé. Question qualité, c’est évidemment assez léger : une fréquence d’échantillonnage de 11,025 KHz, du mono et une quantification sur 4 bits en ADPCM. C’est une technique qui permet de compresser un peu de l’audio en stockant la différence avec l’échantillon précédent plutôt que les valeurs brutes. Reste que c’est une méthode amusante pour s’envoyer des messages cachées de façon assez discrète.










