M4A 사운드 파일을 MP3로 변환하는 방법?


64

다음 명령을 사용하여 .m4a파일을 파일 로 변환하려고했습니다 ..mp3ffmpeg

$ ffmpeg -i music.m4a music.mp3

불행히도, 나는 0 바이트 크기의 파일을 출력으로 반환했습니다. 명령 출력은 다음과 같습니다.

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

.m4a사운드 파일을 .mp3파일 형식으로 변환하려면 어떻게 해야합니까?


1
avconv를 설치하고 다음 스크립트를 사용하십시오 : gist.github.com/bradenbest/cfba10c9df4b4c0daaab . 변환 할 오디오 형식을 변경 하도록 fformattformat변수를 구성 할 수도 있습니다 .
Braden Best 23

답변:


51

이것은 우분투 14.04에서 나를 위해 일했습니다.

avconv -i input.m4a ouptut.mp3

avconv명령 을 얻으려면 libav-tools를 설치 하십시오libav-tools 설치 .

sudo apt-get install libav-tools

16
FFMPEG는 더 이상 사용되지 않습니다. AvConv는 누군가가 FFMPEG 실행 파일 이름으로 메시지를 불렀을 때 그 메시지를 넣기로 결정한 포크였습니다
David Davies-Jones

2
참고로 18.04부터 libav-tools 및 avconv는 더 이상 repos에 포함되지 않습니다.
Kevin Bowen

1
ffmpeg질문에 지정된대로 직접 사용 하면 macOS 10.14.4의 ffmpeg 4.1.3에서 제대로 작동합니다.
라돈 로스 버러

44

이를 수행하는 간단한 방법은 다음과 같습니다.

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

스크립트를 감싸고 싶다면 aac2mp3을 사용해보십시오 . (마지막 문장의 구문은 거기에서 가져 왔습니다.) 인라인 코드는 다음과 같습니다.

#!/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
얻었습니다 (여러 줄의 텍스트 후) : Unknown encoder 'libmp3lame' Error! Exiting. apt-get을 사용하면 libmp3lame0및 을 볼 수 있습니다 libmp3lame-dev. libmp3lame0을 설치하려고했지만 아무것도 변경되지 않았습니다.
Tom Brito

1
ffmpegavconv최신 Ubuntu / Debian 릴리스에서 로 대체되었습니다 . 참조 askubuntu.com/questions/432542/... 설치libav-tools
데닐손 Sá 마이 아

ffmpeg가 Ubuntu 저장소에없고 avconv 또는 libav-tools가 아니기 때문에 작동하지 않습니다. 오디오 소프트웨어를 담당하는 사람이 주위를 멈춰서 안정된 것에 정착 할 수 있습니까?
피터 플린

질문에 따라 'EXT = "mp4"'를 'EXT = "m4a"'로 변경해야합니다. 나는 이해 간단하게 다음과 같은 설명 텍스트를 추가합니다 : '# 예제 : 확장 # "M4A"에서 "MP3"# 강타 SCRIPT_NAME -b 256 -v와 현재 디렉토리에있는 모든 파일을 변환 할 것인가'
에두아르도 루시오

15.04 현재 ffmpeg는 repos에 다시 있습니다. webupd8.org/2014/11/ffmpeg-returns-to-official-ubuntu.html 18.04부터 libav-tools 및 avconv는 더 이상 사용할 수 없습니다.
Kevin Bowen

40

SoundConverter 는 명령 줄을 어지럽히 지 않고도이 작업 을 수행 할 수 있으며 Ubuntu Software Center에서 사용할 수 있습니다.

소프트웨어 센터를 통해 설치

사운드 커버 기본 창 및 기본 설정

전환 진행


MusicBrainz로 태그가 지정된 파일이 있으면 다른 해결책을 찾으십시오. bugs.launchpad.net/soundconverter/+bug/1174949
HDave

3
목발에 그리스도, 얼마나 엉망입니다. Python에 일부 패키지가 없기 때문에 Soundconverter가 실패한 후 20 개 이상의 패키지에 대한 설치 프로그램 창이 나타 났으며, 물론 루트로 실행되지 않았기 때문에 설치할 수 없었습니다. 누군가 설치 프로그램과 종속성을 다시 작성해야합니다.
피터 플린

프로그램이 우분투 14.04를로드하지 못함

m4a와 관련된 soundconverter에 버그가 있습니다 : bugs.launchpad.net/soundconverter/+bug/1512007
krumpelstiltskin

5
나는 GUI를 어지럽히 지 않으려 고 노력하고 있습니다. 자동화하고 싶습니다.
ctrl-alt-delor

