FFPROBE(1) دستورات کاربر (پارچ لینوکس) FFPROBE(1)

ffprobe - ابزار بررسی و تحلیل مشخصات فایل‌های چندرسانه‌ای

ffprobe [گزینه‌ها] input_url

ابزار ffprobe اطلاعات مربوط به جریان‌های چندرسانه‌ای را جمع‌آوری کرده و آن‌ها را به صورت قابل خواندن برای انسان و ماشین چاپ می‌کند.

برای نمونه می‌توان از آن برای بررسی قالب کانتینر استفاده‌شده در یک جریان چندرسانه‌ای و قالب و نوع هر یک از جریان‌های رسانه‌ای موجود در آن استفاده کرد.

اگر یک نشانی (url) در ورودی مشخص شود، ffprobe تلاش می‌کند آن نشانی را باز کرده و محتوای آن را بررسی نماید. در صورتی که نشانی قابل باز شدن نباشد یا به عنوان یک فایل چندرسانه‌ای شناسایی نشود، یک کد خروج مثبت (خطا) برگردانده می‌شود.

اگر هیچ مقصدی با گزینه -o به عنوان خروجی مشخص نشده باشد، ffprobe در خروجی استاندارد (stdout) می‌نویسد.

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

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

خروجی ffprobe طوری طراحی شده است که به سادگی توسط یک فیلتر متنی قابل تجزیه باشد و از یک یا چند بخش با ساختاری تشکیل شده که توسط نویسنده (writer) انتخابی تعیین می‌گردد؛ نویسنده با گزینه output_format مشخص می‌شود.

بخش‌ها ممکن است شامل بخش‌های تودرتوی دیگری باشند و با یک نام (که ممکن است میان بخش‌های دیگر مشترک باشد) و یک نام یکتا شناسایی می‌شوند. خروجی گزینه -sections را ببینید.

تگ‌های متادیتای ذخیره‌شده در کانتینر یا در جریان‌ها شناسایی شده و در بخش مربوطه شامل "FORMAT"، "STREAM"، "STREAM_GROUP_STREAM" یا "PROGRAM_STREAM" چاپ می‌شوند.

تمامی گزینه‌های عددی، اگر به گونه دیگری مشخص نشده باشند، رشته‌ای نشان‌دهنده یک عدد را به عنوان ورودی می‌پذیرند که می‌تواند پس از آن یکی از پیشوندهای یکای SI بیاید، به عنوان مثال: 'K'، 'M'، یا 'G'.

اگر 'i' به پیشوند یکای SI اضافه شود، کل پیشوند به عنوان یک پیشوند یکا برای مضارب باینری تفسیر می‌شود که بر پایه توان‌های ۱۰۲۴ به جای توان‌های ۱۰۰۰ هستند. افزودن 'B' به پیشوند یکای SI مقدار را در ۸ ضرب می‌کند. این امر امکان استفاده از مواردی چون: 'KB'، 'MiB'، 'G' و 'B' را به عنوان پسوند عددی فراهم می‌سازد.

گزینه‌هایی که آرگومان دریافت نمی‌کنند گزینه‌های بولی (boolean) هستند و مقدار متناظر را روی true تنظیم می‌کنند. می‌توان با افزودن پیشوند "no" به ابتدای نام گزینه، آن‌ها را روی false تنظیم کرد. برای مثال استفاده از "-nofoo" گزینه بولی با نام "foo" را روی false قرار می‌دهد.

گزینه‌هایی که آرگومان می‌پذیرند از یک نحو ویژه پشتیبانی می‌کنند که در آن آرگومان ارائه‌شده در خط فرمان به عنوان مسیر فایلی تفسیر می‌شود که مقدار واقعی آرگومان از آن بارگذاری می‌گردد. برای استفاده از این قابلیت، یک اسلش '/' بلافاصله قبل از نام گزینه (پس از خط تیره ابتدایی) اضافه کنید. برای نمونه:

ffmpeg -i INPUT -/filter:v filter.script OUTPUT

توضیحات فیلترگراف را از فایلی به نام filter.script بارگذاری خواهد کرد.

برخی گزینه‌ها برای هر جریان به طور جداگانه اعمال می‌شوند، مانند نرخ بیت (bitrate) یا کدک. مشخص‌کننده‌های استریم برای تعیین دقیق جریان یا جریان‌هایی که یک گزینه مشخص به آن‌ها تعلق دارد به کار می‌روند.

مشخص‌کننده استریم رشته‌ای است که معمولاً به نام گزینه چسبانده شده و با دونقطه از آن جدا می‌شود. برای مثال "-codec:a:1 ac3" حاوی مشخص‌کننده جریان "a:1" است که با دومین جریان صوتی مطابقت دارد؛ بنابراین کدک ac3 را برای دومین جریان صوتی انتخاب می‌کند.

یک مشخص‌کننده استریم می‌تواند با چندین جریان مطابقت داشته باشد تا آن گزینه برای همه آن‌ها اعمال شود. برای مثال مشخص‌کننده استریم در "-b:a 128k" با تمام جریان‌های صوتی مطابقت دارد.

یک مشخص‌کننده استریم خالی با تمام جریان‌ها مطابقت دارد. برای نمونه، "-codec copy"; یا "-codec: copy" تمام جریان‌ها را بدون بازکدگذاری کپی می‌کند.

حالت‌های ممکن مشخص‌کننده‌های استریم عبارتند از:

