Comment convertir un fichier son m4a en mp3?

65

J'ai essayé de convertir un .m4afichier en .mp3fichier à l'aide ffmpegde la commande suivante:

$ ffmpeg -i music.m4a music.mp3

Malheureusement, un fichier de zéro octet a été renvoyé en sortie. La sortie de la commande est la suivante:

FFmpeg version 0.6-4:0.6-2ubuntu6.2, Copyright (c) 2000-2010 the FFmpeg developers
  built on Sep 16 2011 17:11:24 with gcc 4.4.5
  configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  WARNING: library configuration mismatch
  libavutil   configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavcodec  configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavformat configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavdevice configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavfilter configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libswscale  configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libpostproc configuration: --extra-version=4:0.6-2ubuntu6.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'music.m4a':
  Metadata:
    major_brand     : M4A 
    minor_version   : 0
    compatible_brands: M4A mp42isom
  Duration: 00:00:03.41, start: 0.000000, bitrate: 66 kb/s
    Stream #0.0(und): Audio: aac, 44100 Hz, mono, s16, 63 kb/s
Output #0, mp3, to 'music.mp3':
    Stream #0.0(und): Audio: 0x0000, 44100 Hz, mono, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Encoder (codec id 86017) not found for output stream #0.0

Comment puis-je convertir un .m4afichier son en un .mp3format de fichier?

Tom Brito
la source
1
Installez avconv et utilisez ce script: gist.github.com/bradenbest/cfba10c9df4b4c0daaab . Vous pouvez également configurer les options fformatet tformatpour modifier les formats audio que vous convertissez.
Braden Best

Réponses:

51

Cela a fonctionné pour moi sur Ubuntu 14.04:

avconv -i input.m4a ouptut.mp3

Pour obtenir la avconvcommande, installez libav-tools Installez libav-tools :

sudo apt-get install libav-tools
teknopaul
la source
16
FFMPEG n'est pas obsolète. AvConv était une fourchette qui a décidé de mettre ce message quand quelqu'un l'a appelé par le nom de l'exécutable FFMPEG
David Davies-Jones le
2
FYI. À partir de 18.04, libav-tools et avconv ne sont plus inclus dans les pensions.
Kevin Bowen
1
Simplement utiliser ffmpegdirectement, comme spécifié dans la question, me convient parfaitement avec ffmpeg 4.1.3 sur macOS 10.14.4.
Radon Rosborough
46

Le moyen simple de le faire est:

ffmpeg -v 5 -y -i input.m4a -acodec libmp3lame -ac 2 -ab 192k output.mp3

Si vous voulez un script pour envelopper cela, essayez aac2mp3 , ce qui devrait fonctionner pour vous. (La syntaxe de cette dernière instruction a été extraite de là.) Code en ligne inclus ci-dessous:

#!/bin/bash
#
# $Id: aac2mp3,v 1.2  03/30/2008 10:00 Daniel Tavares ([email protected]) - 
# Based on Script -  rali Exp $
#
#
# Convert one or more AAC/M4A files to MP3.  Based on a script example
# I found at: http://gimpel.gi.funpic.de/Howtos/convert_aac/index.html
#
ME=`basename ${0}`
FFMPEG="/usr/bin/ffmpeg"
EXT="mp4"
BITRATE="128"
do_usage() {            # explanatory text
 echo "usage: ${ME} [-b nnn] [-e ext] [-f] [-c] [-r] [-v] [-h] [file list]"
 echo "       Convert music from AAC format to MP3"
 echo "  -m /path/app  Specify the location of ffmpeg(1)"
 echo "  -b nnn        bitrate for mp3 encoder to use"
 echo "  -e ext        Use .ext rather than .m4a extension"
 echo "  -f            Force overwrite of existing file"
 echo "  -c            Delete original AAC|M4A file(s)"
 echo "  -v            Verbose output"
 echo "  -h            This information"
 echo ""
 echo "For recursive directory, use: find -name '*.${EXT}' -exec ${ME} "{}" [args]     \;"
 exit 0
 }
