MP3'ü AAC'ye dönüştürmek için FFmpeg komutu


18

Bu komutu verebilirim:

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a 

m4a dosyası oluşturmak için.

Ama bu emri verdiğimde

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac

ffmpeg söyleyerek bir hata atıyor

Çıkış dosyası # 0 için başlık yazılamadı (yanlış kodlayıcı parametreleri?).

Ayrıca, m4a dosyasının boyutu gerçekten de orijinal dosyadan neredeyse 5.8 kat daha büyük. Bu kesinlikle istediğimde değil ve neden AAC'ye dönüştürmek istediğimde.

Yanıtlar:


37

AAC'ye nasıl dönüştürebilirim?

Bu, girişi en yüksek kalitede AAC FFmpeg kullanarak AAC sesine dönüştürmek için kullanılan en temel FFmpeg komutudur. libfdk_aacFraunhofer AAC kodlayıcısıdır ve FFmpeg'i destekli olarak derlediğinizde kullanılabilir.

ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a

Kaliteyi değiştirmek için iki seçeneğiniz vardır:

  • Değişken bit hızı (VBR) için -vbrseçeneği kullanın. Örneğin, -vbr 4iyi bir seçimdir (stereo ses için kabaca 128 kBit / s). Yüksek, daha iyi demektir. Değerler 1 ile 5 arasındadır.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • Sabit bit hızı (CBR) -b:aiçin, örneğin seçeneğini kullanın -b:a 128k. 128 kBit / s çoğu durumda yeterince iyi olmalıdır. Sıklıkla daha düşük bir şey de seçebilirsiniz.

    ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
    

Düşük bit hızları için en uygun olan varsayılan AAC-LC (düşük karmaşıklık) profili yerine HE-AAC (v1 / v2) de kullanabilirsiniz:

ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a

Ya ben yoksa libfdk_aac?

Bazı FFmpeg sürümleri yoktur libfdk_aac(lisans nedeniyle). Bu durumda, yerleşik AAC kodlayıcısını kullanabilirsiniz:

ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a

Bu kodlayıcı VBR'yi düzgün bir şekilde desteklemiyor, bu nedenle veya HE-AAC'ye ihtiyacınız varsa, okumaya devam edin.

Ffmpeg'i kendiniz derleyebilir ve libfdk_aacdestek ekleyebilirsiniz . FFmpeg Wiki'de rehberler var . Derleme Linux'ta kolaydır, OS X'te orta derecede kolaydır ve Windows'ta zordur. Derleme kılavuzlarını takip ettiğinizde ve uygun kütüphaneleri daha önce kurduğunuzda, FFmpeg şimdi size kullanım seçeneği sunar libfdk_aac.


Orijinal yaklaşımınızla ilgili bazı problemler vardı:

  • alacAAC değil. ALAC, Apple Kayıpsız Ses Kodek , AAC ise Gelişmiş Ses Kodlama'dır .

  • Bu yüzden çıktınız girişten daha büyük, çünkü MP3'ün aksine, ALAC hala sıkıştırılıyor, ancak kayıpsız olması gerekiyor - bu yüzden daha fazla veri depolaması gerekiyor.

  • .aacALAC ses için bir çıkış kabı değildir. AAC kullanıyorsanız, bu çalışması gerekir. Yine de MP4 veya M4A kullanırdım.


12.04 Ubuntu'da bir seçeneği kullanamadım -c:a, bunun eş anlamlısı var mı? Sanırım bunun anlamı olabilir -acodec:aama sonunda onu düşürdüm ffmpegve istenen çıktı dosyasının adını temel alan bir kod çözücüyü bulabildim. (Gereksinim var -strict experimental; ve -map_metadata 0:0ID3 etiketlerini korumak için iyi önlem almak için fırlattım .)
1313

Ayrıca kayda değer: M4B dosyalarını (sesli kitaplar) istedim, bu ffmpegdestekleyici görünmüyor, ancak M4A'ya dönüştürülüyor ve sonra yeniden adlandırmanın işe yaradığı görünüyor.
üçlü

@tripleee Bu, denilen eski bir programı kullandığınız anlamına gelir ffmpeg, ancak gerçekten FFmpeg'den değil, Libav çatalındandır. Ubuntu ne yazık ki "gerçek" ffmpeg yerine paketledi. Bkz: Kim bana ffmpeg, libav ve avconv arasındaki farkı ve ilişkiyi söyleyebilir
slhck

@slhck: Hızlı güncelleme ve bağlantı için teşekkürler!
üçlü

1
@tripleee Aslında hayır, .m4a dosyaları .mp4 ile aynıdır (bu yalnızca ses içeren mp4 dosyaları için adlandırılan bir kuraldır), ancak .aac'den farklı bir biçime sahiptir (bu bir ADTS akışı olarak bilinir). Ayrıca FFmpeg’i ADTS biçiminde çıktı ekleyerek zorlayabilirsiniz -f adts.
Bigue Nique

3

Zeranoe Windows Kurucular için AAC'ye kolay dönüştürme

ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a

Libfaac veya libfdk_aac yerine "aac" kullanın: https://trac.ffmpeg.org/wiki/Encode/AAC

"FFmpeg üç AAC-LC kodlayıcıyı (aac, libfaac, libfdk_aac) ve bir HE-AAC (v1 / 2) kodlayıcıyı (libfdk_aac) destekleyebilir. Libfaac ve libfdk_aac lisansları GPL ile uyumlu değildir, bu nedenle GPL izin vermez GPL lisanslı kod da eklendiğinde, bu lisanslar altında lisanslı kodu içeren ikili dosyaların dağıtımı.


2
libfaacdestek 3.2'den itibaren de kaldırılmıştır.
slhck
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.