Bài viết
Trích khung hình video cho ảnh thu nhỏ và bảng tiếp xúc
Một video là một chuỗi ảnh tĩnh. Lấy một trong các ảnh đó ra cho bạn một ảnh thu nhỏ, một ảnh bìa, hoặc một bảng tiếp xúc. Kết quả sắc nét và dễ đoán hơn khi bạn hiểu cách một codec video lưu các khung của nó và những khoảnh khắc nào đáng chụp.
Khung hình và tốc độ khung
Một tệp video là một chuỗi ảnh tĩnh được hiển thị đủ nhanh để tạo ảo giác chuyển động. Số ảnh hiển thị mỗi giây là tốc độ khung, biểu thị bằng fps. Các giá trị thường gặp là 24 fps cho điện ảnh, 25 fps cho phát sóng PAL, 30 fps cho video web, và 60 fps cho footage chơi game. Ở 24 fps, một bộ phim hai giờ chứa khoảng 172.800 khung riêng lẻ. Mỗi khung tương ứng với một khoảnh khắc duy nhất trong thời gian; trích một khung đóng băng khoảnh khắc đó thành một ảnh độc lập. Tốc độ khung cũng quyết định bạn nhận bao nhiêu khung trên mỗi giây footage khi trích một loạt: ở 30 fps, lấy mọi khung từ một phút video cho bạn 1.800 ảnh, thường nhiều hơn xa mức bạn cần. Trích ở tốc độ khung thấp hơn, hoặc mỗi khung thứ N với các công cụ hỗ trợ điều đó, là một cách thực tế để giảm khối lượng đó mà vẫn bao trùm toàn bộ thời lượng.

Keyframe so với khung nội suy
Các codec video hiện đại không lưu mọi khung dưới dạng một ảnh hoàn chỉnh. Chúng dùng ba loại khung để tiết kiệm dung lượng. Một I-frame, còn gọi là keyframe, là một ảnh hoàn chỉnh, tự chứa. Một P-frame chỉ lưu các điểm ảnh đã đổi kể từ I-frame hoặc P-frame trước. Một B-frame lưu các thay đổi so với cả một khung trước và một khung sau, đòi hỏi các khung ở cả hai phía để tái dựng nó. Vì một P-frame hoặc B-frame tự nó không hoàn chỉnh, giải mã một khung như vậy cần các khung tham chiếu xung quanh. Nếu các khung tham chiếu đó chứa nhòe chuyển động hoặc một chuyển cảnh, ảnh được tái dựng sẽ thừa hưởng nhòe đó. Ngược lại, một I-frame được giải mã độc lập. Nó luôn sắc nét vì không mượn gì từ hàng xóm. Khi trích một khung để dùng làm ảnh thu nhỏ, rơi đúng vào một I-frame cho bạn kết quả sạch nhất có thể. Hầu hết codec đặt các I-frame ở các điểm cắt cảnh, vốn là các điểm khởi đầu sắc nét một cách tự nhiên.
Chọn đúng khoảnh khắc
Ngay cả một I-frame được giải mã tốt cũng có thể là một ảnh thu nhỏ kém nếu khoảnh khắc bắt được không đẹp. Vài yếu tố làm giảm chất lượng ảnh thu nhỏ. Nhòe chuyển động xảy ra khi máy quay hoặc chủ thể di chuyển nhanh trong lúc phơi sáng khung; vệt nhòe kết quả khiến một khung trông mềm dù việc giải mã sạch. Các khung chuyển cảnh bắt giữa lúc hòa tan hoặc làm mờ chứa hai ảnh chồng nhau và hiếm khi dùng được như ảnh độc lập. Các khung thiếu sáng hoặc thừa sáng, thường gặp ở đầu một cảnh trước khi tự động phơi sáng ổn định, mất chi tiết ở vùng tối hoặc vùng sáng. Các khung ảnh thu nhỏ tốt nhất đến từ những khoảnh khắc có hành động hoặc biểu cảm rõ ràng, ánh sáng tốt, và máy quay ổn định. Tua qua video bằng một trình phát hiển thị mốc thời gian chính xác cho phép bạn xác định những khoảnh khắc đó trước khi trích. Một khung trông đẹp khi tạm dừng trong một trình phát nói chung cũng sẽ đẹp khi xuất thành ảnh tĩnh.

