Her şeyden önce, -aq
kalite tabanlı bir değişken bit hızı ayarlar - Bence aradığınızı düşünüyorum -ab
(ben bir ffmpeg kullanıcısı olduğumu unutmayın, bu yüzden avconv sözdizimi bilgim sınırlıdır - ne kadar sürüklendiğine dair hiçbir fikrim yok çatal).
Ne olursa olsun, dahili avconv / ffmpeg AAC kodlayıcı oldukça kötüdür.
fdk_aac
Avconv / ffmpeg için tek gerçekten iyi AAC kodlayıcı libfdk_aac'tır - ancak bunun lisansı GPL ile uyumsuzdur, bu yüzden ona erişmek için kendiniz derlemeniz gerekir (bu bir ffmpeg derleme kılavuzu, çünkü avconv için bir tane bilmiyorum - Ubuntu kılavuzu Debian için iyi olmalı, çünkü orada Ubuntu'ya özgü bir şey olduğunu düşünmüyorum).
Elinize geçtikten sonra AAC kodlama kılavuzunu izleyin ; Fdk_aac'ın -vbr
seçeneğini denemenizi şiddetle tavsiye ederim - denediğim tüm dosyalarda bana 3 şeffaf ses ayarı, daha yüksek bir bit hızının plasebounu istiyorsanız veya ses mühendisi iseniz, 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Gerek yok -map_metadata
, çünkü ffmpeg otomatik olarak meta verileri aktaracaktır (ve avconv'un da emin olacağından eminim).
Sabit bit hızı 320 kbit / s (ciddi olarak, buna değmez, AAC, yaklaşık 128 kbit / s civarında orijinal CD sese karşı ses şeffaflığı sağlar):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroaacenc
Nero'nun AAC kodlayıcısı fdk_aac ve qaac (Quicktime AAC) ile aynı düzeyde düşünülmelidir. Farklı insanlar hangisinin daha iyi olduğuna dair farklı görüşler verecektir, ancak sadece çok düşük bit hızlarında herhangi bir fark göreceksiniz ve herkes hepsinin çok yüksek kalitede olduğunu kabul ediyor.
neroAacEnc
kullanılabilir Nero web sitesinden . Sıkıştırın ve $ PATH'nıza bir yere koyun.
Ne yazık ki neroAacEnc
WAV sesini yalnızca giriş olarak alabilir; kod çözücü olarak avconv veya ffmpeg kullanarak bu sorunu çözebilirsiniz:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Ne yazık ki, bu meta verileri çıkarır; aktarmak için avprobe / ffprobe (with -show_format
) komutunu kullanın ve eklemek için neroAacTag kullanın. Bir bash betiği muhtemelen sıraya girerdi.
NeroAacEnc'deki HydrogenAudio sayfasına bakın : bellekten -q
0,4 ayarı bana harika geliyordu. Sen bir bit hızı hedefleyebilir -br
(yine, ben bu olacağını düşünüyorum yolu overkill):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDIT: burada ses dosyalarını neroAacEnc ile m4a'ya dönüştürmek, sonra ffprobe ve neroAacTag ile etiketlemek için bir komut dosyasıdır (hepsinin $ PATH içindeki bir dizinde olmasını gerektirir). Birden fazla girdi dosyası alabilir, bu nedenle olarak convert-to-m4a
kaydederseniz, bir dizindeki her FLAC dosyasını
convert-to-m4a *.flac
Sadece FLAC dosyalarıyla sınırlı değildir; ffmpeg / avconv'nizin kodunu çözebileceği tüm ses formatları çalışır. Ffprobe ve ffmpeg'i avprobe ve avconv olarak değiştirmek isteyebilirsiniz:
#!/usr/bin/env bash
until [[ "$1" = '' ]]; do
ffmpeg -i "$1" -f wav - | neroAacEnc -if - -ignorelength -q 0.4 "${1%.*}.m4a"
tags=()
while read -r; do
tags+=("$REPLY")
done < <(ffprobe -i "$1" -show_format 2>/dev/null | sed -ne 's/date/year/' -e '/TAG:/s/TAG/-meta/p')
neroAacTag "${1%.*}.m4a" "${tags[@]}"
shift
done
exit 0