Untuk waktu yang lama saya telah menggunakan teknik yang relatif kikuk yang melibatkan Audacity dengan plugin LAME. Saya kira ini baik-baik saja, tetapi daya tarik pendekatan Terminal adalah saya bisa sedikit lebih pintar dengan saya [options]
dan mungkin menggunakan lebih banyak biner yang terkini.
Selain itu, MacBook saya sedikit menua sekarang dan jika saya bisa menyingkirkan GUI yang tidak perlu, semuanya akan lebih baik.
Terima kasih sebelumnya.
Jawaban:
Mengonversi satu file tanpa menyimpan tag
--decode --stdout
=-dc
lame - $outfile
= masukan dari STDIN--preset extreme
= ~ 245 kbit / s VBRSkrip shell yang mempertahankan beberapa tag ID3
Untuk menggunakan skrip, cukup simpan di suatu tempat seperti
~/bin/flac2mp3
dan buatlah itu dapat dieksekusichmod +x ~/bin/flac2mp3
.Ini akan mengonversi semua file flac di folder Musik Anda:
Atau sedikit lebih cepat, karena hanya memanggil flac2mp3 sekali:
sumber
${file%.flac}.mp3
Mengagumkan! Sebelumnya saya menggunakan${x:: ${#x}-3}m4a
untuk mengubah nama file lagu dari .wav ke .m4a. Luar biasa melihat cara yang terlihat sedikit lebih mudah.!/bin/sh file="$1" outfile=${file%.flac}.mp3 eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/") flac -cd "$file" | lame --preset standard \ --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \ --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \ - "$outfile"
ffmpeg akan mempertahankan tag (tetapi tidak mencakup seni) secara default.
-aq 1
sesuai dengan-V 1
lumpuh.-acodec libfaac
akan mengonversi file ke AAC:sumber
saya mengambil apa yang kalian miliki, tetapi kemudian membuatnya berjalan lebih cepat dengan menggunakan
xargs
untuk memparalelkan pekerjaan.Maka ini adalah skrip dari atas / usr / local / bin / flac2mp3
dan inilah beberapa statistik untuk peningkatan kinerja menggunakan paralelisme.
Anda dapat melihatnya juga menggunakan CPU saya lebih efektif, saya punya intel i7, jadi 8 mungkin jumlah proses yang tepat.
sumber
Menemukan utas ini saat mencoba melakukan pengodean langsung MP3 dari file sumber FLAC. Jawaban Boehj menyediakan opsi skrip yang layak, tetapi saya pribadi lebih suka menggunakan FFmpeg, jadi ini adalah skrip Bash yang saya buat untuk menangani tugas ini. Diuji dan berfungsi dengan baik di macOS Sierra (10.12.2).
Perquisites: Anda harus memiliki
ffmpeg
danlame
sudah diinstal pada Mac Anda. Cara termudah untuk melakukan ini adalah melalui Homebrew. Pertama, pastikan Anda memiliki Homebrew yang diinstal seperti ini:Kemudian jalankan perintah ini untuk menginstal
ffmpeg
danlame
:Setelah selesai, Anda siap menjalankan skrip ini. Skrip ini akan mencari file FLAC dalam direktori
path/to/FLAC/files
tetapi itu dapat diubah menjadi hanya.
jika file FLAC berada di direktori yang sama Anda menjalankan skrip ini. Ketika dijalankan, skrip ini akan membuatmp3/
subdirektori di mana semua file MP3 akan berada. ditempatkan.Beberapa catatan tentang hal-hal yang saya pelajari "The Hard Way ™" sehingga orang lain dapat memperoleh manfaat dari apa yang saya lakukan secara berbeda dalam skrip ini dibandingkan dengan yang lain di Internet.
grep
perintah untuk tag parsing (menggunakan FFprobe yang diinstal dengan FFmpeg) adalah case sensitif menggunakan-i
pilihan untuk membuatnyagrep -i
.cut
Perintah berikut sekarang terbatas untuk membagi output hanya berdasarkan yang pertama=
dalam nama tag dengan-f 2-
opsi yang membuat perintahcut -d '=' -f 2-
. Misalnya, Pavement memiliki lagu berjudul "5-4 = Unity" dan jika hanya potongan kedua dipilih melalui cut, judul itu akan dipotong menjadi "5-4".sed
yang mendapat menyingkirkan nol terkemuka:sed 's/^0*//'
.-f wav
dan yang sebenarnya akan mengompresi keluaran FFmpeg yang tidak masuk akal dalam pengaturan pipa di mana LAME akan menyandikan ulang. Alih-alih, keluaran di sini diatur-f s16le -acodec pcm_s16le
yang pada dasarnya merupakan keluaran RAW; sempurna untuk pemipaan audio ke proses lain seperti ini.-r
opsi.--tt
,--ta
,--tl
,--tn
dan--tg
ID3v2 pilihan tag untuk Lame. Ketika audio dialirkan / disalurkan dari satu proses ke LAME, metadata dari file sumber hilang. Salah satu pilihan yang disarankan adalah untuk mendapatkan FFmpeg untuk menyimpan metadata ke file teks dengan menetapkan pilihan dengan-f ffmetadata "[metadata filename here]"
dan kemudian berjalan FFmpeg lagi dengan sesuatu seperti ini:-i "[metadata filename here]" -map_metadata 1 -c:a copy [destination mp3 file] id3v2_version 3 -write_id3v1 1
. Itu berfungsi, tetapi perhatikan persyaratan untuk file tujuan. Sepertinya FFmpeg hanya mengimpor metadata ketika dapat menyalin file yang tampaknya seperti proses yang sangat boros. Menggunakan FFprobe untuk mendapatkan nilai-nilai dan kemudian menetapkan mereka di Lame dengan--tt
,--ta
,--tl
,--tn
dan--tg
pilihan bekerja lebih baik; semua metadata dituliskan di tempat sehingga file duplikat perlu dibuat.sumber