با جریانی که دارای این شناسه (ایندکس) است مطابقت می‌یابد. به عنوان مثال "-threads:1 4" تعداد نخ‌های پردازشی دومین جریان را روی ۴ تنظیم می‌کند. اگر stream_index به عنوان یک مشخص‌کننده جریان اضافی به کار رود (به پایین نگاه کنید)، جریان شماره stream_index را از میان جریان‌های منطبق انتخاب می‌کند. شماره‌گذاری جریان‌ها بر اساس ترتیب جریان‌های شناسایی‌شده توسط libavformat انجام می‌شود، مگر این که یک مشخص‌کننده گروه جریان یا شناسه برنامه نیز تعیین شده باشد که در این صورت بر اساس ترتیب جریان‌ها در آن گروه یا برنامه خواهد بود.
پارامتر stream_type یکی از موارد زیر است: 'v' یا 'V' برای ویدیو، 'a' برای صدا، 's' برای زیرنویس، 'd' برای داده و 't' برای پیوست‌ها. مشخصه 'v' با تمام جریان‌های ویدیویی مطابقت دارد، در حالی که 'V' تنها با جریان‌های ویدیویی که تصویر پیوست‌شده، تصویر بندانگشتی ویدیویی یا تصویر روی جلد نیستند مطابقت می‌یابد. اگر additional_stream_specifier استفاده شود، با جریان‌هایی مطابقت می‌یابد که هم دارای این نوع باشند و هم با additional_stream_specifier تطابق داشته باشند. در غیر این صورت، با تمامی جریان‌های نوع مشخص‌شده مطابقت دارد.
با جریان‌هایی مطابقت می‌یابد که در گروه دارای مشخص‌کننده group_specifier قرار دارند. اگر additional_stream_specifier به کار رود، با جریان‌هایی مطابقت می‌یابد که هم بخشی از گروه بوده و هم با additional_stream_specifier مطابقت داشته باشند. group_specifier می‌تواند یکی از موارد زیر باشد:
تطابق با جریانی که دارای این ایندکس گروهی است.
#group_id or i:group_id
تطابق با جریانی که دارای این شناسه گروه است.
با جریان‌هایی مطابقت می‌یابد که در برنامه با شناسه program_id قرار دارند. اگر additional_stream_specifier به کار رود، با جریان‌هایی که هم بخشی از برنامه بوده و هم با additional_stream_specifier تطابق دارند مطابقت خواهد یافت.
#stream_id or i:stream_id
تطابق با جریان بر اساس شناسه جریان (مانند PID در کانتینر MPEG-TS).
با جریان‌هایی مطابقت می‌یابد که تگ متادیتای key با مقدار مشخص‌شده را دارا باشند. اگر value مشخص نشده باشد، با جریان‌هایی که شامل تگ مذکور با هر مقداری باشند تطابق پیدا می‌کند. نویسه دونقطه ':' در key یا value باید با بک‌اسلش اسکیپ شود.
با جریان‌هایی که دارای ویژگی‌های انتشار (disposition) داده‌شده باشند مطابقت می‌یابد. پارامتر dispositions فهرستی از یک یا چند ویژگی انتشار (به شکلی که توسط گزینه -dispositions چاپ می‌شود) است که با '+' به هم متصل شده‌اند.
با جریان‌های دارای پیکربندی قابل استفاده مطابقت می‌یابد؛ کدک باید تعریف شده باشد و اطلاعات اساسی مانند ابعاد ویدیو یا نرخ نمونه‌برداری صدا باید حضور داشته باشند.

توجه داشته باشید که در ffmpeg، تطابق بر اساس متادیتا تنها برای فایل‌های ورودی به درستی کار خواهد کرد.

این گزینه‌ها میان تمامی ابزارهای ff* مشترک هستند.

نمایش مجوز برنامه (License).
نمایش راهنما. یک پارامتر اختیاری می‌تواند برای چاپ راهنما درباره یک مورد مشخص تعیین شود. اگر هیچ آرگومانی مشخص نشود، تنها گزینه‌های پایه (غیر پیشرفته) ابزار نمایش داده می‌شوند.

مقادیر ممکن برای arg عبارتند از:

چاپ گزینه‌های پیشرفته ابزار علاوه بر گزینه‌های پایه.
چاپ فهرست کامل گزینه‌ها، شامل گزینه‌های مشترک و اختصاصی برای انکودرها، دیکودرها، دی‌ماکسرها، ماکسرها، فیلترها و غیره.
چاپ اطلاعات دقیق درباره دیکودر با نام decoder_name. از گزینه -decoders برای دریافت فهرست تمامی دیکودرها استفاده کنید.
چاپ اطلاعات تفصیلی درباره انکودر با نام encoder_name. از گزینه -encoders برای دریافت فهرست تمامی انکودرها استفاده کنید.
چاپ اطلاعات تفصیلی درباره دی‌ماکسر با نام demuxer_name. از گزینه -formats برای دریافت فهرست تمامی دی‌ماکسرها و ماکسرها استفاده کنید.
چاپ اطلاعات دقیق درباره ماکسر با نام muxer_name. از گزینه -formats برای دریافت فهرست تمامی ماکسرها و دی‌ماکسرها استفاده نمایید.
چاپ اطلاعات کامل فیلتر با نام filter_name. از گزینه -filters برای دریافت فهرست تمامی فیلترها استفاده کنید.
چاپ اطلاعات دقیق درباره فیلتر بیت‌استریم با نام bitstream_filter_name. از گزینه -bsfs برای دریافت فهرست تمام فیلترهای بیت‌استریم استفاده کنید.
چاپ اطلاعات تفصیلی درباره پروتکل با نام protocol_name. از گزینه -protocols برای دریافت فهرست تمام پروتکل‌ها استفاده نمایید.
نمایش نسخه برنامه.
نمایش پیکربندی بیلد برنامه، یک گزینه در هر خط.
نمایش قالب‌های موجود (شامل دستگاه‌ها).
نمایش دی‌ماکسرهای در دسترس.
نمایش ماکسرهای در دسترس.
نمایش دستگاه‌های در دسترس.
نمایش تمامی کدک‌های شناخته‌شده برای کتابخانه libavcodec.

