Journal Mes dernières publications libres

Posté par (page perso) . Licence CC by-sa
27
30
oct.
2016

Sommaire

J’avais présenté ici il y a quelques temps maintenant mon gros projet libre, MyDMAM, mais j’ai dû, ces derniers mois, me concentrer sur d’autres points. Et je me suis dit que ça pourrait peut-être intéresser quelqu’un ici un jour.

Nouveaux outils libres

AS5K-Parallel-Control est une application (en JavaFX 8) qui correspond à un besoin très spécifique, celui de piloter, via l’API socket, l’enregistrement simultané de plusieurs canaux vidéo sur un serveur Avid AirSpeed 5000. On utilise normalement des systèmes plus complexes comme une automation en VDCP, ou des outils comme Avid iNews Command.
Mais quand on ne dispose pas de ces outils-là, et que l’on a besoin de lancer sur 1, 2, ou 3 canaux un REC ou un STOP, simplement, et bien cette toute petite appli le fait. Elle gère notamment la gestion des noms de fichiers et des Id.
Bref, une appli très spécifique pour un besoin et un matériel très spécifique.

On Road Media Sender est une appli testée et fonctionnelle sur OSX et Windows, toujours en JavaFX 8, qui permet à un journaliste ou à un JRI (journaliste reporter d’images), d’envoyer des images tournées et montées, depuis le terrain, sur un serveur FTP (en toute logique, celui de la rédaction qui attend les images). L’appli permet un envoi simple, à partir de l’export vidéo d’un logiciel de montage quelconque, de gérer la création automatique d’un bas-débit vidéo et de l’envoyer. On peut choisir le format et la destination. Tout est fait pour qu’il y ai le moins de questions à se poser, et pour aller le plus vite possible. Le transcodage est fait via ffmpeg, en prenant en compte automatiquement l’entrelacement, le groupement des pistes audio, le temps restant et la reprise en cas d’erreur d’envoi.
Il existe bien sur des solutions propriétaires à ce genre de besoin, plus ou moins sur mesure, comme il existe aussi des logiciels de transcodage et des clients FTP. Mais quand on n’a pas les moyens et/ou le temps, et/ou le niveau de compétence à mettre dans cela, c’est un outil qui peut être très pratique.

Ces deux applications sont parfaitement fonctionnelles, et utilisés régulièrement par des humains qui en ont besoin !

JAXB

Maintenant coté R&D pur, j’ai fait la découverte de JAXB.
C’est une technologie Java qui permet de lire et d’écrire des fichiers XML et de parler avec des web services (SOAP/WDSL) avec des vrais objets Java comme si le fichier ou le service était un élément Java, permettant une grande simplicité dans l’écriture du code autour, notamment avec un IDE qui va faire de l'autocomplétion. JAXB se base sur WSDL et sur XSD pour travailler. C’est vraiment très puissant.

Je me suis permis de jouer avec, et j’ai publié quelques méthodes pour communiquer avec des systèmes pro vidéo.

ffprobe-jaxb est l’utilisation de JAXB pour comprendre le retour XML de ffprobe, l’outil de ffmpeg pour analyser un fichier audio/vidéo. Le README du projet GitHub décrit son utilisation. Grace à cela, il devient très simple de savoir si un fichier vidéo à des pistes audio, ou de connaître sa durée, ses codecs, etc… en quelques lignes de Java.

Quelques Gist 

import-telestream-vantage-ws.sh est un petit script qui permet de créer automatiquement la structure de classes Java, via JAXB, de l’API SOAP d’un serveur Vantage de chez Telestream (un puissant serveur de transcodage vidéo propriétaire). Vu que je pense que je n’ai pas le droit de redistribuer quoi que ce soit venant de cette techno, j’ai donc laissé la méthode pour le faire. Après tout, si vous n’avez pas le serveur, l’API ne va pas vous servir à grand-chose.

telestream-vantage-ws.java est la méthode pour se servir des éléments fraichement crées avec le script précédent. J’y met pas mal d’exemples, notamment de quoi lancer un transcodage avec des variables, de quoi lister les workflows installés et de remonter les infos liés.

