Initializing, please wait a moment

Đầu Ra Trình Trích Xuất Khung GIF Trông Sai? Ba Nguyên Nhân Và Kiểm Tra 30 Giây

Khi trích xuất khung GIF cho ít khung hơn mong đợi, một trong ba nguyên nhân chịu trách nhiệm: GIF nguồn là tĩnh, GIF dùng chế độ bỏ do-not-dispose, hoặc trình duyệt hết bộ nhớ WASM giữa trích xuất.

Nguyên nhânTriệu chứngKiểm tra nhanh
1. GIF nguồn là tĩnhChỉ 1 khung được trích xuấtKéo GIF vào tab trình duyệt - không có hoạt hình = tĩnh
2. Chế độ do-not-disposeNhiều khung, tất cả giống hệtSo sánh khung 1, 50, 100 cạnh nhau để tìm khác biệt nhỏ
3. Bộ nhớ WASM trình duyệtÍt khung hơn mong đợi (ví dụ: 12 trên 200)Thử GIF kiểm tra <30 khung 480p - nếu hoàn toàn, bộ nhớ là giới hạn

Câu trả lời 30 giây. Bất ngờ phổ biến nhất là tệp .gif nguồn thực sự là tĩnh (tổng cộng một khung), nên trình trích xuất không thể tạo ra các khung không tồn tại. Kế tiếp là các khung đang ĐÚNG nhưng trông giống hệt vì GIF sử dụng chế độ bỏ "do-not-dispose" - mỗi khung chỉ chứa diff so với trước, nên phần lớn hình ảnh không thay đổi. Thứ ba là trình duyệt hết bộ nhớ giữa trích xuất trên một GIF dài và độ phân giải cao và lặng lẽ cắt ngắn đầu ra. Thả một GIF kiểm tra nhỏ được biết là động vào trình trích xuất khung GIF; nếu nó tạo ra số lượng khung mong đợi, GIF gốc là vấn đề, không phải trình trích xuất.

Nguyên nhân 1: GIF nguồn thực sự là tĩnh

Phần mở rộng .gif không đảm bảo hoạt hình. Nhiều tệp .gif trong tự nhiên lưu trữ một hình ảnh duy nhất - một meme đã mất hoạt hình khi ai đó lưu lại, một ảnh chụp màn hình mà một công cụ xuất dưới dạng GIF thay vì PNG, một biểu tượng chưa bao giờ có nhiều khung ngay từ đầu. Hầu hết các trình xem hình ảnh máy tính để bàn render GIF một khung và đa khung giống hệt nhau (bạn thấy hình ảnh dù sao), nên người đọc không nhận ra tệp là tĩnh cho đến khi họ thử trích xuất khung và chỉ một khung ra.

Cách khắc phục. Mở GIF nguồn trong một trình xem có tạo hoạt hình GIF - một trình xem hình ảnh máy tính để bàn được đặt thành "tự động phát" hoặc đơn giản là kéo tệp vào một tab trình duyệt mới. Nếu hình ảnh không di chuyển, GIF là tĩnh và đầu ra một khung của trình trích xuất là đúng. Không có gì để trích xuất ngoài một khung đó. Chuyển tệp sang PNG thay vì thế với trích xuất khung GIF - PNG vs JPG, định dạng nào; hướng dẫn bao gồm khi nào chọn PNG vs JPG cho đầu ra được chuyển đổi.

Nguyên nhân 2: các khung đúng nhưng trông giống hệt (chế độ bỏ do-not-dispose)

Đặc tả GIF định nghĩa bốn "phương pháp bỏ" quy định mỗi khung liên quan với trước đó như thế nào. Phương pháp bỏ 1 ("không bỏ") có nghĩa là mỗi khung chỉ vẽ các pixel đã thay đổi của nó lên trên bất cứ thứ gì mà khung trước đó để lại trên canvas. Vì vậy một GIF 100 khung nơi chỉ một phụ hiệu nhỏ thay đổi giữa các khung sẽ tạo ra 100 PNG trong gần giống hệt nhau khi được trích xuất - vì phần lớn bề mặt LÀ giống hệt nhau giữa các khung. Hoạt hình là có thật; nó sống trong các khác biệt nhỏ giữa các khung, không phải trong bất kỳ khung đơn nào.

Cách khắc phục. Mở các khung 1, 50 và 100 (hoặc đầu / giữa / cuối cho một GIF ngắn hơn) trong một trình xem cạnh nhau. Tìm diff nhỏ - phụ hiệu di chuyển, số thay đổi, con trỏ nhảy. Diff ĐÓ là hoạt hình.

Nếu bạn thực sự cần mỗi khung được trích xuất hiển thị hình ảnh được tạo hợp ĐẦY ĐỦ (không chỉ diff), tìm một tùy chọn trình trích xuất gọi là "soạn," "làm phẳng" hoặc "khung được giải quyết đầy đủ." Một số trình trích xuất cung cấp; đặc tả GIF không yêu cầu. Không có tùy chọn đó, GIF do-not-dispose luôn trích xuất dưới dạng khung chỉ-diff.

Nguyên nhân 3: trình duyệt hết bộ nhớ giữa trích xuất

Nguyên nhân 3: trình duyệt hết bộ nhớ giữa trích xuất trong Đầu Ra Trình Trích Xuất Khung GIF Trông Sai: thiếu khung cuối hoặc ảnh tĩnh cuối trong sau GIF lớn.

