vendredi 24 novembre 2017

Java, convertir un fichier alaw en pcm

Dans un billet précédent, je parlais d'un petit player en html5 qui devait jouer des wav. Je convertissais les wav en mp3 pour la compatibilité des navigateurs.

Lors de l'intégration de celui-ci dans l'IHM d'administration du serveur vocal, j'ai eu quelques soucis de conversion...

La conversion en mp3 ne fonctionnait pas car les fichiers en entrée n'étaient pas des vrais "wav"... C'étaient des fichiers A-law !


ACCUEIL_CHOIX_TARIFS.wav: RIFF (little-endian) data, WAVE audio, ITU G.711 A-law, mono 8000 Hz


Pour que la conversion en mp3 avec jump3r fonctionne, le format d'entrée doit être dans mon cas


RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 8000 Hz


Avec sox, la conversion est simple :



Mais c'est en java que cette conversion doit être faite car embarquée dans tomcat !

Le code suivant permet de convertir en java un fichier ITU G.711 A-law en Microsoft PCM



Référence: https://stackoverflow.com/a/12862290/3550759

mercredi 27 septembre 2017

Java, convertir des wav en mp3

Je maintiens une IHM d'administration dans laquelle un petit player flash permet d'écouter des fichiers wav.

Le passage au player html5 a été laborieux.

Le player devait s'afficher dans une popup (on utilisait auparavant qtip mais le passage à html5 faisait planter le rendu aléatoirement) et un problème d'affichage du temps total du morceau était présent de temps à autre (cf solution dans billet précédent).

Une fois la popup affichée et le problème de temps résolu, je me suis heurté à un autre problème de taille...

En effet, IE11 (un des navigateurs à supporter) ne lit pas les fichiers wav !!!

J'ai donc cherché à convertir les fichiers wav en mp3.

La plupart des solutions sont à base de ffmepg encapsulé (comme JAVE) mais je n'ai pas réussi à les intégrer pour les faire fonctionner dans Tomcat.
Cela était certainement dû au Security Manager...

Puis par chance, j'ai trouvé un convertisseur 100% java : Jump3r

La bibliothèque est disponible sur le repository maven (https://mvnrepository.com/artifact/de.sciss/jump3r/1.0.4) et les sources sur https://github.com/Sciss/jump3r

L'utilisation est simple pour convertir un fichier wav en mp3. Voici ci-dessous un exemple :



Dans celui-ci, la fonction main a été inlinée pour permettre d'attraper/relancer une éventuelle IOException.

Jump3r m'a sauvé la vie : il a permis de modifier la servlet qui délivrait le wav pour lui faire délivrer un mp3 compatible avec tous les players HTML 5 des navigateurs.

Liens utiles
http://textopia.org/androidsoundformats.html
http://dinbror.dk/blog/how-to-preload-entire-html5-video-before-play-solved/

html5, player audio dans une popup

Pour mon projet, je devais afficher un player audio HTML5 dans une popup lors d'un clic sur un span (fichier son)...

Voici ce que cela donne sur un exemple allégé :


avec son code associé :




A noter :

Parfois le temps total du morceau n'était pas affiché par le player. Cela était aléatoire et ce en utilisant le même logiciel (firefox) sous linux ou sous windows (via une machine virtuelle).

Je suspecte que cela était dû au fait que le fichier son était renvoyé par une servlet...

Dans l'exemple ci-dessus, ce n'est pas le cas mais j'ai laissé le patch pour information (la source m'ayant aidé à résoudre ce problème est la suivante : http://dinbror.dk/blog/how-to-preload-entire-html5-video-before-play-solved/)


vendredi 4 août 2017

article, Clé USB encryptée avec Ubuntu: utilisation simplifiée de LUKS

Article simple et efficace montrant comment créer une clé USB avec une partie cryptée (ext4+luks) et une partie non cryptée visible de tous (fat32).

http://www.galipe.net/articles/cle-usb-encryptee-avec-ubuntu/

mardi 23 mai 2017

ssh & scripts automatisés, The authenticity of host can't be established

Lors d'appels de scripts automatisés pour "calculer" ce qui est à mettre en préproduction, j'ai souvent des "The authenticity of host can't be established".
Peut-être parce que la machine est puppétisée...

Soit il faut répondre manuellement, soit il faut éviter d'avoir le prompt...

Pour éviter d'avoir à répondre, on peut ajouter l'option "-o StrictHostKeyChecking=no" à ses commandes SSH.



Ce n'est pas beau, certes...

Source : stackoverflow