Làm cách nào tôi có thể chuyển đổi bộ sưu tập nhạc FLAC của mình sang Apple Lossless?


13

Tôi có một bộ sưu tập nhạc có kích thước hợp lý mà tôi giữ ở định dạng FLAC trên máy tính xách tay Ubuntu của mình. Tôi muốn bắt đầu phát nhạc này trên máy Mac của mình và đồng bộ hóa nó từ đó với iPod. Mọi người đã gợi ý rằng cách tốt nhất để làm điều này là chuyển đổi bộ sưu tập của tôi thành ALAC và tôi đã quyết định đó là điều tôi muốn làm.

Trước khi tôi đi sâu vào và viết các kịch bản shell tùy chỉnh gọi ffmpegqua một số findlệnh phức tạp , tôi nghĩ tôi muốn xin lời khuyên.

Làm cách nào tôi có thể chuyển đổi tốt nhất bộ sưu tập FLAC hiện tại của mình sang ALAC mà không làm giảm chất lượng âm thanh và bảo toàn tất cả siêu dữ liệu?


Huh. Tôi ngạc nhiên. Tôi nghĩ rằng có một sự lựa chọn rõ ràng cho công cụ chuyển mã, nhưng tất cả những gì tôi có thể tìm thấy đều tập trung vào video.
RAOF

Điều cuối cùng tôi làm ở đây là viết một tập lệnh Python tùy chỉnh có tên là metaflac, ffmpeg và AtomicParsley.
jml

Câu trả lời:


21

avconv (hoặc ffmpeg, mà avconv là một nhánh của) có thể làm điều này từ dòng lệnh:

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

Nó nên bảo tồn siêu dữ liệu của chính nó.

Để làm mọi flac trong một thư mục:

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

Để thực hiện mọi flac đệ quy (trong thư mục hiện tại tất cả các thư mục con):

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

Nếu bạn đã có flacs trong tập tin ogg hoặc một cái gì đó, rõ ràng thay đổi ./*.flacthành ./*.ogg.

Tôi nghĩ rằng điều này sẽ hoạt động với avconv / ffmpeg từ kho lưu trữ (vì ALAC được phát hành theo giấy phép Apache và có thể được phân phối hợp pháp), mặc dù tôi đã cài đặt phiên bản từ medibfox.

Nếu bạn muốn thoát khỏi các tập tin gốc, bạn có thể đưa rmvào vòng lặp. Phiên bản này sử dụng -ncờ cho avconv, vì vậy nó sẽ không ghi đè lên bất kỳ tệp ALAC nào đã tồn tại và sử dụng &&thay vì; phương tiện nếu avconv dừng với lỗi thì tệp FLAC gốc sẽ không bị xóa:

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

Lưu ý rằng việc xóa các tệp với rm là không thể đảo ngược (bên ngoài phục hồi dữ liệu pháp y), vì vậy hãy cẩn thận khi sử dụng nó.


Bạn có biết làm thế nào để thay thế các tập tin flac bằng các tập tin alac, thay vì tạo một bản sao alac của tập tin flac?
dùng138784

@ user13 không, avconv / ffmpeg không thể làm điều đó, nó không thể ghi đè lên các tệp mà nó sử dụng làm đầu vào. Bạn có thể sử dụng rmđể xóa các tập tin gốc, nếu bạn muốn.
evilsoup

Tôi không thực sự là một chuyên gia về dòng lệnh (Tôi còn khá mới đối với GNU / Linux), vì vậy cho đến nay tôi đã sử dụng để xóa chúng theo cách thủ công. (nautilus, sắp xếp các tệp theo loại và sau đó tôi chỉ có thể chọn al các tệp .flac trong thư mục đó và xóa chúng). Tôi sẽ có một cái nhìn về cách thức hoạt động của "rm" này. :)
dùng138784

@ user138 Tôi đã chỉnh sửa câu trả lời để hiển thị một triển khai với rm- mặc dù lưu ý đến cảnh báo, rmnhưng không thể đảo ngược được, nó hoàn toàn xóa các tệp thay vì chuyển chúng vào thùng rác. Một cách khác là sử dụng Globing sau khi vòng lặp kết thúc (vì vậy bạn có thể kiểm tra xem không có vấn đề gì ... nếu lệnh không thành công vì bất kỳ lý do gì, bạn sẽ không muốn thoát khỏi bản gốc của mình): rm -- *.flacsẽ xóa mọi FLAC trong thư mục làm việc.
evilsoup

Cảm ơn vì lời khuyên! Tôi thường giữ các tập tin flac gốc trong một thư mục khác, vì vậy không có nguy cơ mất chúng.
dùng138784
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.