Option 1 : ajouter le .mp3
Exec=ffmpeg -i %f -codec:a libmp3lame -b:a 320k %f.mp3
Il en résultera, par exemple, la conversion de
my_file.wav
à
my_file.wav.mp3
ce qui n'est pas forcément souhaitable.
Fait amusant : il y avait autrefois le %n
qui a donné le nom de la base comme ceci :
Exec=ffmpeg -i %f -codec:a libmp3lame -b:a 320k %n.mp3
La spécification de FreeDesktop a listé ceci comme étant déprécié à partir de la version 1.0 :
Déprécié Exec
codes des champs : ... %n (le nom de base d'un fichier) ...
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html
Cela a peut-être fonctionné dans des versions plus anciennes de Dolphin, mais dans la version que j'ai utilisée (17.12.3), la fonction %n
fait la même chose que la touche %f
donc cela ne fonctionnera pas comme souhaité.
Option #2 : utiliser l'expansion des paramètres de bash
Pour avoir ça à la place :
my_file.mp3
nous devrons supprimer l'extension du fichier. Ceci peut être accompli en utilisant expansion des paramètres de bash :
Exec=bash -c 'wavfile='\''%f'\''; mp3file="${wavfile%.wav}.mp3"; ffmpeg -i '\''%f'\'' -codec:a libmp3lame -b:a 320k "$mp3file"'
Nous devons invoquer bash de manière explicite car la fonction Exec
est passée par /bin/sh
qui ne supporte pas cette syntaxe.
Avertissements
Ces deux options fonctionnent avec des noms de fichiers comportant des espaces. Cependant, elles ne fonctionneront pas comme prévu dans d'autres cas, tels que :
-
Si le nom de fichier MP3 existe déjà, l'opération échouera en silence.
-
Si le nom du fichier WAV contient une chaîne d'expansion de paramètres telle que $0
o $USER
il échouera silencieusement.
-
Si le nom du fichier WAV contient une chaîne de substitution de commande telle que `date`
o $(date)
il échouera silencieusement.
-
Si le nom du fichier WAV est par exemple example.WAV
au lieu de example.wav
il en résultera example.WAV.mp3
.
Pour rendre ces problèmes plus traçables et plus faciles à déboguer, je recommanderais d'écrire un Shell Shell séparé et de l'invoquer directement ; il existe de nombreux exemples :
Autres commentaires
Par ailleurs, vous le savez peut-être déjà, mais le fichier du bureau peut être copié à l'adresse suivante
~/.local/share/kservices5/ServiceMenus/
au lieu de
/usr/share/kservices5/ServiceMenus/
ce qui est utile si vous voulez l'installer pour un seul utilisateur ou si vous n'avez pas les privilèges root.
Enfin, je recommande d'utiliser
MimeType=audio/x-wav
au lieu de
MimeType=audio/*
puisque cela ne fonctionne que sur les fichiers WAV.
Questions connexes :