UltKit

Cách làm GIF từ video: dung lượng, tốc độ khung hình, vòng lặp

Để làm GIF từ video, hãy chọn một khoảnh khắc dài từ hai đến sáu giây, thu nhỏ về chiều rộng 320–640 px, hạ tốc độ khung hình xuống 10–15 fps và để công cụ chuyển đổi tạo bảng 256 màu từ chính đoạn clip đó. Bốn lựa chọn này quyết định bạn nhận được một ảnh động sắc nét chỉ 2 MB hay một file 30 MB mà không ứng dụng chat nào chấp nhận.

Mina SatoMina SatoBiên tập viên âm thanh và video
Cập nhật 11 phút đọc
Một chiếc máy chiếu phim cổ đặt trên hộp gỗ, chiếu chùm sáng rực rỡ xuyên qua làn sương trong căn phòng tối

File GIF thực sự lưu những gì

GIF ra đời sớm hơn cả web. CompuServe công bố phiên bản đầu tiên, GIF87a, vào năm 1987 để gửi ảnh tĩnh qua kết nối quay số, và bản sửa đổi năm 1989, GIF89a, bổ sung hai tính năng giúp tạo ảnh động: thời gian trễ cho từng khung hình và một màu trong suốt. Tính năng lặp xuất hiện sau đó, vào năm 1995, khi Netscape Navigator 2.0 bắt đầu đọc một phần mở rộng nhỏ quy định số lần lặp lại. Mọi ảnh GIF động ngày nay vẫn là file GIF89a có khối này bên trong, vì vậy nó chạy được trên hầu hết trình duyệt và ứng dụng email.

Bên trong, GIF là một chồng ảnh dùng bảng màu chỉ mục. Mỗi khung hình tham chiếu tới một bảng màu tối đa 256 mục, nên một khung chỉ hiển thị được tối đa 256 màu, dù video gốc có hàng triệu màu. Các điểm ảnh sau đó được nén bằng LZW, một phương pháp nén từ điển không mất dữ liệu, hoạt động tốt với vùng phẳng một màu và kém với nhiễu, hạt ảnh và dải chuyển màu của ảnh chụp. Bản thân LZW không làm mất gì; việc mất chất lượng xảy ra trước đó, khi hàng triệu màu bị ép vào bảng màu.

GIF còn có hai giới hạn khác. Nó không có bất kỳ kênh âm thanh nào, nên tiếng trong video sẽ biến mất. Và thời gian của nó khá thô: độ trễ được lưu theo phần trăm giây, và hầu hết trình duyệt coi độ trễ 0 hoặc 1 phần trăm giây là 10 phần trăm giây, nên GIF tạo ở 50 fps trở lên sẽ chạy chậm hơn chứ không mượt hơn. Trong thực tế, khoảng 10 đến 25 fps là hữu ích.

GIF89a bổ sung ảnh động
1989
Số màu tối đa mỗi khung hình
256
Bước trễ nhỏ nhất
1/100 giây
Kênh âm thanh
0

Vì sao GIF phình to và nên cắt giảm theo thứ tự nào

Codec video hiện đại như H.264 chỉ lưu đầy đủ một khung hình thỉnh thoảng và mô tả phần lớn các khung còn lại như những thay đổi nhỏ so với khung trước. GIF làm được một phần điều đó bằng cách chỉ cập nhật một hình chữ nhật của khung trước, nhưng không có gì giống dự đoán chuyển động. Khi máy quay di chuyển, gần như mọi điểm ảnh đều thay đổi và mỗi khung gần như được lưu đầy đủ. Vì thế một clip điện thoại 2 MB có thể thành GIF 15 MB, trong khi video quay màn hình có con trỏ chuột di chuyển trên cửa sổ đứng yên vẫn rất nhẹ.

Dung lượng GIF xấp xỉ chiều rộng nhân chiều cao nhân số khung hình, giảm bớt tùy phần hình ảnh đứng yên giữa các khung. Nhờ vậy dễ xếp hạng các yếu tố điều chỉnh. Độ dài giảm số khung theo tỉ lệ một-một: bốn giây thay vì tám giây thì file nhỏ đi một nửa. Chiều rộng giảm số điểm ảnh theo bình phương: từ 640 px xuống 320 px chỉ còn một phần tư số điểm ảnh mỗi khung. Tốc độ khung hình lại giảm số khung theo tỉ lệ tuyến tính, và 12 fps giữ được khá tốt cử chỉ và khuôn mặt. Giảm số màu hiệu quả ít hơn mọi người nghĩ, thường chỉ 10 đến 30 phần trăm, vì LZW quan tâm đến các mẫu lặp lại hơn là kích cỡ bảng màu.