توجه داشته باشید که واژه 'codec' در سراسر این مستندات به عنوان یک میان‌بر برای آنچه که به شکل دقیق‌تر قالب بیت‌استریم رسانه‌ای نامیده می‌شود، به کار می‌رود.

نمایش دیکودرهای در دسترس.
نمایش تمامی انکودرهای در دسترس.
نمایش فیلترهای بیت‌استریم موجود.
نمایش پروتکل‌های موجود.
نمایش فیلترهای موجود در libavfilter.
نمایش قالب‌های پیکسلی موجود.
نمایش قالب‌های نمونه (sample formats) موجود.
نمایش نام کانال‌ها و چیدمان‌های استاندارد کانال‌های صوتی.
نمایش ویژگی‌های انتشار استریم (dispositions).
نمایش نام رنگ‌های شناخته‌شده.
نمایش منابع شناسایی‌شده خودکار دستگاه ورودی. برخی دستگاه‌ها ممکن است نام‌های منبع وابسته به سیستم را ارائه دهند که به صورت خودکار شناسایی نمی‌شوند. نمی‌توان فرض کرد که فهرست برگردانده‌شده همیشه کامل است.
ffmpeg -sources pulse,server=192.168.0.4
نمایش گیرنده‌های (sinks) شناسایی‌شده خودکار دستگاه خروجی. برخی دستگاه‌ها ممکن است نام‌های گیرنده وابسته به سیستم را ارائه دهند که به صورت خودکار شناسایی نمی‌شوند. نمی‌توان فرض کرد که فهرست برگردانده‌شده همیشه کامل است.
ffmpeg -sinks pulse,server=192.168.0.4
تنظیم سطح گزارش‌دهی پیام‌ها (log level) و پرچم‌های مورد استفاده کتابخانه.

پیشوند اختیاری flags می‌تواند شامل مقادیر زیر باشد:

مشخص می‌کند که خروجی‌های تکراری نباید در خط اول فشرده شوند و خط "Last message repeated n times" حذف خواهد شد.
مشخص می‌کند که خروجی لاگ باید پیشوند "[level]" را به ابتدای هر خط پیام اضافه کند. این گزینه می‌تواند به عنوان جایگزینی برای رنگ‌آمیزی لاگ به کار رود، برای نمونه هنگام هدایت لاگ به یک فایل.
مشخص می‌کند که خطوط لاگ باید با اطلاعات زمان پیشوندگذاری شوند.
مشخص می‌کند که خطوط لاگ باید با اطلاعات تاریخ و زمان پیشوندگذاری شوند.

پرچم‌ها همچنین می‌توانند به تنهایی با افزودن پیشوند '+'/'-' برای تنظیم یا لغو یک پرچم بدون تأثیر بر سایر flags یا تغییر loglevel استفاده شوند. هنگام تنظیم هم‌زمان پرچم‌ها و loglevel، وجود یک جداکننده '+' میان آخرین مقدار flags و قبل از loglevel الزامی است.

پارامتر loglevel رشته‌ای یا عددی حاوی یکی از مقادیر زیر است:

عدم نمایش هیچ‌گونه خروجی؛ عملکرد کاملاً بی‌صدا.
فقط خطاهای مهلکی را نشان می‌دهد که می‌توانند منجر به فروپاشی (crash) فرایند شوند، مانند شکست در assertion. در حال حاضر برای هیچ موردی استفاده نمی‌شود.
تنها خطاهای مهلک را نشان می‌دهد. این‌ها خطاهایی هستند که پس از آن‌ها فرایند قطعاً نمی‌تواند ادامه یابد.
نمایش تمامی خطاها، از جمله خطاهایی که قابل بازیابی هستند.
نمایش تمامی هشدارها و خطاها. هر پیامی مرتبط با رویدادهای احتمالاً نادرست یا غیرمنتظره نشان داده خواهد شد.
نمایش پیام‌های اطلاع‌رسانی در طول پردازش. این علاوه بر هشدارها و خطاها است. این مقدار پیش‌فرض برنامه است.
همانند "info"، اما با جزئیات بیشتر.
نمایش همه‌چیز، از جمله اطلاعات اشکال‌زدایی (دیباگ).
نمایش تمامی جزئیات ردگیری با بالاترین سطح دقت.

به عنوان مثال برای فعال کردن خروجی تکراری لاگ، افزودن پیشوند "level" و تنظیم loglevel روی "verbose":

ffmpeg -loglevel repeat+level+verbose -i input output

مثال دیگر برای فعال‌سازی خروجی تکراری بدون تأثیر بر وضعیت جاری پرچم پیشوند "level" یا loglevel:

ffmpeg [...] -loglevel +repeat

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

تخلیه کامل خط فرمان و خروجی لاگ در فایلی با نام "program-YYYYMMDD-HHMMSS.log" در دایرکتوری جاری. این فایل می‌تواند برای گزارش اشکالات و باگ‌ها بسیار مفید باشد. این گزینه همچنین به طور ضمنی "-loglevel debug"; را فعال می‌کند.

