Làm thế nào để khắc phục lỗi 'Quá thời gian quá lớn' trong FFmpeg?
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 đã được đưa ra về một “Khoảng thời gian trong quá khứ 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:
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, nó 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ể được bật giống theo sau
ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
- Bây giờ đơn giản thêm vào các tỷ lệ 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ộ
- Ở giai đoạn này, có lẽ bạn phải sử dụng sự triệu tập sau
ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
- Tuy nhiên, thay vì điều này, sử dụng sự triệu tập 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.
Ghi chú:Chuyển đổi ban đầu của bạn có thể khác với chuyển đổi được 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.