Come convertire un file audio m4a in mp3?


65

Ho provato a convertire un .m4afile in un .mp3file utilizzando ffmpegil seguente comando:

$ ffmpeg -i music.m4a music.mp3

Sfortunatamente, ho ottenuto un file di dimensioni pari a zero byte restituito come output. L'output del comando è il seguente:

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

Come posso convertire un .m4afile audio in un .mp3formato file?


1
Installa avconv e usa questo script: gist.github.com/bradenbest/cfba10c9df4b4c0daaab . Puoi anche configurare fformate tformatvars per cambiare i formati audio tra cui stai convertendo.
Braden Best

Risposte:


51

Questo ha funzionato per me su Ubuntu 14.04:

avconv -i input.m4a ouptut.mp3

Per ottenere il avconvcomando, installa libav-tools Installa libav-tools :

sudo apt-get install libav-tools

16
FFMPEG non è obsoleto. AvConv è stato un fork che ha deciso di inserire quel messaggio quando qualcuno lo ha chiamato con il nome dell'eseguibile FFMPEG
David Davies-Jones,

2
PER TUA INFORMAZIONE. A partire dal 18.04, libav-tools e avconv non sono più inclusi nei repository.
Kevin Bowen,

1
Il solo utilizzo ffmpegdiretto, come specificato nella domanda, funziona bene con ffmpeg 4.1.3 su macOS 10.14.4.
Radon Rosborough,

46

Il modo semplice per farlo è:

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