تنظیم متغیر محیطی FFREPORT به هر مقداری دارای اثری مشابه است. اگر مقدار آن دنباله‌ای از جفت‌های کلید=مقدار جداشده با ':' باشد، این گزینه‌ها بر گزارش اثر خواهند گذاشت؛ اگر مقادیر گزینه‌ها شامل نویسه‌های ویژه یا نویسه جداکننده گزینه‌ها یعنی ':' باشند باید اسکیپ شوند (بخش ``Quoting and escaping'' را در راهنمای ffmpeg-utils ببینید).

گزینه‌های زیر شناخته‌شده هستند:

تنظیم نام فایل مورد استفاده برای گزارش؛ %p به نام برنامه، %t به برچسب زمان و "%%" به نویسه ساده "%" بسط داده می‌شوند.
تنظیم سطح جزئیات گزارش با استفاده از یک مقدار عددی (به "-loglevel" نگاه کنید).

برای نمونه، به منظور ارسال یک گزارش به فایلی به نام ffreport.log با استفاده از سطح لاگ 32 (نام مستعار سطح لاگ "info"):

FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output

خطاها در تجزیه متغیر محیطی مهلک نیستند و در گزارش ظاهر نخواهند شد.

جلوگیری از چاپ بنر برنامه.

تمام ابزارهای FFmpeg معمولاً یک اعلان کپی‌رایت، گزینه‌های ساخت و نسخه کتابخانه‌ها را نمایش می‌دهند. این گزینه می‌تواند برای جلوگیری از چاپ این اطلاعات استفاده شود.

امکان تنظیم و پاک‌سازی پرچم‌های پردازنده (CPU) را فراهم می‌سازد. این گزینه برای آزمایش در نظر گرفته شده است. از آن استفاده نکنید مگر این که دقیقاً بدانید چه کاری انجام می‌دهید.
ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...

پرچم‌های ممکن برای این گزینه عبارتند از:

بازنویسی مقدار تشخیص تعداد پردازنده‌ها. این گزینه برای اهداف آزمایشی است. از آن استفاده نکنید مگر این که بدانید چه کاری انجام می‌دهید.
ffmpeg -cpucount 2
تنظیم حداکثر محدودیت اندازه برای تخصیص یک بلوک در حافظه هیپ (heap) توسط خانواده توابع malloc مربوط به ffmpeg. هنگام استفاده از این گزینه احتیاط فوق‌العاده به خرج دهید. اگر عواقب کامل انجام این کار را درک نمی‌کنید از آن استفاده ننمایید. مقدار پیش‌فرض INT_MAX است.

این گزینه‌ها مستقیماً توسط کتابخانه‌های libavformat، libavdevice و libavcodec ارائه می‌شوند. برای مشاهده فهرست AVOptions موجود، از گزینه -help استفاده کنید. آن‌ها به دو دسته تقسیم می‌شوند:

این گزینه‌ها می‌توانند برای هر کانتینر، کدک یا دستگاهی تنظیم شوند. گزینه‌های عمومی ذیل گزینه‌های AVFormatContext برای کانتینرها/دستگاه‌ها و ذیل گزینه‌های AVCodecContext برای کدک‌ها فهرست شده‌اند.
این گزینه‌ها مختص کانتینر، دستگاه یا کدک ارائه‌شده هستند. گزینه‌های اختصاصی ذیل کانتینرها/دستگاه‌ها/کدک‌های متناظر با خود فهرست شده‌اند.

برای نمونه، جهت نوشتن یک سربرگ ID3v2.3 به جای ID3v2.4 پیش‌فرض در یک فایل MP3، از گزینه اختصاصی id3v2_version در ماکسر MP3 استفاده کنید:

ffmpeg -i input.flac -id3v2_version 3 out.mp3

تمامی AVOptions کدک برای هر جریان به طور جداگانه هستند، و بنابراین یک مشخص‌کننده استریم باید به آن‌ها متصل شود:

ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4

در مثال بالا، یک جریان صوتی چندکاناله دوبار برای خروجی مپ شده است. نمونه اول با کدک ac3 و نرخ بیت 640k کدگذاری می‌شود. نمونه دوم به ۲ کانال داون‌میکس شده و با کدک aac کدگذاری می‌گردد. نرخ بیت 128k برای آن با استفاده از ایندکس مطلق جریان خروجی مشخص شده است.

توجه: نحو -nooption نمی‌تواند برای AVOptions بولی استفاده شود، از -option 0/-option 1 استفاده نمایید.

توجه: روش قدیمی و مستندنشده مشخص کردن AVOptions به ازای هر جریان با افزودن پیشوند v/a/s به ابتدای نام گزینه منسوخ شده است و به زودی حذف خواهد شد.

اجبار به استفاده از یک قالب خاص.
نمایش یکای مقادیر نشان‌داده‌شده.
استفاده از پیشوندهای یکای SI برای مقادیر نمایش‌داده‌شده. مگر در حالتی که از گزینه "-byte_binary_prefix" استفاده شود، تمامی پیشوندها دهدهی (decimal) هستند.
اجبار به استفاده از پیشوندهای دودویی (باینری) برای مقادیر بر حسب بایت.
استفاده از قالب شصت‌گانی HH:MM:SS.MICROSECONDS برای مقادیر زمانی.
زیباسازی و خواناتر کردن قالب مقادیر نمایش‌داده‌شده؛ این معادل گزینه‌های "-unit -prefix -byte_binary_prefix -sexagesimal" است.
تنظیم قالب چاپ خروجی.

پارامتر writer_name نام نویسنده خروجی را مشخص می‌کند، و writer_options گزینه‌هایی را که باید به نویسنده ارسال شوند تعیین می‌نماید.

برای نمونه، جهت چاپ خروجی در قالب JSON مشخص کنید:

-output_format json

برای جزئیات بیشتر درباره قالب‌های چاپ خروجی موجود، بخش نویسنده‌ها (Writers) را در ادامه ببینید.

چاپ ساختار بخش‌ها و اطلاعات مربوط به بخش‌ها و سپس خروج از برنامه. خروجی برای تجزیه توسط ماشین طراحی نشده است.
انتخاب تنها جریان‌های مشخص‌شده توسط stream_specifier. این گزینه تنها بر گزینه‌های مرتبط با جریان‌ها (مانند "show_streams"، "show_packets" و غیره) اثر می‌گذارد.

برای مثال جهت نمایش فقط جریان‌های صوتی، می‌توانید از دستور زیر استفاده کنید:

ffprobe -show_streams -select_streams a INPUT

برای نمایش تنها بسته‌های ویدیویی متعلق به جریان ویدیویی با شناسه ۱:

ffprobe -show_packets -select_streams v:1 INPUT
نمایش داده‌های بار اصلی (payload)، به صورت تخلیه (dump) هگزادسیمال و اسکی (قالب‌های دیگر را می‌توان با استفاده از -data_dump_format انتخاب کرد). در ترکیب با گزینه -show_packets، داده‌های بسته‌ها را تخلیه می‌کند. در ترکیب با گزینه -show_streams، داده‌های جانبی و اضافی کدک (extradata) را تخلیه می‌نماید.

تخلیه داده‌ها به عنوان فیلد "data" چاپ می‌شود و ممکن است شامل خطوط جدید باشد.

نمایش هش داده‌های بار اصلی (payload)، برای بسته‌ها همراه با -show_packets و برای داده‌های جانبی کدک همراه با -show_streams.
انتخاب قالب مورد استفاده برای تخلیه داده‌های فعال‌شده با گزینه -show_data. پیش‌فرض "xxd" است که یک قالب هگز‌دامپ سازگار با برنامه مشهور xxd است. همچنین از "base64" نیز پشتیبانی می‌شود.
نمایش اطلاعات درباره خطای رخ‌داده هنگام تلاش برای بررسی ورودی.

اطلاعات خطا در بخشی با نام "ERROR" چاپ می‌شود.

نمایش اطلاعات درباره قالب کانتینر جریان چندرسانه‌ای ورودی.

تمامی اطلاعات قالب کانتینر در بخشی با نام "FORMAT" چاپ می‌شود.

تنظیم فهرست ورودی‌ها برای نمایش.

ورودی‌ها بر اساس نحو زیر مشخص می‌شوند: section_entries شامل فهرستی از ورودی‌های بخش است که با ":" از یکدیگر جدا شده‌اند. هر ورودی بخش از یک نام بخش (یا نام یکتا)، و به صورت اختیاری فهرستی از ورودی‌های محلی آن بخش که با "," جدا شده‌اند تشکیل شده است.

اگر نام بخش مشخص شود اما بدون "=" بیاید، تمام ورودی‌ها در خروجی همراه با تمام بخش‌های درون آن چاپ می‌شوند. در غیر این صورت تنها ورودی‌های مشخص‌شده در فهرست ورودی‌های بخش محلی چاپ خواهند شد. به ویژه اگر "=" مشخص شده باشد اما فهرست ورودی‌های محلی خالی باشد، هیچ ورودی برای آن بخش نشان داده نخواهد شد.

توجه داشته باشید که ترتیب مشخص کردن ورودی‌های بخش محلی در خروجی رعایت نمی‌شود و ترتیب نمایش معمول حفظ خواهد شد.

نحو صوری به صورت زیر است:

<LOCAL_SECTION_ENTRIES> ::= <SECTION_ENTRY_NAME>[,<LOCAL_SECTION_ENTRIES>]
<SECTION_ENTRY>         ::= <SECTION_NAME>[=[<LOCAL_SECTION_ENTRIES>]]
<SECTION_ENTRIES>       ::= <SECTION_ENTRY>[:<SECTION_ENTRIES>]

برای نمونه، جهت نمایش تنها ایندکس و نوع هر استریم، و همچنین زمان PTS، زمان مدت، و ایندکس جریان بسته‌ها، می‌توانید این آرگومان را مشخص کنید:

packet=pts_time,duration_time,stream_index : stream=index,codec_type

جهت نمایش تمام ورودی‌های بخش "format"، اما تنها نوع کدک در بخش "stream"، این آرگومان را مشخص کنید:

format : stream=codec_type

برای نمایش تمامی تگ‌ها در بخش‌های stream و format:

stream_tags : format_tags

جهت نمایش تنها تگ "title" (در صورت موجود بودن) در بخش‌های stream:

stream_tags=title
نمایش اطلاعات مربوط به هر یک از بسته‌های موجود در جریان چندرسانه‌ای ورودی.

اطلاعات مربوط به هر بسته به صورت مجزا در بخشی اختصاصی با نام "PACKET" چاپ می‌شود.

نمایش اطلاعات مربوط به هر یک از فریم‌ها و زیرنویس‌های موجود در جریان چندرسانه‌ای ورودی.

اطلاعات برای هر فریم مجزا در بخشی اختصاصی با نام "FRAME" یا "SUBTITLE" چاپ می‌شود.

نمایش اطلاعات گزارش‌گیری (log) دیکودر درباره هر فریم بر اساس مقدار تنظیم‌شده در loglevel (به "-loglevel" نگاه کنید). این گزینه نیازمند "-show_frames" است.

اطلاعات هر پیام لاگ در بخشی اختصاصی با نام "LOG" چاپ می‌شود.

