Câu trả lời toàn diện cho câu hỏi này rất khó :-p Tóm lại, nó đi xuống cách nén được thực hiện ở mỗi định dạng.
Trong hoạt ảnh GIF, mỗi khung hình là một hình ảnh GIF riêng biệt. Tất cả các hình ảnh GIF sau đó được lưu trữ trong một tệp GIF lớn, với các hướng dẫn để phát lại các khung hình với độ trễ nhất định giữa các khung hình. Để tối ưu hóa các khung hình, bạn có thể chạy GIF thông qua một chương trình có thể xóa thông tin trùng lặp từ khung này sang khung khác (bộ lọc "Tối ưu hóa hoạt ảnh" của GIMP là cách tốt để làm điều đó: GIMP – Simple Animations).
Mặt khác, các định dạng video như MP4 có cách tiếp cận khác. Họ giả định rằng các khung hình sẽ giống nhau và chỉ lưu trữ sự khác biệt giữa hai khung hình. Ngoài ra, lượng dữ liệu cho mỗi khung hình được giới hạn ở tốc độ bit video được chỉ định khi bạn bắt đầu nén. Nén mất dữ liệu được thực hiện để đưa tệp video xuống tốc độ bit mong muốn. Để tối ưu hóa hơn nữa tệp video, hầu hết các trình chuyển mã video bao gồm các tùy chọn cho "mã hóa hai lần". Điều này chạy qua video hai lần: lần đầu tiên nó tập hợp thông tin về những phần nào của tệp phức tạp hơn và sau đó là lần thứ hai nó nén mọi phần không phức tạp của video mạnh mẽ hơn.
Có nhiều tối ưu hóa khác là một phần của quá trình mã hóa video chỉ đơn giản là thiếu định dạng tệp GIF. Ngoài ra, điều đáng chú ý là một hoạt ảnh GIF sẽ bị giới hạn ở bảng màu 256, điều này có thể dẫn đến phối màu ảnh. MP4 sử dụng một cái gì đó tương tự như một JPEG nén cho các khung hình video (mặc dù với tối ưu hóa bổ sung nhắm mục tiêu cụ thể vào video ... định dạng MJPEG cũ về cơ bản chỉ là đống ảnh JPEG, cũng giống như hình ảnh động GIF là ngăn xếp của hình ảnh GIF).
Nếu bạn có thể cung cấp thêm thông tin về trường hợp sử dụng cụ thể của bạn, chúng tôi có thể giúp bạn tìm ra giải pháp tốt hơn.
đã u cố gắng lựa chọn pix_fmt khác? –
@RyanErickson Theo [tài liệu] (http://ffmpeg.org/ffmpeg.html), tôi không tìm thấy bất kỳ tùy chọn hữu ích nào. Obv Tôi nhìn thấy một cái gì đó như bạn tin tưởng. Bạn sẽ giới thiệu tùy chọn nào? Tất cả những gì tôi thấy là sử dụng '-window_size' nhưng điều đó hoàn toàn không hoàn thành công việc – drN
Tất cả: Vui lòng đọc bảng điểm trò chuyện của @thirdender, (s) anh ấy cung cấp một [link] rất hữu ích (http: //www.alecjacobson .com/weblog /? p = 2102) trong đó. – drN