Se vuoi che uno script lo avvolga , prova aac2mp3 , che dovrebbe funzionare per te. (La sintassi dell'ultima istruzione è stata estratta da lì.) Codice incorporato incluso di seguito:

#!/bin/bash
#
# $Id: aac2mp3,v 1.2  03/30/2008 10:00 Daniel Tavares (dantavares@gmail.com) - 
# 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

1
Ottenuto (dopo molte righe di testo): Unknown encoder 'libmp3lame' Error! Exiting. Con apt-get posso vedere libmp3lame0e libmp3lame-dev. Ho provato a installare libmp3lame0, ma non è cambiato nulla.
Tom Brito,

1
ffmpegè stato sostituito da avconvnelle versioni più recenti di Ubuntu / Debian. Vedi askubuntu.com/questions/432542/… e installalibav-tools
Denilson Sá Maia

Questo non funziona perché ffmpeg non è nei repository di Ubuntu ... e non lo sono nemmeno avconv o libav-tools. Chiunque si occupi del software audio potrebbe smettere di giocare a piedi e accontentarsi di qualcosa di stabile?
Peter Flynn,

'EXT = "mp4"' deve essere modificato in 'EXT = "m4a"' in base alla domanda. Vorrei aggiungere il seguente testo esplicativo per semplificare la comprensione: '# ESEMPIO: converte tutti i file nella directory corrente con estensione # "m4a" in "mp3" # bash SCRIPT_NAME -b 256 -v'
Eduardo Lucio

A partire dal 15.04, ffmpeg è tornato nei repository : webupd8.org/2014/11/ffmpeg-returns-to-official-ubuntu.html A partire dal 18.04, libav-tools e avconv non sono più disponibili.
Kevin Bowen,

40

SoundConverter può farlo senza doversi preoccupare della riga di comando, ed è disponibile in Ubuntu Software Center:

Installa tramite il centro software

finestra principale e preferenze di soundcoverter

conversione in corso


Se hai i tuoi file taggati da MusicBrainz, trova un'altra soluzione: bugs.launchpad.net/soundconverter/+bug/1174949
HDave

3
Cristo su una stampella, che casino. Soundconverter fallì perché a Python mancavano alcuni pacchetti, quindi aprì una finestra di installazione per oltre 20 pacchetti in più, nessuno dei quali poteva installare, ovviamente, perché non funzionava come root, ovviamente. Qualcuno deve riscrivere il programma di installazione e le dipendenze.
Peter Flynn,

Il programma non carica Ubuntu 14.04

al momento c'è un bug nel soundconverter relativo a m4a: bugs.launchpad.net/soundconverter/+bug/1512007
krumpelstiltskin

5
Sto cercando di evitare di scherzare con la gui: voglio automatizzarla.
ctrl-alt-delor,

16

Avevo bisogno di una soluzione alternativa perché - i miei file si trovavano in sottodirectory ricorsive - avevo spazi nei percorsi.

Quindi alla fine mi sono accontentato di:

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

Quindi cancellati i file originali:

find . -type f -name '*.m4a' -exec bash -c 'rm "$0"' '{}' \;

3
Per me questa è la risposta migliore. Un piccolo punto: la cancellazione può essere espressa in modo più succinto come:find . -type f -name '*.m4a' -delete
Mark Slater,

2
Ho modificato il comando aggiungendo -y e -b: un 256k per assicurarsi che il programma non si fermasse per chiedere il permesso di sovrascrivere i file mp3 esistenti e per una migliore qualità (anche se non ho riconosciuto una differenza tra l'output standard di 128kbit / s (che era solo la metà del bitrate del mio m4a originale): find. -type f -name '* .m4a' -exec bash -c 'avconv -i "$ 0" -y -b: a 256k " $ {0 /% m4a / mp3} "'' {} '\;
Ben

1
Questo comando può essere utilizzato correttamente sostituendo 'ffmpeg' con 'avconv'.
Kevin Bowen,

9

Ho creato uno script per farlo.

Le mie esigenze erano:

  • Deve mantenere il maggior numero possibile di tag
  • Deve conservare la copertina dell'album se esiste
  • Deve essere mp3 320K

Funziona su tutti i file m4a in una directory e genera i nuovi Mp3 brillanti in una cartella creata dallo script chiamata Mp3. Avvertimento; questo script sovrascrive gli Mp3 esistenti nella cartella di output se hanno lo stesso nome. Utilizza anche i file 'metadata.txt' e 'metadata2.txt' come file temporanei.

Dovrai installare avconv se non esiste già.

Non sono riuscito a capire come mantenere il tag 'Anno' nei tag ID3v1, quindi non ho abilitato quell'opzione.

#!/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

Salvalo come "convert.b", quindi esegui lo script digitando:

% bash convert.b

Questo è esattamente quello che sto cercando.
Rom098,

script killer, cambia avconvin ffmpege che ha fatto il lavoro. Aggiorna la risposta per includere la spiegazione dei vari comandi!
George Udosen, il

5

A volte avconv e ffmpeg non funzionano in modo così pulito, quindi:

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

funziona sempre per me.



1

Sul mio L-Ubuntu, libav-toolsnon era disponibile. Ho installato winff:

sudo apt-get install winff

che fornisce uno strumento grafico per convertire file audio e video da e in molti formati diversi.

Appena provato: tutto funziona bene per .m4aal .mp3:-)

Altrimenti vlcfa anche un ottimo lavoro nella riproduzione di .m4afile:

sudo apt-get install vlc


0

Script Nautilus

Questo script Nautilus consente all'utente di convertire i file selezionati come i file m4a , salvando qualsiasi file mp3 o non audio, in formato mp3 nella stessa posizione usando ffmpeg . I nuovi file mp3 avranno il bitrate variabile più alto e manterranno la maggior parte dei tag, tranne l'anno .

#!/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

0

So che questa domanda è un po 'vecchia, ma penso che le persone vedano ancora questa domanda (come me), quindi condivido ciò che ho scoperto che ha funzionato per me e ha una bella interfaccia utente: fre: ac ( https: //www.freac .org / ). Per usare in Ubuntu basta scaricare il file binario per Ubuntu, decomprimere ed eseguire il file calle freac, tutto qui. Godere!


0

Vecchia domanda, ma non vedo una soluzione molto semplice: utilizzare VLC

In VLC puoi caricare un file .m4a e convertirlo in .MP3 molto facilmente.

  1. Apri VLC (non è necessario caricare alcun file)

  2. Fai clic su Media o premi CTRL + R

  3. Fai clic su Converti / Salva

  4. Nel profilo selezionare MP3

  5. Seleziona destinazione

  6. Fai clic su Start e attendi. Per sapere se sta facendo qualcosa o no, guarda la barra del tempo.

Spero che questo sia utile per qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.