M4a ses dosyasını mp3'e nasıl dönüştürebilirim?


64

Aşağıdaki komutu kullanarak .m4abir .mp3dosyayı bir dosyaya dönüştürmeye çalıştım ffmpeg:

$ ffmpeg -i music.m4a music.mp3

Ne yazık ki, çıktı olarak döndürülen sıfır bayt boyutlu bir dosya aldım. Komutun çıktısı aşağıdaki gibidir:

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

Bir .m4ases dosyasını bir .mp3dosya formatına nasıl dönüştürebilirim?


1
Avconv yükleyin ve bu betiği kullanın: gist.github.com/bradenbest/cfba10c9df4b4c0daaab . Ayrıca hangi ses formatlarını dönüştürdüğünüzü değiştirmek için fformatve yapılandırabilirsiniz tformat.
Braden Best

Yanıtlar:


51

Bu benim için Ubuntu 14.04'te çalıştı:

avconv -i input.m4a ouptut.mp3

Bu avconvkomutu almak için libav-tools programını kurun Libav-tools yükleyin:

sudo apt-get install libav-tools

16
FFMPEG onaylanmadı. AvConv, birileri FFMPEG tarafından yürütülebilir ismiyle çağrıldığında bu mesajı iletmeye karar veren bir çataldı
David Davies-Jones

2
Bilginize. 18.04 itibariyle libav-tools ve avconv artık repolara dahil edilmiyor.
Kevin Bowen

1
Sadece ffmpegdoğrudan kullanmak , soruda belirtildiği gibi, macOS 10.14.4'te ffmpeg 4.1.3 ile benim için iyi çalışıyor.
Radon Rosborough

44

Bunu yapmanın basit yolu:

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

Bir betiğin bunu sarmasını istiyorsanız, sizin için çalışması gereken aac2mp3'ü deneyin . (Bu son ifadenin sözdizimi oradan alınmıştır.) Satır içi kodu aşağıda verilmiştir:

#!/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
Got (metnin sonra birçok hat): Unknown encoder 'libmp3lame' Error! Exiting. Apt-get ile görebiliyorum libmp3lame0ve libmp3lame-dev. Libmp3lame0 programını kurmaya çalıştım ama hiçbir şey değişmedi.
Tom Brito,

1
ffmpegdaha avconvyeni Ubuntu / Debian sürümlerinde yerini aldı . Askubuntu.com/questions/432542/… adresine bakın ve yükleyinlibav-tools
Denilson Sá Maia

Bu işe yaramaz çünkü ffmpeg Ubuntu depolarında bulunmaz ... ve avconv veya libav-tools değildir. Ses yazılımı sorumlusu kim olursa olsun lütfen dolaşmayı bırakıp durağan bir şeye razı olabilir mi?
Peter Flynn

'EXT = "mp4"' sorusuna göre 'EXT = "m4a"' olarak değiştirilmelidir. Anlayışı basitleştirmek için aşağıdaki açıklayıcı metni ekleyeceğim: '# ÖRNEK: Geçerli dizindeki tüm dosyaları # "m4a" uzantılı "mp3" e dönüştürecek # bash SCRIPT_NAME -b 256 -v'
Eduardo Lucio

15.04 tarihi itibariyle ffmpeg depolara geri döndü: webupd8.org/2014/11/ffmpeg-returns-to-official-ubuntu.html 18.04 tarihinden itibaren libav-tools ve avconv artık kullanılamıyor.
Kevin Bowen

40

SoundConverter bunu komut satırında uğraşmak zorunda kalmadan yapabilir ve Ubuntu Yazılım Merkezinde bulunur:

Yazılım merkezi üzerinden kurun

soundcoverter ana penceresi ve tercihleri

dönüşüm devam ediyor


Dosyalarınız MusicBrainz tarafından etiketlenmişse, başka bir çözüm bulun: bugs.launchpad.net/soundconverter/+bug/1174949
HDave

3
Bir koltuk değneği üzerinde İsa, ne dağınıklık. Soundconverter başarısız oldu, çünkü Python bazı paketleri kaçırıyordu, sonra 20'den fazla paket için bir yükleyici penceresi açtı, tabii ki hiçbiri yükleyemedi, tabii ki root olarak çalışmadığı için. Birisi yükleyiciyi ve bağımlılıkları yeniden yazmalı.
Peter Flynn

Program Ubuntu'yu

Şu anda m4a ile ilgili soundconverter'da bir hata var: bugs.launchpad.net/soundconverter/+bug/1512007
krumpelstiltskin

