Bagaimana cara mengonversi .flac ke .mp3 dengan ffmpeg, menyimpan semua metadata (yang mengubah komentar Vorbis dalam file .flac menjadi metadata ID3v2 dari .mp3)?
Bagaimana cara mengonversi .flac ke .mp3 dengan ffmpeg, menyimpan semua metadata (yang mengubah komentar Vorbis dalam file .flac menjadi metadata ID3v2 dari .mp3)?
Jawaban:
Perintah berikut mempertahankan kualitas tinggi pada .mp3 (320 kbps), dan metadata dari file .flac diubah ke format ID3v2, yang dapat disertakan dalam file .mp3:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2 secara otomatis menyalin metadata ke ID3v2 dari FLAC tanpa perlu menentukan -map_metadata 0 -id3v2_version 3
, meskipun tidak disalin ke tag ID3v1. Saya menggunakan alat terpisah untuk itu.
Jawaban sempurna di atas. Saya menggunakannya bersama dengan find untuk menambahkan semua file FLAC dalam subpohon ke iTunes dengan perintah ini
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Untuk secara otomatis menambahkan file yang dihasilkan ke iTunes, dapatkan direktori impor iTunes dengan
find ~/Music/ -name "Automatically Add*"
hasil misalnya
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Kemudian jalankan mis
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
Untuk secara otomatis menambahkan semua trek yang dikonversi ke iTunes.
Jika Anda ingin menghemat sedikit ruang, coba rekomendasi hydrogenaud.io :
Kualitas yang sangat tinggi: HiFi, rumah, atau tenang mendengarkan, dengan ukuran file terbaik
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
atau-V3 (~175 kbps)
direkomendasikan. Pengaturan VBR ini biasanya akan memberikan hasil transparan. Perbedaan suara antara preset ini mungkin ada, tetapi jarang terjadi.
Sumber: http://wiki.hydrogenaud.io/index.php?title=LAME
Jika Anda ingin menggunakan opsi ini di ffmpeg, Anda harus menggunakan -q:a 0
alias.
Kontrol kualitas dengan
-qscale:a
(atau alias-q:a
). Nilai bersifat khusus pembuat enkode, jadi untuk libmp3lame kisarannya adalah 0-9 di mana nilai yang lebih rendah berarti kualitas yang lebih tinggi. 0-3 biasanya akan memberikan hasil transparan, 4 (default) harus mendekati transparansi persepsi, dan 6 menghasilkan kualitas yang "dapat diterima". Opsi-qscale:a
dipetakan ke-V
opsi dalam alat antarmuka baris perintah lumpuh mandiri.
Sumber: https://trac.ffmpeg.org/wiki/Encode/MP3
Jika Anda ingin metatag ID3v1 juga, Anda harus menambahkan -write_id3v1 1
parameter.
Jadi perintah terakhir saya adalah:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
Saya menguji perintah berikut untuk mengonversi infile.flac
file menjadi outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Pada Ubuntu 16.04, perintah di atas tampaknya menyalin (sebagian besar? Semua?) Metadata.
-q:a 0
memberitahu ffmpeg
untuk menggunakan VBR kualitas tertinggi.
Namun, melakukan ffmpeg
transcoding seni album saya dari jpeg
menjadi png
, yang meningkatkan ukuran seni sampul.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(Saya kira jenis konversi di atas masuk akal mengingat cara ffmpeg
kerjanya .)
Setelah beberapa penggalian, saya menemukan -c:v copy
opsi, yang menentukan bahwa aliran video harus disalin, daripada ditranskode. Perintah lengkapnya adalah:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
Perintah di atas menghasilkan:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
Untuk mengonversi secara rekursif dalam mp3 semua file flac di folder bersarang, saya menggunakan perintah ini:
find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;
Ini akan membuat folder bernama "mp3" di dalam folder dengan file flac dan, di dalam folder mp3, itu akan menyimpan file mp3 relatif dengan bitrate 320kbps, tanpa menggunakan ekstensi file lama di namanya.
$file
seperti "$file"
.
:r
tampaknya merupakan zsh
pengubah, yang tidak berfungsi di bash
. Di Bash Anda bisa mengganti "${file:r}.mp3"
dengan "${file%.flac}.mp3"
.
${file%.*}
Saya tahu bahwa ini tidak ditanyakan, tetapi mengingat salah satu alasan mengapa hal ini dilakukan (setidaknya itulah yang ingin saya lakukan) adalah agar musik dapat diimpor ke Apple iTunes yang tidak mendukung FLAC. Dalam kasus seperti itu, lebih masuk akal untuk mengubah FLAC ke format lossless milik Apple, m4a. Saya menggunakan perintah ini untuk mengonversi semua file di folder saat ini, sambil mempertahankan ukuran file yang serupa.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Skrip flac2mp3.sh ini digunakan ffmpeg
untuk mengubah pohon folder file FLAC menjadi pohon folder lain dari file MP3. Seni sampul disertakan, saat hadir. Anda dapat mengatur CORES
variabel untuk membuat pekerjaan latar belakang untuk mengonversi beberapa file sekaligus.
ffmpeg
pertanyaan tentang penggunaan cli di Pengguna Super . Stack Overflow hanya untuk pertanyaan yang melibatkan pemrograman. Juga, FLAC secara resmi mendukung komentar Vorbis saja, jadi saya berasumsi Anda ingin mengonversi ke ID3v2 daripada "tetap".