وقتی فاصلهٔ فریم‌ها برابر نیست، زمان ویدئو را چطور حساب کنیم؟

فرض کنید کسی برای زمان‌سنجی یک ویدئو، شمارهٔ فریم را بر ۲۵ تقسیم کرده است. پیش از پذیرفتن جواب، باید معلوم شود فاصلهٔ نمایش همهٔ فریم‌ها واقعاً یکسان بوده یا نه. عددی که کنار «نرخ فریم» دیده می‌شود، به‌تنهایی برای این نتیجه کافی نیست.

راه عملی این است: زمان نمایش دو فریم موردنظر را از همان فایل بخوانید و از هم کم کنید. این محاسبه فاصلهٔ آن‌ها را روی خط زمانی پخش فایل نشان می‌دهد. زمان ثبت تصویر در دوربین یا مدت واقعی یک رویداد، به‌ویژه اگر برش و تدوین وجود داشته باشد، هنوز به شواهد دیگری نیاز دارد.

پنج قاب آبی ویدئو با فاصله‌های نامساوی روی یک مسیر کهربایی
تصویر مفهومی ساخته‌شده با هوش مصنوعی؛ فاصلهٔ قاب‌ها اندازه‌گیری یک ویدئوی واقعی نیست.

یک آزمایش کوچک با پنج تصویر آبی

برای بررسی این مسئله، یک ویدئوی ساختگی با پنج فریم کاملاً آبی ساختیم و فاصلهٔ زمانی فریم‌ها را عمداً تغییر دادیم. فایل با کدک FFV1 در ظرف Matroska ذخیره شد و در ۲ نوامبر ۲۰۲۶ با نسخهٔ 9.0.2 ابزار ffprobe روی رایانه بررسی شد. این آزمایش از تصویر یک حادثه یا فیلم دوربین استفاده نمی‌کند.

شماره با شروع از صفرزمان نمایش، به ثانیهفاصله از فریم قبلی
۰۰٫۰۰۰—
۱۰٫۰۴۰۰٫۰۴۰ ثانیه
۲۰٫۰۸۰۰٫۰۴۰ ثانیه
۳۰٫۲۴۰۰٫۱۶۰ ثانیه
۴۰٫۲۸۰۰٫۰۴۰ ثانیه

زمان نمایش آخرین فریم منهای اولین فریم، ۰٫۲۸۰ ثانیه است. اما اگر بدون بررسی، نرخ ثابت ۲۵ فریم در ثانیه را فرض کنیم، محاسبهٔ چهار تقسیم بر ۲۵ به ۰٫۱۶۰ ثانیه می‌رسد. در این جواب، فاصلهٔ بلندتر میان فریم‌های ۲ و ۳ نادیده گرفته شده است.

دو نکته را از هم جدا نگه دارید: بین پنج فریم، چهار فاصله وجود دارد؛ پس «پنج تقسیم بر ۲۵» جایگزین تفریق زمان اولین و آخرین فریم نیست. از طرف دیگر، ۰٫۲۸۰ ثانیه را هم نباید مدت کامل فایل نامید. آخرین تصویر ممکن است پس از زمان شروع نمایشش همچنان روی صفحه بماند.

خواندن زمان‌ها از یک کپی فایل

فایل دریافتی را نگه دارید و روی یک کپی کار کنید. ثبت منشأ فایل و هش SHA-256 کمک می‌کند بعداً روشن باشد محاسبه به کدام نسخه مربوط بوده است. اگر ffprobe را همراه FFmpeg نصب کرده‌اید، مسیر کپی را به‌جای COPY.mkv در فرمان زیر بگذارید:

ffprobe -v error -select_streams v:0 -show_frames -show_entries frame=pts_time,best_effort_timestamp_time -of json "COPY.mkv"

این فرمان اطلاعات فریم‌های اولین جریان ویدئویی را با قالب JSON می‌خواند و ویدئوی تازه‌ای نمی‌سازد. شرح گزینه‌ها در راهنمای ffprobe آمده است. خروجی یک فیلم طولانی می‌تواند بسیار حجیم باشد.

فیلد pts_time زمان نمایش فریم را بر حسب ثانیه نشان می‌دهد. فیلد دوم را بی‌توضیح جایگزین آن نکنید: در تعریف فریم در FFmpeg، مقدار best_effort_timestamp برآوردی با روش‌های ابتکاری معرفی شده است. در آزمایش پنج‌فریمی ما، دو فیلد برای همهٔ فریم‌ها برابر بودند؛ این نتیجه دربارهٔ هر فایل دیگری تضمین نمی‌دهد.

از تصویر انتخاب‌شده تا تفریق زمان

ابتدا مشخص کنید آغاز و پایان اندازه‌گیری را چه چیزی در تصویر تعریف می‌کند؛ مثلاً اولین فریمی که شیء از یک خط عبور کرده است. سپس همان دو تصویر را با زمان‌های خروجی تطبیق دهید. شماره‌گذاری صفرمبنا یا یک‌مبنا را هم بنویسید تا خواننده فریم دیگری را انتخاب نکند.

فاصلهٔ زمان فریم‌های میان این دو نقطه را نیز ببینید. فاصله‌های نامساوی یعنی ترتیب فریم‌ها در این فایل با گام زمانی یکسان نمایش داده نمی‌شود. حالا زمان فریم آغاز را از زمان فریم پایان کم کنید و همراه فرمان و خروجی نگه دارید.

اگر زمانی وجود ندارد، آن را صفر فرض نکنید. اگر فقط برآورد در دسترس است، نتیجه باید همین محدودیت را بگوید. زمان‌های تکراری، عقب‌رونده یا غیرمنتظره را پیش از اعلام عدد دقیق بررسی کنید؛ مرتب‌کردن صرف اعداد ممکن است ارتباط آن‌ها با تصاویر را از بین ببرد. اختلاف‌های کوچک هم ممکن است از دقت ثبت زمان بیایند. هیچ‌یک از این وضعیت‌ها به‌تنهایی اثبات دست‌کاری فیلم نیست.

تبدیل فایل، خط زمانی تازه‌ای می‌سازد

ممکن است نرم‌افزار تدوین خروجی با نرخ فریم ثابت پیشنهاد کند. طبق مستندات نرخ فریم FFmpeg، چنین پردازشی می‌تواند فریم‌ها را تکرار یا حذف کند. زمان‌سنجی آن خروجی، دربارهٔ نسخهٔ تبدیل‌شده است؛ بنابراین بررسی نسخهٔ دریافتی را پیش از تبدیل انجام دهید.

اگر دو بارگذاری از یک صحنه را مقایسه می‌کنید، ابتدا با تطبیق فریم‌های کلیدی تصاویر متناظر را پیدا کنید. یک تصویر مشترک لزوماً در هر دو فایل شماره یا زمان یکسانی ندارد.

برای آزمایش این مقاله، گزارش دقیق چنین است: «در فایل ساختگی، فریم‌های صفر و چهار در ثانیه‌های ۰٫۰۰۰ و ۰٫۲۸۰ نمایش داده می‌شوند؛ اختلاف این دو زمان ۰٫۲۸۰ ثانیه است. دربارهٔ زمان ثبت دوربین نتیجه‌ای نگرفته‌ایم.» برای فایل خودتان نیز هش، جریان ویدئو، دو تصویر انتخاب‌شده، نام فیلد زمان و محدودیت نتیجه را در گزارش بررسی بنویسید. این جزئیات امکان کنترل محاسبه را به خواننده می‌دهد.

انتشار: 2026-11-03 · تحریریه اوسینت جت

پیشنهاد اصلاح · English version