web-dev-qa-db-fra.com

Comment convertir les fichiers .mp4 et .m4a en fichiers .mp3 automatiquement, en conservant la pochette?

J'ai des fichiers audio .mp4 et .m4a que je souhaite convertir en fichiers .mp3. Je souhaite que les fichiers .mp3 résultants incluent la jaquette incluse dans les fichiers source, sans jouer avec EasyTAG manuellement. Comment puis-je faire ceci?

6
Flimm

J'ai écrit un script qui le fera automatiquement. Exécutez simplement le script sur chaque fichier .m4a ou mp4, comme ceci, et il produira les fichiers .mp3 dans le même répertoire:

convert-mp4-to-mp3.sh *.mp4 *.m4a

Vous devrez installer ces dépendances:

Sudo apt-get install realpath libav-tools atomicparsley eyed3

Voici le script. Copiez et collez ce contenu et enregistrez-le dans un fichier nommé convert-mp4-to-mp3.sh:

#!/bin/bash

set -e

for filename in "$@" ; do
    if [[ "$filename" == -* ]] ; then
        printf "Filename %s must not begin with a dash\n" "$filename" 1>&2
        continue
    fi
    printf "Converting %s\n" "$filename"
    filename=$(realpath "$filename")
    directory=$(mktemp -d)
    cwd=$(pwd)
    output="$(basename "$filename" | sed 's/\.[^.]*$//').mp3"
    cd "$directory"
    avconv -i "$filename" "$output"
    ln -s "$filename" "$(basename "$filename")"
    AtomicParsley "$(basename "$filename")" --extractPix || true
    shopt -s nullglob
    for imagefilename in *.jpg *.png *.JPG *.PNG ; do
        eyeD3 --add-image="$imagefilename":FRONT_COVER "$output" 
        break
    done
    shopt -u nullglob
    mv "$output" "$(dirname "$filename")"
    cd "$cwd"
    rm -r "$directory"
done
6
Flimm