จะแก้ไขข้อผิดพลาด "ระยะเวลาที่ผ่านมามากเกินไป" ใน FFmpeg ได้อย่างไร
FFmpeg เป็นโปรแกรมโอเพ่นซอร์สที่ใช้งานได้ฟรีซึ่งใช้สำหรับจัดการสตรีมวิดีโอเสียงและมัลติมีเดียอื่น ๆ โปรแกรมได้รับการออกแบบมาเพื่อจัดการกับบรรทัดคำสั่งตามการจัดการการประมวลผลไฟล์วิดีโอและไฟล์เสียง อย่างไรก็ตามเมื่อไม่นานมานี้มีรายงานมากมายเกี่ยวกับ“ระยะเวลาที่ผ่านมามีขนาดใหญ่เกินไป” เกิดข้อผิดพลาดขณะเข้ารหัสหรือลดขนาดวิดีโอ
อะไรทำให้เกิดข้อผิดพลาด“ Past Duration Too Large” ใน FFmpeg
หลังจากได้รับรายงานจำนวนมากจากผู้ใช้หลายคนเราจึงตัดสินใจที่จะตรวจสอบปัญหาและคิดหาวิธีแก้ปัญหาเพื่อแก้ไขอย่างสมบูรณ์ นอกจากนี้เรายังตรวจสอบสาเหตุที่ทำให้เกิดข้อผิดพลาดนี้และระบุไว้ดังต่อไปนี้:
เมื่อคุณมีความเข้าใจพื้นฐานเกี่ยวกับลักษณะของปัญหาแล้วเราจะดำเนินการแก้ไขต่อไป ตรวจสอบให้แน่ใจว่าได้ใช้สิ่งเหล่านี้ตามลำดับเฉพาะที่นำเสนอเพื่อหลีกเลี่ยงความขัดแย้ง
โซลูชันที่ 1: การเพิ่มเฟรมอินพุต
หากไม่ได้เพิ่มเฟรมเรตอินพุตของวิดีโออาจส่งผลให้บางเฟรมหลุดและเกิดข้อผิดพลาดขึ้น ดังนั้นในขั้นตอนนี้เราจะเพิ่มเฟรมอินพุตสำหรับสิ่งนั้น:
- สังเกตการประชุมที่คุณใช้ในการแปลงวิดีโอมันอาจจะเปิดอยู่ คล้ายกัน ดังต่อไปนี้
ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 out.mkv
- ตอนนี้เรียบง่าย เพิ่ม ที่ อัตราเฟรม ไปยังการประชุมที่ใช้ดังต่อไปนี้
ffmpeg - เฟรม 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
- ตรวจสอบเพื่อดูว่าปัญหายังคงมีอยู่หรือไม่
โซลูชันที่ 2: การใช้ Sync Flags
การเพิ่มแฟล็กการซิงค์จะช่วยซิงค์เอาต์พุตและวิดีโออินพุตตามเฟรมเรตเริ่มต้นของวิดีโอ ดังนั้นหากไม่ได้เพิ่มคำสั่งการซิงค์อาจเป็นไปได้ว่าเฟรมต่างๆไม่ได้รับการซิงค์อย่างถูกต้อง ในขั้นตอนนี้เราจะเพิ่มคำสั่งการซิงค์
- ในขั้นตอนนี้คุณอาจจะต้องเป็น โดยใช้ การประชุมดังต่อไปนี้
ffmpeg - เฟรม 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv
- อย่างไรก็ตามแทนที่จะเป็นเช่นนี้ ใช้ การประชุมดังต่อไปนี้
ffmpeg - เฟรม 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1
- โปรดทราบว่าเราเพิ่งเพิ่ม "-async 1 -vsync1” ในการประชุมและจะต้องเพิ่มสิ่งนี้ในตอนท้ายของการประชุมที่คุณใช้อยู่
บันทึก:การประชุมครั้งแรกของคุณอาจแตกต่างจากที่ใช้เป็นตัวอย่าง อย่างไรก็ตามการเปลี่ยนแปลงที่เพิ่มเข้ามาในการประชุมไม่ควรแตกต่างกัน