Chuyển Video Sang GIF
Chuyển video sang GIF miễn phí. Cắt đoạn, chỉnh FPS, chiều rộng, số màu bảng màu và vòng lặp, xuất GIF chất lượng cao bằng ffmpeg.wasm, không tải lên.
Giới thiệu Công Cụ Chuyển Video Sang GIF
Công cụ Chuyển Video Sang GIF biến một đoạn ngắn từ tệp MP4, WebM, MOV, MKV, AVI hoặc M4V bất kỳ thành ảnh GIF động để bạn chia sẻ trên chat, email, diễn đàn hay mạng xã hội. Bạn chọn mốc bắt đầu - kết thúc, số khung hình mỗi giây (5 đến 30 fps) và chiều rộng, công cụ sẽ tạo GIF tối ưu bằng đường ống bảng màu hai lượt: trước tiên ffmpeg phân tích đoạn đã cắt và xây bảng 256 màu tuỳ biến từ nội dung thực tế, sau đó mã hoá lại các khung bằng bảng đó với thuật toán dither bạn chọn, giúp gradient mượt và tông da tự nhiên dù GIF chỉ có tối đa 256 màu mỗi khung. Các tuỳ chọn chuyên nghiệp cho phép bạn đặt số màu bảng màu (max_colors, tương đương thanh chất lượng của GIF) để cân bằng giữa hiện tượng phân tầng màu và dung lượng, cùng số lần lặp để bản giao có thể phát một lần thay vì lặp mãi. Tất cả diễn ra ngay trong trình duyệt qua ffmpeg.wasm – bản biên dịch WebAssembly đơn luồng của ffmpeg, nên video gốc không bao giờ rời khỏi thiết bị của bạn. Vì là lõi đơn luồng, nguồn độ phân giải rất cao hoặc AV1 có thể giải mã chậm hoặc không giải mã được; với những nguồn đó, hãy xuất lại sang MP4 H.264 trước. Bản thân bộ máy khá nặng (khoảng 25 MB) và chỉ tải khi bạn nhấn Chuyển lần đầu, sau đó được trình duyệt lưu cache cho các lần sau. Các trường hợp dùng phổ biến gồm tạo GIF phản ứng từ bản ghi màn hình, biến video demo sản phẩm thành ảnh động tự phát cho landing page, hay trích những khoảnh khắc thú vị từ video dài mà không cần phần mềm desktop như FFmpeg, Photoshop hay Premiere. Xem thêm Tạo Thumbnail Video và Tỷ lệ khung hình.
Công cụ Video sang GIF thật sự làm gì?
Nó lấy một đoạn ngắn từ tệp video bạn chọn, mã hoá lại theo FPS và chiều rộng đã chọn rồi xuất thành ảnh GIF động. Bên trong, công cụ chạy chính ffmpeg dòng lệnh được biên dịch sang WebAssembly: trước tiên trích bảng 256 màu tuỳ biến cho đoạn đã cắt bằng palettegen, sau đó ánh xạ từng khung sang bảng đó qua paletteuse với dither Sierra. Cách tiếp cận hai lượt này cho GIF đẹp hơn rõ rệt so với cách chuyển một lượt đơn giản, đặc biệt với khuôn mặt, gradient và cảnh tối – nơi sẽ xuất hiện hiện tượng bandeo. Đầu ra là tệp GIF89a chuẩn, mở được trên mọi trình duyệt, ứng dụng chat và trình xem ảnh.
Hỗ trợ các định dạng video và codec nào?
Trình duyệt dùng bộ giải mã riêng để xem trước và ffmpeg.wasm để chuyển đổi. MP4/M4V H.264, WebM VP8/VP9 và phần lớn codec MOV (QuickTime) được hỗ trợ tốt. Vùng chứa MKV và AVI vẫn chuyển được, nhưng nhiều trình duyệt không giải mã chúng trong khung xem trước, nên độ dài đoạn có thể không được tự nhận; khi đó công cụ chuyển sang khoảng cắt mặc định 30 giây để bạn tự đặt. AV1 và một số cảnh quay H.265 có thể giải mã chậm hoặc không giải mã được trên lõi đơn luồng này, nên hãy xuất lại sang MP4 H.264 trước để có kết quả ổn định nhất. Âm thanh bị bỏ qua vì GIF không có tiếng. Không có giới hạn cứng về dung lượng vì không có gì tải lên, nhưng tệp dưới 100 MB và đoạn dưới 30 giây hoạt động tốt nhất; đoạn quá dài hoặc giữ nguyên độ phân giải khiến ffmpeg.wasm phải giữ vùng đệm khung lớn trong bộ nhớ, có thể làm treo tab có dưới 4 GB RAM (công cụ giới hạn chiều rộng 'Giữ nguyên' để kiểm soát điều này).
Video của tôi có bị gửi lên máy chủ không?
Video của bạn nằm hoàn toàn trên thiết bị. Tệp được đọc vào bộ nhớ trình duyệt qua File API, ghi vào hệ thống tệp ảo của ffmpeg.wasm, xử lý ngay tại đó, và GIF kết quả được trả về dưới dạng Blob để trình duyệt xem trước và tải xuống. Không có yêu cầu mạng nào kèm dữ liệu video; chỉ có yêu cầu tải bộ máy ffmpeg.wasm (~25 MB) một lần từ CDN công khai, sau đó nằm trong cache trình duyệt. Bạn có thể kiểm tra ở tab Network của DevTools: sau khi bộ máy đã tải, các lần chuyển tiếp theo không phát sinh truy cập ra ngoài. Nhờ vậy, công cụ an toàn cho bản ghi cá nhân, ảnh chụp màn hình chứa dữ liệu nhạy cảm và video doanh nghiệp bí mật.
Quá trình chuyển mất bao lâu và GIF lớn cỡ nào?
Trên một laptop hiện đại thông thường, đoạn 5 giây ở chiều rộng 320 px và 10 fps mất khoảng 6-12 giây và cho GIF tầm 1-3 MB. Lần đầu chậm hơn vì bộ máy ffmpeg.wasm phải tải (~25 MB) và khởi tạo, mất thêm khoảng 10-30 giây với kết nối nhanh. Điện thoại di động và laptop cũ có thể chậm gấp 3-5 lần. Đường ống bảng màu hai lượt tốn CPU hơn cách chuyển đơn giản nhưng đổi lại chất lượng và dung lượng cuối tốt hơn. Để GIF nhỏ phù hợp chia sẻ, hạ FPS xuống 10 hoặc thấp hơn, giảm chiều rộng còn 320 px và giữ đoạn dưới 5 giây; với GIF phản ứng trong chat hiếm khi cần hơn.