do_error() {
 echo "$*"
 exit 1
 }
file_overwrite_check() {
 if [ "$FORCE" != "yes" ]
 then
   test -f "${1}" && do_error "${1} already exists."
 else
   test -f "${1}" && echo "  ${1} is being overwritten."
 fi
 }
create_mp3() {  # use ffmpeg(1) to convert from AAC to MP3
 file_overwrite_check "${2}"
 test $VERBOSE && echo -n "Converting file: ${1}"
 ${FFMPEG} -v 5 -y -i "${1}" -acodec libmp3lame -ac 2 -ab ${BITRATE}k "${2}";
 if [ $? -ne 0 ]
 then
   echo ""
   echo "Error!"
   do_cleanup
   do_error "Exiting"
 fi
 test $VERBOSE && echo ".  OK"
 }
do_cleanup() {  # Delete intermediate and (optionally) original file(s)
 test ${RMM4A} && rm -f "${1}"
 test $VERBOSE && echo ".  OK"
 }
do_set_bitrate() {
 test $VERBOSE && echo -n "Setting bitrate to: $1 kbps"
 BITRATE=$1
 test $VERBOSE && echo ".  OK"
 }
GETOPT=`getopt -o l:m:b:e:cfhrv -n ${ME} -- "$@"`
if [ $? -ne 0 ]
then
 do_usage
fi
eval set -- "$GETOPT"
while true
do
 case "$1" in
   -m) FFMPEG=$2 ; shift ; shift ;;
   -b) do_set_bitrate $2 ; shift ; shift ;;
   -e) EXT=$2 ; shift ; shift ;;
   -f) FORCE="yes" ; shift ;;
   -c) RMM4A="yes" ; shift ;;
   -v) VERBOSE="yes" ; shift ;;
   -h) do_usage ;;
   --) shift ; break ;;
    *)  do_usage ;;
 esac