Dithering là điểm đánh đổi khiến nhiều người bối rối. Nó rải các chấm màu gần nhau trong bảng màu để giả lập những sắc thái bảng màu không có, giúp che hiện tượng đứt dải ở bầu trời và da, nhưng lại thêm nhiễu mịn mà LZW nén kém. Hãy tắt nó với video quay màn hình, hoạt hình và bản demo giao diện, nơi màu phẳng vốn là bản chất, và bật nó cho cảnh quay thực. Cắt khung là yếu tố cuối cùng: loại bỏ viền tĩnh hoặc dải đen letterbox sẽ bớt điểm ảnh mà không ảnh hưởng đến chủ thể.

  1. Thứ 1Rút ngắn clipMỗi giây bị bỏ đi sẽ mang theo các khung hình của nó; 2–6 giây là đủ cho hầu hết các phản ứng.
  2. Thứ 2Giảm chiều rộngChiều rộng giảm một nửa chỉ còn một phần tư số điểm ảnh; 320–480 px phù hợp với cửa sổ chat.
  3. Thứ 3Hạ tốc độ khung hình10–15 fps vẫn giữ chuyển động dễ nhìn; 8 fps phù hợp với video quay màn hình chậm.
  4. Thứ 4Giảm màu và dithering64–128 màu không dithering cho đồ họa; 256 màu có dithering cho cảnh quay thực.

Chọn điểm bắt đầu và kết thúc của đoạn clip

Hầu hết GIF được chia sẻ chỉ là một khoảnh khắc: một phản ứng, một bàn thắng, một cú nhấp nút và màn hình xuất hiện sau đó. Hãy xem video một lần, tự bấm giờ trong đầu, ghi lại giây khoảnh khắc bắt đầu và giây nó kết thúc rõ ràng, rồi thêm vài khung hình mỗi bên để vòng lặp không bị cụt. Nếu video gốc dài, hãy cắt đoạn cần dùng trước bằng công cụ cắt video rồi làm việc trên file ngắn. Với trình chuyển đổi, nhập thời gian vào Bắt đầu từ và Kết thúc tại theo giây hoặc phút:giây cũng cho kết quả tương tự mà không cần thêm bước riêng.

Cũng nên nghĩ đến nơi GIF bắt đầu phát. Nhiều ứng dụng chat và email hiển thị khung hình đầu tiên trong lúc tải file, và Outlook cho Windows từ 2007 đến 2016 chỉ hiển thị khung đầu tiên mà không bao giờ chuyển động. Hãy bắt đầu ở khung hình có thể đứng như một ảnh tĩnh, không phải một khung bị nhòe giữa lúc lia máy. Nếu thông điệp của GIF là một dòng chữ hay một kết quả, hãy giữ khoảnh khắc cuối nửa giây bằng cách kéo dài Kết thúc tại, để người xem đọc kịp trước khi vòng lặp bắt đầu lại.

TipHãy quay video gốc với ý định làm GIF: giữ điện thoại cố định, để chủ thể chiếm đầy khung hình và tránh zoom. Cảnh quay cố định có thể nhẹ bằng một nửa cảnh quay cầm tay ở cùng cài đặt.

Hai bàn tay cầm bảng clapperboard điện ảnh có số cảnh và số lần quay viết tay trên nền bầu trời sa mạc
Ảnh: Unsplash

Giới hạn dung lượng GIF trên Discord, Slack, GIPHY, X và Reddit

Nơi GIF sẽ được đăng quyết định giới hạn dung lượng trước bất kỳ cài đặt nào. Discord hạ giới hạn tải lên miễn phí xuống 10 MB mỗi file vào năm 2024, và đó là con số mà hầu hết mọi người gặp đầu tiên; Nitro Basic nâng lên 50 MB và Nitro lên 500 MB. GIPHY nhận file tải lên tối đa 15 giây và 100 MB. X nhận GIF đến 15 MB và chuyển thành video lặp khi tải lên, còn Reddit nhận GIF đến 100 MB nhưng cũng phát lại dưới dạng video. Slack nhận file đến 1 GB, nhưng emoji tùy chỉnh phải dưới 128 KB, nghĩa là chiều rộng rất nhỏ, vòng lặp ngắn và ít màu.