Cách khắc phục. Giảm tập hợp làm việc. Cắt GIF nguồn thành một clip ngắn hơn trước (ví dụ với một trình chỉnh sửa GIF hỗ trợ một thao tác "trim" hoặc "crop time range") hoặc thay đổi quy mô nguồn thành độ phân giải nhỏ hơn trước khi trích xuất. Một GIF 200 khung 1080p thường trích xuất sạch nước trong khi một GIF 200 khung 4K bị treo. Cùng mẫu giới hạn bộ nhớ xuất hiện trong Chuyển đổi FFmpeg online bị treo - ba cách khắc phục; mô tả nguyên nhân-2 ở đó giải thích sandbox WASM 2 GB chi tiết hơn.

Kiểm tra tỉnh táo 30 giây (nguyên nhân nào?)

So sánh kiểm tra 30 giây khi trích GIF bị sai theo bốn điểm trong sơ đồ này.
Nguồn tĩnh, disposal-mode, giới hạn bộ nhớ - bốn bước kiểm tra.

Kiểm tra tỉnh táo 30 giây (nguyên nhân nào?) trong Đầu Ra Trình Trích Xuất Khung GIF Trông Sai: đếm khung nguồn, chạy lại GIF nhỏ, rồi kiểm tra bộ nhớ tab trước khi đổ lỗi công cụ.

  1. Tìm một GIF kiểm tra nhỏ được biết là động - một GIF meme 10 khung hoạt động. Lưu cục bộ; bạn muốn một tệp bạn tin tưởng là thực sự động.
  2. Thả nó vào trình trích xuất với cài đặt mặc định. Giữ tab ở tiền cảnh.
  3. Xem đầu ra.
    • 10 khung ra, mỗi khung khác biệt rõ ràng → trình trích xuất hoạt động. Sự thất bại gốc của bạn là Nguyên nhân 1 (nguồn là tĩnh) nếu gốc cho bạn 1 khung, hoặc Nguyên nhân 3 (bộ nhớ) nếu gốc cho bạn một tập con nhỏ của số lượng mong đợi.
    • 10 khung ra, mỗi khung trông gần giống hệt → Nguyên nhân 2 (bỏ do-not-dispose) trên GIF kiểm tra cũng. Hoặc GIF kiểm tra cũng sử dụng chế độ đó, hoặc vấn đề gốc là Nguyên nhân 2 và diff nhỏ chỉ khó thấy.
    • 1 khung ra từ GIF kiểm tra → chính trình trích xuất có vấn đề sâu hơn (thử một trình duyệt khác hoặc cửa sổ riêng tư không có tiện ích mở rộng).

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

Tại sao GIF "lặp" của tôi chỉ cho một khung?

Vì tệp là một khung. Lặp là một thuộc tính của khối GIF, không phải của bao nhiêu khung nó chứa; một GIF một khung có thể mang một đầu lặp qua, và các trình xem tôn trọng đầu sẽ "lặp" cùng một khung vô hạn. Trình trích xuất thấy một khung trong tệp và xuất ra một khung.

Tại sao các khung được trích xuất hầu hết trong suốt?

Phương pháp bỏ 2 ("khôi phục về nền") và phương pháp 3 ("khôi phục về trước") nói với bộ giải mã GIF để xóa hoặc đảo ngược canvas trước khi vẽ mỗi khung. Một trình trích xuất phát lớp thô mỗi khung (không phải một hình ảnh được tạo hợp canvas đầy đủ) sẽ tạo ra các khung nơi phần lớn hình ảnh trong suốt, vì GIF chỉ mã hóa các pixel đã thay đổi. Tìm một tùy chọn "soạn" hoặc "làm phẳng" trong trình trích xuất, hoặc sử dụng một công cụ khác phát các khung được giải quyết đầy đủ.

Tôi có thể trích xuất khung từ tệp video (MP4, WebM, MOV) không?

Không từ một trình trích xuất khung GIF - những cái đó mong đợi đầu vào GIF. Cho video, sử dụng một công cụ giải mã video và xuất tĩnh mỗi khung; trên trang web này, FFmpeg Online có thể làm xuất mỗi khung với dòng lệnh đúng. Lựa chọn container/codec quan trọng; MP4 vs MOV vs MKV - container nào, khi nào bao gồm các kết hợp an toàn cho ffmpeg dựa trên trình duyệt.

Sự khác biệt giữa số lượng khung và FPS là gì?

Số lượng khung là "có bao nhiêu khung trong tệp." FPS là "chúng phát lại nhanh như thế nào mỗi giây." Một GIF 10 khung ở 1 FPS phát trong 10 giây; cùng GIF 10 khung ở 30 FPS phát trong ~0.33 giây. Trình trích xuất quan tâm đến số lượng khung (nó xuất một hình ảnh trên mỗi khung); FPS chỉ quan trọng khi bạn tập lại khung trở lại thành một video hoặc GIF. Hướng dẫn thuật ngữ Khung GIF vs tốc độ khung hình (FPS) - giải thích bao gồm sự khác biệt chi tiết.

Trình duyệt có giữ tất cả các khung được trích xuất trong bộ nhớ một lúc không?

Hầu hết các trình trích xuất trong trình duyệt có, có - chúng giải mã GIF, xây dựng mảng hình ảnh mỗi khung trong bộ nhớ, sau đó cung cấp tất cả để tải xuống (thường là một ZIP). Đó là lý do tại sao GIF dài và độ phân giải cao có thể gặp Nguyên nhân 3 (cạn kiệt bộ nhớ) giữa trích xuất. Một vài trình trích xuất truyền các khung đến đĩa một lúc; nếu bộ nhớ là nút chai của bạn, tìm mẫu đó trong tài liệu công cụ.

Liên quan