FFmpeg एक मुफ्त और ओपन सोर्स प्रोग्राम है जिसका उपयोग वीडियो, ऑडियो और अन्य मल्टीमीडिया स्ट्रीम को संभालने के लिए किया जाता है। प्रोग्राम को वीडियो और ऑडियो फ़ाइलों के प्रसंस्करण के कमांड लाइन आधारित संचालन को संभालने के लिए डिज़ाइन किया गया है। हालांकि, हाल ही में, वीडियो एन्कोडिंग या डाउनस्केलिंग के दौरान "Past Duration Too Large" त्रुटि की बहुत सारी रिपोर्टें आ रही हैं।
FFmpeg में "Past Duration Too Large" त्रुटि के कारण क्या हैं?
कई उपयोगकर्ताओं से कई रिपोर्ट प्राप्त करने के बाद, हमने इस मुद्दे की जांच करने का फैसला किया और इसे पूरी तरह से सुधारने के लिए समाधानों का एक सेट तैयार किया। साथ ही, हमने उन कारणों को देखा जिनके कारण यह त्रुटि ट्रिगर होती है और उन्हें नीचे सूचीबद्ध किया है:
- इनपुट फ्रेमरेट गुम: अधिकांश मामलों में, मुद्दा छवियों के लिए इनपुट फ्रेमरेट दर्ज नहीं होने के कारण होता है। इसके परिणामस्वरूप प्रोग्राम मान लेता है कि इनपुट फ्रेमरेट 25 fps है जो समस्या पैदा कर सकता है यदि ऐसा नहीं है।
- सिंक सेटिंग्स लागू नहीं: अधिकांश उपयोगकर्ताओं के साथ, कुछ सिंक सेटिंग्स लागू करने से मुद्दा ठीक हो गया। कभी-कभी, फ्रेम ठीक से सिंक नहीं हो पाते हैं जिसके कारण कुछ फ्रेम ड्रॉप हो सकते हैं और यह त्रुटि ट्रिगर हो सकती है।
अब जब आपको मुद्दे की प्रकृति की बुनियादी समझ हो गई है, तो हम समाधानों की ओर बढ़ेंगे। संघर्ष से बचने के लिए इन्हें उस विशिष्ट क्रम में लागू करना सुनिश्चित करें जिसमें वे प्रस्तुत किए गए हैं।
समाधान 1: इनपुट फ्रेम जोड़ना
यदि वीडियो का इनपुट फ्रेमरेट नहीं जोड़ा गया है तो इसके परिणामस्वरूप कुछ फ्रेम ड्रॉप हो सकते हैं और त्रुटि ट्रिगर हो सकती है। इसलिए, इस चरण में, हम उसके लिए इनपुट फ्रेम जोड़ेंगे:
- आपके द्वारा वीडियो कन्वर्ट करने के लिए उपयोग की गई कमांड देखें, यह निम्न के समान हो सकती है
ffmpeg -i %05d.png -r 24 -c:v libx264 -crf 5 out.mkv
- अब बस फ्रेमरेट को उपयोग की गई कमांड में निम्नानुसार जोड़ें
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
- हालांकि, इसके बजाय, निम्न कमांड उपयोग करें
ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv -async 1 -vsync 1
- ध्यान दें कि हमने सिर्फ कमांड के अंत में "-async 1 -vsync 1" जोड़ा है और इसे आपके द्वारा उपयोग की जा रही कमांड के अंत में जोड़ा जाना चाहिए।
नोट: आपकी प्रारंभिक कमांड उदाहरण के रूप में उपयोग की गई कमांड से भिन्न हो सकती है। हालांकि, कमांड में जोड़े गए परिवर्तन भिन्न नहीं होने चाहिए।