Email là trường hợp khác biệt. Gmail cho phép tệp đính kèm 25 MB mỗi thư và Outlook.com 20 MB, nhưng GIF chèn trực tiếp vào nội dung bản tin hoặc chữ ký nên dưới 1 MB để thư mở nhanh trên dữ liệu di động. Trong chat, hãy nhắm tới nửa giới hạn thay vì sát giới hạn, vì người nhận có thể dùng kết nối chậm. Các con số dưới đây còn hiệu lực trong năm 2025; hãy kiểm tra trang trợ giúp của dịch vụ khi file nằm sát ngưỡng.

Giới hạn tải lên GIF tính đến năm 2025
Nơi đăngGiới hạnGIF sẽ được xử lý thế nào
Discord, tài khoản miễn phí10 MB mỗi filePhát trực tiếp và lặp lại
Discord Nitro Basic / Nitro50 MB / 500 MBPhát trực tiếp và lặp lại
Tin nhắn Slack / emoji tùy chỉnh1 GB / 128 KBChuyển động trực tiếp, trừ khi người xem đã tắt ảnh động
Tải lên GIPHY15 giây, 100 MBPhân phối dưới dạng GIF, MP4 và WebP
X (Twitter)15 MBChuyển thành MP4 lặp không tiếng
Reddit100 MBChuyển thành video để phát
Chèn trong emailNên dưới 1 MBOutlook 2007–2016 cho Windows chỉ hiển thị khung hình đầu

Khi nào MP4, WebM, WebP hoặc APNG tốt hơn GIF

Lý do X chuyển mọi GIF tải lên thành MP4, và đã làm vậy từ năm 2014, là băng thông. Năm giây nặng 4 MB dưới dạng GIF thường chỉ vài trăm kilobyte khi là H.264, với đầy đủ màu thay vì 256 sắc và không có nhiễu dithering. GIPHY và Tenor cũng làm thế: nút GIF trên bàn phím của bạn thường tải về một MP4 hoặc WebP nhỏ. Vì vậy câu hỏi thực sự không phải làm GIF đẹp nhất thế nào, mà là nơi bạn đăng có cần GIF hay không.

Hãy giữ GIF thật khi nơi đến hiển thị ảnh nhưng không hiển thị video: nội dung email, README hoặc issue trên GitHub, ticket Jira, wiki, diễn đàn cũ, bộ slide phải chạy trên mọi trình xem. Ở bất cứ nơi nào video phát trực tiếp và tắt tiếng, gồm hầu hết mạng xã hội và ứng dụng chat hiện đại, vòng lặp MP4 hoặc WebM trông đẹp hơn và tải nhanh hơn. Trên trang web do bạn kiểm soát, phần tử <video autoplay muted loop playsinline> hoạt động như GIF và tốn ít byte hơn nhiều.

Có hai định dạng ảnh nằm ở giữa. WebP động, của Google, hỗ trợ hàng triệu màu và nén có mất dữ liệu, chạy trên Safari từ phiên bản 14 năm 2020, nên nay hoạt động trên mọi trình duyệt hiện hành, dù nhiều ứng dụng ngoài trình duyệt vẫn không hỗ trợ. APNG mở rộng PNG bằng các khung hình, giữ đủ màu và độ trong suốt alpha thực, và được Apple cùng LINE dùng cho sticker động. Nếu đã có GIF và bạn chỉ cần làm nhỏ hơn cho trang web phát được video, chuyển GIF ngược lại thành MP4 thường là cách tiết kiệm lớn nhất.

Phát được ở mọi nơi

GIF

256 màu, không có tiếng, file lớn, nhưng hiển thị như một ảnh ở mọi nơi.

  • Nội dung email, README, ticket và wiki
  • Lặp lại mà không có nút phát
  • Tỉ lệ dung lượng trên chất lượng kém nhất trong bốn loại
Best for: Những nơi hiển thị ảnh nhưng không hiển thị video.
Nhẹ nhất

MP4 hoặc WebM

Đủ màu và nén chuyển động, thường chỉ bằng một phần mười dung lượng.

  • Có thể giữ lại âm thanh
  • Tự phát tắt tiếng trên hầu hết mạng xã hội
  • Hầu hết ứng dụng email không hiển thị trực tiếp
