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 20:08:04

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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

Hors ligne

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

phlinux
Membre
Lieu : S-M
Distrib. : Jessie
Noyau : 4.6
(G)UI : Openbox (+Rox+Feh)
Inscription : 10-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, sa station de travail comme passerelle

Hors ligne

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

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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.

Hors ligne

#4 08-03-2016 20: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 20:58:17

leonlemouton
Adhérent(e)
Distrib. : Jessie
Noyau : Linux 3.16.0-4-686-pae
(G)UI : Mate 1.8.1
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 20:58:52)


Leonlemouton
°(")°

Hors ligne

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

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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
 

Hors ligne

#7 08-03-2016 21: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 21:22:20)

Hors ligne

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

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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

Hors ligne

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

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(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.


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

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

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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

Hors ligne

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

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(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 ./


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

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

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

Re : convertir les mp3 d'un dossier en extrait

Hors ligne

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

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(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 ?


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

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

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

Re : convertir les mp3 d'un dossier en extrait

oui, ça existe bien

Hors ligne

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

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

Bon, je laisse tomber.

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#16 08-03-2016 23: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 09-03-2016 00:08:53

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(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 (09-03-2016 00:11:49)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#18 09-03-2016 00:11:51

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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.

Hors ligne

#19 09-03-2016 00:12:32

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

nIQnutn 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 ?


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#20 09-03-2016 00:22:49

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

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.

Hors ligne

#21 09-03-2016 08: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 10:12:49

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : convertir les mp3 d'un dossier en extrait

nIQnutn 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.


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

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

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(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


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

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

golgot200
Membre
Lieu : AIN
Distrib. : Debian Jessie
Noyau : Linux debian 3.16.0-4-amd64
(G)UI : MATE
Inscription : 05-08-2007

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 golgot200 (09-03-2016 15:40:54)


L'ultime question ... l'intelligence a besoin de la bêtise pour s'affirmer, la beauté a besoin de la laideur pour resplendir, le courage nait dans la peur, les forts impressionnent au millieu des faibles, mais au final,... qui a donc besoin d'autant de connards ?

Hors ligne

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

golgot200
Membre
Lieu : AIN
Distrib. : Debian Jessie
Noyau : Linux debian 3.16.0-4-amd64
(G)UI : MATE
Inscription : 05-08-2007

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 golgot200 (10-03-2016 21:48:30)


L'ultime question ... l'intelligence a besoin de la bêtise pour s'affirmer, la beauté a besoin de la laideur pour resplendir, le courage nait dans la peur, les forts impressionnent au millieu des faibles, mais au final,... qui a donc besoin d'autant de connards ?

Hors ligne

Pied de page des forums