Âm thanh Apple lossless có thể được chuyển đổi thành FLAC mà không mất độ trung thực không?


19

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?


2
câu trả lời ngắn gọn "có" (như slhck đã nói). Câu hỏi là, bạn đang tìm kiếm một công cụ để làm điều này với, hoặc hỏi liệu bạn có thể chuyển đổi một định dạng lossless, lossless sang một định dạng lossless khác không?
Journeyman Geek

Câu trả lời:


37

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, ffmpegsẽ 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ề ffmpegviệ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 avconvthay 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


2
Dựa trên superuser.com/a/27758/45914 , bạn có thể thực hiện các thao tác sau để chuyển đổi toàn bộ thư mục: 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.
Ruud

1
Chuyển đổi bằng ffmpeg, như @RuudvA đã nói, hoạt động nhưng cung cấp cho tôi một thông báo có nội dung: *** 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
Duncan Lock

XLD là một cái tốt khác cho OSX.
Arran Cudbard-Bell

3

Đối với Windows CMD bạn có thể làm.

@for /R %%x in (*.m4a) do ffmpeg -i "%%x" -acodec flac "%%~dpnx.flac"

(Tập lệnh hàng loạt)

(Điều này sẽ thực hiện đệ quy (Mọi thư mục và từ nơi nó chạy))


1

Nếu bạn có máy Mac (vì bạn có tệp ALAC), bạn cũng có thể sử dụng phần mềm nguồn mở Max dưới dạng lối vào đẹp để thực hiện chuyển đổi từ và sang ALAC / FLAC hoặc nhiều định dạng khác ..


2
Một cái khác đẹp là XLD.
Nathaniel

1

đố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" }

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.