Làm cách nào để chuyển đổi tập tin âm thanh m4a sang mp3?


65

Tôi đã cố gắng chuyển đổi một .m4atập tin thành một .mp3tập tin bằng ffmpeglệnh sau:

$ ffmpeg -i music.m4a music.mp3

Thật không may, tôi nhận được một tệp có kích thước byte bằng 0 được trả về làm đầu ra. Đầu ra của lệnh như sau:

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

Làm cách nào để chuyển đổi .m4atập tin âm thanh thành .mp3định dạng tập tin?


1
Cài đặt avconv và sử dụng tập lệnh này: gist.github.com/bradenbest/cfba10c9df4b4c0daaab . Bạn cũng có thể định cấu hình fformattformatvars để thay đổi định dạng âm thanh bạn đang chuyển đổi giữa.
Braden hay nhất

Câu trả lời:


51

Điều này làm việc cho tôi trên Ubuntu 14.04:

avconv -i input.m4a ouptut.mp3

Để có được avconvlệnh, hãy cài đặt libav-tools Cài đặt libav-tools :

sudo apt-get install libav-tools

16
FFMPEG không được phản đối. AvConv là một ngã ba quyết định đưa tin nhắn đó vào khi ai đó gọi nó bằng tên thực thi FFMPEG
David Davies-Jones

2
FYI. Kể từ ngày 18.04, libav-tools và avconv không còn được bao gồm trong repos.
Kevin Bowen

1
Chỉ cần sử dụng ffmpegtrực tiếp, như được chỉ định trong câu hỏi, hoạt động tốt với tôi với ffmpeg 4.1.3 trên macOS 10.14.4.
Radon Rosborough

45

Cách đơn giản để làm điều đó là:

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

Nếu bạn muốn một tập lệnh bao bọc nó, hãy thử aac2mp3 , tập lệnh này phù hợp với bạn. (Cú pháp cho câu lệnh cuối cùng được lấy từ đó.) Mã nội tuyến được bao gồm bên dưới:

#!/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
Có (sau nhiều dòng văn bản) : Unknown encoder 'libmp3lame' Error! Exiting. Với apt-get tôi có thể thấy libmp3lame0libmp3lame-dev. Tôi đã cố gắng cài đặt libmp3lame0, nhưng không có gì thay đổi.
Tom Brito

1
ffmpegđã được thay thế bằng avconvcác bản phát hành Ubuntu / Debian mới hơn. Xem Askubfox.com/questions/432542/ và cài đặtlibav-tools
Denilson Sá Maia

Điều này không hoạt động vì ffmpeg không có trong repos Ubuntu ... và cũng không phải là avconv hoặc libav-tools. Bất cứ ai phụ trách phần mềm âm thanh xin vui lòng dừng lại và giải quyết một cái gì đó ổn định?
Peter Flynn

'EXT = "mp4"' cần được thay đổi thành 'EXT = "m4a"' theo câu hỏi. Tôi sẽ thêm văn bản giải thích sau để đơn giản hóa việc hiểu: '# VÍ DỤ: Sẽ chuyển đổi tất cả các tệp trong thư mục hiện tại có phần mở rộng # "m4a" thành "mp3" # bash SCRIPT_NAME -b 256 -v'
Eduardo Lucio

Kể từ ngày 15.04, ffmpeg đã trở lại trong repos: webupd8.org/2014/11/ffmpeg-returns-to-official-ub Ubuntu.html Kể từ ngày 18.04, libav-tools và avconv không còn khả dụng.
Kevin Bowen

40

SoundConverter có thể thực hiện việc này mà không phải loay hoay trên dòng lệnh và nó có sẵn trong Trung tâm phần mềm Ubuntu:

Cài đặt qua trung tâm phần mềm

cửa sổ chính soundpackter và prefs

chuyển đổi đầu vào


Nếu bạn đã tập tin của bạn tagged by MusicBrainz, sau đó tìm một giải pháp khác: bugs.launchpad.net/soundconverter/+bug/1174949
HDave

3
Chúa Kitô trên một cái nạng, thật là một mớ hỗn độn. Soundconverter thất bại vì Python thiếu một số gói, sau đó nó xuất hiện một cửa sổ trình cài đặt cho hơn 20 gói, tất nhiên không có gói nào có thể cài đặt, vì dĩ nhiên, nó không chạy bằng root. Ai đó cần phải viết lại trình cài đặt và các phụ thuộc.
Peter Flynn

Chương trình không tải Ubuntu 14.04

hiện nay là một lỗi trong soundconverter liên quan đến m4a: bugs.launchpad.net/soundconverter/+bug/1512007
krumpelstiltskin

5
Tôi đang cố gắng tránh làm phiền với gui: Tôi muốn tự động hóa nó.
ctrl-alt-delor

16

Tôi cần một giải pháp thay thế bởi vì - các tệp của tôi đang nằm trong các thư mục con đệ quy - tôi có khoảng trắng trong các đường dẫn.

Vì vậy, cuối cùng tôi đã giải quyết cho:

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

Sau đó xóa các tập tin gốc:

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

