Triển khai AVIF cho nhiều trang web thích ứng hơn

Thông tin cập nhật về cách AVIF được áp dụng trong hệ sinh thái.

Jani Huoponen
Jani Huoponen
Vignesh Venkatasubramanian
Vignesh Venkatasubramanian

AVIF là một định dạng hình ảnh mới đang nhanh chóng trở nên phổ biến trên web nhờ tỷ lệ nén cao, hiệu suất hiệu quả và được sử dụng rộng rãi. AVIF là một định dạng hình ảnh mở, không tính phí bản quyền, dựa trên bộ mã hoá và giải mã video AV1 do Liên minh vì nội dung nghe nhìn mở (Alliance for Open Media) chuẩn hoá. Bài đăng trên blog này sẽ cung cấp cái nhìn tổng quan về cách áp dụng AVIF vào hệ sinh thái và các lợi ích về hiệu suất và chất lượng mà AVIF có thể mang lại cho nhà phát triển đối với ảnh tĩnh và ảnh động.

Kể từ khi AVIF ra mắt trong Chrome, Firefox và Safari, việc sử dụng AVIF trên web ngày càng phát triển ổn định; hầu hết tất cả trình duyệt đều hỗ trợ AVIF hiện nay.

Chỉ riêng Chrome, mức sử dụng AVIF đã tăng lên khoảng 1% trong hơn một năm sau khi Chrome thêm tính năng hỗ trợ AVIF ở phiên bản ổn định.

Biểu đồ đường về mức sử dụng tệp AVIF trong Chrome từ tháng 5 năm 2021 đến tháng 3 năm 2023. Mức độ hỗ trợ đã tăng đều đặn từ 0% lên chỉ dưới 1,4%.

Hiện nay, nhiều mạng phân phối nội dung (CDN) hình ảnh như Akamai, Cloudflare, CloudinaryImgix đang phân phát hình ảnh AVIF. Trong một bài đăng trên blog thông báo về việc hỗ trợ AVIF, Imgix đã báo cáo việc tiết kiệm 60% kích thước tệp so với JPEG và tiết kiệm 35% so với WebP. Việc giảm kích thước tệp này giúp tiết kiệm đáng kể dung lượng lưu trữ, đồng thời giúp trang tải nhanh hơn, mang lại thời gian Nội dung lớn nhất hiển thị (LCP) nhanh hơn. LCP là một trong những Chỉ số quan trọng chính của trang web và cho biết tốc độ tải của khối nội dung lớn nhất trên trang. Sử dụng bộ mã hoá và giải mã hiện đại để nén hình ảnh là một trong những kỹ thuật chính để giảm LCP. Lighthouse là một công cụ tuyệt vời dành cho nhà phát triển Chrome để kiểm thử trang web của bạn và xem mức tiết kiệm mà AVIF mang lại.

WordPress là nền tảng trang web phổ biến nhất trên thế giới và có một số trình bổ trợ giúp nhà phát triển chuyển đổi hình ảnh thành định dạng AVIF, chẳng hạn như:

Đối với những nhà phát triển thiết thực hơn, các công cụ như ImageMagickFFmpeg là một điểm khởi đầu phù hợp.

Tốc độ mã hoá AVIF

Tốc độ mã hoá nhanh và chất lượng hình ảnh cao là yếu tố quan trọng để triển khai tính năng nén hình ảnh trên quy mô lớn. Tốc độ mã hoá của phần mềm AVIF đã được cải thiện đáng kể trong hai năm qua. So với các định dạng ảnh tĩnh hiện đại khác, AVIF tạo ra các tệp nhỏ hơn với chất lượng hình ảnh tương tự (xem biểu đồ sau, càng thấp càng tốt) nhưng cũng nhanh hơn trong quá trình mã hoá.

Biểu đồ thanh so sánh nhiều kích thước tệp bộ mã hoá và giải mã hình ảnh dưới dạng phần trăm đầu ra của TurboJPEG. AVIF thấp nhất, sau đó đến JPEG XL, sau đó đến WebP và cuối cùng là MozJPEG.