نمایش اطلاعات مربوط به هر یک از جریان‌های رسانه‌ای موجود در جریان چندرسانه‌ای ورودی.

اطلاعات هر جریان رسانه‌ای در بخشی اختصاصی با نام "STREAM" چاپ می‌شود.

نمایش اطلاعات مربوط به برنامه‌ها و جریان‌های آن‌ها موجود در جریان چندرسانه‌ای ورودی.

اطلاعات هر جریان رسانه‌ای در بخشی اختصاصی با نام "PROGRAM_STREAM" چاپ می‌شود.

نمایش اطلاعات درباره گروه‌های جریان و جریان‌های آن‌ها موجود در جریان چندرسانه‌ای ورودی.

اطلاعات هر جریان رسانه‌ای در بخشی اختصاصی با نام "STREAM_GROUP_STREAM" چاپ می‌شود.

نمایش اطلاعات درباره فصل‌های (chapters) ذخیره‌شده در قالب.

هر فصل در بخشی اختصاصی با نام "CHAPTER" چاپ می‌شود.

شمارش تعداد فریم‌ها در هر جریان و گزارش آن در بخش متناظر با همان جریان.
شمارش تعداد بسته‌ها در هر جریان و گزارش آن در بخش متناظر با همان جریان.
خواندن تنها بازه‌های زمانی مشخص‌شده. آرگومان read_intervals باید دنباله‌ای از مشخصات بازه باشد که با "," از یکدیگر جدا شده‌اند. ffprobe به نقطه شروع بازه پرش (seek) می‌کند و خواندن را از آنجا ادامه خواهد داد.

هر بازه با دو بخش اختیاری مشخص می‌شود که با "%" از هم جدا می‌شوند.

بخش نخست نقطه شروع بازه را تعیین می‌کند. این بخش به صورت یک موقعیت مطلق یا در صورتی که با نویسه "+" شروع شود به عنوان آفست نسبی از موقعیت فعلی تفسیر می‌گردد. اگر بخش اول مشخص نشود، هنگام خواندن این بازه هیچ پرشی انجام نخواهد گرفت.

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

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

نحو صوری به صورت زیر است:

<INTERVAL>  ::= [<START>|+<START_OFFSET>][%[<END>|+<END_OFFSET>]]
<INTERVALS> ::= <INTERVAL>[,<INTERVALS>]

در ادامه چند مثال آمده است:

  • پرش به زمان ۱۰ ثانیه، خواندن بسته‌ها تا ۲۰ ثانیه پس از نقطه پرش پیداشده، سپس پرش به موقعیت "01:30" (۱ دقیقه و ۳۰ ثانیه) و خواندن بسته‌ها تا موقعیت "01:45":
    10%+20,01:30%01:45
  • خواندن تنها ۴۲ بسته پس از پرش به موقعیت "01:23":
    01:23%+#42
  • خواندن تنها ۲۰ ثانیه نخست از ابتدای فایل:
    %+20
  • خواندن از ابتدا تا موقعیت "02:30":
    %02:30
نمایش داده‌های خصوصی، یعنی داده‌هایی که وابسته به قالب عنصر خاص نمایش‌داده‌شده هستند. این گزینه به طور پیش‌فرض فعال است، اما ممکن است برای کاربردهای خاص نیاز به غیرفعال کردن آن داشته باشید، به عنوان مثال هنگام تولید خروجی XML سازگار با XSD.
نمایش اطلاعات مرتبط با نسخه برنامه.

اطلاعات نسخه در بخشی با نام "PROGRAM_VERSION" چاپ می‌شود.

نمایش اطلاعات مربوط به نسخه کتابخانه‌ها.

اطلاعات نسخه برای هر کتابخانه در بخشی با نام "LIBRARY_VERSION" چاپ می‌شود.

نمایش اطلاعات مرتبط با نسخه‌های برنامه و کتابخانه‌ها. این گزینه معادل تنظیم هم‌زمان هر دو گزینه -show_program_version و -show_library_versions است.
نمایش اطلاعات درباره تمام قالب‌های پیکسلی پشتیبانی‌شده توسط FFmpeg.

اطلاعات مربوط به هر قالب پیکسلی در بخشی با نام "PIXEL_FORMAT" چاپ می‌شود.

برخی نویسنده‌ها مانند JSON و XML از چاپ فیلدهایی با مقادیر نامعتبر یا غیرقابل اعمال صرف‌نظر می‌کنند، در حالی که نویسنده‌های دیگر همیشه آن‌ها را چاپ می‌کنند. این گزینه امکان کنترل این رفتار را فراهم می‌سازد. مقادیر معتبر عبارتند از: "always"/1، "never"/0 و "auto"/-1. مقدار پیش‌فرض auto است.
تحلیل فریم‌ها و/یا داده‌های جانبی آن‌ها تا بازه خواندن ارائه‌شده، که اطلاعات تکمیلی مفیدی را در سطح جریان فراهم می‌کند. باید حتماً همراه با گزینه -show_streams استفاده شود وگرنه هیچ اثری نخواهد داشت.

در حال حاضر فیلدهای اضافی ارائه‌شده توسط این گزینه در صورت فعال بودن، فیلدهای "closed_captions" و "film_grain" هستند.

برای نمونه، جهت تحلیل ۲۰ ثانیه نخست و پر کردن این فیلدها:

ffprobe -show_streams -analyze_frames -read_intervals "%+20" INPUT
اجبار به خروجی دقیق بیتی (bitexact)؛ برای تولید خروجی که به بیلد خاص وابسته نباشد مفید است.
خواندن input_url.
نوشتن خروجی در output_url. در صورت مشخص نشدن، خروجی به stdout ارسال می‌شود.
اجبار به یک پیاده‌سازی دیکودر خاص برای جریان شناسایی‌شده با media_specifier، که می‌تواند مقادیر "a" (صدا)، "v" (ویدیو)، "s" (زیرنویس) و "d" (داده) را داشته باشد.

یک نویسنده قالب خروجی اتخاذشده توسط ffprobe را تعریف می‌کند و برای چاپ تمامی بخش‌های خروجی به کار خواهد رفت.

یک نویسنده ممکن است یک یا چند آرگومان بپذیرد که گزینه‌های مورد نظر را مشخص می‌کنند. گزینه‌ها به صورت فهرستی از جفت‌های key=value جداشده با ":" تعیین می‌شوند.

تمام نویسنده‌ها از گزینه‌های زیر پشتیبانی می‌کنند:

تنظیم حالت اعتبارسنجی رشته.

مقادیر زیر پذیرفته می‌شوند:

نویسنده در صورت مشاهده هرگونه دنباله نامعتبر رشته (UTF-8) یا نقطه کد نامعتبر در ورودی، بلافاصله متوقف شده و با خطا خارج می‌شود. این مورد به ویژه برای اعتبارسنجی متادیتای ورودی سودمند است.
از هرگونه خطای اعتبارسنجی چشم‌پوشی می‌شود. این امر ممکن است منجر به خروجی احتمالاً ناقص یا خراب شود، به ویژه در نویسنده‌های json یا xml.
نویسنده دنباله‌ها یا نقاط کد نامعتبر UTF-8 را با رشته مشخص‌شده در string_validation_replacement جایگزین می‌کند.

مقدار پیش‌فرض replace است.

تنظیم رشته جایگزین در صورتی که string_validation روی replace قرار داده شده باشد.

اگر این گزینه مشخص نشده باشد، نویسنده رشته خالی را فرض می‌کند، یعنی دنباله‌های نامعتبر را از رشته‌های ورودی حذف خواهد کرد.

در ادامه شرحی از نویسنده‌های در دسترس آمده است:

قالب پیش‌فرض.

چاپ هر بخش به صورت:

[SECTION]
key1=val1
...
keyN=valN
[/SECTION]

تگ‌های متادیتا به عنوان یک خط در بخش مربوطه FORMAT، STREAM، STREAM_GROUP_STREAM یا PROGRAM_STREAM چاپ می‌شوند و دارای پیشوند "TAG:" هستند.

شرح گزینه‌های پذیرفته‌شده به شرح زیر است:

در صورت تنظیم روی ۱ مشخص می‌کند که کلید هیچ فیلدی چاپ نشود. مقدار پیش‌فرض ۰ است.
در صورت تنظیم روی ۱ مشخص می‌کند که سربرگ و پانویس بخش‌ها چاپ نشوند. مقدار پیش‌فرض ۰ است.

قالب‌های فشرده (Compact) و CSV.

نویسنده "csv" معادل "compact" است، اما از پیش‌فرض‌های متفاوتی پشتیبانی می‌کند.

هر بخش در یک خط چاپ می‌شود. اگر هیچ گزینه‌ای مشخص نشود، خروجی ساختاری به صورت زیر دارد:

section|key1=val1| ... |keyN=valN

تگ‌های متادیتا در بخش مربوطه "format" یا "stream" چاپ می‌شوند. کلید یک تگ متادیتا، در صورت چاپ، دارای پیشوند "tag:" خواهد بود.

شرح گزینه‌های پذیرفته‌شده در زیر آمده است:

تعیین نویسه‌ای که برای جداسازی فیلدها در خط خروجی به کار می‌رود. باید یک نویسه منفرد قابل چاپ باشد؛ به طور پیش‌فرض "|" است (برای نویسنده "csv" برابر با "," است).
در صورت تنظیم روی ۱ مشخص می‌کند که کلید هر فیلد چاپ نشود. مقدار پیش‌فرض آن ۰ است (برای نویسنده "csv" برابر با ۱ است).
تنظیم حالت اسکیپ مورد استفاده؛ پیش‌فرض "c" است (برای نویسنده "csv" برابر با "csv" است).

می‌تواند یکی از مقادیر زیر را داشته باشد:

