Dans l’épisode précédent, nous avons vu comment utiliser FFMPEG, LE programme open source pour la manipulation de fichiers video et audio, pour produire l‘extrait d‘un enregistrement musical. Cela consistait à entrer une ligne de commande dans l’excellent (et open source lui aussi) a-Shell. ffmpeg -ss 00:03:50 -to 00:03:58 -i Coloré2.m4a -c copy Coloré2_.m4a
Cette expérience, peut-être satisfaisante pour les fans de FFMPEG et/ou de la saisie de commandes shell, n‘en restera pas moins anecdotique pour les autres qui se voient mal faire ce genre d’opération régulièrement… Et s’il l’on voulait rendre cette solution plus accessible, comment s’y prendre ?
L’idée ici sera d’automatiser la formation de cette commande, en rendant celle-ci paramétrable, et en renseignant ces paramètres non pas en pianotant des instructions FFMPEG, mais en sélectionnant le fichier audio à tronquer et en saisissant les temps de début et de fin de l’extrait que l’on souhaite obtenir. Et puisque comme dit plus haut, FFMPEG permet aussi de travailler les fichiers vidéo, pourquoi ne pas inclure cette possibilité ?
Prérequis
Installer a-Shell mini. La version mini est en effet suffisante pour ce que l’on veut faire.
Point de départ
Nous avons mentionné l’automatisation. Qu’est-ce que cela vous évoque ? La programmation ? Oui mais encore …? Dans sa forme simple et son univers pur jus de Pomme ? Shortcuts ! Anciennement Siri Shortcuts. Ou le système d’automatisation des actions Apple. Il s’agit bien de programmation mais en mode visuel (pas d’éditeur de code) et très simplifié. Au fil des années, le système s’est amélioré et permet de combiner des actions standards Apple avec des appels à des scripts shell ou des programmes en Python via des applications tierces comme Scriptable ou a-Shell. Accessible à tous et extensible pour les geeks.
La base
Aller dans Shortcuts et créer un nouveau Shortcut, par exemple « Mediatronq V0 ». Revenir ensuite sur la liste et modifier ses propriétés via un appui long pour que ce Shortcut accepte les fichiers en entrée via la fonctionnalité « partager » d’iOS.
Modifier le Shortcut en s’assurant qu’il accepte un fichier de type Média en entrée via Partager, ou à défaut, qu’il permette de sélectionner un fichier via l’explorateur. Créer une variable, par exemple Mediainput, pour faire référence à ce fichier par la suite.
Saisie utilisateur
Préparer ensuite la demande de saisie utilisateur qui permettra de renseigner les paramètres de temps de début et temps de fin pour FFMPEG, au format HH:MM:SS -to HH:MM:SS
. Stocker cela dans une variable, par exemple StartEndTime. On peut aussi renseigner à ce stade une valeur pré saisie pour faciliter la vie de l’utilisateur qui n’aura plus qu’à la modifier. Pourquoi pas les 5 premières secondes du média.
Instruction d’exécution FFMPEG
Dans un champ texte, assembler l’instruction FFMPEG à partir des variables collectés précédemment. Celle-ci sera envoyée à a-Shell pour exécution dans les étapes suivantes.
Explication des variables de Shortcut :
Paramètre | Explication |
---|---|
Variable StartEndTime | Temps auquel commencer et stopper l’extraction au format HH:MM:SS -to HH:MM:SS |
Variable MediaInput | Nom du fichier, ajouté à cette expression en insérant la variable MediaInput |
Variable File Extension | Extension du fichier, ajouté à cette expression en insérant la variable MediaInput, puis en sélectionnant sa propriété File Extension |
Explication des paramètres de FFMPEG :
Paramètre | Explication |
---|---|
-y | Indique à FFMPEG d’écrâser tout fichier existant ayant le même nom que le fichier de sortie |
-ss | Utilisé avec -i, indique la position de départ |
StartEndTime | Temps auquel commencer et stopper l’extraction au format HH:MM:SS -to HH:MM:SS |
-i | Spécifie le fichier en entrée |
« MediaInput.File Extension« | Nom et extension du fichier en entrée. Les guillemets permettant d’accepter des noms de fichiers comprenant des espaces. Exemple « Coloré2.m4a ». |
-c copy | Option pour tronquer via « stream copy » (sans perte de qualité et très rapide) |
« MediaInput_[StartEndTime].File Extension« | Nom et extension du fichier en sortie. Ce format est libre, du moment qu’il génère un nom distinct du fichier d’entrée. Les guillemets permettant d’accepter des noms de fichiers comprenant des espaces. Exemple: « Coloré2_[03:50 -to 03:58].m4a ». |
Explication de la dernière ligne:
open shortcuts://
indique à a-Shell de revenir vers Shortcuts une fois les instructions exécutées.
Exécution de la commande
Cette fois-ci, pas besoin d’ouvrir l’application a-Shell Mini manuellement. On va demander à Shortcuts de copier le fichier de type Media choisi par l’utilisateur vers a-Shell grâce à la commande Put File
(qui apparaît comme Copy File une fois sélectionnée) spécifique à a-Shell, puis d’exécuter les instructions préparées plus haut grâce à la commande Execute Command
, aussi propre à a-Shell. La commande Shortcuts Wait to return
demande à Shortcuts d’attendre que l’application tierce lancée (a-Shell) ait terminé avant de continuer.
Le résultat
À ce stade, une fois a-Shell a terminé l’execution de l’instruction FFMPEG, il va demander à iOS de rebasculer sur l’application Shortcuts via shortcuts:// comme vu ci-dessus. Puis on va demander à Shortcuts de faire à nouveau office de passe-plats, cette fois-ci en récupérant (en copiant) le fichier Média tronqué par FFMPEG, via la commande Get File. Ensuite, on utilisera LA commande la plus populaire de Shortcuts Quick Look
qui permet non seulement d’avoir un aperçu du résultat (écouter la musique tronquée par exemple) et d’avoir accès aux commandes standards iOS pour sauvegarder le fichier, l’ajouter à la gallerie, le partager avec une autre application etc.
🧹 Voiture balais
La dernière phase consiste à faire place nette dans le dossier de travail de a-Shell, pour éviter un encombrement de la mémoire.
On va pour cela utiliser la commande Unix rm
(remove) conjointement au paramètre -f
(force) pour s’assurer de son execution. On appliquera rm -f au fichier média en entrée ainsi qu’à celui en sortie.
🍒 Cerise sur le gâteau: raccourci²
Pour finir, on va faire un raccourci sur l’écran d’accueil vers …notre Shortcut. Pour cela, on retrournera dans les propriétés du Shortcut et on sélectionnera « Add to Home Screen ».
Et voilà
Demo du lancement via le raccourci dur l’écran d’accueil :
En savoir plus
🤖 FFPMEG
Utilitaire gratuit et libre (open source) de manipulation de fichiers video, audio, et autres formats ou flux de contenu multimédia. Codé en langage C, il est connu pour son efficience même sur des machines peu puissantes. Il est embarqué dans de très nombreux projets open source. Site officiel : https://ffmpeg.org
💻 a-Shell
Ce projet open source propose un terminal de type Unix pour iOS. Il utilise ios_system pour l’interprétation des commandes permettant d’utiliser l’écosystème des fonctions et librairies disponibles (nslookup, whois, python3, lua, pdflatex, lualatex, imageMagick, vim…). Notablement, a-Shell est compatible avec iOS Shortcuts, augmentant considérablement ses possibilités. Site officiel: https://github.com/holzschu/a-shell