3
Đối với tôi, đây là câu trả lời hàng đầu. Một điểm nhỏ - việc xóa có thể được thể hiện ngắn gọn hơn như sau:find . -type f -name '*.m4a' -delete
Mark Slater

2
Tôi đã sửa đổi lệnh bằng cách thêm -y và -b: 256k để đảm bảo chương trình không dừng lại để xin phép ghi đè lên các tệp mp3 hiện có và cho chất lượng tốt hơn (mặc dù tôi không nhận ra sự khác biệt giữa đầu ra tiêu chuẩn là 128kbit / s (chỉ bằng một nửa so với tốc độ bitcoin ban đầu của tôi): find. -type f -name '* .m4a' -exec bash -c 'avconv -i "$ 0" -y -b: a 256k " $ {0 /% m4a / mp3} "'' {} '\;
Ben

1
Lệnh này có thể được sử dụng thành công bằng cách thay thế 'ffmpeg' cho 'avconv'.
Kevin Bowen

9

Tôi đã tạo ra một kịch bản để làm điều này.

Yêu cầu của tôi là:

  • Phải duy trì càng nhiều thẻ càng tốt
  • Phải giữ lại tác phẩm nghệ thuật album nếu tồn tại
  • Phải là mp3 320K

Hoạt động trên tất cả các tệp m4a trong một thư mục và xuất ra các tệp Mp3 sáng bóng mới vào một thư mục mà tập lệnh tạo ra có tên là Mp3. Cảnh báo; tập lệnh này ghi đè lên các Mp3 hiện có trong thư mục đầu ra nếu chúng có cùng tên. Đồng thời sử dụng tệp 'metadata.txt' và 'metadata2.txt' làm tệp tạm thời.

Bạn sẽ cần cài đặt avconv nếu nó chưa tồn tại.

Tôi không thể tìm ra cách duy trì thẻ 'Năm' vào thẻ ID3v1, vì vậy tôi đã không bật tùy chọ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

Lưu nó dưới dạng 'convert.b', rồi chạy tập lệnh bằng cách gõ:

% bash convert.b

Đây chính xác là những gì tôi đang tìm kiếm.
Rom098

killer kịch bản, thay đổi avconvđến ffmpegvà đã làm công việc. Vui lòng cập nhật câu trả lời để bao gồm giải thích cho các lệnh khác nhau!
George Udosen

5

Đôi khi avconv và ffmpeg không hoạt động sạch sẽ, vì vậy:

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

luôn luôn làm việc cho tôi


1

Bạn có thể cần các gói libav không giới hạn trong kho lưu trữ medibfox. Cá nhân tôi sẽ biên dịch ffmpeg mới nhất với tất cả các codec, dễ dàng như 123 http://ubuntuforums.org/showthread.php?t=786095


1
Nếu bạn không muốn biên dịch ffmpeg: sudo apt-get install libavcodec-Extra-53
z7sg

1

Trên L-Ubuntu của tôi, libav-toolskhông có sẵn. Tôi đã cài đặt winff:

sudo apt-get install winff

cung cấp một công cụ đồ họa để chuyển đổi các tệp âm thanh và video từ và sang nhiều định dạng khác nhau.

Chỉ cần cố gắng: nó hoạt động tốt cho .m4ađến .mp3:-)

Mặt khác vlccũng làm một công việc tuyệt vời chơi .m4acác tập tin:

sudo apt-get install vlc


0

Tập lệnh Nautilus

Tập lệnh Nautilus này cho phép người dùng chuyển đổi (các) tệp đã chọn như các tệp m4a - cắt bất kỳ tệp mp3 hoặc tệp không âm thanh nào - sang định dạng mp3 ở cùng một vị trí bằng ffmpeg . Các tệp mp3 mới sẽ có bitrate biến cao nhất và bảo toàn hầu hết các thẻ, ngoại trừ năm .

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

Tôi biết câu hỏi này hơi cũ, nhưng tôi nghĩ mọi người vẫn thấy câu hỏi này (như tôi), vì vậy tôi chia sẻ những gì tôi đã tìm thấy có hiệu quả với tôi và có một giao diện người dùng đẹp: fre: ac ( https: //www.freac .org / ). Để sử dụng trong ubfox, chỉ cần tải xuống tệp nhị phân cho ubfox, giải nén và chạy tập tin freac, đó là nó. Thưởng thức!


0

Câu hỏi cũ, nhưng tôi không thấy một giải pháp rất đơn giản: Sử dụng VLC

Trong VLC, bạn có thể tải tệp .m4a và chuyển đổi thành .MP3 rất dễ dàng.

  1. Mở VLC (không cần tải bất kỳ tệp nào)

  2. Nhấp vào Media hoặc nhấn CTRL + R

  3. Nhấp vào Conver / Lưu

  4. Trên hồ sơ chọn MP3

  5. Chọn điểm đến

  6. Nhấp vào Bắt đầu và chờ đợi. Để biết nó có làm gì đó hay không, hãy nhìn vào thanh thời gian.

Tôi hy vọng điều này sẽ hữu ích cho ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.