FLAC là viết tắt của Free Lossless Audio Codec (bộ giải mã âm thanh không mất dữ liệu miễn phí), và đúng như tên gọi: nó làm cho tệp âm thanh nhỏ hơn mà không thay đổi một mẫu nào. Josh Coalson khởi động dự án này và hiện nay nó được duy trì bởi Xiph.Org Foundation, tổ chức phi lợi nhuận đứng sau Vorbis và Opus. Cả định dạng và phần mềm tham chiếu của nó đều mở và không tính phí bản quyền, đó là một trong những lý do FLAC trở thành cách tiêu chuẩn để lưu trữ bộ sưu tập CD và là lựa chọn tải xuống phổ biến trên các cửa hàng nhạc do nghệ sĩ tự vận hành.
FLAC nén như thế nào mà không mất dữ liệu
Nén không mất dữ liệu nghe có vẻ mâu thuẫn nếu so với MP3, nhưng ý tưởng giống như tệp ZIP, chỉ là được tối ưu cho âm thanh. FLAC chia âm thanh thành các khối và với mỗi khối, nó khớp một dự đoán toán học đơn giản về hướng đi của dạng sóng. Sau đó nó chỉ lưu lại dự đoán đó và những sai số nhỏ còn lại, được đóng gói bằng một sơ đồ mã hóa hiệu quả. Khi giải mã, dự đoán được chạy lại và cộng thêm các sai số, tái tạo lại các mẫu gốc chính xác từng bit. Mức độ tiết kiệm phụ thuộc vào bản nhạc, nhưng một tệp FLAC thường nhỏ hơn rất nhiều so với cùng bản thu ở dạng WAV.
FLAC hỗ trợ tối đa tám kênh, độ sâu bit vượt quá chất lượng CD và tần số lấy mẫu rất cao. Giống như MP3, nó dựa trên khung (frame-based), vì vậy có thể phát trực tuyến và tua qua mà không cần đọc toàn bộ tệp trước. Phần đầu (header) của nó cũng lưu một mã vân tay MD5 của âm thanh chưa nén, để phần mềm có thể chứng minh sau nhiều năm rằng tệp vẫn giải mã chính xác những gì đã được trích xuất. Cùng codec này cũng có thể được chứa trong một vỏ Ogg, dù trong thực tế bạn thường gặp tệp FLAC thuần.
Một tệp FLAC chứa những siêu dữ liệu nào
Một tệp FLAC bắt đầu với một chuỗi các khối metadata, mỗi khối có một nhiệm vụ xác định. STREAMINFO là khối kỹ thuật và luôn luôn có: tần số lấy mẫu, số kênh, số bit mỗi mẫu, tổng số mẫu và mã vân tay MD5 đó. SEEKTABLE giúp trình phát nhảy đến các vị trí khác nhau, CUESHEET có thể mô tả bố cục bài hát của cả một đĩa CD, PICTURE chứa ảnh bìa nhúng cùng loại và mô tả riêng, và PADDING chỉ đơn giản là khoảng trống để sau này có thể chỉnh sửa thẻ mà không phải ghi lại toàn bộ tệp.
Các thẻ mô tả nằm trong khối VORBIS_COMMENT, cùng hệ thống gắn thẻ mà Ogg sử dụng. Đó là một danh sách các cặp văn bản thuần, mỗi cặp gồm tên trường và giá trị, nên không bị giới hạn bởi một tập trường cố định. TITLE, ARTIST, ALBUM, ALBUMARTIST, DATE, TRACKNUMBER, DISCNUMBER, GENRE, COMPOSER, PERFORMER, COPYRIGHT, ISRC và COMMENT đều là các trường phổ biến, và bất kỳ trường nào cũng có thể xuất hiện nhiều hơn một lần, ví dụ khi một bản nhạc ghi công hai nghệ sĩ.
Vì bất kỳ chương trình nào cũng có thể tự tạo trường, khối này thường cho biết nhiều về chuỗi phần mềm xử lý tệp không kém gì về bản nhạc. ENCODER ghi tên app và phiên bản đã tạo ra tệp. Phần mềm trích xuất đĩa thêm vào các mục riêng: mã định danh liên kết đĩa với cơ sở dữ liệu nhạc trực tuyến, xếp hạng, số lần phát, thông số replay gain và đôi khi cả ổ đĩa đã đọc CD. Các trường tự do này cũng là nơi lưu ghi chú cá nhân, tên thật hoặc địa chỉ email nếu ai đó gõ chúng vào trình gắn thẻ. FLAC không có trường chuẩn cho vị trí hay thiết bị, nên một tệp nhạc hiếm khi tiết lộ bạn đã ở đâu, nhưng mọi thứ mà một người hoặc một ứng dụng chọn ghi vào đều nằm đó dưới dạng văn bản có thể đọc được.
Khi nào nên dùng FLAC
FLAC là lựa chọn phù hợp để lưu giữ âm thanh: bộ sưu tập CD, bản thu gốc, bất cứ thứ gì bạn có thể muốn chuyển đổi lại sau này. So với WAV, nó thắng về dung lượng và khả năng gắn thẻ, đồng thời vẫn giữ nguyên từng bit so với nguồn. So với MP3 hoặc AAC, nó lớn hơn nhiều, nên không phù hợp với điện thoại ít dung lượng hoặc một trang web lưu lượng cao. Thiết bị Apple ưu tiên ALAC, một định dạng không mất dữ liệu khác dựa trên cùng ý tưởng, và việc chuyển đổi giữa hai định dạng này hoàn toàn không gây tổn thất, vì cả hai đều giữ lại mọi mẫu.