FFmpeg là một chương trình mã nguồn mở và miễn phí được sử dụng để xử lý Video, Âm thanh và các luồng đa phương tiện khác. Chương trình được thiết kế để xử lý việc xử lý các tệp video và âm thanh dựa trên dòng lệnh. Tuy nhiên, gần đây, nhiều báo cáo về “ Khoảng thời gian quá lớn ”Lỗi khi mã hóa hoặc giảm tỷ lệ video.
Nguyên nhân nào gây ra lỗi "Khoảng thời gian quá lớn" trong FFmpeg?
Sau khi nhận được nhiều báo cáo từ nhiều người dùng, chúng tôi quyết định điều tra vấn đề và đưa ra một loạt giải pháp để khắc phục hoàn toàn vấn đề này. Ngoài ra, chúng tôi đã xem xét các lý do mà lỗi này được kích hoạt và liệt kê chúng như sau:
- Thiếu tốc độ khung hình đầu vào: Trong hầu hết các trường hợp, sự cố là do không nhập được tốc độ khung hình đầu vào cho hình ảnh. Điều này dẫn đến chương trình giả định rằng tốc độ khung hình đầu vào là 25 khung hình / giây, điều này có thể gây ra sự cố nếu không phải như vậy.
- Cài đặt đồng bộ hóa không được triển khai: Với hầu hết người dùng, việc triển khai một số cài đặt đồng bộ hóa nhất định đã khắc phục được sự cố. Đôi khi, các khung có thể không được đồng bộ hóa đúng cách do đó các khung nhất định có thể bị rơi và lỗi này có thể phát sinh.
Bây giờ bạn đã hiểu cơ bản về bản chất của vấn đề, chúng ta sẽ chuyển sang các giải pháp. Đảm bảo thực hiện những điều này theo thứ tự cụ thể mà chúng được trình bày để tránh xung đột.
Giải pháp 1:Thêm khung đầu vào
Nếu tốc độ khung hình đầu vào của video chưa được thêm, điều này có thể dẫn đến một số khung hình bị giảm và lỗi được kích hoạt. Do đó, trong bước này, chúng tôi sẽ thêm các khung đầu vào cho điều đó:
- Quan sát tập hợp mà bạn đã sử dụng để chuyển đổi video, nó có thể là tương tự tới
ffmpeg -i %05d.png -r 24 -c:v libx264 -crf 5 out.mkv
- Bây giờ chỉ cần thêm tốc độ khung hình đối với tập hợp được sử dụng như sau
ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv
- Kiểm tra xem sự cố vẫn tiếp diễn.
Giải pháp 2:Sử dụng Cờ đồng bộ
Việc thêm cờ Đồng bộ hóa có thể giúp đồng bộ hóa đầu ra và video đầu vào theo tốc độ khung hình ban đầu của video. Do đó, nếu các lệnh đồng bộ hóa chưa được thêm vào, có thể các khung không được đồng bộ hóa đúng cách. Trong bước này, chúng tôi sẽ thêm các lệnh đồng bộ hóa
- Ở giai đoạn này, bạn có thể phải sử dụng chuyển đổi sau
ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv
- Tuy nhiên, thay vì điều này, hãy sử dụng chuyển đổi sau
ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv -async 1 -vsync 1
- Lưu ý rằng chúng tôi vừa thêm “ -async 1 -vsync1 ”Vào chuyển đổi và điều này cần được thêm vào cuối chuyển đổi mà bạn đang sử dụng.
Lưu ý: Chuyển đổi ban đầu của bạn có thể khác với chuyển đổi được sử dụng làm ví dụ. Tuy nhiên, những thay đổi được thêm vào tập hợp không được khác nhau.