Best for: Bài đăng mạng xã hội, ứng dụng chat và trang web do bạn kiểm soát.
Định dạng ảnh

WebP động hoặc APNG

Ảnh động đủ màu; APNG có thêm độ trong suốt mượt.

  • Chạy trên mọi trình duyệt hiện hành
  • Hỗ trợ không đồng đều trong ứng dụng máy tính và email
  • APNG thường dùng cho sticker
Best for: Trang web và bộ sticker.

Sáu cách chuyển video sang GIF

Điện thoại làm được việc này mà không cần thêm ứng dụng. Trên iPhone, ứng dụng Phím tắt (Shortcuts) có hành động Make GIF nhận video hoặc Live Photo, và Live Photo với hiệu ứng Loop hoặc Bounce là cách nhanh để quay nguồn. Ứng dụng Gallery của Samsung hiển thị nút GIF khi đang phát video, ghi lại đoạn đang xem thành GIF. Ứng dụng GIPHY và GIF Maker trên web của nó cho phép cắt, thêm chú thích và tải lên cùng một chỗ, nhưng kết quả sẽ công khai trừ khi bạn chỉ lưu về. Trong Photoshop, File > Import > Video Frames to Layers nhập tối đa 500 khung hình, và Export > Save for Web (Legacy) xuất GIF với tùy chọn bảng màu và dither.

Để kiểm soát toàn diện và xử lý hàng loạt, phương pháp bảng màu hai lượt của ffmpeg cho kết quả sạch nhất: bộ lọc đầu tiên quét clip và tạo bảng 256 màu từ chính màu thực của nó, bộ lọc thứ hai ánh xạ từng khung hình lên bảng đó. Lệnh một dòng dưới đây cắt năm giây bắt đầu từ 0:02, thu về rộng 480 px, lấy mẫu 12 fps và lặp vô hạn. Trên trình duyệt, công cụ chuyển video sang GIF thực hiện cùng bước tạo bảng màu với các điều khiển Chiều rộng, Tốc độ khung hình, Màu sắc và Phối màu (dithering), còn trang MP4 sang GIF mở sẵn với MP4 được chọn. Clip điện thoại định dạng MOV cũng làm tương tự; nếu ứng dụng từ chối, hãy đọc cách chuyển MOV sang MP4 trước.

iPhone

  1. 01Trong Phím tắt (Shortcuts), tạo chuỗi Select Photos → Make GIF → Save to Photo Album.
  2. 02Chạy phím tắt và chọn video hoặc Live Photo; hãy cắt các clip dài trong Ảnh trước.
  3. 03Chia sẻ GIF từ album Animated trong Ảnh.

Android

  1. 01Mở video trong Gallery của Samsung và chạm GIF khi video đang phát.
  2. 02Kéo các tay cầm tới đoạn bạn muốn.
  3. 03Chạm Save; trên điện thoại khác, hãy dùng trình chuyển đổi web trong Chrome.

Máy tính

  1. 01Trong Photoshop, chọn File > Import > Video Frames to Layers.
  2. 02Đặt độ trễ khung hình và lặp Forever trong bảng Timeline.
  3. 03Xuất bằng Save for Web (Legacy) sang GIF, 128–256 màu.
ffmpeg: 5 giây từ 0:02, rộng 480 px, 12 fps, lặp lại
ffmpeg -ss 2 -t 5 -i video-goc.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" -loop 0 anh-dong.gif

Vòng lặp mượt và bước kiểm tra chất lượng cuối cùng

GIF mặc định lặp vô hạn vì phần mở rộng Netscape được ghi với số lần lặp bằng không, nghĩa là vô hạn. Đặt số lần bằng một sẽ khiến nó phát một lần rồi dừng ở khung cuối, phù hợp với GIF kết thúc bằng một thông điệp. Phần khó hơn là làm cho vòng lặp không lộ. Hãy tìm đoạn mà khung đầu và khung cuối gần như giống hệt, chẳng hạn cú vẫy tay quay về đúng vị trí cũ, hoặc phát clip xuôi rồi ngược bằng Boomerang, cách này xóa cú giật nhưng số khung tăng gấp đôi.

