Time Base হল সেই সময় একক, যেখানে একটি স্ট্রিম গণনা করে। সেকেন্ডে টাইমস্ট্যাম্প সংরক্ষণ করার বদলে, একটি মিডিয়া ফাইল তার নিজের ঘড়ির টিকের হিসেবে গোনে, আর Time Base বলে দেয় একটি টিক কতক্ষণ স্থায়ী হয়। এটি সেকেন্ডের ভগ্নাংশ হিসেবে লেখা হয়।
কোন কোন ফাইলে এটি থাকে এবং মানটি কোথা থেকে আসে
আপনি মিডিয়া ফাইলের ভেতরের প্রতিটি আলাদা স্ট্রিমে একটি Time Base পাবেন - ছবি, শব্দ এবং যেকোনো সাবটাইটেলে, যেমন MP4, MOV, MKV, WebM, AVI এবং MPEG ট্রান্সপোর্ট স্ট্রিমে, পাশাপাশি আলাদা অডিও ফাইলেও। প্রতিটি স্ট্রিমের নিজস্ব Time Base থাকে, তাই একটি ফাইলের অডিও ও ভিডিও সাধারণত ভিন্ন এককে গণনা করে।
এই মানটি ঠিক করে এনকোডার বা যে প্রোগ্রাম ফাইলটি তৈরি করেছে। কিছু কনটেইনার ফরম্যাট নির্দিষ্ট একটি Time Base বাধ্যতামূলক করে দেয়; যেখানে ফরম্যাট পছন্দের স্বাধীনতা রাখে, সেখানে লেখার প্রোগ্রামটি কনটেন্টের জন্য যেটি উপযুক্ত মনে করে সেটি বেছে নেয়, আর ফাইলটি সেই প্রোগ্রামের ডিফল্ট মানটিও বহন করতে পারে।
মানটি দেখতে কেমন
এটি সব সময় একটি ভগ্নাংশ, এবং নিচের সংখ্যাটি প্রতি সেকেন্ডে টিকের সংখ্যা বোঝায়:
1/1000- প্রতি টিকে এক মিলিসেকন্ড, Matroska এবং WebM ফাইলের সাধারণ পছন্দ1/90000- MPEG ট্রান্সপোর্ট স্ট্রিমে দীর্ঘদিনের প্রচলিত মান1/48000- অডিও স্ট্রিম প্রায়ই স্যাম্পলের হিসেবে গণনা করে, তাই Time Base স্যাম্পলিং রেটের সঙ্গে মেলে1/12800- MP4 ফাইলের ভিডিও স্ট্রিমে প্রায়ই দেখা যায় এমন একটি মান
একটি টাইমস্ট্যাম্পকে সেকেন্ডে রূপান্তর করতে হলে, সেটিকে ভগ্নাংশের সঙ্গে গুণ করুন। 1/12800 Time Base সহ একটি স্ট্রিমে 12800 উপস্থাপনা টাইমস্ট্যাম্প মানে ঠিক এক সেকেন্ড; 1/1000 Time Base হলে, 3500 টাইমস্ট্যাম্প মানে সাড়ে তিন সেকেন্ড। এই কারণেই রিপোর্টে কাঁচা টাইমস্ট্যাম্পগুলো বিশাল সংখ্যার মতো দেখায় - এগুলো সেকেন্ড নয়, টিকের গণনা। পুরনো অ্যাপগুলো কখনও কখনও এর পাশাপাশি আলাদা “Codec Time Base” নামের একটি সারিও দেখাতে পারে।
এটি কেন গুরুত্বপূর্ণ
একটি মিডিয়া ফাইলের সব কিছুই সম্পূর্ণ সংখ্যক টিকে ঘটে, তাই Time Base-ই নির্ধারণ করে একটি স্ট্রিম সর্বোচ্চ কত সূক্ষ্ম সময়ের ব্যবধান প্রকাশ করতে পারবে। যদি কোনো ফ্রেম বা স্যাম্পল দুই টিকের মাঝখানে পড়ে, তবে তার টাইমস্ট্যাম্পকে কাছাকাছি টিকে রাউন্ড করতে হয়, আর এই রাউন্ডিং ত্রুটিগুলো জমা হতে থাকে।
যেসব ভিডিও ফ্রেম রেট পূর্ণসংখ্যা নয়, সেগুলোর ক্ষেত্রে এটি বাস্তব সমস্যা হয়ে দাঁড়ায়। উদাহরণ হিসেবে ব্রডকাস্ট রেট 1001 সেকেন্ডে 30000 ফ্রেম হলে, প্রতিটি ফ্রেমের দৈর্ঘ্য সামান্য বেশি 33 মিলিসেকন্ড, কিন্তু কোনো পূর্ণ মিলিসেকন্ড নয়, তাই মিলিসেকন্ড Time Base কোনো ফ্রেমকেই ঠিকঠাক অবস্থানে বসাতে পারে না। প্রতি সেকেন্ডে বেশি টিকযুক্ত Time Base - অর্থাৎ ভগ্নাংশের নিচের সংখ্যাটি বড় - প্রতিটি ফ্রেম বাউন্ডারির ওপর নির্ভুলভাবে পড়তে পারে, এ কারণেই এনকোডাররা সাধারণ মিলিসেকন্ডের বদলে 1/12800 বা 1/90000 এর মতো মানকে অগ্রাধিকার দেয়।
এর ফলাফল একক কোনো ফ্রেমে চোখে পড়ার মতো কিছু নয়, বরং টাইমিং ত্রুটি হিসেবে দেখা যায়: শব্দ ধীরে ধীরে ছবির সাথে তাল হারিয়ে ফেলা, ফ্রেমের ব্যবধান অসম হওয়া, কাট বা সিক সামান্য হোঁচট খাওয়া। যেসব ফাইলের স্ট্রিম ভিন্ন Time Base-এ গণনা করে সেগুলো একত্র করতে গেলে সব টাইমস্ট্যাম্পকে পুনরায় স্কেল করতে হয়, আর এই রূপান্তরই সিঙ্ক্রোনাইজেশন ত্রুটির একটি ক্লাসিক উৎস। এই ফিল্ড নিজে থেকে ছবি বা শব্দের গুণমানের ওপর কোনো প্রভাব ফেলে না, এবং এতে কোনো ব্যক্তিগত তথ্যও থাকে না।