Pertama-tama, -aq
tetapkan bit rate variabel berbasis kualitas - Saya pikir Anda sedang mencari -ab
(perhatikan bahwa saya adalah pengguna ffmpeg, jadi pengetahuan saya tentang sintaks avconv terbatas - Saya tidak tahu seberapa jauh itu telah melayang sejak garpu).
Apapun, enkoder AAC avconv / ffmpeg bawaan cukup buruk.
fdk_aac
Satu-satunya encoder AAC yang sangat bagus untuk avconv / ffmpeg adalah libfdk_aac - tetapi lisensi untuk itu tidak kompatibel dengan GPL, jadi untuk mendapatkan akses ke sana Anda harus mengkompilasi sendiri (itu adalah panduan kompilasi ffmpeg, karena saya tidak tahu satu untuk avconv - panduan Ubuntu harus baik untuk Debian, karena saya tidak berpikir ada sesuatu yang spesifik Ubuntu di sana).
Setelah Anda mendapatkannya, ikuti panduan pengkodean AAC ; Saya sangat merekomendasikan mencoba -vbr
opsi fdk_aac - pengaturan 3 suara transparan untuk saya pada semua file yang saya coba, jika Anda ingin plasebo bit rate yang lebih tinggi, atau Anda seorang insinyur suara, Anda dapat mencoba pengaturan 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Tidak perlu -map_metadata
, karena ffmpeg akan secara otomatis mentransfer metadata (dan saya cukup yakin bahwa avconv juga akan).
Untuk bit rate tetap 320 kbit / s (serius, ini tidak sepadan, AAC mencapai transparansi audio vs audio CD asli di sekitar tetap 128 kbit / s):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
Encoder Aero Nero harus dianggap setara dengan fdk_aac dan qaac (Quicktime AAC). Orang yang berbeda akan memberikan pendapat berbeda tentang yang mana yang lebih baik, tetapi Anda hanya akan melihat perbedaan pada tingkat bit yang sangat rendah, dan semua orang setuju bahwa mereka semua berkualitas sangat tinggi.
neroAacEnc
tersedia dari situs web Nero . Buka zip dan letakkan di suatu tempat di $ PATH Anda.
Sayangnya neroAacEnc
hanya dapat mengambil audio WAV sebagai input; Anda dapat menyiasatinya dengan menggunakan avconv atau ffmpeg sebagai dekoder:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Sayangnya, ini akan menghapus metadata; untuk mentransfernya, gunakan avprobe / ffprobe (with -show_format
) untuk mengekstrak dan neroAacTag untuk menyisipkan. Skrip bash mungkin akan beres.
Lihat halaman HydrogenAudio di neroAacEnc : dari memori, -q
pengaturan 0,4 terdengar bagus untuk saya. Anda dapat menargetkan bit rate dengan -br
(sekali lagi, saya pikir ini akan menjadi cara yang berlebihan):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDIT: di sini adalah skrip untuk mengkonversi file audio ke m4a dengan neroAacEnc, kemudian menandai dengan ffprobe dan neroAacTag (mengharuskan mereka semua berada di direktori di $ PATH Anda). Ini dapat mengambil banyak file input, jadi jika Anda menyimpannya convert-to-m4a
, Anda dapat mengonversi setiap file FLAC dalam direktori
convert-to-m4a *.flac
Itu tidak terbatas hanya pada file FLAC; format audio apa pun yang dapat didekodekan oleh ffmpeg / avconv Anda akan berfungsi. Anda mungkin ingin mengubah ffprobe dan ffmpeg menjadi avprobe dan avconv:
#!/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