انجام اسکیپ مشابه زبان C. رشته‌های حاوی خط جدید (\n)، بازگشت سطر (\r)، تب (\t)، تعویض صفحه (\f)، نویسه اسکیپ (\) یا نویسه جداکننده آیتم SEP با استفاده از سبک اسکیپ مشابه C تغییر می‌یابند، به طوری که خط جدید به دنباله \n، بازگشت سطر به \r، \ به \\ و جداکننده SEP به \SEP تبدیل می‌شود.
انجام اسکیپ به سبک CSV، همان‌طور که در RFC4180 شرح داده شده است. رشته‌های حاوی خط جدید (\n)، بازگشت سطر (\r)، گیومه دوتایی (") یا SEP درون گیومه‌های دوتایی قرار می‌گیرند.
هیچ‌گونه اسکیپی انجام نمی‌شود.
در صورتی که مقدار 1 باشد نام بخش را در ابتدای هر خط چاپ می‌کند؛ با مقدار 0 آن را غیرفعال می‌سازد. مقدار پیش‌فرض 1 است.

قالب مسطح (Flat).

خروجی با ساختار آزاد که در آن هر خط شامل یک جفت صریح key=value است، مانند "streams.stream.3.tags.foo=bar". خروجی برای پوسته (shell) اسکیپ شده است، بنابراین تا زمانی که نویسه جداکننده یک نویسه حرفی‌عددی یا زیرخط (underscore) باشد (به گزینه sep_char نگاه کنید)، می‌تواند مستقیماً در اسکریپت‌های sh تعبیه شود.

شرح گزینه‌های پذیرفته‌شده در زیر آمده است:

نویسه جداکننده‌ای که برای جداسازی فصل، نام بخش، شناسه‌ها و تگ‌های بالقوه در کلید فیلد چاپ‌شده به کار می‌رود.

مقدار پیش‌فرض . است.

مشخص می‌کند که آیا مشخصات نام بخش باید سلسله‌مراتبی باشد یا خیر. اگر روی ۱ تنظیم شود، و اگر بیش از یک بخش در فصل جاری وجود داشته باشد، نام بخش با نام فصل پیشوندگذاری خواهد شد. مقدار ۰ این رفتار را غیرفعال می‌کند.

مقدار پیش‌فرض ۱ است.

خروجی در قالب INI.

چاپ خروجی در قالبی بر پایه فایل‌های پیکربندی INI.

قراردادهای زیر در این قالب رعایت می‌شوند:

  • تمام کلیدها و مقادیر به صورت UTF-8 هستند
  • . جداکننده زیرگروه است
  • خط جدید، \t، \f، \b و نویسه‌های مرتبط اسکیپ می‌شوند
  • \ نویسه اسکیپ است
  • # نشانگر توضیح (comment) است
  • = جداکننده کلید/مقدار است
  • : استفاده نمی‌شود اما معمولاً به عنوان جداکننده کلید/مقدار شناخته می‌شود

این نویسنده گزینه‌ها را به صورت فهرستی از جفت‌های key=value جداشده با : می‌پذیرد.

شرح گزینه‌های پذیرفته‌شده به شرح زیر است:

مشخص می‌کند که آیا مشخصات نام بخش باید سلسله‌مراتبی باشد یا خیر. در صورت تنظیم روی ۱، و اگر بیش از یک بخش در فصل جاری وجود داشته باشد، نام بخش با نام فصل پیشوندگذاری خواهد شد. مقدار ۰ این رفتار را غیرفعال می‌کند.

مقدار پیش‌فرض ۱ است.

قالب مبتنی بر JSON.

هر بخش با استفاده از نشانه‌گذاری JSON چاپ می‌شود.

شرح گزینه‌های پذیرفته‌شده به قرار زیر است:

در صورت تنظیم روی ۱ خروجی فشرده را فعال می‌کند، به این معنا که هر بخش در یک خط واحد چاپ خواهد شد. مقدار پیش‌فرض ۰ است.

برای کسب اطلاعات بیشتر درباره JSON، نشانی http://www.json.org را ببینید.

قالب مبتنی بر XML.

خروجی XML در فایل توصیف اسکیمای XML با نام ffprobe.xsd که در دایرکتوری datadir برنامه FFmpeg نصب می‌شود، تشریح شده است.

نسخه به‌روزشده این اسکیما را می‌توان در نشانی http://www.ffmpeg.org/schema/ffprobe.xsd یافت که به جدیدترین اسکیمای ثبت‌شده در درخت کدهای منبع توسعه FFmpeg هدایت می‌کند.

توجه داشته باشید که خروجی صادرشده تنها زمانی منطبق با اسکیمای ffprobe.xsd خواهد بود که گزینه‌های سراسری خاص خروجی (unit، prefix، byte_binary_prefix، sexagesimal و غیره) مشخص نشده باشند.

شرح گزینه‌های پذیرفته‌شده در ادامه آمده است:

در صورت تنظیم روی ۱ مشخص می‌کند که آیا خروجی باید به صورت کاملاً واجد شرایط (fully qualified) ارائه شود یا خیر. مقدار پیش‌فرض ۰ است. این گزینه برای تولید فایل XML که بتوان آن را از طریق یک فایل XSD اعتبارسنجی کرد، مورد نیاز است.
در صورت تنظیم روی ۱ بررسی‌های بیشتری را برای اطمینان از سازگاری خروجی با XSD انجام می‌دهد. مقدار پیش‌فرض ۰ است. این گزینه به طور خودکار fully_qualified را روی ۱ تنظیم می‌کند.

برای کسب اطلاعات بیشتر درباره قالب XML، نشانی https://www.w3.org/XML را ببینید.

ابزار ffprobe از استخراج کد زمانی (Timecode) پشتیبانی می‌کند:

  • کد زمانی MPEG1/2 از GOP استخراج می‌شود و در جزئیات جریان ویدیو در دسترس است (-show_streams، گزینه timecode را ببینید).
  • کد زمانی MOV از ترک tmcd استخراج می‌شود، بنابراین در متادیتای جریان tmcd در دسترس است (-show_streams، گزینه TAG:timecode را ببینید).
  • کدهای زمانی DV، GXF و AVI در متادیتای قالب موجود هستند (-show_format، گزینه TAG:timecode را ببینید).

ffprobe-all(1), ffmpeg(1), ffplay(1), ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1), ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1), ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)

توسعه‌دهندگان FFmpeg.

برای جزئیات درباره سرایندگان و نویسندگان، تاریخچه گیت پروژه را ببینید (https://git.ffmpeg.org/ffmpeg)، به عنوان مثال با تایپ دستور git log در دایرکتوری سورس FFmpeg، یا مرور مخزن آنلاین در https://git.ffmpeg.org/ffmpeg.

نگه‌دارنده‌های هر یک از مؤلفه‌های خاص در فایل MAINTAINERS در درخت کدهای منبع فهرست شده‌اند.

2026-09-20 FFmpeg