Xuất: độ phân giải, định dạng và mỗi khung thứ N
Khi bạn trích một khung, ảnh xuất ra nên khớp độ phân giải gốc của video. Phóng to đưa vào nhiễu nội suy; thu nhỏ loại bỏ các điểm ảnh bạn có thể muốn. Một video 1080p tạo ảnh 1920x1080 điểm ảnh, và một video 4K tạo 3840x2160. Về định dạng, PNG giữ mọi điểm ảnh chính xác và là lựa chọn đúng khi bạn cần độ sắc nét tối đa để chỉnh sửa hoặc co giãn thêm. JPEG nhỏ hơn và ổn cho xem trước hoặc chia sẻ, nhưng nó đưa vào nhiễu nén quanh các cạnh sắc. Nếu bạn đang dựng một bảng tiếp xúc, một lưới các khung nhỏ đại diện bao trùm toàn bộ thời lượng, trích ở một tốc độ khung cố định thay vì lấy mọi khung là cách tiếp cận chuẩn: yêu cầu 1 khung mỗi giây từ nguồn 30 fps cho bạn một ảnh mỗi giây footage, và một tốc độ cao hơn như 5 hoặc 10 fps cho một tập dày hơn để xem xét kỹ. Tốc độ chính xác tùy vào việc bạn cần bao nhiêu chi tiết so với số ảnh bạn muốn xử lý.
Làm cục bộ với video-extract-frames
Công cụ video-extract-frames trên Sunasty giải mã video của bạn hoàn toàn bên trong trình duyệt bằng FFmpeg được biên dịch sang WebAssembly. Bạn thả một tệp vào, chọn một tốc độ khung từ 1 đến 30 khung mỗi giây, chọn PNG hoặc JPEG, và công cụ giải mã các khung ở tốc độ đó trong bộ nhớ trình duyệt của bạn và cung cấp kết quả dưới dạng các lượt tải riêng lẻ, giới hạn ở 300 khung mỗi lượt chạy. Tệp video của bạn không bao giờ rời khỏi thiết bị. Không có byte nào được gửi tới máy chủ tại bất kỳ thời điểm nào trong quá trình. Điều này quan trọng với footage chứa nội dung cá nhân hoặc nhạy cảm: một bản ghi gia đình, một cuộc phỏng vấn, hoặc footage thô trước khi chỉnh sửa. Trình duyệt nạp video vào một hệ thống tệp ảo trong RAM, chạy giải mã FFmpeg, và trả các ảnh lại cho bạn. Đánh đổi là việc giải mã được làm bằng phần mềm trên CPU của bạn thay vì bằng phần cứng chuyên dụng, nên một video độ phân giải cao và dài mất nhiều thời gian hơn một ứng dụng gốc. Để trích một nhúm khung hoặc tạo một bảng tiếp xúc từ một clip ngắn, tốc độ là thực tế.
Công cụ trong bài viết này
- Trích xuất khung hình videoTrích xuất khung hình tĩnh từ video dưới dạng hình ảnh PNG hoặc JPG ngay trong trình duyệt. Không tải lên.
- Cắt videoCắt video theo khoảng thời gian bắt đầu/kết thúc ngay trong trình duyệt. Sao chép luồng nhanh hoặc mã hóa lại chính xác. Không tải lên.
- Video sang GIFChuyển một đoạn video thành GIF động ngay trong trình duyệt. Không tải lên.
Câu hỏi thường gặp
Vì sao khung tôi trích trông mờ?
Nguyên nhân phổ biến nhất là rơi vào một P-frame hoặc B-frame trong một khoảnh khắc có chuyển động. Các khung này lưu khác biệt thay vì ảnh hoàn chỉnh, và nhòe chuyển động trong footage nguồn theo vào bản giải mã. Hãy thử trích I-frame gần nhất, vốn tương ứng với một điểm cắt cảnh hoặc một keyframe định kỳ, để có kết quả sắc nét hơn.
Tôi nên xuất khung dưới dạng PNG hay JPEG?
PNG nếu bạn định chỉnh sửa khung, phóng to nó, hoặc dùng trong một bối cảnh mà nhiễu nén sẽ thấy được. JPEG nếu bạn cần một tệp nhỏ hơn để chia sẻ hoặc xem trước nhanh và việc giảm chất lượng nhẹ là chấp nhận được. Với các ảnh thu nhỏ hiện ở một kích thước nhỏ cố định, JPEG ở một thiết lập chất lượng hợp lý thường là ổn.
Làm sao tôi tạo một bảng tiếp xúc từ một video?
Chọn một tốc độ khung đủ thấp để cho bạn một số lượng ảnh tĩnh dễ quản lý, thay vì một mốc thời gian đơn. Với một clip hai phút, 1 khung mỗi giây cho bạn khoảng 120 khung, đủ dày để chọn ra một lưới tốt; đầu ra dù sao cũng bị giới hạn ở 300 khung mỗi lượt chạy. Hiện chưa có tốc độ thưa hơn 1 fps, vì vậy để có một bảng thưa hơn, hãy trích ở 1 fps rồi chỉ giữ lại những khung bạn muốn cho lưới cuối cùng.