Script Bash pour convertir tous * flac en * .mp3 avec FFmpeg?

Je veux convertir tous * .flac en * .mp3 dans le dossier spécifique.

C'est ce que j'ai essayé, mais ça ne marche pas:

# change to the home directory cd ~/music # convert all *.flac files ffmpeg -i *.flac -acodec libmp3lame *.mp3 # (optional: check whether there are any errors printed on the terminal) sleep 60 

Comment get mon objective?

Essaye ça:

 for i in *.flac ; do ffmpeg -i "$i" -acodec libmp3lame $(basename "${i/.flac}").mp3 sleep 60 done 

Une simple solution 1 liner: find -name "*.flac" -exec ffmpeg -i {} -acodec libmp3lame -ab 128k {}.mp3 \;

http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html

Notez que ceci sera appliqué récursivement dans le directory donné. C'est-à-dire que si vous l'exécutez à partir de votre dossier Musique, il convertira tous les flacs des sous-dossiers et produira un file .mp3 à côté. Vous pouvez aussi le faire sans ffmpeg en utilisant directement flac et boiteux (ie lire w / flac, pipe à boiter, sortie vers un file .mp3), comme indiqué dans le lien.

Si vous avez des espaces blancs dans les noms de file:

 for a in *.flac; do f="${a[@]/%flac/mp3}" ffmpeg -i "$a" -qscale:a 0 "$f" done 

J'ai travaillé sur la réponse de @ Ketan en utilisant avconv, puisque ffmpeg ne fonctionne pas bien ici.

 for i in *.flac ; do avconv -i "$i" "./mp3/$i".mp3 done 

Cela convertit les files flac dans un dossier en files mp3 et se déplace ensuite vers un dossier "mp3" existant. Les files seront nommés dans le model "nom_original.flac.mp3"

FTW parallèle (sans doute vous avez plus d'un kernel – pourquoi ne pas les utiliser?):

 ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done 
 find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -rf; do ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/\.flac/.mp3/g' <<< $f )" done 

Par exemple, si vous avez plusieurs files avi:

 ls *.avi | xargs -I {} ffmpeg -i {} {}.mp3 

Si cela peut aider …. J'ai écrit un petit script bash pour faire ceci … Vous devez avoir ffmpeg / flac installé.

Comment ça marche:

Cela prend 2 arguments:

  1. Le dossier de votre bibliothèque musicale (flac / ogg / mp3 …)
  2. Le dossier de destination (vous devez le créer avant).

Il produit:

  • Une copy exacte du dossier source dans le dossier de destination, avec:
    • les files non flac copiés.
    • les files flac transformés en mp3 (haute qualité VBR)
  • Un file run.sh avec les commands pour convertir les files flac (ce script est exécuté automatiquement).
 #!/bin/bash FLAC_PATH=$1 CONV_PATH=$2 DEBUG=0; function usage { echo ""; echo " This script convert all flac files from a folder to mp3 files to a second folder"; echo ""; echo " Usage :"; echo " ./conv.sh {Source Folder} {Destination Folder}"; echo " note : booth folder must exist before starting this script"; echo " files other than flac are copyd to the destination folder"; echo ""; } if [ ! -d "$2" ]; then echo ""; echo " ERROR : [$2] is not a directory."; usage exit 1 fi; if [ ! -d "$2" ]; then echo ""; echo " ERROR : [$2] is not a directory."; usage exit 1 fi; COMMANDS="run.sh" echo "" > run.sh echo " convert from $FLAC_PATH to $CONV_PATH "; find "${FLAC_PATH}" -type f |while read myFile; do SRC_DIR=${myFile%/*} SRC_FILE=${myFile##*/} DST_DIR=$CONV_PATH/$SRC_DIR mkdir -p "${DST_DIR}" # TEST if the file is a flac .... metaflac --show-md5sum "${myFile}" 2>/dev/null 1>/dev/null if [ $? -eq 0 ]; then echo -n " *** $myFile [FLAC !] : " DST_FILE=${myFile%.*} OUT_PATH="${DST_DIR}/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')" if [ $DEBUG == 1 ]; then echo " SRC = $myFile"; echo " OUT = $OUT_PATH" fi; if [ -f "$OUT_PATH" ]; then echo " exist, do nothing !"; else echo " add to compress list !"; echo "ffmpeg -y -i \"${myFile}\" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 \"${OUT_PATH}\" " >> $COMMANDS fi; else echo -n " *** $SRC_FILE [NOT FLAC] : " if [ -f "${CONV_PATH}/${myFile}" ]; then echo " exist, do nothing !" else echo " copy." cp "${myFile}" "${CONV_PATH}/${myFile}" fi fi done; echo " And now, CONVERT THE FLAC's!!! " sh run.sh