logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 08-03-2016 19:08:04

Anonyme-8
Invité

convertir les mp3 d'un dossier en extrait

J'ai besoin de convertir toute une arborescence contenant des répertoires avec des mp3 pour en faire des extraits.

pour convertir le mp3 en extrait, ça marche

 ffmpeg -t 15   -i input.mp3 input-.mp3



j'ai essayé ça , mais ça marche pas

#!/bin/bash
find . -name '*.mp3'  | while read filename
do
 ffmpeg -t 0.1   -i "$filename" "$filename".mp3
done

#2 08-03-2016 19:23:33

phlinux
Membre
Distrib. : Buster
Noyau : 5.10
(G)UI : Openbox (+Rox+Feh)
Inscription : 09-05-2009

Re : convertir les mp3 d'un dossier en extrait

Quelque chose dans le genre en arrangeant la sortie (tel quel ça double l'extension)

for filename in $(find . -name '*.mp3'); do ffmpeg -t 0.1   -i "$filename" "$filename".mp3 ;done


Pages perso : feh, omegat, udisks, passerelle, schroot vraiment transparent

Hors ligne

#3 08-03-2016 19:28:17

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

phlinux a écrit :

Quelque chose dans le genre en arrangeant la sortie (tel quel ça double l'extension)

for filename in $(find . -name '*.mp3'); do ffmpeg -t 0.1   -i "$filename" "$filename".mp3 ;done



j'ai des erreurs type

No such file or directory
 


à cause des espaces dans les noms de fichiers.

#4 08-03-2016 19:56:32

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : convertir les mp3 d'un dossier en extrait

hello smile j'aurai fait un truc comme ça :


#!/bin/bash
dossier=/home/wlourf/podcasts/test
out=$dossier/out
mkdir -p $out

for file in $dossier/*.mp3
do
    bn=`basename "$file"`
    ffmpeg -t 15   -i "$file" "$out/$bn"
done

exit 0
 



avec éventuellement passage du dossier en argument.

Hors ligne

#5 08-03-2016 19:58:17

leonlemouton
Adhérent(e)
Distrib. : Debian Stable
(G)UI : Mate ∨ LXQt
Inscription : 14-08-2012

Re : convertir les mp3 d'un dossier en extrait

Peut-être des pistes ici : http://askubuntu.com/questions/27574/ho … a-mp3-file

ffmpeg -i InputFile  -vn -acodec copy -ss 00:00:00 -t 00:01:32 OutPutFile



ou

ffmpeg -i /path/music.mp3 -t 00:10:00 -ss 00:20:00 -acodec copy /path/save.mp3



...

Dernière modification par leonlemouton (08-03-2016 19:58:52)


Leonlemouton
°(")°

Hors ligne

#6 08-03-2016 20:09:01

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

wlourf a écrit :

hello smile j'aurai fait un truc comme ça :


#!/bin/bash
dossier=/home/wlourf/podcasts/test
out=$dossier/out
mkdir -p $out

for file in $dossier/*.mp3
do
    bn=`basename "$file"`
    ffmpeg -t 15   -i "$file" "$out/$bn"
done

exit 0
 



avec éventuellement passage du dossier en argument.



j'ai une erreur

/tmp/essai/*.mp3: No such file or directory
 

#7 08-03-2016 20:16:24

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : convertir les mp3 d'un dossier en extrait

en effet si ton  dossier est vide, il ya erreur ,avec find :



find /tmp/essai/ -name *.mp3 -exec ffmpeg  -t 15 -i '{}' '{}'.mp3 \;

 



ensuite find sur mp3.mp3 pour déplacer les fichiers

Dernière modification par wlourf (08-03-2016 20:22:20)

Hors ligne

#8 08-03-2016 20:36:29

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

wlourf a écrit :

en effet si ton  dossier est vide, il ya erreur ,avec find :



find /tmp/essai/ -name *.mp3 -exec ffmpeg  -t 15 -i '{}' '{}'.mp3 \;

 



ensuite find sur mp3.mp3 pour déplacer les fichiers


ça marche mais faut rester dans le dossier et j'ai besoin de faire ça dans des dossiers et sous dossiers.
par contre, j'ai une erreur si le dossier contient un espace.


wlourf a écrit :

en effet si ton  dossier est vide, il ya erreur ,avec find :



find /tmp/essai/ -name *.mp3 -exec ffmpeg  -t 15 -i '{}' '{}'.mp3 \;

 



ensuite find sur mp3.mp3 pour déplacer les fichiers


a priori c'est ok.
j'ai plus qu'à nettoyer tout ça.

merci

#9 08-03-2016 21:05:31

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

J'ai une solution basée sur find et une boucle while read.


#! /bin/bash

while IFS= read -r -d $'\0' filename; do
    new_name="${filename%.mp3}_extrait.mp3"
    ffmpeg -i "$filename" -c copy -to 0:15 "$new_name"
done < <(find . -name '*.mp3' -print0)
 


Le script extrait les 15 premières secondes de chaque mp3 trouvé dans
l'arborescence depuis le répertoire courant. Chacun des extraits porte
le nom de l'ancien fichier auquel on ajoute « _extrait » avant le
.mp3.

Je n'ai pas testé, mais ça devrait fonctionner.

Hors ligne

#10 08-03-2016 21:16:11

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

enicar a écrit :

J'ai une solution basée sur find et une boucle while read.


#! /bin/bash

while IFS= read -r -d $'\0' filename; do
    new_name="${filename%.mp3}_extrait.mp3"
    ffmpeg -i "$filename" -c copy -to 0:15 "$new_name"
done < <(find . -name '*.mp3' -print0)
 


Le script extrait les 15 premières secondes de chaque mp3 trouvé dans
l'arborescence depuis le répertoire courant. Chacun des extraits porte
le nom de l'ancien fichier auquel on ajoute « _extrait » avant le
.mp3.

Je n'ai pas testé, mais ça devrait fonctionner.



malheureusement, j'ai des erreurs

/Cat Power/Cat Power - The Greatest (2006)/08 - The Moon.mp3: No such file or directory

#11 08-03-2016 21:32:05

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

La question que je me pose : est-ce que le fichier


/Cat Power/Cat Power - The Greatest (2006)/08 - The Moon.mp3
 


existe ? D'ailleurs, ce chemin ne devrait pas commencer par un / mais par un ./

Hors ligne

#12 08-03-2016 21:49:27

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

#13 08-03-2016 22:17:51

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

Bon ce qui est curieux, c'est que les fichiers pour lesquels l'extraction a réussie,
on le nom qui commence par ./ comme dans :


Input #0, mp3, from './Cat Power/Cat Power - The Greatest (2006)/The Moon.mp3':
 


Ce qui donne le fichier :


Output #0, mp3, to './Cat Power/Cat Power - The Greatest (2006)/The Moon_extrait.mp3':
 



Par contre ceux pour lesquels ça échoue ne peuvent être trouvé car le nom devient :


/Cat Power/Cat Power - The Greatest (2006)/Islands.mp3
 


Est-ce ffmpeg qui enlève ce point au début du chemin ?
Est-ce que le fichier :


./Cat Power/Cat Power - The Greatest (2006)/Islands.mp3
 


existe ?

Hors ligne

#14 08-03-2016 22:28:45

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

oui, ça existe bien

#15 08-03-2016 22:36:41

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

Bon, je laisse tomber.

Hors ligne

#16 08-03-2016 22:49:44

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : convertir les mp3 d'un dossier en extrait

oui moi aussi !
ffmeg bouffe les premiers caractères, ça se voit bien avec ce script modifié (loglevel = quiet) :


#!/bin/bash

dossierout=/tmp/out

mkdir -p $dossierout

if [[ $#==0 && ! -d $1 ]];
then
    echo "arg 1 doit etre un dossier"
    exit 1
fi

while read  filename; do
    echo -e ">${filename}"
    bn=`basename "$filename"`
    ffmpeg -loglevel 8 -y -t 15 -i "${filename}"  "$dossierout/$bn"        
done < <(find "$1" -name "*.mp3"  )


 

Hors ligne

#17 08-03-2016 23:08:53

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

wlourf a écrit :

ffmeg bouffe les premiers caractères, ça se voit bien avec ce script modifié


Ah ! C'est un bug de ffmpeg, alors. Je trouvais bizarre que ça ne marchais pas à coup
sûr.
Merci, pour le diagnostique smile
Mais du coup il y a peut être un moyen de contourner ce bug, en faisant un « cd » dans le $(dirname $filename)
avant l'extraction et en rétablissant le répertoire d'origine juste après. Ce n'est pas très propre, mais bon.

Dernière modification par enicar (08-03-2016 23:11:49)

Hors ligne

#18 08-03-2016 23:11:51

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

j'ai essayé avec uniquement des chiffres et lettres pour le nom des dossiers et fichiers mais c'est toujours le même pb.

#19 08-03-2016 23:12:32

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

Anonyme-8 a écrit :

j'ai essayé avec uniquement des chiffres et lettres pour le nom des dossiers et fichiers mais c'est toujours le même pb.


Euh, peux-tu être plus explicite ?

Hors ligne

#20 08-03-2016 23:22:49

Anonyme-8
Invité

Re : convertir les mp3 d'un dossier en extrait

j'ai renommé automatiquement les .mp3 avec des nombres et les dossier avec des lettres pour supprimer les espaces et autres caractères un peu spéciaux.

#21 09-03-2016 07:00:42

wlourf
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : awesome
Inscription : 19-07-2010

Re : convertir les mp3 d'un dossier en extrait

du coup, deux find reste le plus simple non ?


find /tmp/essai/ -name *.mp3 -exec ffmpeg  -t 15 -i '{}' '{}'.mp3 \;
find /tmp/essai/ -name *.mp3.mp3 -exec mv '{}' /quelquepart/  \;
 



tu peux réduire la sortie de ffmpeg avec l'option -loglevel (regarde dans le man) et écraser les fichiers avec -y

Hors ligne

#22 09-03-2016 09:12:49

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

Anonyme-8 a écrit :

j'ai renommé automatiquement les .mp3 avec des nombres et les dossier avec des lettres pour supprimer les espaces et autres caractères un peu spéciaux.


Ce ne sont pas ces caractères qui posent problème, amha.

Hors ligne

#23 09-03-2016 09:27:53

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

La nuit portant conseil, il m'est venu l'idée que ce qui dérange peut
être ffmpeg se sont les ./ qui débutent les noms de chemins. Et donc,
ça serait bien d'essayer en les supprimant.


#! /bin/bash

# On stop le script dès qu'un programme retourne un
# code d'erreur.
set -e

while IFS= read -r -d $'\0' filename; do
    filename="${filename#./}"
    new_name="${filename%.mp3}_extrait.mp3"
    ffmpeg -i "$filename" -c copy -to 0:15 "$new_name"
done < <(find . -name '*.mp3' -not -name '*_extrait.mp3' -print0)
 


J'ai aussi ajouté une règle à find pour qu'il ne renvoie pas
les fichiers se terminant par _extrait.mp3. Ce n'est pas parfait
mais ça devrait être suffisant. L'idéal serait de créer les extraits
dans un répertoire dédié reprenant l'arborescence de l'original.
C'est n'est pas compliqué à réaliser, je le laisse en exercice wink

Hors ligne

#24 09-03-2016 14:36:20

Anonyme
Invité

Re : convertir les mp3 d'un dossier en extrait

Bonjour

et pourquoi pas un truc comme cela.
Pas de problème avec les espaces et autres.

Fonctionne bien, c'est à améliorer bien sûr :
la création du dossier de sortie etc ...
un truc du genre: pour les fichiers sélectionnés au lieu de "for i in *.flac"


apt-get install sox
 





for i in *.flac
do
mate-terminal -x sox "$i" Extrait-"$i" trim 0 15
done
 

Dernière modification par Anonyme (09-03-2016 14:40:54)

#25 09-03-2016 19:19:59

Anonyme
Invité

Re : convertir les mp3 d'un dossier en extrait

Celui-ci fonctionne bien avec ffmpeg, les espaces etc ... smile

Bon, je l'ai fait à ma sauce pour le flac.



#!/bin/sh
#Nautilus Script Pour Extraires les 15 premières Secondes des fichiers Audio Sélectionnés.
#Création Du Dossier De Sortie S'il N'existe Pas.

if [ ! -d Extraits ]; then
        mkdir ~/$user/Extraits
fi

# Dossier Préalablement Crée.
outdir=~/$user/Extraits


OLDIFS=$IFS
IFS="
"

for filename in $@; do
filetype="$(file -bi "$filename" | awk -F "; " '{print $1}' | awk -F "/" '{print $1}')"
if [ "$filetype" != audio ]; then
echo "Skip non-audio file"
else
filesubtype="$(file -bi "$filename" | awk -F "; " '{print $1}' | awk -F "/" '{print $2}')"
if [ "$filesubtype" != mpeg ]; then
file_name_in=$(basename "$filename")
file_name_out="$(basename "$filename" | sed 's/\.[^.]*$//').flac"
ffmpeg -t 15 -i "$file_name_in"  $outdir/"Extrait-$file_name_out"
fi
fi
done
 

Dernière modification par Anonyme (10-03-2016 20:48:30)

Pied de page des forums