Các tệp âm thanh Apple lossless (ALAC) có thể được chuyển đổi thành các tệp âm thanh FLAC mà không mất độ trung thực không?
Các tệp âm thanh Apple lossless (ALAC) có thể được chuyển đổi thành các tệp âm thanh FLAC mà không mất độ trung thực không?
Câu trả lời:
Vâng, cho rằng cả hai đều mất toán học, chuyển đổi cũng không mất mát.
Lý do cho điều này là tín hiệu luôn có thể được xây dựng lại ở dạng ban đầu khi tệp FLAC / ALAC được giải mã. Do đó, chúng tương đương nhau và bạn sẽ không bị mất khi chuyển mã - ngay cả khi chuyển mã nhiều lần.
Lỗi duy nhất tôi có thể tưởng tượng sẽ là một lỗi số học, ví dụ thông qua độ chính xác điểm nổi giới hạn trong các phép tính. Tôi không nghĩ rằng điều này áp dụng cho FLAC hoặc ALAC.
Trong trường hợp bạn chỉ sử dụng một codec không mất âm "tâm lý", điều này là không thể. Mất cảm giác theo nghĩa tâm lý học có nghĩa là bạn không thể phân biệt phiên bản gốc và phiên bản nén, tuy nhiên chúng rất khác nhau. MP3 hoặc MPEG-4 AAC sử dụng các kỹ thuật tâm lý học khác nhau để đạt được điều này. Do đó, khi chuyển mã, phiên bản gốc không thể được xây dựng lại và bạn sẽ bị giảm chất lượng.
Trong trường hợp bạn muốn chuyển đổi ALAC sang FLAC, ffmpeg
sẽ là một lựa chọn tốt, vì nó miễn phí và có sẵn cho hầu hết mọi nền tảng.
ffmpeg -i audio.m4a -c:a flac audio.flac
FFmpeg sẽ đọc ALAC mà không có vấn đề. Đối với các hệ thống * nix, cũng có một tập lệnh có tên Convert to FLAC , giúp cho toàn bộ quá trình dễ dàng hơn. Với Bash, bạn chỉ có thể chuyển đổi tất cả các tệp trong một thư mục duy nhất:
for f in *.m4a; do ffmpeg -i "$f" -c:a flac "${f%.m4a}.flac"; done
Lưu ý: Nếu bạn nhận được thông báo về ffmpeg
việc không được chấp nhận, đây thực sự không phải là trường hợp - đó vẫn là một chương trình được phát triển tích cực. Tuy nhiên, các nhà bảo trì gói của Ubuntu chỉ quyết định chuyển sang phân nhánh Libmp của FFmpeg và do đó cung cấp cho bạn avconv
thay vì ffmpeg
. Do đó, phiên bản ffmpeg
có sẵn trên Ubuntu đã lỗi thời. Thay vào đó , bạn có thể tải xuống bản dựng bằng cách tải xuống bản dựng tĩnh hoặc tự biên dịch nó. Đọc để biết thêm thông tin: Ai có thể cho tôi biết sự khác biệt và mối quan hệ giữa ffmpeg, libav và avconv
for f in *.m4a; do ffmpeg -i "$f" -acodec flac "${f%.m4a}.flac"; done
Ví dụ, nó hoạt động trên Linux, nhưng cũng có trong Git bash trên Windows.
*** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Để thực hiện việc này bằng aconv, hãy thực hiện việc này thay vào đó: for f in *.m4a; do avconv -i "$f" "${f%.m4a}.flac"; done
đối với Windows trong Powershell (sử dụng ffmpeg), bạn có thể thực hiện việc này để chuyển đổi alac sang flac:
Get-ChildItem . -filter *.m4a| ForEach-Object { ffmpeg -i "$_" -acodec flac "$($_.basename).flac" }
và ngược lại làm điều này để chuyển đổi sang alac
Get-ChildItem . -filter *.flac | ForEach-Object { ffmpeg -i "$_" -acodec alac $($_.basename).m4a" }