Biểu đồ bên dưới (cao hơn là tốt hơn) minh hoạ tốc độ mã hoá AVIF so với các định dạng hình ảnh khác. Các bộ mã hoá và giải mã thế hệ trước như WebP được hưởng lợi từ các thuật toán nén ít phức tạp hơn (nhưng cũng kém hiệu quả hơn). Với cơ chế mã hoá đa luồng, AVIF đạt được hiệu suất tương tự trong các trường hợp sử dụng phổ biến, đồng thời mang lại mức tăng nén đáng kể.

So sánh tốc độ mã hoá bộ mã hoá và giải mã hình ảnh. Các bộ mã hoá được so sánh là AVIF trung bình, JPEG XL trung bình, WebP trung bình (một luồng) và MozJPEG trung bình (một luồng). AVIF thường là một trong những bộ mã hoá hình ảnh nhanh nhất xét về chất lượng tốt nhất và khả năng mặc định cao nhất, nhưng là bộ mã hoá chậm nhất trong tất cả các bộ mã hoá để có hiệu suất nhanh chóng.

Đối với các nhà phát triển quan tâm đến việc so sánh tốc độ mã hoá và chất lượng hình ảnh chi tiết hơn, trang web So sánh mã hoá hình ảnh chứa các kết quả điểm chuẩn có thể tái tạo.

Mặc dù việc triển khai phần mềm cho các bộ mã hoá và giải mã hình ảnh hiện đại như AVIF và WebP được tối ưu hoá cho kiến trúc bộ xử lý x86 và ARM, nhưng việc nén một lượng lớn hình ảnh trên quy mô lớn có thể tốn kém về mặt điện toán. Một giải pháp thay thế để giảm chi phí nén là khám phá tính năng tăng tốc phần cứng. Bluedot đã phát triển một bộ mã hoá Pulsar-AVIF tăng tốc phần cứng chạy trên các FPGA có thể lập trình, chẳng hạn như Alveo U250 của AMD. So với avifenc dựa trên phần mềm, Pulsar-AVIF cải thiện tốc độ từ 7 đến 23 lần với hiệu suất nén tương tự.

Bộ mã hoá Thời gian mã hoá (mili giây) Khung hình/giây Sử dụng CPU Thông số kỹ thuật phần cứng
Pulsar-AVIF
(FPGA)
60 409,85 305% 1 AMD Alveo U250 + CPU Intel(R) Xeon(R)
Platinum 8171 2,6 GHz, 10 lõi
avifenc
(libaom)
405 59,26 3.200% CPU Intel(R) Xeon(R) Platinum 8370C ở
2,8 GHz, 32 lõi
avifenc
(SVT-AV1)
1325 18.11 3200% CPU Intel(R) Xeon(R) Platinum 8370C ở
2,8 GHz, 32 lõi
So sánh tốc độ mã hoá của AVIF
  • Bộ thử nghiệm: Kodak (24 ảnh 768x512)
  • Mã hoá đồng thời 24 hình ảnh (24 quy trình)
  • Mỗi quy trình mã hoá phần mềm được thực thi bằng 4 luồng. (-j 4)


Nhà phát triển có thể triển khai bộ mã hoá Pulsar-AVIF bằng máy ảo trên đám mây, chẳng hạn như Azure NP-Series.

Các tính năng của AVIF cho trang web thích ứng

AVIF có một số tính năng thú vị giúp phân phối các trang web phản hồi nhanh hơn. Lần này, chúng ta sẽ tìm hiểu một chút về tệp AVIF động. Đây là cách hiệu quả nhất để phân phối ảnh động thú vị trên web.

AVIF động

