J'ai un tas de fichiers mp3 de différentes longueurs. Je veux le réduire à une longueur de 50% à 60%. Dit, de 1 minute à 30 secondes. Cela devrait être trivial en utilisant ffmpeg. Mais, je ne sais pas comment en déterminer la longueur d'origine comme base de traitement à l'aide de ffmpeg.
Quelqu'un a une idée?
\n
pour imprimer également une nouvelle ligne.> mp3info -p "%S\n" sample.mp3
// temps total en secondesffmpeg
affichera tout ce qu'il sait sur le fichier si vous ne lui donnez aucun autre argument. Utilisezgrep
pour supprimer tout sauf la "Durée":Vous pouvez également utiliser
mplayer
. Grep pour la ligne "ID_LENGTH =":la source
TOTLENGTH=0; for f in *.mp3; do LENGTH=$(mplayer -ao null -identify -frames 0 "$f" 2>&1 | awk -F= '/ID_LENGTH/ {print $2}' | awk -F. '{print $1}'); TOTLENGTH=$(($TOTLENGTH + $LENGTH)); done; echo $TOTLENGTH
pour imprimer la longueur totale de l'audio dans tous les fichiers, en secondes. Cela peut probablement être fait plus efficacement, mais comme je l'ai écrit de manière ponctuelle, c'était assez bon pour mes besoins. (La deuxième invocation awk supprime les décimales, donc le résultat n'est pas précis à 100%, mais encore une fois, assez bon pour mes besoins.)Estimating duration from bitrate, this may be inaccurate
. Je pense que cette réponse est valable uniquement avec Constant Bitrate MP3.Fait intéressant, l' application EXIFTool donne la durée MP3 comme dernière ligne!
la source
Juste une autre façon d'obtenir la durée uniquement en utilisant
ffmpeg
etgrep
:la source
Les solutions utilisant
ffmpeg
me paraissent légèrement fragiles, car elles analysent une sortie qui n'est pas tout à fait conçue comme une interface. Cela dit, ils continueront probablement à travailler pendant plusieurs années malgré tout.ffmpeg
est livré avec un outilffprobe
pour obtenir des informations sur les fichiers audio (beaucoup de formats, y compris mp3), et peut produire une sortie lisible par machine. La commande suivante obtient la durée du morceau.la source
ffprobe -show_entries stream=duration -of compact=p=0:nk=1 -v fatal song.mp3
Personnellement, j'utilise Mplayer pour extraire les informations, principalement parce que je les ai déjà installées et que cela ne me dérange pas d'installer de nouveaux logiciels inutilement. L'avantage de ceci est qu'il n'est pas limité aux fichiers mp3 en particulier, et devrait fonctionner avec n'importe quel fichier multimédia que Mplayer peut gérer. Le one-liner suivant renverra la longueur de la piste en secondes.
la source
Vous pouvez utiliser ffmpeg pour obtenir la durée du fichier. Utilisez simplement:
la source
J'ai eu le même problème et j'ai trouvé que la commande mplayer (goldPseudo) fonctionnait bien, mais j'ai découvert par la suite que si vous ouvrez un album dans RhythmBox, vous verrez que sa ligne d'état donne le nombre de pistes, la durée totale de lecture et la taille du disque.
la source
Voici ma simple utilisation en se référant ci-dessus.
J'envoie cette valeur à la variable mp3_full_length
Merci au-dessus des gens! J'utilise vos idées et connaissances Merci d'avoir lu, bonne journée! ;)
la source