วิธีการแก้ไขข้อผิดพลาด 'ช่วงเวลาที่ผ่านมามีขนาดใหญ่เกินไป' ใน FFmpeg

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

โลโก้ FFmpeg

ทำให้เกิดข้อผิดพลาด "ช่วงเวลาที่ผ่านมาใหญ่เกินไป" ใน FFmpeg อะไร

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

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

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

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

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

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

โซลูชันที่ 2: การใช้การตั้งค่าสถานะการซิงค์

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

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

    หมายเหตุ: การประชุมเริ่มต้นของคุณอาจแตกต่างจากที่ใช้เป็นตัวอย่าง อย่างไรก็ตามการเปลี่ยนแปลงที่เพิ่มในการประชุมจะไม่แตกต่างกัน

บทความที่น่าสนใจ