با سلام و احترام خدمت بازدیدکنندگان عزیز
آموزش و آشنایی با نرم افزار FFmpeg – قسمت دوم – گروه بندی سوئیچ ها
برای مشاهده قسمت اول به این پست مراجعه نمایید.

گروه بندی سوئیچ ها
اول از همه، مانند سایر نرم افزارهای کنسولی، سوئیچ های FFmpeg از یک لحاظ به دو دسته تقسیم می شوند. سوئیچ هایی که مقدار ورودی می خواهند و سوئیچ هایی که مقداری برای ورودی نمی خواهند. مثلا -i مقدار ورودی می خواهد اما -y خیر.

در مرحله دوم، مدل سوئیچ های FFmpeg بصورت -switch1 value1 -switch2 value2 -switch3 -switch4 value4 هست. یعنی (از چپ به راست) یک خط تیره سپس نام سوئیچ بدون معطلی و بعد یک فاصله و بعد مقدار ورودی سوئیچ (در صورت نیاز اون سوئیچ – مثلا switch3 در بالا از نوع سوئیچ های بدون مقدار ورودی بود). هر سوئیچ نیز با کارکتر فاصله از سوئیچ قبلی و بعدی خودش جدا می شود.

در مرحله سوم، سوئیچ های FFmpeg از یک لحاظ دیگر به 3 دسته اصلی تقسیم می شوند. کلی، ورودی و خروجی.
دستورات کلی یا global options دستوراتی هستند که به خود FFmpeg مربوط می شوند مانند -help که راهنمای FFmpeg را چاپ می کند یا -loglevel که نحوه و میزان پرینت گزارش عملیات در حال اجرا را در صفحه مشخص می کند و غیره که این دستورات باید در اولین مکان بعد از فراخوانی ffmpeg.exe در بچ قرار بگیرند.
Input options و output options دستوراتی هستند که به ترتیب برای فایل ورودی و فایل خروجی تعیین می شوند. یعنی تمامی دستوراتی که قبل از "هر" دستور -i قرار می دهید بعنوان input option برای همان فایلی که بعنوان ورودی آن -i فراخوانی کردید استفاده می شوند. و بعد از -i و قبل از تعیین فایل خروجی، دستورات بعنوان output options برای همان فایل خروجی خوانده می شوند. استفاده از سوئیچ های ورودی بعنوان خروجی یا بالعکس شما را با ارور Option x cannot be applied to input file i -- you are trying to apply an input option to an output file or vice versa. مواجه می کند.
برخی سوئیچ ها نیز به اینگونه تعریف شده اند که بعنوان ورودی، یک کار انجام می دهند و بعنوان خروجی یک کار یعنی برای هر دو مورد تعریف شده اند.
مثلا سوئیچ -r که برای تعیین یا تغییر نرخ فریم هست، اگر قبل از -i گذاشته بشود به نرم افزار می گوید که در زمان demux کردن فایل فراخوانی شده در آن -i، اون را با نرخ فریمی که ما تعیین کردیم مثلا 25 فریم دیماکس کن. ولی وقتی بعنوان output option استفاده کنیم به نرم افزار می گوید نرخ فریم آن خروجی را بکن 25. (معمولا وقتی از دستور -r بعنوان دستور ورودی استفاده می شود که نرخ فریم فایل ورودی برای FFmpeg قابل تشخیص نباشد مثلا در هنگام باز کردن یک فایل jpg برای انداختن آن بعنوان لوگو روی ویدئوی).
درون راهنمای خود FFmpeg ورودی و خروجی بودن یک سوئیچ را اینگونه مشخص کرده است: -ac[:stream_specifier] channels (input/output,per-stream)
-an (output)
-acodec codec (input/output)
-af filtergraph (output)


و در مرحله چهارم، از یک لحاظ دیگر سوئیچ های FFmpeg به دو دسته تقسیم می شوند. دسته اول سوئیچ های عمومی یا generic options هستند که به فرض مثال روی همه ی muxer ها جواب می دهند و دسته دوم private options یا سوئیچ های خصوصی هستند و تنها روی یک muxer خاص جواب می دهند و اگر برای سایر muxerها استفاده شوند معمولا بی سرو صدا نادیده گرفته خواهند شد. (البته سوئیچ های خصوصی برای encoderها و decoderها و غیره نیز وجود دارند و muxerها در متن بالا تنها یک مثال بود).

امیدوارم به اندازه کافی خلاصه شده باشد
--پایان قسمت دوم - مشاهده قسمت سوم