Chúng tôi tạo ra rất nhiều GIF hình thu nhỏ có chất lượng không quan trọng bằng thời gian cần thiết để tạo chúng. Tạo GIF chất lượng cao với ffmpeg được bảo vệ rất tốt, nhưng tôi không gặp nhiều may mắn khi tìm ra cách tạo ra những ảnh chất lượng thấp càng nhanh càng tốt.
Việc tính toán bảng màu chiếm phần lớn thời gian thực hiện bằng lệnh sau (được lấy từ câu trả lời của bộ lọc đa chuỗi ở đây: Cách tạo hiệu quả gif bảng màu tốt nhất từ một phần video trực tiếp từ web ):
ffmpeg -y -threads 8 -r 24 -f image2 -start_number 1 -i "frames.%04d.jpg" -filter_complex "fps=24,scale=150:-1:flags=fast_bilinear,split=2 [a][b]; [a] palettegen [pal] fifo [b]; [b] [pal] paletteuse" output.gif
Thời gian thực hiện của lệnh đó với 1000 khung là khoảng 72 giây. Khoảng 67 giây đó là bảng màu vượt qua, và sau đó nó xuất hiện thông qua thế hệ GIF thực tế trong khoảng 5 giây. Tôi muốn giảm toàn bộ thời gian thực hiện xuống càng nhiều càng tốt, và sẵn sàng hy sinh rất nhiều chất lượng hình ảnh cho tốc độ.
ffmpeg -y -r 24 -f image2 -start_number 1 -i "frames.%04d.jpg" -filter:v "scale=150:-1:flags=fast_bilinear" output.gif
Hai vấn đề với điều này: 1) Nó chỉ lưu được 13 giây (59 giây thay vì 72) và 2 ) Tôi không chắc chắn 100% lệnh này sẽ loại bỏ hoàn toàn tính toán bảng màu (chỉ có tính toán bảng màu mà tôi đã chỉ định trước đó không được bao gồm).
ffmpeg -i <input> <scale> <output.gif>
.
[b]
nhãn hiệu Dù bằng cách nào, sử dụng bảng màu chậm hơn khoảng 200⨉ đánh giá từ một bài kiểm tra nhanh. Không sử dụng nó hoàn toàn không phải là một lựa chọn cho bạn?