จะแก้ไขข้อผิดพลาด 'Past Duration Too Large' ใน FFmpeg ได้อย่างไร



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

FFmpeg เป็นโปรแกรมโอเพ่นซอร์สที่ใช้งานได้ฟรีซึ่งใช้สำหรับจัดการสตรีมวิดีโอเสียงและมัลติมีเดียอื่น ๆ โปรแกรมได้รับการออกแบบมาเพื่อจัดการกับบรรทัดคำสั่งตามการจัดการการประมวลผลไฟล์วิดีโอและไฟล์เสียง อย่างไรก็ตามเมื่อไม่นานมานี้มีรายงานมากมายเกี่ยวกับ“ ระยะเวลาที่ผ่านมาใหญ่เกินไป ” เกิดข้อผิดพลาดขณะเข้ารหัสหรือลดขนาดวิดีโอ



โลโก้ FFmpeg



อะไรทำให้เกิดข้อผิดพลาด“ Past Duration Too Large” ใน FFmpeg

หลังจากได้รับรายงานจำนวนมากจากผู้ใช้หลายคนเราจึงตัดสินใจที่จะตรวจสอบปัญหาและคิดหาวิธีแก้ปัญหาเพื่อแก้ไขอย่างสมบูรณ์ นอกจากนี้เรายังตรวจสอบสาเหตุที่ทำให้เกิดข้อผิดพลาดนี้และระบุไว้ดังนี้:



  • การป้อน Framerate ขาดหายไป: ในกรณีส่วนใหญ่ปัญหาเกิดจากการไม่ป้อนอัตราเฟรมสำหรับรูปภาพ สิ่งนี้ส่งผลให้โปรแกรมสมมติว่าเฟรมเรตอินพุตคือ 25 fps ซึ่งอาจทำให้เกิดปัญหาได้หากไม่เป็นเช่นนั้น
  • ไม่ได้ติดตั้งการตั้งค่าการซิงค์: สำหรับผู้ใช้ส่วนใหญ่การใช้การตั้งค่าการซิงค์บางอย่างช่วยแก้ปัญหาได้ บางครั้งเฟรมอาจไม่ได้รับการซิงค์อย่างถูกต้องเนื่องจากเฟรมบางเฟรมอาจตกหล่นและข้อผิดพลาดนี้อาจเกิดขึ้น

เมื่อคุณมีความเข้าใจพื้นฐานเกี่ยวกับลักษณะของปัญหาแล้วเราจะดำเนินการแก้ไขต่อไป อย่าลืมนำสิ่งเหล่านี้ไปใช้ตามลำดับเฉพาะที่นำเสนอเพื่อหลีกเลี่ยงความขัดแย้ง

โซลูชันที่ 1: การเพิ่มเฟรมอินพุต

หากไม่ได้เพิ่มเฟรมเรตอินพุตของวิดีโออาจส่งผลให้บางเฟรมหลุดและเกิดข้อผิดพลาดขึ้น ดังนั้นในขั้นตอนนี้เราจะเพิ่มเฟรมอินพุตสำหรับสิ่งนั้น:

  1. สังเกตการประชุมที่คุณใช้ในการแปลงวิดีโออาจเปิดอยู่ คล้ายกัน ดังต่อไปนี้
    ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
  2. ตอนนี้เรียบง่าย เพิ่ม ที่ อัตราเฟรม ไปยังการประชุมที่ใช้ดังต่อไปนี้
    ffmpeg - เฟรม 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  3. ตรวจสอบเพื่อดูว่าปัญหายังคงมีอยู่หรือไม่

โซลูชันที่ 2: การใช้ Sync Flags

การเพิ่มแฟล็กการซิงค์จะช่วยซิงค์เอาต์พุตและวิดีโออินพุตตามเฟรมเรตเริ่มต้นของวิดีโอ ดังนั้นหากยังไม่ได้เพิ่มคำสั่งการซิงค์อาจเป็นไปได้ว่าเฟรมต่างๆไม่ได้รับการซิงค์อย่างถูกต้อง ในขั้นตอนนี้เราจะเพิ่มคำสั่งการซิงค์



  1. ในขั้นตอนนี้คุณอาจจะต้องเป็น โดยใช้ การประชุมต่อไปนี้
    ffmpeg - เฟรม 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
  2. อย่างไรก็ตามแทนที่จะเป็นเช่นนี้ ใช้ การประชุมต่อไปนี้
    ffmpeg - เฟรม 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. โปรดทราบว่าเราเพิ่งเพิ่ม ' -async 1 -vsync1 ” ในการประชุมและจำเป็นต้องเพิ่มเมื่อสิ้นสุดการประชุมที่คุณใช้อยู่
    บันทึก: การประชุมครั้งแรกของคุณอาจแตกต่างจากที่ใช้เป็นตัวอย่าง อย่างไรก็ตามการเปลี่ยนแปลงที่เพิ่มเข้ามาในการประชุมไม่ควรแตกต่างกัน
อ่าน 2 นาที