Trước khi gửi, hãy mở GIF ở kích thước thật trong một tab trình duyệt, không phải ảnh thu nhỏ, và xem đủ ba vòng lặp. Kiểm tra chữ trong khung có đọc được ở chiều rộng đã chọn không, khuôn mặt có bị biến thành các mảng màu rời rạc không, và thời gian có khớp với video không. Sau đó so sánh dung lượng file với giới hạn trong bảng ở trên; nếu sát ngưỡng, hãy quay lại thứ tự cắt giảm: độ dài, chiều rộng, tốc độ khung hình rồi màu sắc. Với clip dài hơn hoặc có âm thanh, nén video để gửi qua Discord và email là hướng phù hợp hơn.

  • Đứt dải màu ở bầu trời, vùng tối và da

    Bảng màu đã hết sắc thái. Giữ 256 màu và chuyển Phối màu (dithering) sang Sierra hoặc Floyd–Steinberg, hoặc gửi MP4 cho cảnh quay có nhiều dải chuyển màu.

  • GIF phát nhanh hơn hoặc chậm hơn video

    Độ trễ được lưu theo phần trăm giây. 10, 20 và 25 fps chia hết đều; trên 50 fps sẽ bị trình duyệt làm chậm lại.

  • Chữ trong khung không đọc được

    Tăng chiều rộng lên 640 px và hạ tốc độ khung hình để bù, hoặc cắt vào vùng có chữ trước khi chuyển đổi.

  • Có cú giật rõ khi vòng lặp bắt đầu lại

    Dời Bắt đầu từ và Kết thúc tại tới các khung hình khớp nhau, hoặc bật Boomerang và rút ngắn đoạn đi một nửa.

Điểm chính cần nhớ

  • GIF chứa tối đa 256 màu mỗi khung hình, không có âm thanh và độ trễ khung hình tính theo phần trăm giây.
  • Dung lượng phụ thuộc vào độ dài, chiều rộng và tốc độ khung hình; hãy giảm theo thứ tự đó trước khi đụng đến màu sắc.
  • Nhắm tới 2–6 giây, 320–640 px và 10–15 fps; tắt dithering với video quay màn hình.
  • Discord miễn phí nhận 10 MB, X 15 MB, GIPHY 15 giây và 100 MB, emoji Slack 128 KB.
  • Ở nơi video phát trực tiếp, vòng lặp MP4 hoặc WebM nhỏ hơn và đẹp hơn mọi GIF.
Chia sẻXFacebookWhatsAppTelegram

Câu hỏi thường gặp

Tốc độ khung hình nào tốt nhất cho GIF làm từ video?

Với hầu hết các clip, nên dùng từ 10 đến 15 fps. Cảnh thể thao hoặc game chuyển động nhanh có thể cần 20 fps; bản ghi màn hình chuyển động chậm vẫn đẹp ở 8 fps và cho ra file nhỏ hơn nhiều.

Một ảnh GIF nên dài bao nhiêu giây?

Từ hai đến sáu giây là đủ cho gần như mọi cảnh phản ứng, bản demo và đoạn nổi bật. Quá mười giây, GIF sẽ nặng rất nhanh, và một đoạn MP4 ngắn thường là file phù hợp hơn để chia sẻ.

GIF có phải định dạng không mất dữ liệu không?

Phương pháp nén LZW bên trong GIF không làm mất dữ liệu, nhưng quá trình chuyển đổi thì có, vì hàng triệu màu của video bị giảm xuống bảng màu 256 màu cho mỗi khung hình. Chính bước giảm này gây ra hiện tượng sọc màu và nhiễu hạt.

Vì sao X chuyển GIF của tôi thành video?

Từ năm 2014, X đã chuyển các GIF được tải lên thành file MP4 lặp lại, vì video nhỏ hơn nhiều và giữ đủ màu sắc. Bài đăng vẫn lặp lại không tiếng giống như GIF.

Có thể làm GIF từ video YouTube không?

Chỉ khi bạn có file đó trên thiết bị và có quyền sử dụng. Hãy tải về video do chính bạn đăng từ YouTube Studio hoặc dùng bản ghi gốc, rồi cắt và chuyển đổi.

GIF và WebP động khác nhau như thế nào?

WebP động hỗ trợ hàng triệu màu, nén có mất dữ liệu và độ trong suốt mượt, nên thường nhỏ hơn nhiều. GIF dùng được ở nhiều nơi hơn, kể cả ứng dụng email và các ứng dụng cũ không hỗ trợ WebP.

Đọc tiếp