Xuất khung hình từ Video
Công cụ trực tuyến miễn phí để xuất khung hình từ video. Chuyển video sang ảnh, chụp màn hình video, tạo thumbnail. Hỗ trợ MP4, WebM, MOV. Xuất JPG, PNG, WebP.
Về công cụ xuất khung hình
Công cụ trực tuyến này cho phép bạn xuất khung hình (ảnh) từ video ngay trên trình duyệt. Hoàn hảo để tạo thumbnail, storyboard, hoặc chụp các khoảnh khắc cụ thể. Chọn khoảng cách xuất, số lượng khung hình, hoặc FPS. Tất cả quá trình xử lý diễn ra cục bộ để đảm bảo riêng tư hoàn toàn.
Cách tốt nhất để trích xuất một khung hình cụ thể từ video là gì?
Chỉ định mốc thời gian chính xác bằng giây (hoặc HH:MM:SS.mmm) và đặt khoảng trích xuất là 1 khung. Bên dưới, công cụ tìm đến khung khóa gần nhất trước đó, giải mã tiến tới thời gian mục tiêu, và xuất ảnh đã giải mã. Để trích xuất đơn chính xác từng khung, dùng WebCodecs API (Chrome 94+) có thể đánh chỉ mục từng khung, hoặc đưa cho FFmpeg tùy chọn -ss sau -i cho chế độ tìm kiếm chính xác. Nếu kết quả trông khác khung mong đợi, có lẽ nguồn có tốc độ khung biến thiên hoặc tái sắp xếp PTS/DTS — chuyển sang tốc độ khung cố định trước. Định dạng đầu ra ảnh hưởng độ trung thực: PNG không mất dữ liệu, tốt nhất cho poster/thumbnail; JPEG chất lượng 92+ nhỏ hơn và đủ cho hầu hết; WebP nén tốt hơn JPEG 30% ở chất lượng tương đương.
Nên chọn định dạng đầu ra nào: PNG, JPEG hay WebP?
PNG (Portable Network Graphics) không mất dữ liệu: mọi pixel từ khung video được giải mã được giữ chính xác. Tốt nhất cho thumbnail bạn sẽ chỉnh sửa, khung khoa học/pháp y, hoặc ảnh chụp màn hình cần trong suốt. Dung lượng lớn (thường 5-10 lần JPEG). JPEG (ISO/IEC 10918, chất lượng 0-100) dùng nén DCT mất dữ liệu loại bỏ chi tiết tần số cao mà hầu hết người xem không thấy. Dùng chất lượng 85-95 cho thumbnail độ trung thực cao và 70-85 cho preview web nơi dung lượng quan trọng. WebP (Google, 2010) hỗ trợ cả chế độ không mất và có mất, cho file nhỏ hơn JPEG 25-35% ở cùng chất lượng thị giác, hiện được mọi trình duyệt hiện đại hỗ trợ. AVIF còn tốt hơn (nhỏ hơn 50%) nhưng mã hóa chậm hơn. Chọn PNG cho chỉnh sửa, WebP cho phân phối web, JPEG cho tương thích phổ thông.
Làm sao trích xuất một khung mỗi N giây cho contact sheet?
Đặt khoảng trích xuất là N giây (hoặc 1/N khung mỗi giây). Cho video 10 phút ở 1 khung mỗi giây, bạn có 600 thumbnail — thường là mật độ tốt cho chỉ mục trực quan nhanh. Cho nội dung dài (bài giảng, giám sát), 1 khung mỗi 5 giây cho 120 thumbnail mỗi 10 phút dễ quản lý. Bên trong, công cụ bảo FFmpeg điều gì đó như -vf fps=1/N để giải mã toàn bộ luồng nhưng chỉ phát ra khung theo nhịp yêu cầu. Để tiết kiệm thời gian xử lý trên nguồn rất dài, cũng hạ độ phân giải (trích xuất thumbnail rộng 320 nhanh hơn nhiều so với rộng 1920). Cho một ảnh contact sheet thực sự (lưới thumbnail trong một file), bạn chạy bộ lọc tile của FFmpeg trên các khung đã trích, hoặc dùng ImageMagick montage.
Tại sao khung trích ra bị mờ hoặc vỡ hạt?
Vài nguyên nhân điển hình. Thứ nhất, nguồn vốn có độ phân giải thấp hoặc bị nén nặng — trích từ bản tải YouTube 480p không thể tạo chi tiết 4K. Thứ hai, bạn trích khung P hay B từ bản mã hóa nén nặng, nơi sai số dự đoán chuyển động nhỏ hiện rõ khi xem khung độc lập; trích trên hoặc gần khung khóa (khung I) thường cho ảnh sạch hơn. Thứ ba, nếu video có quét xen kẽ (phổ biến trong phát sóng TV cũ và DV), khung đơn hiển thị nhiễu răng lược trừ khi áp bộ lọc khử xen kẽ (yadif hay bwdif của FFmpeg). Thứ tư, chất lượng JPEG đầu ra đặt quá thấp. Khắc phục: trích từ nguồn chất lượng cao hơn, ưu tiên khung khóa, khử xen kẽ nếu cần, và dùng PNG hoặc JPEG chất lượng 90+ cho xuất.

