Bagaimana saya bisa mengubah koleksi musik FLAC saya menjadi Apple Lossless?

13

Saya memiliki koleksi musik berukuran wajar yang saya simpan dalam format FLAC di laptop Ubuntu saya. Saya ingin mulai memutar musik ini di Mac saya, dan menyelaraskannya dari sana ke iPod saya. Orang-orang telah menyarankan bahwa cara terbaik untuk melakukan ini adalah mengubah koleksi saya menjadi ALAC, dan saya telah memutuskan itulah yang ingin saya lakukan.

Sebelum saya menyelam dan menulis skrip shell khusus yang memanggil ffmpegbeberapa findperintah kompleks , saya pikir saya akan meminta saran.

Bagaimana saya bisa mengubah koleksi FLAC saya yang ada menjadi ALAC, tanpa kehilangan kualitas audio dan mempertahankan semua metadata?

jml
sumber
Hah. Aku terkejut. Saya pikir akan ada pilihan yang jelas untuk alat transcoding, tetapi semua yang bisa saya temukan berfokus pada video.
RAOF
Apa yang akhirnya saya lakukan di sini adalah menulis skrip Python khusus yang disebut metaflac, ffmpeg dan AtomicParsley.
jml

Jawaban:

21

avconv (atau ffmpeg, yang avconv adalah fork of) dapat melakukan ini dari baris perintah:

avconv -i input.flac -c:a alac output.m4a

Itu harus menjaga metadata dengan sendirinya.

Untuk melakukan setiap flac dalam direktori:

for f in ./*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Untuk melakukan setiap flac secara rekursif (dalam direktori saat ini dan semua subdirektori):

shopt -s globstar
for f in ./**/*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Jika Anda memiliki flac di file ogg atau sesuatu, jelas ubah ./*.flacke ./*.ogg.

Saya pikir ini harus bekerja dengan avconv / ffmpeg dari repositori (karena ALAC dirilis di bawah lisensi Apache, dan dapat didistribusikan secara legal), meskipun saya memiliki versi dari medibuntu yang diinstal.

Jika Anda ingin menyingkirkan file asli, Anda dapat memasukkannya rmke loop. Versi ini menggunakan -nflag untuk avconv, sehingga tidak akan menimpa file ALAC yang sudah ada, dan menggunakan &&alih-alih; berarti jika avconv berhenti dengan kesalahan maka file FLAC asli tidak akan dihapus:

for f in ./*.flac; do avconv -n -i "$f" -c:a alac "${f%.*}.m4a" && rm "$f"; done

Perhatikan bahwa menghapus file dengan rm tidak dapat dipulihkan (di luar pemulihan data forensik), jadi berhati-hatilah menggunakannya.

Evilsoup
sumber
Apakah Anda tahu cara mengganti file flac dengan file alac, alih-alih membuat salinan file flac alac?
user138784
@ user13 tidak, avconv / ffmpeg tidak bisa melakukan itu, ia tidak bisa menimpa file yang digunakan sebagai input. Anda dapat menggunakan rmuntuk menghapus file asli, jika diinginkan.
evilsoup
Saya bukan benar-benar seorang guru baris perintah (saya cukup baru untuk GNU / Linux), jadi sampai sekarang saya terbiasa menghapusnya secara manual. (nautilus, atur file berdasarkan jenis, dan kemudian saya bisa memilih semua file .flac di direktori itu dan menghapusnya). Saya akan melihat bagaimana "rm" ini bekerja. :)
user138784
@ user138 Saya telah mengedit jawaban untuk menunjukkan satu implementasi dengan rm- meskipun perhatikan peringatan, rmcukup banyak yang tidak dapat diubah, itu langsung menghapus file daripada memindahkannya ke tempat sampah. Alternatif lain adalah menggunakan globbing setelah loop selesai (sehingga Anda dapat memeriksa bahwa tidak ada masalah ... jika perintah gagal karena alasan apa pun, Anda tidak ingin menyingkirkan yang asli): rm -- *.flacakan menghapus setiap FLAC di direktori kerja.
evilsoup
Terima kasih atas sarannya! Saya biasanya menyimpan file flac asli di direktori lain, jadi tidak ada risiko kehilangan mereka.
user138784