GIF động vẫn là một định dạng phổ biến cho ảnh động, mặc dù đã tồn tại 35 năm. Nhược điểm lớn nhất của ảnh GIF động là chỉ hỗ trợ 256 màu và khả năng nén kém, dẫn đến kích thước tệp rất lớn, đồng thời cũng giới hạn độ phân giải hoặc tốc độ khung hình trong các trường hợp sử dụng thực tế. Ngược lại, mã hóa AVIF động thực sự giống với lược đồ mã hóa video AV1, giúp tiết kiệm đáng kể kích thước tệp so với GIF động.

Chúng tôi đã chạy một phép đo điểm chuẩn đơn giản, trong đó mã hoá một tập hợp ảnh GIF động sang cả AVIF và JPEG XL. Trong tập dữ liệu kiểm thử, tỷ lệ phần trăm tiết kiệm kích thước tệp trung bình là khoảng 86% so với tệp GIF gốc và khoảng 73% so với tệp JPEG XL động*.

So sánh hiệu suất của bộ mã hoá và giải mã hình ảnh động. AVIF vượt trội hơn GIF và JPEG XL về cả kích thước tệp trung bình và trung vị.
* Phiên bản libavif và libjxl: libavif phiên bản 4cff6a3 (libaom phiên bản v3.5.0), libjxl phiên bản 176b1c03. Tập dữ liệu kiểm thử: 15 ảnh GIF mẫu từ Wikipedia.

Chrome, Firefox và Safari đều hỗ trợ phát AVIF động.

FFmpeg là một công cụ dùng để tạo tệp AVIF động. Sau đây là ví dụ cơ bản về cách chuyển đổi ảnh GIF thành tệp AVIF bằng FFmpeg:

ffmpeg -i "$INPUT_GIF" -crf $CRF -b:v 0 "$OUTPUT.avif"

$CRF là chất lượng đầu ra mong muốn theo thang điểm từ 0 đến 63. Giá trị càng thấp thì chất lượng càng tốt và kích thước tệp càng lớn. 0 sử dụng công nghệ nén không suy hao. Bắt đầu với giá trị 23 cho các tệp AVIF ảnh động nhỏ.

Theo mặc định, FFmpeg sử dụng libaom để mã hoá hình ảnh AVIF, nhưng cũng có thể sử dụng rav1e hoặc SVT-AV1 nếu có. Bạn có thể xem thêm thông tin về các lựa chọn bộ mã hoá, điều chỉnh các tham số mã hoá để đánh đổi tốc độ/chất lượng trong hướng dẫn mã hoá AV1 của FFmpeg.

Một trường hợp sử dụng khác là đóng gói lại video AV1 thành AVIF mà không cần mã hoá lại tệp gốc. Cách này rẻ hơn đáng kể so với việc giải mã/mã hoá tệp AV1 gốc và giúp bạn có thể sử dụng video AV1 với phần tử <img>. Bạn có thể thực hiện việc này bằng cách truyền -c:v copy vào FFmpeg.

ffmpeg -i "$INPUT_AV1_VIDEO" -c:v copy -an "$OUTPUT.avif"

Kết luận

Kể từ khi ra mắt, số lượng người dùng AVIF trên web đã tăng lên đều đặn và được các trình duyệt, CDN hình ảnh, trình bổ trợ WordPress và công cụ mã hoá hỗ trợ rộng rãi. Nhìn chung, AVIF là một lựa chọn tuyệt vời để phân phát hình ảnh trên web; AVIF có tốc độ mã hoá và giải mã nhanh chóng, đồng thời cung cấp chất lượng tốt nhất hoặc kích thước tệp nhỏ nhất, tuỳ thuộc vào lựa chọn của bạn cho trang web. AVIF là cách hiệu quả nhất để phân phối ảnh động trên web. Nếu bạn có câu hỏi, nhận xét hoặc yêu cầu về tính năng, vui lòng liên hệ qua danh sách gửi thư thảo luận trực tiếp, cộng đồng AOM trên GitHubAVIF wiki.

Hình ảnh chính trên Unsplash, của Amal S .