done
test -f $FFMPEG || do_error "$FFMPEG not found. Use \"-m\" switch."
if [ $# -eq 0 ]
then                    # Convert all files in current directory
 for IFILE in *.${EXT}
 do
   if [ "${IFILE}" == "*.${EXT}" ]
   then
     do_error "Not found ${EXT} in this folder."
   fi
   OUT=`echo "${IFILE}" | sed -e "s/\.${EXT}//g"`
   create_mp3 "${IFILE}" "${OUT}.mp3"
   do_cleanup "${IFILE}" 
 done
else                    # Convert listed files
 for IFILE in "$*"
 do
   test -f "${IFILE}" || do_error "${IFILE} not found."  
   OUT=`echo "${IFILE}" | sed -e "s/\.${EXT}//g"`    
   create_mp3 "${IFILE}" "${OUT}.mp3"
   do_cleanup "${IFILE}"    
 done    
fi   
exit 0
utilisateur26700
la source
1
(Obtenu après de nombreuses lignes de texte): Unknown encoder 'libmp3lame' Error! Exiting. Avec apt-get je peux voir libmp3lame0et libmp3lame-dev. J'ai essayé d'installer libmp3lame0, mais rien n'a changé.
Tom Brito
1
ffmpega été remplacé par avconvdans les nouvelles versions de Ubuntu / Debian. Voir askubuntu.com/questions/432542/… et installerlibav-tools
Denilson Sá Maia
Cela ne fonctionne pas car ffmpeg n'est pas dans le dépôt Ubuntu ... et ni avconv ni libav-tools. Le responsable du logiciel audio pourrait-il arrêter de marcher et s’installer sur quelque chose de stable?
Peter Flynn
'EXT = "mp4"' doit être remplacé par "EXT =" m4a "" selon la question. J'ajouterais le texte explicatif suivant pour faciliter la compréhension: '# EXEMPLE: Convertira tous les fichiers du répertoire en cours portant l'extension # "m4a" en "mp3" # bash SCRIPT_NAME -b 256 -v'
Eduardo Lucio le
À partir de 15.04, ffmpeg est de retour dans les pensions: webupd8.org/2014/11/ffmpeg-returns-to-official-ubuntu.html À partir de 18.04, libav-tools et avconv ne sont plus disponibles.
Kevin Bowen
40

SoundConverter peut le faire sans avoir à manipuler la ligne de commande et est disponible dans le Centre logiciel Ubuntu:

Installer via le centre de logiciel

Fenêtre principale et son preférence

conversion en cours

andrewsomething
la source
Si vos fichiers sont étiquetés par MusicBrainz, recherchez une autre solution: bugs.launchpad.net/soundconverter/+bug/1174949
HDavé
3
Christ sur une béquille, quel gâchis. Soundconverter a échoué car il manquait certains paquets dans Python, puis il a ouvert une fenêtre d’installation pour plus de 20 autres paquets, qu’il ne pouvait installer, bien sûr, car il ne fonctionnait pas en tant que root. Quelqu'un doit réécrire le programme d'installation et les dépendances.
Peter Flynn
Le programme ne charge pas Ubuntu 14.04
il y a actuellement un bogue dans soundconverter lié à m4a: bugs.launchpad.net/soundconverter/+bug/1512007
krumpelstiltskin
5
J'essaie d'éviter de jouer avec l'interface graphique: je veux l'automatiser.
ctrl-alt-delor
16

J'avais besoin d'une solution alternative car - mes fichiers se trouvaient dans des sous-répertoires récursifs - j'avais des espaces dans les chemins.

Alors je me suis finalement installé pour:

 find . -type f -name '*.m4a' -exec bash -c 'avconv -i "$0" "${0/%m4a/mp3}"' '{}' \;

Puis supprimé les fichiers d'origine:

find . -type f -name '*.m4a' -exec bash -c 'rm "$0"' '{}' \;
artisan
la source
3
Pour moi, c'est la meilleure réponse. Un petit point - la suppression peut être exprimée plus succinctement comme:find . -type f -name '*.m4a' -delete
Mark Slater
2
J'ai modifié la commande en ajoutant -y et -b: a 256k pour s’assurer que le programme ne cesse pas de demander la permission d’écraser des fichiers mp3 existants, et pour une meilleure qualité (bien que je n’ai pas reconnu la différence entre la sortie standard). de 128kbit / s (ce qui n'était que la moitié du débit de mes m4a d'origine): find. -type f -name '* .m4a' -exec bash -c 'avconv -i "$ 0" -y -b: a 256k " $ {0 /% m4a / mp3} "'' {} '\;
Ben
1
Cette commande peut être utilisée avec succès en remplaçant "avconv" par "ffmpeg".
Kevin Bowen
9

J'ai créé un script pour le faire.

Mes exigences étaient:

  • Doit maintenir autant de balises que possible
  • Doit conserver les illustrations de l'album s'il existe
  • Doit être 320K mp3s

Fonctionne sur tous les fichiers m4a d'un répertoire et génère les nouveaux fichiers Mp3 brillants dans un dossier créé par le script, appelé Mp3. Attention; ce script remplace les fichiers MP3 existants dans le dossier de sortie s'ils portent le même nom. Utilise également les fichiers 'metadata.txt' et 'metadata2.txt' en tant que fichiers temporaires.

Vous devrez installer avconv s'il n'existe pas déjà.

Je n'arrivais pas à comprendre comment conserver la balise 'Year' dans les balises ID3v1. Je n'ai donc pas activé cette option.

#!/bin/bash
files=*.m4a
#create output folder if it doesnt exist
if [ ! -d Mp3 ]; then
        mkdir Mp3
fi

for file in $files; do
        mp3File=${file/%m4a/mp3}
        avconv -y -i "${file}" -f ffmetadata metadata.txt
        sed -e 's/^date=\(.*\)$/TYER=\1/' -e 's/^major_brand=.*$//' -e 's/^minor_version=.*$//' -e 's/^creation.*$//' -e 's/^compatible.*$//' -e 's/^encoder=.*$//' <metadata.txt >metadata2.txt
        avconv -y -i "${file}" -i metadata2.txt -ab 320k -map_metadata 1 -id3v2_version 3 "Mp3/${mp3File}"
done

Enregistrez-le sous 'convert.b', puis exécutez le script en tapant:

% bash convert.b
K0D4
la source
C'est exactement ce que je recherche.
Rom098
script tueur, changer le avconvà ffmpeget qui a fait le travail. Veuillez mettre à jour la réponse pour inclure l'explication des différentes commandes!
George Udosen
5

Parfois, avconv et ffmpeg ne fonctionnent pas aussi proprement, alors:

sudo apt-get install faad lame
faad myfile.m4a -w | lame - myfile.mp3

travaille toujours pour moi.

Eamonn Kenny
la source
1

Vous avez probablement besoin des paquets libav sans restriction dans le référentiel medibuntu. Personnellement, je voudrais compiler le dernier ffmpeg avec tous les codecs, aussi simple que 123 http://ubuntuforums.org/showthread.php?t=786095

duffydack
la source
1
Si vous ne voulez pas compiler ffmpeg: sudo apt-get install libavcodec-extra-53
z7sg le
1

Sur mon L-Ubuntu, libav-toolsn'était pas disponible. J'ai installé winff:

sudo apt-get install winff

qui fournit un outil graphique pour convertir des fichiers audio et vidéo à partir de et dans de nombreux formats différents.

Juste essayé: il fonctionne très bien pour .m4ade .mp3:-)