16

파일이 재귀 하위 디렉토리에 있고 경로에 공백이 있기 때문에 대체 솔루션이 필요했습니다.

그래서 나는 결국 정착했습니다.

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

그런 다음 원본 파일을 삭제했습니다.

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

3
나에게 이것은 최고의 대답입니다. 작은 요점-삭제는 다음과 같이 간결하게 표현 될 수 있습니다.find . -type f -name '*.m4a' -delete
Mark Slater

2
-y 및 -b : a 256k를 추가하여 프로그램이 기존 mp3 파일을 덮어 쓸 수있는 권한을 요구하지 않고 품질이 향상되도록 표준 명령의 차이를 인식하지 못했지만 명령을 수정했습니다. -128kbit / s (원래 m4a의 비트 전송률의 절반에 불과 함) : 찾기. -type f -name '* .m4a'-exec bash -c 'avconv -i "$ 0"-y -b : a 256k " $ {0 / % m4a / mp3} " ''{} '\;
Ben

1
이 명령은 'avconv'를 'ffmpeg'로 대체하여 사용할 수 있습니다.
Kevin Bowen

9

이를 위해 스크립트를 만들었습니다.

내 요구 사항은 다음과 같습니다.

  • 가능한 많은 태그를 유지해야합니다
  • 존재하는 경우 앨범 아트 워크를 유지해야합니다
  • 320K mp3 여야합니다

디렉토리의 모든 m4a 파일에서 작동하며, 새 반짝이는 Mp3를 스크립트가 만든 Mp3라는 폴더로 출력합니다. 경고; 이 스크립트는 이름이 같은 출력 폴더의 기존 Mp3를 덮어 씁니다. 또한 'metadata.txt'및 'metadata2.txt'파일을 임시 파일로 사용합니다.

avconv가 없으면 설치해야합니다.

'Year'태그를 ID3v1 태그에 유지하는 방법을 알 수 없으므로 해당 옵션을 활성화하지 않았습니다.

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

'convert.b'로 저장 한 후 다음을 입력하여 스크립트를 실행하십시오.

% bash convert.b

이것이 바로 내가 찾는 것입니다.
Rom098

킬러 스크립트는 변경 avconvffmpeg하고 그 일을했다. 다양한 명령에 대한 설명을 포함하도록 답변을 업데이트하십시오!
조지 우도 센

5

때때로 avconv와 ffmpeg는 그렇게 깨끗하게 작동하지 않습니다.

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

항상 나를 위해 작동합니다.



1

내 L- 우분투에서는 libav-tools사용할 수 없었습니다. 나는 설치했다 winff:

sudo apt-get install winff

오디오 및 비디오 파일을 다양한 형식으로 변환하는 그래픽 도구를 제공합니다.

그냥 시도 : 그것은을 위해 잘 작동 .m4a.mp3:-)

그렇지 않으면 파일 vlc재생도 훌륭 .m4a합니다.

sudo apt-get install vlc


0

노틸러스 스크립트

노틸러스 스크립트를 사용하면 ffmpeg를 사용하여 m4a 파일 과 같은 선택된 파일을 mp3 또는 오디오가 아닌 파일을 건너 뛰는 등 의 동일한 위치에서 mp3 형식 으로 변환 할 수 있습니다 . 새 mp3 파일은 가변 비트 전송률가장 높고 year를 제외한 대부분의 태그를 유지 합니다 .

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

나는이 질문이 조금 오래되었다는 것을 알고 있지만 사람들은 여전히이 질문을 볼 수 있다고 생각합니다 (나와 같은). 나는 내가 찾은 것을 나에게 효과적이며 멋진 UI를 가지고 있음을 공유한다 : fre : ac ( https : //www.freac .org / ). 우분투에서 사용하려면 우분투 바이너리를 다운로드하고 calle 파일의 압축을 풀고 실행하십시오 freac. 즐겨!


0

오래된 질문이지만 매우 간단한 해결책은 없습니다 .VLC 사용

VLC에서는 .m4a 파일을 로드하고 .MP3로 매우 쉽게 변환 할 수 있습니다 .

  1. VLC 열기 (파일을로드 할 필요 없음)

  2. 미디어를 클릭 하거나 Ctrl + R을 누릅니다.

  3. Conver / Save를 클릭 하십시오

  4. 프로필 을 선택 MP3

  5. 목적지 선택

  6. 시작을 클릭 하고 기다리십시오. 그것이 무언가를하고 있는지 아닌지를 알기 위해서는 타임 바를보십시오.

나는 이것이 누군가에게 유용하기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.