import-avid-interplay-ws.sh et avid-interplay-ws.java Mêmes principes qu’avec Vantage, mais là cette fois, c’est pour utiliser les API Avid Interplay (Assets, Archive,
Infrastructure, Jobs, Transfer et User Management). C’est très complet et très puissant. Je donne un exemple d’utilisation : lister des éléments dans la base et afficher leurs infos.

Je compte exploiter dans MyDMAM ces trouvailles. Bien que Vantage et Interplay soient des techno couteuses et propriétaire, elles sont extrêmement puissantes dans un environnement pro comme celui que je dois gérer. Les API permettent vraiment de multiplier encore plus les possibilités (je donne j’impression de débarquer, mais ce genre d’API était encore très rare il y a 10 ans dans les outils que l’on avait, et souvent les API étaient lourdes et payantes ; les temps ont bien changé).

BMX Tools

Enfin, le soutient aux BMX XML Tools.
Ce sont des outils libres, développés par la BBC, pour manipuler des fichiers MXF, notamment leurs flux et leurs métadonnées. Ils ont fait un super travail, et c’est très puissant. Ils ont publié le code sur Sourceforge en 2015 du kit complet, et je me suis permis de le publier sur Github, autrement plus pratique quand on a besoin de scripter des compilations.
Voilà, c’est « juste » ça. J’ai bien fait attention à tout prendre et à bien garder le code tel qu’il est (je n’ai pas le niveau pour y apporter le moindre changement constructif).

Et parce que vous l’avez vu venir, j’ai aussi fait travailler JAXB sur les XSD de BMX. Je n’ai pas fait grand-chose, mais juste de quoi, en Java, récupérer simplement les métadonnées d’un fichier MXF, via BMX et leur outil mxf2raw.
Le code sur GitHub comprend pour le coup tout : l’export JAXB, dans un projet Eclipse, et un Howto dans le Readme.

A la prochaine pour d’autres aventures de « code audiovisuel ».

NB : je cross-post ce journal sur mon blog.

  • # JAXB

    Posté par . Évalué à 5.

    JAXB est pas mal, mais c'est à mon avis pas une bonne idée de se servir de l'outil wsimport. Le plugin maven permet de créer un artifact contenant uniquement les xsd et produisant un jar contenant toutes les compilées classes. Ça permet de publier ton travail sur maven central et de réutiliser tout ça via un simple import dans maven, dans gradle, dans sbt ou avec ivy.

    JAXB se base sur WSDL et sur XSD pour travailler.

    Pas WSDL, JAXB n'a rien avoir avec SOAP. C'est JAXWS qui s'occupe de SOAP et qui utilise JAXB.

    Pour ce qui est de Vantage, ils ont une API REST. Tu peux utiliser une API REST comme si c'était un simple objet java grâce à des client rest comme retrofit ou feign (le client jaxrs n'est pas aussi cool).

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: JAXB

      Posté par (page perso) . Évalué à 1.

      Je n'utilise pas Maven. Mais j'imagine en effet la puissance de la chose.

      Après certains imports ont mal fonctionné, comme ffprobe.xsl qui bug par défaut (j'imagine que ça doit être plus chaud à scripter), et je montre ici plus une demo/exemple fonctionnelle qu'une vraie implémentation.

      Alors les différences fonctionnelles entre JAXWS et JAXB, j'avoue, je n'ai pas poussé la science aussi loin ! Peut importe qui fait quoi, du moment que cela marche. Je n'ai surtout pas la prétention de faire un cours sur cela ici.

      Pour Vantage, quel interet d'utiliser l'API REST quand on a le SOAP ? Je veux dire, d'un coté j'ai toute une structure Java déjà faite et fonctionnelle (avec SOAP/JAXWS donc), et de l'autre, je doit la fabriquer moi même en regardant la doc, vu que j'imagine qu'il n'est pas capable de produire les classes tout seul ?

      Par contre, j'ai d'autres systèmes à piloter qui sont eux, en REST & Json seul. Peut-être que l'une de tes 3 propositions vont m'y aider !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.