Sinon, vlcla lecture des .m4afichiers est également excellente :

sudo apt-get install vlc

FraSchelle
la source
0

Script Nautilus

Ce script Nautilus permet à l’utilisateur de convertir le ou les fichiers sélectionnés, tels que les fichiers m4a - en sauvegardant tout fichier mp3 ou non audio - au format mp3 au même emplacement, à l’aide de ffmpeg . Les nouveaux fichiers mp3 auront le débit binaire variable le plus élevé et conserveront la plupart des balises, sauf l'année .

#!/bin/sh
#Nautilus Script to convert selected file(s) - excluding any non-audio and MP3 file(s) - to MP3 format at highest quality with VBR (Variable Bit Rate)
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/\.[^.]*$//').mp3"
ffmpeg -loglevel quiet -y -i "$file_name_in" -acodec libmp3lame -aq 0 "$file_name_out"
fi
fi
done
IFS=$OLDIFS
/usr/bin/canberra-gtk-play --id="dialog-information" &
notify-send "Selected file(s) converted to MP3 format, excluding any non-audio and MP3 file(s)" -i gtk-dialog-info -t 5 -u normal
Sadi
la source
0

Je sais que cette question est un peu vieille, mais je pense que les gens la voient encore (comme moi), je partage donc ce que j'ai trouvé qui a fonctionné pour moi et qui a une belle interface utilisateur: fre: ac ( https: //www.freac .org / ). Pour utiliser dans Ubuntu, il suffit de télécharger le fichier binaire pour Ubuntu, de décompresser et d’exécuter le fichier calle freac, c’est tout. Prendre plaisir!

Rodrigo E. Principe
la source
0

Ancienne question, mais je ne vois pas de solution très simple: utilisez VLC

Dans VLC, vous pouvez charger un fichier .m4a et le convertir en .MP3 very easyllie.

  1. Ouvrez VLC (pas besoin de charger aucun fichier)

  2. Cliquez sur Média ou appuyez sur CTRL + R

  3. Cliquez sur Conver / Save

  4. Sur le profil sélectionnez MP3

  5. Sélectionner la destination

  6. Cliquez sur Démarrer et attendez. Pour savoir si cela fait quelque chose ou pas, regardez la barre de temps.

J'espère que cela sera utile pour quelqu'un.

iDon'tKnoware
la source