FFMPEG-FORMATS(1) راهنمای ابزارهای چندرسانه‌ای FFMPEG-FORMATS(1)

ffmpeg-formats - قالب‌های ورودی، خروجی، ماکسرها و دی‌ماکسرهای FFmpeg

این سند به توصیف قالب‌های پشتیبانی‌شده (ماکسرها و دی‌ماکسرها) ارائه شده توسط کتابخانه libavformat می‌پردازد. این کتابخانه پروتکل‌ها و قالب‌های ظرف (Container) چندرسانه‌ای گوناگون را پردازش می‌کند.

کتابخانه libavformat گزینه‌های سراسری عمومی را فراهم می‌کند که می‌توانند روی تمامی ماکسرها (Muxers) و دی‌ماکسرها (Demuxers) اعمال شوند. همچنین هر قالب می‌تواند گزینه‌های اختصاصی خود را داشته باشد.

گزینه‌ها می‌توانند با نحو -option value در ابزارهای FFmpeg یا با مقداردهی ساختار "AVFormatContext" تنظیم گردند.

گزینه‌های عمومی اصلی عبارتند از:

تنظیم پرچم‌های ورودی/خروجی سطح پایین؛ شامل مقادیری چون direct برای کاهش بافرینگ حافظه.
حداکثر مقدار بایت ورودی که برای شناسایی خودکار قالب و استریم‌ها کاوش (Probe) می‌شود. مقدار پیش‌فرض ۵٬۰۰۰٬۰۰۰ بایت (5MB) است.
تنظیم اندازه بسته خروجی به بایت.
تنظیم پرچم‌های اختصاصی فرمت. مقادیر ممکن:
تخلیه فوری بسته‌ها در خروجی پس از نوشتن هر بسته.
نادیده گرفتن فهرست اندیس فریم‌ها در فایل ورودی.
تولید خودکار برچسب‌های زمانی PTS در صورت عدم وجود در ورودی.
عدم پر کردن خودکار مقادیر مفقود برچسب‌های زمانی با درون‌یابی.
غیرفعال کردن پارسر خودکار کدک‌ها.
نادیده گرفتن مقادیر برچسب زمانی رمزگشایی DTS.
دور انداختن بسته‌های داده خراب یا مخدوش در جریان ورودی.
تلاش برای بازآرایی و مرتب‌سازی بسته‌ها بر اساس برچسب زمانی DTS.
فعال‌سازی پرش سریع مبتنی بر بایت در قالب‌هایی که پشتیبانی می‌کنند.
تعیین حداکثر مدت زمانی که برنامه برای بررسی مشخصات جریان‌ها و کدک‌ها تحلیل می‌کند.
تعداد فریم‌های مورد استفاده برای تعیین نرخ فریم در استریم‌های بدون هدر کامل.
تنظیم حساسیت تشخیص خطای قالب: crccheck، bitstream، buffer، explode (توقف فوری در صورت بروز هر خطا).
حداکثر اختلاف زمانی در هم‌تنیدگی بسته‌های صدا و تصویر.

دی‌ماکسرها مؤلفه‌های نرم‌افزاری هستند که جریان چندرسانه‌ای را از فایل یا استریم کانتینر خوانده و آن را به استریم‌های صوتی، تصویری و زیرنویس اولیه تفکیک می‌کنند.

مهم‌ترین دی‌ماکسرهای در دسترس:

دی‌ماکسر کانتینرهای خانواده QuickTime / ISO Base Media Format (MP4).
دی‌ماکسر قالب‌های منعطف و مدرن Matroska (MKV) و WebM بر پایه زبان ساخت‌یافته EBML.
دی‌ماکسر استریم‌های انتقالی MPEG-2 Transport Stream پرکاربرد در پخش دیجیتال تلویزیونی (DVB/ATSC) و استریم‌های HLS.
دی‌ماکسر فرمت فلش ویدیو (Flash Video) مورد استفاده در پروتکل‌های پخش آنلاین مانند RTMP.
دی‌ماکسر پروتکل پخش زنده و تقاضامحور چندنرخی Apple HTTP Live Streaming بر پایه لیست‌های پخش M3U8.
دی‌ماکسر توالی تصاویر تک‌فریم برای خواندن مجموعه‌ای از فایل‌های عکس با الگوی نام‌گذاری (مانند img%03d.png).
دی‌ماکسر اختصاصی الحاق مجازی فایل‌ها بر اساس یک فایل متنی فهرستی ساده بدون نیاز به انکود مجدد.

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

مهم‌ترین ماکسرهای در دسترس:

ماکسر کانتینرهای MP4 و QuickTime.

گزینه‌های اختصاصی پرکاربرد:

شامل پرچم‌های مهمی مانند faststart (انتقال جدول اطلاعات موف به ابتدای فایل جهت آغاز پخش بلافاصله پس از شروع دانلود اینترنتی)، frag_keyframe (تقسیم فایل به قطعات مجزا)، و empty_moov برای جریان‌های زنده تکه‌تکه (Fragmented MP4).
ماکسر کانتینر چندمنظوره MKV با پشتیبانی نامحدود از استریم‌های موازی صوتی، زیرنویس‌ها و پیوست‌های خط و فونت.
ماکسر تولید استریم‌های قطعه‌بندی‌شده HLS شامل تولید خودکار فایل مانیفست M3U8 و فایل‌های قطعه TS یا fMP4.
ماکسر تقسیم خودکار فایل خروجی به بخش‌های کوچک زمانی یا فریم‌کلیدی با الگوی نام‌گذاری مشخص.
ماکسر ارسال همزمان یک جریان رسانه‌ای کدگذاری‌شده به چندین مقصد خروجی مجزا (مانند نوشتن روی دیسک هم‌زمان با ارسال زنده به یوتیوب یا توییچ).

ابزار FFmpeg قادر است تمامی اطلاعات فراداده (Metadata) یک فایل رسانه‌ای را در قالب یک فایل متنی ساده با ساختار شبیه INI استخراج کند و مجدداً با استفاده از ماکسر فراداده بر روی فایل‌های جدید بارگذاری نماید:

ffmpeg -i in.mp4 -f ffmetadata in.txt
ffmpeg -i in.mp4 -i in.txt -map_metadata 1 -c copy out.mp4

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

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

برای جزئیات بیشتر به تاریخچه گیت پروژه در https://git.ffmpeg.org/ffmpeg مراجعه نمایید.

FFmpeg