Cách làm GIF nhỏ đủ để gửi đi
Một đoạn quay màn hình dài năm giây biến thành file GIF 20 MB rồi bị từ chối ở mọi nơi có giới hạn tải lên. Ứng dụng chat giới hạn tệp đính kèm ở gói miễn phí, diễn đàn thường chỉ cho vài megabyte, còn tệp đính kèm email trên 25 MB bị các nhà cung cấp phổ biến nhất từ chối. Ảnh đại diện, ô emoji và ảnh chữ ký còn khắt khe hơn nữa.
Tin tốt là gần như mọi GIF quá khổ đều chứa nhiều dữ liệu hơn hẳn những gì mắt người nhìn thấy. Bài hướng dẫn này giải thích dung lượng đến từ đâu, cách cắt giảm nó một cách có thể dự đoán được, và khi nào lựa chọn đúng là không gửi GIF chút nào.
Vì sao GIF lại nặng đến vậy
Định dạng này ra đời từ năm 1987 và được thiết kế cho đồ họa nhỏ, không phải cho video. Mỗi khung hình được lưu như một bức ảnh riêng với thuật toán nén không mất dữ liệu LZW — hiệu quả với vùng màu phẳng nhưng thất bại với mọi thứ có nhiễu. GIF không có bù chuyển động: một codec video lưu cảnh người nói trước phông nền tĩnh gần như miễn phí sau khung hình đầu tiên, còn GIF phải trả giá cho toàn bộ khung hình hết lần này đến lần khác.
Mỗi khung hình cũng chỉ có tối đa 256 màu. Khi GIF được tạo từ cảnh quay camera, bộ mã hóa rải các chấm dithering lên từng khung hình để giả lập những sắc độ còn thiếu — và chính những chấm đó là thứ LZW nén kém nhất.
Vậy là còn ba đòn bẩy, và tác dụng của chúng nhân lên với nhau:
- Tốc độ khung hình. Giảm từ 30 xuống 12 fps loại bỏ 60% số khung hình. Phần lớn GIF gửi trong chat trông vẫn ổn ở 10 đến 15 fps.
- Kích thước. Dung lượng tỉ lệ theo số pixel, không phải theo chiều rộng. Thu nhỏ còn 75% giữ lại 56% số pixel; thu còn 50% chỉ giữ một phần tư.
- Bảng màu. Một bảng 64 hoặc 128 màu được chọn riêng cho chính đoạn hoạt ảnh này nén tốt hơn nhiều so với 256 màu.
Thời lượng là đòn bẩy thứ tư, và rẻ nhất: cắt bỏ giây nhàm chán ở cuối vòng lặp không làm mất gì về mặt hình ảnh.
Thu nhỏ một GIF có sẵn
Nén GIF online dựng lại hoạt ảnh bằng FFmpeg chạy ngay trong trình duyệt của bạn. Lượt đầu tiên phân tích toàn bộ hoạt ảnh và tạo một bảng màu tối ưu duy nhất; lượt thứ hai vẽ lại từng khung hình theo bảng màu đó với ordered dithering — để lại một mẫu đều đặn nén tốt hơn nhiều so với nhiễu ngẫu nhiên.
- Chọn mức nén. Mặc định là Vừa.
- Thả một hoặc nhiều GIF vào. Mỗi dòng hiển thị dung lượng trước và sau.
- Nếu kết quả vẫn quá lớn, xóa nó đi, chuyển sang mức tiếp theo và thả lại file gốc.
Các mức nén làm gì, tính bằng con số:
- Nhẹ: 15 fps, giữ kích thước gốc, tối đa 256 màu. Dành cho demo giao diện, nơi từng pixel chữ đều phải đọc được.
- Vừa: 12 fps, 75% chiều rộng và chiều cao, tối đa 128 màu. Lựa chọn đầu tiên phù hợp cho GIF biểu cảm và bản ghi màn hình gửi trong chat.
- Mạnh: 10 fps, một nửa chiều rộng và chiều cao, tối đa 64 màu. Dành cho các giới hạn cứng; số khung hình và số pixel cộng lại chỉ còn một phần nhỏ so với bản gốc.
Thời gian được giữ nguyên ở mọi mức. Một vòng lặp ba giây vẫn kéo dài ba giây, chỉ là được vẽ bằng ít khung hình hơn. Chấp nhận file đến 100 MB, và không có gì rời khỏi thiết bị của bạn.
Mức nào cho nội dung nào
- Bản ghi màn hình và video hướng dẫn giao diện chịu được việc giảm màu khá tốt nhưng bị ảnh hưởng khi thu nhỏ, vì chữ nhỏ sẽ nhòe đi. Hãy bắt đầu với Nhẹ; nếu chưa đủ, lần sau hãy quay một vùng nhỏ hơn thay vì chuyển sang Mạnh.
- Sticker, logo và hình minh họa phẳng chỉ có vài màu trông gần như không đổi ở 64 màu, nên Mạnh thường ổn.
- Đoạn cắt từ cảnh quay camera có màu da, bầu trời và chuyển màu sẽ bị phân dải rõ ở 64 màu. Vừa là mức trần an toàn hơn.
- Pixel art không bao giờ nên bị thu nhỏ. Dùng Nhẹ.
Bắt đầu từ video nếu bạn vẫn còn giữ
Nếu GIF được tạo từ một video và bạn vẫn còn file gốc, dựng lại từ đầu thường tốt hơn là cố ép GIF thành phẩm, vì bạn kiểm soát được thiết lập ngay từ đầu.
- Cắt clip xuống đúng khoảnh khắc quan trọng bằng Cắt video online. Ba giây cho một vòng lặp thường là đủ.
- Mở Chuyển video sang GIF và chọn Chiều rộng cùng FPS. Để gửi chat, 320 hoặc 480 px ở 10 fps là mặc định đáng tin cậy; chỉ dùng 640 px cho bản ghi màn hình có chữ.
- Chuyển đổi. Nếu kết quả vẫn nhỉnh hơn giới hạn một chút, hãy chạy nó qua Nén GIF ở mức Vừa.
Chuyển video sang GIF luôn tính Thời lượng tối đa từ 0:00, đó là lý do cần cắt trước: nếu không, bạn sẽ nhận được vài giây đầu của video chứ không phải đoạn bạn muốn.
Giải pháp tốt hơn, khi nơi nhận cho phép
Nếu nơi bạn đăng chấp nhận video, hãy gửi MP4. Cùng năm giây tốn 20 MB ở dạng GIF thường chỉ tốn vài trăm kilobyte ở dạng H.264, với đầy đủ màu sắc và tốc độ khung hình. Hầu hết ứng dụng chat hiện đại phát các clip ngắn không tiếng ngay trong cuộc trò chuyện và lặp lại liên tục, nên người nhận thấy gần như y hệt. Một số ứng dụng nhắn tin thậm chí còn âm thầm chuyển GIF được tải lên thành video vì chính lý do này.
Nén video online tạo ra file MP4 H.264; mức Vừa là thiết lập tốt cho chat. Với một vòng lặp không tiếng, phần âm thanh vốn cũng chẳng đáng giữ lại.
GIF vẫn là lựa chọn duy nhất ở những nơi không cho phép video hoặc video không tự phát: nội dung và chữ ký email, file README trên một số nền tảng, phần mềm diễn đàn cũ, emoji tùy chỉnh và ô ảnh đại diện, cũng như các công cụ tài liệu loại bỏ video. Hãy dùng GIF ở đó, và dùng video ở mọi nơi khác.
Các tình huống thường gặp
- Ứng dụng chat từ chối vì file quá lớn. Thử Vừa trước. Nếu GIF được tạo từ bản ghi màn hình dài hơn mười giây, hãy rút ngắn từ file gốc thay vì chuyển sang Mạnh.
- Diễn đàn giới hạn tệp đính kèm ở vài megabyte. Dùng Mạnh, và nếu vẫn quá lớn, dựng lại từ clip gốc ở 320 px và 8 đến 10 fps.
- Chữ ký email hoặc bản tin. Giữ hoạt ảnh dưới vài trăm kilobyte: kích thước nhỏ, ít khung hình, mức Mạnh. Ảnh động lớn khiến email mở chậm và một số trình đọc email chỉ hiển thị khung hình đầu tiên.
- GIF biểu cảm cho nhóm chat. Rộng 320 px là quá đủ trên màn hình điện thoại. Không ai để ý 10 fps trong một phản ứng dài hai giây.
Khắc phục sự cố
- File gần như không nhỏ đi. File gốc đã được tối ưu sẵn: kích thước nhỏ, tốc độ khung hình thấp hoặc ít màu. Hãy tăng lên một mức. Nếu bản gốc chạy ở 10 fps trở xuống, mức Nhẹ thậm chí có thể thêm khung hình, nên hãy chuyển thẳng sang Vừa hoặc Mạnh.
- Xuất hiện các dải màu ở vùng chuyển màu. Đó là do bảng màu 128 hoặc 64 màu. Hãy lùi về mức nhẹ hơn hoặc cắt bỏ bầu trời hay phông nền mềm.
- Xuất hiện họa tiết lưới mịn. Đây là mẫu ordered dithering, thấy rõ nhất ở các vùng chuyển màu mượt khi dùng mức Mạnh.
- Một cảnh có màu lạ. Toàn bộ hoạt ảnh dùng chung một bảng màu, nên một cảnh ngắn có màu khác thường sẽ nhận được ít ô màu. Cắt bỏ cảnh đó giúp ích nhiều hơn bất kỳ thiết lập nào.
- Trang có vẻ bị treo. Bộ máy FFmpeg được tải về một lần trong lần dùng đầu tiên rồi chạy cục bộ. Một GIF lớn có thể mất đến một phút trên laptop và lâu hơn trên điện thoại.
Danh sách kiểm tra
- Nơi nhận có chấp nhận MP4 không? Nếu có, hãy gửi MP4 đã nén thay thế.
- Trước tiên, cắt thời lượng xuống đúng phần quan trọng.
- Để gửi chat, nhắm tới 320 đến 480 px ở 10 đến 12 fps.
- Nén ở mức Vừa; chỉ chuyển sang Mạnh khi gặp giới hạn cứng.
- Kiểm tra kết quả ở đúng kích thước hiển thị thực tế trước khi gửi.
Đăng ngày 2026-10-08