Watchfolder distribué

Un watchfolder est une technologie qui déclenche des actions sur un fichier quand il est déposé dans un dossier en particulier.

La plupart des technologies de watchfolder, du moins celles que l’on peut trouver dans les médias, ont une approche simple : une sonde logicielle surveille un dossier en attendant de l’arrivée d’un nouveau fichier dedans, puis attends que ce fichier soit intégralement copié (quand sa taille n’évolue plus). A ce moment-là des, actions sont provoquées sur ce fichier, notamment des transcodages, des copies, des analyses. Puis il est supprimé.

Si cette sonde tombe en panne, il n’y aura plus de traitements. De même il peut n’y avoir qu’une sonde : sinon le fichier serait détecté par plusieurs sondes à la fois.

Le cas d’Inotify : cette technologie dédiée Linux ne fonctionne que sur des systèmes de fichiers locaux. Pour des watchfolders qui pointent sur des stockages externes, comme un NAS, on est obligé d’utiliser des watchfolders traditionnels.

La technologie dans MyDMAM permet simplement de coordonner plusieurs watchfolders sur le même dossier, et de déclencher un transcodage.

Ici, le transcodage via watchfolders consiste en l’exécution d’une ligne de commande, et une seule, prenant en paramètre le nom du fichier trouvé et le nom du fichier à produire. Vous avez une totale liberté par rapport à la commande exécutée. Les chemins de travail sont bien sûr configurables, tout comme les options de création du nom de fichier en sortie (chemin, ajout d’un préfix/suffixe dans le nom).

Dans les options de configuration d’un watchfolder vous avez :

  • Son nom.
  • Son dossier surveillé.
  • Le temps d’attente entre deux vérifications.
  • Le temps d’attente pour qu’un fichier soit accepté.
  • Une taille minimum de fichier.
  • Une liste d’extension autorisé.
  • Une vérification si le fichier doit contenir de la vidéo, et/ou de l’audio.
  • De choisir si le fichier trouvé doit rester dans le watchfolder après avoir été traité.
  • S’il doit être recopié avec le fichier de destination après avoir été traité. Ça peut servir.

Les instances de transcodeurs sont indépendantes des instances de watchfolder. Pour pouvez avoir plusieurs transcodeurs liés au même profile mais n’avoir qu’un watchfolder qui a besoin de ce profil, et vice versa. Vous pouvez même avoir plusieurs fois le même transcodeur si vous avez besoin de paralléliser les traitements sur le même profil et la même machine.

Et tout ceci est indépendant des profils que peuvent gérer un transcodeur : pour pouvez associer un profile par transcodeur, ou tous les profils pour le même transcodeur.

En fait la structure watchfolders/profiles/transcodeurs/instances/serveurs se construit de façon complètement libre. Editez juste le fichier conf/app.d/transcoding.yml, et le fichier storage.yml pour les chemins d’accès.

Si vous voulez contrôler la façon dont un transcodeur travaille, il existe une API Java dans MyDMAM, ProcessKit, qui vous laisse la main sur le traitement. Vous avez en paramètre un fichier source, et vous devez renvoyer une liste de fichiers qui on été traités (et que vous devez ranger).

Une future technologie est en préparation, c’est le transcodage conditionnel et adaptatif, qui consiste à altère une ligne de commande ffmpeg pour lui rajouter des paramètres comme du désentrelacement ou du redimensionnement, qui vont dépendre de la configuration, du fichier source et du fichier à produire.