Có thể trích từng khung của video không?
Có — đặt khoảng bằng tốc độ khung nguồn (nguồn 30 fps = 30 khung mỗi giây trích = mỗi khung). Lưu ý dung lượng đĩa: clip 30-fps dài 1 phút trích thành PNG ở 1080p tạo 1800 file mỗi file 2-4 MB, tổng 4-7 GB. Cho trích toàn khung, JPEG chất lượng 95 thường là điểm cân bằng (file nhỏ hơn nhiều, thị giác không phân biệt được). Trường hợp dùng trích toàn khung gồm rotoscope, tập dữ liệu huấn luyện AI, phân tích stop-motion, và xem xét pháp y. Cho video rất dài, cân nhắc trích thành chuỗi khung trong một file lưu trữ (TAR hay ZIP) để tránh căng thẳng hệ thống file vì hàng triệu file nhỏ, vì nhiều hệ thống file chậm dữ dội với hơn 100.000 file mỗi thư mục.
Khác biệt giữa khung I, khung P và khung B khi trích xuất là gì?
Codec video hiện đại lưu khung trong cấu trúc gọi là GOP (Group of Pictures). Khung I (intra-coded) là ảnh đầy đủ độc lập — lớn nhất và chất lượng cao nhất. Khung P (predicted) chỉ lưu khác biệt với khung trước; tái tạo cần giải mã mọi thứ từ khung I trước đó. Khung B (bidirectional) tham chiếu khung quá khứ lẫn tương lai, nhỏ nhất. Để trích xuất, khung I có độ trung thực cao nhất mỗi khung vì không có lỗi dự đoán liên khung. Để chỉ trích khung I (thường là ứng cử viên thumbnail tự nhiên trong video), đặt bộ lọc -vf "select='eq(pict_type,I)'" trong FFmpeg. Cho bạn khoảng một khung mỗi 2-4 giây cho video web, hoàn hảo cho dấu chương hoặc phát hiện thay đổi cảnh.
Làm sao trích khung tại mốc chính xác mà không mã hóa lại?
Trích xuất thuần là một thao tác giải mã — không có chế độ codec-copy cho khung riêng lẻ vì bạn phải giải nén để có dữ liệu pixel. Tuy nhiên có thể tránh mã hóa lại bằng cách chọn định dạng đầu ra không mất dữ liệu (PNG, WebP không mất, TIFF) để pixel đã giải mã được ghi nguyên văn. Bản thân giải mã không mất gì ngoài cái mà mã hóa mất dữ liệu gốc đã tốn. Để trích tại thời gian chính xác, cung cấp mốc bằng giây phân số và dùng WebCodecs API hoặc FFmpeg với -accurate_seek. Nếu muốn chuỗi dài mốc, viết vào file văn bản và dùng bộ lọc select của FFmpeg với mốc cách nhau bằng dấu +, tất cả trong một lượt — nhanh hơn nhiều so với tìm kiếm N lần riêng.
Tại sao khung trích không khớp hoàn hảo với cái tôi thấy khi tua video?
Trình phát video làm mượt phát bằng cách bỏ qua khởi động giải mã, dùng heuristic tìm kiếm riêng, và đôi khi render hợp thành mờ chuyển động cho tua nhanh. Giá trị pixel chính xác bạn thấy khi tua có thể từ khung giải mã một phần hoặc nội suy. PNG trích ra là giá trị pixel thật của khung đã giải mã tại mốc trình bày (PTS) yêu cầu. Nếu nguồn dùng khung B với tái sắp xếp, khung hiển thị khi tua tại thời điểm t có thể thực ra là số khung khác với khung gần nhất với PTS t. Nguồn không khớp khác: khác biệt không gian màu (trình phát áp BT.709 sang BT.601, trích không), ánh xạ tông HDR-sang-SDR khi phát, hoặc làm tròn giải mã phần cứng. Cho trích chuẩn sự thật, tin file hơn trình phát.