5
GUI ile uğraşmaktan kaçınmaya çalışıyorum: Otomatikleştirmek istiyorum.
ctrl-alt-delor

16

Alternatif bir çözüme ihtiyacım vardı çünkü - dosyalarım özyinelemeli alt dizinlerde oturuyordu - yollarda boşluklar vardı.

Böylece sonunda yerleştim:

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

Ardından orijinal dosyaları silindi:

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

3
Benim için en iyi cevap bu. Küçük bir nokta - silme daha kısaca şöyle ifade edilebilir:find . -type f -name '*.m4a' -delete
Mark Slater

2
-Y ve -b: 256k ekleyerek komutu değiştirdim, programın mevcut mp3 dosyalarının üzerine yazma izni ve daha iyi bir kalite için izin istemediğinden emin olmak için (standart çıktı arasındaki farkı tanımadım) 128kbit / s (ki benim orijinal m4a'mın sadece bit hızının yarısıydı): Bulun. $ {0 /% m4a / mp3} "'' {} '\;
Ben

1
Bu komut, 'avconv' yerine 'ffmpeg' yazılarak başarıyla kullanılabilir.
Kevin Bowen

9

Bunu yapmak için bir senaryo oluşturdum.

Gereksinimlerim:

  • Mümkün olduğunca çok etiket tutmalı
  • Varsa albüm resmini korumalıdır
  • 320K mp3 olmalı

Bir dizindeki tüm m4a dosyaları üzerinde çalışır ve yeni parlak Mp3'leri, betiğin Mp3 adlı bir klasöre çıkarır. Uyarı; Bu komut dosyası, aynı isme sahipse, çıkış klasöründeki mevcut Mp3'lerin üzerine yazar. Ayrıca geçici dosyalar olarak 'metadata.txt' ve 'metadata2.txt' dosyalarını kullanır.

Henüz yoksa, avconv'u yüklemeniz gerekir.

'Year' etiketini ID3v1 etiketlerine nasıl koyacağımı bulamadım, bu yüzden bu seçeneği etkinleştirmedim.

#!/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' olarak kaydedin ve sonra betiği yazarak çalıştırın:

% bash convert.b

Bu tam olarak aradığım şey.
Rom098

Katil komut değiştirmek avconviçin ffmpegve bu işi yaptım. Lütfen çeşitli komutlar için açıklama eklemek üzere cevabı güncelleyin!
George Udosen

5

Bazen avconv ve ffmpeg çok temiz çalışmaz, bu yüzden:

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

her zaman benim için çalışıyor.



1

Benim L-Ubuntu'mda libav-toolsmevcut değildi. Kurdum winff:

sudo apt-get install winff

Bu, ses ve video dosyalarını birçok farklı biçime dönüştürmek için grafiksel bir araç sağlar.

Sadece çalıştı: ne için çalışıyor .m4aiçin .mp3:-)

Aksi takdirde vlc, .m4adosya oynatırken iyi bir iş çıkarır :

sudo apt-get install vlc


0

Nautilus Betiği

Bu Nautilus Script , kullanıcının m4a dosyaları gibi seçili dosyaları / dosyaları - herhangi bir mp3 veya ses dosyası atlamaması - ffmpeg kullanarak aynı konumda mp3 formatına dönüştürmesini sağlar . Yeni mp3 dosyaları en yüksek değişken bit hızına sahip olacak ve yıl hariç çoğu etiketi koruyacak .

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

Bu sorunun biraz eski olduğunu biliyorum, ancak bence insanlar hala bu soruyu görüyor (benim gibi), bu yüzden benim için işe yarayan ve güzel bir kullanıcı arayüzü olan bulduklarını paylaşıyorum: fre: ac ( https: //www.freac .org / ). Ubuntu'da kullanmak için sadece ubuntu'nun ikili dosyasını indirin, sıkıştırın ve calle dosyasını çalıştırın freac. Keyfini çıkarın!


0

Eski soru, ama çok basit bir çözüm göremiyorum: VLC kullan

VLC size bir yükleyebilirsiniz .m4a dosya ve dönüştürmek .mp3 çok easyllie.

  1. VLC'yi açın (herhangi bir dosya yüklemeye gerek yok)

  2. Medyaya tıklayın veya CTRL + R tuşlarına basın

  3. Conver / Save üzerine tıklayın

  4. Açık Profil seçme MP3

  5. Varış yerini seçin

  6. Başlat'a tıklayın ve bekleyin. Bir şey yapıp yapmadığını bilmek, zaman çubuğuna bak.

Umarım bu birisi için faydalı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.