¿Cómo convertir un archivo de sonido m4a a mp3?

65

Traté de convertir un .m4aarchivo a un .mp3archivo usando ffmpegel siguiente comando:

$ ffmpeg -i music.m4a music.mp3

Desafortunadamente, recibí un archivo de tamaño de cero bytes devuelto como salida. El resultado del comando es el siguiente:

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

¿Cómo puedo convertir un .m4aarchivo de sonido a un .mp3formato de archivo?

Tom Brito
fuente
1
Instale avconv y use este script: gist.github.com/bradenbest/cfba10c9df4b4c0daaab . También puede configurar los fformaty tformatvars para cambiar los formatos de audio entre los que está convirtiendo.
Braden Best

Respuestas:

51

Esto funcionó para mí en Ubuntu 14.04:

avconv -i input.m4a ouptut.mp3

Para obtener el avconvcomando, instale libav-tools Instalar libav-tools :

sudo apt-get install libav-tools
teknopaul
fuente
16
FFMPEG no está en desuso. AvConv fue una bifurcación que decidió poner ese mensaje cuando alguien lo llamó por el nombre ejecutable de FFMPEG
David Davies-Jones el
2
FYI. A partir de 18.04, libav-tools y avconv ya no se incluyen en repos.
Kevin Bowen
1
Solo usar ffmpegdirectamente, como se especifica en la pregunta, funciona bien para mí con ffmpeg 4.1.3 en macOS 10.14.4.
Radon Rosborough
46

La forma simple de hacerlo es:

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

Si desea que un script lo ajuste , intente con aac2mp3 , que debería funcionar para usted. (La sintaxis de esa última declaración se extrajo de allí). Código en línea incluido a continuación:

#!/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
usuario26700
fuente
1
Dieron (después de muchas líneas de texto): Unknown encoder 'libmp3lame' Error! Exiting. Con apt-get puedo ver libmp3lame0y libmp3lame-dev. Intenté instalar libmp3lame0, pero nada cambió.
Tom Brito
1
ffmpegha sido reemplazado por avconvversiones más recientes de Ubuntu / Debian. Ver askubuntu.com/questions/432542/… e instalarlibav-tools
Denilson Sá Maia
Esto no funciona porque ffmpeg no está en los repositorios de Ubuntu ... y tampoco lo están avconv o libav-tools. ¿Quien esté a cargo del software de audio puede dejar de andar por ahí y decidirse por algo estable?
Peter Flynn
'EXT = "mp4"' debe cambiarse a 'EXT = "m4a"' según la pregunta. Añadiría el siguiente texto explicativo para simplificar la comprensión: '# EJEMPLO: convertirá todos los archivos en el directorio actual con la extensión # "m4a" a "mp3" # bash SCRIPT_NAME -b 256 -v'
Eduardo Lucio
A partir del 15.04, ffmpeg está de vuelta en los repositorios : webupd8.org/2014/11/ffmpeg-returns-to-official-ubuntu.html A partir del 18.04, libav-tools y avconv ya no están disponibles.
Kevin Bowen
40

SoundConverter puede hacer esto sin tener que perder el tiempo en la línea de comandos, y está disponible en el Centro de software de Ubuntu:

Instalar a través del centro de software

ventana principal y prefs del convertidor de sonido

conversión en progreso

andrewsomething
fuente
Si tiene sus archivos etiquetados por MusicBrainz, busque otra solución: bugs.launchpad.net/soundconverter/+bug/1174949
HDave
3
Cristo en una muleta, qué desastre. Soundconverter falló porque Python no tenía algunos paquetes, luego apareció una ventana de instalación para más de 20 paquetes más, ninguno de los cuales pudo instalar, por supuesto, porque no se estaba ejecutando como root, por supuesto. Alguien necesita reescribir el instalador y las dependencias.
Peter Flynn
El programa no carga Ubuntu 14.04
actualmente hay un error en soundconverter relacionado con m4a: bugs.launchpad.net/soundconverter/+bug/1512007
krumpelstiltskin
55
Estoy tratando de evitar perder el tiempo con la interfaz gráfica de usuario: quiero automatizarlo.
ctrl-alt-delor
16

Necesitaba una solución alternativa porque, mis archivos estaban en subdirectorios recursivos, tenía espacios en las rutas.

Así que finalmente me decidí por:

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

Luego borró los archivos originales:

find . -type f -name '*.m4a' -exec bash -c 'rm "$0"' '{}' \;
artesano
fuente
3
Para mí, esta es la mejor respuesta. Un pequeño punto: la eliminación se puede expresar de manera más sucinta como:find . -type f -name '*.m4a' -delete
Mark Slater
2
Modifiqué el comando agregando -y y -b: un 256k para asegurarme de que el programa no deje de pedir permiso para sobrescribir los archivos mp3 existentes y para una mejor calidad (aunque no reconocí una diferencia entre la salida estándar de 128kbit / s (que era solo la mitad de la tasa de bits que habían tenido mis m4a originales): find. -type f -name '* .m4a' -exec bash -c 'avconv -i "$ 0" -y -b: a 256k " $ {0 /% m4a / mp3} "'' {} '\;
Ben
1
Este comando se puede utilizar con éxito sustituyendo 'ffmpeg' por 'avconv'.
Kevin Bowen
9

Creé un script para hacer esto.

Mis requisitos fueron:

  • Debe mantener tantas etiquetas como sea posible
  • Debe conservar la carátula del álbum si existe
  • Debe ser 320K mp3s

Funciona en todos los archivos m4a en un directorio y genera los nuevos Mp3 brillantes en una carpeta que el script crea llamada Mp3. Advertencia; este script sobrescribe los Mp3 existentes en la carpeta de salida si tienen el mismo nombre. También utiliza los archivos 'metadata.txt' y 'metadata2.txt' como archivos temporales.

Deberá instalar avconv si aún no existe.

No pude descubrir cómo persistir la etiqueta 'Año' en las etiquetas ID3v1, así que no habilité esa opción.

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

Guárdelo como 'convert.b' y luego ejecute el script escribiendo:

% bash convert.b
K0D4
fuente
Esto es exactamente lo que estoy buscando.
Rom098
guión asesino, cambie el avconvay ffmpegeso hizo el trabajo. ¡Actualice la respuesta para incluir una explicación de los diversos comandos!
George Udosen
5

A veces, avconv y ffmpeg no funcionan tan limpiamente, así que:

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

siempre funciona para mi

Eamonn Kenny
fuente
1

Probablemente necesite los paquetes libav sin restricciones en el repositorio de medibuntu. Personalmente, compilaría el último ffmpeg con todos los códecs, tan fácil como 123 http://ubuntuforums.org/showthread.php?t=786095

Duffydack
fuente
1
Si no desea compilar ffmpeg: sudo apt-get install libavcodec-extra-53
z7sg
1

En mi L-Ubuntu, libav-toolsno estaba disponible. Instalé winff:

sudo apt-get install winff

que proporciona una herramienta gráfica para convertir archivos de audio y video desde y en muchos formatos diferentes.

Acaba de intentar: funciona muy bien para .m4aque .mp3:-)

De lo contrario, vlctambién hace un gran trabajo reproduciendo .m4aarchivos:

sudo apt-get install vlc

FraSchelle
fuente
0

Nautilus Script

Este Nautilus Script permite al usuario convertir archivos seleccionados como archivos m4a , omitiendo cualquier archivo mp3 o que no sea de audio, a formato mp3 en la misma ubicación usando ffmpeg . Los nuevos archivos mp3 tendrán la tasa de bits variable más alta y conservarán la mayoría de las etiquetas, excepto el año .

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

Sé que esta pregunta es un poco vieja, pero creo que la gente todavía la ve (como yo), así que comparto lo que encontré que funcionó para mí y tiene una buena interfaz de usuario: fre: ac ( https: //www.freac .org / ). Para usar en ubuntu solo descarga el binario para ubuntu, descomprime y ejecuta el archivo calle freac, eso es todo. ¡Disfrutar!

Rodrigo E. Principe
fuente
0

Antigua pregunta, pero no veo una solución muy simple: usar VLC

En VLC puede cargar un archivo .m4a y convertirlo a .MP3 muy fácilmente.

  1. Abra VLC (no es necesario cargar ningún archivo)

  2. Haga clic en Medios o presione CTRL + R

  3. Haga clic en Conver / Guardar

  4. En Perfil seleccione MP3

  5. Seleccionar destino

  6. Haga clic en Inicio y espere. Para saber si está haciendo algo o no, mira la barra de tiempo.

Espero que esto sea útil para alguien.

iDon'tKnoware
fuente