Trình duyệt, thiết bị và tốc độ mạng nào hoạt động tốt nhất?
Công cụ này dùng bản @ffmpeg/core đơn luồng, nên chạy được ở bất cứ đâu có động cơ WebAssembly hiện đại và không phụ thuộc vào SharedArrayBuffer hay header COOP/COEP đặc biệt; điều đó giúp tương thích rộng nhưng nghĩa là việc mã hoá chỉ dùng một lõi CPU (lõi đa luồng sẽ nhanh hơn nhưng không kèm theo ở đây). Chrome 92+, Edge 92+, Firefox 79+ và Safari 15.2+ đều dùng được. Safari di động và Chrome trên Android cũng được nhưng ít RAM hơn, nên hãy giữ đoạn ngắn và chiều rộng vừa phải. Vì gói bộ máy khoảng 25 MB, lần đầu chạy trên 3G di động có thể mất vài phút; với 4G hoặc Wi-Fi gia đình thường dưới 30 giây. Khi đã trong cache, các lần truy cập sau tải tức thì và làm việc ngoại tuyến.
Vì sao GIF của tôi quá lớn, vỡ hạt hoặc giật? Khắc phục thế nào?
GIF là định dạng từ năm 1987, giới hạn 256 màu mỗi khung và nén tương đối thô nên đoạn độ phân giải và fps cao chắc chắn ra tệp rất lớn. Nếu GIF quá nặng, hãy giảm chiều rộng (320 px là đủ cho chat), giảm FPS còn 10-12 và giữ đoạn dưới 6 giây. Nếu màu bị phân tầng, hãy dùng chiều rộng đầu ra hợp với nguồn hơn (tránh thu nhỏ quá mạnh). Nếu chuyển động giật, tăng FPS lên 15-20 và rút ngắn đoạn để bù dung lượng. Nếu kết quả lỗi, thử chuyển bằng codec khác (xuất lại nguồn từ MOV sang MP4 trước). Với nội dung động dài hoặc cần chất lượng cao, hãy cân nhắc WebP hoặc MP4 thay vì GIF; chúng hỗ trợ hàng triệu màu và nhỏ hơn nhiều ở cùng chất lượng.
Làm sao để GIF nhỏ nhất mà không bị phân tầng màu?
GIF không có bitrate hay CRF, nên đòn bẩy lớn nhất với dung lượng là bảng màu: hãy dùng tuỳ chọn Số màu bảng màu (max_colors). Nội dung phẳng như video quay màn hình giao diện, biểu đồ hay phim hoạt hình thường trông y hệt ở 64 màu nhưng chỉ nặng khoảng một phần ba đến một nửa so với bản 256 màu. Cảnh nhiều gradient (hoàng hôn, da người, khói) cần nhiều màu hơn, nên giữ 128 hoặc 256 ở đó. Để tránh phân tầng khi giảm màu, hãy kết hợp số màu thấp với dither Bayer có thứ tự (nó thêm một hoa văn mịn, phân bố đều giúp che các bậc màu và nén tốt hơn khuếch tán lỗi); để có kết quả nhỏ nhất, đặt Màu là 32, dither Bayer, FPS 10 và chiều rộng 320. Cụ thể, đoạn 5 giây 320 px ở 10 fps có thể khoảng 1,5-2,5 MB với 256 màu, gần 1 MB với 64 màu, và nhỏ hơn hẳn với 32 màu kèm Bayer. Hãy cắt thời lượng và FPS trước, rồi mới chỉnh màu, vì chúng nhân với nhau: tổng dung lượng tỉ lệ với số khung x chiều rộng x chiều cao x hiệu suất bảng màu.
Tôi có thể cho GIF phát một lần không, và việc cắt có chính xác đến từng khung không?
Cả hai đều được. GIF lặp vô hạn theo mặc định, rất hợp cho GIF phản ứng trong chat, nhưng với demo sản phẩm, quảng cáo hay video onboarding thì thường bạn muốn nó dừng lại. Đặt tuỳ chọn Số lần lặp thành 'Phát một lần' (ghi -loop 1 của ffmpeg) hoặc 'Phát 3 lần' (-loop 3); 'Vô hạn' là -loop 0. Về độ chính xác khi cắt, công cụ tìm đúng mốc bắt đầu bạn chọn bằng cơ chế seek đầu vào chính xác, nên GIF bắt đầu đúng khung mà thanh trượt chỉ tới thay vì nhảy về khung khoá gần nhất cách đó vài trăm mili-giây – điều này quan trọng khi bạn cô lập một khoảnh khắc chính xác. Cả lượt phân tích bảng màu lẫn lượt mã hoá đều dùng chung mốc seek và cửa sổ cắt, nên màu được lấy mẫu đúng từ những khung sẽ nằm trong GIF. Để so sánh, WebP động và APNG hỗ trợ đủ màu và alpha và thường nhỏ hơn GIF 30-70% ở cùng chất lượng, nhưng GIF vẫn là định dạng nhúng được phổ biến nhất; hãy dùng các tuỳ chọn bảng màu và vòng lặp ở đây khi bạn thật sự cần một bản giao dạng GIF.
