FFmpeg হল একটি ফ্রি টু ইউজ ও ওপেন সোর্স প্রোগ্রাম যা ভিডিও, অডিও, এবং অন্যান্য মাল্টিমিডিয়া স্ট্রিম হ্যান্ডল করার জন্য ব্যবহৃত হয়। প্রোগ্রামটি কমান্ড লাইন ভিত্তিক ভিডিও ও অডিও ফাইল প্রসেসিং হ্যান্ডল করার জন্য ডিজাইন করা হয়েছে। যাইহোক, সম্প্রতি অনেক রিপোর্ট আসছে "Past Duration Too Large" এরর এনকোডিং বা ভিডিও ডাউনস্কেলিং করার সময়।

FFmpeg-এ "Past Duration Too Large" এরর কেন হয়?
বহু ব্যবহারকারীর রিপোর্ট পাওয়ার পর আমরা ইস্যুটি তদন্ত করেছি এবং এটি সম্পূর্ণ রেক্টিফাই করার সমাধান সেট ডেভাইস করেছি। এছাড়াও, এই এরর ট্রিগার হওয়ার কারণগুলো তদন্ত করে নিচে লিস্ট করেছি:
- ইনপুট ফ্রেমরেট অনুপস্থিত: অধিকাংশ কেসে, ইমেজের জন্য ইনপুট ফ্রেমরেট এন্টার না করা সমস্যার কারণ। এর ফলে প্রোগ্রাম অনুমান করে ইনপুট ফ্রেমরেট ২৫ fps যা সমস্যা সৃষ্টি করে যদি সেটি 사실이 না হয়।
- সিঙ্ক সেটিংস ইমপ্লিমেন্টেড নই: অধিকাংশ ইউজারের জন্য কিছু সিঙ্ক সেটিংস ইমপ্লিমেন্ট করলে ইস্যু ফিক্স হয়েছে। কখনো কখনো ফ্রেমগুলো সঠিকভাবে সিঙ্ক না হওয়ায় কিছু ফ্রেম ড্রপ হতে পারে এবং এই এরর ট্রিগার হতে পারে।
এখন আপনার ইস্যুর প্রকৃতি সম্পর্কে বেসিক ধারণা আছে, আমরা সমাধানগুলোর দিকে যাব। প্রেজেন্ট করা নির্দিষ্ট ক্রমে এইগুলো ইমপ্লিমেন্ট করুন দ্বন্দ্ব এড়াতে।
সমাধান ১: ইনপুট ফ্রেম যোগ করা
ভিডিওর ইনপুট ফ্রেমরেট যোগ না করা থাকলে কিছু ফ্রেম ড্রপ হতে পারে এবং এরর ট্রিগার হতে পারে। তাই এই ধাপে, আমরা ইনপুট ফ্রেম যোগ করব তার জন্য:
- আপনি যে কনভোকেশনটি ভিডিও কনভার্ট করার জন্য ব্যবহার করেছেন সেটি পর্যবেক্ষণ করুন, সেটি নিচের মতো সিমিলার হতে পারে
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
- চেক করুন ইস্যু বিতর্কে আছে কিনা।
সমাধান ২: সিঙ্ক ফ্ল্যাগস ব্যবহার করা
সিঙ্ক ফ্ল্যাগস যোগ করলে আউটপুট এবং ইনপুট ভিডিও ভিডিওর_initial ফ্রেমরেট অনুযায়ী সিঙ্ক করতে সাহায্য করে। তাই, যদি সিঙ্ক কমান্ডগুলো যোগ না করা থাকে, সম্ভব ফ্রেমগুলো সঠিকভাবে সিঙ্ক হচ্ছে না। এই ধাপে, আমরা সিঙ্ক কমান্ডগুলো যোগ করব
- এই স্টেজে, আপনি সম্ভবত নিচের কনভোকেশন ব্যবহার করছেন
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 -vsync1" কনভোকেশনের শেষে যোগ করেছি এবং এটি আপনার ব্যবহৃত কনভোকেশনের শেষে যোগ করতে হবে।
নোট: আপনার প্রাথমিক কনভোকেশন উদাহরণ হিসেবে ব্যবহৃত কনভোকেশন থেকে ভিন্ন হতে পারে। যাইহোক, কনভোকেশনে যোগ করা পরিবর্তনগুলো ভিন্ন হওয়া উচিত নয়।