Làm cách nào để khắc phục lỗi 'Thời lượng 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ý các luồng Video, Audio và các luồng đa phương tiện khác. Chương trình đã được thiết kế để xử lý xử lý dựa trên dòng lệnh xử lý các tệp video và âm thanh. Tuy nhiên, khá gần đây, rất nhiều báo cáo đã xuất hiện về một lỗi Thời gian quá lớn quá lớn trong khi mã hóa hoặc thu nhỏ video.

Logo FFmpeg

Điều gì gây ra lỗi thời gian quá khứ 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à nghĩ ra một bộ giải pháp để khắc phục hoàn toàn. Ngoài ra, chúng tôi đã xem xét các lý do do lỗi này được kích hoạt và liệt kê chúng như sau:

  • Thiếu khung hình đầu vào: Trong hầu hết các trường hợp, sự cố được gây ra do tốc độ khung hình đầu vào không được nhập 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 có thể gây ra vấn đề nếu đó không phải là trường hợp.
  • 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 đã khắc phụ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ị hủy và lỗi này có thể được kích hoạt.

Bây giờ bạn đã có hiểu biết cơ bản về bản chất của vấn đề, chúng tôi sẽ chuyển sang các giải pháp. Đảm bảo thực hiện những thứ 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 vào, điều đó 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 đó:

  1. Quan sát sự kết hợp mà bạn đã sử dụng để chuyển đổi video, nó có thể tương tự như sau
     ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv 
  2. Bây giờ chỉ cần thêm tốc độ khung hình vào đối lưu được sử dụng như sau
     ffmpeg -framerator 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  3. Kiểm tra xem vấn đề vẫn còn.

Giải pháp 2: Sử dụng cờ đồng bộ

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

  1. Ở giai đoạn này, có lẽ bạn phải sử dụng phép đối lưu sau
     ffmpeg -framerator 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv 
  2. Tuy nhiên, thay vì điều này, hãy sử dụng phép đối lưu sau
     ffmpeg -framerator 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. Lưu ý rằng chúng tôi vừa mới thêm các ứng dụng -Sync1 -vsync1 vào các đối lưu và điều này cần phải được thêm vào cuối của đối lưu mà bạn đang sử dụng.

    Lưu ý: Đối lưu ban đầu của bạn có thể khác với ví dụ được sử dụng làm ví dụ. Các thay đổi được thêm vào đối lưu, tuy nhiên, không nên khác nhau.

Bài ViếT Thú Vị