| FFMPEG-FILTERS(1) | FFMPEG-FILTERS(1) |
نام (NAME)
ffmpeg-filters - مستندات و راهنمای فیلترهای صوتی و تصویری FFmpeg
توضیحات (DESCRIPTION)
این سند فیلترها، سورسها (منابع) و سینکها (مقاصد) ارائهشده توسط کتابخانه libavfilter را شرح میدهد.
مقدمه فیلترگذاری (FILTERING INTRODUCTION)
فیلترگذاری در FFmpeg از طریق کتابخانه libavfilter انجام میپذیرد.
در libavfilter، یک فیلتر میتواند چندین ورودی و چندین خروجی داشته باشد. برای نشان دادن مواردی که امکانپذیر است، گراف فیلتر (filtergraph) زیر را در نظر میگیریم.
[main]
input --> split ---------------------> overlay --> output
| ^
|[tmp] [flip]|
+-----> crop --> vflip -------+
این گراف فیلتر جریان ورودی را به دو جریان تقسیم میکند، سپس یکی از جریانها را از فیلتر crop و سپس فیلتر vflip عبور میدهد، پیش از آنکه با انداختن آن بر روی جریان دیگر از طریق overlay، آنها را مجدداً ادغام کند. برای رسیدن به این هدف میتوانید از دستور زیر استفاده نمایید:
ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
نتیجه این خواهد بود که نیمه بالایی ویدیو به صورت آینهای روی نیمه پایینی ویدیوی خروجی قرار میگیرد.
فیلترها در یک زنجیره خطی با کاما (ویرگول انگلیسی) از هم جدا میشوند، و زنجیرههای خطی متمایز فیلترها با سمیکالن (نقطهویرگول) جدا میگردند. در مثال ما، crop,vflip در یک زنجیره خطی قرار دارند و split و overlay به طور جداگانه در زنجیره دیگری هستند. نقاطی که زنجیرههای خطی به هم میپیوندند با نامهایی محصور در کروشه مشخص میشوند. در این مثال، فیلتر split دو خروجی تولید میکند که با برچسبهای [main] و [tmp] مرتبط شدهاند.
جریانی که به دومین خروجی split ارسال میشود، با برچسب [tmp]، از طریق فیلتر crop پردازش میگردد که نیمه پایینی ویدیو را برش داده و سپس به صورت عمودی معکوس (flip) میکند. فیلتر overlay در ورودی خود اولین خروجی بدون تغییر فیلتر split را دریافت میکند (که با نام [main] برچسبگذاری شده بود)، و خروجی تولیدشده توسط زنجیره فیلتر crop,vflip را روی نیمه پایینی آن میاندازد.
برخی فیلترها فهرستی از پارامترها را در ورودی دریافت میکنند: این پارامترها پس از نام فیلتر و یک علامت مساوی مشخص میشوند، و با علامت دونقطه (کولن) از یکدیگر جدا میگردند.
فیلترهایی موسوم به فیلترهای مبدأ (source filters) وجود دارند که فاقد ورودی صدا/ویدیو هستند، و فیلترهای مقصد (sink filters) که خروجی صدا/ویدیو نخواهند داشت.
گراف (GRAPH)
برنامه graph2dot موجود در دایرکتوری tools در FFmpeg میتواند برای تجزیه شرح یک گراف فیلتر و ارائه یک نمایش متنی متناظر به زبان dot استفاده شود.
دستور:
graph2dot -h
را اجرا کنید تا نحوه استفاده از graph2dot را مشاهده نمایید.
سپس میتوانید شرح dot را به برنامه dot (از مجموعه برنامههای graphviz) ارسال نموده و یک نمایش گرافیکی از گراف فیلتر به دست آورید.
برای نمونه، دنباله دستورات:
echo <GRAPH_DESCRIPTION> | \ tools/graph2dot -o graph.tmp && \ dot -Tpng graph.tmp -o graph.png && \ display graph.png
میتواند برای ایجاد و نمایش تصویری به کار رود که گرافِ شرحدادهشده توسط رشته GRAPH_DESCRIPTION را نشان میدهد. توجه داشته باشید که این رشته باید یک گراف کامل و مستقل باشد که ورودیها و خروجیهای آن به طور صریح تعریف شده باشند. برای مثال اگر خط فرمان شما به شکل زیر باشد:
ffmpeg -i infile -vf scale=640:360 outfile
رشته GRAPH_DESCRIPTION شما باید به صورت زیر باشد:
nullsrc,scale=640:360,nullsink
همچنین ممکن است برای شبیهسازی یک پرونده ورودی خاص، نیاز به تنظیم پارامترهای nullsrc و افزودن یک فیلتر format داشته باشید.
قواعد نوشتاری فیلترها (FILTERGRAPH SYNTAX)
یک گراف فیلتر (filtergraph) یک گراف جهتدار از فیلترهای متصل به هم است. این گراف میتواند شامل چرخه (دور) باشد و ممکن است چندین پیوند میان یک جفت فیلتر وجود داشته باشد. هر پیوند دارای یک پد ورودی در یک سو است که آن را به فیلتری که ورودی را از آن میگیرد متصل میکند، و یک پد خروجی در سوی دیگر دارد که آن را به فیلتری که خروجیاش را میپذیرد پیوند میدهد.
هر فیلتر در یک گراف فیلتر نمونهای از یک کلاس فیلتر ثبتشده در برنامه است، که ویژگیها و تعداد پدهای ورودی و خروجی فیلتر را تعریف میکند.
فیلتری که هیچ پد ورودی ندارد "مبدأ" (source) نامیده میشود، و فیلتری که پد خروجی ندارد "مقصد" (sink) نام دارد.
نحو گراف فیلتر (Filtergraph syntax)
گراف فیلتر دارای یک نمایش متنی است که توسط گزینههای -filter/-vf/-af و -filter_complex در ffmpeg و گزینههای -vf/-af در ffplay، و توسط تابع avfilter_graph_parse_ptr() تعریفشده در libavfilter/avfilter.h شناسایی میشود.
یک زنجیره فیلتر (filterchain) شامل دنبالهای از فیلترهای متصل به هم است که هر یک به فیلتر پیشین خود در دنباله متصل است. یک زنجیره فیلتر با فهرستی از شرحهای فیلتر که با کاما (",") از هم جدا شدهاند نشان داده میشود.
یک گراف فیلتر از دنبالهای از زنجیرههای فیلتر تشکیل شده است. دنبالهای از زنجیرههای فیلتر با فهرستی از شرحهای زنجیره فیلتر که با سمیکالن (";") از هم جدا شدهاند نمایش داده میشود.
یک فیلتر با رشتهای به فرم زیر نمایش داده میشود: [in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]
عبارت filter_name نام کلاس فیلتری است که فیلترِ شرح دادهشده نمونهای از آن است، و باید نام یکی از کلاسهای فیلتر ثبتشده در برنامه باشد که به صورت اختیاری پس از آن "@id" میآید. پس از نام کلاس فیلتر، به صورت اختیاری رشته "=arguments" قرار میگیرد.
عبارت arguments رشتهای است که شامل پارامترهای مورد استفاده برای مقداردهی اولیه نمونه فیلتر است. این رشته میتواند یکی از دو فرم زیر را داشته باشد:
- فهرستی از جفتهای key=value که با ':' از هم جدا شدهاند.
- فهرستی از value که با ':' جدا شدهاند. در این حالت، کلیدها همان نامهای گزینهها به ترتیبی که اعلان شدهاند در نظر گرفته میشوند. برای نمونه، فیلتر "fade" سه گزینه را به این ترتیب اعلان میکند: type، start_frame و nb_frames. بنابراین فهرست پارامتر in:0:30 بدین معناست که مقدار in به گزینه type، مقدار 0 به start_frame و 30 به nb_frames تخصیص مییابد.
- فهرستی جداشده با ':' از مقادیر مستقیم value و جفتهای کامل key=value به صورت ترکیبی. مقدار مستقیم value باید پیش از جفتهای key=value بیاید، و از همان ترتیب محدودیتهای بند پیشین پیروی کند. جفتهای key=value پس از آن میتوانند به هر ترتیب دلخواهی تنظیم شوند.
اگر مقدار گزینه خود فهرستی از موارد باشد (به عنوان نمونه فیلتر "format" فهرستی از قالبهای پیکسل را میگیرد)، موارد موجود در فهرست معمولاً با | از هم جدا میشوند.
فهرست آرگومانها را میتوان با استفاده از نویسه ' به عنوان نشانگر آغاز و پایان نقلقول کرد، و از نویسه \ برای گریز (escape) نویسهها درون متن نقلشده استفاده نمود؛ در غیر این صورت، رشته آرگومان زمانی خاتمهیافته تلقی میشود که با نویسه خاص بعدی (متعلق به مجموعه []=;,) مواجه شود.
نحو ویژهای که در ابزار خط فرمان ffmpeg پیادهسازی شده، امکان بارگذاری مقادیر گزینهها را از پروندهها فراهم میسازد. این کار با افزودن یک اسلش '/' به ابتدای نام گزینه انجام میشود؛ در این حالت مقدار ارائهشده به عنوان مسیری تفسیر میشود که مقدار واقعی از آن بارگذاری میگردد. به عنوان مثال:
ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>
متنی که باید ترسیم شود را از /tmp/some_text بارگذاری خواهد کرد. کاربران API که مایل به پیادهسازی قابلیتی مشابه هستند باید از توابع "avfilter_graph_segment_*()" همراه با کد سفارشی ورودی/خروجی استفاده کنند.
نام و آرگومانهای فیلتر به صورت اختیاری میتوانند قبل و بعد با فهرستی از برچسبهای پیوند (link labels) همراه شوند. یک برچسب پیوند امکان نامگذاری یک پیوند و اتصال آن به یک پد ورودی یا خروجی فیلتر را فراهم میسازد. برچسبهای پیشین in_link_1 ... in_link_N، به پدهای ورودی فیلتر متصل میشوند، و برچسبهای پسین out_link_1 ... out_link_M به پدهای خروجی مرتبط میگردند.
هنگامی که دو برچسب پیوند با نام یکسان در گراف فیلتر یافت شوند، پیوندی میان پد ورودی و خروجی متناظر ایجاد میشود.
اگر یک پد خروجی برچسبگذاری نشده باشد، به طور پیشفرض به اولین پد ورودی بدون برچسب از فیلتر بعدی در زنجیره فیلتر پیوند میخورد. برای مثال در زنجیره فیلتر:
nullsrc, split[L1], [L2]overlay, nullsink
نمونه فیلتر split دو پد خروجی دارد و نمونه فیلتر overlay دارای دو پد ورودی است. اولین پد خروجی split با "L1" برچسبگذاری شده، اولین پد ورودی overlay با "L2" برچسب خورده، و دومین پد خروجی split به دومین پد ورودی overlay متصل میشود، که هر دو بدون برچسب هستند.
در شرح یک فیلتر، اگر برچسب ورودی اولین فیلتر تعیین نشود، "in" فرض میشود؛ اگر برچسب خروجی آخرین فیلتر مشخص نشود، "out" در نظر گرفته میشود.
در یک زنجیره فیلتر کامل، تمامی پدهای ورودی و خروجی بدون برچسب فیلترها باید متصل باشند. یک گراف فیلتر زمانی معتبر شناخته میشود که تمامی پدهای ورودی و خروجی تمام زنجیرههای فیلتر متصل باشند.
فضاهای خالی آغازین و پایانی (فاصله، تب، یا سرخط) که نشانهها (tokens) را در مشخصات گراف فیلتر از هم جدا میکنند نادیده گرفته میشوند. این بدان معناست که میتوان گراف فیلتر را با استفاده از خطوط خالی و فاصلهها برای خوانایی بهتر بیان کرد.
به عنوان مثال، گراف فیلتر:
testsrc,split[L1],hflip[L2];[L1][L2] hstack
میتواند به صورت زیر نمایش داده شود:
testsrc, split [L1], hflip [L2]; [L1][L2] hstack
کتابخانه Libavfilter در جاهایی که تبدیل قالب مورد نیاز باشد به طور خودکار فیلترهای scale را درج میکند. میتوان پرچمهای swscale را برای این مقیاسبخشهای درجشده خودکار با افزودن عبارت "sws_flags=flags;" به ابتدای شرح گراف فیلتر تعیین نمود.
در ادامه شرح BNF نحو گراف فیلتر آورده شده است:
<NAME> ::= sequence of alphanumeric characters and '_' <FILTER_NAME> ::= <NAME>["@"<NAME>] <LINKLABEL> ::= "[" <NAME> "]" <LINKLABELS> ::= <LINKLABEL> [<LINKLABELS>] <FILTER_ARGUMENTS> ::= sequence of chars (possibly quoted) <FILTER> ::= [<LINKLABELS>] <FILTER_NAME> ["=" <FILTER_ARGUMENTS>] [<LINKLABELS>] <FILTERCHAIN> ::= <FILTER> [,<FILTERCHAIN>] <FILTERGRAPH> ::= [sws_flags=<flags>;] <FILTERCHAIN> [;<FILTERGRAPH>]
نکاتی درباره گریز در گراف فیلتر (Notes on filtergraph escaping)
نوشتن شرح گراف فیلتر نیازمند چندین لایه گریز (escaping) است. برای اطلاعات بیشتر درباره روند گریز، به بخش "نقلقول و گریز" در راهنمای ffmpeg-utils(1) مراجعه کنید.
اولین سطح گریز بر محتوای مقدار هر گزینه فیلتر تأثیر میگذارد، که ممکن است شامل نویسه خاص ":" برای جداسازی مقادیر، یا یکی از نویسههای گریز "\'" باشد.
سطح دوم گریز بر کل شرح فیلتر تأثیر میگذارد، که ممکن است حاوی نویسههای گریز "\'" یا نویسههای خاص "[],;" باشد که توسط شرح گراف فیلتر استفاده میشوند.
در نهایت، هنگامی که یک گراف فیلتر را در خط فرمان شل مشخص میکنید، باید یک سطح سوم از گریز را برای نویسههای خاص شل که در آن قرار دارند انجام دهید.
به عنوان مثال، رشته زیر را در نظر بگیرید که قرار است درون مقدار text در فیلتر drawtext قرار گیرد:
this is a 'string': may contain one, or more, special characters
این رشته حاوی نویسه خاص گریز "'" و نویسه خاص ":" است، بنابراین باید به این صورت گریز داده شود:
text=this is a \'string\'\: may contain one, or more, special characters
هنگام قرار دادن شرح فیلتر در شرح گراف فیلتر، سطح دوم گریز لازم است تا تمامی نویسههای خاص گراف فیلتر گریز داده شوند. بنابراین مثال بالا تبدیل میشود به:
drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
(توجه داشته باشید که علاوه بر نویسههای خاص گریز "\'"، نویسه "," نیز باید گریز داده شود).
در نهایت یک سطح اضافی از گریز هنگام نوشتن شرح گراف فیلتر در دستور شل مورد نیاز است، که به قواعد گریز شل مورد استفاده بستگی دارد. برای نمونه، با فرض اینکه "\" خاص باشد و نیاز به گریز با یک "\" دیگر داشته باشد، رشته قبلی در نهایت به این صورت خواهد بود:
-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
به منظور اجتناب از گریزهای دستوپاگیر هنگام استفاده از ابزارهای خط فرمانی که مشخصات فیلتر را به عنوان ورودی میپذیرند، توصیه میشود از گنجاندن مستقیم فیلتر یا مشخصات گزینهها در شل خودداری نمایید.
به عنوان مثال، در مورد فیلتر drawtext، ممکن است ترجیح دهید از گزینه textfile به جای text برای تعیین متنِ جهت رندر استفاده کنید.
ویرایش خط زمانی (TIMELINE EDITING)
برخی فیلترها از گزینه عمومی enable پشتیبانی میکنند. برای فیلترهایی که از ویرایش خط زمانی پشتیبانی میکنند، این گزینه میتواند روی عبارتی تنظیم شود که پیش از ارسال یک فریم به فیلتر ارزیابی میگردد. اگر حاصل ارزیابی غیرصفر باشد، فیلتر فعال خواهد شد؛ در غیر این صورت فریم بدون تغییر به فیلتر بعدی در گراف فیلتر فرستاده میشود.
این عبارت مقادیر زیر را میپذیرد:
- t
- برچسب زمانی بر حسب ثانیه؛ در صورتی که برچسب زمانی ورودی نامشخص باشد برابر NAN است
- n
- شماره ترتیبی فریم ورودی، با شروع از 0
- pos
- موقعیت فریم ورودی در پرونده، در صورت نامشخص بودن NAN؛ منسوخ شده است، استفاده نکنید
- w
- h
- عرض و ارتفاع فریم ورودی در صورت ویدیو بودن
علاوه بر این، این فیلترها از یک دستور enable پشتیبانی میکنند که میتواند برای تعریف مجدد عبارت استفاده شود.
همانند هر گزینه فیلترگذاری دیگر، گزینه enable نیز از همان قواعد پیروی میکند.
برای نمونه، جهت فعالسازی یک فیلتر ماتکننده (smartblur) از ثانیه 10 تا دقیقه 3، و یک فیلتر منحیها (curves) با شروع از ثانیه 3:
smartblur = enable='between(t,10,3*60)', curves = enable='gte(t,3)' : preset=cross_process
برای مشاهده اینکه کدام فیلترها از خط زمانی پشتیبانی میکنند، به "ffmpeg -filters" مراجعه کنید.
تغییر گزینهها در زمان اجرا با دستور (CHANGING OPTIONS AT RUNTIME WITH A COMMAND)
برخی گزینهها را میتوان در طول کارکرد فیلتر با استفاده از یک دستور تغییر داد. این گزینهها در خروجی دستور ffmpeg -h filter=<نام فیلتر> با علامت 'T' مشخص شدهاند. نام دستور همان نام گزینه است و آرگومان آن مقدار جدید خواهد بود.
گزینهها برای فیلترهای با چندین ورودی (OPTIONS FOR FILTERS WITH SEVERAL INPUTS)
برخی فیلترها با چندین ورودی از مجموعه مشترکی از گزینهها پشتیبانی میکنند. این گزینهها را تنها میتوان با نام آنها تنظیم کرد، نه با نشانهگذاری کوتاه.
- eof_action
- اقدامی که در صورت مواجهه با پایان پرونده (EOF) در ورودی ثانویه انجام میشود؛ یکی از مقادیر زیر را میپذیرد:
- shortest
- در صورت تنظیم روی 1، خروجی را وادار میکند با پایان یافتن کوتاهترین ورودی، خاتمه یابد. مقدار پیشفرض 0 است.
- repeatlast
- در صورت تنظیم روی 1، فیلتر را وادار میکند آخرین فریم جریانهای ثانویه را تا انتهای جریان اولیه امتداد دهد. مقدار 0 این رفتار را غیرفعال میسازد. مقدار پیشفرض 1 است.
- ts_sync_mode
- میزان دقت در همگامسازی جریانها بر اساس برچسبهای زمانی ورودی ثانویه؛ یکی از مقادیر زیر را میپذیرد:
فیلترهای صوتی (AUDIO FILTERS)
هنگامی که ساخت FFmpeg خود را پیکربندی میکنید، میتوانید هر یک از فیلترهای موجود را با استفاده از "--disable-filters" غیرفعال کنید. خروجی configure فیلترهای صوتی موجود در ساخت شما را نشان خواهد داد.
در ادامه شرحی از فیلترهای صوتی موجود فعلی آمده است.
aap
اعمال الگوریتم پروجکشن افین (Affine Projection) بر روی اولین جریان صوتی با استفاده از دومین جریان صوتی.
این فیلتر تطبیقی برای تخمین صدای ناشناخته بر اساس چندین نمونه صوتی ورودی استفاده میشود. الگوریتم تصویر افین میتواند تعادلی میان پیچیدگی محاسباتی و سرعت همگرایی برقرار کند.
شرح گزینههای پذیرفتهشده در ادامه میآید.
- order
- تنظیم مرتبه فیلتر.
- projection
- تنظیم مرتبه تصویر (projection).
- mu
- تنظیم ضریب mu فیلتر.
- delta
- تنظیم ضریب برای مقداردهی اولیه ماتریس کوواریانس داخلی.
- out_mode
- تنظیم نمونههای خروجی فیلتر. مقادیر زیر را میپذیرد:
- precision
- تنظیم دقت مورد استفاده هنگام پردازش نمونهها.
acompressor
کمپرسور عمدتاً برای کاهش دامنه دینامیکی یک سیگنال استفاده میشود. به ویژه موسیقیهای مدرن بیشتر با نسبت بالا فشرده میشوند تا بلندی صدای کلی را بهبود بخشند. این کار برای جلب حداکثر توجه شنونده، "حجیم کردن" صدا و افزودن "قدرت" بیشتر به قطعه انجام میشود. اگر سیگنالی بیش از حد فشرده شود ممکن است پس از آن کدر یا "مرده" به نظر برسد یا شروع به "پمپ کردن" کند (که میتواند جلوهای قدرتمند باشد اما ممکن است قطعه را نیز کاملاً خراب کند). فشردهسازی درست، کلید رسیدن به صدای حرفهای و هنر والای میکس و مسترینگ است. به دلیل تنظیمات پیچیدهاش، ممکن است زمان زیادی طول بکشد تا حس مناسب برای این نوع جلوه حاصل شود.
فشردهسازی با تشخیص میزان بلندی صدا فراتر از یک سطح انتخابی "threshold" و تقسیم آن بر ضریب تعیینشده توسط "ratio" انجام میشود. بنابراین اگر آستانه را روی -12dB تنظیم کنید و سیگنال شما به -6dB برسد، نسبت 2:1 منجر به سیگنالی در -9dB خواهد شد. از آنجا که دستکاری دقیق سیگنال باعث اعوجاج شکل موج میشود، کاهش صدا میتواند در طول زمان تراز شود. این کار با تنظیم "Attack" و "Release" انجام میپذیرد. گزینه "attack" تعیین میکند که سیگنال چه مدت باید بالاتر از آستانه بماند پیش از آنکه هرگونه کاهشی رخ دهد و "release" زمانی را تنظیم میکند که سیگنال باید به زیر آستانه سقوط کند تا کاهش صدا مجدداً کم شود. سیگنالهای کوتاهتر از زمان حمله (attack) انتخابی دستنخورده باقی خواهند ماند. کاهش کلی سیگنال را میتوان پس از آن با تنظیم "makeup" جبران کرد. بنابراین فشردهسازی قلههای سیگنال به میزان حدود 6dB و افزایش makeup به این میزان، منجر به سیگنالی دو برابر بلندتر از منبع میشود. برای دستیابی به ورود ملایمتر به فشردهسازی، گزینه "knee" لبه تیز آستانه را در محدوده دسیبلهای انتخابی صاف و منحنی میکند.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم بهره (gain) ورودی. پیشفرض 1 است. محدوده بین 0.015625 و 64 است.
- mode
- تنظیم حالت عملکرد کمپرسور. میتواند "upward" (رو به بالا) یا "downward" (رو به پایین) باشد. پیشفرض "downward" است.
- threshold
- اگر سیگنال جریان بالاتر از این سطح برود، بر کاهش بهره تأثیر خواهد گذاشت. به طور پیشفرض 0.125 است. محدوده بین 0.00097563 و 1 است.
- ratio
- تنظیم نسبتی که سیگنال با آن کاهش مییابد. نسبت 1:2 بدان معناست که اگر سطح سیگنال 4dB بالاتر از آستانه رفت، پس از کاهش تنها 2dB بالاتر از آستانه خواهد بود. پیشفرض 2 است. محدوده بین 1 و 20 است.
- attack
- مدت زمان به میلیثانیه که سیگنال باید پیش از شروع کاهش بهره بالاتر از آستانه بماند. پیشفرض 20 است. محدوده بین 0.01 و 2000 است.
- release
- مدت زمان به میلیثانیه که سیگنال باید پیش از کاهش یافتن مجددِ تضعیف، به زیر آستانه بیفتد. پیشفرض 250 است. محدوده بین 0.01 و 9000 است.
- makeup
- تنظیم مقداری که سیگنال پس از پردازش تقویت خواهد شد. پیشفرض 1 است. محدوده از 1 تا 64 است.
- knee
- منحنی کردن زانویی تیز اطراف آستانه برای ورود نرمتر به کاهش بهره. پیشفرض 2.82843 است. محدوده بین 1 و 8 است.
- link
- انتخاب اینکه آیا سطح میانگین ("average") میان تمام کانالهای جریان ورودی یا کانال بلندتر ("maximum") جریان ورودی بر کاهش بهره تأثیر بگذارد. پیشفرض "average" است.
- detection
- تعیین اینکه آیا سیگنال دقیق در حالت "peak" در نظر گرفته شود یا مقدار RMS در حالت "rms". پیشفرض "rms" است که معمولاً روانتر است.
- mix
- میزان استفاده از سیگنال فشردهشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
acontrast
فیلتر ساده فشردهسازی/گسترش دامنه دینامیکی صدا.
این فیلتر گزینههای زیر را میپذیرد:
- contrast
- تنظیم کنتراست. پیشفرض 33 است. محدوده مجاز بین 0 و 100 است.
acopy
کپی منبع صوتی ورودی بدون تغییر به خروجی. این فیلتر عمدتاً برای اهداف آزمایشی مفید است.
acrossfade
اعمال محوشدگی متقاطع (cross fade) از یک جریان صوتی ورودی به جریان صوتی ورودی دیگر. محوشدگی متقاطع برای مدتزمان مشخصی در نزدیکی انتهای جریان اول اعمال میشود.
این فیلتر گزینههای زیر را میپذیرد:
- inputs, n
- تعیین تعداد ورودیها برای محوشدگی متقاطع. هنگام اعمال فید متقاطع روی چندین ورودی، هر ورودی به ترتیب زنجیرهبندی شده و فید متقاطع میشود، مشابه با فیلتر concat. پیشفرض 2 است.
- nb_samples, ns
- تعیین تعداد نمونههایی که جلوه محوشدگی متقاطع باید ادامه داشته باشد. در پایان جلوه محوشدگی متقاطع، اولین صدای ورودی کاملاً ساکت خواهد بود. پیشفرض 44100 است.
- duration, d
- تعیین مدت زمان جلوه محوشدگی متقاطع. برای نحو پذیرفتهشده، به بخش مدت زمان در راهنمای ffmpeg-utils(1) مراجعه کنید. به طور پیشفرض مدت زمان با nb_samples تعیین میشود. در صورت تنظیم، این گزینه به جای nb_samples استفاده میشود.
- overlap, o
- تعیین اینکه آیا پایان جریان اول باید با آغاز جریان دوم همپوشانی داشته باشد یا خیر. پیشفرض فعال است.
- curve1
- تنظیم منحنی برای انتقال محوشدگی متقاطع برای جریان اول.
- curve2
- تنظیم
منحنی برای
انتقال
محوشدگی
متقاطع
برای جریان
دوم.
برای شرح انواع منحنیهای موجود، شرح فیلتر afade را ببینید.
مثالها
- محوشدگی
متقاطع از
یک ورودی به
ورودی دیگر:
ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
- محوشدگی
متقاطع از
یک ورودی به
دیگری اما
بدون
همپوشانی:
ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
زنجیرهبندی چندین ورودی همراه با محوشدگی متقاطع میان هر یک:
ffmpeg -i first.flac -i second.flac -i third.flac -filter_complex acrossfade=n=3 output.flac
acrossover
تقسیم جریان صوتی به چندین باند فرکانسی.
این فیلتر جریان صدا را به دو یا چند محدوده فرکانسی تقسیم میکند. جمع بستن مجدد تمامی جریانها خروجی مسطح و یکنواختی به دست میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- split
- تنظیم فرکانسهای تقسیم. این فرکانسها باید مقادیری مثبت و صعودی باشند.
- order
- تنظیم مرتبه فیلتر برای هر تقسیم باند. این گزینه افت فرکانسی (roll-off) یا شیب تابع تبدیل فیلتر را کنترل میکند. مقادیر در دسترس عبارتند از:
- 2nd
- 12 dB در هر اکتاو.
- 4th
- 24 dB در هر اکتاو.
- 6th
- 36 dB در هر اکتاو.
- 8th
- 48 dB در هر اکتاو.
- 10th
- 60 dB در هر اکتاو.
- 12th
- 72 dB در هر اکتاو.
- 14th
- 84 dB در هر اکتاو.
- 16th
- 96 dB در هر اکتاو.
- 18th
- 108 dB در هر اکتاو.
- 20th
- 120 dB در هر اکتاو.
پیشفرض 4th است.
- level
- تنظیم سطح بهره ورودی. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 1 است.
- gains
- تنظیم بهره خروجی برای هر باند. مقدار پیشفرض برای تمامی باندها 1 است.
- precision
- تنظیم دقت مورد استفاده هنگام پردازش نمونهها.
مقدار پیشفرض "auto" است.
مثالها
- تقسیم
جریان صوتی
ورودی به دو
باند (پایین
و بالا) با
فرکانس
تقسیم 1500 Hz، به
طوری که هر
باند در
جریانی
جداگانه
قرار گیرد:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
- مشابه مورد
بالا، اما
با مرتبه
فیلتر
بالاتر:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
- مشابه
بالا، اما
همراه با
باند میانی
اضافی
(فرکانسهای
بین 1500 و 8000):
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
acrusher
کاهش تفکیکپذیری بیتی صدا (bit resolution).
این فیلتر یک بیتکراشر (bit crusher) با قابلیتهای پیشرفته است. بیتکراشر برای کاهش شنیداری تعداد بیتهایی که سیگنال صوتی با آنها نمونهبرداری شده به کار میرود. این فیلتر به هیچ وجه عمق بیت واقعی را تغییر نمیدهد، بلکه صرفاً این جلوه صوتی را ایجاد میکند. محتوایی که عمق بیت آن کاهش یافته باشد خشنتر و "دیجیتالیتر" به نظر میرسد. این فیلتر حتی قادر است به جای عمقهای بیتی گسسته، به مقادیر پیوسته گرد کند. علاوه بر این دارای یک آفست D/C است که منجر به خرد شدن متفاوت نیمه پایینی و نیمه بالایی سیگنال میشود. یک تنظیم ضدپلگی (Anti-Aliasing) نیز میتواند صداهای خردشده "نرمتری" تولید کند.
یکی دیگر از ویژگیهای این فیلتر حالت لگاریتمی است. این تنظیم فواصل خطی میان بیتها را به فواصل لگاریتمی تغییر میدهد. نتیجه کار یک کراشر با صدای بسیار "طبیعیتر" است که برای مثال سیگنالهای ضعیف را قطع (gate) نمیکند. گوش انسان ادراک لگاریتمی دارد، بنابراین این نوع خردسازی بسیار گوشنوازتر است. خردسازی لگاریتمی همچنین قابلیت ضدپلگی را دارد.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم سطح ورودی.
- level_out
- تنظیم سطح خروجی.
- bits
- تنظیم میزان کاهش بیت.
- mix
- تنظیم میزان ترکیب (mix).
- mode
- میتواند خطی: "lin" یا لگاریتمی: "log" باشد.
- dc
- تنظیم مؤلفه مستقیم (DC).
- aa
- تنظیم ضدپلگی (anti-aliasing).
- samples
- تنظیم کاهش نمونهها.
- lfo
- فعالسازی نوسانساز بسامد پایین (LFO). به طور پیشفرض غیرفعال است.
- lforange
- تنظیم محدوده LFO.
- lforate
- تنظیم نرخ LFO.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
acue
به تأخیر انداختن فیلترگذاری صدا تا یک برچسب زمانی مشخص از ساعت سیستم. فیلتر cue را ببینید.
adeclick
حذف نوفههای ضربهای (impulsive noise / صدای کلیک و ترقتروق) از صدای ورودی.
نمونههایی که به عنوان نوفه ضربهای تشخیص داده شوند، با استفاده از مدلسازی خودبازگشتی (autoregressive) با نمونههای درونیابیشده جایگزین میگردند.
- window, w
- تنظیم اندازه پنجره، بر حسب میلیثانیه. محدوده مجاز از 10 تا 100 است. مقدار پیشفرض 55 میلیثانیه است. این گزینه اندازه پنجرهای را که در هر نوبت پردازش میشود تعیین میکند.
- overlap, o
- تنظیم همپوشانی پنجرهها، به درصدِ اندازه پنجره. محدوده مجاز از 50 تا 95 است. مقدار پیشفرض 75 درصد است. تنظیم این مقدار روی عددی بسیار بالا حذف نوفههای ضربهای را بهبود میبخشد اما کل فرآیند را بسیار کندتر میکند.
- arorder, a
- تنظیم مرتبه خودبازگشت، به درصد اندازه پنجره. محدوده مجاز از 0 تا 25 است. مقدار پیشفرض 2 درصد است. این گزینه همچنین کیفیت نمونههای درونیابیشده را با استفاده از نمونههای سالم مجاور کنترل میکند.
- threshold, t
- تنظیم مقدار آستانه. محدوده مجاز از 1 تا 100 است. مقدار پیشفرض 2 است. این گزینه شدت نوفههای ضربهای که باید حذف شوند را کنترل میکند. هر چه مقدار کمتر باشد، نمونههای بیشتری به عنوان نوفه ضربهای تشخیص داده میشوند.
- burst, b
- تنظیم ادغام رگباری (burst fusion)، به درصد اندازه پنجره. محدوده مجاز 0 تا 10 است. مقدار پیشفرض 2 است. اگر فاصله هر دو نمونه تشخیصدادهشده به عنوان نوفه کمتر از این مقدار باشد، هر نمونهای که میان آن دو قرار گیرد نیز به عنوان نوفه شناسایی خواهد شد.
- method, m
- تنظیم روش
همپوشانی.
مقادیر زیر را میپذیرد:
مقدار پیشفرض "a" است.
adeclip
حذف نمونههای برشخورده (clipped) از صدای ورودی.
نمونههایی که به عنوان کلیپشده تشخیص داده شوند، با استفاده از مدلسازی خودبازگشتی با نمونههای درونیابیشده جایگزین میگردند.
- window, w
- تنظیم اندازه پنجره، بر حسب میلیثانیه. محدوده مجاز از 10 تا 100 است. مقدار پیشفرض 55 میلیثانیه است. این گزینه اندازه پنجرهای را تعیین میکند که در هر نوبت پردازش خواهد شد.
- overlap, o
- تنظیم همپوشانی پنجرهها، به درصد اندازه پنجره. محدوده مجاز از 50 تا 95 است. مقدار پیشفرض 75 درصد است.
- arorder, a
- تنظیم مرتبه خودبازگشت، به درصد اندازه پنجره. محدوده مجاز از 0 تا 25 است. مقدار پیشفرض 8 درصد است. این گزینه همچنین کیفیت نمونههای درونیابیشده را با استفاده از نمونههای سالم مجاور کنترل مینماید.
- threshold, t
- تنظیم مقدار آستانه. محدوده مجاز از 1 تا 100 است. مقدار پیشفرض 10 است. مقادیر بالاتر حساسیت تشخیص کلیپینگ را کمتر میکنند.
- hsize, n
- تنظیم اندازه هیستوگرام مورد استفاده برای تشخیص کلیپها. محدوده مجاز از 100 تا 9999 است. مقدار پیشفرض 1000 است. مقادیر بالاتر شدت تشخیص کلیپینگ را کمتر میکنند.
- method, m
- تنظیم روش
همپوشانی.
مقادیر زیر را میپذیرد:
مقدار پیشفرض "a" است.
adecorrelate
اعمال ناهمبستگی (decorrelation) بر روی جریان صوتی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
adelay
به تأخیر انداختن یک یا چند کانال صوتی.
نمونهها در کانال تأخیریافته با سکوت پر میشوند.
این فیلتر گزینههای زیر را میپذیرد:
- delays
- تنظیم فهرست تأخیرها بر حسب میلیثانیه برای هر کانال که با '|' از هم جدا شدهاند. تأخیرهای استفادهنشده بدون هشدار نادیده گرفته میشوند. اگر تعداد تأخیرهای دادهشده کمتر از تعداد کانالها باشد، تمام کانالهای باقیمانده بدون تأخیر خواهند بود. اگر میخواهید تعداد دقیق نمونهها را به تأخیر بیندازید، پسوند 'S' را به عدد اضافه کنید. اگر به جای آن میخواهید بر حسب ثانیه تأخیر ایجاد کنید، پسوند 's' را به عدد بیفزایید.
- all
- استفاده از آخرین تأخیر تنظیمشده برای تمام کانالهای باقیمانده. به طور پیشفرض غیرفعال است. این گزینه در صورت فعال بودن، نحوه تفسیر گزینه "delays" را تغییر میدهد.
مثالها
- تأخیر
کانال اول
به مدت 1.5
ثانیه،
کانال سوم
به مدت 0.5
ثانیه و
دستنخورده
گذاشتن
کانال دوم
(و هر کانال
دیگری که
ممکن است
وجود داشته
باشد):
adelay=1500|0|500
- تأخیر
کانال دوم
به میزان 500
نمونه،
کانال سوم
به میزان 700
نمونه و
دستنخورده
گذاشتن
کانال اول
(و هر کانال
دیگری که
ممکن است
وجود داشته
باشد):
adelay=0|500S|700S
- تأخیر
تمامی
کانالها
به یک
اندازه بر
حسب نمونه:
adelay=delays=64S:all=1
adenorm
اصلاح اعداد زیرنرمال (denormals) در صدا از طریق افزودن نوفهای با سطح بسیار بسیار پایین.
این فیلتر باید پیش از هر فیلتری قرار گیرد که ممکن است اعداد زیرنرمال تولید کند.
شرح پارامترهای پذیرفتهشده در ادامه میآید.
- level
- تنظیم سطح نوفه افزودهشده بر حسب دسیبل. پیشفرض -351 است. محدوده مجاز بین -451 و -90 است.
- type
- تنظیم نوع نوفه اضافهشده.
پیشفرض "dc" است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
aderivative, aintegral
محاسبه مشتق/انتگرال جریان صوتی.
اعمال هر دو فیلتر یکی پس از دیگری، صدای اصلی را بازتولید میکند.
adrc
اعمال فیلتر کنترلکننده دامنه دینامیکی طیفی بر روی جریان صوتی ورودی.
شرح گزینههای پذیرفتهشده در ادامه میآید.
- transfer
- تنظیم
عبارت
انتقال (transfer expression).
این عبارت میتواند شامل ثابتهای زیر باشد:
مقدار پیشفرض "p" است.
- attack
- تنظیم زمان حمله (attack) بر حسب میلیثانیه. پیشفرض 50 میلیثانیه است. محدوده مجاز بین 1 تا 1000 میلیثانیه است.
- release
- تنظیم زمان رهاسازی (release) بر حسب میلیثانیه. پیشفرض 100 میلیثانیه است. محدوده مجاز بین 5 تا 2000 میلیثانیه است.
- channels
- تعیین اینکه کدام کانالها فیلتر شوند؛ به طور پیشفرض تمام کانالهای ("all") موجود در جریان صوتی فیلتر میشوند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
مثالها
- اعمال
فشردهسازی
طیفی بر
تمام
فرکانسها
با آستانه -50 dB
و نسبت 1:6:
adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
- مشابه بالا
اما با نسبت
1:2 و فیلتر
کردن تنها
کانال
مرکزی جلو (front
center):
adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
- اعمال گیت
نویز طیفی
بر تمامی
فرکانسها
با آستانه -85 dB
و با زمان
حمله کوتاه
و رهاسازی
کوتاه:
adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
- اعمال
گسترش (expansion)
طیفی بر
تمام
فرکانسها
با آستانه -10 dB
و نسبت 1:2:
adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
- اعمال
محدودکننده
(limiter) به
حداکثر -60 dB
برای تمامی
فرکانسها،
با حمله 2
میلیثانیه
و رهاسازی 10
میلیثانیه:
adrc=transfer='min(p,-60)':attack=2:release=10
adynamicequalizer
اعمال اکولایزر پویا بر روی جریان صوتی ورودی.
شرح گزینههای پذیرفتهشده در ادامه میآید.
- threshold
- تنظیم آستانه تشخیص مورد استفاده برای تحریک اکولایزر. تشخیص آستانه از فیلتر تشخیص استفاده میکند. مقدار پیشفرض 0 است. محدوده مجاز از 0 تا 100 است.
- dfrequency
- تنظیم فرکانس تشخیص بر حسب هرتز مورد استفاده برای فیلتر تشخیص جهت آغاز اکولایزر. مقدار پیشفرض 1000 Hz است. محدوده مجاز بین 2 و 1000000 Hz است.
- dqfactor
- تنظیم ضریب تشدید (رزونانس) تشخیص برای فیلتر تشخیص جهت آغاز اکولایزر. مقدار پیشفرض 1 است. محدوده مجاز از 0.001 تا 1000 است.
- tfrequency
- تنظیم فرکانس هدف فیلتر اکولایزاسیون. مقدار پیشفرض 1000 Hz است. محدوده مجاز بین 2 و 1000000 Hz است.
- tqfactor
- تنظیم ضریب رزونانس هدف برای فیلتر اکولایزر هدف. مقدار پیشفرض 1 است. محدوده مجاز از 0.001 تا 1000 است.
- attack
- تنظیم مقدار زمان بر حسب میلیثانیه که سیگنال حاصل از تشخیص باید فراتر از آستانه تشخیص برود پیش از آنکه اکولایزاسیون آغاز شود. پیشفرض 20 است. محدوده مجاز بین 1 و 2000 است.
- release
- تنظیم مقدار زمان بر حسب میلیثانیه که سیگنال حاصل از تشخیص باید به زیر آستانه تشخیص بیفتد پیش از آنکه اکولایزاسیون پایان یابد. پیشفرض 200 است. محدوده مجاز بین 1 و 2000 است.
- ratio
- تنظیم نسبتی که بهره اکولایزاسیون با آن افزایش مییابد. پیشفرض 1 است. محدوده مجاز بین 0 و 30 است.
- makeup
- تنظیم آفست جبرانی (makeup) که بهره اکولایزاسیون با آن افزایش مییابد. پیشفرض 0 است. محدوده مجاز بین 0 و 100 است.
- range
- تنظیم حداکثر میزان مجاز تضعیف/تقویت (cut/boost). پیشفرض 50 است. محدوده مجاز از 1 تا 200 است.
- mode
- تنظیم حالت عملکرد فیلتر؛ میتواند یکی از موارد زیر باشد:
- listen
- خروجی دادن تنها سیگنال تشخیصِ تفکیکشده.
- cutbelow
- کاهش فرکانسهای زیر آستانه تشخیص.
- cutabove
- کاهش فرکانسهای بالای آستانه تشخیص.
- boostbelow
- تقویت فرکانسهای زیر آستانه تشخیص.
- boostabove
- تقویت فرکانسهای بالای آستانه تشخیص.
حالت پیشفرض cutbelow است.
- dftype
- تنظیم نوع فیلتر تشخیص؛ میتواند یکی از موارد زیر باشد:
- bandpass
- lowpass
- highpass
- peak
نوع پیشفرض bandpass است.
- tftype
- تنظیم نوع فیلتر هدف؛ میتواند یکی از موارد زیر باشد:
نوع پیشفرض bell است.
- auto
- جمعآوری
خودکار
آستانه از
فیلتر
تشخیص. به
طور
پیشفرض
غیرفعال (disabled)
است. این
گزینه برای
تشخیص
آستانه در
بازه زمانی
خاصی از
جریان صوتی
ورودی مفید
است، که در
این حالت
مقدار
گزینه در
زمان اجرا
تغییر داده
میشود.
مقادیر در دسترس عبارتند از:
- precision
- تنظیم دقت مورد استفاده هنگام پردازش نمونهها.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
adynamicsmooth
اعمال هموارسازی پویا بر جریان صوتی ورودی.
شرح گزینههای پذیرفتهشده در ادامه میآید.
- sensitivity
- تنظیم میزان حساسیت به نوسانات فرکانسی. پیشفرض 2 است. محدوده مجاز از 0 تا 1e+06 است.
- basefreq
- تنظیم فرکانس پایه برای هموارسازی. مقدار پیشفرض 22050 است. محدوده مجاز از 2 تا 1e+06 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
aecho
اعمال پژواک (اکو) بر صدای ورودی.
پژواکها صداهای بازتابیدهشده هستند و میتوانند هنگام صحبت یا فریاد زدن در میان کوهها (و گاهی ساختمانهای بزرگ) به صورت طبیعی رخ دهند؛ جلوههای اکوی دیجیتال این رفتار را شبیهسازی میکنند و اغلب برای کمک به پر کردن صدای یک ساز یا خواننده به کار میروند. اختلاف زمانی میان سیگنال اصلی و بازتاب، تأخیر ("delay") نام دارد و بلندی سیگنال بازتابیده میزان میرایی/فروپاشی ("decay") است. پژواکهای متعدد میتوانند تأخیرها و فروپاشیهای متفاوتی داشته باشند.
شرح پارامترهای پذیرفتهشده در ادامه میآید.
- in_gain
- تنظیم بهره ورودی سیگنال بازتابیافته. پیشفرض 0.6 است.
- out_gain
- تنظیم بهره خروجی سیگنال بازتابیافته. پیشفرض 0.3 است.
- delays
- تنظیم فهرست بازههای زمانی بر حسب میلیثانیه میان سیگنال اصلی و بازتابها که با '|' از هم جدا شدهاند. محدوده مجاز برای هر "delay" برابر با "(0 - 90000.0]" است. پیشفرض 1000 است.
- decays
- تنظیم فهرست بلندی سیگنالهای بازتابیافته که با '|' از هم جدا شدهاند. محدوده مجاز برای هر "decay" برابر با "(0 - 1.0]" است. پیشفرض 0.5 است.
مثالها
- به گونهای
صدا دهد که
گویی دو
برابر
تعداد
سازهای در
حال
نواختن،
ساز نواخته
میشود:
aecho=0.8:0.88:60:0.4
- اگر تأخیر
بسیار
کوتاه
باشد،
صدایی شبیه
به نواختن
موسیقی
توسط یک
ربات (فلزی)
ایجاد
میشود:
aecho=0.8:0.88:6:0.4
- یک تأخیر
طولانیتر
شبیه به
کنسرت در
هوای آزاد
در میان
کوهها صدا
خواهد داد:
aecho=0.8:0.9:1000:0.3
- مشابه مورد
بالا اما با
یک کوه
دیگر:
aecho=0.8:0.9:1000|1800:0.3|0.25
aemphasis
فیلتر تأکید صدا (audio emphasis) محتوای برگرفته مستقیم از صفحههای گرامافون (LP) یا CDهای دارای تأکید را با منحنیهای فیلتر مختلف تولید یا بازسازی میکند. برای مثال جهت ضبط موسیقی روی وینیل، سیگنال ابتدا باید توسط یک فیلتر تغییر داده شود تا نقاط ضعف این رسانه ضبط تعدیل گردد. هنگامی که محتوا بازپخش میشود، باید فیلتر معکوس اعمال گردد تا اعوجاج پاسخ فرکانسی بازسازی شود.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم بهره ورودی.
- level_out
- تنظیم بهره خروجی.
- mode
- تنظیم حالت فیلتر. برای بازسازی محتوا از حالت "reproduction" (بازتولید) استفاده کنید، در غیر این صورت از حالت "production" (تولید) استفاده نمایید. پیشفرض حالت "reproduction" است.
- type
- تنظیم نوع فیلتر. رسانه را انتخاب میکند. میتواند یکی از موارد زیر باشد:
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
aeval
تغییر یک سیگنال صوتی بر اساس عبارتهای تعیینشده.
این فیلتر یک یا چند عبارت (یکی برای هر کانال) را میپذیرد، که ارزیابی شده و برای اصلاح سیگنال صوتی متناظر استفاده میشوند.
پارامترهای زیر را میپذیرد:
- exprs
- تنظیم فهرست عبارتها برای هر کانال جداگانه که با '|' از هم جدا شدهاند. اگر تعداد کانالهای ورودی بیشتر از تعداد عبارتها باشد، آخرین عبارتِ مشخصشده برای کانالهای خروجی باقیمانده استفاده میشود.
- channel_layout, c
- تنظیم چینش کانال خروجی. در صورت عدم تعیین، چینش کانال با تعداد عبارتها تعیین میشود. اگر روی same تنظیم شود، به طور پیشفرض از همان چینش کانال ورودی استفاده خواهد کرد.
هر عبارت در exprs میتواند شامل ثابتها و توابع زیر باشد:
- ch
- شماره کانال عبارت جاری
- n
- شماره نمونه ارزیابیشده، با شروع از 0
- s
- نرخ نمونهبرداری
- t
- زمان نمونه ارزیابیشده بر حسب ثانیه
- nb_in_channels
- nb_out_channels
- تعداد کانالهای ورودی و خروجی
- val(CH)
- مقدار کانال ورودی با شماره CH
توجه: این فیلتر کند است. برای پردازش سریعتر باید از یک فیلتر اختصاصی استفاده کنید.
مثالها
- نصف کردن
حجم صدا:
aeval=val(ch)/2:c=same
- معکوس کردن
فاز کانال
دوم:
aeval=val(0)|-val(1)
aexciter
یک اکسایتر (Exciter) برای تولید صداهای فرکانس بالا که در سیگنال اصلی وجود ندارند استفاده میشود. این کار با ایجاد اعوجاجهای هارمونیک در سیگنال انجام میشود که در دامنهای محدود شده و به سیگنال اصلی اضافه میگردند. یک اکسایتر لبه بالایی سیگنال صوتی را ارتقا میدهد بدون آنکه مانند یک اکولایزر صرفاً فرکانسهای بالاتر را تقویت کند، تا صدایی "شفافتر" یا "درخشانتر" ایجاد نماید.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم سطح ورودی پیش از پردازش سیگنال. محدوده مجاز از 0 تا 64 است. مقدار پیشفرض 1 است.
- level_out
- تنظیم سطح خروجی پس از پردازش سیگنال. محدوده مجاز از 0 تا 64 است. مقدار پیشفرض 1 است.
- amount
- تنظیم میزان هارمونیکهای اضافهشده به سیگنال اصلی. محدوده مجاز از 0 تا 64 است. مقدار پیشفرض 1 است.
- drive
- تنظیم میزان هارمونیکهای جدید تولیدشده. محدوده مجاز از 0.1 تا 10 است. مقدار پیشفرض 8.5 است.
- blend
- تنظیم اکتاو هارمونیکهای جدید ایجادشده. محدوده مجاز از -10 تا 10 است. مقدار پیشفرض 0 است.
- freq
- تنظیم حد پایین فرکانس تولید هارمونیکها بر حسب هرتز. محدوده مجاز از 2000 تا 12000 هرتز است. پیشفرض 7500 هرتز است.
- ceil
- تنظیم حد بالای فرکانس تولید هارمونیکها. محدوده مجاز از 9999 تا 20000 هرتز است. اگر مقدار کمتر از 10000 هرتز باشد، هیچ حدی اعمال نمیشود.
- listen
- بیصدا کردن سیگنال اصلی و خروجی دادن تنها هارمونیکهای افزودهشده. به طور پیشفرض غیرفعال است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
afade
اعمال جلوه محو شدن تدریجی ورودی/خروجی (fade-in/out) بر روی صدای ورودی.
شرح پارامترهای پذیرفتهشده در ادامه میآید.
- type, t
- تعیین نوع جلوه؛ میتواند "in" برای fade-in، یا "out" برای جلوه fade-out باشد. پیشفرض "in" است.
- start_sample, ss
- تعیین شماره نمونه آغازین برای شروع اعمال جلوه محوشدگی. پیشفرض 0 است.
- nb_samples, ns
- تعیین تعداد نمونههایی که جلوه محوشدگی باید ادامه یابد. در پایان جلوه fade-in، صدای خروجی همان حجم صدای ورودی را خواهد داشت، و در پایان انتقال fade-out، صدای خروجی سکوت خواهد بود. پیشفرض 44100 است.
- start_time, st
- تعیین زمان شروع جلوه محوشدگی. پیشفرض 0 است. مقدار باید به عنوان یک مدت زمان مشخص شود؛ برای نحو پذیرفتهشده، به بخش مدت زمان در راهنمای ffmpeg-utils(1) مراجعه کنید. در صورت تنظیم، این گزینه به جای start_sample استفاده میشود.
- duration, d
- تعیین مدت زمان جلوه محوشدگی. برای نحو پذیرفتهشده، به بخش مدت زمان در راهنمای ffmpeg-utils(1) مراجعه کنید. در پایان جلوه fade-in صدای خروجی همان حجم صدای ورودی را خواهد داشت، و در پایان انتقال fade-out صدای خروجی سکوت خواهد بود. به طور پیشفرض مدت زمان با nb_samples تعیین میشود. در صورت تنظیم، این گزینه به جای nb_samples استفاده میشود.
- curve
- تنظیم
منحنی برای
انتقال
محوشدگی.
مقادیر زیر را میپذیرد:
- tri
- انتخاب شیب مثلثی و خطی (پیشفرض)
- qsin
- انتخاب یکچهارم موج سینوسی
- hsin
- انتخاب نیمه موج سینوسی
- esin
- انتخاب موج سینوسی نمایی
- log
- انتخاب لگاریتمی
- ipar
- انتخاب سهمی معکوس
- qua
- انتخاب درجه دو (quadratic)
- cub
- انتخاب درجه سه (مکعبی / cubic)
- squ
- انتخاب ریشه دوم (جذر)
- cbr
- انتخاب ریشه سوم (فرجه سه)
- par
- انتخاب سهمی
- exp
- انتخاب نمایی
- iqsin
- انتخاب یکچهارم معکوس موج سینوسی
- ihsin
- انتخاب نیمه معکوس موج سینوسی
- dese
- انتخاب زینِ نمایی مضاعف (double-exponential seat)
- desi
- انتخاب سیگموئید نمایی مضاعف
- losi
- انتخاب سیگموئید لجستیک
- sinc
- انتخاب تابع سینک (sine cardinal)
- isinc
- انتخاب تابع سینک معکوس
- quat
- انتخاب درجه چهار (quartic)
- quatr
- انتخاب ریشه چهارم
- qsin2
- انتخاب مربعِ یکچهارم موج سینوسی
- hsin2
- انتخاب مربعِ نیمه موج سینوسی
- nofade
- بدون اعمال محوشدگی
- silence
- تنظیم بهره اولیه برای fade-in یا بهره نهایی برای fade-out. مقدار پیشفرض 0.0 است.
- unity
- تنظیم بهره اولیه برای fade-out یا بهره نهایی برای fade-in. مقدار پیشفرض 1.0 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
مثالها
- محو شدن
تدریجی
ورودی (Fade in) در
۱۵ ثانیه
اول صدا:
afade=t=in:ss=0:d=15
- محو شدن
تدریجی
خروجی (Fade out) در
۲۵ ثانیه
پایانی یک
صدای ۹۰۰
ثانیهای:
afade=t=out:st=875:d=25
afftdn
کاهش نوفه نمونههای صوتی با استفاده از FFT.
شرح پارامترهای پذیرفتهشده در ادامه میآید.
- noise_reduction, nr
- تنظیم میزان کاهش نوفه بر حسب دسیبل، محدوده مجاز 0.01 تا 97 است. مقدار پیشفرض 12 dB است.
- noise_floor, nf
- تنظیم کف نوفه (noise floor) بر حسب دسیبل، محدوده مجاز -80 تا -20 است. مقدار پیشفرض -50 dB است.
- noise_type, nt
- تنظیم نوع
نوفه.
مقادیر زیر را میپذیرد:
- white, w
- انتخاب نوفه سفید.
- vinyl, v
- انتخاب نوفه صفحه گرامافون (وینیل).
- shellac, s
- انتخاب نوفه صفحه شلاک (صفحه سنگی).
- custom, c
- انتخاب
نوفه
سفارشی،
تعریفشده
در گزینه
"bn".
مقدار پیشفرض نوفه سفید است.
- band_noise, bn
- تنظیم نمایه نوفه باند سفارشی برای هر یک از ۱۵ باند. باندها با ' ' یا '|' از هم جدا میشوند.
- residual_floor, rf
- تنظیم کف باقیمانده (residual floor) بر حسب دسیبل، محدوده مجاز -80 تا -20 است. مقدار پیشفرض -38 dB است.
- track_noise, tn
- فعالسازی ردیابی کف نوفه. به طور پیشفرض غیرفعال است. با فعال بودن این گزینه، کف نوفه به طور خودکار تنظیم میشود.
- track_residual, tr
- فعالسازی ردیابی باقیمانده. به طور پیشفرض غیرفعال است.
- output_mode, om
- تنظیم حالت
خروجی.
مقادیر زیر را میپذیرد:
- adaptivity, ad
- تنظیم ضریب تطبیقپذیری، تعیین میکند که تنظیمات بهره برای هر بین فرکانسی (frequency bin) با چه سرعتی تطبیق یابد. مقدار 0 تطبیق فوری را فعال میکند، در حالی که مقادیر بالاتر بسیار کندتر واکنش نشان میدهند. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.5 است.
- floor_offset, fo
- تنظیم ضریب آفست کف نوفه. این گزینه برای تعدیل آفست اعمالشده بر کف نوفه اندازهگیریشده استفاده میشود. این گزینه تنها زمانی مؤثر است که ردیابی کف نوفه فعال باشد. محدوده مجاز از -2.0 تا 2.0 است. مقدار پیشفرض 1.0 است.
- noise_link, nl
- تنظیم
پیوند نوفه
مورد
استفاده
برای صدای
چندکاناله.
مقادیر زیر را میپذیرد:
- band_multiplier, bm
- تنظیم ضریب چندبرابرکننده باند، تعیین میکند که باندها چقدر در بینهای فرکانسی پخش شوند. محدوده مجاز از 0.2 تا 5 است. مقدار پیشفرض 1.25 است.
- sample_noise, sn
- تغییر
وضعیت
دریافت و
اندازهگیری
نمایه نوفه
از صدای
ورودی.
مقادیر زیر را میپذیرد:
- start, begin
- آغاز دریافت نمونه نوفه.
- stop, end
- توقف
دریافت
نمونه نوفه
و
اندازهگیری
نمایه باند
نوفه جدید.
مقدار پیشفرض "none" است.
- gain_smooth, gs
- تنظیم شعاع مکانی هموارسازی بهره، مورد استفاده برای هموار کردن بهرههای اعمالشده بر هر بین فرکانسی. برای کاهش مصنوعات تصادفی نویز موسیقی مفید است. مقادیر بالاتر هموارسازی بهرهها را افزایش میدهد. محدوده مجاز از 0 تا 50 است. مقدار پیشفرض 0 است.
دستورات (Commands)
این فیلتر از برخی گزینههای فوقالذکر به عنوان دستورات پشتیبانی میکند.
مثالها
- کاهش نوفه
سفید به
میزان 10dB، و
استفاده از
کف نوفه
اندازهگیریشده
قبلی -40dB:
afftdn=nr=10:nf=-40
- کاهش نوفه
سفید به
میزان 10dB،
همچنین
تنظیم کف
نوفه اولیه
روی -80dB و
فعالسازی
ردیابی
خودکار کف
نوفه به
طوری که کف
نوفه در طول
پردازش به
تدریج
تغییر کند:
afftdn=nr=10:nf=-80:tn=1
- کاهش نوفه
به میزان 20dB،
با استفاده
از کف نوفه -40dB
و استفاده
از دستورات
برای ثبت
نمایه نوفه
در 0.4 ثانیه
اول صدای
ورودی:
asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
afftfilt
اعمال عبارات دلخواه بر روی نمونهها در حوزه فرکانس.
- real
- تنظیم عبارت بخش حقیقی (real) در حوزه فرکانس برای هر کانال مجزا با تفکیک توسط '|'. پیشفرض "re" است. اگر تعداد کانالهای ورودی بیشتر از تعداد عبارات باشد، آخرین عبارت تعیینشده برای کانالهای خروجی باقیمانده به کار میرود.
- imag
- تنظیم
عبارت بخش
موهومی (imaginary)
در حوزه
فرکانس
برای هر
کانال مجزا
با تفکیک
توسط '|'.
پیشفرض "im"
است.
هر عبارت در real و imag میتواند شامل ثوابت و توابع زیر باشد:
- sr
- نرخ نمونهبرداری
- b
- شماره بین (bin) فرکانسی جاری
- nb
- تعداد بینهای موجود
- ch
- شماره کانال عبارت جاری
- chs
- تعداد کانالها
- pts
- مقدار pts فریم جاری
- re
- بخش حقیقی جاری از بین فرکانسی کانال جاری
- im
- بخش موهومی جاری از بین فرکانسی کانال جاری
- real(b, ch)
- بازگرداندن مقدار بخش حقیقی بین فرکانسی در موقعیت (bin,channel)
- imag(b, ch)
- بازگرداندن مقدار بخش موهومی بین فرکانسی در موقعیت (bin,channel)
- win_size
- تنظیم اندازه پنجره. محدوده مجاز از 16 تا 131072 است. پیشفرض 4096 است.
- win_func
- تنظیم تابع
پنجره.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "hann" است.
- overlap
- تنظیم همپوشانی پنجره. در صورت تنظیم روی 1، همپوشانی توصیهشده برای تابع پنجره انتخابشده برگزیده میشود. پیشفرض 0.75 است.
مثالها (Examples)
- باقی
گذاشتن
تقریباً
فقط
فرکانسهای
پایین در
صدا:
afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
- اعمال جلوه
روباتیک
کردن:
afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
- اعمال جلوه
نجوا
(زمزمه):
afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
- اعمال شیفت
فاز:
afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
afir
اعمال یک فیلتر دلخواه با پاسخ ضربه متناهی (FIR).
این فیلتر برای اعمال فیلترهای طولانی FIR طراحی شده است، تا طول حداکثر ۶۰ ثانیه.
میتوان از آن به عنوان جزئی برای فیلترهای کراساوور دیجیتال، اکولایزاسیون محیط (اتاق)، حذف تداخل صوتی (cross talk)، سنتز میدان صوتی (wavefield synthesis)، شنیداریسازی (auralization)، آمبیوفونیک، آمبیسونیک و فضاسازی (spatialization) استفاده کرد.
این فیلتر از جریانهای بعد از جریان اول به عنوان ضرایب FIR استفاده میکند. اگر جریان غیراول شامل یک تک کانال باشد، برای تمام کانالهای ورودی در جریان اول استفاده خواهد شد، در غیر این صورت تعداد کانالها در جریان غیراول باید برابر با تعداد کانالهای جریان اول باشد.
این فیلتر پارامترهای زیر را میپذیرد:
- dry
- تنظیم بهره سیگنال دستنخورده (dry). این گزینه بهره ورودی را تنظیم میکند.
- wet
- تنظیم بهره سیگنال فیلترشده (wet). این گزینه بهره خروجی نهایی را تنظیم میکند.
- length
- تنظیم طول فیلتر پاسخ ضربه (IR). پیشفرض 1 است، به این معنی که کل IR پردازش میشود.
- gtype
- این گزینه منسوخ شده است و هیچ کاری انجام نمیدهد.
- irnorm
- تنظیم نرم اعمالی بر ضرایب IR قبل از فیلترسازی. محدوده مجاز از -1 تا 2 است. ضرایب IR با نرم بردار محاسبهشده که توسط این گزینه تعیین گردیده نرمالسازی میشوند. برای مقادیر منفی، هیچ نرمی محاسبه نشده و ضرایب IR اصلاً دستکاری نمیشوند. پیشفرض 1 است.
- irlink
- برای IR چندکاناله، اگر این گزینه روی true تنظیم شود، تمام کانالهای IR با حداکثر بهره اندازهگیریشده ضرایب تمامی کانالهای IR همانطور که با گزینه "irnorm" تنظیم شده نرمالسازی خواهند شد. در صورت غیرفعال بودن، تمام ضرایب IR در هر کانال IR به طور مستقل نرمالسازی میشوند. پیشفرض true است.
- irgain
- تنظیم بهره اعمالی بر ضرایب IR قبل از فیلترسازی. محدوده مجاز 0 تا 1 است. این بهره پس از هرگونه بهره اعمالشده توسط گزینه irnorm اعمال میشود.
- irfmt
- تنظیم فرمت جریان IR. میتواند "mono" یا "input" باشد. پیشفرض "input" است.
- maxir
- تنظیم حداکثر مدت مجاز فیلتر پاسخ ضربه بر حسب ثانیه. پیشفرض 30 ثانیه است. محدوده مجاز 0.1 تا 60 ثانیه است.
- response
- این گزینه منسوخ شده است و کاری انجام نمیدهد.
- channel
- این گزینه منسوخ شده است و کاری انجام نمیدهد.
- size
- این گزینه منسوخ شده است و کاری انجام نمیدهد.
- rate
- این گزینه منسوخ شده است و کاری انجام نمیدهد.
- minp
- تنظیم حداقل اندازه پارتیشن برای کانولوشن. پیشفرض 8192 است. محدوده مجاز از 1 تا 65536 است. مقادیر کمتر میزان تاخیر را به بهای مصرف بالاتر CPU کاهش میدهند.
- maxp
- تنظیم حداکثر اندازه پارتیشن برای کانولوشن. پیشفرض 8192 است. محدوده مجاز از 8 تا 65536 است. مقادیر کمتر ممکن است مصرف CPU را افزایش دهند.
- nbirs
- تنظیم تعداد جریانهای پاسخ ضربه ورودی که در زمان اجرا قابل تعویض هستند. محدوده مجاز از 1 تا 32 است. پیشفرض 1 است.
- ir
- تنظیم جریان IR مورد استفاده برای کانولوشن، با شروع از 0، که همیشه باید کمتر از مقدار تعیینشده توسط گزینه "nbirs" باشد. پیشفرض 0 است. این گزینه میتواند در حین اجرا از طریق commands تغییر یابد.
- precision
- تنظیم میزان دقتی که هنگام پردازش نمونهها استفاده میشود.
مقدار پیشفرض auto است.
- irload
- تنظیم زمان بارگذاری جریان IR. میتواند "init" یا "access" باشد. گزینه نخست تمام IRها را هنگام مقداردهی اولیه بارگذاری و آماده میکند، گزینه دوم یکبار در اولین دسترسی به IR مشخص این کار را انجام میدهد. پیشفرض "init" است.
مثالها (Examples)
- اعمال
ریورب به
جریان با
استفاده از
فایل
تککاناله
IR به عنوان
ورودی دوم،
دستور کامل
با استفاده
از ffmpeg:
ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
- اعمال
پردازش
استریوی
واقعی با
جریان
ورودی
استریو، و
دو پاسخ
ضربه
استریو
برای
کانالهای
چپ و راست؛
فایلهای
پاسخ ضربه
فایلهایی
با نام l_ir.wav و r_ir.wav
هستند و
مقدار
گزینه irnorm
تنظیم شده
است:
"pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3"
- مشابه مثال
بالا، اما
با تنظیم
صریح
"irgain" بر
روی مقدار
تخمینی و با
غیرفعال
بودن
"irnorm":
"pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
aformat
تنظیم محدودیتهای فرمت خروجی برای صدای ورودی. چارچوب مربوطه مناسبترین فرمت را به منظور به حداقل رساندن تبدیلها تطبیق خواهد داد.
این فیلتر پارامترهای زیر را میپذیرد:
- sample_fmts, f
- فهرستی جداشده با '|' از فرمتهای نمونه درخواستی.
- sample_rates, r
- فهرستی جداشده با '|' از نرخهای نمونهبرداری درخواستی.
- channel_layouts, cl
- فهرستی
جداشده با '|'
از
چیدمانهای
کانال
درخواستی.
برای نحو مورد نیاز به بخش Channel Layout در راهنمای ffmpeg-utils(1) مراجعه کنید.
در صورت حذف یک پارامتر، تمام مقادیر مجاز خواهند بود.
اجبار خروجی به استریوی 8 بیتی بدون علامت یا 16 بیتی علامتدار:
aformat=sample_fmts=u8|s16:channel_layouts=stereo
afreqshift
اعمال انتقال فرکانس (frequency shift) بر روی نمونههای صوتی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- shift
- تعیین میزان انتقال فرکانس. محدوده مجاز از -INT_MAX تا INT_MAX است. مقدار پیشفرض 0.0 است.
- level
- تنظیم بهره خروجی اعمالی بر خروجی نهایی. محدوده مجاز از 0.0 تا 1.0 است. مقدار پیشفرض 1.0 است.
- order
- تنظیم مرتبه فیلتر مورد استفاده برای فیلترسازی. محدوده مجاز از 1 تا 16 است. مقدار پیشفرض 8 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
afwtdn
کاهش نویز باندپهن از نمونههای ورودی با استفاده از تبدیل ویولت (Wavelets).
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- sigma
- تنظیم سیگمای نویز، محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0 است. این گزینه شدت نویززدایی اعمالی بر نمونههای ورودی را کنترل میکند. مفیدترین راه برای تنظیم این گزینه از طریق دسیبل است، مثلاً -45dB.
- levels
- تنظیم تعداد سطوح تجزیه ویولت. محدوده مجاز از 1 تا 12 است. مقدار پیشفرض 10 است. تنظیم این گزینه روی مقدار بسیار کم باعث عملکرد بسیار ضعیف در نویززدایی میشود.
- wavet
- تنظیم نوع ویولت برای تجزیه فریم ورودی. آنها بر اساس تعداد ضرایب، از کمترین به بیشترین مرتب شدهاند. ضرایب بیشتر به معنای سرعت کمتر در فیلترسازی، اما در کل کیفیت بهتر است. ویولتهای موجود عبارتند از:
- percent
- تنظیم درصد نویززدایی کامل. محدوده مجاز از 0 تا 100 درصد است. مقدار پیشفرض 85 درصد یا نویززدایی جزئی است.
- profile
- در صورت فعال بودن، نخستین فریم ورودی به عنوان نمایه (پروفایل) نویز استفاده خواهد شد. اگر نمونههای فریم اول حاوی سیگنال غیرنویز باشند کارایی بسیار ضعیف خواهد بود.
- adaptive
- در صورت فعال بودن، فریمهای ورودی برای بررسی حضور نویز تحلیل میشوند. اگر نویز با احتمال بالا شناسایی شود، نمایه فریم ورودی برای پردازش فریمهای بعدی استفاده خواهد شد، تا زمانی که فریم نویز جدیدی شناسایی شود.
- samples
- تنظیم اندازه فریم منفرد بر حسب تعداد نمونهها. محدوده مجاز از 512 تا 65536 است. اندازه فریم پیشفرض 8192 نمونه است.
- softness
- تنظیم نرمی اعمالشده درون تابع آستانهگذاری. محدوده مجاز از 0 تا 10 است. نرمی پیشفرض 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
agate
گیت (gate) عمدتاً برای کاهش بخشهای ضعیفتر یک سیگنال استفاده میشود. این نوع پردازش سیگنال، نویزهای مزاحم میان سیگنالهای مفید را کاهش میدهد.
گیتینگ از طریق تشخیص سطح بلندی زیر یک threshold (آستانه) انتخابی و تقسیم آن بر ضریب تعیینشده با ratio انجام میشود. کف نویز از طریق range تعیین میشود. از آنجا که دستکاری دقیق سیگنال باعث اعوجاج شکل موج میگردد، میتوان کاهش را در طول زمان تسطیح کرد. این کار با تنظیم attack و release صورت میگیرد.
پارامتر attack مشخص میکند سیگنال چه مدت باید زیر آستانه بماند پیش از آنکه کاهشی رخ دهد، و release زمانی را تعیین میکند که سیگنال باید بالای آستانه باشد تا میزان کاهش دوباره تقلیل یابد. سیگنالهای کوتاهتر از زمان حمله انتخابشده دستنخورده باقی خواهند ماند.
- level_in
- تنظیم سطح ورودی پیش از فیلترسازی. پیشفرض 1 است. محدوده مجاز از 0.015625 تا 64 است.
- mode
- تنظیم حالت عملکرد. میتواند "upward" یا "downward" باشد. پیشفرض "downward" است. اگر روی حالت "upward" تنظیم شود، بخشهای بالاتر سیگنال تقویت شده و محدوده دینامیکی در جهت بالا گسترش مییابد. در غیر این صورت، در حالت "downward" بخشهای ضعیفتر سیگنال کاهش مییابند.
- range
- تنظیم سطح کاهش بهره هنگامی که سیگنال زیر آستانه است. پیشفرض 0.06125 است. محدوده مجاز از 0 تا 1 است. تنظیم این گزینه روی 0 کاهش را غیرفعال میکند و فیلتر مانند یک اکسپندر رفتار خواهد کرد.
- threshold
- اگر سیگنال به بالای این سطح برسد، کاهش بهره متوقف (رها) میشود. پیشفرض 0.125 است. محدوده مجاز از 0 تا 1 است.
- ratio
- تنظیم نسبتی که سیگنال با آن کاهش مییابد. پیشفرض 2 است. محدوده مجاز از 1 تا 9000 است.
- attack
- مدت زمان بر حسب میلیثانیه که سیگنال باید بالای آستانه برود پیش از آنکه کاهش بهره متوقف شود. پیشفرض 20 میلیثانیه است. محدوده مجاز از 0.01 تا 9000 است.
- release
- مدت زمان بر حسب میلیثانیه که سیگنال باید زیر آستانه بیفتد پیش از آنکه کاهش دوباره افزایش یابد. پیشفرض 250 میلیثانیه است. محدوده مجاز از 0.01 تا 9000 است.
- makeup
- تنظیم میزان تقویت سیگنال پس از پردازش. پیشفرض 1 است. محدوده مجاز از 1 تا 64 است.
- knee
- منحنی کردن زانوی تیز در اطراف آستانه به منظور ورود نرمتر به کاهش بهره. پیشفرض 2.828427125 است. محدوده مجاز از 1 تا 8 است.
- detection
- انتخاب اینکه آیا سیگنال دقیق برای تشخیص لحاظ شود یا سیگنالی شبیه RMS. پیشفرض "rms" است. میتواند "peak" یا "rms" باشد.
- link
- انتخاب اینکه آیا میانگین سطح میان تمام کانالها بر کاهش اثر بگذارد یا کانال بلندتر. پیشفرض "average" است. میتواند "average" یا "maximum" باشد.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
aiir
اعمال یک فیلتر دلخواه با پاسخ ضربه نامتناهی (IIR).
این فیلتر پارامترهای زیر را میپذیرد:
- zeros, z
- تنظیم ضرایب B/صورت/صفرها/انعکاس (reflection).
- poles, p
- تنظیم ضرایب A/مخرج/قطبها/نردبانی (ladder).
- gains, k
- تنظیم بهرههای کانالها.
- dry_gain
- تنظیم بهره ورودی (سیگنال دستنخورده).
- wet_gain
- تنظیم بهره خروجی (سیگنال فیلترشده).
- format, f
- تنظیم فرمت ضرایب.
- process, r
- تنظیم نوع پردازش.
- precision, e
- تنظیم دقت فیلترسازی.
- normalize, n
- نرمالسازی ضرایب فیلتر؛ به طور پیشفرض فعال است. فعال کردن آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- mix
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- response
- نمایش پاسخ فرکانسی IR، شامل دامنه (سرخابی)، فاز (سبز) و تاخیر گروهی (زرد) در جریان ویدیویی اضافی. به طور پیشفرض غیرفعال است.
- channel
- تنظیم اینکه پاسخ فرکانسی برای کدام کانال IR نمایش داده شود. به طور پیشفرض کانال نخست نمایش داده میشود. این گزینه تنها زمانی استفاده میشود که response فعال باشد.
- size
- تنظیم اندازه جریان ویدیو. این گزینه تنها زمانی استفاده میشود که response فعال باشد.
ضرایب در فرمتهای "tf" و "sf" با فاصله از هم جدا میشوند و به ترتیب صعودی هستند.
ضرایب در فرمت "zp" با فاصله از هم جدا میشوند و ترتیب ضرایب اهمیتی ندارد. ضرایب در فرمت "zp" اعداد مختلط با واحد موهومی i هستند.
ضرایب و بهرههای متفاوت میتوانند برای هر کانال ارائه شوند، در این حالت از '|' برای تفکیک ضرایب یا بهرهها استفاده کنید. آخرین ضرایب ارائهشده برای تمام کانالهای باقیمانده به کار خواهند رفت.
مثالها (Examples)
- اعمال
فیلتر
شکافی (notch)
بیضوی ۲
قطبی در
حدود ۵۰۰۰
هرتز برای
نرخ
نمونهبرداری
۴۸۰۰۰ هرتز:
aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
- مشابه مثال
بالا اما در
فرمت "zp":
aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
- اعمال
فیلتر
پایینگذر
باترورث
نرمالشده
آنالوگ
مرتبه ۳، با
استفاده از
فرمت تابع
انتقال
آنالوگ:
aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
alimiter
لیمیتور از بالا رفتن سیگنال ورودی از یک آستانه مطلوب جلوگیری میکند. این لیمیتور از فناوری نگاهبهجلو (lookahead) بهره میبرد تا از اعوجاج سیگنال شما جلوگیری نماید. بدین معنی که پس از پردازش سیگنال، تأخیر کوچکی وجود دارد. به یاد داشته باشید که تأخیری که ایجاد میکند، همان زمان حمله (attack) تعیینشده است.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم بهره ورودی. پیشفرض 1 است.
- level_out
- تنظیم بهره خروجی. پیشفرض 1 است.
- limit
- اجازه ندادن به سیگنالهای بالاتر از این سطح جهت عبور از لیمیتور. پیشفرض 1 است.
- attack
- لیمیتور در این مقدار زمان بر حسب میلیثانیه به سطح تضعیف خود خواهد رسید. پیشفرض 5 میلیثانیه است.
- release
- بازگشت از حالت محدودسازی به ضریب تضعیف 1.0 در این مقدار زمان بر حسب میلیثانیه. پیشفرض 50 میلیثانیه است.
- asc
- هنگامی که کاهش بهره همواره مورد نیاز باشد، کنترل خودکار رهاسازی (ASC) وظیفه رهاسازی به یک سطح کاهش میانگین را به جای رسیدن به کاهش 0 در زمان رهاسازی بر عهده میگیرد.
- asc_level
- انتخاب میزان اثرگذاری ASC بر زمان رهاسازی؛ مقدار 0 به معنای تقریباً بدون تغییر در زمان رهاسازی است در حالی که 1 زمانهای رهاسازی بالاتری تولید میکند.
- level
- تراز خودکار سطح سیگنال خروجی. به طور پیشفرض فعال است. در صورت فعال بودن، این گزینه صدا را به 0dB نرمالسازی میکند.
- latency
- جبران تأخیر ایجادشده بر اثر بافر نگاهبهجلو که توسط پارامتر attack تنظیم شده است. همچنین تخلیه دادههای معتبر صوتی در بافر نگاهبهجلو هنگامی که جریان به انتهای فایل (EOF) میرسد.
بسته به تنظیمات برگزیده، پیشنهاد میشود پیش از اعمال این فیلتر، نرخ نمونهبرداری ورودی را با aresample به میزان 2x یا 4x افزایش دهید.
allpass
اعمال یک فیلتر همهگذر دو قطبی با فرکانس مرکزی (بر حسب هرتز) frequency، و پهنای فیلتر width. یک فیلتر همهگذر رابطه فرکانس به فاز صدا را بدون تغییر رابطه فرکانس به دامنه آن دگرگون میسازد.
این فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس بر حسب هرتز.
- width_type, t
- تنظیم روش تعیین پهنای باند فیلتر.
- width, w
- تعیین پهنای باند یک فیلتر در واحدهای width_type.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالها جهت فیلترسازی؛ به طور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ به طور پیشفرض غیرفعال است. فعال کردن آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- order, o
- تنظیم مرتبه فیلتر، میتواند 1 یا 2 باشد. پیشفرض 2 است.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس همهگذر. نحو دستور عبارت است از: "frequency"
- width_type, t
- تغییر width_type همهگذر. نحو دستور عبارت است از: "width_type"
- width, w
- تغییر پهنای همهگذر. نحو دستور عبارت است از: "width"
- mix, m
- تغییر mix همهگذر. نحو دستور عبارت است از: "mix"
aloop
حلقه کردن نمونههای صوتی.
این فیلتر گزینههای زیر را میپذیرد:
- loop
- تنظیم تعداد دورهای حلقه. تنظیم این مقدار روی -1 منجر به حلقههای نامحدود میشود. پیشفرض 0 است.
- size
- تنظیم حداکثر تعداد نمونهها. پیشفرض 0 است.
- start
- تنظیم نخستین نمونه حلقه. پیشفرض 0 است.
- time
- تنظیم زمان شروع حلقه بر حسب ثانیه. تنها زمانی استفاده میشود که گزینه موسوم به start روی -1 تنظیم شده باشد.
amerge
ادغام دو یا چند جریان صوتی در یک جریان چندکاناله واحد.
تمام ورودیها باید نرخ نمونهبرداری و فرمت یکسانی داشته باشند.
اگر مدتزمان ورودیها یکسان نباشد، خروجی همگام با کوتاهترین جریان متوقف خواهد شد.
این فیلتر گزینههای زیر را میپذیرد:
- inputs
- تنظیم تعداد ورودیها. پیشفرض 2 است.
- layout_mode
- این گزینه نحوه تعیین چیدمان کانالهای خروجی و بازآرایی احتمالی کانالهای صوتی حین ادغام را کنترل میکند.
- legacy
- این همان
حالتی است
که فیلتر در
گذشته
رفتار
میکرد، از
این رو
پیشفرض
است.
اگر چیدمان کانالهای ورودی مشخص و مجزا (disjoint) باشند و بنابراین سازگار تلقی گردند، چیدمان کانالهای خروجی متناسب با آن تنظیم شده و کانالها در صورت لزوم مجدداً مرتب میشوند. اگر چیدمان کانالهای ورودی مجزا نباشند، برخی از آنها ناشناخته باشند، یا از چیدمانهای ویژه کانال، مانند ambisonics استفاده کنند، خروجی ابتدا تمامی کانالهای ورودی نخست و سپس تمامی کانالهای ورودی دوم را به همان ترتیب در بر خواهد داشت، و چیدمان کانالهای خروجی همان مقدار پیشفرض متناظر با تعداد کل کانالها خواهد بود.
برای نمونه، اگر ورودی نخست 2.1 (FL+FR+LF) باشد و ورودی دوم FC+BL+BR باشد، خروجی در قالب 5.1 خواهد بود و کانالها به ترتیب زیر چیده میشوند: a1, a2, b1, a3, b2, b3 (که a1 کانال اول ورودی نخست و b1 کانال اول ورودی دوم است).
از سوی دیگر، اگر هر دو ورودی استریو باشند، کانالهای خروجی به ترتیب پیشفرض خواهند بود: a1, a2, b1, b2، و چیدمان کانالها به طور اختیاری روی 4.0 تنظیم میشود، که ممکن است مقدار مورد انتظار باشد یا نباشد.
- reset
- این حالت
چیدمان
کانالهای
ورودی را
نادیده
میگیرد و
هیچ
بازآرایی
روی
کانالها
انجام
نمیدهد.
خروجی
ابتدا شامل
تمامی
کانالهای
ورودی اول،
سپس تمامی
کانالهای
ورودی دوم
به همان
ترتیب و به
همین ترتیب
خواهد بود.
چیدمان کانال خروجی صرفاً تعداد کل کانالها را معین خواهد کرد.
- normal
- این حالت اطلاعات نام و تخصیص کانالها را از کانالهای ورودی حفظ کرده و هیچ بازآرایی روی کانالها صورت نمیدهد. خروجی شامل تمام کانالهای ورودی نخست، سپس تمامی کانالهای ورودی دوم به همان ترتیب و غیره خواهد بود.
مثالها (Examples)
- ادغام دو
فایل مونو
به یک جریان
استریو:
amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
- چندین
ادغام با
فرض ۱ جریان
ویدیو و ۶
جریان صدا
در input.mkv:
ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
amix
میکس چندین ورودی صوتی درون یک خروجی منفرد.
توجه داشته باشید که این فیلتر تنها از نمونههای ممیز شناور پشتیبانی میکند (فیلترهای صوتی amerge و pan از فرمتهای زیادی پشتیبانی دارند). اگر ورودی amix دارای نمونههای عدد صحیح باشد، فیلتر aresample به طور خودکار درج میشود تا تبدیل به نمونههای شناور را انجام دهد.
این فیلتر پارامترهای زیر را میپذیرد:
- inputs
- تعداد ورودیها. در صورت عدم تعیین، مقدار پیشفرض 2 است.
- duration
- نحوه تعیین پایان جریان (end-of-stream).
- dropout_transition
- زمان گذار بر حسب ثانیه، برای بازنرمالسازی حجم صدا هنگامی که یک جریان ورودی خاتمه مییابد. مقدار پیشفرض 2 ثانیه است.
- weights
- تعیین وزن هر جریان صوتی ورودی به صورت دنبالهای از اعداد جداشده با فاصله. اگر وزنهای کمتری نسبت به تعداد ورودیها مشخص شود، آخرین وزن به ورودیهای باقیمانده اختصاص مییابد. وزن پیشفرض برای هر ورودی 1 است.
- normalize
- مقیاسبندی همیشگی ورودیها به جای انجام صرف جمع نمونهها. در صورتی که ورودیها قبل یا بعد از فیلترسازی نرمالسازی نشده باشند و این گزینه غیرفعال باشد، مراقب اعوجاج و برش شدید (heavy clipping) باشید. به طور پیشفرض فعال است.
مثالها (Examples)
- این دستور ۳
جریان صوتی
ورودی را به
یک خروجی
واحد با
همان مدت
زمان ورودی
نخست و زمان
گذار افت ۳
ثانیه میکس
میکند:
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
- این دستور
یک جریان
ورودی وکال
و یک جریان
ورودی
موسیقی را
درون یک
خروجی واحد
با مدت زمان
طولانیترین
ورودی میکس
میکند.
صدای
موسیقی
یکچهارم
صدای وکال
وزن خواهد
داشت، و
ورودیها
نرمالسازی
نمیشوند:
ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- weights
- normalize
- نحو مشابه گزینه با همین نام است.
amultiply
ضرب جریان صوتی نخست در جریان صوتی دوم و ذخیره نتیجه در جریان صوتی خروجی. عمل ضرب از طریق ضرب هر نمونه از جریان نخست در نمونه واقع در همان موقعیت از جریان دوم انجام میشود.
با این ضرب مؤلفهبهمؤلفه (element-wise)، میتوان اثرات محو شدن دامنه (amplitude fades) و مدولاسیون دامنه (amplitude modulations) ایجاد کرد.
anequalizer
اکولایزر چندبانده پارامتریک مرتبه بالا برای هر کانال.
این فیلتر پارامترهای زیر را میپذیرد:
- params
- رشته این گزینه در این قالب است: "cchn f=cf w=w g=g t=f | ..." هر باند اکولایزر با '|' تفکیک میشود.
- chn
- تنظیم شماره کانالی که اکولایزاسیون بر آن اعمال خواهد شد. اگر ورودی فاقد آن کانال باشد، این مدخل نادیده گرفته میشود.
- f
- تنظیم فرکانس مرکزی باند. اگر ورودی فاقد آن فرکانس باشد، این مدخل نادیده گرفته میشود.
- w
- تنظیم پهنای باند بر حسب هرتز.
- g
- تنظیم بهره باند بر حسب دسیبل (dB).
- t
- تنظیم نوع فیلتر برای باند، اختیاری است و میتواند مقادیر زیر باشد:
- 0
- باترورث (Butterworth)، این مقدار پیشفرض است.
- 1
- چبیشف نوع ۱ (Chebyshev type 1).
- 2
- چبیشف نوع ۲ (Chebyshev type 2).
- curves
- با فعالسازی این گزینه، پاسخ فرکانسی anequalizer در یک جریان ویدیویی نمایش داده میشود.
- size
- تنظیم اندازه جریان ویدیو. تنها در صورتی سودمند است که گزینه curves فعال باشد.
- mgain
- تنظیم حداکثر بهرهای که نمایش داده خواهد شد. تنها در صورتی سودمند است که گزینه curves فعال باشد. تنظیم این مقدار بر روی یک عدد معقول، امکان نمایش بهره ناشی از باندهای همسایه را فراهم میسازد که بسیار به یکدیگر نزدیک هستند و از این رو هنگام فعال بودن هر دو، بهره بالاتری ایجاد میکنند.
- fscale
- تنظیم مقیاس فرکانس برای ترسیم پاسخ فرکانسی در خروجی ویدیو. میتواند خطی (linear) یا لگاریتمی (logarithmic) باشد. پیشفرض لگاریتمی است.
- colors
- تنظیم رنگ منحنی هر کانال که قرار است در جریان ویدیویی نمایش یابد. این یک فهرست از نام رنگهاست که با فاصله یا با '|' جدا شدهاند. رنگهای ناشناخته یا جاافتاده با رنگ سفید جایگزین خواهند شد.
مثالها (Examples)
- •
- کاهش بهره
به میزان 10
برای
فرکانس
مرکزی 200
هرتز و
پهنای 100
هرتز برای ۲
کانال نخست
با استفاده
از فیلتر
چبیشف نوع
۱:
anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- change
- تغییر
پارامترهای
فیلتر
موجود. نحو
دستورات
عبارت است
از:
"fN|f=freq|w=width|g=gain"
شناسه fN شماره فیلتر موجود است، با شروع از 0؛ در صورت نبود چنین فیلتری خطا بازگردانده میشود. freq پارامتر فرکانس جدید را تنظیم میکند. width پارامتر پهنای جدید را بر حسب هرتز تنظیم میکند. gain پارامتر بهره جدید را بر حسب دسیبل تنظیم میکند.
فراخوانی کامل فیلتر با asendcmd میتواند شبیه به این باشد: asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
anlmdn
کاهش نویز باندپهن در نمونههای صوتی با بهرهگیری از الگوریتم میانگینهای غیرمحلی (Non-Local Means).
هر نمونه با جستجو برای دیگر نمونهها با زمینههای مشابه تطبیق داده میشود. این شباهت زمینه با مقایسه وصلههای (patches) پیرامونی آنها به اندازه p تعریف میگردد. وصلهها در ناحیهای به شعاع r پیرامون نمونه جستجو میشوند.
این فیلتر گزینههای زیر را میپذیرد:
- strength, s
- تنظیم شدت نویززدایی. محدوده مجاز از 0.00001 تا 10000 است. مقدار پیشفرض 0.00001 است.
- patch, p
- تنظیم مدت زمان شعاع وصله. محدوده مجاز از 1 تا 100 میلیثانیه است. مقدار پیشفرض 2 میلیثانیه است.
- research, r
- تنظیم مدت زمان شعاع جستجو. محدوده مجاز از 2 تا 300 میلیثانیه است. مقدار پیشفرض 6 میلیثانیه است.
- output, o
- تنظیم حالت
خروجی.
این گزینه مقادیر زیر را میپذیرد:
- smooth, m
- تنظیم ضریب هموارسازی. مقدار پیشفرض 11 است. محدوده مجاز از 1 تا 1000 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
anlmf, anlms
اعمال الگوریتم حداقل میانگین (مربعات|توان چهارم) نرمالشده بر جریان صوتی اول با استفاده از جریان صوتی دوم.
این فیلتر تطبیقی جهت تقلید از یک فیلتر مطلوب با یافتن ضرایب فیلتری به کار میرود که مربوط به تولید حداقل میانگین مربعات سیگنال خطا هستند (تفاضل میان ورودی صوتی دوم مطلوب و سیگنال واقعی، یعنی ورودی صوتی اول).
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- order
- تنظیم مرتبه فیلتر.
- mu
- تنظیم مقدار mu فیلتر.
- eps
- تنظیم مقدار eps فیلتر.
- leakage
- تنظیم ضریب نشتی (leakage) فیلتر.
- out_mode
- این گزینه مقادیر زیر را میپذیرد:
- precision
- تنظیم میزان دقت مورد استفاده حین پردازش نمونهها.
مثالها (Examples)
- •
- یکی از
کاربردهای
پرشمار این
فیلتر کاهش
نویز است؛
صدای ورودی
با همان
نمونههایی
فیلتر
میشود که
به مقدار
ثابتی به
تأخیر
افتادهاند،
نمونهای
از آن برای
صدای
استریو:
asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها به استثنای گزینه "order" پشتیبانی میکند.
anull
عبور دادن منبع صوتی بدون تغییر به خروجی.
apad
پد کردن انتهای جریان صوتی با سکوت.
این گزینه میتواند همراه با -shortest در ffmpeg به کار رود تا جریانهای صوتی را تا طولی برابر با جریان ویدیو بسط دهد.
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- packet_size
- تنظیم اندازه بسته سکوت. مقدار پیشفرض 4096 است.
- pad_len
- تنظیم تعداد نمونههای سکوت جهت افزودن به انتها. پس از رسیدن به این مقدار، جریان خاتمه مییابد. این گزینه با whole_len مانعةالجمع است.
- whole_len
- تنظیم حداقل تعداد کل نمونهها در جریان صوتی خروجی. اگر این مقدار بزرگتر از طول صدای ورودی باشد، سکوت به انتها اضافه میشود تا به این مقدار برسد. این گزینه با pad_len مانعةالجمع است.
- pad_dur
- تعیین مدت زمان نمونههای سکوت جهت اضافه شدن. برای نحو پذیرفتهشده به بخش Time duration در راهنمای ffmpeg-utils(1) مراجعه کنید. تنها زمانی که روی مقدار نامنفی تنظیم شود به کار میرود.
- whole_dur
- تعیین حداقل مدت زمان کل در جریان صوتی خروجی. برای نحو پذیرفتهشده به بخش Time duration در راهنمای ffmpeg-utils(1) مراجعه کنید. تنها زمانی به کار میرود که روی مقدار نامنفی تنظیم شود. اگر مقدار بزرگتر از طول صدای ورودی باشد، سکوت به انتها افزوده میشود تا به آن مقدار برسد. این گزینه با pad_dur مانعةالجمع است.
اگر هیچ یک از گزینههای pad_len، whole_len، pad_dur یا whole_dur تنظیم نشوند، فیلتر سکوت را به صورت نامحدود به انتهای جریان ورودی اضافه خواهد کرد.
توجه داشته باشید که در ffmpeg 4.4 و پیش از آن، مقدار صفر برای pad_dur یا whole_dur نیز باعث میشد فیلتر سکوت را به طور نامحدود اضافه کند.
مثالها (Examples)
- افزودن
۱۰۲۴ نمونه
سکوت به
انتهای
ورودی:
apad=pad_len=1024
- اطمینان از
اینکه
خروجی صدا
حداقل شامل
۱۰۰۰۰
نمونه
باشد، و در
صورت لزوم
پد کردن
ورودی با
سکوت:
apad=whole_len=10000
- استفاده از
ffmpeg برای پد
کردن ورودی
صدا با
سکوت، به
طوری که
جریان
ویدیو
همواره
کوتاهترین
نتیجه را
بدهد و
هنگام
استفاده از
گزینه shortest در
فایل خروجی
تا انتها
تبدیل شود:
ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
aphaser
افزودن جلوه فیزر (phasing) به صدای ورودی.
فیلتر فیزر مجموعهای از قلهها و درهها در طیف فرکانسی ایجاد میکند. موقعیت قلهها و درهها مدوله میشود تا در طول زمان تغییر کنند و یک جلوه روبش (sweeping) پدید آورند.
شرح پارامترهای پذیرفتهشده در ادامه آمده است.
- in_gain
- تنظیم بهره ورودی. پیشفرض 0.4 است.
- out_gain
- تنظیم بهره خروجی. پیشفرض 0.74 است.
- delay
- تنظیم تاخیر بر حسب میلیثانیه. پیشفرض 3.0 است.
- decay
- تنظیم میرایی (decay). پیشفرض 0.4 است.
- speed
- تنظیم سرعت مدولاسیون بر حسب هرتز. پیشفرض 0.5 است.
- type
- تنظیم نوع
مدولاسیون.
پیشفرض
مثلثی (triangular)
است.
این گزینه مقادیر زیر را میپذیرد:
aphaseshift
اعمال شیفت فاز بر روی نمونههای صوتی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- shift
- تعیین شیفت فاز. محدوده مجاز از -1.0 تا 1.0 است. مقدار پیشفرض 0.0 است.
- level
- تنظیم بهره خروجی اعمالی بر خروجی نهایی. محدوده مجاز از 0.0 تا 1.0 است. مقدار پیشفرض 1.0 است.
- order
- تنظیم مرتبه فیلتر مورد استفاده برای فیلترسازی. محدوده مجاز از 1 تا 16 است. مقدار پیشفرض 8 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
apsnr
اندازهگیری نسبت اوج سیگنال صوتی به نویز (Audio Peak Signal-to-Noise Ratio).
این فیلتر دو جریان صوتی را به عنوان ورودی دریافت کرده و جریان صوتی نخست را در خروجی میدهد. نتایج بر حسب دسیبل (dB) برای هر کانال در انتهای هر یک از ورودیها ارائه میشوند.
apsyclip
اعمال برش روانشنیداری (Psychoacoustic clipper) بر روی جریان صوتی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم بهره ورودی. پیشفرض 1 است. محدوده مجاز [0.015625 - 64] است.
- level_out
- تنظیم بهره خروجی. پیشفرض 1 است. محدوده مجاز [0.015625 - 64] است.
- clip
- تنظیم مقدار شروع برش. مقدار پیشفرض 0dBFS یا 1 است.
- diff
- خروجی دادن صرف نمونههای تفاضل؛ برای شنیدن اعوجاجهای ایجادشده سودمند است. به طور پیشفرض غیرفعال است.
- adaptive
- تنظیم شدت اعوجاج تطبیقی اعمالشده. مقدار پیشفرض 0.5 است. محدوده مجاز از 0 تا 1 است.
- iterations
- تنظیم تعداد تکرارهای برشدهنده روانشنیداری. محدوده مجاز از 1 تا 20 است. مقدار پیشفرض 10 است.
- level
- تراز خودکار سطح سیگنال خروجی. پیشفرض غیرفعال است. در صورت فعال بودن، صدا را به 0dBFS نرمالسازی میکند.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
apulsator
پالسساز صوتی چیزی مابین یک اتوپَنِر (autopanner) و یک ترمولو (tremolo) است. اما همچنین میتواند جلوههای استریوی جالبی تولید کند. پالساتور حجم صدای کانال چپ و راست را بر اساس یک نوسانساز بسامد پایین (LFO) با شکلموجهای گوناگون و فازهای شیفتیافته دگرگون میکند. این فیلتر توانایی تعیین یک آفست میان کانال چپ و راست را دارد. آفست 0 بدین معنی است که هر دو شکل LFO بر یکدیگر منطبق هستند. کانال چپ و راست به یک اندازه تغییر میکنند - یک ترمولوی سنتی. آفست 50% بدین معناست که شکل کانال راست دقیقاً در فاز شیفت یافته است (یا به اندازه نصف بسامد به عقب منتقل شده) - پالساتور به عنوان یک اتوپَنِر عمل میکند. در مقدار 1 هر دو منحنی مجدداً منطبق میشوند. هر تنظیمی در این بین، شیفت فاز را بدون فاصله میان تمام مراحل جابجا کرده و صداهای "گذرنده" با شکلموجهای سینوسی و مثلثی تولید مینماید. هرچه آفست را به 1 نزدیکتر تنظیم کنید (با شروع از 0.5)، سیگنال با سرعت بیشتری از بلندگوی چپ به راست عبور میکند.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم بهره ورودی. پیشفرض 1 است. محدوده مجاز [0.015625 - 64] است.
- level_out
- تنظیم بهره خروجی. پیشفرض 1 است. محدوده مجاز [0.015625 - 64] است.
- mode
- تنظیم شکل موجی که LFO استفاده خواهد کرد. میتواند یکی از موارد: sine، triangle، square، sawup یا sawdown باشد. پیشفرض sine است.
- amount
- تنظیم مدولاسیون. تعیین میزان اثرگذاری LFO بر سیگنال اصلی.
- offset_l
- تنظیم آفست کانال چپ. پیشفرض 0 است. محدوده مجاز [0 - 1] است.
- offset_r
- تنظیم آفست کانال راست. پیشفرض 0.5 است. محدوده مجاز [0 - 1] است.
- width
- تنظیم پهنای پالس. پیشفرض 1 است. محدوده مجاز [0 - 2] است.
- timing
- تنظیم حالت زمانبندی ممکن. میتواند یکی از موارد: bpm، ms یا hz باشد. پیشفرض hz است.
- bpm
- تنظیم ضرب بر دقیقه (bpm). پیشفرض 120 است. محدوده مجاز [30 - 300] است. تنها در صورتی به کار میرود که timing بر روی bpm تنظیم شده باشد.
- ms
- تنظیم میلیثانیه. پیشفرض 500 است. محدوده مجاز [10 - 2000] است. تنها در صورتی به کار میرود که timing بر روی ms تنظیم شده باشد.
- hz
- تنظیم بسامد بر حسب هرتز. پیشفرض 2 است. محدوده مجاز [0.01 - 100] است. تنها در صورتی به کار میرود که timing بر روی hz تنظیم شده باشد.
aresample
بازنمونهبرداری (resample) صدای ورودی با پارامترهای معین، با استفاده از کتابخانه libswresample. در صورت عدم تعیین پارامترها، فیلتر به صورت خودکار بین ورودی و خروجی خود تبدیل را انجام خواهد داد.
این فیلتر همچنین قادر است دادههای صوتی را کشیده یا فشرده کند تا با برچسبهای زمانی تطبیق یابند، یا سکوت تزریق کند / صدا را برش دهد تا با برچسبهای زمانی منطبق شوند، ترکیبی از هر دو را اجرا کند یا هیچکدام را انجام ندهد.
فیلتر نحو [sample_rate:]resampler_options را میپذیرد، که در آن sample_rate بیانگر نرخ نمونهبرداری و resampler_options فهرستی از جفتهای key=value جداشده با ":" است. برای فهرست کامل گزینههای پشتیبانیشده به بخش "Resampler Options" در راهنمای ffmpeg-resampler(1) مراجعه کنید.
مثالها (Examples)
- بازنمونهبرداری
صدای ورودی
به نرخ
۴۴۱۰۰ هرتز:
aresample=44100
- کشیدن/فشردهسازی
نمونهها
بر اساس
برچسبهای
زمانی
دادهشده،
با حداکثر
جبران ۱۰۰۰
نمونه در
ثانیه:
aresample=async=1000
areverse
معکوس کردن یک کلیپ صوتی.
هشدار: این فیلتر برای بافر کردن کل کلیپ به حافظه نیاز دارد، بنابراین برش زدن (trimming) توصیه میشود.
مثالها (Examples)
- •
- دریافت ۵
ثانیه اول
یک کلیپ و
معکوس کردن
آن.
atrim=end=5,areverse
arls
اعمال الگوریتم حداقل مربعات بازگشتی (Recursive Least Squares) بر روی جریان صوتی نخست با استفاده از جریان صوتی دوم.
این فیلتر تطبیقی جهت تقلید از یک فیلتر مطلوب با یافتن بازگشتی ضرایب فیلتری به کار میرود که مربوط به تولید حداقل تابع هزینه مربعات خطی وزندار سیگنال خطا هستند (تفاضل میان ورودی صوتی دوم مطلوب و سیگنال واقعی، ورودی صوتی اول).
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- order
- تنظیم مرتبه فیلتر.
- lambda
- تنظیم ضریب فراموشی (forgetting factor).
- delta
- تنظیم ضریب جهت مقداردهی اولیه ماتریس کوواریانس داخلی.
- out_mode
- تنظیم نمونههای خروجی فیلتر. مقادیر زیر را میپذیرد:
- precision
- تنظیم میزان دقت مورد استفاده حین پردازش نمونهها.
arnndn
کاهش نویز گفتار با استفاده از شبکههای عصبی بازگشتی (RNN).
این فیلتر گزینههای زیر را میپذیرد:
- model, m
- تنظیم فایل مدل آموزشدیده جهت بارگذاری. این گزینه همواره الزامی است.
- mix
- تنظیم میزان آمیختن نمونههای فیلترشده در خروجی نهایی. محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 1 است. مقادیر منفی ویژه هستند؛ آنها تعیین میکنند چه مقدار از نویز فیلترشده در خروجی نهایی فیلتر حفظ شود. این گزینه را روی -1 تنظیم کنید تا نویز واقعی حذفشده از سیگنال ورودی را بشنوید.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
asdr
اندازهگیری نسبت سیگنال به اعوجاج صوتی (Audio Signal-to-Distortion Ratio).
این فیلتر دو جریان صوتی را به عنوان ورودی دریافت کرده و جریان صوتی نخست را در خروجی میدهد. نتایج بر حسب دسیبل (dB) برای هر کانال در انتهای هر یک از ورودیها ارائه میشوند.
asetnsamples
تنظیم تعداد نمونهها در هر فریم صوتی خروجی.
آخرین بسته خروجی ممکن است حاوی تعداد متفاوتی نمونه باشد، زیرا هنگامی که صدای ورودی پایان خود را اعلان میکند، فیلتر تمامی نمونههای باقیمانده را تخلیه (flush) خواهد کرد.
این فیلتر گزینههای زیر را میپذیرد:
- nb_out_samples, n
- تنظیم تعداد نمونهها برای هر فریم صوتی خروجی. این عدد به عنوان تعداد نمونهها برای هر کانال در نظر گرفته میشود. مقدار پیشفرض 1024 است.
- pad, p
- اگر روی 1 تنظیم شود، فیلتر فریم صوتی نهایی را با صفرها پد خواهد کرد، به گونهای که آخرین فریم حاوی همان تعداد نمونههای فریمهای پیشین باشد. مقدار پیشفرض 1 است.
برای نمونه، جهت تنظیم تعداد نمونههای هر فریم بر روی ۱۲۳۴ و غیرفعال کردن پدینگ برای فریم آخر، از این دستور استفاده کنید:
asetnsamples=n=1234:p=0
asetrate
تنظیم نرخ نمونهبرداری بدون دگرگونسازی دادههای PCM. این امر منجر به تغییر در سرعت و زیروبمی (pitch) صدا خواهد شد.
این فیلتر گزینههای زیر را میپذیرد:
- sample_rate, r
- تنظیم نرخ نمونهبرداری خروجی. پیشفرض 44100 هرتز است.
ashowinfo
نمایش یک خط حاوی اطلاعات گوناگون برای هر فریم صوتی ورودی. صدای ورودی اصلاح یا دگرگون نمیشود.
خط نمایشدادهشده شامل دنبالهای از جفتهای کلید/مقدار به فرم key:value است.
مقادیر زیر در خروجی نمایش داده میشوند:
- n
- شماره (ترتیبی) فریم ورودی، با شروع از 0.
- pts
- برچسب زمانی نمایش (PTS) فریم ورودی بر حسب واحدهای مبنای زمان؛ مبنای زمان به پد ورودی فیلتر وابسته است و معمولاً 1/sample_rate میباشد.
- pts_time
- برچسب زمانی نمایش فریم ورودی بر حسب ثانیه.
- fmt
- فرمت نمونه.
- chlayout
- چیدمان کانال (channel layout).
- rate
- نرخ نمونهبرداری برای فریم صوتی.
- nb_samples
- تعداد نمونهها (برای هر کانال) در فریم.
- checksum
- چکسام Adler-32 (چاپشده به صورت هگزادسیمال) از دادههای صوتی. برای صدای چندصفحهای (planar)، دادهها به گونهای در نظر گرفته میشوند که گویی تمام صفحات به هم متصل شدهاند.
- plane_checksums
- فهرستی از چکسامهای Adler-32 برای هر صفحه از دادهها.
asisdr
اندازهگیری نسبت سیگنال به اعوجاج صوتی نامتغیر با مقیاس (Audio Scaled-Invariant Signal-to-Distortion Ratio).
این فیلتر دو جریان صوتی را به عنوان ورودی دریافت کرده و جریان صوتی نخست را در خروجی میدهد. نتایج بر حسب دسیبل (dB) برای هر کانال در انتهای هر یک از ورودیها ارائه میشوند.
asoftclip
اعمال برش نرم صوتی (soft clipping).
برش نرم نوعی جلوه اعوجاج است که در آن دامنه سیگنال در امتداد یک منحنی نرم اشباع میشود، به جای شکل ناگهانی و خشن برش سخت (hard-clipping).
این فیلتر گزینههای زیر را میپذیرد:
- type
- تنظیم نوع
برش نرم.
این گزینه مقادیر زیر را میپذیرد:
- threshold
- تنظیم آستانهای که برش از آنجا آغاز میشود. مقدار پیشفرض 0dB یا 1 است.
- output
- تنظیم بهره اعمالی بر خروجی. مقدار پیشفرض 0dB یا 1 است.
- param
- تنظیم پارامتر اضافی که تابع سیگموئید را کنترل میکند.
- oversample
- تنظیم ضریب بیشنمونهبرداری (oversampling factor).
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
aspectralstats
نمایش اطلاعات آماری حوزه فرکانس درباره کانالهای صوتی. آمارها برای هر کانال صوتی و برای هر فریم صوتی محاسبه و به عنوان متادیتا ذخیره میشوند.
این فیلتر گزینههای زیر را میپذیرد:
- win_size
- تنظیم طول پنجره بر حسب نمونهها. مقدار پیشفرض 2048 است. محدوده مجاز از 32 تا 65536 است.
- win_func
- تنظیم تابع
پنجره.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "hann" است.
- overlap
- تنظیم همپوشانی پنجره. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.5 است.
- measure
- انتخاب پارامترهایی که اندازهگیری میشوند. کلیدهای متادیتا میتوانند به عنوان فلگ استفاده شوند، مقدار پیشفرض all است که همه پارامترها را اندازهگیری میکند. مقدار none تمام اندازهگیریها را غیرفعال میسازد.
فهرستی از هر کلید متادیتا در ادامه آمده است:
asr
تشخیص خودکار گفتار (Automatic Speech Recognition).
این فیلتر از PocketSphinx برای تشخیص گفتار بهره میبرد. برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-pocketsphinx" پیکربندی کنید.
این فیلتر گزینههای زیر را میپذیرد:
- rate
- تنظیم نرخ نمونهبرداری صدای ورودی. پیشفرض 16000 است. این مقدار باید با مدلهای گفتار همخوانی داشته باشد، در غیر این صورت نتایج نامناسبی حاصل میشود.
- hmm
- تنظیم دایرکتوری حاوی فایلهای مدل صوتی (acoustic model).
- dict
- تنظیم فرهنگ لغت تلفظ.
- lm
- تنظیم فایل مدل زبان.
- lmctl
- تنظیم مجموعه مدل زبان.
- lmname
- تعیین اینکه کدام مدل زبان به کار گرفته شود.
- logfn
- تنظیم خروجی برای پیامهای لاگ.
این فیلتر گفتار شناساییشده را به صورت متادیتای فریم "lavfi.asr.text" صادر میکند.
astats
نمایش اطلاعات آماری حوزه زمان درباره کانالهای صوتی. آمارها برای هر کانال صوتی محاسبه و نمایش داده میشوند و، در صورت امکان، یک مقدار کلی (overall) نیز ارائه میگردد.
این فیلتر گزینههای زیر را میپذیرد:
- length
- طول پنجره کوتاه بر حسب ثانیه، که برای اندازهگیری قله و دره RMS استفاده میشود. پیشفرض 0.05 (۵۰ میلیثانیه) است. محدوده مجاز "[0 - 10]" است.
- metadata
- تنظیم
تزریق
متادیتا.
تمام
کلیدهای
متادیتا با
پیشوند
"lavfi.astats.X"
مشخص
میشوند،
که در آن
"X"
شماره
کانال با
شروع از 1 یا
رشته
"Overall" است.
پیشفرض
غیرفعال
است.
کلیدهای موجود برای هر کانال عبارتند از: Bit_depth Crest_factor DC_offset Dynamic_range Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Peak_count Abs_Peak_count Peak_level RMS_difference RMS_peak RMS_trough Zero_crossings Zero_crossings_rate
و برای "Overall": Bit_depth DC_offset Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Number_of_samples Peak_count Abs_Peak_count Peak_level RMS_difference RMS_level RMS_peak RMS_trough
برای نمونه، یک کلید کامل شبیه "lavfi.astats.1.DC_offset" یا "lavfi.astats.Overall.Peak_count" است.
برای شرح کلیدها بخش زیر را مطالعه کنید.
- reset
- تنظیم تعداد فریمهایی که آمارهای تجمعی پیش از بازنشانی روی آنها محاسبه میشوند. پیشفرض غیرفعال است.
- measure_perchannel
- انتخاب پارامترهایی که برای هر کانال اندازهگیری میشوند. کلیدهای متادیتا میتوانند به عنوان فلگ استفاده شوند؛ پیشفرض all است که همه چیز را اندازهگیری میکند. مقدار none تمام اندازهگیریهای مختص کانال را غیرفعال میسازد.
- measure_overall
- انتخاب پارامترهایی که به صورت کلی اندازهگیری میشوند. کلیدهای متادیتا میتوانند به عنوان فلگ استفاده شوند؛ پیشفرض all است که همه چیز را اندازهگیری میکند. مقدار none تمام اندازهگیریهای کلی را غیرفعال میسازد.
شرح کلیدهای اندازهگیری در ادامه آمده است:
- none
- بدون اندازهگیری
- all
- تمام اندازهگیریها
- Bit_depth
- عمق بیتی کلی صدا، یعنی تعداد بیتهای استفادهشده برای هر نمونه
- Crest_factor
- نسبت استاندارد سطح اوج به سطح RMS (توجه: بر حسب دسیبل نیست)
- DC_offset
- میانگین جابجایی دامنه از صفر
- Dynamic_range
- محدوده دینامیکی اندازهگیریشده صدا بر حسب دسیبل (dB)
- Entropy
- آنتروپی اندازهگیریشده در کل صدا؛ آنتروپی با مقداری نزدیک به 1.0 معمولاً برای نویز سفید اندازه گرفته میشود
- Flat_factor
- فاکتور تختی (یعنی نمونههای متوالی با مقدار یکسان) سیگنال در سطوح اوج آن (یعنی Min_level یا Max_level)
- Max_difference
- حداکثر تفاضل میان دو نمونه متوالی
- Max_level
- حداکثر سطح نمونه
- Mean_difference
- میانگین تفاضل میان دو نمونه متوالی، یعنی میانگین تکتک اختلافات بین دو نمونه پیدرپی
- Min_difference
- حداقل تفاضل میان دو نمونه متوالی
- Min_level
- حداقل سطح نمونه
- Noise_floor
- حداقل اوج محلی اندازهگیریشده بر حسب dBFS روی یک پنجره کوتاه
- Noise_floor_count
- تعداد دفعاتی (نه تعداد نمونهها) که سیگنال به Noise floor رسیده است
- Number_of_Infs
- تعداد نمونههای با مقدار بینهایت
- Number_of_NaNs
- تعداد نمونههای با مقدار NaN (غیرعدد)
- Number_of_denormals
- تعداد نمونههای با مقدار زیرنرمال (subnormal)
- Number_of_samples
- تعداد نمونهها
- Peak_count
- تعداد دفعاتی (نه تعداد نمونهها) که سیگنال به Min_level یا Max_level رسیده است
- Abs_Peak_count
- تعداد دفعاتی که قدر مطلق نمونههای گرفتهشده از سیگنال به حداکثر مقدار مطلق Min_level و Max_level رسیده است
- Peak_level
- سطح اوج استاندارد اندازهگیریشده بر حسب dBFS
- RMS_difference
- جذر میانگین مربعات تفاضل میان دو نمونه متوالی
- RMS_level
- سطح استاندارد RMS اندازهگیریشده بر حسب dBFS
- RMS_peak
- RMS_trough
- مقادیر اوج و فرود برای سطح RMS اندازهگیریشده در طول یک پنجره کوتاه، اندازهگیریشده بر حسب dBFS.
- Zero crossings
- تعداد نقاطی که در آنها شکلموج از محور سطح صفر عبور میکند
- Zero crossings rate
- نرخ گذر از صفر نسبت به تعداد نمونههای صوتی
asubboost
تقویت بسامدهای سابووفر.
این فیلتر گزینههای زیر را میپذیرد:
- dry
- تنظیم بهره سیگنال اصلی، چه مقدار از سیگنال اصلی حفظ شود. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 1.0 است.
- wet
- تنظیم بهره سیگنال فیلترشده، چه مقدار از سیگنال فیلترشده حفظ شود. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 1.0 است.
- boost
- تنظیم ضریب حداکثر تقویت. محدوده مجاز از 1 تا 12 است. مقدار پیشفرض 2 است.
- decay
- تنظیم مقدار بهره میرایی خط تاخیر. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.0 است.
- feedback
- تنظیم مقدار بهره بازخورد خط تاخیر. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.9 است.
- cutoff
- تنظیم فرکانس قطع بر حسب هرتز. محدوده مجاز از 50 تا 900 است. مقدار پیشفرض 100 است.
- slope
- تنظیم میزان شیب برای فرکانس قطع. محدوده مجاز 0.0001 تا 1 است. مقدار پیشفرض 0.5 است.
- delay
- تنظیم تاخیر. محدوده مجاز از 1 تا 100 است. مقدار پیشفرض 20 است.
- channels
- تنظیم کانالها برای پردازش. مقدار پیشفرض تمام کانالهای موجود است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
asubcut
برش بسامدهای سابووفر.
این فیلتر امکان تنظیم یک شیب تندتر و سفارشی را نسبت به فیلتر بالاگذر فراهم میسازد و از این رو قادر است محتوای فرکانسی در باند توقف را بیشتر تضعیف کند.
این فیلتر گزینههای زیر را میپذیرد:
- cutoff
- تنظیم فرکانس قطع بر حسب هرتز. محدوده مجاز از 2 تا 200 است. مقدار پیشفرض 20 است.
- order
- تنظیم مرتبه فیلتر. مقادیر موجود از 3 تا 20 است. مقدار پیشفرض 10 است.
- level
- تنظیم سطح بهره ورودی. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
asupercut
برش بسامدهای بسیار بالا (super frequencies).
این فیلتر گزینههای زیر را میپذیرد:
- cutoff
- تنظیم فرکانس قطع بر حسب هرتز. محدوده مجاز از 20000 تا 192000 است. مقدار پیشفرض 20000 است.
- order
- تنظیم مرتبه فیلتر. مقادیر موجود از 3 تا 20 است. مقدار پیشفرض 10 است.
- level
- تنظیم سطح بهره ورودی. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
asuperpass
اعمال فیلتر میانگذر باترورث مرتبه بالا.
این فیلتر گزینههای زیر را میپذیرد:
- centerf
- تنظیم فرکانس مرکزی بر حسب هرتز. محدوده مجاز از 2 تا 999999 است. مقدار پیشفرض 1000 است.
- order
- تنظیم مرتبه فیلتر. مقادیر موجود از 4 تا 20 است. مقدار پیشفرض 4 است.
- qfactor
- تنظیم ضریب کیفیت (Q-factor). محدوده مجاز از 0.01 تا 100 است. مقدار پیشفرض 1 است.
- level
- تنظیم سطح بهره ورودی. محدوده مجاز از 0 تا 2 است. مقدار پیشفرض 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
asuperstop
اعمال فیلتر میانناگذر باترورث مرتبه بالا.
این فیلتر گزینههای زیر را میپذیرد:
- centerf
- تنظیم فرکانس مرکزی بر حسب هرتز. محدوده مجاز از 2 تا 999999 است. مقدار پیشفرض 1000 است.
- order
- تنظیم مرتبه فیلتر. مقادیر موجود از 4 تا 20 است. مقدار پیشفرض 4 است.
- qfactor
- تنظیم ضریب کیفیت (Q-factor). محدوده مجاز از 0.01 تا 100 است. مقدار پیشفرض 1 است.
- level
- تنظیم سطح بهره ورودی. محدوده مجاز از 0 تا 2 است. مقدار پیشفرض 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
atempo
تنظیم سرعت ضربآهنگ (tempo) صدا.
این فیلتر دقیقاً یک پارامتر را میپذیرد، که همان تمپوی صدا است. در صورت عدم تعیین، فیلتر تمپوی اسمی 1.0 را فرض خواهد کرد. تمپو باید در محدوده [0.5, 100.0] باشد.
توجه داشته باشید که تمپوی بالاتر از 2 برخی نمونهها را رد میکند تا اینکه آنها را در هم بیامیزد. اگر به هر دلیلی این مسئله جای نگرانی دارد، همواره میتوان چند نمونه از atempo را به صورت زنجیرهای به کار بست تا تمپوی حاصل مطلوب به دست آید.
مثالها (Examples)
- کند کردن
صدا به
میزان 80%
تمپو:
atempo=0.8
- تند کردن
صدا به
میزان 300%
تمپو:
atempo=3
- تند کردن
صدا به
میزان 300%
تمپو با
زنجیرهسازی
دو فیلتر atempo:
atempo=sqrt(3),atempo=sqrt(3)
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- tempo
- تغییر ضریب مقیاس تمپوی فیلتر. نحو دستور عبارت است از: "tempo"
atilt
اعمال فیلتر شیب طیفی (spectral tilt) بر روی جریان صوتی.
این فیلتر هرگونه شیب افت طیفی را بر روی هر باند فرکانسی مشخصشده اعمال میکند.
این فیلتر گزینههای زیر را میپذیرد:
- freq
- تنظیم فرکانس مرکزی شیب بر حسب هرتز. پیشفرض 10000 هرتز است.
- slope
- تنظیم جهت شیب. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- width
- تنظیم پهنای شیب. پیشفرض 1000 است. محدوده مجاز از 100 تا 10000 است.
- order
- تنظیم مرتبه فیلتر شیب.
- level
- تنظیم سطح بلندی ورودی. محدوده مجاز از 0 تا 4 است. پیشفرض 1 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای بالا به عنوان commands پشتیبانی میکند.
atrim
برش دادن ورودی به گونهای که خروجی حاوی یک زیربخش پیوسته از ورودی باشد.
این فیلتر پارامترهای زیر را میپذیرد:
- start
- برچسب زمانی (بر حسب ثانیه) از شروع بخشی که باید نگهداری شود. یعنی نمونه صوتی با برچسب زمانی start نخستین نمونه در خروجی خواهد بود.
- end
- تعیین زمان اولین نمونه صوتی که دور ریخته میشود، یعنی نمونه صوتی بلافاصله قبل از نمونه دارای برچسب زمانی end، آخرین نمونه در خروجی خواهد بود.
- start_pts
- مشابه start، به استثنای اینکه این گزینه برچسب زمانی شروع را بر حسب نمونهها به جای ثانیه تنظیم میکند.
- end_pts
- مشابه end، به استثنای اینکه این گزینه برچسب زمانی پایان را بر حسب نمونهها به جای ثانیه تنظیم میکند.
- duration
- حداکثر مدتزمان خروجی بر حسب ثانیه.
- start_sample
- شماره نخستین نمونهای که باید به خروجی فرستاده شود.
- end_sample
- شماره نخستین نمونهای که باید دور ریخته شود.
گزینههای start، end و duration به صورت مشخصات مدت زمان بیان میشوند؛ به بخش Time duration در راهنمای ffmpeg-utils(1) مراجعه کنید.
توجه داشته باشید که دو مجموعه نخست گزینههای start/end و گزینه duration به برچسب زمانی فریم نگاه میکنند، در حالی که گزینههای دارای پسوند _sample صرفاً نمونههایی را که از فیلتر عبور میکنند میشمارند. بنابراین start/end_pts و start/end_sample هنگامی که برچسبهای زمانی اشتباه یا غیردقیق باشند یا از صفر آغاز نشوند، نتایج متفاوتی به بار میآورند. همچنین توجه داشته باشید که این فیلتر برچسبهای زمانی را دگرگون نمیسازد. اگر میخواهید برچسبهای زمانی خروجی از صفر شروع شوند، فیلتر asetpts را پس از فیلتر atrim قرار دهید.
اگر چندین گزینه شروع یا پایان تنظیم شوند، این فیلتر تلاش میکند به صورت حریصانه (greedy) عمل کرده و تمام نمونههایی را که حداقل با یکی از محدودیتهای تعیینشده تطابق دارند حفظ کند. جهت نگهداری صرفاً بخشی که به طور همزمان با تمامی محدودیتها تطابق دارد، چندین فیلتر atrim را به هم زنجیره کنید.
مقادیر پیشفرض به گونهای هستند که تمامی ورودی حفظ میشود. بنابراین امکان تنظیم مثلاً صرف مقادیر پایان وجود دارد تا هر آنچه پیش از زمان مشخصشده است نگه داشته شود.
مثالها:
- دور
انداختن
همه چیز به
جز دقیقه
دوم ورودی:
ffmpeg -i INPUT -af atrim=60:120
- نگهداشتن
صرفاً ۱۰۰۰
نمونه نخست:
ffmpeg -i INPUT -af atrim=end_sample=1000
axcorrelate
محاسبه همبستگی متقابل پنجرهای نرمالشده میان دو جریان صوتی ورودی.
نمونههای حاصل همواره بین -1 و 1 (شامل هر دو) هستند. اگر نتیجه 1 باشد، بدین معناست که دو نمونه ورودی در آن بخش انتخابی به شدت همبسته هستند. نتیجه 0 به معنای عدم وجود هیچگونه همبستگی میان آنهاست. اگر نتیجه -1 باشد، بدین معناست که دو نمونه ورودی ناهمفاز هستند، که یعنی یکدیگر را خنثی میکنند.
این فیلتر گزینههای زیر را میپذیرد:
- size
- تنظیم اندازه بخشی که همبستگی متقابل روی آن محاسبه میشود. پیشفرض 256 است. محدوده مجاز از 2 تا 131072 است.
- algo
- تنظیم الگوریتم همبستگی متقابل. میتواند "slow" یا "fast" یا "best" باشد. پیشفرض "best" است. الگوریتم سریع فرض میکند مقادیر میانگین روی هر بخش مفروض همواره صفر هستند و بنابراین به محاسبات بسیار کمتری نیاز دارد. این فرض به طور کلی صحیح نیست، اما برای جریانهای صوتی متداول معتبر است.
مثالها (Examples)
- •
- محاسبه
همبستگی
میان
کانالها
در یک جریان
صوتی
استریو:
ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
bandpass
اعمال یک فیلتر میانگذر دو قطبی باترورث با فرکانس مرکزی frequency، و پهنای باند (در نقطه 3dB) width. گزینه csg بهره ثابت دامنه جانبی (بهره اوج = Q) را به جای حالت پیشفرض یعنی بهره اوج ثابت 0dB برمیگزیند. افت فیلتر با نرخ 6dB به ازای هر اکتاو (20dB به ازای هر دهه) است.
این فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس مرکزی فیلتر. پیشفرض 3000 است.
- csg
- بهره ثابت دامنه جانبی (constant skirt gain) در صورت تنظیم روی 1. پیشفرض 0 است.
- width_type, t
- تنظیم روش تعیین پهنای باند فیلتر.
- width, w
- تعیین پهنای باند فیلتر در واحدهای width_type.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالها جهت فیلترسازی؛ به طور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ به طور پیشفرض غیرفعال است. فعالسازی آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازه
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
روی مقداری
به اندازه
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر قطع
میشود)،
فیلترسازی
دارای فاز
خطی خواهد
شد؛ در غیر
این صورت
اگر به
اندازه
کافی بزرگ
نباشد
صرفاً
آرتیفکتهای
ناخوشایندی
ایجاد
خواهد کرد.
توجه داشته باشید که تاخیر فیلتر هنگام تنظیم روی یک مقدار غیر صفر دقیقاً به اندازه همین تعداد نمونه خواهد بود.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس میانگذر. نحو دستور عبارت است از: "frequency"
- width_type, t
- تغییر width_type میانگذر. نحو دستور عبارت است از: "width_type"
- width, w
- تغییر پهنای میانگذر. نحو دستور عبارت است از: "width"
- mix, m
- تغییر mix میانگذر. نحو دستور عبارت است از: "mix"
bandreject
اعمال یک فیلتر میانناگذر دو قطبی باترورث با فرکانس مرکزی frequency، و پهنای باند (در نقطه 3dB) width. افت فیلتر با نرخ 6dB به ازای هر اکتاو (20dB به ازای هر دهه) است.
این فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس مرکزی فیلتر. پیشفرض 3000 است.
- width_type, t
- تنظیم روش تعیین پهنای باند فیلتر.
- width, w
- تعیین پهنای باند فیلتر در واحدهای width_type.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالها جهت فیلترسازی؛ به طور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ به طور پیشفرض غیرفعال است. فعالسازی آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازه
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
روی مقداری
به اندازه
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر قطع
میشود)،
فیلترسازی
دارای فاز
خطی خواهد
شد؛ در غیر
این صورت
اگر به
اندازه
کافی بزرگ
نباشد
صرفاً
آرتیفکتهای
ناخوشایندی
ایجاد
خواهد کرد.
توجه داشته باشید که تاخیر فیلتر هنگام تنظیم روی یک مقدار غیر صفر دقیقاً به اندازه همین تعداد نمونه خواهد بود.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس میانناگذر. نحو دستور عبارت است از: "frequency"
- width_type, t
- تغییر width_type میانناگذر. نحو دستور عبارت است از: "width_type"
- width, w
- تغییر پهنای میانناگذر. نحو دستور عبارت است از: "width"
- mix, m
- تغییر mix میانناگذر. نحو دستور عبارت است از: "mix"
bass, lowshelf
تقویت یا برش بسامدهای بم (پایین) صدا با بهرهگیری از یک فیلتر شلوینگ دو قطبی با پاسخی شبیه به کنترلهای تن یک سیستم های-فای (hi-fi) استاندارد. این امر به عنوان اکولایزاسیون شلوینگ (shelving EQ) نیز شناخته میشود.
این فیلتر گزینههای زیر را میپذیرد:
- gain, g
- ارائه میزان بهره در 0 هرتز. محدوده مفید آن در حدود -20 (برای یک برش عمیق) تا +20 (برای یک تقویت قوی) است. هنگام استفاده از بهره مثبت، مراقب پدیده برش سیگنال (clipping) باشید.
- frequency, f
- تنظیم فرکانس مرکزی فیلتر؛ از این رو میتوان از آن جهت گسترش یا کاهش محدوده بسامدی که قرار است تقویت یا برش داده شود استفاده کرد. مقدار پیشفرض 100 هرتز است.
- width_type, t
- تنظیم روش تعیین پهنای باند فیلتر.
- width, w
- تعیین میزان تندی گذار شلف فیلتر.
- poles, p
- تنظیم تعداد قطبها. پیشفرض 2 است.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالها جهت فیلترسازی؛ به طور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ به طور پیشفرض غیرفعال است. فعالسازی آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازه
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
روی مقداری
به اندازه
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر قطع
میشود)،
فیلترسازی
دارای فاز
خطی خواهد
شد؛ در غیر
این صورت
اگر به
اندازه
کافی بزرگ
نباشد
صرفاً
آرتیفکتهای
ناخوشایندی
ایجاد
خواهد کرد.
توجه داشته باشید که تاخیر فیلتر هنگام تنظیم روی یک مقدار غیر صفر دقیقاً به اندازه همین تعداد نمونه خواهد بود.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس bass. نحو دستور عبارت است از: "frequency"
- width_type, t
- تغییر width_type گزینه bass. نحو دستور عبارت است از: "width_type"
- width, w
- تغییر پهنای bass. نحو دستور عبارت است از: "width"
- gain, g
- تغییر بهره bass. نحو دستور عبارت است از: "gain"
- mix, m
- تغییر mix گزینه bass. نحو دستور عبارت است از: "mix"
biquad
اعمال یک فیلتر IIR بایکواد (biquad) با ضرایب دادهشده. به طوری که b0، b1، b2 و a0، a1، a2 به ترتیب ضرایب صورت و مخرج هستند، و گزینههای channels و c مشخص میکنند کدام کانالها فیلتر شوند؛ به طور پیشفرض تمامی کانالهای موجود فیلتر میشوند.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- a0
- a1
- a2
- b0
- b1
- b2
- تغییر پارامتر بایکواد. نحو دستور عبارت است از: "value"
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالها جهت فیلترسازی؛ به طور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ به طور پیشفرض غیرفعال است. فعالسازی آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازه
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
روی مقداری
به اندازه
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر قطع
میشود)،
فیلترسازی
دارای فاز
خطی خواهد
شد؛ در غیر
این صورت
اگر به
اندازه
کافی بزرگ
نباشد
صرفاً
آرتیفکتهای
ناخوشایندی
ایجاد
خواهد کرد.
توجه داشته باشید که تاخیر فیلتر هنگام تنظیم روی یک مقدار غیر صفر دقیقاً به اندازه همین تعداد نمونه خواهد بود.
bs2b
تبدیل استریو به دوگوشی (binaural) بائر، که گوش دادن به ضبطهای صوتی استریو را با هدفون بهبود میبخشد.
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-libbs2b" پیکربندی کنید.
پارامترهای زیر را میپذیرد:
- profile
- سطح کراسفید (crossfeed) از پیش تعریفشده.
channelmap
نگاشت مجدد کانالهای ورودی به مکانهای جدید.
پارامترهای زیر را میپذیرد:
- map
- نگاشت کانالها از ورودی به خروجی. شناسه فهرستی جداشده با '|' از نگاشتها است، که هر یک به شکل "in_channel-out_channel" یا "in_channel" هستند. in_channel میتواند نام کانال ورودی (مانند FL برای چپ جلو) یا شاخص آن در چینش کانال ورودی باشد. out_channel نام کانال خروجی یا شاخص آن در چینش کانال خروجی است. اگر out_channel داده نشود، بهطور ضمنی یک شاخص است که از صفر شروع شده و برای هر نگاشت یکی افزایش مییابد. ترکیب انواع مختلف نگاشت مجاز نیست و منجر به خطای تجزیه میشود.
- channel_layout
- چینش کانال جریان خروجی. اگر مشخص نشود، فیلتر آن را بر اساس نامهای out_channel یا تعداد نگاشتها حدس میزند. چینشهای حدسزدهشده لزوماً شامل کانالها به ترتیب نگاشتها نخواهند بود.
اگر هیچ نگاشتی وجود نداشته باشد، فیلتر بهطور ضمنی کانالهای ورودی را با حفظ شاخصها به کانالهای خروجی نگاشت میکند.
مثالها
- برای مثال،
با فرض یک
پروندهٔ MOV
ورودی با
صدای 5.1+downmix:
ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
یک پروندهٔ WAV خروجی با برچسب استریو از کانالهای downmix ورودی ایجاد میکند.
- برای اصلاح
یک پروندهٔ
WAV 5.1 که به
اشتباه با
ترتیب
کانال بومی
AAC کدگذاری
شده است:
ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
channelsplit
تفکیک هر کانال از یک جریان صوتی ورودی به یک جریان خروجی جداگانه.
پارامترهای زیر را میپذیرد:
- channel_layout
- چینش کانال جریان ورودی. پیشفرض "stereo" است.
- channels
- یک چینش
کانال که
کانالهای
استخراجشونده
به عنوان
جریانهای
خروجی
جداگانه را
توصیف
میکند یا
"all" برای
استخراج هر
کانال
ورودی به
عنوان یک
جریان
جداگانه.
پیشفرض "all"
است.
انتخاب کانالهایی که در چینش کانال ورودی وجود ندارند منجر به خطا خواهد شد.
مثالها
- برای مثال،
با فرض یک
پروندهٔ MP3
استریوی
ورودی:
ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
یک پروندهٔ خروجی ماتروشکا با دو جریان صوتی ایجاد میکند، یکی حاوی فقط کانال چپ و دیگری کانال راست.
- تفکیک یک
پروندهٔ WAV 5.1
به
پروندههای
جداگانه
بهازای هر
کانال:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav
- استخراج
فقط LFE از یک
پروندهٔ WAV 5.1:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]' -map '[LFE]' lfe.wav
chorus
افزودن جلوهٔ کُر (chorus) به صدا.
میتواند صدای یک خواننده را شبیه به گروه همسرایان کند، اما میتواند بر روی سازها نیز اعمال شود.
کُر شبیه به یک جلوهٔ پژواک (echo) با تأخیر کوتاه است، اما در حالی که با پژواک تأخیر ثابت است، با کُر این تأخیر با مدولاسیون سینوسی یا مثلثی تغییر میکند. عمق مدولاسیون محدودهای را تعیین میکند که تأخیر مدولهشده قبل یا بعد از تأخیر پخش میشود. از این رو صدای با تأخیر کندتر یا تندتر به نظر میرسد، یعنی صدای تأخیریافته حول صدای اصلی کوک میشود، درست مانند یک گروه کُر که در آن برخی صداها کمی خارج از کوک (off-key) هستند.
پارامترهای زیر را میپذیرد:
- in_gain
- تنظیم بهرهٔ ورودی. پیشفرض 0.4 است.
- out_gain
- تنظیم بهرهٔ خروجی. پیشفرض 0.4 است.
- delays
- تنظیم تأخیرها. یک تأخیر معمولی حدود 40ms تا 60ms است.
- decays
- تنظیم کاهشها (decays).
- speeds
- تنظیم سرعتها.
- depths
- تنظیم عمقها.
مثالها
- یک تأخیر
منفرد:
chorus=0.7:0.9:55:0.4:0.25:2
- دو تأخیر:
chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
- صدای کُر
کاملتر با
سه تأخیر:
chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
compand
فشردهسازی (compress) یا گسترش (expand) محدودهٔ دینامیکی صدا.
پارامترهای زیر را میپذیرد:
- attacks
- decays
- فهرستی از زمانها بر حسب ثانیه برای هر کانال که در طول آن سطح لحظهای سیگنال ورودی برای تعیین حجم صدای آن میانگینگیری میشود. attacks به افزایش حجم صدا و decays به کاهش حجم صدا اشاره دارد. در اکثر موقعیتها، زمان حمله (پاسخ به بلندتر شدن صدا) باید کوتاهتر از زمان کاهش باشد، زیرا گوش انسان به صدای بلند ناگهانی حساستر از صدای آرام ناگهانی است. مقدار معمول برای حمله 0.3 ثانیه و برای کاهش 0.8 ثانیه است. اگر تعداد حملات و کاهشهای مشخصشده کمتر از تعداد کانالها باشد، آخرین حمله/کاهش تنظیمشده برای تمامی کانالهای باقیمانده استفاده خواهد شد.
- points
- فهرستی از
نقاط برای
تابع
انتقال،
مشخصشده
بر حسب dB
نسبت به
حداکثر
دامنهٔ
سیگنال
ممکن. هر
فهرست نقاط
کلیدی باید
با دستور
زبان زیر
تعریف شود:
"x0/y0|x1/y1|x2/y2|...."
یا "x0/y0 x1/y1 x2/y2
...."
مقادیر ورودی باید کاملاً صعودی باشند اما تابع انتقال لزوماً نباید یکنواخت صعودی باشد. نقطهٔ "0/0" فرض میشود اما ممکن است بازنویسی شود (با "0/out-dBn"). مقادیر معمول برای تابع انتقال عبارتند از "-70/-70|-60/-20|1/0".
- soft-knee
- تنظیم شعاع منحنی بر حسب dB برای تمام اتصالات. پیشفرض 0.01 است.
- gain
- تنظیم بهرهٔ اضافی بر حسب dB برای اعمال در تمام نقاط تابع انتقال. این امکان تنظیم آسان بهرهٔ کلی را فراهم میسازد. پیشفرض 0 است.
- volume
- تنظیم حجم صدای اولیه، بر حسب dB، که هنگام شروع فیلترسازی برای هر کانال فرض میشود. این به کاربر اجازه میدهد سطح اسمی را در ابتدا تعیین کند، تا مثلاً بهرهٔ بسیار بزرگی پیش از شروع به کار فیلتر compand به سطوح اولیهٔ سیگنال اعمال نشود. مقدار معمول برای صدایی که در ابتدا آرام است -90 dB میباشد. پیشفرض 0 است.
- delay
- تنظیم تأخیر بر حسب ثانیه. صدای ورودی بلافاصله تحلیل میشود، اما صدا پیش از ارسال به تنظیمکنندهٔ حجم صدا دچار تأخیر میشود. مشخص کردن تأخیری تقریباً برابر با زمانهای حمله/کاهش به فیلتر امکان میدهد که به جای حالت واکنشی، بهطور مؤثر در حالت پیشبینانه عمل کند. پیشفرض 0 است.
مثالها
- مناسبسازی
موسیقی
دارای
بخشهای
آرام و بلند
برای گوش
دادن در
محیطی پر سر
و صدا:
compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
مثالی دیگر برای صدایی با بخشهای نجوا و انفجار:
compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
- یک نویز گیت
برای زمانی
که نویز در
سطحی
پایینتر
از سیگنال
است:
compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
- نویز گیت
دیگری، این
بار برای
زمانی که
نویز در
سطحی
بالاتر از
سیگنال است
(که آن را از
جهاتی شبیه
اسکوالچ
میکند):
compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
- فشردهسازی
2:1 با شروع از
-6dB:
compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
- فشردهسازی
2:1 با شروع از
-9dB:
compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
- فشردهسازی
2:1 با شروع از
-12dB:
compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
- فشردهسازی
2:1 با شروع از
-18dB:
compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
- فشردهسازی
3:1 با شروع از
-15dB:
compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
- کمپرسور/گیت:
compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
- اکسپندر
(گسترشدهنده):
compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
- محدودکنندهٔ
سخت (hard limiter) در -6dB:
compand=attacks=0:points=-80/-80|-6/-6|20/-6
- محدودکنندهٔ
سخت در -12dB:
compand=attacks=0:points=-80/-80|-12/-12|20/-12
- نویز گیت
سخت در -35 dB:
compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
- محدودکنندهٔ
نرم (soft limiter):
compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
compensationdelay
خط تأخیر جبرانی (Compensation Delay Line) یک تأخیر متریکمحور برای جبران موقعیتهای متفاوت میکروفونها یا بلندگوها است.
برای مثال، شما صدای گیتار را با دو میکروفون قرارگرفته در مکانهای مختلف ضبط کردهاید. از آنجا که جبههٔ موج صوتی در شرایط عادی سرعت ثابتی دارد، فازبندی میکروفونها میتواند متغیر بوده و به مکان و موقعیت نسبی آنها بستگی دارد. بهترین میکس صوتی زمانی حاصل میشود که این میکروفونها همفاز (همگام) باشند. توجه داشته باشید که فاصلهٔ حدود ۳۰ سانتیمتر بین میکروفونها باعث میشود یکی از میکروفونها سیگنال را در فاز مخالف (antiphase) نسبت به میکروفون دیگر دریافت کند. این امر باعث کدر و گرفته شدن میکس نهایی میشود. این فیلتر با افزودن تأخیرهای مختلف به هر ترک میکروفون و همگام ساختن آنها به حل مشکلات فاز کمک میکند.
بهترین نتیجه زمانی حاصل میشود که یک ترک را به عنوان مبنا قرار دهید و سایر ترکها را یکییکی با آن همگام کنید. به یاد داشته باشید که تلورانس همگامسازی/تأخیر به نرخ نمونهبرداری نیز بستگی دارد. نرخهای نمونهبرداری بالاتر تلورانس بیشتری را فراهم میکنند.
فیلتر پارامترهای زیر را میپذیرد:
- mm
- تنظیم فاصله به میلیمتر. این فاصلهٔ جبرانی برای تنظیم دقیق است. پیشفرض 0 است.
- cm
- تنظیم فاصله به سانتیمتر. این فاصلهٔ جبرانی برای محکمتر کردن تنظیم فاصله است. پیشفرض 0 است.
- m
- تنظیم فاصله به متر. این فاصلهٔ جبرانی برای تنظیم کلی فاصله است. پیشفرض 0 است.
- dry
- تنظیم مقدار خشک. مقدار سیگنال پردازشنشده (خشک). پیشفرض 0 است.
- wet
- تنظیم مقدار خیس. مقدار سیگنال پردازششده (خیس). پیشفرض 1 است.
- temp
- تنظیم دما بر حسب درجه سلسیوس. این دمای محیط است. پیشفرض 20 است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
crossfeed
اعمال فیلتر کراسفید (crossfeed) هدفون.
کراسفید فرایند ترکیب کانالهای چپ و راست یک ضبط صوتی استریو است. این فیلتر عمدتاً برای کاهش تفکیک شدید استریو در فرکانسهای پایین استفاده میشود.
هدف از این کار تولید صدایی شبیهتر به بلندگو برای شنونده است.
فیلتر گزینههای زیر را میپذیرد:
- strength
- تنظیم شدت کراسفید. پیشفرض 0.2 است. محدودهٔ مجاز از 0 تا 1 است. این گزینه بهرهٔ فیلتر low-shelf را برای بخش جانبی تصویر استریو تنظیم میکند. پیشفرض -6dB است. حداکثر مقدار مجاز با تنظیم شدت روی 1 برابر -30db است.
- range
- تنظیم وسعت صحنهٔ صوتی (soundstage). پیشفرض 0.5 است. محدودهٔ مجاز از 0 تا 1 است. این گزینه فرکانس قطع فیلتر low-shelf را تنظیم میکند. پیشفرض قطع نزدیک به 1550 Hz است. با تنظیم range بر روی 1 فرکانس قطع بر روی 2100 Hz تنظیم میشود.
- slope
- تنظیم شیب منحنی فیلتر low-shelf. پیشفرض 0.5 است. محدودهٔ مجاز از 0.01 تا 1 است.
- level_in
- تنظیم بهرهٔ ورودی. پیشفرض 0.9 است.
- level_out
- تنظیم بهرهٔ خروجی. پیشفرض 1 است.
- block_size
- تنظیم
اندازهٔ
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
به اندازهٔ
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر کوتاه
میشود)
فیلترسازی
فاز خطی
خواهد شد،
در غیر این
صورت اگر به
اندازه
کافی بزرگ
نباشد فقط
مصنوعات
صوتی
نامطلوب
تولید
میکند.
توجه داشته باشید که تأخیر فیلتر هنگام تنظیم به یک مقدار غیر صفر دقیقاً به همین تعداد نمونه خواهد بود.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
crystalizer
الگوریتمی ساده برای شفافسازی و تیز کردن نویز/سیگنال صوتی.
این فیلتر تفاوتهای بین هر نمونهٔ صوتی را به صورت خطی افزایش میدهد.
فیلتر گزینههای زیر را میپذیرد:
- i
- تنظیم شدت جلوه (پیشفرض: 2.0). باید در محدوده بین -10.0 تا 0 (صدای بدون تغییر) تا 10.0 (حداکثر جلوه) باشد. برای معکوس کردن فیلترسازی از مقدار منفی استفاده کنید.
- c
- فعالسازی برش (clipping). بهطور پیشفرض فعال است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
dcshift
اعمال یک شیفت DC به صدا.
این گزینه میتواند برای حذف یک آفست DC (که شاید ناشی از یک مشکل سختافزاری در زنجیرهٔ ضبط باشد) از صدا مفید باشد. اثر آفست DC کاهش هدروم (headroom) و در نتیجه کاهش حجم صدا است. فیلتر astats میتواند برای تعیین اینکه آیا یک سیگنال آفست DC دارد یا خیر استفاده شود.
- shift
- تنظیم شیفت DC، محدودهٔ مجاز [-1, 1] است. این گزینه میزان شیفت صدا را نشان میدهد.
- limitergain
- اختیاری. باید مقداری بسیار کمتر از 1 داشته باشد (مثلاً 0.05 یا 0.02) و برای جلوگیری از برش (clipping) استفاده میشود.
deesser
اعمال دیاسر (de-essing) بر روی نمونههای صوتی.
- i
- تنظیم شدت برای راهاندازی de-essing. محدودهٔ مجاز از 0 تا 1 است. پیشفرض 0 است.
- m
- تنظیم میزان داکینگ (کاهش سطح) روی بخش زیر (treble) صدا. محدودهٔ مجاز از 0 تا 1 است. پیشفرض 0.5 است.
- f
- میزان محتوای فرکانسی اصلی که باید هنگام de-essing حفظ شود. محدودهٔ مجاز از 0 تا 1 است. پیشفرض 0.5 است.
- s
- تنظیم حالت
خروجی.
مقادیر زیر را میپذیرد:
dialoguenhance
تقویت دیالوگ و مکالمه در صدای استریو.
این فیلتر ورودی استریو را میپذیرد و خروجی کانالهای فراگیر (surround 3.0) تولید میکند. کانال سنتر جلو (front center) تازه تولیدشده دارای دیالوگ گفتاری تقویتشده است که در اصل در هر دو کانال استریو موجود بود. این فیلتر کانالهای چپ جلو و راست جلو را همانند ورودی استریو در خروجی قرار میدهد.
فیلتر گزینههای زیر را میپذیرد:
- original
- تنظیم ضریب سنتر اصلی برای نگهداری در خروجی کانال سنتر جلو. محدودهٔ مجاز از 0 تا 1 است. مقدار پیشفرض 1 است.
- enhance
- تنظیم ضریب تقویت دیالوگ برای اعمال در خروجی کانال سنتر جلو. محدودهٔ مجاز از 0 تا 3 است. مقدار پیشفرض 1 است.
- voice
- تنظیم ضریب تشخیص صدا (voice). محدودهٔ مجاز از 2 تا 32 است. مقدار پیشفرض 2 است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
drmeter
اندازهگیری محدودهٔ دینامیکی صدا (DR).
مقادیر DR برابر 14 و بالاتر در محتوای بسیار پویا یافت میشود. مقادیر DR بین 8 تا 13 در محتوای گذرا یافت میشود. و هر مقدار کمتر از 8 پویایی بسیار ضعیفی داشته و بسیار فشرده است.
فیلتر گزینههای زیر را میپذیرد:
- length
- تنظیم طول پنجره بر حسب ثانیه که برای تقسیم صدا به قطعاتی با طول مساوی استفاده میشود. پیشفرض 3 ثانیه است.
dynaudnorm
نرمالساز پویای صدا (Dynamic Audio Normalizer).
این فیلتر مقدار مشخصی بهره (gain) را به صدای ورودی اعمال میکند تا دامنهٔ اوج (peak magnitude) آن را به یک سطح هدف (مانند 0 dBFS) برساند. با این حال، برخلاف الگوریتمهای نرمالسازی «سادهتر»، نرمالساز پویای صدا ضریب بهره را *بهطور پویا* برای صدای ورودی دوباره تنظیم میکند. این امر امکان اعمال بهرهٔ اضافی را به بخشهای «آرام» صدا فراهم میآورد و در عین حال از اعوجاج یا برش (clipping) در بخشهای «بلند» جلوگیری میکند. به عبارت دیگر: نرمالساز پویای صدا حجم صدای بخشهای آرام و بلند را «یکدست» میکند، به این معنا که حجم صدای هر بخش به همان سطح هدف رسانده میشود. با این حال توجه داشته باشید که نرمالساز پویای صدا این هدف را *بدون* اعمال «فشردهسازی محدودهٔ دینامیکی» محقق میسازد. این فیلتر ۱۰۰٪ محدودهٔ دینامیکی را *درون* هر بخش از پروندهٔ صوتی حفظ خواهد کرد.
- framelen, f
- تنظیم طول فریم بر حسب میلیثانیه. در محدودهٔ 10 تا 8000 میلیثانیه. پیشفرض 500 میلیثانیه است. نرمالساز پویای صدا صدای ورودی را در قطعات کوچک، موسوم به فریم، پردازش میکند. این امر ضروری است زیرا دامنهٔ اوج برای صرفاً یک مقدار نمونه بیمعنی است. در عوض، ما باید دامنهٔ اوج را برای یک توالی پیوسته از مقادیر نمونه تعیین کنیم. در حالی که یک نرمالساز «استاندارد» صرفاً از دامنهٔ اوج کل پرونده استفاده میکند، نرمالساز پویای صدا دامنهٔ اوج را به صورت جداگانه برای هر فریم تعیین مینماید. طول فریم بر حسب میلیثانیه مشخص میشود. بهطور پیشفرض، نرمالساز پویای صدا از طول فریم 500 میلیثانیه استفاده میکند که مشخص شده است نتایج خوبی را در اکثر پروندهها ارائه میدهد. توجه داشته باشید که طول دقیق فریم، بر حسب تعداد نمونهها، بهطور خودکار بر اساس نرخ نمونهبرداری پروندهٔ صوتی ورودی مشخص خواهد شد.
- gausssize, g
- تنظیم اندازهٔ پنجرهٔ فیلتر گاوسی. در محدودهٔ 3 تا 301، باید یک عدد فرد باشد. پیشفرض 31 است. احتمالاً مهمترین پارامتر نرمالساز پویای صدا، "اندازهٔ پنجره" فیلتر هموارساز گاوسی است. اندازهٔ پنجرهٔ فیلتر بر حسب فریم، با مرکزیت فریم فعلی مشخص میشود. برای سادگی، این مقدار باید عددی فرد باشد. در نتیجه، مقدار پیشفرض 31 فریم فعلی و همچنین 15 فریم قبلی و 15 فریم بعدی را در نظر میگیرد. استفاده از یک پنجرهٔ بزرگتر منجر به جلوهٔ هموارسازی قویتر و بنابراین تغییرات بهرهٔ کمتر، یعنی انطباق کندتر بهره میشود. برعکس، استفاده از یک پنجرهٔ کوچکتر منجر به جلوهٔ هموارسازی ضعیفتر و در نتیجه تغییرات بهرهٔ بیشتر، یعنی انطباق سریعتر بهره میگردد. به عبارت دیگر، هر چه این مقدار را افزایش دهید، نرمالساز پویای صدا بیشتر مانند یک فیلتر نرمالسازی «سنتی» رفتار خواهد کرد. برعکس، هر چه این مقدار را کاهش دهید، نرمالساز پویای صدا بیشتر شبیه به یک کمپرسور محدودهٔ دینامیکی عمل خواهد کرد.
- peak, p
- تنظیم مقدار اوج هدف. این گزینه بالاترین سطح دامنهٔ مجاز را برای ورودی صوتی نرمالشده مشخص میکند. این فیلتر تلاش میکند تا حد ممکن به دامنهٔ اوج هدف نزدیک شود، اما در عین حال اطمینان حاصل میکند که سیگنال نرمالشده هرگز از دامنهٔ اوج فراتر نرود. حداکثر ضریب بهرهٔ محلی یک فریم مستقیماً توسط دامنهٔ اوج هدف تعیین میشود. مقدار پیشفرض 0.95 است و در نتیجه یک هدروم ۵٪ به جا میگذارد. فراتر رفتن از این مقدار توصیه نمیشود.
- maxgain, m
- تنظیم حداکثر ضریب بهره. در محدودهٔ 1.0 تا 100.0. پیشفرض 10.0 است. نرمالساز پویای صدا حداکثر ضریب بهرهٔ ممکن (محلی) را برای هر فریم ورودی تعیین میکند، یعنی حداکثر ضریب بهرهای که منجر به برش (clipping) یا اعوجاج نشود. حداکثر ضریب بهره توسط بالاترین دامنهٔ نمونه در آن فریم تعیین میشود. با این حال، نرمالساز پویای صدا حداکثر ضریب بهرهٔ فریم را علاوه بر این توسط یک حداکثر ضریب بهرهٔ از پیش تعیینشده (سراسری) محدود میکند. این کار به منظور جلوگیری از ضرایب بهرهٔ بیش از حد در فریمهای «ساکت» یا تقریباً ساکت انجام میشود. بهطور پیشفرض، حداکثر ضریب بهره 10.0 است. برای اکثر ورودیها مقدار پیشفرض باید کافی باشد و معمولاً افزایش این مقدار توصیه نمیشود. هرچند، برای ورودیهایی با حجم صدای کلی بسیار پایین، ممکن است مجاز دانستن ضرایب بهرهٔ حتی بالاتر ضروری باشد. با این حال توجه داشته باشید که نرمالساز پویای صدا صرفاً یک آستانهٔ «سخت» اعمال نمیکند (یعنی بریدن مقادیر بالای آستانه). در عوض، یک تابع آستانهٔ «سیگموئید» اعمال خواهد شد. به این ترتیب، ضرایب بهره بهطور نرم به مقدار آستانه نزدیک میشوند، اما هرگز از آن فراتر نخواهند رفت.
- targetrms, r
- تنظیم RMS هدف. در محدودهٔ 0.0 تا 1.0. پیشفرض 0.0 - غیرفعال است. بهطور پیشفرض، نرمالساز پویای صدا نرمالسازی «اوج» (peak) را انجام میدهد. این بدان معناست که حداکثر ضریب بهرهٔ محلی برای هر فریم (صرفاً) توسط نمونه با بالاترین دامنه در آن فریم تعریف میشود. به این ترتیب، نمونهها میتوانند بدون فراتر رفتن از حداکثر سطح سیگنال، یعنی بدون برش، تا حد امکان تقویت شوند. با این حال، به صورت اختیاری، نرمالساز پویای صدا میتواند جذر میانگین مربعات فریم، با کوتهنوشت RMS را نیز در نظر بگیرد. در مهندسی برق، RMS معمولاً برای تعیین توان یک سیگنال متغیر با زمان استفاده میشود. بنابراین در نظر گرفته میشود که RMS تقریب بهتری از «بلندی صدای ادراکشده» نسبت به صرفاً بررسی دامنهٔ اوج سیگنال است. در نتیجه، با تنظیم تمام فریمها روی یک مقدار RMS ثابت، میتوان یک «بلندی صدای ادراکشدهٔ» یکنواخت برقرار کرد. اگر یک مقدار RMS هدف مشخص شده باشد، ضریب بهرهٔ محلی یک فریم به عنوان ضریبی تعریف میشود که دقیقاً به همان مقدار RMS منجر گردد. با این حال توجه داشته باشید که حداکثر ضریب بهرهٔ محلی همچنان توسط نمونه با بالاترین دامنه در فریم محدود میشود تا از برش جلوگیری شود.
- coupling, n
- فعالسازی کوپلینگ (اتصال متقابل) کانالها. بهطور پیشفرض فعال است. بهطور پیشفرض، نرمالساز پویای صدا تمام کانالها را به یک اندازه تقویت میکند. این بدان معناست که ضریب بهرهٔ یکسانی به تمام کانالها اعمال خواهد شد، یعنی حداکثر ضریب بهرهٔ ممکن توسط «بلندترین» کانال تعیین میشود. با این حال، در برخی ضبطها ممکن است حجم صدای کانالهای مختلف ناهمگون باشد، مثلاً یک کانال «آرامتر» از کانال(های) دیگر باشد. در این حالت، میتوان از این گزینه برای غیرفعال کردن کوپلینگ کانالها استفاده کرد. به این ترتیب، ضریب بهره بهطور مستقل برای هر کانال و فقط بر اساس بالاترین دامنهٔ نمونه در همان کانال تعیین خواهد شد. این ویژگی امکان هماهنگسازی حجم صدای کانالهای مختلف را فراهم میکند.
- correctdc, c
- فعالسازی تصحیح بایاس DC (آفست DC). بهطور پیشفرض غیرفعال است. یک سیگنال صوتی (در حوزهٔ زمان) توالیای از مقادیر نمونه است. در نرمالساز پویای صدا این مقادیر نمونه، بدون در نظر گرفتن قالب ورودی اصلی، در محدودهٔ -1.0 تا 1.0 نشان داده میشوند. بهطور معمول، سیگنال صوتی، یا «شکل موج»، باید حول نقطهٔ صفر متمرکز باشد. این بدان معناست که اگر میانگین تمام نمونهها در یک پرونده یا در یک فریم منفرد را محاسبه کنیم، نتیجه باید 0.0 یا حداقل بسیار نزدیک به آن مقدار باشد. با این حال، اگر انحراف قابل توجهی در مقدار میانگین از 0.0، در جهت مثبت یا منفی وجود داشته باشد، به عنوان بایاس DC یا آفست DC شناخته میشود. از آنجا که بایاس DC مسلماً نامطلوب است، نرمالساز پویای صدا تصحیح اختیاری بایاس DC را ارائه میدهد. با فعال بودن تصحیح بایاس DC، نرمالساز پویای صدا مقدار میانگین یا آفست «تصحیح DC» را برای هر فریم ورودی تعیین کرده و آن مقدار را از تمام مقادیر نمونههای فریم تفریق میکند که تضمین مینماید آن نمونهها دوباره حول 0.0 متمرکز شوند. همچنین، به منظور جلوگیری از «شکافها» در مرزهای فریم، مقادیر آفست تصحیح DC بهطور نرم بین فریمهای همسایه درونیابی خواهند شد.
- altboundary, b
- فعالسازی حالت مرزی جایگزین. بهطور پیشفرض غیرفعال است. نرمالساز پویای صدا همسایگی مشخصی را در اطراف هر فریم در نظر میگیرد. این شامل فریمهای قبلی و همچنین فریمهای بعدی میشود. با این حال، برای فریمهای «مرزی» که در ابتدای آغازین و در انتهای پایانی پروندهٔ صوتی قرار دارند، تمام فریمهای همسایه در دسترس نیستند. به ویژه، برای چند فریم اول در پروندهٔ صوتی، فریمهای قبلی شناختهشده نیستند. و به همین ترتیب، برای چند فریم آخر در پروندهٔ صوتی، فریمهای بعدی شناختهشده نیستند. بنابراین، این پرسش مطرح میشود که چه ضرایب بهرهای باید برای فریمهای ناموجود در ناحیهٔ «مرزی» فرض شود. نرمالساز پویای صدا دو حالت را برای رسیدگی به این وضعیت پیادهسازی میکند. حالت مرزی پیشفرض ضریب بهرهٔ دقیقاً 1.0 را برای فریمهای مفقود در نظر میگیرد که به یک «محو شدن تدریجی ورودی» (fade in) و «محو شدن تدریجی خروجی» (fade out) نرم به ترتیب در ابتدا و انتهای ورودی منجر میشود.
- compress, s
- تنظیم ضریب فشردهسازی. در محدودهٔ 0.0 تا 30.0. پیشفرض 0.0 است. بهطور پیشفرض، نرمالساز پویای صدا فشردهسازی «سنتی» را اعمال نمیکند. این بدان معناست که اوجهای سیگنال بریده نخواهند شد و بنابراین محدودهٔ دینامیکی کامل درون هر همسایگی محلی حفظ خواهد شد. با این حال، در برخی موارد ممکن است ترکیب الگوریتم نرمالسازی نرمالساز پویای صدا با یک فشردهسازی «سنتیتر» مطلوب باشد. برای این منظور، نرمالساز پویای صدا یک تابع فشردهسازی اختیاری (اعمال آستانه) را ارائه میدهد. اگر (و تنها اگر) ویژگی فشردهسازی فعال باشد، تمام فریمهای ورودی پیش از فرایند نرمالسازی واقعی توسط یک تابع آستانهگذاری با زانو نرم (soft knee) پردازش خواهند شد. به زبان ساده، تابع آستانهگذاری تمام نمونههایی را که دامنهٔ آنها از یک مقدار آستانهٔ مشخص فراتر میرود هرس میکند. با این حال، نرمالساز پویای صدا صرفاً یک مقدار آستانهٔ ثابت را اعمال نمیکند. در عوض، مقدار آستانه برای هر فریم منفرد تنظیم خواهد شد. بهطور کلی، پارامترهای کوچکتر به فشردهسازی قویتر منجر میشوند و برعکس. مقادیر زیر 3.0 توصیه نمیشوند، زیرا ممکن است اعوجاج قابل شنیدن پدیدار شود.
- threshold, t
- تنظیم مقدار آستانهٔ هدف. این گزینه پایینترین سطح دامنهٔ مجاز را برای ورودی صوتی که نرمال خواهد شد مشخص میکند. اگر حجم صدای فریم ورودی بالاتر از این مقدار باشد، فریم نرمال خواهد شد. در غیر این صورت ممکن است فریم اصلاً نرمال نشود. مقدار پیشفرض روی 0 تنظیم شده است، که یعنی تمام فریمهای ورودی نرمال خواهند شد. این گزینه بیشتر در صورتی مفید است که تقویت نویز دیجیتال مورد نظر نباشد.
- channels, h
- تعیین کانالهای مورد نظر برای فیلترسازی، بهطور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- overlap, o
- تعیین همپوشانی برای فریمها. اگر روی 0 (پیشفرض) تنظیم شود هیچ همپوشانی فریمی انجام نمیشود. استفاده از مقادیر >0 و <1 باعث تنظیمات بهرهٔ کمتر محافظهکارانه میشود، مانند زمانی که گزینه framelen روی مقدار کوچکتری تنظیم شده است؛ اگر مقدار گزینه framelen برای همپوشانی غیرصفر جبران شود، تنظیمات بهره در طول زمان در مقایسه با حالت همپوشانی صفر روانتر خواهد بود.
- curve, v
- تعیین
عبارت
منحنی
نگاشت اوج
که قرار است
هنگام
محاسبهٔ
بهرهٔ
اعمالشده
به فریمها
استفاده
شود. حداکثر
بهرهٔ فریم
خروجی
همچنان
توسط سایر
گزینههای
قبلی
ذکرشده
برای این
فیلتر
محدود
خواهد بود.
عبارت میتواند شامل ثوابت زیر باشد:
- ch
- شمارهٔ کانال فعلی
- sn
- شمارهٔ نمونهٔ فعلی
- nb_channels
- تعداد کانالها
- t
- برچسب زمانی بیانشده بر حسب ثانیه
- sr
- نرخ نمونهبرداری
- p
- مقدار اوج فریم فعلی
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
earwax
آسانتر ساختن گوش دادن به صدا با هدفون.
این فیلتر نشانهها یا سرنخهایی (cues) را به صدای استریوی 44.1kHz (یعنی قالب CD صوتی) اضافه میکند تا هنگام گوش دادن با هدفون، تصویر استریو از داخل سر شما (حالت استاندارد برای هدفون) به بیرون و در مقابل شنونده (حالت استاندارد برای بلندگوها) منتقل شود.
پورتشده از SoX.
equalizer
اعمال یک فیلتر اکولایزر پیک دوقطبی (two-pole peaking EQ). با این فیلتر، سطح سیگنال در فرکانس انتخابی و اطراف آن میتواند افزایش یا کاهش یابد، در حالی که (برخلاف فیلترهای میانگذر و میانناگذر) سطح سیگنال در تمام فرکانسهای دیگر بدون تغییر باقی میماند.
به منظور تولید منحنیهای اکولایزاسیون پیچیده، این فیلتر میتواند چندین بار داده شود، که هر بار با یک فرکانس مرکزی متفاوت همراه است.
فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس مرکزی فیلتر بر حسب Hz.
- width_type, t
- تنظیم روش مشخص کردن پهنای باند فیلتر.
- width, w
- تعیین پهنای باند فیلتر بر حسب واحدهای width_type.
- gain, g
- تنظیم بهره یا تضعیف مورد نیاز بر حسب dB. هنگام استفاده از بهرهٔ مثبت مراقب برش (clipping) باشید.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالهای مورد نظر برای فیلترسازی، بهطور پیشفرض همه کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad، بهطور پیشفرض غیرفعال است. فعال کردن آن پاسخ دامنه در DC را به 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازهٔ
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
به اندازهٔ
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر کوتاه
میشود)
فیلترسازی
فاز خطی
خواهد شد،
در غیر این
صورت اگر به
اندازهٔ
کافی بزرگ
نباشد فقط
مصنوعات
صوتی
نامطلوب
تولید
میکند.
توجه داشته باشید که تأخیر فیلتر هنگام تنظیم به یک مقدار غیر صفر دقیقاً به همین تعداد نمونه خواهد بود.
مثالها
- تضعیف 10 dB در 1000
Hz، با پهنای
باند 200 Hz:
equalizer=f=1000:t=h:width=200:g=-10
- اعمال 2 dB
بهره در 1000 Hz با
ضریب Q
برابر 1 و
تضعیف 5 dB در 100 Hz
با Q برابر 2:
equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
دستورها
این فیلتر از دستورهای زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس اکولایزر. دستور زبان برای این دستور: "frequency"
- width_type, t
- تغییر width_type اکولایزر. دستور زبان برای این دستور: "width_type"
- width, w
- تغییر پهنای باند اکولایزر. دستور زبان برای این دستور: "width"
- gain, g
- تغییر بهرهٔ اکولایزر. دستور زبان برای این دستور: "gain"
- mix, m
- تغییر میکس اکولایزر. دستور زبان برای این دستور: "mix"
extrastereo
افزایش خطی تفاوت بین کانالهای چپ و راست که نوعی جلوهٔ «زنده» (live) به پخش صدا میافزاید.
فیلتر گزینههای زیر را میپذیرد:
- m
- تنظیم ضریب اختلاف (پیشفرض: 2.5). مقدار 0.0 به معنای صدای مونو (میانگین هر دو کانال) است، با 1.0 صدا بدون تغییر خواهد بود، با -1.0 کانالهای چپ و راست جابهجا میشوند.
- c
- فعالسازی برش (clipping). بهطور پیشفرض فعال است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
firequalizer
اعمال اکولایزاسیون FIR با استفاده از پاسخ فرکانسی دلخواه.
فیلتر گزینههای زیر را میپذیرد:
- gain
- تنظیم معادلهٔ منحنی بهره (بر حسب dB). عبارت میتواند شامل متغیرها باشد:
- f
- فرکانس ارزیابیشده
- sr
- نرخ نمونهبرداری
- ch
- شمارهٔ کانال، در صورت غیرفعال بودن ارزیابی چندکاناله روی 0 تنظیم میشود
- chid
- شناسهٔ کانال، به libavutil/channel_layout.h مراجعه کنید، در صورت غیرفعال بودن ارزیابی چندکاناله روی اولین شناسهٔ کانال تنظیم میشود
- chs
- تعداد کانالها
- chlayout
- چینش کانال (channel_layout)، به libavutil/channel_layout.h مراجعه کنید
و توابع:
- gain_interpolate(f)
- درونیابی بهره در فرکانس f بر اساس gain_entry
- cubic_interpolate(f)
- همانند gain_interpolate، اما نرمتر
این گزینه به عنوان دستور نیز در دسترس است. پیشفرض gain_interpolate(f) است.
- gain_entry
- تنظیم ورودی بهره برای تابع gain_interpolate. عبارت میتواند شامل توابع باشد:
- entry(f, g)
- ذخیرهٔ ورودی بهره در فرکانس f با مقدار g
این گزینه به عنوان دستور نیز در دسترس است.
- delay
- تنظیم تأخیر فیلتر بر حسب ثانیه. مقدار بالاتر به معنای دقت بیشتر است. پیشفرض 0.01 است.
- accuracy
- تنظیم دقت فیلتر بر حسب Hz. مقدار کمتر به معنای دقت بیشتر است. پیشفرض 5 است.
- wfunc
- تنظیم تابع پنجره. مقادیر قابل قبول عبارتند از:
- rectangular
- پنجرهٔ مستطیلی، زمانی مفید است که منحنی بهره از قبل هموار باشد
- hann
- پنجرهٔ هان (Hann) (پیشفرض)
- hamming
- پنجرهٔ همینگ (Hamming)
- blackman
- پنجرهٔ بلکمن (Blackman)
- nuttall3
- پنجرهٔ ناتال مشتق اول پیوستهٔ ۳ جملهای
- mnuttall3
- پنجرهٔ ناتال ناپیوستهٔ حداقل ۳ جملهای
- nuttall
- پنجرهٔ ناتال مشتق اول پیوستهٔ ۴ جملهای
- bnuttall
- پنجرهٔ ناتال ناپیوستهٔ حداقل ۴ جملهای (بلکمن-ناتال)
- bharris
- پنجرهٔ بلکمن-هریس
- tukey
- پنجرهٔ توکی (Tukey)
- fixed
- در صورت فعال بودن، از تعداد ثابتی از نمونههای صوتی استفاده میکند. این کار سرعت را هنگام فیلترسازی با تأخیر زیاد بهبود میبخشد. پیشفرض غیرفعال است.
- multi
- فعالسازی ارزیابی چندکاناله بر روی بهره. پیشفرض غیرفعال است.
- zero_phase
- فعالسازی حالت فاز صفر با کسر برچسب زمانی برای جبران تأخیر. پیشفرض غیرفعال است.
- scale
- تنظیم مقیاس مورد استفاده توسط بهره. مقادیر قابل قبول عبارتند از:
- dumpfile
- تنظیم پرونده برای تخلیه دادهها (dump)، مناسب برای gnuplot.
- dumpscale
- تنظیم مقیاس برای dumpfile. مقادیر قابل قبول همان مقادیر گزینه scale هستند. پیشفرض linlog است.
- fft2
- فعالسازی کانولوشن ۲ کاناله با استفاده از FFT مختلط. این کار سرعت را بهطور قابل توجهی بهبود میبخشد. پیشفرض غیرفعال است.
- min_phase
- فعالسازی پاسخ ضربه با حداقل فاز (minimum phase). پیشفرض غیرفعال است.
مثالها
- پایینگذر
در 1000 Hz:
firequalizer=gain='if(lt(f,1000), 0, -INF)'
- پایینگذر
در 1000 Hz با gain_entry:
firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
- اکولایزاسیون
سفارشی:
firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
- تأخیر
بالاتر با
فاز صفر
برای جبران
تأخیر:
firequalizer=delay=0.1:fixed=on:zero_phase=on
- پایینگذر
روی کانال
چپ،
بالاگذر
روی کانال
راست:
firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))' :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
flanger
اعمال جلوهٔ فلانجر (flanging) به صدا.
فیلتر گزینههای زیر را میپذیرد:
- delay
- تنظیم تأخیر پایه بر حسب میلیثانیه. محدوده از 0 تا 30. مقدار پیشفرض 0 است.
- depth
- تنظیم تأخیر جاروب (sweep) اضافه شده بر حسب میلیثانیه. محدوده از 0 تا 10. مقدار پیشفرض 2 است.
- regen
- تنظیم درصد بازتولید (بازخورد سیگنال تأخیریافته). محدوده از -95 تا 95. مقدار پیشفرض 0 است.
- width
- تنظیم درصد سیگنال تأخیریافتهٔ ترکیبشده با سیگنال اصلی. محدوده از 0 تا 100. مقدار پیشفرض 71 است.
- speed
- تنظیم تعداد جاروبها در هر ثانیه (Hz). محدوده از 0.1 تا 10. مقدار پیشفرض 0.5 است.
- shape
- تنظیم شکل موج جاروب، میتواند triangular (مثلثی) یا sinusoidal (سینوسی) باشد. مقدار پیشفرض sinusoidal است.
- phase
- تنظیم درصد شیفت موج جاروب برای چندکاناله. محدوده از 0 تا 100. مقدار پیشفرض 25 است.
- interp
- تنظیم درونیابی خط تأخیر، linear (خطی) یا quadratic (درجه دوم). پیشفرض linear است.
haas
اعمال جلوهٔ هاس (Haas effect) به صدا.
توجه داشته باشید که اعمال این فیلتر بر روی سیگنالهای مونو بیشترین کاربرد را دارد. با اعمال این فیلتر بر روی سیگنالهای مونو، مقداری جهتمندی به صدا داده شده و تصویر استریوی آن بسط داده میشود.
فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم سطح ورودی. بهطور پیشفرض 1 یا 0dB است.
- level_out
- تنظیم سطح خروجی. بهطور پیشفرض 1 یا 0dB است.
- side_gain
- تنظیم بهرهٔ اعمالشده به بخش جانبی سیگنال. بهطور پیشفرض 1 است.
- middle_source
- تنظیم نوع منبع میانی. میتواند یکی از موارد زیر باشد:
- middle_phase
- تغییر فاز میانی. بهطور پیشفرض غیرفعال است.
- left_delay
- تنظیم تأخیر کانال چپ. بهطور پیشفرض 2.05 میلیثانیه است.
- left_balance
- تنظیم تراز (balance) کانال چپ. بهطور پیشفرض -1 است.
- left_gain
- تنظیم بهرهٔ کانال چپ. بهطور پیشفرض 1 است.
- left_phase
- تغییر فاز چپ. بهطور پیشفرض غیرفعال است.
- right_delay
- تنظیم تأخیر کانال راست. بهطور پیشفرض 2.12 میلیثانیه است.
- right_balance
- تنظیم تراز کانال راست. بهطور پیشفرض 1 است.
- right_gain
- تنظیم بهرهٔ کانال راست. بهطور پیشفرض 1 است.
- right_phase
- تغییر فاز راست. بهطور پیشفرض فعال است.
hdcd
رمزگشایی دادههای HDCD (سازگار با وضوح بالا). یک استریم PCM شانزده بیتی با کدهای HDCD جاسازیشده به یک استریم PCM بیست بیتی گسترش مییابد.
این فیلتر از ویژگیهای Peak Extend و Low-level Gain Adjustment در HDCD پشتیبانی کرده و پرچم Transient Filter را تشخیص میدهد.
ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
هنگام استفاده از فیلتر با wav، توجه داشته باشید که کدگذاری پیشفرض برای wav شانزده بیتی است، بنابراین استریم ۲۰ بیتی حاصل دوباره به ۱۶ بیت بریده (truncate) خواهد شد. برای دریافت خروجی PCM بیست و چهار بیتی، از چیزی مانند -acodec pcm_s24le بعد از فیلتر استفاده کنید.
ffmpeg -i HDCD16.wav -af hdcd OUT16.wav ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
فیلتر گزینههای زیر را میپذیرد:
- disable_autoconvert
- غیرفعالسازی هرگونه تبدیل خودکار قالب یا نمونهبرداری مجدد در گراف فیلتر.
- process_stereo
- پردازش همزمان کانالهای استریو با یکدیگر. اگر target_gain بین کانالها مطابقت نداشته باشد، آن را نامعتبر در نظر گرفته و از آخرین target_gain معتبر استفاده میکند.
- cdt_ms
- تنظیم دورهٔ زمانی تایمر تشخیص کد بر حسب میلیثانیه.
- force_pe
- همیشه اوجهای بالاتر از -3dBFS را گسترش بده، حتی اگر PE سیگنال داده نشده باشد.
- analyze_mode
- جایگزینی
صدا با یک
تون
یکنواخت و
تنظیم
دامنه برای
نشان دادن
جنبهای
خاص از
فرایند
رمزگشایی.
پرونده
خروجی
میتواند
در یک
ویرایشگر
صوتی در
کنار
پرونده
اصلی برای
کمک به
تحلیل
بارگذاری
شود.
"analyze_mode=pe:force_pe=true" میتواند برای مشاهدهٔ تمام نمونههای بالای سطح PE استفاده شود.
حالتها عبارتند از:
- 0, off
- غیرفعال
- 1, lle
- سطح تنظیم بهره در هر نمونه
- 2, pe
- نمونههایی که در آنها Peak Extend رخ میدهد
- 3, cdt
- نمونههایی که تایمر تشخیص کد در آنها فعال است
- 4, tgm
- نمونههایی که در آنها بهرهٔ هدف بین کانالها مطابقت ندارد
headphone
اعمال توابع تبدیل وابسته به سر (HRTF) برای ایجاد بلندگوهای مجازی در اطراف کاربر جهت گوش دادن دوگوشی (binaural) از طریق هدفون. پاسخهای ضربهٔ وابسته به سر (HRIR) از طریق استریمهای اضافی ارائه میشوند؛ برای هر کانال به یک استریم ورودی استریو نیاز است.
فیلتر گزینههای زیر را میپذیرد:
- map
- تنظیم نگاشت استریمهای ورودی برای کانولوشن. شناسه فهرستی جداشده با '|' از نامهای کانال به ترتیبی است که به عنوان ورودیهای استریم اضافی به فیلتر داده شدهاند. این گزینه همچنین تعداد استریمهای ورودی را مشخص میکند. تعداد استریمهای ورودی نباید کمتر از تعداد کانالهای استریم اول به اضافهٔ یک باشد.
- gain
- تنظیم بهرهٔ اعمالشده به صدا. مقدار بر حسب dB است. پیشفرض 0 است.
- type
- تنظیم نوع پردازش. میتواند time یا freq باشد. time پردازش صدا در حوزهٔ زمان است که کند میباشد. freq پردازش صدا در حوزهٔ فرکانس است که سریع میباشد. پیشفرض freq است.
- lfe
- تنظیم بهرهٔ سفارشی برای کانالهای LFE. مقدار بر حسب dB است. پیشفرض 0 است.
- size
- تنظیم اندازهٔ فریم بر حسب تعداد نمونههایی که به طور همزمان پردازش میشوند. مقدار پیشفرض 1024 است. محدودهٔ مجاز از 1024 تا 96000 است.
- hrir
- تنظیم قالب استریم hrir. مقدار پیشفرض stereo است. مقدار جایگزین multich میباشد. اگر مقدار روی stereo تنظیم شود، تعداد استریمهای اضافی باید بزرگتر یا مساوی با تعداد کانالهای ورودی در اولین استریم ورودی باشد. همچنین هر استریم اضافی باید دارای تعداد کانالهای استریو باشد. اگر مقدار روی multich تنظیم شود، تعداد استریمهای اضافی باید دقیقاً یکی باشد. همچنین تعداد کانالهای ورودی استریم اضافی باید مساوی یا بزرگتر از دو برابر تعداد کانالهای اولین استریم ورودی باشد.
مثالها
- مثال کامل
با استفاده
از
پروندههای
wav به عنوان
ضرایب
همراه با
فیلترهای amovie
برای تبدیل
کاهشی 7.1 (downmix)؛
هر فیلتر amovie
از یک
پروندهٔ
استریو با
ضرایب IR به
عنوان
ورودی
استفاده
میکند.
پروندهها
ضرایب را
برای هر
موقعیت از
بلندگوی
مجازی
ارائه
میدهند:
ffmpeg -i input.wav -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR" output.wav
- مثال کامل
با استفاده
از
پروندههای
wav به عنوان
ضرایب
همراه با
فیلترهای amovie
برای تبدیل
کاهشی 7.1،
اما اکنون
در قالب multich
hrir:
ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich" output.wav
highpass
اعمال یک فیلتر بالاگذر با فرکانس نقطهٔ 3dB. فیلتر میتواند تکقطبی یا دوقطبی (پیشفرض) باشد. شیب افت فیلتر (roll off) برابر با 6dB بهازای هر قطب در هر اکتاو (20dB بهازای هر قطب در هر دهه) است.
فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس بر حسب Hz. پیشفرض 3000 است.
- poles, p
- تنظیم تعداد قطبها. پیشفرض 2 است.
- width_type, t
- تنظیم روش مشخص کردن پهنای باند فیلتر.
- width, w
- تعیین پهنای باند فیلتر بر حسب واحدهای width_type. فقط برای فیلتر دوقطبی اعمال میشود. پیشفرض 0.707q است و پاسخ باترورث (Butterworth) میدهد.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالهای مورد نظر برای فیلترسازی، بهطور پیشفرض همه کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad، بهطور پیشفرض غیرفعال است. فعال کردن آن پاسخ دامنه در DC را به 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازهٔ
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
به اندازهٔ
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر کوتاه
میشود)
فیلترسازی
فاز خطی
خواهد شد،
در غیر این
صورت اگر به
اندازه
کافی بزرگ
نباشد فقط
مصنوعات
صوتی
نامطلوب
تولید
میکند.
توجه داشته باشید که تأخیر فیلتر هنگام تنظیم به یک مقدار غیر صفر دقیقاً به همین تعداد نمونه خواهد بود.
دستورها
این فیلتر از دستورهای زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس بالاگذر. دستور زبان برای این دستور: "frequency"
- width_type, t
- تغییر width_type بالاگذر. دستور زبان برای این دستور: "width_type"
- width, w
- تغییر پهنای باند بالاگذر. دستور زبان برای این دستور: "width"
- mix, m
- تغییر میکس بالاگذر. دستور زبان برای این دستور: "mix"
join
الحاق چندین استریم ورودی به یک استریم چندکاناله.
پارامترهای زیر را میپذیرد:
- inputs
- تعداد استریمهای ورودی. پیشفرض 2 است.
- channel_layout
- چینش کانال خروجی مورد نظر. پیشفرض stereo است.
- map
- نگاشت کانالها از ورودیها به خروجی. شناسه فهرستی جداشده با '|' از نگاشتها است، که هر یک به شکل "input_idx.in_channel-out_channel" میباشند. input_idx شاخص مبتنی بر صفر استریم ورودی است. in_channel میتواند نام کانال ورودی (مانند FL برای چپ جلو) یا شاخص آن در استریم ورودی مشخصشده باشد. out_channel نام کانال خروجی است.
فیلتر در صورت عدم تعیین صریح نگاشتها، برای حدس زدن آنها تلاش خواهد کرد. این کار ابتدا با تلاش برای یافتن یک کانال ورودی تطبیقیافتهٔ استفادهنشده انجام میشود و در صورت عدم موفقیت، اولین کانال ورودی استفادهنشده را انتخاب میکند.
الحاق ۳ ورودی (با چینشهای کانال به درستی تنظیمشده):
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
ساخت یک خروجی 5.1 از ۶ استریم تککاناله:
ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex 'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE' out
ladspa
بارگذاری یک پلاگین LADSPA (رابط برنامهنویسی ساده برای توسعهدهندگان صدای لینوکس).
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-ladspa" پیکربندی کنید.
- file, f
- نام کتابخانهٔ پلاگین LADSPA برای بارگذاری را مشخص میکند. اگر متغیر محیطی LADSPA_PATH تعریف شده باشد، پلاگین LADSPA در هر یک از دایرکتوریهای مشخصشده توسط فهرست جداشده با دونقطه در LADSPA_PATH جستجو میشود، در غیر این صورت در مسیرهای استاندارد LADSPA که به این ترتیب هستند جستجو خواهد شد: HOME/.ladspa/lib/، /usr/local/lib/ladspa/، /usr/lib/ladspa/.
- plugin, p
- پلاگین درون کتابخانه را مشخص میکند. برخی کتابخانهها فقط شامل یک پلاگین هستند، اما برخی دیگر شامل تعداد زیادی از آنها میباشند. اگر این گزینه تنظیم نشود، فیلتر تمام پلاگینهای موجود درون کتابخانهٔ مشخصشده را فهرست میکند.
- controls, c
- تنظیم فهرست جداشده با '|' از کنترلها که صفر یا چند مقدار ممیز شناور هستند و رفتار پلاگین بارگذاریشده را تعیین میکنند (برای مثال تأخیر، آستانه یا بهره). کنترلها باید با استفاده از دستور زبان زیر تعریف شوند: c0=value0|c1=value1|c2=value2|..., که در آن valuei مقدار تنظیمشده روی کنترل i-ام است. همچنین میتوانند با دستور زبان زیر نیز تعریف شوند: value0|value1|value2|..., که در آن valuei مقدار تنظیمشده روی کنترل i-ام است. اگر controls روی "help" تنظیم شود، تمام کنترلهای موجود و محدودههای معتبر آنها چاپ میشوند.
- sample_rate, s
- تعیین نرخ نمونهبرداری، پیشفرض 44100 است. فقط در صورتی استفاده میشود که پلاگین ورودی صفر داشته باشد.
- nb_samples, n
- تنظیم تعداد نمونهها بهازای هر کانال در هر فریم خروجی، پیشفرض 1024 است. فقط در صورتی استفاده میشود که پلاگین ورودی صفر داشته باشد.
- duration, d
- تنظیم حداقل مدتزمان صدای منبع. برای دستور زبان پذیرفتهشده به بخش مدتزمان (Time duration) در راهنمای ffmpeg-utils(1) مراجعه کنید. توجه داشته باشید که مدتزمان حاصل ممکن است بیشتر از مدتزمان مشخصشده باشد، زیرا صدای تولیدشده همیشه در پایان یک فریم کامل قطع میشود. اگر مشخص نشود، یا مدتزمان بیانشده منفی باشد، فرض میشود صدا برای همیشه تولید میشود. فقط در صورتی استفاده میشود که پلاگین ورودی صفر داشته باشد.
- latency, l
- فعالسازی جبران تاخیر (latency)، بهطور پیشفرض غیرفعال است. فقط در صورتی استفاده میشود که پلاگین ورودی داشته باشد.
مثالها
- فهرست کردن
تمام
پلاگینهای
موجود در
کتابخانهٔ
amp (پلاگین
نمونه LADSPA):
ladspa=file=amp
- فهرست کردن
تمام
کنترلهای
موجود و
محدودههای
معتبر
آنها برای
پلاگین
"vcf_notch" از
کتابخانهٔ
"VCF":
ladspa=f=vcf:p=vcf_notch:c=help
- شبیهسازی
تجهیزات
صوتی با
کیفیت
پایین با
استفاده از
کتابخانهٔ
پلاگین
"Computer Music Toolkit" (CMT):
ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
- افزودن
طنین (reverberation) به
صدا با
استفاده از
TAP-plugins
(پلاگینهای
پردازش
صوتی تام):
ladspa=file=tap_reverb:tap_reverb
- تولید نویز
سفید با
دامنهٔ 0.2:
ladspa=file=cmt:noise_source_white:c=c0=.2
- تولید ۲۰
تیک در
دقیقه (bpm) با
استفاده از
پلاگین "C*
Click - Metronome" از
کتابخانهٔ
"C* Audio Plugin Suite" (CAPS):
ladspa=file=caps:Click:c=c1=20'
- اعمال
جلوهٔ "C* Eq10X2
- Stereo 10-band equaliser":
ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
- افزایش حجم
صدا به
میزان 20dB با
استفاده از
fast lookahead limiter از
مجموعهٔ
"SWH Plugins"
استیو هریس:
ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
- تضعیف
فرکانسهای
پایین با
استفاده از
Multiband EQ از
مجموعهٔ
"SWH Plugins"
استیو هریس:
ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
- کاهش تصویر
استریو با
استفاده از
"Narrower" از
کتابخانهٔ
"C* Audio Plugin Suite" (CAPS):
ladspa=caps:Narrower
- یک نویز
سفید دیگر،
اکنون با
استفاده از
کتابخانهٔ
"C* Audio Plugin Suite" (CAPS):
ladspa=caps:White:.2
- مقداری
نویز
فرکتال، با
استفاده از
کتابخانهٔ
"C* Audio Plugin Suite" (CAPS):
ladspa=caps:Fractal:c=c1=1
- نرمالسازی
پویای حجم
صدا با
استفاده از
پلاگین
"VLevel":
ladspa=vlevel-ladspa:vlevel_mono
دستورها
این فیلتر از دستورهای زیر پشتیبانی میکند:
- cN
- تغییر
مقدار
کنترل N-ام.
اگر مقدار مشخصشده معتبر نباشد، نادیده گرفته شده و مقدار قبلی حفظ میشود.
loudnorm
نرمالسازی بلندی صدا بر پایهٔ EBU R128. شامل هر دو حالت نرمالسازی پویا و خطی است. از هر دو حالت تکگذر (پخشهای زنده، پروندهها) و دوگذر (پروندهها) پشتیبانی میکند. این الگوریتم میتواند IL، LRA و حداکثر اوج واقعی (true peak) را هدف قرار دهد. در حالت پویا، برای تشخیص دقیق اوجهای واقعی، استریم صوتی به 192 kHz فرانویسی (upsample) خواهد شد. از گزینهٔ "-ar" یا فیلتر "aresample" برای تنظیم صریح نرخ نمونهبرداری خروجی استفاده کنید.
فیلتر گزینههای زیر را میپذیرد:
- I, i
- تنظیم بلندی صدای یکپارچهٔ هدف (integrated loudness). محدوده از -70.0 تا -5.0 است. مقدار پیشفرض -24.0 است.
- LRA, lra
- تنظیم محدودهٔ بلندی صدای هدف (loudness range). محدوده از 1.0 تا 50.0 است. مقدار پیشفرض 7.0 است.
- TP, tp
- تنظیم حداکثر اوج واقعی (true peak). محدوده از -9.0 تا +0.0 است. مقدار پیشفرض -2.0 است.
- measured_I, measured_i
- مقدار IL اندازهگیریشدهٔ پروندهٔ ورودی. محدوده از -99.0 تا +0.0 است.
- measured_LRA, measured_lra
- مقدار LRA اندازهگیریشدهٔ پروندهٔ ورودی. محدوده از 0.0 تا 99.0 است.
- measured_TP, measured_tp
- مقدار اوج واقعی اندازهگیریشدهٔ پروندهٔ ورودی. محدوده از -99.0 تا +99.0 است.
- measured_thresh
- آستانهٔ اندازهگیریشدهٔ پروندهٔ ورودی. محدوده از -99.0 تا +0.0 است.
- offset
- تنظیم بهرهٔ آفست. بهره پیش از محدودکنندهٔ اوج واقعی اعمال میشود. محدوده از -99.0 تا +99.0 است. پیشفرض +0.0 است.
- linear
- نرمالسازی از طریق مقیاسبندی خطی صدای مبدا. گزینههای "measured_I"، "measured_LRA"، "measured_TP" و "measured_thresh" همگی باید مشخص شوند. LRA هدف نباید کمتر از LRA مبدا باشد و تغییر در بلندی صدای یکپارچه نباید منجر به اوج واقعی شود که از TP هدف فراتر رود. اگر هر یک از این شرایط برآورده نشود، حالت نرمالسازی به dynamic بازمیگردد. گزینهها "true" یا "false" هستند. پیشفرض "true" است.
- dual_mono
- در نظر گرفتن پروندههای ورودی مونو به عنوان «dual-mono». اگر یک پروندهٔ مونو برای پخش بر روی یک سیستم استریو در نظر گرفته شده باشد، اندازهگیری EBU R128 آن از نظر ادراکی نادرست خواهد بود. در صورت تنظیم بر روی "true"، این گزینه این اثر را جبران خواهد کرد. پروندههای ورودی چندکاناله تحت تأثیر این گزینه قرار نمیگیرند. گزینهها true یا false هستند. پیشفرض false است.
- print_format
- تنظیم قالب چاپ آمار. گزینهها summary، json یا none هستند. مقدار پیشفرض none است.
- stats_file
- نوشتن آمار در پروندهٔ مشخصشده. قالب توسط print_format کنترل میشود، که باید تنظیم شده باشد. برای نوشتن در خروجی استاندارد، "-" را مشخص کنید. بهطور پیشفرض تنظیم نشده است.
lowpass
اعمال یک فیلتر پایینگذر با فرکانس نقطهٔ 3dB. فیلتر میتواند تکقطبی یا دوقطبی (پیشفرض) باشد. شیب افت فیلتر (roll off) برابر با 6dB بهازای هر قطب در هر اکتاو (20dB بهازای هر قطب در هر دهه) است.
فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس بر حسب Hz. پیشفرض 500 است.
- poles, p
- تنظیم تعداد قطبها. پیشفرض 2 است.
- width_type, t
- تنظیم روش مشخص کردن پهنای باند فیلتر.
- width, w
- تعیین پهنای باند فیلتر بر حسب واحدهای width_type. فقط برای فیلتر دوقطبی اعمال میشود. پیشفرض 0.707q است و پاسخ باترورث (Butterworth) میدهد.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
- channels, c
- تعیین کانالهای مورد نظر برای فیلترسازی، بهطور پیشفرض همه کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad، بهطور پیشفرض غیرفعال است. فعال کردن آن پاسخ دامنه در DC را به 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلترسازی.
- block_size, b
- تنظیم
اندازهٔ
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
به اندازهٔ
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که
هنگام
رسیدن به
مقادیر
نزدیک به
صفر کوتاه
میشود)
فیلترسازی
فاز خطی
خواهد شد،
در غیر این
صورت اگر به
اندازه
کافی بزرگ
نباشد فقط
مصنوعات
صوتی
نامطلوب
تولید
میکند.
توجه داشته باشید که تأخیر فیلتر هنگام تنظیم به یک مقدار غیر صفر دقیقاً به همین تعداد نمونه خواهد بود.
مثالها
- •
- پایینگذر
فقط برای
کانال LFE؛
اگر LFE موجود
نباشد کاری
انجام
نمیدهد:
lowpass=c=LFE
دستورها
این فیلتر از دستورهای زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس پایینگذر. دستور زبان برای این دستور: "frequency"
- width_type, t
- تغییر width_type پایینگذر. دستور زبان برای این دستور: "width_type"
- width, w
- تغییر پهنای باند پایینگذر. دستور زبان برای این دستور: "width"
- mix, m
- تغییر میکس پایینگذر. دستور زبان برای این دستور: "mix"
lv2
بارگذاری یک پلاگین LV2 (نسخهٔ ۲ LADSPA).
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-lv2" پیکربندی کنید.
- plugin, p
- شناسهٔ یکتای منبع (URI) پلاگین را مشخص میکند. ممکن است لازم باشد ':' را اسکیپ کنید.
- controls, c
- تنظیم فهرست جداشده با '|' از کنترلها که صفر یا چند مقدار ممیز شناور هستند و رفتار پلاگین بارگذاریشده را تعیین میکنند (برای مثال تأخیر، آستانه یا بهره). اگر controls روی "help" تنظیم شود، تمام کنترلهای موجود و محدودههای معتبر آنها چاپ میشوند.
- sample_rate, s
- تعیین نرخ نمونهبرداری، پیشفرض 44100 است. فقط در صورتی استفاده میشود که پلاگین ورودی صفر داشته باشد.
- nb_samples, n
- تنظیم تعداد نمونهها بهازای هر کانال در هر فریم خروجی، پیشفرض 1024 است. فقط در صورتی استفاده میشود که پلاگین ورودی صفر داشته باشد.
- duration, d
- تنظیم حداقل مدتزمان صدای منبع. برای دستور زبان پذیرفتهشده به بخش مدتزمان (Time duration) در راهنمای ffmpeg-utils(1) مراجعه کنید. توجه داشته باشید که مدتزمان حاصل ممکن است بیشتر از مدتزمان مشخصشده باشد، زیرا صدای تولیدشده همیشه در پایان یک فریم کامل قطع میشود. اگر مشخص نشود، یا مدتزمان بیانشده منفی باشد، فرض میشود صدا برای همیشه تولید میشود. فقط در صورتی استفاده میشود که پلاگین ورودی صفر داشته باشد.
مثالها
- اعمال
پلاگین
تقویت باس
از Calf:
lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
- اعمال
پلاگین
وینیل از Calf:
lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
- اعمال
پلاگین بیت
کراشر از ArtyFX:
lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
دستورها
این فیلتر از تمامی گزینههایی که توسط پلاگین به عنوان دستور صادر شدهاند پشتیبانی میکند.
mcompand
فشردهسازی یا گسترش چندباندهٔ محدودهٔ دینامیکی صدا.
صدای ورودی با استفاده از فیلترهای IIR مرتبهٔ چهارم لینکویتز-رایلی به باندها تقسیم میشود. این شبیه به کراساوور یک بلندگو است و در غیاب عملکرد کمپاندر منجر به پاسخ فرکانسی مسطح میشود.
پارامترهای زیر را میپذیرد:
- args
- دستور زبان این گزینه عبارت است از: attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... برای توضیح هر مورد به مستندات فیلتر compand مراجعه کنید.
pan
میکس کانالها با سطوح بهرهٔ مشخص. این فیلتر چینش کانال خروجی و به دنبال آن مجموعهای از تعاریف کانالها را میپذیرد.
این فیلتر همچنین برای نگاشت مجدد بهینهٔ کانالهای یک جریان صوتی طراحی شده است.
فیلتر پارامترهایی به این شکل را میپذیرد: "l|outdef|outdef|..."
- l
- چینش کانال خروجی یا تعداد کانالها
- outdef
- مشخصات کانال خروجی، به شکل: "out_name=[gain*]in_name[(+-)[gain*]in_name...]"
- out_name
- کانال خروجی برای تعریف، یا نام یک کانال (FL، FR، و غیره) یا شمارهٔ یک کانال (c0، c1، و غیره)
- gain
- ضریب ضربی برای کانال، مقدار 1 حجم صدا را بدون تغییر باقی میگذارد
- in_name
- کانال ورودی مورد استفاده، برای جزئیات به out_name مراجعه کنید؛ ترکیب کانالهای ورودی نامگذاریشده و شمارهگذاریشده امکانپذیر نیست
اگر `=' در مشخصات کانال با `<' جایگزین شود، بهرهها برای آن مشخصات بازنرمالسازی میشوند به طوری که مجموع آنها ۱ شود و در نتیجه از نویز برش (clipping) جلوگیری به عمل آید.
مثالهای میکس
برای مثال، اگر میخواهید تبدیل کاهشی از استریو به مونو انجام دهید، اما با ضریب بزرگتری برای کانال چپ:
pan=1c|c0=0.9*c0+0.1*c1
یک تبدیل کاهشی سفارشی به استریو که به صورت خودکار برای صدای فراگیر ۳، ۴، ۵ و ۷ کاناله عمل میکند:
pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
توجه داشته باشید که ffmpeg یک سیستم پیشفرض تبدیل کاهشی (و افزایشی) را ادغام کرده است که باید ترجیح داده شود (گزینهٔ "-ac" را ببینید) مگر اینکه نیازهای بسیار خاصی داشته باشید.
مثالهای نگاشت مجدد
نگاشت مجدد کانال مؤثر خواهد بود اگر، و فقط اگر:
- *<ضرایب بهره صفر یا یک باشند،>
- *<فقط یک ورودی بهازای هر کانال خروجی باشد،>
اگر تمامی این شرایط برآورده شوند، فیلتر به کاربر اطلاع میدهد ("Pure channel mapping detected")، و از روشی بهینهشده و بدون اتلاف برای انجام نگاشت مجدد استفاده میکند.
برای مثال، اگر یک منبع 5.1 دارید و میخواهید با حذف کانالهای اضافی یک جریان صوتی استریو داشته باشید:
pan="stereo| c0=FL | c1=FR"
با فرض همان منبع، میتوانید کانالهای چپ جلو و راست جلو را نیز جابهجا کرده و چینش کانال ورودی را حفظ کنید:
pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
اگر ورودی یک جریان صوتی استریو است، میتوانید کانال چپ جلو را بیصدا کنید (و همچنان چینش کانال استریو را حفظ کنید) با:
pan="stereo|c1=c1"
همچنان با یک جریان صوتی استریوی ورودی، میتوانید کانال راست را در هر دو کانال چپ و راست جلو کپی کنید:
pan="stereo| c0=FR | c1=FR"
replaygain
فیلتر اسکنر ReplayGain. این فیلتر یک جریان صوتی را به عنوان ورودی دریافت کرده و آن را بدون تغییر در خروجی صادر میکند. در پایان فیلترسازی، "track_gain" و "track_peak" را نمایش میدهد.
فیلتر گزینههای فقطخواندنی صادرشدهٔ زیر را میپذیرد:
- track_gain
- بهرهٔ تِرَک صادرشده بر حسب dB در انتهای جریان.
- track_peak
- اوج تِرَک صادرشده در انتهای جریان.
resample
تبدیل قالب نمونهٔ صوتی، نرخ نمونهبرداری و چینش کانال. این فیلتر برای استفادهٔ مستقیم در نظر گرفته نشده است.
rubberband
اعمال کشش زمانی (time-stretching) و تغییر گام (pitch-shifting) با librubberband.
برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-librubberband" پیکربندی کنید.
فیلتر گزینههای زیر را میپذیرد:
- tempo
- تنظیم ضریب مقیاس ضرباهنگ (tempo).
- pitch
- تنظیم ضریب مقیاس گام (pitch).
- transients
- تنظیم آشکارساز حالتهای گذرا (transients). مقادیر ممکن عبارتند از:
- detector
- تنظیم آشکارساز. مقادیر ممکن عبارتند از:
- phase
- تنظیم فاز. مقادیر ممکن عبارتند از:
- window
- تنظیم اندازهٔ پنجرهٔ پردازش. مقادیر ممکن عبارتند از:
- smoothing
- تنظیم هموارسازی. مقادیر ممکن عبارتند از:
- formant
- فعالسازی حفظ سازندها (formant) هنگام تغییر گام. مقادیر ممکن عبارتند از:
- pitchq
- تنظیم کیفیت گام. مقادیر ممکن عبارتند از:
- channels
- تنظیم کانالها. مقادیر ممکن عبارتند از:
دستورها
این فیلتر از دستورهای زیر پشتیبانی میکند:
sidechaincompress
این فیلتر مانند یک کمپرسور معمولی عمل میکند، اما قابلیت فشردهسازی سیگنال شناساییشده را با استفاده از سیگنال ورودی دوم دارد. به دو استریم ورودی نیاز دارد و یک استریم خروجی برمیگرداند. اولین استریم ورودی بسته به سیگنال استریم دوم پردازش خواهد شد. سپس سیگنال فیلترشده میتواند با فیلترهای دیگر در مراحل بعدی پردازش فیلتر شود. فیلترهای pan و amerge را ببینید.
فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم بهرهٔ ورودی. پیشفرض 1 است. محدوده بین 0.015625 و 64 است.
- mode
- تنظیم حالت عملکرد کمپرسور. میتواند "upward" یا "downward" باشد. پیشفرض "downward" است.
- threshold
- اگر سیگنال استریم دوم از این سطح فراتر رود، بر کاهش بهرهٔ استریم اول تأثیر میگذارد. بهطور پیشفرض 0.125 است. محدوده بین 0.00097563 و 1 است.
- ratio
- تنظیم نسبتی که سیگنال بر اساس آن کاهش مییابد. 1:2 به این معنی است که اگر سطح 4dB بالاتر از آستانه باشد، پس از کاهش تنها 2dB بالاتر خواهد بود. پیشفرض 2 است. محدوده بین 1 و 20 است.
- attack
- مدتزمان به میلیثانیه که سیگنال باید بالای آستانه بماند تا کاهش بهره آغاز شود. پیشفرض 20 است. محدوده بین 0.01 و 2000 است.
- release
- مدتزمان به میلیثانیه که سیگنال باید به زیر آستانه بیفتد تا کاهش دوباره کم شود. پیشفرض 250 است. محدوده بین 0.01 و 9000 است.
- makeup
- تنظیم مقداری که سیگنال پس از پردازش تقویت خواهد شد. پیشفرض 1 است. محدوده از 1 تا 64 است.
- knee
- انحنا دادن به زانوی تند در اطراف آستانه برای ورود نرمتر به کاهش بهره. پیشفرض 2.82843 است. محدوده بین 1 و 8 است.
- link
- انتخاب اینکه آیا سطح میانگین ("average") بین تمامی کانالهای استریم سایدچین یا کانال بلندتر ("maximum") بر کاهش تأثیر بگذارد. پیشفرض "average" است.
- detection
- تعیین اینکه آیا سیگنال دقیق در حالت "peak" در نظر گرفته شود یا یک سیگنال RMS در حالت "rms". پیشفرض "rms" است که عمدتاً نرمتر عمل میکند.
- level_sc
- تنظیم بهرهٔ سایدچین. پیشفرض 1 است. محدوده بین 0.015625 و 64 است.
- mix
- میزان استفاده از سیگنال فشردهشده در خروجی. پیشفرض 1 است. محدوده بین 0 و 1 است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
مثالها
- •
- مثال کامل ffmpeg
با دریافت ۲
ورودی
صوتی، که
ورودی اول
بسته به
سیگنال
ورودی دوم
فشرده شده و
سپس سیگنال
فشردهشده
با ورودی
دوم ادغام
میشود:
ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
sidechaingate
یک گیت سایدچین مانند یک نویز گیت معمولی (باند پهن) عمل میکند، اما توانایی فیلتر کردن سیگنال تشخیصدادهشده را پیش از ارسال آن به مرحلهٔ کاهش بهره دارد. بهطور معمول یک گیت از سیگنال تماممحدوده برای تشخیص سطحی بالاتر از آستانه استفاده میکند. برای مثال: اگر تمامی فرکانسهای پایینتر را از سیگنال سایدچین خود حذف کنید، گیت تنها در صورتی حجم صدای ترک شما را کاهش میدهد که فرکانسهای بالای کافی وجود نداشته باشد. با این روش قادر خواهید بود طنین (رزونانس) یک درام طبیعی را کاهش دهید یا «غرش و لرزش» ناشی از ضربات بیصداشده از یک گیتار با دیستورشن شدید را حذف نمایید. به دو استریم ورودی نیاز دارد و یک استریم خروجی برمیگرداند. اولین استریم ورودی بسته به سیگنال استریم دوم پردازش خواهد شد.
فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم سطح ورودی قبل از فیلترسازی. پیشفرض 1 است. محدودهٔ مجاز از 0.015625 تا 64 است.
- mode
- تنظیم حالت عملکرد. میتواند "upward" یا "downward" باشد. پیشفرض "downward" است. اگر روی حالت "upward" تنظیم شود، بخشهای بالاتر سیگنال تقویت شده و محدودهٔ دینامیکی در جهت صعودی گسترش مییابد. در غیر این صورت، در حالت "downward" بخشهای پایینتر سیگنال کاهش مییابند.
- range
- تنظیم سطح کاهش بهره هنگامی که سیگنال زیر آستانه است. پیشفرض 0.06125 است. محدودهٔ مجاز از 0 تا 1 است. تنظیم این مقدار بر روی 0 کاهش را غیرفعال کرده و سپس فیلتر مانند یک اکسپندر رفتار میکند.
- threshold
- اگر یک سیگنال به بالاتر از این سطح برسد، کاهش بهره رها (متوقف) میشود. پیشفرض 0.125 است. محدودهٔ مجاز از 0 تا 1 است.
- ratio
- تنظیم نسبتی که سیگنال بر اساس آن کاهش مییابد. پیشفرض 2 است. محدودهٔ مجاز از 1 تا 9000 است.
- attack
- مدتزمان به میلیثانیه که سیگنال باید بالای آستانه بماند تا کاهش بهره متوقف شود. پیشفرض 20 میلیثانیه است. محدودهٔ مجاز از 0.01 تا 9000 است.
- release
- مدتزمان به میلیثانیه که سیگنال باید زیر آستانه بیفتد تا کاهش دوباره افزایش یابد. پیشفرض 250 میلیثانیه است. محدودهٔ مجاز از 0.01 تا 9000 است.
- makeup
- تنظیم مقدار تقویت سیگنال پس از پردازش. پیشفرض 1 است. محدودهٔ مجاز از 1 تا 64 است.
- knee
- انحنا دادن به زانوی تند در اطراف آستانه برای ورود نرمتر به کاهش بهره. پیشفرض 2.828427125 است. محدودهٔ مجاز از 1 تا 8 است.
- detection
- انتخاب اینکه آیا سیگنال دقیق برای تشخیص در نظر گرفته شود یا یک سیگنال شبه RMS. پیشفرض rms است. میتواند peak یا rms باشد.
- link
- انتخاب اینکه آیا سطح میانگین بین تمام کانالها یا کانال بلندتر بر کاهش تأثیر بگذارد. پیشفرض average است. میتواند average یا maximum باشد.
- level_sc
- تنظیم بهرهٔ سایدچین. پیشفرض 1 است. محدوده از 0.015625 تا 64 است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
silencedetect
تشخیص سکوت در یک استریم صوتی.
این فیلتر هنگامی که تشخیص دهد حجم صدای ورودی کمتر یا مساوی با یک مقدار تلورانس نویز برای مدتزمانی بزرگتر یا مساوی با حداقل مدتزمان نویز شناساییشده است، پیامی را ثبت میکند.
زمانها و مدتزمان چاپشده بر حسب ثانیه بیان میشوند. کلید متادادهٔ "lavfi.silence_start" یا "lavfi.silence_start.X" روی اولین فریمی که برچسب زمانی آن مساوی یا بیشتر از مدتزمان تشخیص باشد تنظیم میشود و شامل برچسب زمانی اولین فریم سکوت است.
کلیدهای متادادهٔ "lavfi.silence_duration" یا "lavfi.silence_duration.X" و "lavfi.silence_end" یا "lavfi.silence_end.X" روی اولین فریم پس از سکوت تنظیم میشوند. اگر mono فعال باشد و هر کانال به صورت جداگانه ارزیابی شود، کلیدهای دارای پسوند ".X" استفاده میشوند و "X" متناظر با شمارهٔ کانال است.
فیلتر گزینههای زیر را میپذیرد:
- noise, n
- تنظیم تلورانس نویز. میتواند بر حسب dB مشخص شود (در صورتی که "dB" به مقدار مشخصشده اضافه شود) یا نسبت دامنه. پیشفرض -60dB یا 0.001 است.
- duration, d
- تنظیم مدتزمان سکوت تا زمان اعلان (پیشفرض ۲ ثانیه است). برای ساختار نحوی پذیرفتهشده به بخش مدتزمان (Time duration) در راهنمای ffmpeg-utils(1) مراجعه کنید.
- mono, m
- پردازش جداگانهٔ هر کانال، به جای ترکیب آنها. بهطور پیشفرض غیرفعال است.
مثالها
- تشخیص ۵
ثانیه سکوت
با تلورانس
نویز -50dB:
silencedetect=n=-50dB:d=5
- مثال کامل
با ffmpeg برای
تشخیص سکوت
با تلورانس
نویز 0.0001 در
silence.mp3:
ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
silenceremove
حذف سکوت از ابتدا، میانه یا انتهای صدا.
فیلتر گزینههای زیر را میپذیرد:
- start_periods
- این مقدار برای نشان دادن اینکه آیا صدا باید در ابتدای صدا بریده شود یا خیر استفاده میشود. مقدار صفر نشان میدهد که هیچ سکوتی نباید از ابتدا بریده شود. هنگام مشخص کردن یک مقدار غیرصفر، صدا را تا زمانی که نا-سکوت پیدا کند برش میدهد. بهطور معمول، هنگام حذف سکوت از ابتدای صدا، مقدار start_periods برابر 1 خواهد بود اما میتواند به مقادیر بالاتری افزایش یابد تا تمام صدا را تا تعداد مشخصی از دورههای نا-سکوت برش دهد. مقدار پیشفرض 0 است.
- start_duration
- مشخص کردن مقدار زمانی که نا-سکوت باید تشخیص داده شود تا برش صدا متوقف گردد. با افزایش مدتزمان، انفجارهای لحظهای نویز میتوانند به عنوان سکوت در نظر گرفته شده و بریده شوند. مقدار پیشفرض 0 است.
- start_threshold
- این گزینه نشان میدهد چه مقدار نمونه باید به عنوان سکوت در نظر گرفته شود. برای صدای دیجیتال، مقدار 0 ممکن است مناسب باشد اما برای صدای ضبطشده از آنالوگ، ممکن است بخواهید این مقدار را برای در نظر گرفتن نویز پسزمینه افزایش دهید. میتواند بر حسب dB مشخص شود (در صورتی که "dB" به مقدار مشخصشده اضافه شود) یا نسبت دامنه. مقدار پیشفرض 0 است.
- start_silence
- مشخص کردن حداکثر مدتزمان سکوت در ابتدا که پس از برش حفظ خواهد شد. پیشفرض 0 است، که معادل حذف تمامی نمونههای تشخیص داده شده به عنوان سکوت میباشد.
- start_mode
- مشخص کردن حالت تشخیص پایان سکوت در ابتدای صدای چندکاناله. میتواند any یا all باشد. پیشفرض any است. با any، هر نمونه از هر کانالی که به عنوان نا-سکوت تشخیص داده شود، پایان برش سکوت در ابتدای استریم صوتی را راهاندازی میکند. با all، تنها اگر هر نمونه از تمام کانالها به عنوان نا-سکوت تشخیص داده شود، پایان برش سکوت در ابتدای استریم صوتی راهاندازی خواهد شد، کاربرد محدود.
- stop_periods
- تنظیم شمارش برای برش سکوت از انتهای صدا. هنگام مشخص کردن یک مقدار مثبت، صدا را پس از یافتن دورهٔ سکوت مشخصشده برش میدهد. برای حذف سکوت از میانهٔ یک پرونده، یک مقدار منفی برای stop_periods مشخص کنید. این مقدار سپس به عنوان یک مقدار مثبت در نظر گرفته میشود و برای نشان دادن این است که اثر باید پردازش را همانطور که توسط stop_periods مشخص شده بازراهاندازی کند، که آن را برای حذف دورههای سکوت در میانهٔ صدا مناسب میسازد. مقدار پیشفرض 0 است.
- stop_duration
- مشخص کردن مدتزمانی از سکوت که باید پیش از توقف کپی صدا وجود داشته باشد. با مشخص کردن مدتزمان بالاتر، سکوتی که مورد نیاز است میتواند در صدا باقی بماند. مقدار پیشفرض 0 است.
- stop_threshold
- این گزینه همانند start_threshold است اما برای برش سکوت از انتهای صدا به کار میرود. میتواند بر حسب dB مشخص شود (در صورتی که "dB" به مقدار مشخصشده پیوست شود) یا نسبت دامنه. مقدار پیشفرض 0 است.
- stop_silence
- مشخص کردن حداکثر مدتزمان سکوت در انتها که پس از برش حفظ خواهد شد. پیشفرض 0 است، که معادل حذف تمام نمونههای تشخیصدادهشده به عنوان سکوت میباشد.
- stop_mode
- مشخص کردن حالت تشخیص شروع سکوت پس از آغاز صدای چندکاناله. میتواند any یا all باشد. پیشفرض all است. با any، هر نمونه از هر کانالی که به عنوان سکوت تشخیص داده شود، آغاز برش سکوت پس از شروع استریم صوتی را راهاندازی میکند، کاربرد محدود. با all، تنها اگر هر نمونه از تمامی کانالها به عنوان سکوت تشخیص داده شود، آغاز برش سکوت پس از شروع استریم صوتی راهاندازی خواهد شد.
- detection
- تنظیم نحوهٔ تشخیص سکوت.
- avg
- میانگین مقادیر مطلق نمونهها در پنجرهٔ متحرک.
- rms
- جذر میانگین مربعات مقادیر مطلق نمونهها در پنجرهٔ متحرک.
- peak
- حداکثر مقادیر مطلق نمونهها در پنجرهٔ متحرک.
- median
- میانهٔ مقادیر مطلق نمونهها در پنجرهٔ متحرک.
- ptp
- قدر مطلق تفاوت اوج بیشینه تا اوج کمینه نمونهها در پنجرهٔ متحرک.
- dev
- انحراف معیار مقادیر نمونهها در پنجرهٔ متحرک.
مقدار پیشفرض "rms" است.
- window
- تنظیم مدتزمان بر حسب تعداد ثانیهها که برای محاسبهٔ اندازهٔ پنجره بر حسب تعداد نمونهها جهت تشخیص سکوت استفاده میشود. استفاده از 0 عملاً هرگونه پنجرهبندی را غیرفعال کرده و صرفاً از یک نمونهٔ منفرد بهازای هر کانال برای تشخیص سکوت استفاده میکند. در این حالت ممکن است لازم باشد start_silence و/یا stop_silence به مقادیر غیرصفر به همراه start_duration و/یا stop_duration به مقادیر غیرصفر تنظیم شوند. مقدار پیشفرض 0.02 است. محدودهٔ مجاز از 0 تا 10 است.
- timestamp
- تنظیم حالت پردازش برچسب زمانی خروجی هر فریم صوتی.
- write
- بازنویسی کامل برچسبهای زمانی، فقط زمان شروع برای اولین فریم خروجی نگهداشته میشود.
- copy
- فریمهای حذفنشده با همان برچسب زمانی فریم صوتی ورودی باقی میمانند.
مقدار پیشفرض "write" است.
مثالها
- مثال زیر
نشان
میدهد
چگونه
میتوان از
این فیلتر
برای شروع
ضبطی
استفاده
کرد که فاقد
تأخیر در
ابتدا (که
معمولاً
بین فشردن
دکمهٔ ضبط و
آغاز اجرا
رخ میدهد)
باشد:
silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
- حذف تمامی
سکوتهای
مشاهدهشده
از ابتدا تا
انتها در
جایی که بیش
از ۱ ثانیه
سکوت در صدا
وجود دارد:
silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
- حذف تمامی
نمونههای
سکوت
دیجیتال با
استفاده از
تشخیص اوج (peak)
از ابتدا تا
انتها، در
جایی که بیش
از ۰ نمونه
سکوت
دیجیتال در
صدا وجود
دارد و سکوت
دیجیتال در
تمامی
کانالها
در
موقعیتهای
یکسان در
استریم
تشخیص داده
شده است:
silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
- حذف هر
دورهٔ سکوت
دومِ
مشاهدهشده
از ابتدا تا
انتها، در
جایی که بیش
از ۱ ثانیه
سکوت
بهازای هر
دورهٔ سکوت
در صدا وجود
دارد:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
- مشابه
بالا، اما
حداکثر 0.5
ثانیه سکوت
از هر دورهٔ
برشخورده
نگهداشته
شود:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
- مشابه
بالا، اما
حداکثر 1.5
ثانیه سکوت
از ابتدای
صدا
نگهداشته
شود:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
دستورها
این فیلتر از برخی از گزینههای فوق به عنوان دستور پشتیبانی میکند.
sofalizer
فیلتر SOFAlizer از توابع تبدیل وابسته به سر (HRTF) برای ایجاد بلندگوهای مجازی در اطراف کاربر جهت گوش دادن دوگوشی (binaural) از طریق هدفون استفاده میکند (قالبهای صوتی تا ۹ کانال پشتیبانی میشوند). توابع HRTF در پروندههای SOFA ذخیره میشوند (برای پایگاه داده به http://www.sofacoustics.org مراجعه کنید). فیلتر SOFAlizer در مؤسسهٔ تحقیقات آکوستیک (ARI) فرهنگستان علوم اتریش توسعه یافته است.
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-libmysofa" پیکربندی کنید.
فیلتر گزینههای زیر را میپذیرد:
- sofa
- تنظیم پروندهٔ SOFA مورد استفاده برای رندر کردن.
- gain
- تنظیم بهرهٔ اعمالشده به صدا. مقدار بر حسب dB است. پیشفرض 0 است.
- rotation
- تنظیم چرخش بلندگوهای مجازی بر حسب درجه (deg). پیشفرض 0 است.
- elevation
- تنظیم زاویهٔ فراز (elevation) بلندگوهای مجازی بر حسب درجه (deg). پیشفرض 0 است.
- radius
- تنظیم فاصله بر حسب متر بین بلندگوها و شنونده با HRTFهای میدان نزدیک (near-field). پیشفرض 1 است.
- type
- تنظیم نوع پردازش. میتواند time یا freq باشد. time پردازش صدا در حوزهٔ زمان است که کند میباشد. freq پردازش صدا در حوزهٔ فرکانس است که سریع میباشد. پیشفرض freq است.
- speakers
- تنظیم موقعیتهای سفارشی بلندگوهای مجازی. ساختار نحوی برای این گزینه عبارت است از: <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]. هر بلندگوی مجازی با نام کوتاه کانال و به دنبال آن آزیموت و فراز بر حسب درجه توصیف میشود. توضیحات هر بلندگوی مجازی با '|' جدا میشود. برای مثال جهت بازنویسی موقعیتهای کانال چپ جلو و راست جلو از: 'speakers=FL 45 15|FR 345 15' استفاده کنید. توضیحات با نامهای کانال ناشناخته نادیده گرفته میشوند.
- lfegain
- تنظیم بهرهٔ سفارشی برای کانالهای LFE. مقدار بر حسب dB است. پیشفرض 0 است.
- framesize
- تنظیم اندازهٔ فریم سفارشی بر حسب تعداد نمونهها. پیشفرض 1024 است. محدودهٔ مجاز از 1024 تا 96000 است. فقط در صورتی استفاده میشود که گزینهٔ type روی freq تنظیم شده باشد.
- normalize
- آیا تمام پاسخهای ضربه (IR) هنگام وارد کردن پروندهٔ SOFA نرمالسازی شوند یا خیر. بهطور پیشفرض فعال است.
- interpolate
- آیا در صورت عدم تطابق دقیق موقعیت، نزدیکترین IRها با IRهای همسایه درونیابی شوند یا خیر. بهطور پیشفرض غیرفعال است.
- minphase
- حداقل فاز کردن تمامی IRها هنگام بارگذاری پروندهٔ SOFA. بهطور پیشفرض غیرفعال است.
- anglestep
- تنظیم گام زاویهٔ جستجوی همسایه. فقط در صورت فعال بودن گزینهٔ interpolate استفاده میشود.
- radstep
- تنظیم گام شعاع جستجوی همسایه. فقط در صورت فعال بودن گزینهٔ interpolate استفاده میشود.
مثالها
- استفاده از
پروندهٔ sofa
با نام ClubFritz6:
sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
- استفاده از
پروندهٔ sofa
با نام ClubFritz12 و
شعاع
بزرگتر
همراه با
چرخش کم:
sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
- مشابه بالا
اما با
موقعیتهای
سفارشی
بلندگو
برای چپ
جلو، راست
جلو، چپ عقب
و راست عقب
و همچنین با
بهرهٔ
سفارشی:
"sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
speechnorm
نرمالساز گفتار (Speech Normalizer).
این فیلتر هر نیمچرخه از نمونههای صوتی (مجموعهٔ محلی از نمونهها که همگی بالای صفر یا همگی زیر صفر و بین دو تقاطع صفر مجاور قرار دارند) را بسته به مقدار آستانه گسترش میدهد یا فشرده میکند، به طوری که صدا تحت شرایط کنترلشده توسط گزینههای زیر به مقدار اوج هدف برسد.
فیلتر گزینههای زیر را میپذیرد:
- peak, p
- تنظیم مقدار اوج هدف گسترش. این گزینه بالاترین سطح دامنهٔ مطلق مجاز را برای ورودی صوتی نرمالشده مشخص میکند. مقدار پیشفرض 0.95 است. محدودهٔ مجاز از 0.0 تا 1.0 است.
- expansion, e
- تنظیم حداکثر ضریب گسترش. محدودهٔ مجاز از 1.0 تا 50.0 است. مقدار پیشفرض 2.0 است. این گزینه حداکثر گسترش نیمچرخهٔ محلی نمونهها را کنترل میکند. حداکثر گسترش به گونهای خواهد بود که مقدار اوج محلی به مقدار اوج هدف برسد اما هرگز از آن فراتر نرود و نسبت بین مقدار اوج جدید و قبلی از مقدار این گزینه فراتر نرود.
- compression, c
- تنظیم حداکثر ضریب فشردهسازی. محدودهٔ مجاز از 1.0 تا 50.0 است. مقدار پیشفرض 2.0 است. این گزینه حداکثر فشردهسازی نیمچرخهٔ محلی نمونهها را کنترل میکند. این گزینه تنها در صورتی استفاده میشود که گزینهٔ threshold بر روی مقداری بزرگتر از 0.0 تنظیم شده باشد؛ در چنین مواردی هنگامی که اوج محلی کمتر یا مساوی مقدار تنظیمشده توسط threshold باشد، تمام نمونههای متعلق به نیمچرخهٔ آن اوج با ضریب فشردهسازی فعلی فشرده خواهند شد.
- threshold, t
- تنظیم مقدار آستانه. مقدار پیشفرض 0.0 است. محدودهٔ مجاز از 0.0 تا 1.0 است. این گزینه مشخص میکند کدام نیمچرخههای نمونهها فشرده و کدام یک گسترش خواهند یافت. هر نمونهٔ نیمچرخه با مقدار اوج محلی کمتر یا مساوی با مقدار این گزینه با ضریب فشردهسازی فعلی فشرده میشود، در غیر این صورت اگر بزرگتر از مقدار آستانه باشد با ضریب گسترش گسترش مییابد تا بتواند به مقدار اوج هدف برسد اما هرگز از آن فراتر نرود.
- raise, r
- تنظیم میزان افزایش ضریب گسترش بهازای هر نیمچرخه از نمونهها. مقدار پیشفرض 0.001 است. محدودهٔ مجاز از 0.0 تا 1.0 است. این گزینه کنترل میکند که ضریب گسترش بهازای هر نیمچرخهٔ جدید با چه سرعتی افزایش یابد تا به مقدار expansion برسد. تنظیم بیش از حد بالای این گزینه ممکن است منجر به اعوجاج شود.
- fall, f
- تنظیم میزان افزایش ضریب فشردهسازی بهازای هر نیمچرخه از نمونهها. مقدار پیشفرض 0.001 است. محدودهٔ مجاز از 0.0 تا 1.0 است. این گزینه کنترل میکند که ضریب فشردهسازی بهازای هر نیمچرخهٔ جدید با چه سرعتی افزایش یابد تا به مقدار compression برسد.
- channels, h
- تعیین کانالهای مورد نظر برای فیلترسازی، بهطور پیشفرض تمام کانالهای موجود فیلتر میشوند.
- invert, i
- فعالسازی فیلترسازی معکوس، بهطور پیشفرض غیرفعال است. این گزینه تفسیر گزینهٔ threshold را معکوس میکند. در صورت فعال بودن، هر نیمچرخه از نمونهها با مقدار اوج محلی کمتر یا مساوی گزینهٔ threshold گسترش مییابد و در غیر این صورت فشرده خواهد شد.
- link, l
- پیوند کانالها هنگام محاسبهٔ بهرهٔ اعمالشده به هر نمونه از کانال فیلترشده، بهطور پیشفرض غیرفعال است. در صورت غیرفعال بودن، محاسبهٔ بهرهٔ هر کانال فیلترشده مستقل است، در غیر این صورت هنگام فعال بودن این گزینه، حداقل تمام بهرههای ممکن برای هر کانال فیلترشده استفاده میشود.
- rms, m
- تنظیم مقدار RMS هدف گسترش. این گزینه بالاترین سطح RMS مجاز را برای ورودی صوتی نرمالشده مشخص میکند. مقدار پیشفرض 0.0 است و در نتیجه غیرفعال میباشد. محدودهٔ مجاز از 0.0 تا 1.0 است.
دستورها
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
مثالها
- تقویت ضعیف
و کند:
speechnorm=e=3:r=0.00001:l=1
- تقویت
متوسط و
کند:
speechnorm=e=6.25:r=0.00001:l=1
- تقویت قوی و
سریع:
speechnorm=e=12.5:r=0.0001:l=1
- تقویت
بسیار قوی و
سریع:
speechnorm=e=25:r=0.0001:l=1
- تقویت شدید
و سریع:
speechnorm=e=50:r=0.0001:l=1
stereotools
این فیلتر ابزارهای مفیدی را برای مدیریت سیگنالهای استریو، جهت تبدیل ضبطهای استریوی M/S به سیگنال L/R ضمن کنترل بر روی پارامترها، یا گسترش تصویر استریوی قطعه اصلی (master track) ارائه میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- level_in
- تنظیم سطح ورودی پیش از فیلتر کردن برای هر دو کانال. پیشفرض 1 است. محدوده مجاز از 0.015625 تا 64 است.
- level_out
- تنظیم سطح خروجی پس از فیلتر کردن برای هر دو کانال. پیشفرض 1 است. محدوده مجاز از 0.015625 تا 64 است.
- balance_in
- تنظیم تراز (بالانس) ورودی میان هر دو کانال. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- balance_out
- تنظیم تراز (بالانس) خروجی میان هر دو کانال. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- softclip
- فعالسازی برش نرم (softclipping). بهجای برش خشن دیجیتالی 0dB، منجر به اعوجاج آنالوگ میشود. بهطور پیشفرض غیرفعال است.
- mutel
- بیصدا کردن کانال چپ. بهطور پیشفرض غیرفعال است.
- muter
- بیصدا کردن کانال راست. بهطور پیشفرض غیرفعال است.
- phasel
- تغییر فاز کانال چپ. بهطور پیشفرض غیرفعال است.
- phaser
- تغییر فاز کانال راست. بهطور پیشفرض غیرفعال است.
- mode
- تنظیم حالت استریو. مقادیر موجود عبارتند از:
- lr>lr
- چپ/راست به چپ/راست؛ این مقدار پیشفرض است.
- lr>ms
- چپ/راست به Mid/Side.
- ms>lr
- Mid/Side به چپ/راست.
- lr>ll
- چپ/راست به چپ/چپ.
- lr>rr
- چپ/راست به راست/راست.
- lr>l+r
- چپ/راست به چپ + راست.
- lr>rl
- چپ/راست به راست/چپ.
- ms>ll
- Mid/Side به چپ/چپ.
- ms>rr
- Mid/Side به راست/راست.
- ms>rl
- Mid/Side به راست/چپ.
- lr>l-r
- چپ/راست به چپ - راست.
- slev
- تنظیم سطح سیگنال جانبی (side). پیشفرض 1 است. محدوده مجاز از 0.015625 تا 64 است.
- sbal
- تنظیم تراز سیگنال جانبی. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- mlev
- تنظیم سطح سیگنال میانی (middle). پیشفرض 1 است. محدوده مجاز از 0.015625 تا 64 است.
- mpan
- تنظیم پن (جهتگیری) سیگنال میانی. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- base
- تنظیم پایه استریو میان کانالهای مونو و معکوسشده. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- delay
- تنظیم میزان تأخیر کانال چپ نسبت به راست و برعکس بر حسب میلیثانیه. پیشفرض 0 است. محدوده مجاز از -20 تا 20 است.
- sclevel
- تنظیم سطح S/C. پیشفرض 1 است. محدوده مجاز از 1 تا 100 است.
- phase
- تنظیم فاز استریو به درجه. پیشفرض 0 است. محدوده مجاز از 0 تا 360 است.
- bmode_in, bmode_out
- تنظیم حالت
تراز برای
گزینه balance_in/balance_out.
میتواند یکی از مقادیر زیر باشد:
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
مثالها (Examples)
- اعمال
جلوهای
شبیه به
کارائوکه:
stereotools=mlev=0.015625
- تبدیل
سیگنال M/S به L/R:
"stereotools=mode=ms>lr"
stereowiden
این فیلتر با تضعیف سیگنال مشترک میان هر دو کانال و ایجاد تأخیر در سیگنال چپ روی راست و برعکس، جلوه استریو را تقویت کرده و پهنای صحنه صوتی را افزایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- delay
- مدت زمان تأخیر سیگنال چپ روی راست و برعکس بر حسب میلیثانیه. پیشفرض 20 میلیثانیه است.
- feedback
- میزان بهره در سیگنال دارای تأخیر روی کانال مقابل. یک اثر تأخیری از سیگنال چپ در خروجی راست و برعکس ایجاد میکند که به گستردهتر شدن تصویر صوتی میانجامد. پیشفرض 0.3 است.
- crossfeed
- تغذیه متقاطع (cross feed) چپ روی راست با فاز معکوس. این پارامتر به حذف بخش مونو کمک میکند. اگر مقدار آن 1 باشد، تمامی سیگنال مشترک میان هر دو کانال حذف خواهد شد. پیشفرض 0.3 است.
- drymix
- تنظیم سطح سیگنال ورودی اصلی کانال (سیگنال پردازشنشده). پیشفرض 0.8 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به جز "delay" به عنوان دستورات پشتیبانی میکند.
superequalizer
اعمال یک اکولایزر ۱۸ بانده.
این فیلتر گزینههای زیر را میپذیرد:
- 1b
- تنظیم بهره باند 65Hz.
- 2b
- تنظیم بهره باند 92Hz.
- 3b
- تنظیم بهره باند 131Hz.
- 4b
- تنظیم بهره باند 185Hz.
- 5b
- تنظیم بهره باند 262Hz.
- 6b
- تنظیم بهره باند 370Hz.
- 7b
- تنظیم بهره باند 523Hz.
- 8b
- تنظیم بهره باند 740Hz.
- 9b
- تنظیم بهره باند 1047Hz.
- 10b
- تنظیم بهره باند 1480Hz.
- 11b
- تنظیم بهره باند 2093Hz.
- 12b
- تنظیم بهره باند 2960Hz.
- 13b
- تنظیم بهره باند 4186Hz.
- 14b
- تنظیم بهره باند 5920Hz.
- 15b
- تنظیم بهره باند 8372Hz.
- 16b
- تنظیم بهره باند 11840Hz.
- 17b
- تنظیم بهره باند 16744Hz.
- 18b
- تنظیم بهره باند 20000Hz.
surround
اعمال فیلتر تبدیل صدای استریو به صدای فراگیر (surround upmix).
این فیلتر امکان تولید خروجی چندکاناله از یک جریان صوتی را فراهم میسازد.
این فیلتر گزینههای زیر را میپذیرد:
- chl_out
- تنظیم
چیدمان
کانال
خروجی.
بهطور
پیشفرض،
برابر 5.1
است.
برای اطلاع از سینتکس مورد نیاز، بخش Channel Layout در راهنمای ffmpeg-utils(1) را ببینید.
- chl_in
- تنظیم
چیدمان
کانال
ورودی.
بهطور
پیشفرض،
برابر stereo
است.
برای اطلاع از سینتکس مورد نیاز، بخش Channel Layout در راهنمای ffmpeg-utils(1) را ببینید.
- level_in
- تنظیم سطح بلندی صدای ورودی. بهطور پیشفرض 1 است.
- level_out
- تنظیم سطح بلندی صدای خروجی. بهطور پیشفرض 1 است.
- lfe
- فعالسازی خروجی کانال LFE (سابووفر) در صورتی که چیدمان خروجی شامل آن باشد. بهطور پیشفرض فعال است.
- lfe_low
- تنظیم فرکانس قطع پایین LFE. بهطور پیشفرض 128 Hz است.
- lfe_high
- تنظیم فرکانس قطع بالای LFE. بهطور پیشفرض 256 Hz است.
- lfe_mode
- تنظیم حالت LFE، میتواند add یا sub باشد. پیشفرض add است. در حالت add، کانال LFE از صدای ورودی تولید شده و به خروجی افزوده میشود. در حالت sub، کانال LFE از صدای ورودی تولید شده و به خروجی افزوده میشود اما همچنین کانال LFE خروجی از تمامی کانالهای خروجی غیر LFE تفریق میگردد.
- smooth
- تنظیم شدت هموارسازی زمانی که برای تغییر تدریجی ضرایب هنگام دگرگونی صدای استریو در طول زمان استفاده میشود. محدوده مجاز از 0.0 تا 1.0 است. برای بهبود کیفیت خروجی با مقادیر گزینه focus بزرگتر از 0.0 مفید است. پیشفرض 0.0 است. تنها مقادیر درون این بازه و فاقد لبهها مؤثر هستند.
- angle
- تنظیم زاویه تبدیل صدای فراگیر استریو. محدوده مجاز از 0 تا 360 است. پیشفرض 90 است.
- focus
- تنظیم کانون (تمرکز) تبدیل صدای فراگیر استریو. محدوده مجاز از -1 تا 1 است. پیشفرض 0 است.
- fc_in
- تنظیم بلندی صدای ورودی جلو-مرکز (front center). بهطور پیشفرض 1 است.
- fc_out
- تنظیم بلندی صدای خروجی جلو-مرکز. بهطور پیشفرض 1 است.
- fl_in
- تنظیم بلندی صدای ورودی جلو-چپ (front left). بهطور پیشفرض 1 است.
- fl_out
- تنظیم بلندی صدای خروجی جلو-چپ. بهطور پیشفرض 1 است.
- fr_in
- تنظیم بلندی صدای ورودی جلو-راست (front right). بهطور پیشفرض 1 است.
- fr_out
- تنظیم بلندی صدای خروجی جلو-راست. بهطور پیشفرض 1 است.
- sl_in
- تنظیم بلندی صدای ورودی کناری-چپ (side left). بهطور پیشفرض 1 است.
- sl_out
- تنظیم بلندی صدای خروجی کناری-چپ. بهطور پیشفرض 1 است.
- sr_in
- تنظیم بلندی صدای ورودی کناری-راست (side right). بهطور پیشفرض 1 است.
- sr_out
- تنظیم بلندی صدای خروجی کناری-راست. بهطور پیشفرض 1 است.
- bl_in
- تنظیم بلندی صدای ورودی عقب-چپ (back left). بهطور پیشفرض 1 است.
- bl_out
- تنظیم بلندی صدای خروجی عقب-چپ. بهطور پیشفرض 1 است.
- br_in
- تنظیم بلندی صدای ورودی عقب-راست (back right). بهطور پیشفرض 1 است.
- br_out
- تنظیم بلندی صدای خروجی عقب-راست. بهطور پیشفرض 1 است.
- bc_in
- تنظیم بلندی صدای ورودی عقب-مرکز (back center). بهطور پیشفرض 1 است.
- bc_out
- تنظیم بلندی صدای خروجی عقب-مرکز. بهطور پیشفرض 1 است.
- lfe_in
- تنظیم بلندی صدای ورودی LFE. بهطور پیشفرض 1 است.
- lfe_out
- تنظیم بلندی صدای خروجی LFE. بهطور پیشفرض 1 است.
- allx
- تنظیم میزان گسترش تصویر استریو در راستای محور X برای تمام کانالها. محدوده مجاز از -1 تا 15 است. بهطور پیشفرض مقدار منفی -1 است و در نتیجه استفاده نمیشود.
- ally
- تنظیم میزان گسترش تصویر استریو در راستای محور Y برای تمام کانالها. محدوده مجاز از -1 تا 15 است. بهطور پیشفرض مقدار منفی -1 است و در نتیجه استفاده نمیشود.
- fcx, flx, frx, blx, brx, slx, srx, bcx
- تنظیم میزان گسترش تصویر استریو در راستای محور X برای هر کانال مجزا. محدوده مجاز از 0.06 تا 15 است. بهطور پیشفرض این مقدار 0.5 است.
- fcy, fly, fry, bly, bry, sly, sry, bcy
- تنظیم میزان گسترش تصویر استریو در راستای محور Y برای هر کانال مجزا. محدوده مجاز از 0.06 تا 15 است. بهطور پیشفرض این مقدار 0.5 است.
- win_size
- تنظیم اندازه پنجره. محدوده مجاز از 1024 تا 65536 است. اندازه پیشفرض 4096 است.
- win_func
- تنظیم تابع
پنجرهبندی
(window function).
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "hann" است.
- overlap
- تنظیم میزان همپوشانی پنجره. در صورت تنظیم روی 1، همپوشانی توصیهشده برای تابع پنجره انتخابشده اعمال خواهد شد. پیشفرض 0.5 است.
tiltshelf
تقویت یا تضعیف فرکانسهای پایینتر و تضعیف یا تقویت فرکانسهای بالاتر صدا با استفاده از یک فیلتر قفسهای (shelving) دوقطبی با پاسخی شبیه به کنترلهای تن صدای سیستمهای صوتی خانگی (hi-fi). این روش به عنوان اکولایزاسیون قفسهای (shelving EQ) نیز شناخته میشود.
این فیلتر گزینههای زیر را میپذیرد:
- gain, g
- تعیین بهره در 0 Hz. محدوده مفید آن بین -20 (برای تضعیف شدید) تا +20 (برای تقویت شدید) است. هنگام استفاده از بهره مثبت مراقب پدیده برش سیگنال (clipping) باشید.
- frequency, f
- تنظیم فرکانس مرکزی فیلتر؛ از این گزینه میتوان برای گسترش یا کاهش محدوده فرکانسی که باید تقویت یا تضعیف شود استفاده کرد. مقدار پیشفرض 3000 Hz است.
- width_type, t
- تنظیم روش تعیین پهنای باند فیلتر.
- width, w
- تعیین شیب گذار قفسهای فیلتر.
- poles, p
- تنظیم تعداد قطبها. پیشفرض 2 است.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده مجاز بین 0 و 1 است.
- channels, c
- مشخص کردن کانالهایی که باید فیلتر شوند؛ بهطور پیشفرض تمامی کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ بهطور پیشفرض غیرفعال است. فعال کردن آن پاسخ دامنه در فرکانس DC را روی 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلتر کردن.
- block_size, b
- تنظیم
اندازه
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
روی مقداری
به اندازه
کافی بزرگ
تنظیم شود
(بزرگتر از
طول پاسخ
ضربه که در
مقادیر
نزدیک به
صفر بریده
میشود)،
فیلترسازی
دارای فاز
خطی خواهد
شد؛ در غیر
این صورت
اگر به
اندازه
کافی بزرگ
نباشد
آرتیفکتهای
نامطلوبی
ایجاد
خواهد کرد.
توجه داشته باشید در صورت تنظیم مقداری غیر از صفر، تأخیر فیلتر دقیقاً به همین تعداد نمونه خواهد بود.
دستورات (Commands)
این فیلتر از برخی گزینهها به عنوان دستورات پشتیبانی میکند.
treble, highshelf
تقویت یا تضعیف فرکانسهای زیر (بالایی) صدا با استفاده از یک فیلتر قفسهای دوقطبی با پاسخی شبیه به کنترلهای تن صدای استاندارد در تجهیزات صوتی. این روش به عنوان اکولایزاسیون قفسهای (EQ) نیز شناخته میشود.
این فیلتر گزینههای زیر را میپذیرد:
- gain, g
- تعیین میزان بهره در کمترین مقدار میان ~22 kHz و فرکانس نایکوئیست (Nyquist). محدوده مفید آن بین -20 (برای تضعیف شدید) تا +20 (برای تقویت شدید) است. هنگام استفاده از بهره مثبت مراقب پدیده برش سیگنال (clipping) باشید.
- frequency, f
- تنظیم فرکانس مرکزی فیلتر؛ بنابراین میتواند برای گسترش یا کاهش محدوده فرکانسی مورد نیاز برای تقویت یا تضعیف به کار رود. مقدار پیشفرض 3000 Hz است.
- width_type, t
- تنظیم روش تعیین پهنای باند فیلتر.
- width, w
- تعیین شیب گذار قفسهای فیلتر.
- poles, p
- تنظیم تعداد قطبها. پیشفرض 2 است.
- mix, m
- میزان استفاده از سیگنال فیلترشده در خروجی. پیشفرض 1 است. محدوده مجاز بین 0 و 1 است.
- channels, c
- مشخص کردن کانالها جهت فیلتر شدن؛ بهطور پیشفرض تمامی کانالهای موجود فیلتر میشوند.
- normalize, n
- نرمالسازی ضرایب biquad؛ بهطور پیشفرض غیرفعال است. فعالسازی آن پاسخ دامنه در DC را روی 0dB نرمال میکند.
- transform, a
- تنظیم نوع تبدیل فیلتر IIR.
- precision, r
- تنظیم دقت فیلتر کردن.
- block_size, b
- تنظیم
اندازه
بلوک مورد
استفاده
برای
پردازش
معکوس IIR. اگر
این مقدار
به اندازه
کافی بزرگ
باشد
(بزرگتر از
طول پاسخ
ضربه که در
مقادیر
نزدیک به
صفر بریده
میشود)،
فیلترسازی
فاز خطی
خواهد شد؛
در غیر این
صورت اگر به
اندازه
کافی بزرگ
نباشد
آرتیفکتهای
نامطلوبی
ایجاد
خواهد کرد.
توجه داشته باشید در صورت تنظیم مقداری غیر از صفر، تأخیر فیلتر دقیقاً به همین تعداد نمونه خواهد بود.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- frequency, f
- تغییر فرکانس تریبل. سینتکس دستور عبارت است از: "frequency"
- width_type, t
- تغییر روش تعیین پهنای باند تریبل. سینتکس دستور عبارت است از: "width_type"
- width, w
- تغییر پهنای تریبل. سینتکس دستور عبارت است از: "width"
- gain, g
- تغییر بهره تریبل. سینتکس دستور عبارت است از: "gain"
- mix, m
- تغییر میزان میکس تریبل. سینتکس دستور عبارت است از: "mix"
tremolo
مدولاسیون دامنه سینوسی (Sinusoidal amplitude modulation).
این فیلتر گزینههای زیر را میپذیرد:
- f
- فرکانس مدولاسیون بر حسب هرتز. فرکانسهای مدولاسیون در محدوده سابهارمونیک (20 Hz یا کمتر) منجر به جلوه ترمولو میشوند. این فیلتر همچنین میتواند با مشخص کردن فرکانس مدولاسیون بالاتر از 20 Hz به عنوان یک مدولاتور حلقهای (ring modulator) استفاده شود. محدوده مجاز 0.1 - 20000.0 است. مقدار پیشفرض 5.0 Hz است.
- d
- عمق مدولاسیون به صورت درصدی بین 0.0 - 1.0. مقدار پیشفرض 0.5 است.
vibrato
مدولاسیون فاز سینوسی (Sinusoidal phase modulation).
این فیلتر گزینههای زیر را میپذیرد:
virtualbass
اعمال فیلتر بیس مجازی (Virtual Bass) روی صدا.
این فیلتر یک ورودی استریو را دریافت کرده و خروجی استریو به همراه کانال LFE (سامانه 2.1 کاناله) تولید میکند. کانال LFE جدیداً تولیدشده دارای بیس مجازی تقویتشده است که اصالتاً از هر دو کانال استریو به دست آمده است. این فیلتر کانالهای جلو-چپ و جلو-راست را بدون تغییر همانطور که در ورودی استریو در دسترس بودهاند به خروجی میفرستد.
این فیلتر گزینههای زیر را میپذیرد:
volume
تنظیم بلندی صدای ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- volume
- تنظیم
عبارت
ریاضی
مربوط به
بلندی صدا.
مقادیر خروجی در سقف حداکثر مقدار بریده میشوند (clipped).
بلندی صدای خروجی بر اساس رابطه زیر به دست میآید:
<output_volume> = <volume> * <input_volume>
مقدار پیشفرض برای volume برابر "1.0" است.
- precision
- این
پارامتر
دقت
محاسباتی
را نشان
میدهد.
تعیین میکند کدام قالبهای نمونه ورودی مجاز خواهند بود که بر دقت مقیاسبندی بلندی صدا تأثیر میگذارد.
- replaygain
- انتخاب رفتار هنگام مواجهه با دادههای جانبی ReplayGain در فریمهای ورودی.
- replaygain_preamp
- بهره
پیشتقویتکننده
بر حسب dB
برای اعمال
روی بهره
انتخابی ReplayGain.
مقدار پیشفرض برای replaygain_preamp برابر 0.0 است.
- replaygain_noclip
- جلوگیری از
برش سیگنال
با محدود
کردن بهره
اعمالشده.
مقدار پیشفرض برای replaygain_noclip برابر 1 است.
- eval
- تنظیم زمان
ارزیابی
عبارت volume.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض once است.
عبارت volume میتواند شامل پارامترهای زیر باشد:
- n
- شماره فریم (شروع از صفر)
- nb_channels
- تعداد کانالها
- nb_consumed_samples
- تعداد نمونههای مصرفشده توسط فیلتر
- nb_samples
- تعداد نمونهها در فریم فعلی
- pos
- موقعیت فریم اصلی در فایل؛ منسوخ شده است، استفاده نکنید
- pts
- مقدار PTS فریم
- sample_rate
- نرخ نمونهبرداری
- startpts
- مقدار PTS در ابتدای جریان
- startt
- زمان در ابتدای جریان
- t
- زمان فریم
- tb
- پایه زمانی برچسب زمان (timebase)
- volume
- آخرین مقدار تنظیمشده برای بلندی صدا
توجه داشته باشید که وقتی eval روی once تنظیم شده باشد، تنها متغیرهای sample_rate و tb در دسترس هستند و سایر متغیرها برابر با NAN ارزیابی خواهند شد.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- volume
- تغییر
عبارت
بلندی صدا.
این دستور
از همان
سینتکس
گزینه
متناظر
پیروی
میکند.
در صورتی که عبارت مشخصشده نامعتبر باشد، مقدار قبلی حفظ میشود.
مثالها (Examples)
- نصف کردن
بلندی صدای
ورودی:
volume=volume=0.5 volume=volume=1/2 volume=volume=-6.0206dB
در تمامی مثالهای بالا نام کلید volume را میتوان حذف کرد، مانند:
volume=0.5
- افزایش
توان صدای
ورودی به
اندازه ۶
دسیبل با
استفاده از
دقت ممیز
ثابت:
volume=volume=6dB:precision=fixed
- کاهش
تدریجی صدا
پس از ثانیه
۱۰ با دوره
ناپدیدسازی
۵ ثانیهای:
volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
volumedetect
تشخیص میزان بلندی صدای ویدیوی ورودی.
این فیلتر فاقد پارامتر است. تنها از نمونههای صحیح علامتدار ۱۶ بیتی پشتیبانی میکند، بنابراین ورودی در صورت نیاز تبدیل خواهد شد. آمارهای مربوط به بلندی صدا پس از رسیدن به انتهای جریان ورودی در گزارش (log) چاپ میشود.
بهطور خاص، این فیلتر میانگین بلندی صدا (ریشه میانگین مربعات)، حداکثر بلندی صدا (بر مبنای هر نمونه) و آغاز هیستوگرامی از مقادیر بلندی صدای ثبتشده (از حداکثر مقدار تا ۱/۱۰۰۰ تجمعی نمونهها) را نمایش میدهد.
تمامی مقادیر بلندی صدا بر حسب دسیبل نسبت به حداکثر مقدار PCM هستند.
مثالها (Examples)
نمونهای از خروجی لاگ در ادامه آمده است:
[Parsed_volumedetect_0 0xa23120] mean_volume: -27 dB [Parsed_volumedetect_0 0xa23120] max_volume: -4 dB [Parsed_volumedetect_0 0xa23120] histogram_4db: 6 [Parsed_volumedetect_0 0xa23120] histogram_5db: 62 [Parsed_volumedetect_0 0xa23120] histogram_6db: 286 [Parsed_volumedetect_0 0xa23120] histogram_7db: 1042 [Parsed_volumedetect_0 0xa23120] histogram_8db: 2551 [Parsed_volumedetect_0 0xa23120] histogram_9db: 4609 [Parsed_volumedetect_0 0xa23120] histogram_10db: 8409
این خروجی به این معناست که:
- انرژی میانگین مربعات تقریباً -27 dB یا 10^-2.7 است.
- بزرگترین نمونه در -4 dB یا دقیقتر بین -4 dB و -5 dB قرار دارد.
- تعداد ۶ نمونه در -4 dB، ۶۲ نمونه در -5 dB، ۲۸۶ نمونه در -6 dB و غیره وجود دارد.
به عبارت دیگر، افزایش بلندی صدا به میزان +4 dB هیچ برشی ایجاد نمیکند، افزایش آن به میزان +5 dB باعث برش در ۶ نمونه میشود و به همین ترتیب.
whisper
اجرای تشخیص خودکار گفتار با استفاده از مدل Whisper متعلق به OpenAI.
این فیلتر به عنوان پیشنیاز به کتابخانه whisper.cpp نیاز دارد (https://github.com/ggml-org/whisper.cpp). پس از نصب کتابخانه میتوان آن را با دستور زیر فعال کرد: "./configure --enable-whisper".
این فیلتر گزینههای زیر را دارد:
- model
- مسیر فایل مدل دانلودشده whisper.cpp (اجباری).
- language
- زبان مورد استفاده برای رونویسی (مقدار 'auto' برای تشخیص خودکار). مقدار پیشفرض: "auto"
- translate
- در صورت فعال بودن، متن رونویسیشده از زبان مبدا به انگلیسی ترجمه میشود. برای فعال کردن این گزینه به یک مدل چندزبانه نیاز است. مقدار پیشفرض: "false"
- queue
- حداکثر اندازهای که پیش از پردازش صدا با whisper در صف فیلتر قرار میگیرد. با مقادیر کوچک، جریان صوتی در دفعات بیشتری پردازش میشود، اما کیفیت رونویسی پایینتر و توان پردازشی مورد نیاز بالاتر خواهد بود. با مقادیر بزرگتر (مثلاً 10-20 ثانیه)، نتایج دقیقتری با مصرف کمتر CPU حاصل میشود (مشابه ابزار whisper-cli)، اما تأخیر رونویسی بالاتر خواهد بود و برای پردازش جریانهای بیدرنگ مناسب نیست. استفاده از گزینه vad_model به همراه مقدار بزرگ برای queue را مد نظر داشته باشید. مقدار پیشفرض: "3"
- use_gpu
- تعیین فعال بودن پشتیبانی از GPU. مقدار پیشفرض: "true"
- gpu_device
- اندیس دستگاه GPU مورد استفاده. مقدار پیشفرض: "0"
- destination
- در صورت تنظیم، خروجی رونویسی به فایل یا نشانی وب مشخصشده ارسال میشود (از یکی از پروتکلهای AVIO در FFmpeg استفاده کنید)؛ در غیر این صورت، خروجی به صورت پیامهای اطلاعاتی (info) لاگ خواهد شد. همچنین خروجی در متادادای فریم تحت عنوان "lavfi.whisper.text" ذخیره میشود. اگر مقصد یک فایل باشد و از قبل وجود داشته باشد، بازنویسی خواهد شد.
- format
- رشته قالب مقصد؛ میتواند "text" (فقط متن رونویسیشده به مقصد ارسال میشود)، "srt" (قالب زیرنویس) یا "json" باشد. مقدار پیشفرض: "text"
- max_len
- حداکثر طول هر قطعه بر حسب نویسه. هنگامی که روی مقداری بزرگتر از 0 تنظیم شود، قطعات رونویسی بر اساس کلمه شکسته میشوند تا از این طول فراتر نروند. این گزینه برای تولید زیرنویس با خطوط کوتاهتر بسیار کاربردی است. مقدار پیشفرض: "0"
- vad_model
- مسیر فایل مدل VAD. در صورت تنظیم، فیلتر یک ماژول تشخیص فعالیت صوتی اضافی (https://github.com/snakers4/silero-vad) را بارگذاری میکند که برای قطعهبندی صف صوتی به کار میرود؛ با تنظیم یک مسیر معتبر دریافت شده از مخزن whisper.cpp (مانند "../whisper.cpp/models/ggml-silero-v5.1.2.bin") از این گزینه استفاده کرده و پارامتر queue را به مقداری بالاتر (مانند 20) افزایش دهید.
- vad_threshold
- آستانه VAD مورد استفاده. مقدار پیشفرض: "0.5"
- vad_min_speech_duration
- حداقل مدت زمان گفتار در VAD. مقدار پیشفرض: "0.1"
- vad_min_silence_duration
- حداقل مدت زمان سکوت در VAD. مقدار پیشفرض: "0.5"
مثالها (Examples)
- اجرای
رونویسی
گفتار و
تولید فایل
srt:
ffmpeg -i input.mp4 -vn -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin\ :language=en\ :queue=3\ :destination=output.srt\ :format=srt" -f null -
- اجرای
رونویسی
گفتار و
ارسال
خروجی با
قالب JSON به یک
سرویس HTTP:
ffmpeg -i input.mp4 -vn -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin\ :language=en\ :queue=3\ :destination=http\\://localhost\\:3000\ :format=json' -f null -
- رونویسی
صدای ورودی
از
میکروفون
با استفاده
از گزینه VAD:
ffmpeg -loglevel warning -f pulse -i default \ -af 'highpass=f=200,lowpass=f=3000,whisper=model=../whisper.cpp/models/ggml-medium.bin\ :language=en\ :queue=10\ :destination=-\ :format=json\ :vad_model=../whisper.cpp/models/ggml-silero-v5.1.2.bin' -f null -
سورسهای صوتی (AUDIO SOURCES)
در ادامه توصیف سورسهای صوتی در دسترس ارائه شده است.
abuffer
بافر کردن فریمهای صوتی و در دسترس قرار دادن آنها در زنجیره فیلتر.
این سورس در اصل برای کاربردهای برنامهنویسی و نرمافزاری طراحی شده است، بهویژه از طریق رابط کاربری تعریفشده در libavfilter/buffersrc.h.
این سورس پارامترهای زیر را میپذیرد:
- time_base
- پایه زمانی (timebase) مورد استفاده برای برچسبهای زمانی فریمهای ارسالشده. باید یک عدد ممیز شناور یا به فرم numerator/denominator (صورت/مخرج) باشد.
- sample_rate
- نرخ نمونهبرداری بافرهای صوتی ورودی.
- sample_fmt
- قالب نمونهبرداری بافرهای صوتی ورودی. میتواند نام یک قالب نمونه یا عدد صحیح معادل آن از شمارش AVSampleFormat در libavutil/samplefmt.h باشد.
- channel_layout
- چیدمان کانال بافرهای صوتی ورودی. میتواند نام یک چیدمان کانال از channel_layout_map در libavutil/channel_layout.c یا عدد صحیح معادل آن از ماکروهای AV_CH_LAYOUT_* در libavutil/channel_layout.h باشد.
- channels
- تعداد کانالهای بافرهای صوتی ورودی. در صورت مشخص شدن همزمان channels و channel_layout، مقادیر آنها باید با یکدیگر سازگار باشند.
مثالها (Examples)
abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
به سورس دستور میدهد تا استریوی علامتدار ۱۶ بیتی planar را با نرخ نمونهبرداری 44100Hz بپذیرد. از آنجا که قالب نمونه با نام "s16p" متناظر با عدد ۶ و چیدمان کانال "stereo" متناظر با مقدار 0x3 است، این دستور معادل است با:
abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
aevalsrc
تولید یک سیگنال صوتی مشخصشده با عبارت ریاضی.
این سورس در ورودی یک یا چند عبارت ریاضی (یکی به ازای هر کانال) را میپذیرد که ارزیابی شده و برای تولید سیگنال صوتی متناظر به کار میروند.
این سورس گزینههای زیر را میپذیرد:
- exprs
- تنظیم فهرست عبارات جداشده با '|' برای هر کانال مجزا. در صورتی که گزینه channel_layout مشخص نشده باشد، چیدمان کانال انتخابشده به تعداد عبارات ارائهشده بستگی دارد. در غیر این صورت آخرین عبارت مشخصشده برای بقیه کانالهای خروجی باقیمانده اعمال میشود.
- channel_layout, c
- تنظیم چیدمان کانال. تعداد کانالها در چیدمان مشخصشده باید برابر با تعداد عبارات ارائهشده باشد.
- duration, d
- تنظیم
حداقل مدت
زمان صدای
تولیدی.
برای اطلاع
از سینتکس
معتبر،
بخش Time duration در
راهنمای
ffmpeg-utils(1) را
ببینید.
توجه داشته
باشید که
مدت زمان
حاصل ممکن
است بیشتر
از مقدار
مشخصشده
باشد، چرا
که صدای
تولیدشده
همیشه در
پایان یک
فریم کامل
بریده
میشود.
در صورت عدم تعیین، یا منفی بودن مقدار مدت زمان، فرض میشود که صدا باید برای همیشه تولید شود.
- nb_samples, n
- تنظیم تعداد نمونهها به ازای هر کانال در هر فریم خروجی؛ پیشفرض 1024 است.
- sample_rate, s
- مشخص کردن نرخ نمونهبرداری؛ پیشفرض 44100 است.
هر عبارت در exprs میتواند شامل ثابتهای زیر باشد:
- n
- شماره نمونه ارزیابیشده، شروع از 0
- t
- زمان نمونه ارزیابیشده بر حسب ثانیه، شروع از 0
- s
- نرخ نمونهبرداری
مثالها (Examples)
- تولید سکوت:
aevalsrc=0
- تولید
سیگنال
سینوسی با
فرکانس 440 Hz،
تنظیم نرخ
نمونهبرداری
روی 8000 Hz:
aevalsrc="sin(440*2*PI*t):s=8000"
- تولید
سیگنال دو
کاناله با
مشخص کردن
صریح
چیدمان
کانال
(جلو-مرکز +
عقب-مرکز):
aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
- تولید نویز
سفید:
aevalsrc="-2+random(0)"
- تولید یک
سیگنال با
مدولاسیون
دامنه:
aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
- تولید
ضربان
دوگوشی (binaural beats)
با فرکانس 2.5 Hz
روی موج
حامل 360 Hz:
aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
afdelaysrc
تولید ضرایب FIR برای تأخیر کسری (fractional delay).
جریان حاصل را میتوان به همراه فیلتر afir برای فیلتر کردن سیگنال صوتی به کار برد.
این فیلتر گزینههای زیر را میپذیرد:
- delay, d
- تنظیم تأخیر کسری. پیشفرض 0 است.
- sample_rate, r
- تنظیم نرخ نمونهبرداری؛ پیشفرض 44100 است.
- nb_samples, n
- تنظیم تعداد نمونهها در هر فریم. پیشفرض 1024 است.
- taps, t
- تنظیم تعداد ضرایب فیلتر در جریان صوتی خروجی. مقدار پیشفرض 0 است.
- channel_layout, c
- چیدمان کانال را تعیین میکند و میتواند رشتهای نمایانگر یک چیدمان کانال باشد. مقدار پیشفرض channel_layout برابر "stereo" است.
afireqsrc
تولید ضرایب اکولایزر FIR.
جریان حاصل را میتوان به همراه فیلتر afir برای فیلتر کردن سیگنال صوتی به کار برد.
این فیلتر گزینههای زیر را میپذیرد:
- preset, p
- تنظیم
پیشتنظیم
اکولایزر.
پیشتنظیم
پیشفرض
"flat" است.
پیشتنظیمهای موجود عبارتند از:
- gains, g
- تنظیم بهرههای سفارشی برای هر باند. تنها در صورتی استفاده میشود که گزینه preset روی "custom" تنظیم شده باشد. بهرهها با فاصلههای خالی (whitespace) جدا میشوند و هر بهره بر حسب dBFS مشخص میگردد. پیشفرض "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" است.
- bands, b
- تنظیم باندهای سفارشی که بهرههای اکولایزر سفارشی بر اساس آنها تعیین میشوند. این مقادیر باید ترتیبی اکیداً صعودی داشته باشند. تنها در صورتی استفاده میشود که گزینه preset روی "custom" تنظیم شده باشد. باندها با فاصلههای خالی جدا میشوند و هر باند نمایانگر فرکانس بر حسب Hz است. پیشفرض "25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000" است.
- taps, t
- تنظیم تعداد ضرایب فیلتر در جریان صوتی خروجی. مقدار پیشفرض 4096 است.
- sample_rate, r
- تنظیم نرخ نمونهبرداری جریان صوتی خروجی؛ پیشفرض 44100 است.
- nb_samples, n
- تنظیم تعداد نمونهها به ازای هر فریم در جریان صوتی خروجی. پیشفرض 1024 است.
- interp, i
- تنظیم روش درونیابی برای ضرایب اکولایزر FIR. میتواند "linear" یا "cubic" باشد.
- phase, h
- تنظیم نوع فاز فیلتر FIR. میتواند "linear" یا "min" (حداقل فاز) باشد. پیشفرض فیلتر حداقل فاز (minimum-phase) است.
afirsrc
تولید ضرایب فیلتر FIR با استفاده از روش نمونهبرداری فرکانسی.
جریان حاصل را میتوان به همراه فیلتر afir برای فیلتر کردن سیگنال صوتی استفاده کرد.
این فیلتر گزینههای زیر را میپذیرد:
- taps, t
- تنظیم تعداد ضرایب فیلتر در جریان صوتی خروجی. مقدار پیشفرض 1025 است.
- frequency, f
- تنظیم نقاط فرکانسی که اندازه دامنه و فاز از آنجا تعیین میشوند. این مقادیر باید ترتیبی غیرنزولی داشته باشند، اولین عضو باید 0 و آخرین عضو باید 1 باشد. اعضا با فاصلههای خالی جدا میشوند.
- magnitude, m
- تنظیم مقدار دامنه به ازای هر نقطه فرکانسی تعیینشده توسط frequency. تعداد مقادیر باید با تعداد نقاط فرکانسی برابر باشد. مقادیر با فاصلههای خالی جدا میشوند.
- phase, p
- تنظیم مقدار فاز به ازای هر نقطه فرکانسی تعیینشده توسط frequency. تعداد مقادیر باید با تعداد نقاط فرکانسی برابر باشد. مقادیر با فاصلههای خالی جدا میشوند.
- sample_rate, r
- تنظیم نرخ نمونهبرداری؛ پیشفرض 44100 است.
- nb_samples, n
- تنظیم تعداد نمونهها در هر فریم. پیشفرض 1024 است.
- win_func, w
- تنظیم تابع پنجرهبندی. پیشفرض blackman است.
anullsrc
سورس صوتی تهی؛ فریمهای صوتی پردازشنشده را بازمیگرداند. این فیلتر عمدتاً به عنوان الگو و برای استفاده در ابزارهای تحلیل و خطایابی، یا به عنوان منبعی برای فیلترهایی که دادههای ورودی را نادیده میگیرند (مانند فیلتر سنتز sox) کاربرد دارد.
این سورس گزینههای زیر را میپذیرد:
- channel_layout, cl
- تعیین
چیدمان
کانال،
میتواند
عدد صحیح یا
رشتهای
نشاندهنده
یک چیدمان
کانال باشد.
مقدار
پیشفرض
channel_layout برابر
"stereo" است.
تعریف channel_layout_map در libavutil/channel_layout.c را برای نگاشت میان رشتهها و مقادیر چیدمان کانال بررسی کنید.
- sample_rate, r
- تعیین نرخ نمونهبرداری؛ پیشفرض 44100 است.
- nb_samples, n
- تنظیم تعداد نمونهها در هر فریم درخواستی.
- duration, d
- تنظیم مدت
زمان صدای
منبع. برای
آگاهی از
سینتکس
مورد
پذیرش،
بخش Time duration در
راهنمای
ffmpeg-utils(1) را
ببینید.
در صورت عدم تعیین، یا منفی بودن مدت زمان بیانشده، فرض میشود صدا برای همیشه تولید خواهد شد.
مثالها (Examples)
- تنظیم نرخ
نمونهبرداری
روی 48000 Hz و
چیدمان
کانال روی
AV_CH_LAYOUT_MONO:
anullsrc=r=48000:cl=4
- انجام همان
عملیات با
سینتکسی
واضحتر:
anullsrc=r=48000:cl=mono
تمامی پارامترها باید بهطور صریح تعریف شوند.
flite
تولید گفتار صوتی با استفاده از کتابخانه libflite.
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با سوییچ "--enable-libflite" پیکربندی کنید.
توجه داشته باشید که نسخههای قدیمیتر از 2.0 کتابخانه flite از نظر همروندی (thread-safe) امن نیستند.
این فیلتر گزینههای زیر را میپذیرد:
- list_voices
- اگر روی 1 تنظیم شود، نام صداهای در دسترس را فهرست کرده و بلافاصله خارج میشود. مقدار پیشفرض 0 است.
- nb_samples, n
- تنظیم حداکثر تعداد نمونهها در هر فریم. مقدار پیشفرض 512 است.
- textfile
- تنظیم نام فایل حاوی متنی که باید خوانده شود.
- text
- تنظیم متنی که باید خوانده شود.
- voice, v
- تنظیم صدای مورد استفاده برای تبدیل متن به گفتار. مقدار پیشفرض "kal" است. همچنین گزینه list_voices را ببینید.
مثالها (Examples)
- خواندن متن
از فایل speech.txt
و تبدیل آن
به گفتار با
استفاده از
صدای
استاندارد
flite:
flite=textfile=speech.txt
- خواندن متن
مشخصشده
با انتخاب
صدای "slt":
flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
- ارسال متن
ورودی به ffmpeg:
ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
- خواندن متن
با ابزار ffplay
با استفاده
از "flite" و
دستگاه
"lavfi":
ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
برای دریافت اطلاعات بیشتر درباره libflite، این پیوند را بررسی کنید: http://www.festvox.org/flite
anoisesrc
تولید یک سیگنال صوتی نویز.
این فیلتر گزینههای زیر را میپذیرد:
- sample_rate, r
- تعیین نرخ نمونهبرداری. مقدار پیشفرض 48000 Hz است.
- amplitude, a
- تعیین دامنه (0.0 - 1.0) برای جریان صوتی تولیدشده. مقدار پیشفرض 1.0 است.
- duration, d
- تعیین مدت زمان جریان صوتی تولیدشده. عدم تعیین این گزینه منجر به تولید نویزی با طول نامتناهی میشود.
- color, colour, c
- تعیین رنگ نویز. رنگهای نویز در دسترس عبارتند از: white (سفید)، pink (صورتی)، brown (قهوهای)، blue (آبی)، violet (بنفش) و velvet (مخملی). رنگ پیشفرض white است.
- seed, s
- تعیین یک مقدار بذر (seed) برای مولد اعداد شبهتصادفی (PRNG).
- nb_samples, n
- تنظیم تعداد نمونهها در هر فریم خروجی؛ پیشفرض 1024 است.
- density
- تنظیم چگالی (0.0 - 1.0) برای مولد نویز مخملی (velvet)؛ پیشفرض 0.05 است.
مثالها (Examples)
- •
- تولید ۶۰
ثانیه نویز
صورتی، با
نرخ
نمونهبرداری
44.1 kHz و دامنه 0.5:
anoisesrc=d=60:c=pink:r=44100:a=0.5
hilbert
تولید ضرایب FIR تبدیل هیلبرت با مرتبه فرد (odd-tap).
جریان حاصل را میتوان به همراه فیلتر afir برای تغییر فاز ۹۰ درجهای سیگنال استفاده کرد.
این روش در بسیاری از الگوهای کدگذاری ماتریسی و برای تولید سیگنال تحلیلی به کار میرود. این فرآیند معمولاً به صورت ضرب در i (یا j)، واحد موهومی، نمایش داده میشود.
این فیلتر گزینههای زیر را میپذیرد:
- sample_rate, s
- تنظیم نرخ نمونهبرداری؛ پیشفرض 44100 است.
- taps, t
- تنظیم طول فیلتر FIR؛ پیشفرض 22051 است.
- nb_samples, n
- تنظیم تعداد نمونهها در هر فریم.
- win_func, w
- تنظیم تابع پنجرهبندی مورد استفاده هنگام تولید ضرایب FIR.
sinc
تولید ضرایب فیلتر FIR پایینگذر، بالاگذر، میانگذر یا میانناگذر sinc با استفاده از پنجره کایزر (kaiser-windowed).
جریان حاصل را میتوان به همراه فیلتر afir برای فیلتر کردن سیگنال صوتی به کار برد.
این فیلتر گزینههای زیر را میپذیرد:
- sample_rate, r
- تنظیم نرخ نمونهبرداری؛ پیشفرض 44100 است.
- nb_samples, n
- تنظیم تعداد نمونهها در هر فریم. پیشفرض 1024 است.
- hp
- تنظیم فرکانس بالاگذر. پیشفرض 0 است.
- lp
- تنظیم فرکانس پایینگذر. پیشفرض 0 است. اگر فرکانس بالاگذر کمتر از فرکانس پایینگذر باشد و فرکانس پایینگذر بزرگتر از 0 باشد، فیلتر ضرایب فیلتر میانگذر (band-pass) تولید خواهد کرد، در غیر این صورت ضرایب فیلتر میانناگذر (band-reject) ایجاد میکند.
- phase
- تنظیم پاسخ فاز فیلتر. پیشفرض 50 است. محدوده مجاز از 0 تا 100 است.
- beta
- تنظیم بتای پنجره کایزر (Kaiser window beta).
- att
- تنظیم میزان تضعیف باند توقف (stop-band attenuation). پیشفرض 120dB است، محدوده مجاز از 40 تا 180 dB است.
- round
- فعالسازی گرد کردن؛ بهطور پیشفرض غیرفعال است.
- hptaps
- تنظیم تعداد تپها (ضرایب) برای فیلتر بالاگذر.
- lptaps
- تنظیم تعداد تپها (ضرایب) برای فیلتر پایینگذر.
sine
تولید یک سیگنال صوتی متشکل از یک موج سینوسی با دامنه 1/8.
این سیگنال صوتی از نظر بیتی کاملاً دقیق (bit-exact) است.
این فیلتر گزینههای زیر را میپذیرد:
- frequency, f
- تنظیم فرکانس موج حامل. پیشفرض 440 Hz است.
- beep_factor, b
- فعالسازی یک بوق دورهای در هر ثانیه با فرکانس beep_factor برابر فرکانس حامل. پیشفرض 0 است، به این معنی که صدای بوق غیرفعال است.
- sample_rate, r
- مشخص کردن نرخ نمونهبرداری؛ پیشفرض 44100 است.
- duration, d
- مشخص کردن مدت زمان جریان صوتی تولیدشده.
- samples_per_frame
- تنظیم
تعداد
نمونهها
در هر فریم
خروجی.
عبارت ریاضی میتواند شامل ثابتهای زیر باشد:
پیشفرض 1024 است.
مثالها (Examples)
- تولید یک
موج سینوسی
ساده 440 Hz:
sine
- تولید یک
موج سینوسی
220 Hz همراه با
بوق 880 Hz در هر
ثانیه، به
مدت ۵
ثانیه:
sine=220:4:d=5 sine=f=220:b=4:d=5 sine=frequency=220:beep_factor=4:duration=5
- تولید یک
موج سینوسی
1 kHz بر اساس
الگوی NTSC به
صورت
"1602,1601,1602,1601,1602":
sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
سینکهای صوتی (AUDIO SINKS)
در ادامه توصیف سینکهای صوتی در دسترس ارائه شده است.
abuffersink
بافر کردن فریمهای صوتی و در دسترس قرار دادن آنها در انتهای زنجیره فیلتر.
این سینک در اصل برای کاربردهای برنامهنویسی طراحی شده است، بهویژه از طریق رابط کاربری تعریفشده در libavfilter/buffersink.h یا سیستم گزینهها.
این سینک اشارهگری به ساختار AVABufferSinkContext را میپذیرد که قالب بافرهای ورودی را تعریف میکند، تا به عنوان پارامتر مات (opaque) برای راهاندازی اولیه به "avfilter_init_filter" ارسال شود.
anullsink
سینک صوتی تهی؛ مطلقاً هیچ کاری با صدای ورودی انجام نمیدهد. این سینک عمدتاً به عنوان یک الگو و برای استفاده در ابزارهای تحلیل و خطایابی مفید است.
فیلترهای تصویری (VIDEO FILTERS)
هنگام پیکربندی ساخت FFmpeg خود، میتوانید هر یک از فیلترهای موجود را با استفاده از "--disable-filters" غیرفعال کنید. خروجی configure فیلترهای ویدیویی گنجاندهشده در ساخت شما را نمایش خواهد داد.
در ادامه توصیف فیلترهای ویدیویی در دسترس فعلی ارائه شده است.
addroi
علامتگذاری یک ناحیه مورد علاقه (Region of Interest - ROI) در یک فریم ویدیویی.
دادههای فریم بدون تغییر عبور داده میشوند، اما متادادهای به فریم ضمیمه میشود که نواحی مورد علاقه را نشان میدهد و میتواند بر رفتار انکودینگ بعدی تأثیر بگذارد. با اعمال چندباره فیلتر میتوان چندین ناحیه را علامتگذاری کرد.
- x
- فاصله ناحیه بر حسب پیکسل از لبه چپ فریم.
- y
- فاصله ناحیه بر حسب پیکسل از لبه بالایی فریم.
- w
- عرض ناحیه بر حسب پیکسل.
- h
- ارتفاع
ناحیه بر
حسب پیکسل.
پارامترهای x، y، w و h عبارات ریاضی هستند و میتوانند شامل متغیرهای زیر باشند:
- qoffset
- آفست
کوانتیزاسیون
برای اعمال
در داخل
ناحیه.
این مقدار باید یک عدد حقیقی در محدوده -1 تا +1 باشد. مقدار صفر نشاندهنده عدم تغییر در کیفیت است. مقدار منفی کیفیت بهتر (کوانتیزاسیون کمتر) و مقدار مثبت کیفیت پایینتر (کوانتیزاسیون بیشتر) را درخواست میکند.
این محدوده بهگونهای کالیبره شده است که مقادیر حدی نشاندهنده بزرگترین آفست ممکن باشند - اگر بقیه فریم با بدترین کیفیت ممکن انکود شود، آفست -1 نشان میدهد که این ناحیه در هر صورت باید با بهترین کیفیت ممکن انکود گردد. مقادیر میانی سپس به روشی وابسته به کدک درونیابی میشوند.
برای نمونه، در H.264 دهبیتی پارامتر کوانتیزاسیون بین -12 و 51 تغییر میکند. بنابراین یک مقدار نوعی qoffset برابر با -1/10 نشان میدهد که این ناحیه باید با QP حدود یکدهمِ کلِ دامنه بهتر از بقیه فریم انکود شود. بنابراین، اگر بیشتر فریم با QP حدود 30 انکود شود، این ناحیه QP حدود 24 دریافت خواهد کرد (آفست تقریبی -1/10 * (51 - -12) = -6.3). یک مقدار حدی -1 نشان میدهد که این ناحیه صرفنظر از چگونگی انکود بقیه فریم باید با بهترین کیفیت ممکن انکود شود - یعنی باید در QP برابر -12 انکود گردد.
- clear
- در صورت تنظیم روی true، قبل از افزودن ناحیه جدید، هر ناحیه مورد علاقه از پیش علامتگذاریشده روی فریم حذف میشود.
مثالها (Examples)
- علامتگذاری
یکچهارم
مرکزی فریم
به عنوان
ناحیه مورد
علاقه:
addroi=iw/4:ih/4:iw/2:ih/2:-1/10
- علامتگذاری
ناحیهای
به عرض ۱۰۰
پیکسل در
لبه سمت چپ
فریم به
عنوان
ناحیهای
بسیار
کماهمیت
(جهت انکود
با کیفیتی
بسیار
پایینتر
از بقیه
فریم):
addroi=0:0:100:ih:+1/5
alphaextract
استخراج مولفه آلفا از ورودی به عنوان یک ویدیوی در مقیاس خاکستری (grayscale). این فیلتر به ویژه همراه با فیلتر alphamerge کاربرد دارد.
alphamerge
افزودن یا جایگزینی مولفه آلفای ورودی اصلی با مقدار مقیاس خاکستری یک ورودی دوم. این فیلتر برای استفاده به همراه alphaextract در نظر گرفته شده است تا امکان انتقال یا ذخیرهسازی دنباله فریمهای دارای کانال آلفا را در قالبی که از کانال آلفا پشتیبانی نمیکند فراهم سازد.
برای نمونه، جهت بازسازی فریمهای کامل از یک ویدیوی معمولی انکودشده با YUV و یک ویدیوی جداگانه ایجادشده با alphaextract، میتوانید از دستور زیر استفاده کنید:
movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
amplify
تقویت تفاوتهای میان پیکسل فعلی و پیکسلهای فریمهای مجاور در همان موقعیت مکانی پیکسل.
این فیلتر گزینههای زیر را میپذیرد:
- radius
- تنظیم شعاع فریم. پیشفرض 2 است. محدوده مجاز از 1 تا 63 است. برای مثال، شعاع 3 به فیلتر دستور میدهد میانگین 7 فریم را محاسبه کند.
- factor
- تنظیم ضریب تقویت تفاوت. پیشفرض 2 است. محدوده مجاز از 0 تا 65535 است.
- threshold
- تنظیم آستانه برای تقویت تفاوت. هر تفاوتی بزرگتر یا مساوی با این مقدار، پیکسل منبع را تغییر نخواهد داد. پیشفرض 10 است. محدوده مجاز از 0 تا 65535 است.
- tolerance
- تنظیم رواداری (tolerance) برای تقویت تفاوت. هر تفاوتی کمتر از این مقدار، پیکسل منبع را تغییر نخواهد داد. پیشفرض 0 است. محدوده مجاز از 0 تا 65535 است.
- low
- تنظیم حد پایین برای تغییر پیکسل منبع. پیشفرض 65535 است. محدوده مجاز از 0 تا 65535 است. این گزینه حداکثر مقدار ممکنی را که مقدار پیکسل منبع را کاهش میدهد کنترل میکند.
- high
- تنظیم حد بالا برای تغییر پیکسل منبع. پیشفرض 65535 است. محدوده مجاز از 0 تا 65535 است. این گزینه حداکثر مقدار ممکنی را که مقدار پیکسل منبع را افزایش میدهد کنترل میکند.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. پیشفرض همه (all) است. محدوده مجاز از 0 تا 15 است.
دستورات (Commands)
این فیلتر از دستورات زیر که متناظر با گزینههایی با همین نام هستند پشتیبانی میکند:
ass
مشابه فیلتر subtitles است، با این تفاوت که برای کار کردن به libavcodec و libavformat نیازی ندارد. از سوی دیگر، محدود به فایلهای زیرنویس ASS (Advanced Substation Alpha) است.
این فیلتر گزینههای filename/f، original_size، fontsdir و alpha را از فیلتر subtitles به همراه گزینه زیر میپذیرد:
- shaping
- تنظیم
موتور
شکلدهی
متن (shaping engine).
مقادیر در دسترس عبارتند از:
- auto
- موتور شکلدهی پیشفرض libass که بهترین گزینه در دسترس است.
- simple
- شکلدهنده سریع و مستقل از قلم که تنها قابلیت انجام جایگزینی حروف را دارد.
- complex
- شکلدهنده کندتر که از ویژگیهای OpenType برای جایگزینیها و موقعیتیابی حروف استفاده میکند. برای رندر صحیح خطوط و زبانهای پیچیده مانند فارسی، عربی، عبری، دیواناگری و تایلندی ضروری است. نیازمند این است که libass همراه با HarfBuzz کامپایل شده باشد.
پیشفرض "auto" است.
atadenoise
اعمال یک فیلتر نویزگیر میانگینگیر زمانی انطباقی (Adaptive Temporal Averaging Denoiser) به ورودی ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- 0a
- تنظیم آستانه A برای پلین اول. پیشفرض 0.02 است. محدوده معتبر بین 0 تا 0.3 است.
- 0b
- تنظیم آستانه B برای پلین اول. پیشفرض 0.04 است. محدوده معتبر بین 0 تا 5 است.
- 1a
- تنظیم آستانه A برای پلین دوم. پیشفرض 0.02 است. محدوده معتبر بین 0 تا 0.3 است.
- 1b
- تنظیم آستانه B برای پلین دوم. پیشفرض 0.04 است. محدوده معتبر بین 0 تا 5 است.
- 2a
- تنظیم آستانه A برای پلین سوم. پیشفرض 0.02 است. محدوده معتبر بین 0 تا 0.3 است.
- 2b
- تنظیم
آستانه B
برای پلین
سوم.
پیشفرض 0.04
است. محدوده
معتبر بین 0
تا 5 است.
آستانه A برای واکنش به تغییرات ناگهانی در سیگنال ورودی و آستانه B برای واکنش به تغییرات پیوسته در سیگنال ورودی طراحی شده است.
- s
- تنظیم تعداد فریمهایی که فیلتر برای میانگینگیری استفاده خواهد کرد. پیشفرض 9 است. باید یک عدد فرد در محدوده [5, 129] باشد.
- p
- تنظیم پلینهایی از فریم که فیلتر برای میانگینگیری استفاده خواهد کرد. پیشفرض همه (all) است.
- a
- تنظیم نوع
الگوریتمی
که فیلتر
برای
میانگینگیری
استفاده
خواهد کرد.
پیشفرض
"p"
(موازی) است.
به عنوان
جایگزین
میتواند
روی "s"
(سریالی)
تنظیم شود.
حالت موازی میتواند سریعتر از سریالی باشد، اما برعکس آن هرگز رخ نمیدهد. حالت موازی در صورت وقوع نخستین تغییری که از آستانهها فراتر رود پردازش را زودتر متوقف میکند، در حالی که حالت سریالی پردازش سمت دیگر فریمها را در صورت برابر یا کمتر بودن با آستانهها ادامه میدهد.
- 0s
- 1s
- 2s
- تنظیم سیگما برای پلین اول، دوم یا سوم. پیشفرض 32767 است. محدوده معتبر از 0 تا 32767 است. این گزینه وزن هر پیکسل را در شعاع تعریفشده توسط اندازه کنترل میکند. مقدار پیشفرض به این معناست که تمامی پیکسلها وزن برابری دارند. تنظیم این گزینه روی 0 عملاً فیلتر کردن را غیرفعال میسازد.
دستورات (Commands)
این فیلتر از تمامی دستورات متناظر با گزینهها به جز گزینه "s" پشتیبانی میکند. این دستور از همان سینتکس گزینه مربوطه پیروی میکند.
avgblur
اعمال فیلتر تاری میانگین (average blur).
این فیلتر گزینههای زیر را میپذیرد:
- sizeX
- تنظیم اندازه شعاع افقی.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. بهطور پیشفرض تمامی پلینها فیلتر میشوند.
- sizeY
- تنظیم اندازه شعاع عمودی؛ اگر صفر باشد مشابه "sizeX" خواهد بود. پیشفرض 0 است.
دستورات (Commands)
این فیلتر از دستورات یکسانی با گزینهها پشتیبانی میکند. این دستور همان سینتکس گزینه متناظر را میپذیرد.
در صورتی که عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
backgroundkey
تبدیل یک پسزمینه ایستا به شفافیت.
این فیلتر گزینههای زیر را میپذیرد:
- threshold
- آستانه برای تشخیص تغییر صحنه.
- similarity
- درصد شباهت با پسزمینه.
- blend
- تنظیم میزان ترکیب (blend) برای پیکسلهایی که مشابه نیستند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
bbox
محاسبه جعبه مرزی (bounding box) برای پیکسلهای غیرسیاه در پلین لومای فریم ورودی.
این فیلتر جعبه مرزی حاوی تمامی پیکسلهای با مقدار لوما بیشتر از حداقل مقدار مجاز را محاسبه میکند. پارامترهای توصیفکننده جعبه مرزی در لاگ فیلتر چاپ میشوند.
این فیلتر گزینه زیر را میپذیرد:
- min_val
- تنظیم حداقل مقدار لوما. پیشفرض 16 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
bilateral
اعمال فیلتر دوطرفه (bilateral filter)؛ هموارسازی مکانی همراه با حفظ لبهها.
این فیلتر گزینههای زیر را میپذیرد:
- sigmaS
- تنظیم سیگمای تابع گاوسی برای محاسبه وزن مکانی (spatial weight). محدوده مجاز بین 0 تا 512 است. پیشفرض 0.1 است.
- sigmaR
- تنظیم سیگمای تابع گاوسی برای محاسبه وزن بازه (range weight). محدوده مجاز بین 0 تا 1 است. پیشفرض 0.1 است.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. پیشفرض تنها پلین اول است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
bitplanenoise
نمایش و اندازهگیری نویز در سطوح بیتی (bit plane noise).
این فیلتر گزینههای زیر را میپذیرد:
blackdetect, blackdetect_vulkan
تشخیص بازههایی از ویدیو که (تقریباً) کاملاً سیاه هستند. برای تشخیص گذار فصلها، آگهیهای بازرگانی یا ضبطهای نامعتبر کاربرد دارد.
این فیلتر نتایج تحلیل تشخیص خود را هم در لاگ و هم در متادادای فریم ثبت میکند. در صورت یافتن قطعه سیاهی با حداقل مدت زمان مشخصشده، خطی شامل برچسبهای زمانی شروع و پایان و همچنین مدت زمان با سطح "info" در لاگ چاپ میشود. علاوه بر این، به ازای هر فریم خطی با سطح "debug" چاپ میشود که میزان سیاهی تشخیصدادهشده برای آن فریم را نشان میدهد.
این فیلتر همچنین متادادهای را با کلید "lavfi.black_start" به نخستین فریم قطعه سیاه و با کلید "lavfi.black_end" به نخستین فریم پس از پایان قطعه سیاه ضمیمه میکند. مقدار این متاداده برابر با برچسب زمانی فریم است. این متاداده صرفنظر از حداقل مدت زمان تعیینشده افزوده میشود.
این فیلتر گزینههای زیر را میپذیرد:
- black_min_duration, d
- تنظیم
حداقل مدت
زمان سیاهی
تشخیصدادهشده
بر حسب
ثانیه. باید
یک عدد ممیز
شناور
نامنفی
باشد.
مقدار پیشفرض 2.0 است.
- picture_black_ratio_th, pic_th
- تنظیم
آستانه
برای
"سیاه" در
نظر گرفتن
یک تصویر.
حداقل
مقدار برای
نسبت زیر را
بیان
میکند:
<nb_black_pixels> / <nb_pixels>
که به ازای آن تصویر سیاه در نظر گرفته میشود. مقدار پیشفرض 0.98 است.
- pixel_black_th, pix_th
- تنظیم
آستانه
برای
"سیاه" در
نظر گرفتن
یک پیکسل.
این آستانه حداکثر مقدار لومای یک پیکسل را که برای آن پیکسل "سیاه" تلقی میشود مشخص میکند. مقدار ارائهشده طبق معادله زیر مقیاسبندی میشود:
<absolute_threshold> = <luma_minimum_value> + <pixel_black_th> * <luma_range_size>
مقادیر luma_range_size و luma_minimum_value به فرمت ویدیوی ورودی بستگی دارند؛ این محدوده برای قالبهای YUV با دامنه کامل [0-255] و برای قالبهای YUV با دامنه محدود [16-235] است.
مقدار پیشفرض 0.10 است.
- alpha
- در صورت
فعال بودن،
کانال آلفا
به جای
کانال لوما
بررسی
میشود. به
جای
فریمهای
تقریباً
سیاه،
فریمهایی
را که
(تقریباً)
شفاف هستند
تشخیص
میدهد.
بهطور پیشفرض غیرفعال است.
مثال زیر حداکثر آستانه پیکسل را روی حداقل مقدار تنظیم کرده و تنها بازههای سیاهی ۲ ثانیهای یا بیشتر را تشخیص میدهد:
blackdetect=d=2:pix_th=0.00
blackframe
تشخیص فریمهایی که (تقریباً) کاملاً سیاه هستند. برای تشخیص جابجایی فصلها یا پیامهای بازرگانی مفید است. خطوط خروجی شامل شماره فریمِ فریم تشخیص دادهشده، درصد سیاهی، موقعیت در فایل در صورت معلوم بودن یا -1، و برچسب زمان بر حسب ثانیه است.
برای نمایش خطوط خروجی، باید مقدار loglevel را حداقل روی AV_LOG_INFO تنظیم کنید.
این فیلتر متادادای فریم "lavfi.blackframe.pblack" را صادر میکند. مقدار آن نمایانگر درصد پیکسلهایی در تصویر است که زیر مقدار آستانه قرار دارند.
این فیلتر پارامترهای زیر را میپذیرد:
- amount
- درصد پیکسلهایی که باید زیر مقدار آستانه باشند؛ پیشفرض 98 است.
- threshold, thresh
- آستانهای که کمتر از آن، مقدار پیکسل سیاه در نظر گرفته میشود؛ پیشفرض 32 است.
blend
ترکیب کردن (Blend) دو فریم ویدیویی در یکدیگر.
فیلتر "blend" دو جریان ورودی را دریافت کرده و یک جریان خروجی تولید میکند؛ ورودی اول لایه "بالایی" (top) و ورودی دوم لایه "پایینی" (bottom) است. بهطور پیشفرض، خروجی با پایان یافتن طولانیترین ورودی پایان مییابد.
فیلتر "tblend" (ترکیب زمانی) دو فریم متوالی را از یک تکجریان دریافت کرده و نتیجه حاصل از ترکیب فریم جدید بر روی فریم قدیمی را خروجی میدهد.
توصیف گزینههای پذیرفتهشده در ادامه آمده است:
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
- تنظیم حالت
ترکیب برای
مولفه
پیکسلی خاص
یا تمامی
مولفهها
در صورت
استفاده از
all_mode. مقدار
پیشفرض
"normal" است.
مقادیر در دسترس برای حالتهای مولفه عبارتند از:
- addition
- and
- average
- bleach
- burn
- darken
- difference
- divide
- dodge
- exclusion
- extremity
- freeze
- geometric
- glow
- grainextract
- grainmerge
- hardlight
- hardmix
- hardoverlay
- harmonic
- heat
- interpolate
- lighten
- linearlight
- multiply
- multiply128
- negation
- normal
- or
- overlay
- phoenix
- pinlight
- reflect
- screen
- softdifference
- softlight
- stain
- subtract
- vividlight
- xor
- c0_opacity
- c1_opacity
- c2_opacity
- c3_opacity
- all_opacity
- تنظیم شفافیت/کدری (opacity) ترکیب برای مولفه پیکسلی خاص یا تمامی مولفهها در صورت استفاده از all_opacity. تنها در ترکیب با حالتهای ترکیب مولفه پیکسلی استفاده میشود.
- c0_expr
- c1_expr
- c2_expr
- c3_expr
- all_expr
- تنظیم
عبارت
ترکیب برای
مولفه
پیکسلی خاص
یا تمامی
مولفهها
در صورت
استفاده از
all_expr. توجه
داشته
باشید در
صورت تنظیم
این
عبارات،
گزینههای
مربوط به
حالت ترکیب
نادیده
گرفته
خواهند شد.
عبارات میتوانند از متغیرهای زیر استفاده کنند:
- N
- شماره ترتیبی فریم فیلترشده، شروع از 0.
- X
- Y
- مختصات نمونه پیکسلی فعلی
- W
- H
- عرض و ارتفاع پلین در حال فیلتر شدن
- SW
- SH
- مقیاس عرض و ارتفاع برای پلین در حال فیلتر شدن. این نسبت ابعاد پلین فعلی به پلین لوما است؛ برای نمونه برای یک فریم "yuv420p"، مقادیر برای پلین لوما برابر با "1,1" و برای پلینهای کروما برابر با "0.5,0.5" است.
- T
- زمان فریم فعلی بر حسب ثانیه.
- TOP, A
- مقدار مولفه پیکسلی در موقعیت فعلی برای فریم اول ویدیو (لایه بالایی).
- BOTTOM, B
- مقدار مولفه پیکسلی در موقعیت فعلی برای فریم دوم ویدیو (لایه پایینی).
فیلتر "blend" همچنین از گزینههای framesync پشتیبانی میکند.
مثالها (Examples)
- اعمال گذار
از لایه
پایینی به
لایه
بالایی در
۱۰ ثانیه
نخست:
blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
- اعمال گذار
خطی افقی از
لایه
بالایی به
لایه
پایینی:
blend=all_expr='A*(X/W)+B*(1-X/W)'
- اعمال جلوه
شطرنجی
۱در۱:
blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
- اعمال جلوه
آشکارسازی
(uncover) به سمت چپ:
blend=all_expr='if(gte(N*SW+X,W),A,B)'
- اعمال جلوه
آشکارسازی
به سمت
پایین:
blend=all_expr='if(gte(Y-N*SH,0),A,B)'
- اعمال جلوه
آشکارسازی
به سمت
بالا-چپ:
blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
- تقسیم قطری
ویدیو و
نمایش
لایههای
بالا و
پایین در هر
طرف:
blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
- نمایش
تفاوتهای
میان فریم
فعلی و فریم
قبلی:
tblend=all_mode=grainextract
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند.
blockdetect
تعیین میزان بلوکی شدن (blockiness) فریمها بدون تغییر دادن فریمهای ورودی.
بر اساس مقاله ریمکو مویس و ایهور کیرنکو: "A no-reference blocking artifact measure for adaptive video processing." کنفرانس پردازش سیگنال اروپا ۲۰۰۵.
این فیلتر گزینههای زیر را میپذیرد:
- period_min
- period_max
- تنظیم حداقل و حداکثر مقادیر برای تعیین شبکههای پیکسلی (دورهها). مقادیر پیشفرض [3,24] هستند.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. پیشفرض تنها پلین اول است.
مثالها (Examples)
- •
- تعیین
میزان
بلوکی بودن
برای پلین
اول و جستجو
برای
دورهها در
بازه [8,32]:
blockdetect=period_min=8:period_max=32:planes=1
blurdetect
تعیین میزان تاری (blurriness) فریمها بدون تغییر دادن فریمهای ورودی.
بر اساس مقاله مارزیلیانو، پینا و همکاران: "A no-reference perceptual blur metric." امکان تقریب مبتنی بر بلوک را فراهم میسازد.
این فیلتر گزینههای زیر را میپذیرد:
- low
- high
- تنظیم
مقادیر
آستانه
پایین و
بالا مورد
استفاده در
الگوریتم
آستانهگذاری
Canny.
آستانه بالا پیکسلهای لبه "قوی" را انتخاب میکند که سپس از طریق اتصال ۸-تایی با پیکسلهای لبه "ضعیف" که توسط آستانه پایین انتخاب شدهاند متصل میشوند.
مقادیر آستانه low و high باید در محدوده [0,1] انتخاب شوند و low باید کمتر یا مساوی high باشد.
مقدار پیشفرض برای low برابر "20/255" و مقدار پیشفرض برای high برابر "50/255" است.
- radius
- تعریف شعاع جستجو در اطراف یک پیکسل لبه برای یافتن بیشینههای محلی.
- block_pct
- تعیین میزان تاری فقط برای مهمترین بلوکها بر حسب درصد.
- block_width
- تعیین میزان تاری برای بلوکهایی به عرض block_width. در صورت تنظیم روی هر مقداری کمتر از 1، هیچ بلوکی استفاده نمیشود و کل تصویر صرفنظر از block_height به صورت یکپارچه پردازش میگردد.
- block_height
- تعیین میزان تاری برای بلوکهایی به ارتفاع block_height. در صورت تنظیم روی هر مقداری کمتر از 1، هیچ بلوکی استفاده نمیشود و کل تصویر صرفنظر از block_width به صورت یکپارچه پردازش میگردد.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. پیشفرض تنها پلین اول است.
مثالها (Examples)
- •
- تعیین تاری
برای ۸۰٪ از
مهمترین
بلوکهای 32x32:
blurdetect=block_width=32:block_height=32:block_pct=80
bm3d
نویززدایی از فریمها با استفاده از الگوریتم تطبیق بلوک سهبعدی (Block-Matching 3D).
این فیلتر گزینههای زیر را میپذیرد:
- sigma
- تنظیم شدت نویززدایی. مقدار پیشفرض 1 است. محدوده مجاز از 0 تا 999.9 است. الگوریتم نویززدایی به سیگما بسیار حساس است، بنابراین آن را متناسب با منبع تنظیم کنید.
- block
- تنظیم اندازه پچ محلی. این گزینه ابعاد را در دو بعد تعیین میکند.
- bstep
- تنظیم گام لغزشی برای پردازش بلوکها. مقدار پیشفرض 4 است. محدوده مجاز از 1 تا 64 است. مقادیر کوچکتر امکان پردازش بلوکهای مرجع بیشتری را فراهم میسازد و سرعت را کاهش میدهد.
- group
- تنظیم حداکثر تعداد بلوکهای مشابه برای بعد سوم. مقدار پیشفرض 1 است. هنگام تنظیم روی 1، هیچ تطبیق بلوکی انجام نمیشود. مقادیر بزرگتر اجازه حضور بلوکهای بیشتری را در یک گروه منفرد میدهد. محدوده مجاز از 1 تا 256 است.
- range
- تنظیم شعاع برای جستجوی تطبیق بلوک. پیشفرض 9 است. محدوده مجاز از 1 تا INT32_MAX است.
- mstep
- تنظیم گام میان دو موقعیت جستجو برای تطبیق بلوک. پیشفرض 1 است. محدوده مجاز از 1 تا 64 است. مقادیر کوچکتر کندتر هستند.
- thmse
- تنظیم آستانه میانگین مربعات خطا برای تطبیق بلوک. محدوده معتبر بین 0 تا INT32_MAX است.
- hdthr
- تنظیم پارامتر آستانهگذاری سخت در دامنه تبدیلیافته سهبعدی. مقادیر بزرگتر منجر به فیلترسازی قویتر با آستانهگذاری سخت در حوزه فرکانس میشود.
- estim
- تنظیم حالت تخمین فیلترسازی. میتواند "basic" یا "final" باشد. پیشفرض "basic" است.
- ref
- در صورت فعال بودن، فیلتر از جریان دوم برای تطبیق بلوک استفاده خواهد کرد. بهطور پیشفرض برای مقدار "basic" در گزینه estim غیرفعال است، و در صورتی که مقدار estim برابر با "final" باشد همیشه فعال است.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. پیشفرض تمامی پلینهای در دسترس به جز آلفا است.
مثالها (Examples)
- فیلترسازی
پایهای با
bm3d:
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
- مشابه مثال
بالا، اما
فیلتر کردن
تنها پلین
لوما:
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
- مشابه مثال
بالا، اما
همراه با هر
دو حالت
تخمین:
split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
- مشابه مثال
بالا، اما
همراه با
پیشفیلترسازی
توسط فیلتر
nlmeans:
split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
boxblur
اعمال الگوریتم تاری جعبهای (boxblur) روی ویدیوی ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
توضیحات گزینههای مورد پذیرش در ادامه آمده است.
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
- تنظیم یک
عبارت برای
شعاع جعبه
بر حسب
پیکسل که
برای تار
کردن پلین
ورودی
متناظر
استفاده
میشود.
مقدار شعاع باید یک عدد نامنفی باشد، و نباید بزرگتر از مقدار عبارت "min(w,h)/2" برای پلینهای لوما و آلفا، و "min(cw,ch)/2" برای پلینهای کروما باشد.
مقدار پیشفرض برای luma_radius برابر "2" است. در صورت عدم تعیین، گزینههای chroma_radius و alpha_radius به مقدار متناظر تنظیمشده برای luma_radius پیشفرض میشوند.
عبارات میتوانند شامل ثابتهای زیر باشند:
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
- تعیین
تعداد
دفعاتی که
فیلتر boxblur روی
پلین
متناظر
اعمال
میشود.
مقدار پیشفرض برای luma_power برابر 2 است. در صورت عدم تعیین، گزینههای chroma_power و alpha_power به مقدار متناظر تنظیمشده برای luma_power پیشفرض میشوند.
مقدار 0 این جلوه را غیرفعال میسازد.
مثالها (Examples)
- اعمال
فیلتر boxblur با
شعاعهای
لوما،
کروما و
آلفا
تنظیمشده
روی 2:
boxblur=luma_radius=2:luma_power=1 boxblur=2:1
- تنظیم شعاع
لوما روی 2،
و شعاعهای
آلفا و
کروما روی 0:
boxblur=2:1:cr=0:ar=0
- تنظیم
شعاعهای
لوما و
کروما به
صورت کسری
از ابعاد
ویدیو:
boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
bwdif
دیاینترلیس کردن (Deinterlace) ویدیوی ورودی ("bwdif" مخفف عبارت "Bob Weaver Deinterlacing Filter" است).
دیاینترلیسسازی انطباقی بر پایه حرکت بر پایه yadif همراه با استفاده از الگوریتمهای درونیابی w3fdif و مکعبی (cubic). این فیلتر پارامترهای زیر را میپذیرد:
- mode
- حالت اینترلیس مورد اتخاذ. یکی از مقادیر زیر را میپذیرد:
- 0, send_frame
- خروجی دادن یک فریم به ازای هر فریم ورودی.
- 1, send_field
- خروجی دادن یک فریم به ازای هر فیلد ورودی.
مقدار پیشفرض "send_field" است.
- parity
- پاریته فیلد تصویر فرضشده برای ویدیوی اینترلیس ورودی. یکی از مقادیر زیر را میپذیرد:
- 0, tff
- فرض تقدم فیلد بالایی (top field first).
- 1, bff
- فرض تقدم فیلد پایینی (bottom field first).
- -1, auto
- فعالسازی تشخیص خودکار پاریته فیلد.
مقدار پیشفرض "auto" است. اگر حالت اینترلیس نامشخص باشد یا دیکودر این اطلاعات را صادر نکند، تقدم فیلد بالایی فرض خواهد شد.
- deint
- مشخص کردن اینکه کدام فریمها باید دیاینترلیس شوند. یکی از مقادیر زیر را میپذیرد:
- 0, all
- دیاینترلیس کردن تمامی فریمها.
- 1, interlaced
- دیاینترلیس کردن تنها فریمهایی که به عنوان اینترلیس علامتگذاری شدهاند.
مقدار پیشفرض "all" است.
ccrepack
بستهبندی مجدد (Repack) دادههای جانبی زیرنویس بسته CEA-708 (Closed Captioning).
این فیلتر ایرادات گوناگون مشاهدهشده در انکودرهای تجاری در ارتباط با محمولههای نامعتبر بالادستی CEA-708 را برطرف میکند؛ بهویژه تعداد نادرست چندتاییها (مقدار نادرست cc_count برای نرخ فریمِ هدف)، و ترتیب نامناسب چندتاییها (به این معنا که چندتاییهای CEA-608 در اولین مدخلهای محموله قرار نگرفتهاند).
cas
اعمال فیلتر وضوحبخشی انطباقی با کنتراست (Contrast Adaptive Sharpen) بر روی جریان ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- strength
- تنظیم شدت وضوحبخشی (sharpening). مقدار پیشفرض 0 است.
- planes
- تنظیم پلینهایی که باید فیلتر شوند. مقدار پیشفرض فیلتر کردن تمامی پلینها به جز پلین آلفا است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند.
chromahold
حذف تمامی اطلاعات رنگی برای همه رنگها به جز یک رنگ خاص.
این فیلتر گزینههای زیر را میپذیرد:
- color
- رنگی که با کرومای خنثی جایگزین نخواهد شد.
- similarity
- درصد شباهت با رنگ فوق. مقدار 0.01 تنها با رنگ دقیق کلید مطابقت دارد، در حالی که 1.0 با همه چیز مطابقت دارد.
- blend
- درصد ترکیب. مقدار 0.0 پیکسلها را یا کاملاً خاکستری میکند، یا اصلاً خاکستری نمیکند. مقادیر بالاتر منجر به حفظ رنگ بیشتر میشوند.
- yuv
- اعلام
میکند که
رنگ
ارائهشده
از قبل در
فضای رنگی YUV
قرار دارد
نه RGB.
با فعال بودن این گزینه، نام رنگهای تحتاللفظی مانند "green" یا "red" دیگر معنایی ندارند. از این گزینه میتوان برای ارسال مقادیر دقیق YUV به عنوان اعداد هگزادسیمال استفاده کرد.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. این دستور از همان سینتکس گزینه متناظر پیروی میکند.
در صورتی که عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
chromakey
پرده رنگی یا کروماکی (Chroma Keying) در فضای رنگی YUV.
این فیلتر گزینههای زیر را میپذیرد:
- color
- رنگی که با شفافیت (transparency) جایگزین خواهد شد.
- similarity
- درصد شباهت
با رنگ
کلید.
مقدار 0.01 تنها با رنگ کلید دقیق مطابقت دارد، در حالی که 1.0 با همه چیز مطابقت دارد.
- blend
- درصد ترکیب.
مقدار 0.0 پیکسلها را یا کاملاً شفاف، یا کاملاً غیرشفاف میکند.
مقادیر بالاتر منجر به پیکسلهای نیمهشفاف میشوند، بهطوری که هرچه رنگ پیکسلها به رنگ کلید شبیهتر باشد، میزان شفافیت بیشتر خواهد بود.
- yuv
- اعلام
میکند که
رنگ
ارسالشده
از قبل در
فضای رنگی YUV
است نه RGB.
با فعال بودن این گزینه، رنگهای تحتاللفظی مانند "green" یا "red" دیگر کاربردی ندارند. از این گزینه میتوان برای ارسال مقادیر دقیق YUV به عنوان اعداد هگزادسیمال استفاده کرد.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. این دستور از همان سینتکس گزینه متناظر پیروی میکند.
در صورتی که عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
مثالها (Examples)
- شفاف کردن
هر پیکسل
سبز در
تصویر
ورودی:
ffmpeg -i input.png -vf chromakey=green out.png
- قرار دادن
یک ویدیوی
پرده سبز بر
روی یک
پسزمینه
سیاه ایستا:
ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
chromanr
کاهش نویز رنگپذیری (chrominance).
این فیلتر گزینههای زیر را میپذیرد:
- thres
- تنظیم آستانه برای میانگینگیری مقادیر رنگپذیری. مجموع قدر مطلق اختلاف مولفههای پیکسلی Y، U و V پیکسل جاری و پیکسلهای همسایه که کمتر از این آستانه باشد در میانگینگیری استفاده خواهد شد. مولفه روشنایی (Luma) بدون تغییر باقی مانده و به خروجی کپی میشود. مقدار پیشفرض 30 است. محدوده مجاز از 1 تا 200 است.
- sizew
- تنظیم شعاع افقی مستطیل مورد استفاده برای میانگینگیری. محدوده مجاز از 1 تا 100 است. مقدار پیشفرض 5 است.
- sizeh
- تنظیم شعاع عمودی مستطیل مورد استفاده برای میانگینگیری. محدوده مجاز از 1 تا 100 است. مقدار پیشفرض 5 است.
- stepw
- تنظیم گام افقی هنگام میانگینگیری. مقدار پیشفرض 1 است. محدوده مجاز از 1 تا 50 است. بیشتر برای سرعت بخشیدن به فیلتر کردن مفید است.
- steph
- تنظیم گام عمودی هنگام میانگینگیری. مقدار پیشفرض 1 است. محدوده مجاز از 1 تا 50 است. بیشتر برای سرعت بخشیدن به فیلتر کردن مفید است.
- threy
- تنظیم آستانه Y برای میانگینگیری مقادیر رنگپذیری. تنظیم کنترل دقیقتر برای بیشینه اختلاف مجاز میان مولفههای Y پیکسل جاری و پیکسلهای همسایه. مقدار پیشفرض 200 است. محدوده مجاز از 1 تا 200 است.
- threu
- تنظیم آستانه U برای میانگینگیری مقادیر رنگپذیری. تنظیم کنترل دقیقتر برای بیشینه اختلاف مجاز میان مولفههای U پیکسل جاری و پیکسلهای همسایه. مقدار پیشفرض 200 است. محدوده مجاز از 1 تا 200 است.
- threv
- تنظیم آستانه V برای میانگینگیری مقادیر رنگپذیری. تنظیم کنترل دقیقتر برای بیشینه اختلاف مجاز میان مولفههای V پیکسل جاری و پیکسلهای همسایه. مقدار پیشفرض 200 است. محدوده مجاز از 1 تا 200 است.
- distance
- تنظیم نوع فاصله مورد استفاده در محاسبات.
نوع فاصله پیشفرض manhattan است.
دستورات
این فیلتر از همان دستورات مشابه گزینهها پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
chromashift
تغییر مکان (شیفت) افقی و/یا عمودی پیکسلهای کروما.
این فیلتر گزینههای زیر را میپذیرد:
- cbh
- تنظیم میزان شیفت افقی کروما-آبی.
- cbv
- تنظیم میزان شیفت عمودی کروما-آبی.
- crh
- تنظیم میزان شیفت افقی کروما-قرمز.
- crv
- تنظیم میزان شیفت عمودی کروما-قرمز.
- edge
- تنظیم حالت لبه؛ میتواند smear (پیشفرض) یا warp باشد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
ciescope
نمایش نمودار رنگی CIE با پیکسلهای انداختهشده روی آن.
این فیلتر گزینههای زیر را میپذیرد:
- system
- تنظیم سامانه رنگی.
- cie
- تنظیم سامانه CIE.
- gamuts
- تنظیم
وسعتهای
رنگی (gamuts) برای
رسم.
برای مقادیر موجود گزینه "system" را ببینید.
- size, s
- تنظیم اندازه ciescope، بهطور پیشفرض 512 تعیین شده است.
- intensity, i
- تنظیم شدت مورد استفاده برای نگاشت مقادیر پیکسل ورودی به نمودار CIE.
- contrast
- تنظیم کنتراست مورد استفاده برای رسم رنگهای زبانه که خارج از وسعت رنگی سامانه رنگی فعال هستند.
- corrgamma
- تصحیح گامای نمایش دادهشده روی اسکوپ، بهطور پیشفرض فعال است.
- showwhite
- نمایش نقطه سفید روی نمودار CIE، بهطور پیشفرض غیرفعال است.
- gamma
- تنظیم گامای ورودی. تنها با فضای رنگی ورودی XYZ استفاده میشود.
- fill
- پر کردن با رنگهای CIE. بهطور پیشفرض فعال است.
codecview
بصریسازی اطلاعات صادرشده توسط برخی کدکها.
برخی کدکها میتوانند اطلاعات را از طریق فریمها با استفاده از دادههای جانبی (side-data) یا روشهای دیگر صادر کنند. برای نمونه، برخی کدکهای مبتنی بر MPEG بردارهای حرکت (motion vectors) را از طریق پرچم export_mvs در گزینه flags2 کدک صادر مینمایند.
این فیلتر گزینههای زیر را میپذیرد:
- block
- نمایش ساختار افراز بلوک با استفاده از صفحه روشنایی (luma).
- mv
- تنظیم
بردارهای
حرکتی برای
بصریسازی.
پرچمهای موجود برای mv عبارتند از:
- qp
- نمایش پارامترهای کوانتیزاسیون با استفاده از صفحههای کروما.
- mv_type, mvt
- تنظیم نوع
بردارهای
حرکت برای
بصریسازی.
شامل
بردارهای
حرکت تمامی
فریمها
میشود مگر
آنکه توسط
گزینه frame_type
مشخص شده
باشد.
پرچمهای موجود برای mv_type عبارتند از:
- frame_type, ft
- تنظیم نوع
فریم برای
بصریسازی
بردارهای
حرکت آن.
پرچمهای موجود برای frame_type عبارتند از:
مثالها
- بصریسازی
بردارهای
حرکت
پیشبینیشده
به جلو در
تمامی
فریمها با
استفاده از
ffplay:
ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
- بصریسازی
بردارهای
حرکت
چندجهته
فریمهای P
و B با
استفاده از
ffplay:
ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
colorbalance
تغییر شدت رنگهای اصلی (قرمز، سبز و آبی) فریمهای ورودی.
این فیلتر امکان تنظیم یک فریم ورودی را در نواحی سایهها (shadows)، رنگهای میانی (midtones) یا روشنیها (highlights) برای ترازهای قرمز-فیروزهای، سبز-ارغوانی یا آبی-زرد فراهم میسازد.
یک مقدار تنظیم مثبت، تراز را به سمت رنگ اصلی و یک مقدار منفی به سمت رنگ مکمل سوق میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- rs
- gs
- bs
- تنظیم سایههای قرمز، سبز و آبی (تاریکترین پیکسلها).
- rm
- gm
- bm
- تنظیم رنگهای میانی قرمز، سبز و آبی (پیکسلهای متوسط).
- rh
- gh
- bh
- تنظیم
روشنیهای
قرمز، سبز و
آبی
(روشنترین
پیکسلها).
محدودههای مجاز برای گزینهها "[-1.0, 1.0]" است. مقادیر پیشفرض 0 هستند.
- pl
- حفظ روشنایی (lightness) هنگام تغییر تراز رنگ. بهطور پیشفرض غیرفعال است.
مثالها
- •
- افزودن
تهرنگ
قرمز به
سایهها:
colorbalance=rs=.3
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
colorcontrast
تنظیم کنتراست رنگ میان مولفههای RGB.
این فیلتر گزینههای زیر را میپذیرد:
- rc
- تنظیم کنتراست قرمز-فیروزهای. مقدار پیشفرض 0.0 است. محدوده مجاز از -1.0 تا 1.0 است.
- gm
- تنظیم کنتراست سبز-ارغوانی. مقدار پیشفرض 0.0 است. محدوده مجاز از -1.0 تا 1.0 است.
- by
- تنظیم کنتراست آبی-زرد. مقدار پیشفرض 0.0 است. محدوده مجاز از -1.0 تا 1.0 است.
- rcw
- gmw
- byw
- تنظیم وزن هر یک از مقادیر گزینههای "rc"، "gm"، "by". مقدار پیشفرض 0.0 است. محدوده مجاز از 0.0 تا 1.0 است. اگر تمامی وزنها 0.0 باشند فیلترسازی غیرفعال میشود.
- pl
- تنظیم میزان حفظ روشنایی. مقدار پیشفرض 0.0 است. محدوده مجاز از 0.0 تا 1.0 است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
colorcorrect
تنظیم انتخابی تراز سفیدی رنگ برای سیاهیها و سفیدیها. این فیلتر در فضای رنگی YUV عمل میکند.
این فیلتر گزینههای زیر را میپذیرد:
- rl
- تنظیم نقطه سایه قرمز. محدوده مجاز از -1.0 تا 1.0 است. مقدار پیشفرض 0 است.
- bl
- تنظیم نقطه سایه آبی. محدوده مجاز از -1.0 تا 1.0 است. مقدار پیشفرض 0 است.
- rh
- تنظیم نقطه روشنی قرمز. محدوده مجاز از -1.0 تا 1.0 است. مقدار پیشفرض 0 است.
- bh
- تنظیم نقطه روشنی آبی. محدوده مجاز از -1.0 تا 1.0 است. مقدار پیشفرض 0 است.
- saturation
- تنظیم میزان اشباع رنگ. محدوده مجاز از -3.0 تا 3.0 است. مقدار پیشفرض 1 است.
- analyze
- اگر روی
مقداری غیر
از "manual"
تنظیم شود،
تکتک
فریمها را
تحلیل کرده
و از
پارامترهای
مشتقشده
برای فیلتر
کردن فریم
خروجی
استفاده
مینماید.
مقادیر ممکن عبارتند از:
مقدار پیشفرض "manual" است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
colorchannelmixer
تنظیم فریمهای ویدیویی ورودی از طریق بازترکیب کانالهای رنگ.
این فیلتر یک کانال رنگ را با افزودن مقادیر مربوط به سایر کانالهای همان پیکسلها اصلاح میکند. برای نمونه اگر مقدار مورد نظر برای تغییر قرمز باشد، مقدار خروجی به شکل زیر خواهد بود:
<red>=<red>*<rr> + <blue>*<rb> + <green>*<rg> + <alpha>*<ra>
این فیلتر گزینههای زیر را میپذیرد:
- rr
- rg
- rb
- ra
- تنظیم سهم کانالهای ورودی قرمز، سبز، آبی و آلفا برای کانال خروجی قرمز. پیشفرض برای rr برابر با 1 و برای rg، rb و ra برابر با 0 است.
- gr
- gg
- gb
- ga
- تنظیم سهم کانالهای ورودی قرمز، سبز، آبی و آلفا برای کانال خروجی سبز. پیشفرض برای gg برابر با 1 و برای gr، gb و ga برابر با 0 است.
- br
- bg
- bb
- ba
- تنظیم سهم کانالهای ورودی قرمز، سبز، آبی و آلفا برای کانال خروجی آبی. پیشفرض برای bb برابر با 1 و برای br، bg و ba برابر با 0 است.
- ar
- ag
- ab
- aa
- تنظیم سهم
کانالهای
ورودی
قرمز، سبز،
آبی و آلفا
برای کانال
خروجی آلفا.
پیشفرض
برای aa
برابر با
1 و برای
ar، ag و ab
برابر با
0 است.
محدودههای مجاز برای گزینهها "[-2.0, 2.0]" است.
- pc
- تنظیم حالت حفظ رنگ. مقادیر پذیرفتهشده عبارتند از:
- pa
- تنظیم میزان حفظ رنگ هنگام تغییر رنگها. محدوده مجاز از "[0.0, 1.0]" است. مقدار پیشفرض 0.0 است، بنابراین غیرفعال است.
مثالها
- تبدیل منبع
به مقیاس
خاکستری (grayscale):
colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
- شبیهسازی
تنهای
سپیا (sepia):
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
colordetect
تحلیل فریمهای ویدیویی برای تعیین محدوده مقادیر موثر و حالت آلفا.
این فیلتر گزینههای زیر را میپذیرد:
- mode
- مجموعه
ویژگیها
برای تشخیص.
ویژگیهای
در دسترس
نبوده،
مانند حالت
آلفا برای
تصویر
ورودی فاقد
کانال
آلفا،
بهطور
خودکار
نادیده
گرفته
میشوند.
ترکیبی از پرچمهای زیر را میپذیرد:
- color_range
- تشخیص اینکه آیا منبع حاوی پیکسلهای روشنایی (luma) خارج از محدوده محدود (MPEG) است یا خیر، که نشان میدهد این یک منبع YUV با محدوده کامل (full range) است.
- alpha_mode
- تشخیص اینکه آیا منبع حاوی مقادیر رنگ بالاتر از کانال آلفا است یا خیر، که نشان میدهد کانال آلفا مستقیم (straight) است، نه از پیش ضربشده (premultiplied). همچنین بررسی میکند که آیا صفحه آلفا کاملاً کدر است یا خیر.
- all
- فعالسازی تشخیص تمامی ویژگیهای بالا. این حالت پیشفرض است.
colorize
انداختن یک رنگ یکدست بر روی جریان ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- hue
- تنظیم فام رنگ (hue). محدوده مجاز از 0 تا 360 است. مقدار پیشفرض 0 است.
- saturation
- تنظیم اشباع رنگ (saturation). محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.5 است.
- lightness
- تنظیم روشنایی رنگ (lightness). محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.5 است.
- mix
- تنظیم آمیختگی روشنایی منبع. بهطور پیشفرض 1.0 تعیین شده است. محدوده مجاز از 0.0 تا 1.0 است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
colorkey
جداسازی رنگ (color keying) در فضای رنگی RGB. این فیلتر بر روی فریمهای فرمت 8 بیتی RGB عمل نموده و مولفه آلفای هر پیکسلی را که درون شعاع شباهت رنگ کلید قرار گیرد روی 0 تنظیم میکند. مقدار آلفا برای پیکسلهای خارج از شعاع شباهت به مقدار گزینه blend بستگی دارد.
این فیلتر گزینههای زیر را میپذیرد:
- color
- تنظیم رنگی که آلفای آن روی 0 (شفافیت کامل) تنظیم خواهد شد. بخش "Color" در راهنمای ffmpeg-utils را ببینید. پیشفرض "black" است.
- similarity
- تنظیم شعاع پیرامون رنگ کلید که در محدوده آن سایر رنگها نیز شفافیت کامل خواهند داشت. فاصله محاسبهشده مربوط به فاصله کسری واحد در فضای سهبعدی میان مقادیر RGB رنگ کلید و رنگ پیکسل است. محدوده بین 0.01 تا 1.0 است. مقدار 0.01 با شعاع بسیار کوچکی در اطراف رنگ کلید دقیق مطابقت مییابد، در حالی که 1.0 با همه چیز مطابقت دارد. مقدار پیشفرض 0.01 است.
- blend
- تنظیم چگونگی محاسبه مقدار آلفا برای پیکسلهایی که خارج از شعاع شباهت قرار میگیرند. مقدار 0.0 پیکسلها را یا کاملاً شفاف یا کاملاً کدر میسازد. مقادیر بالاتر منجر به پیکسلهای نیمهشفاف میشوند، بهگونهای که هرچه رنگ پیکسل به رنگ کلید شبیهتر باشد، شفافیت بیشتر خواهد بود. محدوده بین 0.0 تا 1.0 است. پیشفرض 0.0 است.
مثالها
- شفاف کردن
هر پیکسل
سبز در
تصویر
ورودی:
ffmpeg -i input.png -vf colorkey=green out.png
- انداختن یک
ویدیوی
پرده سبز بر
روی یک
تصویر
پسزمینه
ایستا:
ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
دستورات
این فیلتر از همان دستورات مشابه گزینهها پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، در مقدار جاری خود باقی میماند.
colorhold
حذف تمامی اطلاعات رنگ برای تمامی رنگهای RGB به جز یک رنگ خاص.
این فیلتر گزینههای زیر را میپذیرد:
- color
- رنگی که با خاکستری خنثی جایگزین نخواهد شد.
- similarity
- درصد شباهت با رنگ فوق. مقدار 0.01 تنها با رنگ کلید دقیق مطابقت دارد، در حالی که 1.0 با همه چیز مطابقت مییابد.
- blend
- درصد آمیختگی. مقدار 0.0 پیکسلها را کاملاً خاکستری میکند. مقادیر بالاتر منجر به حفظ بیشتر رنگ میشوند.
دستورات
این فیلتر از همان دستورات مشابه گزینهها پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، در مقدار جاری خود باقی میماند.
colorlevels
تنظیم فریمهای ویدیویی ورودی با استفاده از سطوح (levels).
این فیلتر گزینههای زیر را میپذیرد:
- rimin
- gimin
- bimin
- aimin
- تنظیم نقطه سیاه ورودی قرمز، سبز، آبی و آلفا. محدودههای مجاز برای گزینهها "[-1.0, 1.0]" است. مقادیر پیشفرض 0 هستند.
- rimax
- gimax
- bimax
- aimax
- تنظیم نقطه
سفید ورودی
قرمز، سبز،
آبی و آلفا.
محدودههای
مجاز برای
گزینهها
"[-1.0, 1.0]" است.
مقادیر
پیشفرض
1 هستند.
سطوح ورودی برای روشنتر کردن روشنیها (تنهای روشن)، تاریکتر کردن سایهها (تنهای تاریک)، و تغییر تراز تنهای روشن و تاریک استفاده میشوند.
- romin
- gomin
- bomin
- aomin
- تنظیم نقطه سیاه خروجی قرمز، سبز، آبی و آلفا. محدودههای مجاز برای گزینهها "[0, 1.0]" است. مقادیر پیشفرض 0 هستند.
- romax
- gomax
- bomax
- aomax
- تنظیم نقطه
سفید خروجی
قرمز، سبز،
آبی و آلفا.
محدودههای
مجاز برای
گزینهها
"[0, 1.0]" است.
مقادیر
پیشفرض
1 هستند.
سطوح خروجی امکان انتخاب دستی یک محدوده سطح خروجی مقیدشده را فراهم میسازد.
- preserve
- تنظیم حالت حفظ رنگ. مقادیر پذیرفتهشده عبارتند از:
مثالها
- تاریکتر
کردن خروجی
ویدیو:
colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
- افزایش
کنتراست:
colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
- روشنتر
کردن خروجی
ویدیو:
colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
- افزایش
روشنایی (brightness):
colorlevels=romin=0.5:gomin=0.5:bomin=0.5
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
colormap
اعمال نقشههای رنگی سفارشی به جریان ویدیو.
این فیلتر به سه جریان ویدیویی ورودی نیاز دارد. جریان نخست، جریان ویدیویی است که قرار است فیلتر شود. جریانهای ویدیویی دوم و سوم، وصلههای رنگی را برای نگاشت رنگ مبدا به رنگ مقصد تعیین میکنند.
این فیلتر گزینههای زیر را میپذیرد:
- patch_size
- تنظیم اندازه وصله جریان ویدیویی مبدا و مقصد بر حسب پیکسل.
- nb_patches
- تنظیم بیشینه تعداد وصلههای مورد استفاده از جریان ویدیویی مبدا و مقصد. مقدار پیشفرض، تعداد وصلههای موجود در جریانهای ویدیویی اضافی است. بیشینه تعداد مجاز وصلهها 64 است.
- type
- تنظیم تغییرات مورد استفاده برای رنگهای مقصد. میتواند "relative" یا "absolute" باشد. پیشفرض "absolute" است.
- kernel
- تنظیم هسته
(kernel) مورد
استفاده
برای
اندازهگیری
تفاوتهای
رنگ میان
رنگهای
نگاشتشده.
مقادیر پذیرفتهشده عبارتند از:
پیشفرض "euclidean" است.
colormatrix
تبدیل ماتریس رنگ.
این فیلتر گزینههای زیر را میپذیرد:
- src
- dst
- مشخص کردن
ماتریس رنگ
مبدا و
مقصد. هر دو
مقدار باید
تعیین شوند.
مقادیر پذیرفتهشده عبارتند از:
برای نمونه جهت تبدیل از BT.601 به SMPTE-240M، از این دستور استفاده کنید:
colormatrix=bt601:smpte240m
colorspace
تبدیل فضای رنگی، ویژگیهای انتقال (transfer characteristics) یا رنگهای پایه (color primaries). اندازه ویدیوی ورودی باید زوج باشد.
این فیلتر گزینههای زیر را میپذیرد:
- all
- مشخص کردن
تمامی
ویژگیهای
رنگ به طور
همزمان.
مقادیر پذیرفتهشده عبارتند از:
- bt470m
- BT.470M
- bt470bg
- BT.470BG
- bt601-6-525
- BT.601-6 525
- bt601-6-625
- BT.601-6 625
- bt709
- BT.709
- smpte170m
- SMPTE-170M
- smpte240m
- SMPTE-240M
- bt2020
- BT.2020
- space
- مشخص کردن
فضای رنگی
خروجی.
مقادیر پذیرفتهشده عبارتند از:
- trc
- مشخص کردن
ویژگیهای
انتقال
خروجی.
مقادیر پذیرفتهشده عبارتند از:
- bt709
- BT.709
- bt470m
- BT.470M
- bt470bg
- BT.470BG
- gamma22
- گامای ثابت 2.2
- gamma28
- گامای ثابت 2.8
- smpte170m
- SMPTE-170M، BT.601-6 625 یا BT.601-6 525
- smpte240m
- SMPTE-240M
- srgb
- SRGB
- iec61966-2-1
- iec61966-2-1
- iec61966-2-4
- iec61966-2-4
- xvycc
- xvycc
- bt2020-10
- BT.2020 برای محتوای 10 بیتی
- bt2020-12
- BT.2020 برای محتوای 12 بیتی
- primaries
- مشخص کردن
رنگهای
پایه خروجی.
مقادیر پذیرفتهشده عبارتند از:
- range
- مشخص کردن
محدوده رنگ
خروجی.
مقادیر پذیرفتهشده عبارتند از:
- format
- مشخص کردن
فرمت رنگ
خروجی.
مقادیر پذیرفتهشده عبارتند از:
- yuv420p
- YUV 4:2:0 سطحبندیشده 8 بیتی
- yuv420p10
- YUV 4:2:0 سطحبندیشده 10 بیتی
- yuv420p12
- YUV 4:2:0 سطحبندیشده 12 بیتی
- yuv422p
- YUV 4:2:2 سطحبندیشده 8 بیتی
- yuv422p10
- YUV 4:2:2 سطحبندیشده 10 بیتی
- yuv422p12
- YUV 4:2:2 سطحبندیشده 12 بیتی
- yuv444p
- YUV 4:4:4 سطحبندیشده 8 بیتی
- yuv444p10
- YUV 4:4:4 سطحبندیشده 10 بیتی
- yuv444p12
- YUV 4:4:4 سطحبندیشده 12 بیتی
- fast
- انجام یک تبدیل سریع، که از تصحیح گاما/رنگهای پایه صرفنظر میکند. این کار بار پردازشی CPU را به طور چشمگیری کاهش میدهد، اما از نظر ریاضی نادرست خواهد بود. برای دریافت خروجی سازگار با آنچه فیلتر colormatrix تولید میکند، از fast=1 استفاده نمایید.
- dither
- مشخص کردن
حالت
ترامزنی
(dithering).
مقادیر پذیرفتهشده عبارتند از:
- wpadapt
- حالت
انطباق
نقطه سفید.
مقادیر پذیرفتهشده عبارتند از:
- clipgamut
- کنترل
چگونگی برش
دادن (clip)
رنگهای
خارج از
گستره که در
نتیجه
تبدیل فضای
رنگی به
وجود
میآیند.
مقادیر پذیرفتهشده عبارتند از:
- iall
- بازنویسی تمامی ویژگیهای ورودی به طور همزمان. همان مقادیر پذیرفتهشده برای all.
- ispace
- بازنویسی فضای رنگی ورودی. همان مقادیر پذیرفتهشده برای space.
- iprimaries
- بازنویسی رنگهای پایه ورودی. همان مقادیر پذیرفتهشده برای primaries.
- itrc
- بازنویسی ویژگیهای انتقال ورودی. همان مقادیر پذیرفتهشده برای trc.
- irange
- بازنویسی محدوده رنگ ورودی. همان مقادیر پذیرفتهشده برای range.
این فیلتر ویژگیهای انتقال، فضای رنگ و رنگهای پایه را به مقادیر مشخصشده توسط کاربر تبدیل میکند. مقدار خروجی در صورت عدم تعیین، بر اساس ویژگی "all" بر روی یک مقدار پیشفرض تنظیم میشود. اگر آن ویژگی نیز مشخص نشده باشد، فیلتر خطایی را ثبت خواهد کرد. محدوده رنگ و فرمت خروجی به طور پیشفرض روی همان مقدار محدوده رنگ و فرمت ورودی تنظیم میشوند. ویژگیهای انتقال، فضای رنگ، رنگهای پایه و محدوده رنگ ورودی باید روی دادههای ورودی مشخص باشند. در صورت مفقود بودن هر یک از این موارد، فیلتر خطایی ثبت کرده و هیچ تبدیلی صورت نخواهد گرفت.
برای نمونه جهت تبدیل ورودی به SMPTE-240M، از این دستور استفاده کنید:
colorspace=smpte240m
colortemperature
تنظیم دمای رنگ در ویدیو جهت شبیهسازی تغییرات در دمای رنگ محیط.
این فیلتر گزینههای زیر را میپذیرد:
- temperature
- تنظیم دما بر حسب کلوین. محدوده مجاز از 1000 تا 40000 است. مقدار پیشفرض 6500 کلوین است.
- mix
- تنظیم میزان آمیختگی با خروجی فیلترشده. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 1 است.
- pl
- تنظیم میزان حفظ روشنایی. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0 است.
دستورات
این فیلتر از همان دستورات مشابه گزینهها پشتیبانی میکند.
convolution
اعمال پیچش (کانولوشن) 3x3، 5x5، 7x7 یا افقی/عمودی تا 49 عنصر.
این فیلتر گزینههای زیر را میپذیرد:
- 0m
- 1m
- 2m
- 3m
- تنظیم ماتریس برای هر صفحه (plane). ماتریس دنبالهای از 9، 25 یا 49 عدد صحیح علامتدار در حالت square، و از 1 تا 49 عدد فرد از اعداد صحیح علامتدار در حالت row است.
- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
- تنظیم ضریب تقسیم برای مقدار محاسبهشده برای هر صفحه. در صورت عدم تنظیم یا 0 بودن، برابر با 1 تقسیم بر مجموع تمامی عناصر ماتریس خواهد بود.
- 0bias
- 1bias
- 2bias
- 3bias
- تنظیم انحراف (بایاس) برای هر صفحه. این مقدار به حاصلضرب افزوده میشود. برای روشنتر یا تاریکتر کردن تصویر کلی مفید است. پیشفرض 0.0 است.
- 0mode
- 1mode
- 2mode
- 3mode
- تنظیم حالت ماتریس برای هر صفحه. میتواند square، row یا column باشد. پیشفرض square است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
مثالها
- اعمال
وضوحبخشی
(sharpen):
convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
- اعمال
ماتشدگی (blur):
convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
- اعمال
تقویت لبه (edge
enhance):
convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
- اعمال
تشخیص لبه (edge
detect):
convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
- اعمال
آشکارساز
لبه
لاپلاسی
شامل قطرها:
convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
- اعمال
برجستهکاری
(emboss):
convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
convolve
اعمال پیچش دوبعدی جریان ویدیو در حوزه فرکانس با استفاده از جریان دوم به عنوان پاسخ ضربه (impulse).
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم صفحاتی که باید پردازش شوند.
- impulse
- تنظیم اینکه کدام فریمهای ویدیویی ضربه پردازش خواهند شد؛ میتواند first یا all باشد. پیشفرض all است.
فیلتر "convolve" همچنین از گزینههای framesync پشتیبانی میکند.
copy
کپی کردن منبع ویدیویی ورودی بدون تغییر به خروجی. این فیلتر عمدتاً برای اهداف آزمایشی کاربرد دارد.
coreimage
فیلترسازی ویدیو بر روی GPU با استفاده از API برنامه CoreImage شرکت اپل در OSX.
شتابدهی سختافزاری بر پایه یک بافت (context) اوپنجیال (OpenGL) است. معمولاً این بدان معناست که پردازش توسط سختافزار ویدیو انجام میگیرد. با این حال، پیادهسازیهای نرمافزاری OpenGL وجود دارند که نشان میدهد هیچ تضمینی برای پردازش سختافزاری وجود ندارد؛ این موضوع به OSX مربوطه بستگی دارد.
فیلترها و مولدهای تصویر فراوانی توسط اپل ارائه شدهاند که با تنوع زیادی از گزینهها همراه هستند. فیلتر باید با نام آن به همراه گزینههایش مورد ارجاع قرار گیرد.
فیلتر coreimage گزینههای زیر را میپذیرد:
- list_filters
- فهرست کردن
تمامی
فیلترها و
مولدهای
موجود به
همراه
تمامی
گزینههای
مربوطه و
همچنین
حداقل و
حداکثر
مقادیر
ممکن در
کنار
مقادیر
پیشفرض.
list_filters=true
- filter
- مشخص کردن
تمامی
فیلترها با
نام و
گزینههای
مربوط به
آنها. از
list_filters برای
تعیین
تمامی
نامها و
گزینههای
معتبر
فیلتر
استفاده
کنید.
گزینههای
عددی با یک
مقدار
اعشاری
تعیین
میشوند و
بهطور
خودکار به
محدوده
مقادیر
مربوط به
خود مقید (clamped)
میگردند.
گزینههای
برداری و
رنگ باید با
فهرستی از
مقادیر
اعشاری
جداشده با
فاصله
تعیین شوند.
گریز
کاراکترها
(escaping) باید
انجام شود.
یک نام
گزینه ویژه
"default"
برای
استفاده از
گزینههای
پیشفرض یک
فیلتر در
دسترس است.
تعیین "default" یا دستکم یکی از گزینههای فیلتر الزامی است. تمامی گزینههای حذفشده با مقادیر پیشفرض خود به کار میروند. ساختار نحوی رشته فیلتر به شرح زیر است:
filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
- output_rect
- مشخص کردن
مستطیلی که
خروجی
زنجیره
فیلتر در آن
به داخل
تصویر
ورودی کپی
میشود. این
مستطیل با
فهرستی از
مقادیر
اعشاری
جداشده با
فاصله مشخص
میگردد:
output_rect=x\ y\ width\ height
در صورت عدم تعیین، مستطیل خروجی برابر با ابعاد تصویر ورودی خواهد بود. مستطیل خروجی بهطور خودکار در مرزهای تصویر ورودی برش میخورد. مقادیر منفی برای هر مولفه معتبر هستند.
output_rect=25\ 25\ 100\ 100
چندین فیلتر را میتوان برای پردازش متوالی بدون انتقالهای GPU-HOST به یکدیگر زنجیر کرد که امکان پردازش سریع زنجیرههای فیلتر پیچیده را فراهم میسازد. در حال حاضر تنها فیلترهای با صفر (مولدها) یا دقیقاً یک تصویر ورودی (فیلترها) و یک تصویر خروجی پشتیبانی میشوند. همچنین، فیلترهای گذار (transition) هنوز همانطور که در نظر گرفته شده قابل استفاده نیستند.
برخی فیلترها بسته به هسته فیلتر مربوطه، تصاویر خروجی را با لایهگذاری (padding) اضافی تولید میکنند. این لایهگذاری بهطور خودکار حذف میشود تا اطمینان حاصل گردد که خروجی فیلتر دارای اندازهای یکسان با تصویر ورودی است.
برای مولدهای تصویر، اندازه تصویر خروجی به ترتیب با تصویر خروجی قبلی زنجیره فیلتر یا تصویر ورودی کل زنجیره فیلتر تعیین میشود. مولدها برای تولید خروجی خود از اطلاعات پیکسلی این تصویر استفاده نمیکنند. با این حال، خروجی تولیدشده بر روی این تصویر آمیخته (blended) میشود که منجر به پوشش جزئی یا کامل تصویر خروجی میگردد.
منبع ویدیویی coreimagesrc میتواند برای تولید تصاویر ورودی که مستقیماً به زنجیره فیلتر تغذیه میشوند به کار رود. با استفاده از آن، ارائه تصاویر ورودی توسط یک منبع ویدیویی دیگر یا یک ویدیوی ورودی الزامی نیست.
مثالها
- فهرست کردن
تمامی
فیلترهای
در دسترس:
coreimage=list_filters=true
- استفاده از
فیلتر CIBoxBlur با
گزینههای
پیشفرض
برای تار
کردن یک
تصویر:
coreimage=filter=CIBoxBlur@default
- استفاده از
یک زنجیره
فیلتر با CISepiaTone
در مقادیر
پیشفرض و
CIVignetteEffect با مرکز
آن در 100x100 و
شعاع 50
پیکسل:
coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
- استفاده از
nullsrc و CIQRCodeGenerator برای
ایجاد یک کد
QR برای صفحه
خانگی FFmpeg، که
به عنوان خط
فرمان کامل
و
اسکیپشده
برای پوسته
استاندارد
bash اپل ارائه
شده است:
ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org@inputCorrectionLevel=H -frames:v 1 QRCode.png
corr
بهدست آوردن میزان همبستگی (correlation) میان دو ویدیوی ورودی.
این فیلتر دو ویدیوی ورودی را میپذیرد.
هر دو ویدیوی ورودی برای عملکرد صحیح این فیلتر باید تفکیکپذیری و فرمت پیکسلی یکسانی داشته باشند. همچنین فرض میشود که هر دو ورودی تعداد فریمهای برابری دارند که فریمبهفریم با یکدیگر مقایسه میشوند.
همبستگی بهدستآمده به ازای هر مولفه، میانگین، کمینه و بیشینه از طریق سامانه گزارشگیری (logging) چاپ میشود.
این فیلتر همبستگی محاسبهشده هر فریم را در فراداده فریم ذخیره میکند.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
در مثال زیر فایل ورودی main.mpg در حال پردازش با فایل مرجع ref.mpg مقایسه میشود.
ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -
cover_rect
پوشاندن یک شیء مستطیلی شکل.
این فیلتر گزینههای زیر را میپذیرد:
- cover
- مسیر فایل تصویر پوششی اختیاری، باید در فرمت yuv420 باشد.
- mode
- تنظیم حالت
پوشش.
مقادیر زیر را میپذیرد:
مقدار پیشفرض blur است.
مثالها
- •
- پوشاندن یک
شیء
مستطیلی با
تصویر
ارائهشده
از یک
ویدیوی
مشخص با
استفاده از
ffmpeg:
ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
crop
برش ویدیوی ورودی به ابعاد دادهشده.
این فیلتر پارامترهای زیر را میپذیرد:
- w, out_w
- عرض ویدیوی خروجی. مقدار پیشفرض "iw" است. این عبارت تنها یک بار در حین پیکربندی فیلتر، یا هنگامی که دستور w یا out_w ارسال میشود ارزیابی میگردد.
- h, out_h
- ارتفاع ویدیوی خروجی. مقدار پیشفرض "ih" است. این عبارت تنها یک بار در حین پیکربندی فیلتر، یا هنگامی که دستور h یا out_h ارسال میشود ارزیابی میگردد.
- x
- موقعیت افقی لبه چپ ویدیوی خروجی در ویدیوی ورودی. مقدار پیشفرض "(in_w-out_w)/2" است. این عبارت به ازای هر فریم ارزیابی میشود.
- y
- موقعیت عمودی لبه بالایی ویدیوی خروجی در ویدیوی ورودی. مقدار پیشفرض "(in_h-out_h)/2" است. این عبارت به ازای هر فریم ارزیابی میشود.
- keep_aspect
- در صورت تنظیم روی 1، نسبت ابعاد تصویر نمایشی (DAR) خروجی را با تغییر نسبت ابعاد نمونه (SAR) خروجی، مجبور به یکسان بودن با ورودی میکند. مقدار پیشفرض 0 است.
- exact
- فعالسازی برش دقیق. در صورت فعال بودن، ویدیوهای زیرنمونهبرداریشده دقیقاً در عرض/ارتفاع/x/y تعیینشده برش میخورند و به نزدیکترین مقدار کوچکتر گرد نمیشوند. مقدار پیشفرض 0 است.
پارامترهای out_w، out_h، x و y عباراتی حاوی ثابتهای زیر هستند:
- x
- y
- مقادیر محاسبهشده برای x و y. این مقادیر برای هر فریم جدید ارزیابی میشوند.
- in_w
- in_h
- عرض و ارتفاع ورودی.
- iw
- ih
- همانند in_w و in_h هستند.
- out_w
- out_h
- عرض و ارتفاع خروجی (برشخورده).
- ow
- oh
- همانند out_w و out_h هستند.
- a
- همانند iw / ih.
- sar
- نسبت ابعاد نمونه ورودی.
- dar
- نسبت ابعاد تصویر نمایشی ورودی، همانند (iw / ih) * sar است.
- hsub
- vsub
- مقادیر زیرنمونهبرداری افقی و عمودی کروما. برای مثال برای فرمت پیکسلی "yuv422p" مقدار hsub برابر با 2 و vsub برابر با 1 است.
- n
- شماره فریم ورودی، شروع از 0.
- pos
- موقعیت فریم ورودی در فایل، در صورت نامشخص بودن NAN؛ منسوخشده، استفاده نکنید.
- t
- برچسب زمانی بر حسب ثانیه. در صورت نامشخص بودن برچسب زمانی ورودی NAN است.
عبارت برای out_w ممکن است به مقدار out_h وابسته باشد، و عبارت برای out_h ممکن است به out_w وابسته باشد، اما آنها نمیتوانند به x و y وابسته باشند، زیرا x و y پس از out_w و out_h ارزیابی میشوند.
پارامترهای x و y عبارات مربوط به موقعیت گوشه بالا-چپ ناحیه خروجی (برشنخورده) را تعیین میکنند. آنها برای هر فریم ارزیابی میشوند. اگر مقدار ارزیابیشده نامعتبر باشد، به نزدیکترین مقدار معتبر تقریب زده میشود.
عبارت برای x ممکن است به y وابسته باشد، و عبارت برای y ممکن است به x وابسته باشد.
مثالها
- برش
ناحیهای
به ابعاد 100x100
در موقعیت (12,34):
crop=100:100:12:34
با استفاده از گزینههای نامگذاریشده، مثال بالا به این شکل خواهد بود:
crop=w=100:h=100:x=12:y=34
- برش ناحیه
مرکزی
ورودی به
ابعاد 100x100:
crop=100:100
- برش ناحیه
مرکزی
ورودی به
اندازه 2/3 از
ویدیوی
ورودی:
crop=2/3*in_w:2/3*in_h
- برش مربع
مرکزی
ویدیوی
ورودی:
crop=out_w=in_h crop=in_h
- محدود کردن
مستطیل با
گوشه
بالا-چپ در
موقعیت 100:100 و
گوشه
پایین-راست
منطبق بر
گوشه
پایین-راست
تصویر
ورودی:
crop=in_w-100:in_h-100:100:100
- برش 10 پیکسل
از
حاشیههای
چپ و راست،
و 20 پیکسل از
حاشیههای
بالا و
پایین:
crop=in_w-2*10:in_h-2*20
- نگهداشتن
تنها ربع
پایین-راست
تصویر
ورودی:
crop=in_w/2:in_h/2:in_w/2:in_h/2
- برش ارتفاع
برای
دستیابی به
تناسب
طلایی
(یونانی):
crop=in_w:1/PHI*in_w
- اعمال افکت
لرزش:
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
- اعمال افکت
دوربین
متزلزل
وابسته به
برچسب
زمانی:
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
- تنظیم x
وابسته به
مقدار y:
crop=in_w/2:in_h/2:y:10+10*sin(n/10)
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
cropdetect
تشخیص خودکار اندازه برش.
این فیلتر پارامترهای برش مورد نیاز را محاسبه کرده و پارامترهای توصیهشده را از طریق سامانه گزارشگیری چاپ میکند. ابعاد شناساییشده متناظر با ناحیه غیرسیاه یا ناحیه ویدیویی ویدیوی ورودی بر اساس mode است.
این فیلتر پارامترهای زیر را میپذیرد:
- mode
- بسته به mode، تشخیص برش بر پایه صِرف مقدار سیاهی پیکسلهای اطراف، یا ترکیبی از بردارهای حرکت و پیکسلهای لبه صورت میگیرد.
- limit
- تنظیم آستانه مقدار سیاهی بالاتر، که میتواند به صورت اختیاری از هیچ (0) تا همهچیز (255 برای فرمتهای بر پایه 8 بیت) تعیین گردد. مقدار شدتی بیشتر از مقدار تنظیمشده غیرسیاه تلقی میشود. پیشفرض 24 است. همچنین میتوانید مقداری بین 0.0 و 1.0 تعیین کنید که بسته به عمق بیتی فرمت پیکسلی مقیاسبندی خواهد شد.
- round
- مقداری که عرض/ارتفاع باید بر آن بخشپذیر باشد. پیشفرض 16 است. آفست بهطور خودکار جهت مرکز قرار دادن ویدیو تنظیم میشود. از 2 برای دریافت تنها ابعاد زوج استفاده کنید (برای ویدیوی 4:2:2 لازم است). مقدار 16 هنگام رمزگذاری با بیشتر کدکهای ویدیویی بهترین است.
- skip
- تنظیم تعداد فریمهای ابتدایی که ارزیابی برای آنها نادیده گرفته میشود. پیشفرض 2 است. محدوده بین 0 تا INT_MAX است.
- reset_count, reset
- تنظیم
شمارندهای
که تعیین
میکند پس
از چند فریم
cropdetect
بزرگترین
ناحیه
ویدیویی
شناساییشده
قبلی را
بازنشانی
کرده و
دوباره
برای تشخیص
ناحیه
بهینه
کنونی آغاز
کند. مقدار
پیشفرض 0
است.
این گزینه زمانی که لوگوی شبکهها ناحیه ویدیو را دستخوش اعوجاج میکند میتواند سودمند باشد. مقدار 0 بیانگر «هرگز بازنشانی نکن» است و بزرگترین ناحیه دیدهشده در طول پخش را بازمیگرداند.
- mv_threshold
- تنظیم میزان حرکت بر حسب واحدهای پیکسلی به عنوان آستانه تشخیص حرکت. پیشفرض 8 است.
- low
- high
- تنظیم
مقادیر
آستانه
پایین و
بالا مورد
استفاده
توسط
الگوریتم
آستانهگذاری
کَنی (Canny).
آستانه بالا پیکسلهای لبه "قوی" را برمیگزیند، که سپس از طریق اتصال 8 جهته به پیکسلهای لبه "ضعیف" انتخابشده توسط آستانه پایین متصل میشوند.
مقادیر آستانه low و high باید در بازه [0,1] انتخاب شوند، و low باید کمتر یا مساوی با high باشد.
مقدار پیشفرض برای low برابر با "5/255" و برای high برابر با "15/255" است.
مثالها
- یافتن
ناحیه
ویدیو
احاطهشده
توسط
حاشیههای
سیاه:
ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
- یافتن یک
ناحیه
ویدیوی
تعبیهشده،
همراه با
تولید
بردارهای
حرکت از
قبل:
ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
- یافتن یک
ناحیه
ویدیوی
تعبیهشده
با استفاده
از
بردارهای
حرکت
برگرفته از
رمزگشا:
ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
- limit
- دستور همان ساختار نحوی گزینه متناظر را میپذیرد. اگر عبارت مشخصشده معتبر نباشد، در مقدار جاری خود باقی میماند.
cue
به تاخیر انداختن فیلتر کردن ویدیو تا رسیدن به یک برچسب زمانی ساعت دیواری (wallclock). این فیلتر ابتدا به تعداد preroll فریم را عبور میدهد، سپس حداکثر تا buffer فریم را بافر کرده و در انتظار نشانه (cue) میماند. پس از رسیدن به نشانه، فریمهای بافرشده و همچنین هر فریم بعدی ورودی خود را ارسال میکند.
این فیلتر میتواند جهت همگامسازی خروجی چندین فرایند ffmpeg برای دستگاههای خروجی بلادرنگ مانند decklink به کار رود. با اعمال تاخیر در زنجیره فیلتر و پیشبافرسازی فریمها، فرایند میتواند تقریباً بلافاصله پس از فرا رسیدن برچسب زمانی ساعت دیواری هدف، دادهها را به خروجی منتقل سازد.
دقت کامل در سطح تکتک فریمها تضمین نمیشود، ولی خروجی برای برخی کاربردها به اندازه کافی مناسب است.
- cue
- برچسب زمانی نشانه بیانشده در قالب برچسب زمانی یونیکس بر حسب میکروثانیه. پیشفرض 0 است.
- preroll
- مدتزمان محتوا جهت عبور به عنوان پیشرول بر حسب ثانیه. پیشفرض 0 است.
- buffer
- حداکثر مدتزمان محتوا جهت بافرسازی پیش از انتظار برای نشانه بر حسب ثانیه. پیشفرض 0 است.
curves
اعمال تنظیمات رنگ با استفاده از منحنیها.
این فیلتر مشابه ابزارهای منحنی در نرمافزارهای Adobe Photoshop و GIMP است. هر مولفه (قرمز، سبز و آبی) مقادیر خود را توسط N نقطه کلیدی که با یک منحنی هموار به هم پیوند یافتهاند، تعریف میکند. محور x نشاندهنده مقادیر پیکسلی فریم ورودی و محور y مقادیر پیکسلی جدیدی است که باید برای فریم خروجی تنظیم شوند.
بهطور پیشفرض، منحنی یک مولفه با دو نقطه (0;0) و (1;1) تعریف میشود. این کار خط مستقیمی ایجاد میکند که در آن هر مقدار پیکسل اصلی به مقدار خودش "تنظیم" میشود، که به معنای عدم تغییر در تصویر است.
این فیلتر به شما اجازه میدهد این دو نقطه را بازتعریف نموده و نقاط بیشتری بیافزایید. منحنی تازهای تعریف خواهد شد تا به نرمی از میان تمامی این مختصاتهای جدید عبور کند. نقاط جدید تعریفشده باید روی محور x اکیداً صعودی باشند، و مقادیر x و y آنها در بازه [0;1] قرار داشته باشد. منحنی با بهرهگیری از درونیابی اسپلاین مکعبی طبیعی (natural) یا یکنواخت (monotonic)، بسته به گزینه interp (پیشفرض: "natural") شکل میگیرد. اسپلاین "natural" بهطور کلی منحنی هموارتری تولید مینماید در حالی که اسپلاین یکنواخت ("pchip") یکنواخت بودن گذارها میان نقاط تعیینشده را تضمین میکند. چنانچه منحنیهای محاسبهشده به خارج از فضاهای برداری بروند، مقادیر مربوطه بریده (clip) خواهند شد.
این فیلتر گزینههای زیر را میپذیرد:
- preset
- انتخاب یکی از پیشتنظیمهای رنگ موجود. این گزینه میتواند افزون بر پارامترهای r، g، b به کار رود؛ در این وضعیت، گزینههای پسین بر مقادیر پیشتنظیم اولویت خواهند داشت. پیشتنظیمهای در دسترس عبارتند از:
پیشفرض "none" است.
- master, m
- تنظیم نقاط کلیدی اصلی (master). این نقاط نگاشت گذر دوم را تعریف خواهند کرد. این عمل گاهی نگاشت "درخشندگی" یا "مقدار" نامیده میشود. این گزینه میتواند همراه با r، g، b یا all استفاده گردد زیرا همانند یک LUT پسپردازش عمل میکند.
- red, r
- تنظیم نقاط کلیدی برای مولفه قرمز.
- green, g
- تنظیم نقاط کلیدی برای مولفه سبز.
- blue, b
- تنظیم نقاط کلیدی برای مولفه آبی.
- all
- تنظیم نقاط کلیدی برای تمامی مولفهها (بهجز master). میتواند افزون بر دیگر گزینههای نقاط کلیدی مولفه استفاده گردد. در این صورت، مولفه(های) تنظیمنشده به این تنظیم all بازگشت مینمایند.
- psfile
- مشخص کردن یک فایل منحنیهای فتوشاپ (".acv") جهت وارد کردن تنظیمات از آن.
- plot
- ذخیره اسکریپت Gnuplot مربوط به منحنیها در فایل تعیینشده.
- interp
- مشخص کردن شیوه درونیابی. الگوریتمهای در دسترس عبارتند از:
جهت پرهیز از تداخلهای نحوی در گراف فیلتر، هر فهرست از نقاط کلیدی باید با ساختار نحوی زیر تعریف گردد: "x0/y0 x1/y1 x2/y2 ...".
دستورات
این فیلتر از همان دستورات مشابه گزینهها پشتیبانی میکند.
مثالها
- افزایش
اندک سطح
میانی رنگ
آبی:
curves=blue='0/0 0.5/0.58 1/1'
- افکت کهنگی
(Vintage):
curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
در اینجا مختصاتهای زیر را برای هر یک از مولفهها به دست میآوریم:
- مثال پیشین
را میتوان
با
پیشتنظیم
توکار
متناظر آن
نیز پیاده
کرد:
curves=preset=vintage
- یا به شکل
ساده:
curves=vintage
- بهرهگیری
از یک
پیشتنظیم
فتوشاپ و
بازتعریف
نقاط مولفه
سبز:
curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
- مشاهده
منحنیهای
پروفایل
"cross_process" با
استفاده از
ffmpeg و gnuplot:
ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null - gnuplot -p /tmp/curves.plt
datascope
فیلتر تحلیل دادههای ویدیو.
این فیلتر مقادیر شانزدهشانزدهی (هگزادسیمال) پیکسلهای بخشی از ویدیو را نمایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تنظیم اندازه ویدیوی خروجی.
- x
- تنظیم آفست افقی x برای برداشت پیکسلها.
- y
- تنظیم آفست عمودی y برای برداشت پیکسلها.
- mode
- تنظیم حالت اسکوپ، میتواند یکی از موارد زیر باشد:
- axis
- رسم شماره سطرها و ستونها در سمت چپ و بالای ویدیو.
- opacity
- تنظیم میزان کدر بودن (ناشفافی) پسزمینه.
- format
- تنظیم فرمت نمایش اعداد. میتواند "hex" یا "dec" باشد. پیشفرض "hex" است.
- components
- تنظیم مولفههای پیکسلی جهت نمایش. بهطور پیشفرض تمامی مولفههای پیکسل نمایش داده میشوند.
دستورات
این فیلتر از همان دستورات مشابه گزینهها به جز گزینه "size" پشتیبانی میکند.
dblur
اعمال فیلتر ماتشدگی جهتی (Directional blur).
این فیلتر گزینههای زیر را میپذیرد:
- angle
- تنظیم زاویه ماتشدگی جهتی. مقدار پیشفرض 45 است.
- radius
- تنظیم شعاع ماتشدگی جهتی. مقدار پیشفرض 5 است.
- planes
- تنظیم صفحاتی که باید فیلتر شوند. بهطور پیشفرض تمامی صفحات فیلتر میگردند.
دستورات
این فیلتر از همان دستورات مشابه گزینهها پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، در مقدار جاری خود باقی میماند.
dctdnoiz
نویززدایی از فریمها با استفاده از DCT دوبعدی (فیلترسازی حوزه فرکانس).
این فیلتر برای پردازش بلادرنگ (real-time) طراحی نشده است.
این فیلتر گزینههای زیر را میپذیرد:
- sigma, s
- تنظیم ثابت
سیگمای
نویز.
این sigma یک آستانه قطعی "3 * sigma" را تعریف مینماید؛ هر ضریب DCT (قدر مطلق) زیر این آستانه حذف خواهد شد.
اگر به فیلترسازی پیشرفتهتری نیاز دارید، expr را ببینید.
پیشفرض 0 است.
- overlap
- تنظیم
تعداد
پیکسلهای
همپوشان
برای هر
بلوک. از
آنجا که
فیلتر
میتواند
کند باشد،
ممکن است
بخواهید
این مقدار
را کاهش
دهید،
هرچند به
قیمت
اثربخشی
کمتر فیلتر
و ریسک بروز
مصنوعات
تصویری
گوناگون
تمام خواهد
شد.
اگر مقدار همپوشانی اجازه پردازش کل عرض یا ارتفاع ورودی را ندهد، یک هشدار نمایش داده خواهد شد و حاشیههای مربوطه نویززدایی نمیشوند.
مقدار پیشفرض blocksize-1 است که بهترین تنظیم ممکن به شمار میرود.
- expr, e
- تنظیم
عبارت
فاکتور
ضریب.
برای هر ضریب از یک بلوک DCT، این عبارت به عنوان مقدار ضریب ضربکننده آن ارزیابی خواهد شد.
در صورت تنظیم این گزینه، گزینه sigma نادیده گرفته میشود.
قدر مطلق ضریب از طریق متغیر c در دسترس است.
- n
- تنظیم blocksize با
استفاده از
تعداد
بیتها.
عبارت
"1<<n"
مقدار blocksize را
که همان عرض
و ارتفاع
بلوکهای
پردازششده
است تعریف
میکند.
مقدار پیشفرض 3 (یعنی 8x8) است و برای blocksize برابر با 16x16 میتواند به 4 افزایش یابد. توجه داشته باشید که دگرگونی این تنظیم پیامدهای چشمگیری بر سرعت پردازش دارد. همچنین اندازه بلوک بزرگتر لزوماً به معنای نویززدایی بهتر نیست.
مثالها
اعمال نویززدایی با sigma برابر با 4.5:
dctdnoiz=4.5
همین عملیات را میتوان با سامانه عبارات نیز انجام داد:
dctdnoiz=e='gte(c, 4.5*3)'
نویززدایی پرقدرت با اندازه بلوک "16x16":
dctdnoiz=15:n=4
deband
حذف مصنوعات نواریشدن (banding) از ویدیوی ورودی. این کار با جایگزینی پیکسلهای نواریشده با مقدار میانگین پیکسلهای مرجع صورت میپذیرد.
این فیلتر گزینههای زیر را میپذیرد:
- 1thr
- 2thr
- 3thr
- 4thr
- تنظیم آستانه تشخیص نواریشدن برای هر صفحه (plane). مقدار پیشفرض 0.02 است. محدوده معتبر از 0.00003 تا 0.5 است. چنانچه اختلاف میان پیکسل جاری و پیکسل مرجع کمتر از آستانه باشد، نواریشده تلقی خواهد شد.
- range, r
- محدوده تشخیص نواریشدن بر حسب پیکسل. پیشفرض 16 است. در صورت مثبت بودن، یک عدد تصادفی در بازه 0 تا مقدار تعیینشده به کار میرود. در صورت منفی بودن، مقدار دقیق قدر مطلق استفاده خواهد شد. این محدوده یک مربع متشکل از چهار پیکسل را در پیرامون پیکسل جاری تعریف میکند.
- direction, d
- تنظیم جهت بر حسب رادیان که چهار پیکسل از آن مقایسه میشوند. در صورت مثبت بودن، جهت تصادفی از 0 تا جهت تنظیمشده انتخاب میگردد. در صورت منفی بودن، مقدار دقیق قدر مطلق برگزیده میشود. برای نمونه جهت 0، -PI یا -2*PI رادیان تنها پیکسلهای روی همان سطر را انتخاب میکند و -PI/2 تنها پیکسلهای روی همان ستون را برمیگزیند.
- blur, b
- در صورت فعال بودن، پیکسل جاری با میانگین مقادیر هر چهار پیکسل پیرامونی مقایسه میشود. پیشفرض فعال است. در صورت غیرفعال بودن، پیکسل جاری با تمامی چهار پیکسل پیرامونی مقایسه میگردد. پیکسل تنها زمانی نواریشده تلقی میشود که تمام چهار اختلاف با پیکسلهای پیرامونی کمتر از آستانه باشد.
- coupling, c
- در صورت فعال بودن، پیکسل جاری اگر و تنها اگر تمامی مولفههای پیکسل نواریشده باشند تغییر مییابد، برای نمونه آستانه تشخیص نواریشدن برای همه مولفههای رنگ فعال گردد. پیشفرض غیرفعال است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
deblock
حذف مصنوعات بلوکیشدن (blocking) از ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- filter
- تنظیم نوع فیلتر، میتواند weak (ضعیف) یا strong (قوی) باشد. پیشفرض strong است. این گزینه نوع بلوکزدایی اعمالشده را کنترل میکند.
- block
- تنظیم اندازه بلوک، محدوده مجاز از 4 تا 512 است. پیشفرض 8 است.
- alpha
- beta
- gamma
- delta
- تنظیم آستانههای تشخیص بلوکیشدن. محدوده مجاز از 0 تا 1 است. مقادیر پیشفرض عبارتند از: 0.098 برای alpha و 0.05 برای سایر موارد. به کار بردن آستانه بالاتر، قدرت بلوکزدایی بیشتری فراهم میسازد. تنظیم alpha تشخیص آستانه را دقیقاً در لبه بلوک کنترل میکند. گزینههای باقیمانده تشخیص آستانه در نزدیکی لبه را کنترل مینمایند؛ هر یک برای بالا/پایین یا چپ/راست. تنظیم هر یک از این موارد روی 0 بلوکزدایی را غیرفعال میسازد.
- planes
- تنظیم صفحهها جهت فیلترسازی. پیشفرض فیلتر کردن تمامی صفحههای موجود است.
مثالها
- بلوکزدایی
با فیلتر
ضعیف و
اندازه
بلوک 4
پیکسل:
deblock=filter=weak:block=4
- بلوکزدایی
با فیلتر
قوی،
اندازه
بلوک 4
پیکسل و
آستانههای
سفارشی جهت
بلوکزدایی
لبههای
بیشتر:
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
- مشابه
بالا، اما
تنها با
فیلتر کردن
صفحه اول:
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
- مشابه
بالا، اما
تنها با
فیلتر کردن
صفحات دوم و
سوم:
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
decimate
حذف فریمهای تکراری در فواصل زمانی منظم.
این فیلتر گزینههای زیر را میپذیرد:
- cycle
- تنظیم تعداد فریمهایی که یکی از میان آنها حذف خواهد شد. تنظیم این گزینه روی N بدین معناست که یک فریم در هر دسته N تایی از فریمها حذف خواهد شد. پیشفرض 5 است.
- dupthresh
- تنظیم آستانه برای تشخیص تکراری بودن. چنانچه معیار اختلاف برای یک فریم کمتر یا مساوی با این مقدار باشد، به عنوان فریم تکراری قلمداد میشود. پیشفرض 1.1 است.
- scthresh
- تنظیم آستانه تغییر صحنه. پیشفرض 15 است.
- blockx
- blocky
- تنظیم اندازه بلوکهای محور x و y مورد استفاده در حین محاسبات معیار. بلوکهای بزرگتر باعث سرکوب بهتر نویز میشوند، اما در تشخیص حرکات کوچک عملکرد ضعیفتری دارند. باید توانی از دو باشد. پیشفرض 32 است.
- ppsrc
- علامتگذاری ورودی اصلی به عنوان ورودی پیشپردازششده و فعالسازی جریان ورودی منبع دستنخورده. این کار اجازه میدهد ورودی جهت کمک به محاسبه معیارها با فیلترهای گوناگون پیشپردازش شود بدون اینکه فرآیند گزینش فریم دچار افت کیفیت گردد. هنگامی که روی 1 تنظیم شود، نخستین جریان برای ورودی پیشپردازششده است، و دومین جریان همان منبع دستنخوردهای است که فریمهای حفظشده از آن برگزیده میشوند. پیشفرض 0 است.
- chroma
- تنظیم اینکه آیا کروما در محاسبات معیار مد نظر قرار گیرد یا خیر. پیشفرض 1 است.
- mixed
- تنظیم اینکه آیا ورودی تنها تا حدی دربردارنده محتوای نیازمند دِسیمِیت است یا خیر. پیشفرض "false" است. در صورت فعال بودن، جریان ویدیوی خروجی دارای نرخ فریم متغیر خواهد بود.
deconvolve
اعمال واپیچش (دکانولوشن) دوبعدی جریان ویدیو در حوزه فرکانس با استفاده از جریان دوم به عنوان پاسخ ضربه.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم صفحاتی که باید پردازش شوند.
- impulse
- تنظیم اینکه کدام فریمهای ویدیویی ضربه پردازش خواهند شد؛ میتواند first یا all باشد. پیشفرض all است.
- noise
- تنظیم نویز هنگام انجام تقسیمها. پیشفرض 0.0000001 است. زمانی که عرض و ارتفاع یکسان نباشند و توانی از 2 نباشند، یا اگر جریان پیش از کانولوشن دارای نویز بوده باشد سودمند است.
فیلتر "deconvolve" همچنین از گزینههای framesync پشتیبانی میکند.
dedot
کاهش درخشندگی متقاطع (dot-crawl) و رنگ متقاطع (rainbows) از ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- m
- تنظیم حالت عملیات. میتواند ترکیبی از dotcrawl برای کاهش درخشندگی متقاطع و/یا rainbows برای کاهش رنگ متقاطع باشد.
- lt
- تنظیم آستانه مکانی لوما. مقادیر کمتر، میزان کاهش درخشندگی متقاطع را افزایش میدهد.
- tl
- تنظیم تلرانس برای لومای زمانی. مقادیر بالاتر، میزان کاهش درخشندگی متقاطع را افزایش میدهد.
- tc
- تنظیم تلرانس برای تغییرات زمانی کروما. مقادیر بالاتر، میزان کاهش رنگ متقاطع را افزایش میدهد.
- ct
- تنظیم آستانه زمانی کروما. مقادیر کمتر، میزان کاهش رنگ متقاطع را افزایش میدهد.
deflate
اعمال افکت فشردهسازی لبه (deflate) بر روی ویدیو.
این فیلتر پیکسل را با میانگین محلی (3x3) تنها با در نظر گرفتن مقادیر کمتر از مقدار خود پیکسل جایگزین میکند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold0
- threshold1
- threshold2
- threshold3
- محدود کردن بیشینه تغییرات برای هر صفحه، پیشفرض 65535 است. اگر 0 باشد، صفحه دستنخورده باقی خواهد ماند.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
deflicker
حذف نوسانات روشنایی زمانی فریم (پرش نور یا flicker).
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تنظیم اندازه فیلتر میانگین متحرک بر حسب فریم. پیشفرض 5 است. محدوده مجاز بین 2 تا 129 است.
- mode, m
- تنظیم حالت
میانگینگیری
برای
هموارسازی
تغییرات
روشنایی
زمانی.
مقادیر موجود عبارتند از:
- bypass
- عدم تغییر واقعی فریم. در شرایطی که کاربر تنها خواستار فراداده باشد مفید است.
deinterlace_d3d12
دیاینترلیس کردن ویدیوی ورودی با استفاده از پردازش ویدیویی شتابیافته با سختافزار D3D12.
این فیلتر از پردازنده ویدیویی DirectX 12 جهت انجام عمل دیاینترلیس بر روی GPU بهره میبرد، و از هر دو الگوریتم ساده bob و پیشرفته تعریفشده توسط درایور (سازگار با حرکت) پشتیبانی میکند. این فیلتر نیازمند آن است که ورودی در فرمت پیکسلی سختافزاری "d3d12" باشد.
فیلتر بهطور خودکار سختافزار را برای تعداد مورد نیاز فریمهای مرجع زمانی (در صورت لزوم) پرسوجو کرده و صف فریمی را برای تامین آنها مدیریت میکند.
این فیلتر گزینههای زیر را میپذیرد:
- method
- روش دیاینترلیس. یکی از مقادیر زیر را میپذیرد:
- default
- انتخاب بهترین روش دیاینترلیس موجود روی سختافزار. چنانچه درایور از "custom" پشتیبانی نماید، آن روش به کار میرود؛ در غیر این صورت به "bob" بازمیگردد. این حالت پیشفرض است.
- bob
- دیاینترلیس Bob. هر فیلد بهطور مستقل به ارتفاع کامل فریم مقیاسبندی میشود. ساده و سریع است، اما ممکن است مصنوعات مشهود bob را روی محتوای دارای حرکت پدید آورد.
- custom
- دیاینترلیس پیشرفته تعریفشده توسط درایور. الگوریتم دقیق وابسته به سختافزار است و معمولاً از روشهای سازگار با حرکت همراه با فریمهای مرجع زمانی جهت دستیابی به کیفیت بالاتر بهره میجوید.
مقدار پیشفرض "default" است.
- mode
- مشخص کردن حالت اینترلیس. یکی از مقادیر زیر را میپذیرد:
- frame
- ارسال یک فریم به ازای هر فریم. نرخ فریم خروجی برابر با نرخ فریم ورودی خواهد بود. این حالت پیشفرض است.
- field
- ارسال یک فریم به ازای هر فیلد. نرخ فریم خروجی دو برابر نرخ فریم ورودی خواهد بود.
مقدار پیشفرض "frame" است.
- deint
- مشخص کردن اینکه کدام فریمها دیاینترلیس شوند. یکی از مقادیر زیر را میپذیرد:
- all
- دیاینترلیس تمامی فریمها. این حالت پیشفرض است.
- interlaced
- تنها دیاینترلیس فریمهایی که به عنوان اینترلیس علامتگذاری شدهاند؛ فریمهای پروگرسیو بدون تغییر عبور داده میشوند.
مقدار پیشفرض "all" است.
مثالها
- دیاینترلیس
کردن یک
ویدیوی
اینترلیس
با استفاده
از
رمزگشایی
نرمافزاری
و بهترین
روش
دیاینترلیس
سختافزاری
در دسترس:
ffmpeg -init_hw_device d3d12va=d3d12 -filter_hw_device d3d12 -i input.ts \ -vf "format=nv12,hwupload,deinterlace_d3d12=method=default,hwdownload,format=nv12" \ -c:v libx264 -crf 18 output.mp4 - دیاینترلیس
با نرخ فیلد
(دو برابر
نرخ فریم)
با استفاده
از روش bob
همراه با
رمزگشایی
سختافزاری
(پایپلاین
کامل d3d12):
ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.ts \ -vf "deinterlace_d3d12=method=bob:mode=field" \ -c:v h264_d3d12va output.mp4 - دیاینترلیس
تنها برای
فریمهای
اینترلیس،
و عبور دادن
فریمهای
پروگرسیو
بدون تغییر:
ffmpeg -init_hw_device d3d12va=d3d12 -filter_hw_device d3d12 -i input.ts \ -vf "format=nv12,hwupload,deinterlace_d3d12=deint=interlaced,hwdownload,format=nv12" \ -c:v libx264 -crf 18 output.mp4
dejudder
حذف لرزش (judder) ناشی از محتوای تلسینه نیمهاینترلیس.
لرزش میتواند برای نمونه توسط فیلتر pullup ایجاد شود. اگر منبع اصلی محتوای نیمهتلهسینه بوده باشد، خروجی "pullup,dejudder" دارای نرخ فریم متغیر خواهد بود. ممکن است نرخ فریم ثبتشده کانتینر را تغییر دهد. جدا از آن دگرگونی، این فیلتر بر ویدیوی با نرخ فریم ثابت تاثیری نخواهد گذاشت.
گزینه در دسترس در این فیلتر عبارت است از:
- cycle
- مشخص کردن
طول
پنجرهای
که لرزش در
طول آن
تکرار
میگردد.
هر عدد صحیح بزرگتر از 1 را میپذیرد. مقادیر سودمند عبارتند از:
- 4
- چنانچه نسخه اصلی از 24 به 30 فریم بر ثانیه تلهسینه شده باشد (فیلم به NTSC).
- 5
- چنانچه نسخه اصلی از 25 به 30 فریم بر ثانیه تلهسینه شده باشد (PAL به NTSC).
- 20
- در صورت ترکیب این دو.
پیشفرض 4 است.
delogo
حذف نشان (لوگو) شبکه تلویزیونی با درونیابی ساده پیکسلهای پیرامونی. کافی است مستطیلی را روی لوگو تنظیم نموده و ناپدید شدن آن را تماشا کنید (و گاهی حتی چیزی ناخوشایندتر نمایان میشود - بر حسب مورد شما ممکن است متفاوت باشد).
این فیلتر پارامترهای زیر را میپذیرد:
- x
- y
- مشخص کردن مختصات گوشه بالا-چپ لوگو. تعیین آنها الزامی است.
- w
- h
- مشخص کردن عرض و ارتفاع لوگو جهت پاکسازی. تعیین آنها الزامی است.
- show
- هنگامی که
روی 1 تنظیم
شود، یک
مستطیل سبز
بر روی صفحه
ترسیم
میگردد تا
یافتن
پارامترهای
صحیح x، y،
w و h
سادهتر
شود. مقدار
پیشفرض 0
است.
مستطیل روی بیرونیترین پیکسلهایی ترسیم میشود که (تا حدی) با مقادیر درونیابیشده جایگزین خواهند شد. مقادیر پیکسلهای پسین بلافاصله بیرون از این مستطیل در هر جهت جهت محاسبه مقادیر پیکسلی درونیابیشده درون مستطیل به کار گرفته میشوند.
مثالها
- •
- تنظیم
مستطیلی
پوششدهنده
ناحیه با
مختصات
گوشه
بالا-چپ 0,0 و
ابعاد 100x77:
delogo=x=0:y=0:w=100:h=77
derain
حذف باران در تصویر/ویدیوی ورودی با اعمال روشهای بارانزدایی بر پایه شبکههای عصبی پیچشی (CNN). مدلهای پشتیبانیشده:
- •
- شبکه تجمیع بستر فشردن-و-انگیزش بازگشتی (RESCAN). http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf را ببینید.
اسکریپتهای آموزش و همچنین تولید مدل در مخزن https://github.com/XueweiMeng/derain_filter.git ارائه شدهاند.
این فیلتر گزینههای زیر را میپذیرد:
- filter_type
- مشخص کردن اینکه از کدام فیلتر استفاده شود. این گزینه مقادیر زیر را میپذیرد:
- derain
- فیلتر بارانزدایی. برای اجرای فیلتر derain، باید از یک مدل derain استفاده کنید.
- dehaze
- فیلتر مهزدایی. برای اجرای فیلتر dehaze، باید از یک مدل dehaze استفاده کنید.
مقدار پیشفرض derain است.
- dnn_backend
- مشخص کردن اینکه از کدام بکاند DNN جهت بارگذاری و اجرای مدل استفاده شود. این گزینه مقادیر زیر را میپذیرد:
- tensorflow
- بکاند TensorFlow. برای فعالسازی این بکاند باید کتابخانه TensorFlow برای C را نصب نموده (https://www.tensorflow.org/install/lang_c را ببینید) و FFmpeg را با "--enable-libtensorflow" پیکربندی کنید.
- model
- تنظیم مسیر به فایل مدلی که معماری شبکه و پارامترهای آن را مشخص میسازد. توجه داشته باشید که بکاندهای مختلف از فرمتهای فایل گوناگونی استفاده میکنند. تنسورفلو تنها میتواند فایلهای مربوط به فرمت خود را بارگذاری نماید.
جهت دستیابی به قابلیتهای کامل (همچون اجرای ناهمگام)، لطفاً از فیلتر dnn_processing استفاده نمایید.
deshake
تلاش برای تصحیح تغییرات کوچک در جابهجاییهای افقی و/یا عمودی. این فیلتر به حذف لرزش دوربین ناشی از نگهداشتن دوربین با دست، برخورد به سهپایه، حرکت روی وسیله نقلیه و غیره کمک مینماید.
این فیلتر گزینههای زیر را میپذیرد:
- x
- y
- w
- h
- تعیین یک
ناحیه
مستطیلی که
جستجو برای
بردارهای
حرکت به آن
محدود
میشود. در
صورت
تمایل،
جستجو برای
بردارهای
حرکت را
میتوان به
یک ناحیه
مستطیلی از
فریم که
توسط گوشه
بالا-چپ،
عرض و
ارتفاع آن
مشخص
میشود
محدود کرد.
این
پارامترها
دارای
معنای
یکسانی با
فیلتر drawbox
هستند که
میتواند
جهت
بصریسازی
موقعیت
کادر مرزی
به کار رود.
این گزینه زمانی سودمند است که حرکت همزمان سوژهها درون فریم ممکن است در جستجوی بردار حرکت با حرکت دوربین اشتباه گرفته شود.
چنانچه هر یک یا تمامی x، y، w و h روی -1 تنظیم گردند، کل فریم مورد استفاده قرار میگیرد. این امر اجازه میدهد گزینههای پسین بدون نیاز به مشخص کردن کادر مرزی برای جستجوی بردار حرکت تنظیم شوند.
پیشفرض - جستجوی کل فریم است.
- rx
- ry
- مشخص کردن بیشینه دامنه حرکت در جهات x و y در بازه 0-64 پیکسل. پیشفرض 16 است.
- edge
- مشخص کردن شیوه تولید پیکسلها جهت پر کردن فضاهای خالی در لبههای فریم. مقادیر در دسترس عبارتند از:
- blank, 0
- پر کردن با صفر در موقعیتهای خالی
- original, 1
- تصویر اصلی در موقعیتهای خالی
- clamp, 2
- مقدار کشیدهشده لبه در موقعیتهای خالی
- mirror, 3
- لبه آینهای در موقعیتهای خالی
مقدار پیشفرض mirror است.
- blocksize
- مشخص کردن اندازه بلوک جهت استفاده در جستجوی حرکت. بازه 4-128 پیکسل، پیشفرض 8 است.
- contrast
- مشخص کردن آستانه کنتراست برای بلوکها. تنها بلوکهایی با کنتراستی فراتر از حد تعیینشده (اختلاف میان تاریکترین و روشنترین پیکسلها) مد نظر قرار خواهند گرفت. بازه 1-255، پیشفرض 125 است.
- search
- مشخص کردن استراتژی جستجو. مقادیر موجود عبارتند از:
- exhaustive, 0
- تنظیم جستجوی کامل (فراگیر)
- less, 1
- تنظیم جستجوی کمتر فراگیر.
مقدار پیشفرض exhaustive است.
- filename
- در صورت تنظیم، گزارش مشروحی از جستجوی حرکت در فایل تعیینشده نوشته میشود.
despill
حذف آلودگی ناخواسته رنگهای پیشزمینه، ناشی از بازتاب رنگ پرده سبز یا پرده آبی.
این فیلتر گزینههای زیر را میپذیرد:
- type
- تنظیم نوع despill مورد استفاده.
- mix
- تنظیم نحوه تولید نقشه نشتی (spillmap).
- expand
- تنظیم میزان خلاص شدن از نشتیهای همچنان باقیمانده.
- red
- کنترل مقدار رنگ قرمز در ناحیه نشتی.
- green
- کنترل مقدار رنگ سبز در ناحیه نشتی. برای پرده سبز باید -1 باشد.
- blue
- کنترل مقدار رنگ آبی در ناحیه نشتی. برای پرده آبی باید -1 باشد.
- brightness
- کنترل روشنایی ناحیه نشتی، ضمن حفظ رنگها.
- alpha
- اصلاح آلفا برگرفته از نقشه نشتی تولیدشده.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
detelecine
اعمال معکوس دقیق عملیات تلهسینه (telecine). نیازمند یک الگوی از پیش تعریفشده است که با استفاده از گزینه pattern مشخص میشود و باید مشابه با الگوی ارسالشده به فیلتر telecine باشد.
این فیلتر گزینههای زیر را میپذیرد:
- pattern
- رشتهای از ارقام نمایانگر الگوی pulldown که مایلید اعمال نمایید. مقدار پیشفرض 23 است.
- start_frame
- عددی نمایانگر موقعیت نخستین فریم با توجه به الگوی تلهسینه. این گزینه در صورتی که جریان برش خورده باشد به کار میرود. مقدار پیشفرض 0 است.
dilation
اعمال جلوه اتساع (dilation) بر روی ویدیو.
این فیلتر هر پیکسل را با بیشینه محلی (3x3) جایگزین میکند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold0
- threshold1
- threshold2
- threshold3
- محدود کردن بیشینه تغییر برای هر صفحه (plane)، پیشفرض 65535 است. اگر 0 باشد، صفحه بدون تغییر باقی میماند.
- coordinates
- پرچمی که
پیکسلهای
مورد ارجاع
را مشخص
میکند.
پیشفرض 255
است، یعنی
از تمام هشت
پیکسل
استفاده
میشود.
نگاشت پرچمها به مختصات محلی 3x3 به این صورت است:
1 2 3 4 5 6 7 8
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق بهعنوان دستورات پشتیبانی میکند.
displace
جابهجایی پیکسلها مطابق با جریانهای ورودی دوم و سوم.
این فیلتر سه جریان ورودی میگیرد و یک جریان خروجی تولید میکند؛ ورودی اول منبع اصلی است، و ورودیهای دوم و سوم نقشههای جابهجایی (displacement maps) هستند.
ورودی دوم تعیین میکند که پیکسلها چقدر در امتداد محور x جابهجا شوند، در حالی که ورودی سوم میزان جابهجایی پیکسلها در امتداد محور y را تعیین میکند. اگر یکی از جریانهای نقشه جابهجایی پایان یابد، آخرین فریم از آن نقشه جابهجایی استفاده خواهد شد.
توجه داشته باشید که نقشههای جابهجایی پس از ایجاد میتوانند بارها و بارها مورد استفاده مجدد قرار گیرند.
در ادامه توضیحات مربوط به گزینههای پذیرفتهشده آمده است.
- edge
- تنظیم
رفتار
جابهجایی
برای
پیکسلهایی
که خارج از
محدوده
هستند.
مقادیر مجاز عبارتند از:
پیشفرض smear است.
مثالها (Examples)
- افزودن
جلوه
موجدار (ripple)
به ورودی rgb
با اندازه
ویدیوی hd720:
ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
- افزودن
جلوه موج (wave)
به ورودی rgb
با اندازه
ویدیوی hd720:
ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
dnn_classify
انجام دستهبندی با شبکههای عصبی عمیق بر اساس کادرهای مرزی (bounding boxes).
این فیلتر گزینههای زیر را میپذیرد:
- dnn_backend
- تعیین بَکاند DNN مورد استفاده برای بارگذاری و اجرای مدل. این گزینه در حال حاضر تنها openvino را میپذیرد، بَکاندهای tensorflow اضافه خواهند شد.
- model
- تنظیم مسیر فایل مدل که معماری شبکه و پارامترهای آن را مشخص میکند. توجه داشته باشید که بَکاندهای مختلف از قالبهای فایل متفاوتی استفاده میکنند.
- input
- تنظیم نام ورودی شبکه dnn.
- output
- تنظیم نام خروجی شبکه dnn.
- confidence
- تنظیم آستانه اطمینان (پیشفرض: 0.5).
- labels
- تنظیم مسیر فایل برچسبها که نگاشت بین شناسه برچسب و نام آن را مشخص میکند. هر نام برچسب در یک خط نوشته میشود، فاصلههای انتهایی و خطوط خالی نادیده گرفته میشوند. خط اول نام شناسه برچسب 0 است، و خط دوم نام شناسه برچسب 1، و به همین ترتیب. در صورتی که فایل برچسب ارائه نشود، شناسه برچسب به عنوان نام در نظر گرفته میشود.
- backend_configs
- تنظیم
پیکربندیهایی
که به
بَکاند
ارسال
میشوند.
برای بَکاند tensorflow، میتوانید پیکربندیهای آن را با گزینههای sess_config تنظیم کنید؛ لطفاً از tools/python/tf_sess_config.py برای دریافت پیکربندیهای مناسب سیستم خود استفاده نمایید.
dnn_detect
تشخیص اشیاء با شبکههای عصبی عمیق.
این فیلتر گزینههای زیر را میپذیرد:
- dnn_backend
- تعیین بَکاند DNN مورد استفاده برای بارگذاری و اجرای مدل. این گزینه در حال حاضر تنها openvino را میپذیرد، بَکاندهای tensorflow اضافه خواهند شد.
- model
- تنظیم مسیر فایل مدل که معماری شبکه و پارامترهای آن را مشخص میکند. توجه داشته باشید که بَکاندهای مختلف از قالبهای فایل متفاوتی استفاده میکنند.
- input
- تنظیم نام ورودی شبکه dnn.
- output
- تنظیم نام خروجی شبکه dnn.
- confidence
- تنظیم آستانه اطمینان (پیشفرض: 0.5).
- labels
- تنظیم مسیر فایل برچسبها که نگاشت بین شناسه برچسب و نام آن را مشخص میکند. هر نام برچسب در یک خط نوشته میشود، فاصلههای انتهایی و خطوط خالی نادیده گرفته میشوند. خط اول نام شناسه برچسب 0 است (معمولاً 'background')، و خط دوم نام شناسه برچسب 1، و به همین ترتیب. در صورتی که فایل برچسب ارائه نشود، شناسه برچسب به عنوان نام در نظر گرفته میشود.
- backend_configs
- تنظیم پیکربندیهایی که به بَکاند ارسال میشوند. برای استفاده از اجرای ناهمگام، async را تنظیم کنید (پیشفرض: تنظیمشده). اگر بَکاند از اجرای ناهمگام پشتیبانی نکند، به اجرای همگام بازمیگردد.
dnn_processing
انجام پردازش تصویر با شبکههای عصبی عمیق. این فیلتر به همراه فیلتر دیگری کار میکند که قالب پیکسلی فریم را به آنچه شبکه dnn نیاز دارد تبدیل مینماید.
این فیلتر گزینههای زیر را میپذیرد:
- dnn_backend
- تعیین بَکاند DNN مورد استفاده برای بارگذاری و اجرای مدل. این گزینه مقادیر زیر را میپذیرد:
- tensorflow
- بَکاند TensorFlow. برای فعالسازی این بَکاند باید کتابخانه TensorFlow for C را نصب کنید (ببینید https://www.tensorflow.org/install/lang_c) و FFmpeg را با "--enable-libtensorflow" پیکربندی نمایید.
- openvino
- بَکاند OpenVINO. برای فعالسازی این بَکاند باید کتابخانه OpenVINO for C را بیلد و نصب کنید (ببینید https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md) و FFmpeg را با "--enable-libopenvino" پیکربندی نمایید (اگر فایلهای هدر و کتابخانهها در مسیرهای سیستمی نصب نشده باشند، ممکن است -\xtra-cflags=-I... -\xtra-ldflags=-L... مورد نیاز باشد).
- torch
- بَکاند Libtorch. برای فعالسازی این بَکاند باید کتابخانه Libtorch for C++ را بیلد و نصب کنید. لطفاً نسخه cxx11 ABI را دانلود نمایید (ببینید https://pytorch.org/get-started/locally) و FFmpeg را با "--enable-libtorch -\xtra-cflags=-I/libtorch_root/libtorch/include -\xtra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include -\xtra-ldflags=-L/libtorch_root/libtorch/lib/" پیکربندی کنید.
- onnx
- بَکاند ONNX Runtime.
برای
فعالسازی
این
بَکاند
باید
کتابخانه ONNX
Runtime را نصب
کنید
(ببینید
https://onnxruntime.ai) و FFmpeg را
با
"--enable-libonnxruntime"
پیکربندی
نمایید.
بَکاند فعلی ONNX Runtime تانسورهای ورودی و خروجی 4 بعدی با چینش NCHW و نوع داده ممیز شناور 32 بیتی (ONNX "FLOAT") را انتظار دارد؛ مدلهایی با نوع داده صحیح یا سایر انواع (مانند "UINT8") پشتیبانی نمیشوند و در زمان بارگذاری رد خواهند شد. مدلهایی که از چینش NHWC یا سایر رتبهها استفاده میکنند هنوز پشتیبانی نمیشوند. فقط مدلهای تکورودی پشتیبانی میشوند؛ بَکاند هنگام اجرای مدل دقیقاً یک تانسور ورودی را متصل میکند.
گزینههای input و output برای بَکاند ONNX Runtime اختیاری هستند؛ در صورت حذف آنها، بَکاند نامهای تانسور را از نشست (session) استخراج میکند.
بَکاند ONNX Runtime استنتاج را بهصورت همگام با استفاده از یک درخواست استنتاج واحد اجرا میکند. بنابراین گزینههای مشترک async و nireq هیچ تأثیری برای "dnn_backend=onnx" ندارند؛ استنتاج صرفنظر از مقادیر آنها همیشه بهصورت همگام اجرا میشود.
- model
- تنظیم مسیر فایل مدل که معماری شبکه و پارامترهای آن را مشخص میکند. توجه داشته باشید که بَکاندهای مختلف از قالبهای فایل متفاوتی استفاده میکنند. بَکاندهای TensorFlow، OpenVINO، Libtorch و ONNX Runtime فقط میتوانند فایلهای مربوط به قالبهای خاص خود را بارگذاری نمایند.
- input
- تنظیم نام ورودی شبکه dnn. برای بَکاند TensorFlow الزامی است؛ برای بَکاند ONNX Runtime اختیاری است.
- output
- تنظیم نام خروجی شبکه dnn. برای بَکاند TensorFlow الزامی است؛ برای بَکاند ONNX Runtime اختیاری است.
- backend_configs
- تنظیم
پیکربندیهایی
که به
بَکاند
ارسال
میشوند.
برای
استفاده از
اجرای
ناهمگام، async
را تنظیم
کنید
(پیشفرض:
تنظیمشده).
اگر
بَکاند از
اجرای
ناهمگام
پشتیبانی
نکند، به
اجرای
همگام
بازمیگردد.
برای بَکاند tensorflow، میتوانید پیکربندیهای آن را با گزینههای sess_config تنظیم کنید؛ لطفاً از tools/python/tf_sess_config.py برای دریافت پیکربندیهای بَکاند TensorFlow مناسب سیستم خود استفاده نمایید.
- device
- تنظیم دستگاه برای اجرای مدل. برای بَکاند ONNX Runtime این گزینه ارائهدهنده اجرا را انتخاب میکند: "cpu" (پیشفرض)، "cuda" (پردازنده گرافیکی NVIDIA)، "dml" (DirectML، فقط ویندوز) یا "vitisai" (NPU معماری AMD Ryzen AI).
- device_id
- تنظیم شناسه دستگاه مورد استفاده توسط ارائهدهندگان اجرای GPU (مانند "cuda" یا "dml") برای بَکاند ONNX Runtime. پیشفرض 0 است.
- threads_per_operation
- فقط بَکاند ONNX Runtime. تنظیم تعداد نخهای پردازنده (CPU threads) مورد استفاده به ازای هر عملگر ONNX Runtime در هنگام اجرا با "device=cpu". پیشفرض 0 است (اجازه به ONNX Runtime برای انتخاب خودکار). روی ارائهدهندگان GPU/NPU تأثیری ندارد.
مثالها (Examples)
- حذف باران
در فریم rgb24 با
can.pb (فیلتر derain
را ببینید):
./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
- پردازش
کانال Y با srcnn.pb
(فیلتر sr را
ببینید)
برای فریم
با yuv420p
(قالبهای
سطحی YUV
پشتیبانی
میشوند):
./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
- پردازش
کانال Y با espcn.pb
(فیلتر sr را
ببینید)، که
اندازه
فریم را
تغییر
میدهد،
برای قالب yuv420p
(قالبهای
سطحی YUV
پشتیبانی
میشوند)؛
لطفاً از
tools/python/tf_sess_config.py برای
دریافت
پیکربندیهای
بَکاند TensorFlow
متناسب با
سیستم خود
استفاده
کنید.
./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
drawbox
ترسیم یک کادر (box) رنگی بر روی تصویر ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- x
- y
- عباراتی که مختصات گوشه بالا سمت چپ کادر را مشخص میکنند. پیشفرض 0 است.
- width, w
- height, h
- عباراتی که عرض و ارتفاع کادر را مشخص میکنند؛ اگر 0 باشند به عنوان عرض و ارتفاع ورودی تفسیر میشوند. پیشفرض 0 است.
- color, c
- تعیین رنگ کادری که ترسیم میشود. برای ساختار نحوی کلی این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید. اگر مقدار ویژه "invert" استفاده شود، رنگ لبه کادر مانند ویدیو اما با روشنایی (luma) معکوس خواهد بود.
- thickness, t
- عبارتی که
ضخامت لبه
کادر را
تنظیم
میکند.
مقدار
"fill" یک
کادر توپر
ایجاد
میکند.
مقدار
پیشفرض
3 است.
برای مشاهده فهرست ثابتهای پذیرفتهشده به بخش زیر مراجعه کنید.
- replace
- در صورتی که ورودی دارای کانال آلفا باشد کاربرد دارد. با مقدار 1، پیکسلهای کادر ترسیمشده روی رنگ و پیکسلهای آلفای ویدیو بازنویسی میشوند. پیشفرض 0 است، که کادر را روی ورودی ترکیب میکند و آلفای ویدیو را دستنخورده باقی میگذارد.
پارامترهای x، y، w و h و t عباراتی شامل ثابتهای زیر هستند:
- dar
- نسبت ابعاد نمایش ورودی (display aspect ratio)، معادل با (w / h) * sar است.
- hsub
- vsub
- مقادیر زیرنمونهبرداری کروما بهصورت افقی و عمودی. برای مثال برای قالب پیکسلی "yuv422p" مقدار hsub برابر 2 و vsub برابر 1 است.
- in_h, ih
- in_w, iw
- عرض و ارتفاع ورودی.
- sar
- نسبت ابعاد نمونه ورودی (sample aspect ratio).
- x
- y
- مختصات آفست x و y در جایی که کادر ترسیم میشود.
- w
- h
- عرض و ارتفاع کادر ترسیمشده.
- box_source
- منبع کادر
در صورتی که
بخواهید از
دادههای
کادر در
کادرهای
مرزی تشخیص
(detection bboxes)
دادههای
جانبی (side data)
استفاده
کنید،
میتواند
روی side_data_detection_bboxes
تنظیم شود.
اگر box_source تنظیم شود، مقادیر x، y، width و height نادیده گرفته شده و همچنان از دادههای کادر در detection bboxes دادههای جانبی استفاده خواهد شد. بنابراین اگر از منبع کادر اطمینان ندارید لطفاً از این پارامتر استفاده نکنید.
- t
- ضخامت کادر
ترسیمشده.
این ثابتها به عبارات x، y، w، h و t اجازه میدهند به یکدیگر ارجاع دهند، بنابراین میتوانید برای مثال "y=x/dar" یا "h=w/dar" را مشخص کنید.
مثالها (Examples)
- ترسیم یک
کادر سیاه
در اطراف
لبه تصویر
ورودی:
drawbox
- ترسیم
کادری با
رنگ قرمز و
شفافیت (opacity)
۵۰٪:
drawbox=10:20:200:60:red@0.5
مثال قبلی را میتوان به این صورت نیز مشخص کرد:
drawbox=x=10:y=20:w=200:h=60:color=red@0.5
- پر کردن
کادر با رنگ
صورتی:
drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
- ترسیم یک
ماسک ۲
پیکسلی
قرمز با
نسبت 2.40:1:
drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
drawgraph
رسم نمودار با استفاده از متادیتای ویدیوی ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- m1
- تنظیم کلید متادیتای فریم اول که مقادیر متادیتا از آن برای رسم نمودار استفاده خواهد شد.
- fg1
- تنظیم عبارت رنگ پیشزمینه اول.
- m2
- تنظیم کلید متادیتای فریم دوم که مقادیر متادیتا از آن برای رسم نمودار استفاده خواهد شد.
- fg2
- تنظیم عبارت رنگ پیشزمینه دوم.
- m3
- تنظیم کلید متادیتای فریم سوم که مقادیر متادیتا از آن برای رسم نمودار استفاده خواهد شد.
- fg3
- تنظیم عبارت رنگ پیشزمینه سوم.
- m4
- تنظیم کلید متادیتای فریم چهارم که مقادیر متادیتا از آن برای رسم نمودار استفاده خواهد شد.
- fg4
- تنظیم عبارت رنگ پیشزمینه چهارم.
- min
- تنظیم حداقل مقدار متادیتا.
- max
- تنظیم حداکثر مقدار متادیتا.
- bg
- تنظیم رنگ پسزمینه نمودار. پیشفرض سفید (white) است.
- mode
- تنظیم حالت
نمودار.
مقادیر مجاز برای mode عبارتند از:
پیشفرض "line" است.
- slide
- تنظیم حالت
اسلاید
(لغزش).
مقادیر مجاز برای slide عبارتند از:
پیشفرض "frame" است.
- size
- تنظیم اندازه ویدیوی نمودار. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "900x256" است.
- rate, r
- تنظیم نرخ
فریم خروجی.
مقدار
پیشفرض
25 است.
عبارات رنگ پیشزمینه میتوانند از متغیرهای زیر استفاده کنند:
رنگ بهصورت 0xAABBGGRR تعریف میشود.
مثال با استفاده از متادیتا از فیلتر signalstats:
signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
مثال با استفاده از متادیتا از فیلتر ebur128:
ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
drawgrid
رسم یک توری (grid) بر روی تصویر ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- x
- y
- عباراتی که مختصات نقطهای از تقاطع شبکه را مشخص میکنند (به منظور پیکربندی آفست). پیشفرض هر دو 0 است.
- width, w
- height, h
- عباراتی که عرض و ارتفاع سلول شبکه را مشخص میکنند؛ اگر 0 باشند به عنوان عرض و ارتفاع ورودی، به ترتیب، منهای "thickness" تفسیر میشوند تا تصویر قاببندی شود. پیشفرض 0 است.
- color, c
- تعیین رنگ شبکه. برای ساختار نحوی کلی این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید. اگر مقدار ویژه "invert" استفاده شود، رنگ شبکه همانند ویدیو اما با روشنایی (luma) معکوس خواهد بود.
- thickness, t
- عبارتی که
ضخامت خطوط
شبکه را
تنظیم
میکند.
مقدار
پیشفرض
1 است.
برای مشاهده فهرست ثابتهای پذیرفتهشده به بخش زیر مراجعه کنید.
- replace
- در صورتی که ورودی دارای کانال آلفا باشد کاربرد دارد. با مقدار 1، پیکسلهای شبکه ترسیمشده روی رنگ و پیکسلهای آلفای ویدیو بازنویسی میشوند. پیشفرض 0 است، که شبکه را روی ورودی ترکیب میکند و آلفای ویدیو دستنخورده باقی میماند.
پارامترهای x، y، w و h و t عباراتی شامل ثابتهای زیر هستند:
- dar
- نسبت ابعاد نمایش ورودی (display aspect ratio)، معادل با (w / h) * sar است.
- hsub
- vsub
- مقادیر زیرنمونهبرداری کروما بهصورت افقی و عمودی. برای مثال برای قالب پیکسلی "yuv422p" مقدار hsub برابر 2 و vsub برابر 1 است.
- in_h, ih
- in_w, iw
- عرض و ارتفاع سلول شبکه ورودی.
- sar
- نسبت ابعاد نمونه ورودی (sample aspect ratio).
- x
- y
- مختصات x و y نقطهای از تقاطع شبکه (به منظور پیکربندی آفست).
- w
- h
- عرض و ارتفاع سلول رسمشده.
- t
- ضخامت سلول
رسمشده.
این ثابتها به عبارات x، y، w، h و t اجازه میدهند به یکدیگر ارجاع دهند، بنابراین میتوانید برای مثال "y=x/dar" یا "h=w/dar" را مشخص کنید.
مثالها (Examples)
- رسم یک شبکه
با
سلولهای 100x100
پیکسل،
ضخامت 2
پیکسل، با
رنگ قرمز و
شفافیت ۵۰٪:
drawgrid=width=100:height=100:thickness=2:color=red@0.5
- رسم یک شبکه
3x3 سفید با
شفافیت ۵۰٪:
drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
drawtext
ترسیم یک رشته متنی یا متن حاصل از یک فایل مشخص بر روی ویدیو، با استفاده از کتابخانه libfreetype.
برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-libfreetype" و "--enable-libharfbuzz" پیکربندی کنید. برای فعالسازی قلم جایگزین پیشفرض (fallback) و گزینه font باید FFmpeg را با "--enable-libfontconfig" پیکربندی نمایید. برای فعالسازی گزینه text_shaping، باید FFmpeg را با "--enable-libfribidi" پیکربندی کنید.
ساختار نحوی (Syntax)
این فیلتر پارامترهای زیر را میپذیرد:
- box
- برای ترسیم کادری در اطراف متن با استفاده از رنگ پسزمینه به کار میرود. مقدار آن باید 1 (فعال) یا 0 (غیرفعال) باشد. مقدار پیشفرض box برابر 0 است.
- boxborderw
- تنظیم عرض حاشیهای که با استفاده از boxcolor در اطراف کادر کشیده میشود. مقدار باید با استفاده از یکی از قالبهای زیر مشخص شود:
- *<"boxborderw=10" تنظیم عرض تمام حاشیهها روی 10>
- *<"boxborderw=10|20" تنظیم عرض حاشیههای بالا و پایین روی 10>
-
and the width of the left and right borders to 20
- *<"boxborderw=10|20|30" تنظیم عرض حاشیه بالا روی 10، عرض>
-
of the bottom border to 30 and the width of the left and right borders to 20
- *<"boxborderw=10|20|30|40" تنظیم عرض حاشیهها روی 10 (بالا)، 20 (راست)،>
-
30 (bottom), 40 (left)
مقدار پیشفرض boxborderw برابر "0" است.
- boxcolor
- رنگ مورد
استفاده
برای ترسیم
کادر در
اطراف متن.
برای
ساختار
نحوی این
گزینه،
بخش "Color" در
راهنمای ffmpeg-utils
را بررسی
کنید.
مقدار پیشفرض boxcolor برابر "white" است.
- line_spacing
- تنظیم فاصله بین خطوط بر حسب پیکسل. مقدار پیشفرض line_spacing برابر 0 است.
- text_align
- تنظیم تراز عمودی و افقی متن نسبت به مرزهای کادر. مقدار ترکیبی از پرچمها است: یکی برای تراز عمودی (T=بالا، M=وسط، B=پایین) و دیگری برای تراز افقی (L=چپ، C=مرکز، R=راست). لطفاً توجه داشته باشید که نویسههای تب (tab) فقط با تراز افقی چپ پشتیبانی میشوند.
- y_align
- مشخص میکند که مقدار y به چه چیزی ارجاع دارد. مقادیر ممکن عبارتند از:
- *<"text" بالای بلندترین گلیف اولین خط متن در y قرار میگیرد>
- *<"baseline" خط مبنای اولین خط متن در y قرار میگیرد>
- *<"font" خط مبنای اولین خط متن در y به اضافه>
-
ascent (in pixels) defined in the font metrics
مقدار پیشفرض y_align به دلیل سازگاری رو به عقب "text" است.
- borderw
- تنظیم عرض حاشیهای که با استفاده از bordercolor در اطراف متن کشیده میشود. مقدار پیشفرض borderw برابر 0 است.
- bordercolor
- تنظیم رنگ
مورد
استفاده
برای ترسیم
حاشیه در
اطراف متن.
برای
ساختار
نحوی این
گزینه،
بخش "Color" در
راهنمای ffmpeg-utils
را بررسی
کنید.
مقدار پیشفرض bordercolor برابر "black" است.
- expansion
- انتخاب نحوه بسط دادن text. میتواند یکی از مقادیر "none"، "strftime" (منسوخشده) یا "normal" (پیشفرض) باشد. برای جزئیات به بخش drawtext_expansion، بسط متن (Text expansion) در زیر مراجعه کنید.
- basetime
- تنظیم زمان شروع برای شمارش. مقدار بر حسب میکروثانیه است. فقط در حالت منسوخشده بسط "strftime" اعمال میشود. برای شبیهسازی در حالت بسط نرمال، از تابع "pts" استفاده کنید و زمان شروع (بر حسب ثانیه) را به عنوان آرگومان دوم ارائه دهید.
- fix_bounds
- در صورت فعال بودن، مختصات متن برای جلوگیری از برشخوردگی (clipping) بررسی و اصلاح میشود.
- fontcolor
- رنگ مورد
استفاده
برای ترسیم
فونتها.
برای
ساختار
نحوی این
گزینه،
بخش "Color" در
راهنمای ffmpeg-utils
را بررسی
کنید.
مقدار پیشفرض fontcolor برابر "black" است.
- fontcolor_expr
- رشتهای که به همان شیوه text بسط داده میشود تا مقدار پویای fontcolor به دست آید. بهطور پیشفرض این گزینه مقداری خالی دارد و پردازش نمیشود. وقتی این گزینه تنظیم شود، گزینه fontcolor را بازنویسی میکند.
- font
- خانواده قلم مورد استفاده برای رسم متن. بهطور پیشفرض Sans است.
- fontfile
- فایل قلم مورد استفاده برای رسم متن. مسیر فایل باید درج شود. در صورتی که پشتیبانی از fontconfig غیرفعال باشد، این پارامتر الزامی است.
- alpha
- رسم متن با اعمال ترکیب آلفا (alpha blending). مقدار میتواند عددی بین 0.0 و 1.0 باشد. این عبارت متغیرهای x, y را نیز میپذیرد. مقدار پیشفرض 1 است. لطفاً fontcolor_expr را ببینید.
- fontsize
- اندازه قلم مورد استفاده برای رسم متن. مقدار پیشفرض fontsize برابر 16 است.
- text_shaping
- در صورت تنظیم روی 1، تلاش میکند تا پیش از رسم متن، شکلدهی مناسب را به آن اعمال کند (برای مثال، معکوس کردن ترتیب متن راستبهچپ و اتصال حروف عربی و فارسی). در غیر این صورت، متن را دقیقاً همانطور که داده شده رسم میکند. بهطور پیشفرض 1 است (در صورت پشتیبانی).
- ft_load_flags
- پرچمهای
مورد
استفاده
برای
بارگذاری
قلمها.
این پرچمها با پرچمهای متناظر پشتیبانیشده توسط libfreetype مطابقت دارند و ترکیبی از مقادیر زیر هستند:
مقدار پیشفرض "default" است.
برای اطلاعات بیشتر به مستندات پرچمهای FT_LOAD_* در libfreetype مراجعه کنید.
- shadowcolor
- رنگ مورد
استفاده
برای رسم
سایه در پشت
متن
رسمشده.
برای
ساختار
نحوی این
گزینه،
بخش "Color" در
راهنمای
ffmpeg-utils را بررسی
کنید.
مقدار پیشفرض shadowcolor برابر "black" است.
- boxw
- تنظیم عرض کادری که در اطراف متن رسم میشود. مقدار پیشفرض boxw بهطور خودکار متناسب با عرض متن محاسبه میشود.
- boxh
- تنظیم ارتفاع کادری که در اطراف متن رسم میشود. مقدار پیشفرض boxh بهطور خودکار متناسب با ارتفاع متن محاسبه میشود.
- shadowx
- shadowy
- آفستهای x و y برای موقعیت سایه متن نسبت به موقعیت متن. این مقادیر میتوانند مثبت یا منفی باشند. مقدار پیشفرض هر دو "0" است.
- start_number
- شماره فریم شروع برای متغیر n/frame_num. مقدار پیشفرض "0" است.
- tabsize
- اندازه بر حسب تعداد فاصلهها جهت استفاده در رندر تب (tab). مقدار پیشفرض 4 است.
- timecode
- تنظیم نمایش اولیه تایمکد در قالب "hh:mm:ss[:;.]ff". میتواند همراه با پارامتر text یا بدون آن استفاده شود. گزینه timecode_rate باید مشخص شود.
- timecode_rate, rate, r
- تنظیم نرخ فریم تایمکد (فقط تایمکد). مقدار به نزدیکترین عدد صحیح گرد میشود. حداقل مقدار "1" است. تایمکد Drop-frame برای نرخهای فریم 30 و 60 پشتیبانی میشود.
- tc24hmax
- در صورت تنظیم روی 1، خروجی گزینه timecode پس از 24 ساعت به صفر بازمیگردد. پیشفرض 0 است (غیرفعال).
- text
- رشته متنی برای رسم. متن باید دنبالهای از نویسههای کدگذاریشده با UTF-8 باشد. در صورتی که هیچ فایلی با پارامتر textfile مشخص نشده باشد، این پارامتر الزامی است.
- textfile
- یک فایل
متنی حاوی
متنی که
باید رسم
شود. متن
باید
دنبالهای
از
نویسههای
کدگذاریشده
با UTF-8 باشد.
در صورتی که هیچ رشته متنی با پارامتر text مشخص نشده باشد، این پارامتر الزامی است.
اگر هر دو پارامتر text و textfile مشخص شوند، یک خطا صادر میشود.
- text_source
- در صورتی که
بخواهید از
دادههای
متنی در detection bboxes
دادههای
جانبی
استفاده
کنید، text source
باید روی
side_data_detection_bboxes تنظیم
شود.
اگر text source تنظیم شود، text و textfile نادیده گرفته میشوند و همچنان از دادههای متنی در detection bboxes دادههای جانبی استفاده خواهد شد. بنابراین اگر درباره منبع متن مطمئن نیستید، لطفاً از این پارامتر استفاده نکنید.
- reload
- فایل textfile در بازه فریمی مشخصشده مجدداً بارگذاری خواهد شد. اطمینان حاصل کنید که textfile را بهطور اتمیک بهروزرسانی نمایید، در غیر این صورت ممکن است بهطور ناقص خوانده شده یا حتی با شکست مواجه شود. محدوده مجاز از 0 تا INT_MAX است. پیشفرض 0 است.
- x
- y
- عباراتی که
آفستهای
محل رسم متن
درون فریم
ویدیو را
مشخص
میکنند.
این مقادیر
نسبت به
حاشیه
بالا/چپ
تصویر
خروجی
سنجیده
میشوند.
مقدار پیشفرض x و y برابر "0" است.
برای مشاهده فهرست ثابتها و توابع پذیرفتهشده به بخش زیر مراجعه نمایید.
پارامترهای x و y عباراتی حاوی ثابتها و توابع زیر هستند:
- dar
- نسبت ابعاد نمایش ورودی (display aspect ratio)، معادل با (w / h) * sar است.
- hsub
- vsub
- مقادیر زیرنمونهبرداری کرومای افقی و عمودی. برای مثال برای قالب پیکسلی "yuv422p" مقدار hsub برابر 2 و vsub برابر 1 است.
- line_h, lh
- ارتفاع هر خط از متن
- main_h, h, H
- ارتفاع ورودی
- main_w, w, W
- عرض ورودی
- max_glyph_a, ascent
- حداکثر فاصله از خط مبنا (baseline) تا بالاترین مختصات شبکه که برای قرار دادن نقطه محیطی گلیف استفاده میشود، برای تمامی گلیفهای رندرشده. به دلیل جهتگیری شبکه با محور Y رو به بالا، این مقدار مثبت است.
- max_glyph_d, descent
- حداکثر فاصله از خط مبنا تا پایینترین مختصات شبکه که برای قرار دادن نقطه محیطی گلیف استفاده میشود، برای تمامی گلیفهای رندرشده. به دلیل جهتگیری شبکه با محور Y رو به بالا، این مقدار منفی است.
- max_glyph_h
- حداکثر ارتفاع گلیف، یعنی حداکثر ارتفاع برای تمامی گلیفهای موجود در متن رندرشده، که معادل با ascent - descent است.
- max_glyph_w
- حداکثر عرض گلیف، یعنی حداکثر عرض برای تمامی گلیفهای موجود در متن رندرشده
- font_a
- اندازه صعود (ascent) تعریفشده در سنجههای قلم (font metrics)
- font_d
- اندازه فرود (descent) تعریفشده در سنجههای قلم
- top_a
- حداکثر صعود گلیفهای اولین خط متن
- bottom_d
- حداکثر فرود گلیفهای آخرین خط متن
- n
- شماره فریم ورودی، شروع از 0
- rand(min, max)
- بازگرداندن یک عدد تصادفی بین min و max
- sar
- نسبت ابعاد نمونه ورودی (sample aspect ratio).
- t
- برچسب زمانی بیانشده بر حسب ثانیه، اگر برچسب زمانی ورودی ناشناخته باشد NAN است
- text_h, th
- ارتفاع متن رندرشده
- text_w, tw
- عرض متن رندرشده
- x
- y
- مختصات
آفست x و y در
جایی که متن
رسم میشود.
این پارامترها به عبارات x و y اجازه میدهند به یکدیگر ارجاع دهند، بنابراین میتوانید برای مثال "y=x/dar" را مشخص کنید.
- pict_type
- یک توصیف یکنویسهای از نوع تصویر (picture type) فریم فعلی.
- pkt_pos
- موقعیت بسته (packet) فعلی در فایل یا جریان ورودی (بر حسب بایت، از ابتدای ورودی). مقدار -1 نشان میدهد این اطلاعات در دسترس نیست.
- duration
- مدتزمان بسته فعلی، بر حسب ثانیه.
- pkt_size
- اندازه بسته فعلی (بر حسب بایت).
بسط متن (Text expansion)
اگر expansion روی "strftime" تنظیم شده باشد، فیلتر توالیهای پذیرفتهشده توسط تابع C بنام "strftime" را در متن ارائهشده شناسایی کرده و آنها را مطابق با آن بسط میدهد. مستندات "strftime" را بررسی کنید. این ویژگی به نفع بسط "normal" با توابع بسط "gmtime" یا "localtime" منسوخ شده است.
اگر expansion روی "none" تنظیم شده باشد، متن عیناً چاپ میشود.
اگر expansion روی "normal" تنظیم شده باشد (که حالت پیشفرض است)، سازوکار بسط زیر استفاده میشود.
نویسه بکاسلش \، اگر پس از آن هر نویسهای بیاید، همیشه به نویسه دوم بسط داده میشود.
توالیهایی به شکل "%{...}" بسط داده میشوند. متن بین آکولادها یک نام تابع است که احتمالاً آرگومانهایی با علامت ':' از آن جدا شدهاند. اگر آرگومانها شامل نویسههای ویژه یا جداکنندهها (':' یا '}') باشند، باید گریز داده شوند (escaped).
توجه داشته باشید که آنها احتمالاً باید هم به عنوان مقدار برای گزینه text در رشته آرگومان فیلتر و هم به عنوان آرگومان فیلتر در توصیف filtergraph، و احتمالاً برای پوسته (shell) نیز گریز داده شوند، که تا چهار سطح گریز را تشکیل میدهد؛ استفاده از یک فایل متنی با گزینه textfile از این مشکلات جلوگیری میکند.
توابع زیر در دسترس هستند:
- expr, e
- نتیجه
ارزیابی
عبارت.
باید یک آرگومان برای تعیین عبارتی که باید ارزیابی شود بپذیرد، که همان ثابتها و توابع مقادیر x و y را میپذیرد. توجه داشته باشید که همه ثابتها نباید استفاده شوند؛ برای مثال اندازه متن هنگام ارزیابی عبارت شناختهشده نیست، بنابراین ثابتهای text_w و text_h مقداری تعریفنشده خواهند داشت.
- expr_int_format, eif
- ارزیابی
مقدار
عبارت و
خروجی به
صورت عدد
صحیح
قالببندیشده.
آرگومان اول عبارتی است که باید ارزیابی شود، درست مانند تابع expr. آرگومان دوم قالب خروجی را مشخص میکند. مقادیر مجاز عبارتند از x، X، d و u. با آنها دقیقاً مانند تابع "printf" رفتار میشود. پارامتر سوم اختیاری است و تعداد موقعیتهای اشغالشده توسط خروجی را تعیین میکند. میتواند برای افزودن فاصلهگذاری با صفر (padding) از سمت چپ استفاده شود.
- gmtime
- زمان اجرای فیلتر، بیانشده بر حسب UTC. میتواند یک آرگومان بپذیرد: یک رشته قالب تابع C بنام "strftime". رشته قالب برای پشتیبانی از متغیر %[1-6]N که کسر ثانیه را با تعداد ارقام مشخص اختیاری چاپ میکند گسترش یافته است.
- localtime
- زمان اجرای فیلتر، بیانشده بر حسب منطقه زمانی محلی. میتواند یک آرگومان بپذیرد: یک رشته قالب تابع C بنام "strftime". رشته قالب برای پشتیبانی از متغیر %[1-6]N که کسر ثانیه را با تعداد ارقام مشخص اختیاری چاپ میکند گسترش یافته است.
- metadata
- متادیتای
فریم. یک یا
دو آرگومان
میگیرد.
آرگومان اول الزامی است و کلید متادیتا را مشخص میکند.
آرگومان دوم اختیاری است و یک مقدار پیشفرض را تعیین میکند که در صورت پیدا نشدن یا خالی بودن کلید متادیتا استفاده میشود.
متادیتای موجود را میتوان با بررسی ورودیهایی که با TAG در هر بخش فریم شروع میشوند و با اجرای "ffprobe -show_frames" چاپ میشوند، شناسایی کرد.
متادیتای رشتهای تولیدشده در فیلترهایی که به فیلتر drawtext منتهی میشوند نیز در دسترس هستند.
- n, frame_num
- شماره فریم، شروع از 0.
- pict_type
- توصیف یکنویسهای از نوع تصویر فعلی.
- pts
- برچسب
زمانی فریم
فعلی.
میتواند تا سه آرگومان بپذیرد.
آرگومان اول قالب برچسب زمانی است؛ پیشفرض آن "flt" برای ثانیهها به صورت عدد اعشاری با دقت میکروثانیه است؛ "hms" نشاندهنده یک برچسب زمانی قالببندیشده [-]HH:MM:SS.mmm با دقت میلیثانیه است. "gmtime" نشاندهنده برچسب زمانی فریم در قالب زمان UTC است؛ "localtime" نشاندهنده برچسب زمانی فریم در قالب زمان منطقه زمانی محلی است.
آرگومان دوم یک آفست است که به برچسب زمانی اضافه میشود.
اگر قالب روی "hms" تنظیم شده باشد، یک آرگومان سوم "24HH" ممکن است ارائه شود تا بخش ساعت برچسب زمانی قالببندیشده را در قالب 24 ساعته (00-23) نشان دهد.
اگر قالب روی "localtime" یا "gmtime" تنظیم شده باشد، ممکن است یک آرگومان سوم ارائه شود: یک رشته قالب تابع C بنام "strftime". بهطور پیشفرض، از قالب YYYY-MM-DD HH:MM:SS استفاده خواهد شد.
دستورات (Commands)
این فیلتر از تغییر پارامترها از طریق دستورات پشتیبانی میکند:
- reinit
- تغییر
پارامترهای
فیلتر
موجود.
ساختار نحوی برای آرگومان همانند فراخوانی فیلتر است، برای مثال:
fontsize=56:fontcolor=green:text='Hello World'
فراخوانی کامل فیلتر با sendcmd شبیه به این خواهد بود:
sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
اگر کل آرگومان نتواند تجزیه شده یا به عنوان مقادیر معتبر اعمال شود، فیلتر با پارامترهای موجود خود ادامه خواهد داد.
گزینههای زیر نیز به عنوان دستورات پشتیبانی میشوند:
- *<x>
- *<y>
- *<alpha>
- *<fontsize>
- *<fontcolor>
- *<boxcolor>
- *<bordercolor>
- *<shadowcolor>
- *<box>
- *<boxw>
- *<boxh>
- *<boxborderw>
- *<line_spacing>
- *<text_align>
- *<shadowx>
- *<shadowy>
- *<borderw>
مثالها (Examples)
- رسم "Test Text" با
قلم FreeSerif، با
استفاده از
مقادیر
پیشفرض
برای
پارامترهای
اختیاری.
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
- رسم 'Test Text' با
قلم FreeSerif با
اندازه 24 در
موقعیت x=100 و y=50
(شمارش از
گوشه بالا
سمت چپ
صفحه)، رنگ
متن زرد
همراه با
کادری قرمز
در اطراف آن
است. هم متن
و هم کادر
شفافیت 20٪
دارند.
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\ x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"توجه داشته باشید که اگر از فاصله درون فهرست پارامترها استفاده نشود، علامتهای نقلقول دوگانه ضروری نیستند.
- نمایش متن
در مرکز
فریم ویدیو:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
- نمایش متن
در یک
موقعیت
تصادفی، با
تغییر به یک
موقعیت
جدید در هر 30
ثانیه:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
- نمایش یک خط
متنی در حال
لغزش از
راست به چپ
در آخرین
سطر فریم
ویدیو. فرض
میشود
فایل LONG_LINE
شامل یک سطر
تکی بدون
خطوط جدید
(newline) است.
drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
- نمایش
محتوای
فایل CREDITS از
زیر فریم و
اسکرول به
سمت بالا.
drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
- رسم یک حرف
سبز تکی "g"،
در مرکز
ویدیوی
ورودی. خط
مبنای گلیف
در نصف
ارتفاع
صفحه قرار
میگیرد.
drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
- نمایش متن
به مدت 1
ثانیه در هر
3 ثانیه:
drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
- استفاده از
fontconfig برای
تنظیم قلم.
توجه داشته
باشید که
دونقطهها
باید گریز
داده شوند.
drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg'
- رسم "Test Text" با
اندازه قلم
وابسته به
ارتفاع
ویدیو.
drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
- چاپ تاریخ
یک انکود
بلادرنگ
(مستندات
تابع C بنام
"strftime" را
ببینید):
drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}' - نمایش محو
شدن و
پدیدار شدن
متن
(ظاهر/ناپدید
شدن):
#!/bin/sh DS=1.0 # display start DE=10.0 # display end FID=1.5 # fade in duration FOD=5 # fade out duration ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }" - تراز کردن
افقی چندین
متن
جداگانه.
توجه داشته
باشید که
max_glyph_a و مقدار
fontsize در آفست y
لحاظ
شدهاند.
drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a, drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
- رسم
متادیتای
ویژه lavf.image2dec.source_basename
روی هر فریم
در صورت
وجود چنین
متادیتایی.
در غیر این
صورت، رسم
رشته "NA".
توجه داشته
باشید که
دیمکسر image2
برای در
دسترس بودن
فیلدهای
متادیتای
ویژه برای
فیلترها
باید دارای
گزینه -export_path_metadata 1
باشد.
drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
برای اطلاعات بیشتر درباره libfreetype، ببینید: http://www.freetype.org.
برای اطلاعات بیشتر درباره fontconfig، ببینید: http://freedesktop.org/software/fontconfig/fontconfig-user.html.
برای اطلاعات بیشتر درباره libfribidi، ببینید: http://fribidi.org.
برای اطلاعات بیشتر درباره libharfbuzz، ببینید: https://github.com/harfbuzz/harfbuzz.
drawvg
رسم گرافیکهای برداری بر روی فریمهای ویدیو، از طریق اجرای اسکریپتی نوشتهشده به یک زبان سفارشی بنام VGS (Vector Graphics Script).
مستندات این زبان را میتوان در drawvg - Language Reference یافت. نسخهای از این مرجع همراه با مثالهای رندرشده در آدرس https://ayosec.github.io/ffmpeg-drawvg/playground/docs/langref.html در دسترس است.
گرافیکها با استفاده از https://cairographics.org رندر میشوند.
برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-cairo" پیکربندی کنید.
پارامترها (Parameters)
باید یکی از مقادیر "script" یا "file" تنظیم شود.
قالبهای پیکسلی (Pixel Formats)
از آنجا که Cairo فقط از تصاویر RGB پشتیبانی میکند، در صورتی که ویدیوی ورودی قالب دیگری داشته باشد (مانند YUV 4:2:0)، پیش از اجرای اسکریپت، ویدیو به قالبی سازگار با Cairo تبدیل میشود. سپس باید از فیلتر format یا گزینه "-pix_fmt" برای تبدیل آن به قالب مورد انتظار در خروجی استفاده نمایید.
مثالها (Examples)
- رسم خط دور
یک بیضی:
ffmpeg -i input.webm \ -vf 'drawvg=ellipse (w/2) (h/2) (w/3) (h/3) stroke' \ -pix_fmt yuv420p \ output.webm - رسم یک مربع
در حال چرخش
در وسط
فریم:
اسکریپت مربوط به drawvg در فایل "draw.vgs" قرار دارد:
translate (w/2) (h/2) rotate t rect -100 -100 200 200 setcolor red@0.5 fill
سپس:
ffmpeg -i input.webm -vf 'drawvg=file=draw.vgs,format=yuv420p' output.webm
edgedetect
تشخیص و رسم لبهها. این فیلتر از الگوریتم لبهیابی کنی (Canny Edge Detection) استفاده میکند.
این فیلتر گزینههای زیر را میپذیرد:
- low
- high
- تنظیم
مقادیر
آستانه
پایین و
بالا مورد
استفاده
توسط
الگوریتم
آستانهگذاری
Canny.
آستانه بالا پیکسلهای لبه "قوی" را انتخاب میکند، که سپس از طریق اتصال 8 جهته با پیکسلهای لبه "ضعیف" انتخابشده توسط آستانه پایین مرتبط میشوند.
مقادیر آستانه low و high باید در محدوده [0,1] انتخاب شوند، و low باید کمتر یا مساوی با high باشد.
مقدار پیشفرض برای low برابر "20/255" و مقدار پیشفرض برای high برابر "50/255" است.
- mode
- تعیین حالت رسم.
مقدار پیشفرض wires است.
- planes
- انتخاب صفحهها برای فیلتر کردن. بهطور پیشفرض تمامی صفحههای در دسترس فیلتر میشوند.
مثالها (Examples)
- لبهیابی
استاندارد
با مقادیر
سفارشی
برای
آستانهگذاری
هیسترزیس:
edgedetect=low=0.1:high=0.4
- جلوه نقاشی
بدون
آستانهگذاری:
edgedetect=mode=colormix:high=0
elbg
اعمال جلوه پوسترسازی (posterize) با استفاده از الگوریتم ELBG (Enhanced LBG).
برای هر تصویر ورودی، این فیلتر نگاشت بهینه را از ورودی به خروجی با توجه به طول کتابکد (codebook length)، یعنی تعداد رنگهای مجزای خروجی، محاسبه میکند.
این فیلتر گزینههای زیر را میپذیرد:
- codebook_length, l
- تنظیم طول کتابکد. مقدار باید یک عدد صحیح مثبت باشد و بیانگر تعداد رنگهای مجزای خروجی است. مقدار پیشفرض 256 است.
- nb_steps, n
- تنظیم حداکثر تعداد تکرارها برای محاسبه نگاشت بهینه. هرچه مقدار بیشتر باشد نتیجه بهتر و زمان محاسبات بیشتر خواهد بود. مقدار پیشفرض 1 است.
- seed, s
- تنظیم سید تصادفی، باید یک عدد صحیح در محدوده بین 0 و UINT32_MAX باشد. در صورت عدم تعیین، یا در صورت تنظیم صریح روی -1، فیلتر تلاش میکند بر مبنای بهترین تلاش از یک سید تصادفی مناسب استفاده کند.
- pal8
- تنظیم قالب پیکسلی خروجی pal8. این گزینه با طول کتابکد بزرگتر از 256 کار نمیکند. پیشفرض غیرفعال است.
- use_alpha
- گنجاندن مقادیر آلفا در محاسبات کوانتایزیشن. امکان ایجاد تصاویر خروجی پالتدار (مانند PNG8) را با ترکیب روان چندگانه آلفا فراهم میسازد.
entropy
اندازهگیری آنتروپی سطح خاکستری در هیستوگرام کانالهای رنگ فریمهای ویدیو.
این فیلتر پارامترهای زیر را میپذیرد:
- mode
- میتواند
normal یا diff
باشد.
پیشفرض normal
است.
حالت diff آنتروپی مقادیر دلتای هیستوگرام، یعنی تفاوتهای مطلق میان مقادیر هیستوگرام همسایه را اندازهگیری میکند.
epx
اعمال فیلتر بزرگنمایی EPX که برای هنر پیکسلی (pixel art) طراحی شده است.
این فیلتر گزینه زیر را میپذیرد:
- n
- تنظیم بعد مقیاسبندی: 2 برای "2xEPX"، و 3 برای "3xEPX". پیشفرض 3 است.
eq
تنظیم روشنایی، کنتراست، اشباع رنگ و تنظیم تقریبی گاما.
این فیلتر گزینههای زیر را میپذیرد:
- contrast
- تنظیم عبارت کنتراست. مقدار باید یک عدد ممیز شناور در محدوده -1000.0 تا 1000.0 باشد. مقدار پیشفرض "1" است.
- brightness
- تنظیم عبارت روشنایی. مقدار باید یک عدد ممیز شناور در محدوده -1.0 تا 1.0 باشد. مقدار پیشفرض "0" است.
- saturation
- تنظیم عبارت اشباع رنگ. مقدار باید یک عدد ممیز شناور در محدوده 0.0 تا 3.0 باشد. مقدار پیشفرض "1" است.
- gamma
- تنظیم عبارت گاما. مقدار باید یک عدد ممیز شناور در محدوده 0.1 تا 10.0 باشد. مقدار پیشفرض "1" است.
- gamma_r
- تنظیم عبارت گاما برای رنگ قرمز. مقدار باید یک عدد ممیز شناور در محدوده 0.1 تا 10.0 باشد. مقدار پیشفرض "1" است.
- gamma_g
- تنظیم عبارت گاما برای رنگ سبز. مقدار باید یک عدد ممیز شناور در محدوده 0.1 تا 10.0 باشد. مقدار پیشفرض "1" است.
- gamma_b
- تنظیم عبارت گاما برای رنگ آبی. مقدار باید یک عدد ممیز شناور در محدوده 0.1 تا 10.0 باشد. مقدار پیشفرض "1" است.
- gamma_weight
- تنظیم عبارت وزن گاما. میتواند برای کاهش اثر یک مقدار گامای بالا بر روی نواحی روشن تصویر به کار رود، برای مثال جلوگیری از بیشازحد تقویت شدن آنها و تبدیل شدن به رنگ سفید خالص. مقدار باید یک عدد ممیز شناور در محدوده 0.0 تا 1.0 باشد. مقدار 0.0 تصحیح گاما را بهطور کامل غیرفعال میکند در حالی که 1.0 آن را با قدرت کامل اعمال مینماید. پیشفرض "1" است.
- eval
- تعیین زمان
ارزیابی
عبارات
مربوط به
روشنایی،
کنتراست،
اشباع و
گاما.
مقادیر زیر را میپذیرد:
مقدار پیشفرض init است.
عبارات پارامترهای زیر را میپذیرند:
- n
- شمارنده فریم ورودی با شروع از 0
- pos
- موقعیت بایتی بسته متناظر در فایل ورودی، اگر مشخص نشده باشد NAN است؛ منسوخشده، استفاده نکنید
- r
- نرخ فریم ویدیوی ورودی، اگر نرخ فریم ورودی ناشناخته باشد NAN است
- t
- برچسب زمانی بیانشده بر حسب ثانیه، اگر برچسب زمانی ورودی ناشناخته باشد NAN است
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- contrast
- تنظیم عبارت کنتراست.
- brightness
- تنظیم عبارت روشنایی.
- saturation
- تنظیم عبارت اشباع رنگ.
- gamma
- تنظیم عبارت گاما.
- gamma_r
- تنظیم عبارت gamma_r.
- gamma_g
- تنظیم عبارت gamma_g.
- gamma_b
- تنظیم عبارت gamma_b.
- gamma_weight
- تنظیم
عبارت gamma_weight.
این دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
erosion
اعمال جلوه سایش (erosion) بر روی ویدیو.
این فیلتر هر پیکسل را با کمینه محلی (3x3) جایگزین میکند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold0
- threshold1
- threshold2
- threshold3
- محدود کردن بیشینه تغییر برای هر صفحه (plane)، پیشفرض 65535 است. اگر 0 باشد، صفحه بدون تغییر باقی میماند.
- coordinates
- پرچمی که
پیکسلهای
مورد ارجاع
را مشخص
میکند.
پیشفرض 255
است، یعنی
از تمام هشت
پیکسل
استفاده
میشود.
نگاشت پرچمها به مختصات محلی 3x3 به این صورت است:
1 2 3 4 5 6 7 8
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق بهعنوان دستورات پشتیبانی میکند.
estdif
واسازی (deinterlace) ویدیوی ورودی ("estdif" مخفف "Edge Slope Tracing Deinterlacing Filter" است).
فیلتری صرفاً مکانی (spatial) که از الگوریتم ردیابی شیب لبه برای درونیابی خطوط ناموجود استفاده میکند. این فیلتر پارامترهای زیر را میپذیرد:
- mode
- حالت درهمبافی مورد نظر. یکی از مقادیر زیر را میپذیرد:
- frame
- خروجی یک فریم به ازای هر فریم.
- field
- خروجی یک فریم به ازای هر فیلد.
مقدار پیشفرض "field" است.
- parity
- زوجیت فیلد تصویر که برای ویدیوی درهمبافته ورودی فرض میشود. یکی از مقادیر زیر را میپذیرد:
مقدار پیشفرض "auto" است. اگر درهمبافی ناشناخته باشد یا دیکودر این اطلاعات را ارائه ندهد، فیلد بالا به عنوان فیلد اول فرض خواهد شد.
- deint
- تعیین فریمهایی که باید واسازی شوند. یکی از مقادیر زیر را میپذیرد:
- all
- واسازی تمامی فریمها.
- interlaced
- تنها واسازی فریمهایی که به عنوان درهمبافته علامتگذاری شدهاند.
مقدار پیشفرض "all" است.
- rslope
- تعیین شعاع جستجو برای ردیابی شیب لبه. مقدار پیشفرض 1 است. محدوده مجاز از 1 تا 15 است.
- redge
- تعیین شعاع جستجو برای بهترین تطبیق لبه. مقدار پیشفرض 2 است. محدوده مجاز از 0 تا 15 است.
- ecost
- تعیین هزینه لبه برای تطبیق لبه. مقدار پیشفرض 2 است. محدوده مجاز از 0 تا 50 است.
- mcost
- تعیین هزینه میانی برای تطبیق لبه. مقدار پیشفرض 1 است. محدوده مجاز از 0 تا 50 است.
- dcost
- تعیین هزینه فاصله برای تطبیق لبه. مقدار پیشفرض 1 است. محدوده مجاز از 0 تا 50 است.
- interp
- تعیین درونیابی مورد استفاده. پیشفرض درونیابی 4 نقطهای است. یکی از مقادیر زیر را میپذیرد:
- 2p
- درونیابی دو نقطهای.
- 4p
- درونیابی چهار نقطهای.
- 6p
- درونیابی شش نقطهای.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها به عنوان دستورات پشتیبانی میکند.
exposure
تنظیم نوردهی (exposure) جریان ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- exposure
- تنظیم تصحیح نوردهی بر حسب EV. محدوده مجاز از -3.0 تا 3.0 EV است. مقدار پیشفرض 0 EV است.
- black
- تنظیم تصحیح سطح سیاهی (black level). محدوده مجاز از -1.0 تا 1.0 است. مقدار پیشفرض 0 است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها به عنوان دستورات پشتیبانی میکند.
extractplanes
استخراج مؤلفههای کانال رنگ از جریان ویدیوی ورودی به جریانهای ویدیویی خاکستری (grayscale) جداگانه.
این فیلتر گزینه زیر را میپذیرد:
- planes
- تنظیم
صفحه(ها)
جهت
استخراج.
مقادیر مجاز برای planes عبارتند از:
انتخاب صفحههایی که در ورودی موجود نیستند منجر به بروز خطا خواهد شد. این بدان معناست که نمیتوانید صفحههای "r"، "g"، "b" را همزمان با صفحههای "y"، "u"، "v" انتخاب نمایید.
مثالها (Examples)
- •
- استخراج
مؤلفههای
کانال رنگ
روشنایی (luma)، u
و v از فریم
ویدیوی
ورودی به 3
خروجی
خاکستری:
ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
fade
اعمال جلوه محوشدگی تدریجی (fade-in/out) به ویدیوی ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- type, t
- نوع جلوه میتواند "in" برای محوشدگی به داخل (fade-in)، یا "out" برای محوشدگی به خارج (fade-out) باشد. پیشفرض "in" است.
- start_frame, s
- تعیین شماره فریمی که اعمال جلوه محوشدگی از آن آغاز میشود. پیشفرض 0 است.
- nb_frames, n
- تعداد فریمهایی که جلوه محوشدگی طول میکشد. در پایان جلوه fade-in، ویدیوی خروجی شدت یکسانی با ویدیوی ورودی خواهد داشت. در پایان گذار fade-out، ویدیوی خروجی با color انتخابی پر خواهد شد. پیشفرض 25 است.
- alpha
- اگر روی 1 تنظیم شود، تنها کانال آلفا محو میشود (در صورتی که در ورودی وجود داشته باشد). مقدار پیشفرض 0 است.
- start_time, st
- تعیین برچسب زمانی (بر حسب ثانیه) فریمی که اعمال جلوه محوشدگی از آن آغاز میشود. اگر هر دو مقدار start_frame و start_time مشخص شوند، محوشدگی در هر کدام که دیرتر بیاید آغاز خواهد شد. پیشفرض 0 است.
- duration, d
- تعداد ثانیههایی که جلوه محوشدگی باید ادامه یابد. در پایان جلوه fade-in ویدیوی خروجی شدت یکسانی با ویدیوی ورودی خواهد داشت، در پایان گذار fade-out ویدیوی خروجی با color انتخابی پر خواهد شد. اگر هر دو پارامتر duration و nb_frames مشخص شوند، duration استفاده میشود. پیشفرض 0 است (بهطور پیشفرض از nb_frames استفاده میشود).
- color, c
- تعیین رنگ محوشدگی. پیشفرض "black" (سیاه) است.
مثالها (Examples)
- اعمال fade in بر
روی 30 فریم
اول ویدیو:
fade=in:0:30
دستور فوق معادل است با:
fade=t=in:s=0:n=30
- اعمال fade out بر
روی 45 فریم
پایانی یک
ویدیوی 200
فریمی:
fade=out:155:45 fade=type=out:start_frame=155:nb_frames=45
- اعمال fade in بر
روی 25 فریم
اول و fade out بر
روی 25 فریم
پایانی یک
ویدیوی 1000
فریمی:
fade=in:0:25, fade=out:975:25
- زرد کردن 5
فریم اول،
سپس اعمال fade in
از فریم 5 تا 24:
fade=in:5:20:color=yellow
- اعمال fade in بر
روی آلفا در
طول 25 فریم
اول ویدیو:
fade=in:0:25:alpha=1
- سیاه کردن 5.5
ثانیه اول،
سپس اعمال fade in
به مدت 0.5
ثانیه:
fade=t=in:st=5.5:d=0.5
feedback
اعمال فیلتر ویدیویی فیدبک (بازخورد).
این فیلتر فریمهای ورودی برشخورده را به خروجی دوم ارسال میکند. از آنجا میتوان آن را با سایر فیلترهای ویدیو فیلتر کرد. پس از اینکه فیلتر فریم را از ورودی دوم دریافت کرد، آن فریم روی فریم اصلی ورودی اول ترکیب شده و به خروجی اول فرستاده میشود.
کاربرد متداول آن، فیلتر کردن تنها بخشی از فریم است.
این فیلتر گزینههای زیر را میپذیرد:
مثالها (Examples)
- مات کردن
تنها بخش
مستطیلی
بالا سمت چپ
فریم ویدیو
با اندازه 100x100
با فیلتر gblur:
[in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin]
- ترسیم کادر
سیاه روی
بخش بالا
سمت چپ فریم
ویدیو با
اندازه 100x100 با
فیلتر drawbox:
[in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin]
- پیکسلی
کردن بخش
مستطیلی
فریم ویدیو
با اندازه 100x100
با فیلتر pixelize:
[in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
fftdnoiz
نویززدایی فریمها با استفاده از FFT سهبعدی (فیلترسازی در حوزه فرکانس).
این فیلتر گزینههای زیر را میپذیرد:
- sigma
- تنظیم ثابت سیگمای نویز. این گزینه قدرت نویززدایی را تعیین میکند. مقدار پیشفرض 1 است. محدوده مجاز از 0 تا 30 است. استفاده از مقدار سیگمای بسیار بالا همراه با همپوشانی کم ممکن است باعث ایجاد مصنوعات بلوکی (blocking artifacts) شود.
- amount
- تنظیم میزان نویززدایی. بهطور پیشفرض تمامی نویزهای شناساییشده کاهش مییابند. مقدار پیشفرض 1 است. محدوده مجاز از 0 تا 1 است.
- block
- تنظیم اندازه بلوک بر حسب پیکسل، پیشفرض 32 است، میتواند از 8 تا 256 باشد.
- overlap
- تنظیم همپوشانی بلوکها. پیشفرض 0.5 است. محدوده مجاز از 0.2 تا 0.8 است.
- method
- تنظیم روش نویززدایی. پیشفرض "wiener" است، همچنین میتواند "hard" باشد.
- prev
- تنظیم تعداد فریمهای پیشین مورد استفاده برای نویززدایی. بهطور پیشفرض روی 0 تنظیم شده است.
- next
- تنظیم تعداد فریمهای بعدی مورد استفاده برای نویززدایی. بهطور پیشفرض روی 0 تنظیم شده است.
- planes
- تنظیم صفحههایی که فیلتر خواهند شد، بهطور پیشفرض تمامی صفحههای موجود به جز آلفا فیلتر میشوند.
fftfilt
اعمال عبارات دلخواه بر روی نمونهها در حوزه فرکانس
- dc_Y
- تنظیم مقدار dc (بهره) صفحه روشنایی (luma) تصویر. فیلتر یک مقدار صحیح در محدوده 0 تا 1000 را میپذیرد. مقدار پیشفرض روی 0 تنظیم شده است.
- dc_U
- تنظیم مقدار dc (بهره) اولین صفحه کرومای تصویر. فیلتر یک مقدار صحیح در محدوده 0 تا 1000 را میپذیرد. مقدار پیشفرض روی 0 تنظیم شده است.
- dc_V
- تنظیم مقدار dc (بهره) دومین صفحه کرومای تصویر. فیلتر یک مقدار صحیح در محدوده 0 تا 1000 را میپذیرد. مقدار پیشفرض روی 0 تنظیم شده است.
- weight_Y
- تنظیم عبارت وزن در حوزه فرکانس برای صفحه روشنایی (luma).
- weight_U
- تنظیم عبارت وزن در حوزه فرکانس برای اولین صفحه کروما.
- weight_V
- تنظیم عبارت وزن در حوزه فرکانس برای دومین صفحه کروما.
- eval
- تعیین زمان
ارزیابی
عبارات.
مقادیر زیر را میپذیرد:
مقدار پیشفرض init است.
این فیلتر متغیرهای زیر را میپذیرد:
- X
- Y
- مختصات نمونه فعلی.
- W
- H
- عرض و ارتفاع تصویر.
- N
- شماره فریم ورودی، شروع از 0.
- WS
- HS
- اندازه آرایه FFT برای پردازش افقی و عمودی.
مثالها (Examples)
- بالاگذر (High-pass):
fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
- پایینگذر
(Low-pass):
fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
- واضحسازی
(Sharpen):
fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
- تاری (Blur):
fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
field
استخراج یک فیلد تکی از یک تصویر درهمبافته با استفاده از محاسبات گام (stride arithmetic) برای جلوگیری از هدر رفتن زمان پردازنده (CPU). فریمهای خروجی به عنوان غیر درهمبافته علامتگذاری میشوند.
این فیلتر گزینههای زیر را میپذیرد:
- type
- مشخص میکند که فیلد بالا استخراج شود (اگر مقدار 0 یا "top" باشد) یا فیلد پایین (اگر مقدار 1 یا "bottom" باشد).
fieldhint
ایجاد فریمهای جدید با کپی کردن فیلدهای بالا و پایین از فریمهای اطراف ارائهشده به عنوان اعداد توسط فایل راهنما (hint).
- hint
- تنظیم فایل
حاوی
راهنماها:
شماره
فریمهای
مطلق/نسبی.
باید به ازای هر فریم در یک کلیپ، یک سطر وجود داشته باشد. هر سطر باید حاوی دو عدد جداشده با ویرگول باشد، که احتمالاً به دنبال آنها "-" یا "+" میآید. اعداد ارائهشده در هر سطر فایل نمیتوانند خارج از [N-1,N+1] باشند که در آن N شماره فریم فعلی برای حالت "absolute" است، یا خارج از محدوده [-1, 1] برای حالت "relative". عدد اول مشخص میکند که فیلد بالا از کدام فریم برداشته شود و عدد دوم مشخص میکند که فیلد پایین از کدام فریم برداشته شود.
اگر با "+" اختیاری دنبال شود، فریم خروجی به عنوان درهمبافته علامتگذاری خواهد شد، وگرنه اگر با "-" دنبال شود، فریم خروجی به عنوان پیشرونده علامتگذاری میشود، و در غیر این صورت مانند فریم ورودی علامتگذاری خواهد شد. اگر با "t" اختیاری دنبال شود، فریم خروجی تنها از فیلد بالا استفاده میکند، یا در صورت وجود "b" تنها از فیلد پایین استفاده خواهد کرد. اگر سطری با "#" یا ";" شروع شود، آن سطر نادیده گرفته میشود.
- mode
- میتواند "absolute" یا "relative" یا "pattern" باشد. پیشفرض "absolute" است. حالت "pattern" همانند حالت "relative" است، به جز اینکه در آخرین ورودی فایل اگر فریمهای بیشتری برای پردازش وجود داشته باشند، فایل "hint" به نقطه شروع بازگردانده میشود.
مثالی از چند سطر اول فایل "hint" برای حالت "relative":
0,0 - # first frame 1,0 - # second frame, use third's frame top field and second's frame bottom field 1,0 - # third frame, use fourth's frame top field and third's frame bottom field 1,0 - 0,0 - 0,0 - 1,0 - 1,0 - 1,0 - 0,0 - 0,0 - 1,0 - 1,0 - 1,0 - 0,0 -
fieldmatch
فیلتر تطبیق فیلد برای تلهسین معکوس (inverse telecine). هدف آن بازسازی فریمهای پیشرونده (progressive) از یک جریان تلهسینشده است. این فیلتر فریمهای تکراری را حذف نمیکند، بنابراین برای دستیابی به یک تلهسین معکوس کامل، "fieldmatch" باید با یک فیلتر کاهش فریم (decimation) مانند decimate در گراف فیلتر دنبال شود.
تفکیک تطبیق فیلد و کاهش فریم عمدتاً به دلیل امکان قرار دادن یک فیلتر واسازی (de-interlacing) جایگزین (fallback) بین این دو است. اگر منبع دارای محتوای ترکیبی تلهسینشده و درهمبافته واقعی باشد، "fieldmatch" قادر به تطبیق فیلدها برای بخشهای درهمبافته نخواهد بود. اما این فریمهای شانهایشکل (combed) باقیمانده به عنوان درهمبافته علامتگذاری میشوند، و بدین ترتیب میتوانند پیش از اعمال decimation، توسط فیلتری پس از آن مانند yadif واسازی شوند.
علاوه بر گزینههای مختلف پیکربندی، "fieldmatch" میتواند یک جریان دوم اختیاری را نیز بپذیرد که از طریق گزینه ppsrc فعال میشود. در صورت فعال بودن، بازسازی فریمها بر اساس فیلدها و فریمهای این جریان دوم خواهد بود. این ویژگی امکان پیشپردازش ورودی اول را به منظور کمک به الگوریتمهای مختلف فیلتر فراهم میسازد، در حالی که خروجی بدون اتلاف باقی میماند (با فرض تطبیق مناسب فیلدها). بهطور معمول، یک نویززدای آگاه از فیلد، یا تنظیمات روشنایی/کنتراست میتوانند کمککننده باشند.
توجه داشته باشید که این فیلتر از همان الگوریتمهای TIVTC/TFM (پروژه AviSynth) و VIVTC/VFM (پروژه VapourSynth) استفاده میکند. دومی یک کلون سبک از TFM است که "fieldmatch" بر اساس آن ساخته شده است. اگرچه معناشناسی و کاربرد آنها بسیار نزدیک است، اما برخی رفتارها و نام گزینهها میتوانند متفاوت باشند.
فیلتر decimate در حال حاضر فقط برای ورودی با نرخ فریم ثابت (CFR) کار میکند. اگر ورودی شما دارای محتوای ترکیبی تلهسینشده (30fps) و پیشرونده با نرخ فریم پایینتر مانند 24fps است، از زنجیره فیلتر زیر برای تولید جریان cfr مورد نیاز استفاده کنید: "dejudder,fps=30000/1001,fieldmatch,decimate".
این فیلتر گزینههای زیر را میپذیرد:
- order
- تعیین ترتیب فیلد فرضی جریان ورودی. مقادیر موجود عبارتند از:
توجه داشته باشید که گاهی توصیه میشود به زوجیت اعلامشده توسط جریان اعتماد نکنید.
مقدار پیشفرض auto است.
- mode
- تنظیم حالت
یا راهبرد
تطبیق مورد
استفاده.
حالت pc
ایمنترین
حالت است از
این نظر که
تا حد امکان
خطر ایجاد
لرزش ناشی
از
فریمهای
تکراری را
در پی
ندارد، اما
اگر
ویرایشهای
بد یا
فیلدهای
ترکیبی (blended)
وجود داشته
باشد، در
نهایت منجر
به تولید
فریمهای
شانهای
میشود در
حالی که
ممکن است یک
تطبیق خوب
واقعاً
وجود داشته
باشد. از
سوی دیگر،
حالت pcn_ub از
نظر ایجاد
لرزش
پرخطرترین
است، اما
تقریباً
همیشه در
صورت وجود
یک فریم
خوب، آن را
خواهد یافت.
مقادیر
دیگر از نظر
خطر ایجاد
لرزش و
تولید
فریمهای
تکراری در
برابر
یافتن
تطبیقهای
خوب در
بخشهایی
با
ویرایشهای
بد،
فیلدهای
تنهاافتاده،
فیلدهای
ترکیبی و
غیره همگی
در نقطهای
میان pc و pcn_ub
قرار دارند.
جزئیات بیشتر درباره p/c/n/u/b در بخش مفهوم p/c/n/u/b در دسترس است.
مقادیر موجود عبارتند از:
- pc
- تطبیق 2 جهته (p/c)
- pc_n
- تطبیق 2 جهته، و تلاش برای تطبیق 3ام در صورت باقی ماندن حالت شانهای (p/c + n)
- pc_u
- تطبیق 2 جهته، و تلاش برای تطبیق 3ام (همان ترتیب) در صورت باقی ماندن حالت شانهای (p/c + u)
- pc_n_ub
- تطبیق 2 جهته، تلاش برای تطبیق 3ام در صورت باقی ماندن حالت شانهای، و تلاش برای تطبیقهای 4ام/5ام در صورت ادامه حالت شانهای (p/c + n + u/b)
- pcn
- تطبیق 3 جهته (p/c/n)
- pcn_ub
- تطبیق 3 جهته، و تلاش برای تطبیقهای 4ام/5ام در صورتی که هر 3 تطبیق اولیه به عنوان شانهای تشخیص داده شوند (p/c/n + u/b)
پرانتزهای انتهایی نشاندهنده تطبیقهایی هستند که با فرض order=tff (و field روی auto یا top) برای آن حالت استفاده میشوند.
از نظر سرعت، حالت pc تا حد زیادی سریعترین و pcn_ub کندترین حالت است.
مقدار پیشفرض pc_n است.
- ppsrc
- علامتگذاری
جریان
ورودی اصلی
به عنوان یک
ورودی
پیشپردازششده،
و
فعالسازی
جریان
ورودی
ثانویه به
عنوان منبع
تمیز جهت
انتخاب
فیلدها از
آن. برای
جزئیات
بیشتر به
بخش مقدمه
فیلتر
مراجعه
کنید. این
گزینه شبیه
به قابلیت
clip2 از VFM/TFM است.
مقدار پیشفرض 0 (غیرفعال) است.
- field
- تنظیم فیلدی که تطبیق از آن انجام میگیرد. توصیه میشود این گزینه روی مقداری مشابه order تنظیم شود مگر اینکه با آن تنظیم دچار شکست در تطبیق شوید. در شرایط خاص، تغییر فیلدی که تطبیق از آن صورت میگیرد میتواند تأثیر بسزایی بر کارایی تطبیق داشته باشد. مقادیر موجود عبارتند از:
مقدار پیشفرض auto است.
- mchroma
- تعیین
اینکه آیا
کروما در
طول
مقایسههای
تطبیق لحاظ
شود یا خیر.
در بیشتر
موارد
توصیه
میشود این
گزینه فعال
باقی بماند.
تنها در
صورتی باید
این گزینه
را روی 0
تنظیم کنید
که کلیپ شما
مشکلات
شدید کروما
مانند
رنگینکمانی
شدید یا
سایر
مصنوعات را
داشته باشد.
تنظیم این
مقدار روی
0
میتواند
برای بالا
بردن سرعت
به بهای از
دست رفتن
مقداری دقت
نیز
استفاده
شود.
مقدار پیشفرض 1 است.
- y0
- y1
- این گزینهها یک باند محرومیت (exclusion band) تعریف میکنند که سطرهای بین y0 و y1 را از شرکت در تصمیمگیری تطبیق فیلد مستثنی میکند. یک باند محرومیت میتواند برای نادیده گرفتن زیرنویسها، لوگو، یا سایر مواردی که ممکن است در تطبیق اختلال ایجاد کنند استفاده شود. y0 سطر اسکن شروع و y1 سطر پایان را تنظیم میکند؛ تمامی سطرهای میان y0 و y1 (شامل خود y0 و y1) نادیده گرفته خواهند شد. تنظیم y0 و y1 روی مقداری یکسان، این قابلیت را غیرفعال میکند. مقادیر پیشفرض y0 و y1 برابر 0 است.
- scthresh
- تنظیم
آستانه
تشخیص
تغییر صحنه
به عنوان
درصدی از
حداکثر
تغییر در
صفحه
روشنایی (luma).
مقادیر
مناسب در
محدوده
"[8.0, 14.0]"
قرار دارند.
تشخیص
تغییر صحنه
تنها در
صورت combmatch=sc
مرتبط است.
محدوده
مجاز برای
scthresh برابر
"[0.0, 100.0]" است.
مقدار پیشفرض 12.0 است.
- combmatch
- هنگامی که combmatch روی none نباشد، "fieldmatch" هنگام تصمیمگیری درباره انتخاب تطبیق نهایی، امتیازهای شانهای (combed scores) تطبیقها را لحاظ خواهد کرد. مقادیر موجود عبارتند از:
پیشفرض sc است.
- combdbg
- اجبار "fieldmatch" به محاسبه معیارهای شانهای برای تطبیقهای خاص و چاپ آنها. این تنظیم در واژگان TFM/VFM با عنوان micout شناخته میشود. مقادیر موجود عبارتند از:
مقدار پیشفرض none است.
- cthresh
- این آستانه
حالت
شانهای
مساحت مورد
استفاده
برای تشخیص
فریمهای
شانهای
است. این
گزینه
اساساً
کنترل
میکند که
حالت
شانهای
چقدر باید
"قوی" یا
"نمایان"
باشد تا
تشخیص داده
شود. مقادیر
بزرگتر به
این معناست
که حالت
شانهای
باید
نمایانتر
باشد و
مقادیر
کوچکتر به
این معناست
که حالت
شانهای
میتواند
کمتر
نمایان یا
قوی باشد و
همچنان
تشخیص داده
شود.
تنظیمات
معتبر از
-1 (هر
پیکسل به
عنوان
شانهای
تشخیص داده
میشود) تا
255 (هیچ
پیکسلی به
عنوان
شانهای
تشخیص داده
نمیشود)
است. این
اساساً یک
مقدار
اختلاف
پیکسلی است.
یک محدوده
مناسب "[8,
12]" است.
مقدار پیشفرض 9 است.
- chroma
- تعیین
اینکه آیا
کروما در
تصمیمگیری
فریم
شانهای
لحاظ شود یا
خیر. این
گزینه را
تنها در
صورتی
غیرفعال
کنید که
منبع شما
مشکلات
کروما
(رنگینکمانی
و غیره)
داشته باشد
که در صورت
فعال بودن
کروما باعث
بروز مشکل
در تشخیص
فریم
شانهای
شوند. در
واقع،
استفاده از
chroma=0
معمولاً
قابلاعتمادتر
است، مگر در
حالتی که در
منبع حالت
شانهای
فقط در
کروما وجود
داشته باشد.
مقدار پیشفرض 0 است.
- blockx
- blocky
- به ترتیب
اندازه
ابعاد
پنجره مورد
استفاده در
طول تشخیص
فریم
شانهای در
راستای
محور x و
محور y را
تنظیم
میکنند.
این به
اندازه
ناحیهای
مربوط
میشود که
در آن لازم
است
پیکسلهای
combpel به عنوان
شانهای
تشخیص داده
شوند تا یک
فریم به
عنوان
شانهای
اعلام شود.
برای
اطلاعات
بیشتر به
توضیحات
پارامتر combpel
مراجعه
کنید.
مقادیر
ممکن هر
عددی از
توانهای 2
است که با 4
شروع شده و
تا 512 ادامه
مییابد.
مقدار پیشفرض 16 است.
- combpel
- تعداد
پیکسلهای
شانهای
درون هر یک
از
بلوکهای
با ابعاد blocky
در blockx روی
فریم تا
فریم به
عنوان
شانهای
تشخیص داده
شود. در
حالی که cthresh
میزان
"نمایان
بودن" حالت
شانهای را
کنترل
میکند،
این تنظیم
کنترل
میکند که
"چه مقدار"
حالت
شانهای
باید در هر
ناحیه محلی
(پنجرهای
تعریفشده
توسط
تنظیمات blockx
و blocky) روی
فریم وجود
داشته باشد.
حداقل
مقدار 0
و حداکثر
مقدار "blocky x
blockx" است (که
در آن نقطه
هیچ فریمی
هرگز به
عنوان
شانهای
تشخیص داده
نخواهد شد).
این تنظیم
در واژگان TFM/VFM
با عنوان MI
شناخته
میشود.
مقدار پیشفرض 80 است.
مفهوم p/c/n/u/b
p/c/n
جریان تلهسینشده زیر را فرض میکنیم:
Top fields: 1 2 2 3 4 Bottom fields: 1 2 3 4 4
اعداد با فریم پیشروندهای که فیلدها به آن مربوط میشوند مطابقت دارند. در اینجا، دو فریم اول پیشرونده هستند، فریمهای ۳ و ۴ شانهای هستند، و به همین ترتیب.
هنگامی که "fieldmatch" پیکربندی میشود تا تطبیقی را از فیلد پایین اجرا کند (field=bottom)، این جریان ورودی به این صورت تبدیل میشود:
Input stream:
T 1 2 2 3 4
B 1 2 3 4 4 <-- matching reference
Matches: c c n n c
Output stream:
T 1 2 3 4 4
B 1 2 3 4 4
در نتیجه تطبیق فیلد، مشاهده میکنیم که برخی فریمها تکرار میشوند. برای اجرای یک تلهسین معکوس کامل، باید پس از این عملیات به یک فیلتر decimation تکیه کنید. به عنوان مثال فیلتر decimate را ببینید.
همین عملیات با تطبیق از فیلدهای بالا (field=top) به این صورت خواهد بود:
Input stream:
T 1 2 2 3 4 <-- matching reference
B 1 2 3 4 4
Matches: c c p p c
Output stream:
T 1 2 2 3 4
B 1 2 2 3 4
در این مثالها میتوانیم ببینیم که p، c و n چه مفهومی دارند؛ اساساً آنها به فریم و فیلد با زوجیت مخالف ارجاع میدهند:
- *<p با فیلد با زوجیت مخالف در فریم قبلی تطبیق مییابد>
- *<c با فیلد با زوجیت مخالف در فریم فعلی تطبیق مییابد>
- *<n با فیلد با زوجیت مخالف در فریم بعدی تطبیق مییابد>
u/b
تطبیقهای u و b از این نظر تا حدی ویژه هستند که بر اساس پرچم زوجیت مخالف تطبیق مییابند. در مثالهای زیر فرض میکنیم که در حال حاضر در حال تطبیق فریم ۲ هستیم (Top:2, bottom:2). با توجه به تطبیق، یک 'x' در بالا و پایین هر یک از فیلدهای تطبیقیافته قرار داده میشود.
با تطبیق از پایین (field=bottom):
Match: c p n b u
x x x x x
Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
x x x x x
Output frames:
2 1 2 2 2
2 2 2 1 3
با تطبیق از بالا (field=top):
Match: c p n b u
x x x x x
Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
x x x x x
Output frames:
2 2 2 1 2
2 1 3 2 2
مثالها (Examples)
تلهسین معکوس ساده برای یک جریان تلهسینشده با فیلد بالا اول:
fieldmatch=order=tff:combmatch=none, decimate
تلهسین معکوس پیشرفته، همراه با راهکار جایگزین yadif برای فریمهایی که همچنان شانهای هستند:
fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
fieldorder
تبدیل ترتیب فیلد ویدیوی ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- order
- ترتیب فیلد خروجی. مقادیر معتبر عبارتند از tff برای فیلد بالا اول یا bff برای فیلد پایین اول.
مقدار پیشفرض tff است.
این تبدیل با انتقال محتوای تصویر به اندازه یک سطر به سمت بالا یا پایین، و پر کردن سطر باقیمانده با محتوای مناسب تصویر انجام میشود. این روش با بیشتر مبدلهای ترتیب فیلد پخش تلویزیونی سازگار است.
اگر ویدیوی ورودی به عنوان درهمبافته پرچمگذاری نشده باشد، یا از پیش به عنوان دارنده ترتیب فیلد خروجی مورد نیاز پرچمگذاری شده باشد، این فیلتر تغییری در ویدیوی ورودی ایجاد نمیکند.
این ویژگی هنگام تبدیل به یا از متریال PAL DV، که فیلد پایین اول است، بسیار مفید واقع میشود.
برای مثال:
ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
fillborders
پر کردن حاشیههای ویدیوی ورودی، بدون تغییر ابعاد جریان ویدیو. گاهی اوقات ویدیو در چهار لبه ممکن است دادههای زائد و نامطلوب داشته باشد و شاید نخواهید ویدیوی ورودی را برش (crop) دهید تا اندازه تصویر مضربی از یک عدد مشخص باقی بماند.
این فیلتر گزینههای زیر را میپذیرد:
- left
- تعداد پیکسلها برای پر کردن از حاشیه چپ.
- right
- تعداد پیکسلها برای پر کردن از حاشیه راست.
- top
- تعداد پیکسلها برای پر کردن از حاشیه بالا.
- bottom
- تعداد پیکسلها برای پر کردن از حاشیه پایین.
- mode
- تنظیم حالت
پر کردن.
مقادیر زیر را میپذیرد:
- smear
- پر کردن پیکسلها با استفاده از بیرونیترین پیکسلها
- mirror
- پر کردن پیکسلها با استفاده از آینهکاری (تقارن نیمنمونه)
- fixed
- پر کردن پیکسلها با مقدار ثابت
- reflect
- پر کردن پیکسلها با استفاده از بازتاب (تقارن تمامنمونه)
- wrap
- پر کردن پیکسلها با استفاده از پیچش (wrapping)
- fade
- محو کردن پیکسلها به یک مقدار ثابت
- margins
- پر کردن پیکسلها در بالا و پایین با میانگین وزنی پیکسلهای نزدیک حاشیهها
پیشفرض smear است.
- color
- تنظیم رنگ برای پیکسلها در حالت fixed یا fade. پیشفرض black است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها به عنوان دستورات پشتیبانی میکند. دستور همان ساختار نحوی گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
find_rect
یافتن یک شیء مستطیلی در ویدیوی ورودی.
شیء مورد جستجو باید به صورت یک تصویر gray8 که با گزینه object تعیین میشود، مشخص گردد.
برای هر تطبیق ممکن، یک امتیاز محاسبه میشود. اگر امتیاز به آستانه مشخصشده برسد، شیء پیدا شده تلقی میگردد.
اگر ویدیوی ورودی حاوی چندین نمونه از آن شیء باشد، فیلتر تنها یکی از آنها را پیدا خواهد کرد.
هنگامی که یک شیء پیدا میشود، ورودیهای متادیتای زیر در فریم منطبق تنظیم میشوند:
- lavfi.rect.w
- عرض شیء
- lavfi.rect.h
- ارتفاع شیء
- lavfi.rect.x
- موقعیت x شیء
- lavfi.rect.y
- موقعیت y شیء
- lavfi.rect.score
- امتیاز تطبیق شیء یافتشده
این فیلتر گزینههای زیر را میپذیرد:
- object
- مسیر فایل تصویر شیء، باید در قالب gray8 باشد.
- threshold
- آستانه
تشخیص،
بیانشده
به صورت یک
عدد اعشاری
در محدوده 0-1.
مقدار آستانه 0.01 به معنای فقط تطبیقهای دقیق است، و آستانه 0.99 یعنی تقریباً همه چیز منطبق میشود.
مقدار پیشفرض 0.5 است.
- mipmaps
- تعداد سطوح mipmap، پیشفرض 3 است.
- xmin, ymin, xmax, ymax
- مستطیلی را که جستجو در آن انجام میشود مشخص میکند.
- discard
- دور انداختن فریمهایی که در آنها شیء تشخیص داده نشده است. پیشفرض غیرفعال است.
مثالها (Examples)
- پوشاندن یک
شیء
مستطیلی با
تصویر
ارائهشده
در یک
ویدیوی
مشخص با
استفاده از
ffmpeg:
ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
- یافتن
موقعیت یک
شیء در هر
فریم با
استفاده از
ffprobe و نوشتن
آن در یک
فایل لاگ:
ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \ -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \ -of csv -o find_rect.csv
floodfill
پر کردن سیلابی یک ناحیه با مقادیر یکسان مؤلفههای پیکسلی با مقادیری دیگر.
این فیلتر گزینههای زیر را میپذیرد:
- x
- تنظیم مختصات x پیکسل.
- y
- تنظیم مختصات y پیکسل.
- s0
- تنظیم مقدار مؤلفه مبدأ شماره 0.
- s1
- تنظیم مقدار مؤلفه مبدأ شماره 1.
- s2
- تنظیم مقدار مؤلفه مبدأ شماره 2.
- s3
- تنظیم مقدار مؤلفه مبدأ شماره 3.
- d0
- تنظیم مقدار مؤلفه مقصد شماره 0.
- d1
- تنظیم مقدار مؤلفه مقصد شماره 1.
- d2
- تنظیم مقدار مؤلفه مقصد شماره 2.
- d3
- تنظیم مقدار مؤلفه مقصد شماره 3.
format
تبدیل ویدیوی ورودی به یکی از قالبهای پیکسلی مشخصشده. Libavfilter تلاش خواهد کرد قالبی را انتخاب کند که به عنوان ورودی برای فیلتر بعدی مناسب باشد.
این فیلتر پارامترهای زیر را میپذیرد:
- pix_fmts
- فهرستی از نامهای قالب پیکسلی جداشده با '|'، مانند "pix_fmts=yuv420p|monow|rgb24".
- color_spaces
- فهرستی از نامهای فضای رنگ جداشده با '|'، مانند "color_spaces=bt709|bt470bg|bt2020nc".
- color_ranges
- فهرستی از نامهای محدوده رنگ جداشده با '|'، مانند "color_ranges=tv|pc".
- alpha_modes
- فهرستی از نامهای حالت آلفا جداشده با '|'، مانند "alpha_modes=straight|premultiplied".
مثالها (Examples)
- •
- تبدیل
ویدیوی
ورودی به
قالب yuv420p
format=pix_fmts=yuv420p
تبدیل ویدیوی ورودی به هر یک از قالبهای موجود در فهرست
format=pix_fmts=yuv420p|yuv444p|yuv410p
fps
تبدیل ویدیو به نرخ فریم ثابت مشخصشده با تکثیر یا حذف فریمها بر حسب نیاز.
این فیلتر پارامترهای زیر را میپذیرد:
- fps
- نرخ فریم خروجی مورد نظر. عبارات حاوی ثابتهای زیر را میپذیرد:
- source_fps
- نرخ فریم ورودی
- ntsc
- نرخ فریم NTSC برابر با "30000/1001"
- pal
- نرخ فریم PAL برابر با 25.0
- film
- نرخ فریم فیلم برابر با 24.0
- ntsc_film
- نرخ فریم NTSC-film برابر با "24000/1001"
پیشفرض 25 است.
- start_time
- فرض میکند نخستین PTS باید مقدار دادهشده بر حسب ثانیه باشد. این گزینه امکان پدینگ/بریدن (padding/trimming) در آغاز جریان را فراهم میکند. بهطور پیشفرض، هیچ فرضی درباره PTS مورد انتظار فریم اول در نظر گرفته نمیشود، بنابراین هیچ پدینگ یا بریدنی انجام نمیشود. برای نمونه، میتوان آن را روی 0 تنظیم کرد تا چنانچه یک جریان ویدیو پس از جریان صوتی آغاز شود، ابتدای آن با نسخههای تکراری از اولین فریم پر شود، یا هر فریمی با PTS منفی بریده شود.
- round
- روش گرد
کردن برچسب
زمانی (PTS).
مقادیر ممکن عبارتند از:
پیشفرض "near" است.
- eof_action
- عملیاتی که
هنگام
خواندن
آخرین فریم
انجام
میشود.
مقادیر ممکن عبارتند از:
پیشفرض "round" است.
به عنوان جایگزین، گزینهها را میتوان بهصورت یک رشته تخت مشخص کرد: fps[:start_time[:round]].
همچنین فیلتر setpts را ببینید.
مثالها
- یک کاربرد
معمول به
منظور
تنظیم fps روی 25:
fps=fps=25
- تنظیم fps روی
24، با
استفاده از
نام
اختصاری و
روش گرد
کردن به
نزدیکترین
مقدار:
fps=fps=film:round=near
framepack
بستهبندی دو جریان ویدیویی مختلف در یک ویدیوی استریوسکوپیک (سهبعدی)، همراه با تنظیم متادیتای مناسب روی کدکهای پشتیبانیشده. دو نما باید اندازه و نرخ فریم یکسانی داشته باشند و پردازش زمانی که ویدیوی کوتاهتر به پایان برسد متوقف خواهد شد. لطفاً توجه داشته باشید که میتوانید بهراحتی ویژگیهای نما را با فیلترهای scale و fps تنظیم نمایید.
این فیلتر پارامترهای زیر را میپذیرد:
- format
- فرمت بستهبندی مورد نظر. مقادیر پشتیبانیشده عبارتند از:
چند مثال:
# Convert left and right views into a frame-sequential video ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT # Convert views into a side-by-side video with the same output resolution as the input ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
framerate
تغییر نرخ فریم از طریق درونیابی فریمهای خروجی ویدیویی جدید از فریمهای سورس (منبع).
این فیلتر برای عملکرد صحیح با رسانههای درهمبافته (interlaced) طراحی نشده است. اگر میخواهید نرخ فریم رسانه درهمبافته را تغییر دهید، باید پیش از این فیلتر عملیات deinterlace و پس از این فیلتر عملیات re-interlace را انجام دهید.
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- fps
- تعداد فریم بر ثانیه در خروجی را تعیین میکند. این گزینه را میتوان بهصورت یک مقدار تنها نیز مشخص کرد. پیشفرض 50 است.
- interp_start
- آغاز بازهای را تعیین میکند که فریم خروجی در آن بهصورت درونیابی خطی از دو فریم ساخته میشود. بازه [0-255] است، پیشفرض 15 است.
- interp_end
- پایان بازهای را تعیین میکند که فریم خروجی در آن بهصورت درونیابی خطی از دو فریم ساخته میشود. بازه [0-255] است، پیشفرض 240 است.
- scene
- سطحی را مشخص میکند که در آن تغییر صحنه تشخیص داده میشود بهصورت مقداری بین 0 تا 100 برای نشان دادن یک صحنه جدید؛ مقدار پایین بیانگر احتمال کم فریم جاری در معرفی یک صحنه جدید است، در حالی که مقدار بالاتر به این معنی است که فریم جاری با احتمال بیشتری یک صحنه جدید است. پیشفرض 8.2 است.
- flags
- پرچمهای
تأثیرگذار
بر فرایند
فیلتر را
تعیین
میکند.
مقدار موجود برای flags عبارت است از:
- scene_change_detect, scd
- فعالسازی تشخیص تغییر صحنه با استفاده از مقدار گزینه scene. این پرچم بهطور پیشفرض فعال است.
frc_amf
دو برابر کردن نرخ فریم با استفاده از تبدیلکننده نرخ فریم (FRC) ارائهشده توسط کتابخانه AMD Advanced Media Framework جهت شتابدهی سختافزاری.
این فیلتر گزینههای زیر را میپذیرد:
- engine_type
- تعیین موتوری که برای اجرای سایهزنها (shaders) استفاده میشود.
- enable
- مقدار بولی: فعال/غیرفعالسازی FRC. مقدار پویا، میتواند در زمان اجرا بدون مقداردهی اولیه مجدد فیلتر تغییر داده شود. (مقدار پیشفرض: فعال).
- fallback_mode
- رفتار بازگشتی در صورت اطمینان پایین به درونیابی.
- duplicate
- تکرار فریم.
- blend
- ترکیب ملایم (blend) دو فریم با یکدیگر (مقدار پیشفرض).
- indicator
- مقدار بولی: نمایش مربع نشانگر FRC در گوشه بالا سمت چپ ویدیو (مقدار پیشفرض: غیرفعال).
- profile
- سطح جستجوی حرکتی سلسلهمراتبی.
- mv_search_mode
- حالت عملکردی جستجوی حرکت.
- native
- انجام جستجوی حرکت روی رزولوشن کامل تصاویر منبع.
- performance
- انجام جستجوی حرکت روی تصاویر منبع با مقیاس کاهشیافته. برای عملکرد بهتر در APU یا GPUهای ردهپایین توصیه میشود.
- use_future_frame
- مقدار بولی: فعالسازی وابستگی به فریم آینده، کیفیت را به بهای تأخیر بهبود میبخشد (مقدار پیشفرض: فعال).
framestep
انتخاب یک فریم از هر N فریم.
این فیلتر گزینه زیر را میپذیرد:
- step
- انتخاب فریم پس از هر "step" فریم. مقادیر مجاز اعداد صحیح مثبت بزرگتر از 0 هستند. مقدار پیشفرض 1 است.
freezedetect
تشخیص ویدیوی متوقفشده (فریز شده).
این فیلتر هنگامی که تشخیص دهد ویدیوی ورودی در طول مدتزمان مشخصشده هیچ تغییر قابل توجهی در محتوا نداشته است، پیامی را ثبت کرده و متادیتای فریم را تنظیم میکند. تشخیص فریز ویدیو میانگین قدر مطلق تفاوت تمامی مؤلفههای فریمهای ویدیو را محاسبه کرده و آن را با کف نوفه (noise floor) مقایسه میکند.
زمانها و مدتزمان چاپشده بر حسب ثانیه بیان میشوند. کلید متادیتای "lavfi.freezedetect.freeze_start" روی نخستین فریمی که برچسب زمانی آن برابر یا بیشتر از مدتزمان تشخیص باشد تنظیم میشود و شامل برچسب زمانی نخستین فریم فریز است. کلیدهای متادیتای "lavfi.freezedetect.freeze_duration" و "lavfi.freezedetect.freeze_end" روی نخستین فریم پس از فریز تنظیم میشوند.
این فیلتر گزینههای زیر را میپذیرد:
- noise, n
- تنظیم میزان تحمل نویز. میتواند بر حسب dB (در صورتی که "dB" به مقدار مشخصشده پیوست شده باشد) یا به عنوان نسبت تفاوت بین 0 و 1 مشخص شود. پیشفرض -60dB یا 0.001 است.
- duration, d
- تنظیم مدتزمان فریز تا زمان ارسال اعلان (پیشفرض 2 ثانیه است).
freezeframes
ثابت نگهداشتن (فریز کردن) فریمهای ویدیو.
این فیلتر فریمهای ویدیو را با استفاده از فریمی از ورودی دوم ثابت نگه میدارد.
این فیلتر گزینههای زیر را میپذیرد:
frei0r
اعمال یک جلوه (افکت) frei0r روی ویدیوی ورودی.
برای فعالسازی کامپایل این فیلتر، باید هدر frei0r را نصب کرده و FFmpeg را با "--enable-frei0r" پیکربندی کنید.
این فیلتر پارامترهای زیر را میپذیرد:
- filter_name
- نام جلوه frei0r برای بارگذاری. اگر متغیر محیطی FREI0R_PATH تعریف شده باشد، جلوه frei0r در هر یک از دایرکتوریهای مشخصشده توسط فهرست جداشده با دونقطه در FREI0R_PATH جستجو میشود. در غیر این صورت، مسیرهای استاندارد frei0r به این ترتیب جستجو میشوند: HOME/.frei0r-1/lib/، /usr/local/lib/frei0r-1/، /usr/lib/frei0r-1/.
- filter_params
- فهرستی از پارامترهای جداشده با '|' برای ارسال به جلوه frei0r.
یک پارامتر جلوه frei0r میتواند یک مقدار بولی (مقدار آن یا "y" یا "n" است)، یک عدد ممیز شناور با دقت مضاعف (double)، یک رنگ (مشخصشده بهصورت R/G/B، که در آن R، G و B اعداد ممیز شناور بین 0.0 و 1.0 شامل خود آنها هستند) یا یک شرح رنگ آنگونه که در بخش "Color" در راهنمای ffmpeg-utils مشخص شده است، یک موقعیت (مشخصشده بهصورت X/Y، که در آن X و Y اعداد ممیز شناور هستند) و/یا یک رشته باشد.
تعداد و انواع پارامترها به جلوه بارگذاریشده بستگی دارد. اگر پارامتر یک جلوه مشخص نشود، مقدار پیشفرض تنظیم میشود.
مثالها
- اعمال جلوه
distort0r، با
تنظیم دو
پارامتر
نخست از نوع
double:
frei0r=filter_name=distort0r:filter_params=0.5|0.01
- اعمال جلوه
colordistance، که یک
رنگ را به
عنوان
پارامتر
نخست
میپذیرد:
frei0r=colordistance:0.2/0.3/0.4 frei0r=colordistance:violet frei0r=colordistance:0x112233
- اعمال جلوه
perspective، با
تعیین
موقعیتهای
بالا-چپ و
بالا-راست
تصویر:
frei0r=perspective:0.2/0.2|0.8/0.2
برای اطلاعات بیشتر، ببینید: http://frei0r.dyne.org
دستورات
این فیلتر از گزینه filter_params به عنوان دستورات (commands) پشتیبانی میکند.
fspp
اعمال پسپردازش سریع و ساده. این نسخه سریعتری از spp است.
تبدیل (I)DCT را به مراحل افقی/عمودی تقسیم میکند. برخلاف فیلتر پسپردازش ساده، یکی از آنها یک بار در هر بلوک انجام میشود، نه در هر پیکسل. این امر سرعت بسیار بالاتری را فراهم میسازد.
این فیلتر گزینههای زیر را میپذیرد:
- quality
- تنظیم کیفیت. این گزینه تعداد سطوح برای میانگینگیری را تعیین میکند. یک عدد صحیح در محدوده 4-5 میپذیرد. مقدار پیشفرض 4 است.
- qp
- تحمیل یک پارامتر کوانتیزاسیون ثابت. یک عدد صحیح در محدوده 0-63 میپذیرد. در صورت عدم تنظیم، فیلتر از QP جریان ویدیو (در صورت وجود) استفاده خواهد کرد.
- strength
- تنظیم قدرت فیلتر. یک عدد صحیح در محدوده -15 تا 32 میپذیرد. مقادیر پایینتر به معنای جزئیات بیشتر اما آرتیفکتهای بیشتر است، در حالی که مقادیر بالاتر تصویر را نرمتر اما تارتر میکنند. مقدار پیشفرض 0 است − بهینه از نظر PSNR.
- use_bframe_qp
- فعالسازی استفاده از QP فریمهای B در صورت تنظیم روی 1. استفاده از این گزینه ممکن است باعث لرزش و پرش تصویر (flicker) شود زیرا فریمهای B معمولاً دارای QP بزرگتری هستند. پیشفرض 0 (غیرفعال) است.
fsync
همگامسازی فریمهای ویدیو با نگاشت خارجی از یک فایل.
به ازای هر PTS ورودیِ ارائهشده در فایل نگاشت، به تعداد لازم فریم حذف یا ایجاد میکند تا توالی فریمهای خروجی دادهشده در فایل نگاشت بازسازی شود.
این فیلتر برای بازسازی فریمهای خروجی ناشی از تبدیل نرخ فریم توسط فیلتر fps مفید است که با استفاده از گزینه "-stats_mux_pre" در ffmpeg درون یک فایل نگاشت ثبت شده باشد، و انجام پردازشهای بعدی روی فریمهای متناظر، مانند مقایسه کیفیت.
هر خط از فایل نگاشت باید شامل سه مورد به ازای هر فریم ورودی باشد: PTS ورودی (دهدهی)، PTS خروجی (دهدهی) و پایه زمانی (TIMEBASE) خروجی (دهدهی/دهدهی)، که با یک فاصله جدا شدهاند. این فرمت فایل با خروجی "-stats_mux_pre_fmt="{ptsi} {pts} {tb}"" مطابقت دارد.
این فیلتر فرض میکند فایل نگاشت بر اساس افزایش PTS ورودی مرتب شده است.
این فیلتر گزینههای زیر را میپذیرد:
- file, f
- نام فایل نگاشت مورد استفاده.
مثال:
# Convert a video to 25 fps and record a MAP_FILE file with the default format of this filter
ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT
# Sort MAP_FILE by increasing input PTS
sort -n MAP_FILE
# Use INPUT, OUTPUT and the MAP_FILE from above to compare the corresponding frames in INPUT and OUTPUT via SSIM
ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -
gblur
اعمال فیلتر ماتکننده گوسی (Gaussian blur).
این فیلتر گزینههای زیر را میپذیرد:
- sigma
- تنظیم سیگمای افقی، انحراف معیار ماتشدگی گوسی. پیشفرض 0.5 است.
- steps
- تنظیم تعداد گامها برای تقریب گوسی. پیشفرض 1 است.
- planes
- تعیین اینکه کدام پلانها فیلتر شوند. بهطور پیشفرض تمام پلانها فیلتر میشوند.
- sigmaV
- تنظیم سیگمای عمودی، اگر منفی باشد همانند "sigma" خواهد بود. پیشفرض -1 است.
دستورات
این فیلتر از دستوراتی مشابه با گزینهها پشتیبانی میکند. دستور همان نحو گزینه مربوطه را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، در مقدار فعلی خود باقی میماند.
geq
اعمال معادله عمومی بر روی هر پیکسل.
این فیلتر گزینههای زیر را میپذیرد:
- lum_expr, lum
- تنظیم عبارت لوما.
- cb_expr, cb
- تنظیم عبارت رنگمایه آبی (chrominance blue).
- cr_expr, cr
- تنظیم عبارت رنگمایه قرمز (chrominance red).
- alpha_expr, a
- تنظیم عبارت آلفا.
- red_expr, r
- تنظیم عبارت قرمز.
- green_expr, g
- تنظیم عبارت سبز.
- blue_expr, b
- تنظیم عبارت آبی.
فضای رنگی مطابق با گزینههای مشخصشده انتخاب میشود. اگر یکی از گزینههای lum_expr، cb_expr یا cr_expr مشخص شود، فیلتر بهطور خودکار یک فضای رنگی YCbCr را انتخاب خواهد کرد. اگر یکی از گزینههای red_expr، green_expr یا blue_expr مشخص شود، یک فضای رنگی RGB را انتخاب میکند.
اگر یکی از عبارات رنگمایه تعریف نشده باشد، به عبارت دیگر رجوع میکند. اگر هیچ عبارت آلفایی مشخص نشده باشد، به مقدار کدر (opaque) ارزیابی میشود. اگر هیچیک از عبارات رنگمایه مشخص نشده باشند، به عبارت لوما ارزیابی خواهند شد.
عبارات میتوانند از متغیرها و توابع زیر استفاده کنند:
- N
- شماره ترتیبی فریم فیلترشده، که از 0 آغاز میشود.
- X
- Y
- مختصات نمونه جاری.
- W
- H
- عرض و ارتفاع تصویر.
- SW
- SH
- مقیاس عرض و ارتفاع بسته به پلانی که در حال حاضر فیلتر میشود. این مقدار نسبت میان تعداد پیکسلهای پلان لومای متناظر و پلان جاری است. برای نمونه، برای YUV4:2:0 این مقادیر برای پلان لوما برابر با "1,1" و برای پلانهای کروما برابر با "0.5,0.5" هستند.
- T
- زمان فریم جاری، بیانشده بر حسب ثانیه.
- p(x, y)
- مقدار پیکسل در موقعیت (x,y) از پلان جاری را برمیگرداند.
- lum(x, y)
- مقدار پیکسل در موقعیت (x,y) از پلان لوما را برمیگرداند.
- cb(x, y)
- مقدار پیکسل در موقعیت (x,y) از پلان کرومای تفاضل آبی را برمیگرداند. در صورت عدم وجود چنین پلانی 0 برمیگرداند.
- cr(x, y)
- مقدار پیکسل در موقعیت (x,y) از پلان کرومای تفاضل قرمز را برمیگرداند. در صورت عدم وجود چنین پلانی 0 برمیگرداند.
- r(x, y)
- g(x, y)
- b(x, y)
- مقدار پیکسل در موقعیت (x,y) از مؤلفه قرمز/سبز/آبی را برمیگرداند. در صورت عدم وجود چنین مؤلفهای 0 برمیگرداند.
- alpha(x, y)
- مقدار پیکسل در موقعیت (x,y) از پلان آلفا را برمیگرداند. در صورت عدم وجود چنین پلانی 0 برمیگرداند.
- psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
- مجموع مقادیر نمونهها در مستطیل از (0,0) تا (x,y)؛ این گزینه امکان به دست آوردن مجموع نمونهها درون یک مستطیل را فراهم میسازد. توابع بدون پسوند sum را ببینید.
- interpolation
- یکی از روشهای درونیابی را تنظیم میکند:
پیشفرض bilinear است.
برای توابع، چنانچه x و y خارج از ناحیه باشند، مقدار بهطور خودکار به نزدیکترین لبه برش (clip) داده میشود.
لطفاً توجه داشته باشید که این فیلتر میتواند از چندین رشته (thread) استفاده کند که در این صورت هر برش (slice) وضعیت عبارت مخصوص به خود را خواهد داشت. اگر میخواهید تنها از یک وضعیت عبارت واحد استفاده کنید چرا که عبارات شما به وضعیت قبلی وابسته هستند، باید تعداد رشتههای فیلتر را به 1 محدود کنید.
مثالها
- معکوس کردن
افقی تصویر:
geq=p(W-X\,Y)
- تولید یک
موج سینوسی
دوبعدی، با
زاویه
"PI/3" و طول
موج 100 پیکسل:
geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
- تولید یک
نور متحرک
جذاب و
شگفتانگیز:
nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
- تولید یک
جلوه
برجستهسازی
(emboss) سریع:
format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
- تغییر
مؤلفههای
RGB بسته به
موقعیت
پیکسل:
geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
- ایجاد یک
گرادیان
شعاعی با
اندازهای
مشابه با
ورودی
(همچنین
فیلتر vignette را
ببینید):
geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
gradfun
رفع آرتیفکتهای نواریشدن (banding) که گاهی با کوتاه شدن عمق رنگ به 8 بیت در نواحی تقریباً یکدست ایجاد میشوند. گرادیانهایی که باید در محل نوارها باشند را درونیابی کرده و آنها را دیتر (dither) میکند.
این فیلتر تنها برای بازپخش طراحی شده است. از آن پیش از فشردهسازی با اتلاف استفاده نکنید، چرا که فشردهسازی تمایل به حذف دیتر و بازگرداندن نوارها دارد.
این فیلتر پارامترهای زیر را میپذیرد:
- strength
- حداکثر مقداری که فیلتر بر اساس آن هر پیکسل را تغییر میدهد. این مقدار همچنین آستانه تشخیص نواحی تقریباً یکدست است. مقادیر قابل قبول از .51 تا 64 متغیر است؛ مقدار پیشفرض 1.2 است. مقادیر خارج از محدوده به محدوده معتبر برش داده میشوند.
- radius
- محدوده همسایگی برای برازش گرادیان. یک شعاع بزرگتر گرادیانهای نرمتری ایجاد میکند، اما همچنین از تغییر پیکسلهای نزدیک به نواحی دارای جزئیات توسط فیلتر جلوگیری مینماید. مقادیر قابل قبول 8-32 هستند؛ مقدار پیشفرض 16 است. مقادیر خارج از محدوده به محدوده معتبر برش داده میشوند.
به عنوان جایگزین، گزینهها را میتوان بهصورت یک رشته تخت مشخص کرد: strength[:radius]
مثالها
- اعمال
فیلتر با
قدرت 3.5 و
شعاع 8:
gradfun=3.5:8
- مشخص کردن
شعاع، با
صرفنظر از
قدرت (که به
مقدار
پیشفرض
بازمیگردد):
gradfun=radius=8
graphmonitor
نمایش آمارهای مختلف گراف فیلتر (filtergraph).
با این فیلتر میتوان کل گراف فیلتر را اشکالزدایی کرد؛ بهویژه مشکلات مربوط به پر شدن پیوندها با فریمهای صفبندیشده.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تنظیم اندازه خروجی ویدیو. پیشفرض hd720 است.
- opacity, o
- تنظیم میزان کدری (opacity) ویدیو. پیشفرض 0.9 است. محدوده مجاز از 0 تا 1 است.
- mode, m
- تنظیم
پرچمهای
حالت خروجی.
مقادیر موجود برای پرچمها عبارتند از:
- full
- بدون هرگونه فیلترسازی. پیشفرض.
- compact
- تنها نمایش فیلترهایی که دارای فریمهای صفبندیشده هستند.
- nozero
- تنها نمایش فیلترهایی با آمارهای غیرصفر.
- noeof
- تنها نمایش فیلترهایی با وضعیت غیر-eof.
- nodisabled
- تنها نمایش فیلترهایی که در خط زمانی فعال هستند.
- flags, f
- تنظیم
پرچمهایی
که فعال
بودن نمایش
آمارها در
ویدیو را
تعیین
میکنند.
مقادیر موجود برای پرچمها عبارتند از:
- none
- تمامی پرچمها خاموش میشوند.
- all
- تمامی پرچمها روشن میشوند.
- queue
- نمایش تعداد فریمهای صفبندیشده در هر پیوند.
- frame_count_in
- نمایش تعداد فریمهای دریافت شده از فیلتر.
- frame_count_out
- نمایش تعداد فریمهای تحویل داده شده توسط فیلتر.
- frame_count_delta
- نمایش مقدار دلتای تعداد فریمها میان دو مقدار فوق.
- pts
- نمایش pts فریم فیلترشده جاری.
- pts_delta
- نمایش دلتای pts میان فریم جاری و فریم قبلی.
- time
- نمایش زمان فریم فیلترشده جاری.
- time_delta
- نمایش دلتای زمان میان فریم جاری و فریم قبلی.
- timebase
- نمایش پایه زمانی (time base) برای پیوند فیلتر.
- format
- نمایش فرمت استفادهشده برای پیوند فیلتر.
- size
- نمایش اندازه ویدیو یا تعداد کانالهای صوتی در صورت استفاده از صوت توسط پیوند فیلتر.
- rate
- نمایش نرخ فریم ویدیو یا نرخ نمونهبرداری در صورت استفاده از صوت توسط پیوند فیلتر.
- eof
- نمایش وضعیت خروجی پیوند.
- sample_count_in
- نمایش تعداد نمونههای دریافت شده از فیلتر.
- sample_count_out
- نمایش تعداد نمونههای تحویل داده شده توسط فیلتر.
- sample_count_delta
- نمایش مقدار دلتای تعداد نمونهها میان دو مقدار فوق.
- disabled
- نمایش وضعیت فیلتر در خط زمانی.
- rate, r
- تنظیم حد بالای نرخ ویدیوی جریان خروجی، مقدار پیشفرض 25 است. این گزینه تضمین میکند که نرخ فریم ویدیوی خروجی بالاتر از این مقدار نخواهد بود.
grayworld
فیلتر پایداری رنگ که تصحیح رنگ را بر اساس فرض جهان خاکستری (grayworld assumption) اعمال میکند.
این الگوریتم از نور خطی استفاده میکند، بنابراین دادههای ورودی باید از پیش خطیسازی شده باشند (و احتمالاً بهدرستی تگگذاری شوند).
ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT
greyedge
یک فیلتر دگرگونی پایداری رنگ که نورپردازی صحنه را از طریق الگوریتم لبه خاکستری تخمین زده و رنگهای صحنه را متناسب با آن تصحیح میکند.
ببینید: https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf
این فیلتر گزینههای زیر را میپذیرد:
- difford
- مرتبه مشتقگیری اعمالشده روی صحنه. باید در محدوده [0,2] انتخاب شود و مقدار پیشفرض 1 است.
- minknorm
- پارامتر مینکوفسکی مورد استفاده برای محاسبه فاصله مینکوفسکی. باید در محدوده [0,20] انتخاب شود و مقدار پیشفرض 1 است. برای دریافت مقدار بیشینه بهجای محاسبه فاصله مینکوفسکی، روی 0 تنظیم شود.
- sigma
- انحراف معیار ماتشدگی گوسی که روی صحنه اعمال میشود. باید در محدوده [0,1024.0] انتخاب شود و مقدار پیشفرض = 1 است. مقدار floor( sigma * break_off_sigma(3) ) چنانچه difford بزرگتر از 0 باشد نمیتواند برابر با 0 باشد.
مثالها
- لبه
خاکستری:
greyedge=difford=1:minknorm=5:sigma=2
- لبه بیشینه:
greyedge=difford=1:minknorm=0:sigma=2
guided
اعمال فیلتر هدایتشده برای هموارسازی با حفظ لبهها، مهزدایی و موارد دیگر.
این فیلتر گزینههای زیر را میپذیرد:
- radius
- تنظیم شعاع جعبه بر حسب پیکسل. محدوده مجاز 1 تا 20 است. پیشفرض 3 است.
- eps
- تنظیم پارامتر تنظیمسازی (regularization) (به توان دو). محدوده مجاز 0 تا 1 است. پیشفرض 0.01 است.
- mode
- تنظیم حالت فیلتر. میتواند "basic" یا "fast" باشد. پیشفرض "basic" است.
- sub
- تنظیم نسبت زیرنمونهبرداری (subsampling) برای حالت "fast". محدوده 2 تا 64 است. پیشفرض 4 است. در حالت "basic" هیچ زیرنمونهبرداری رخ نمیدهد.
- guidance
- تنظیم حالت هدایت. میتواند "off" یا "on" باشد. پیشفرض "off" است. اگر "off" باشد، یک ورودی تکی مورد نیاز است. اگر "on" باشد، دو ورودی با وضوح و فرمت پیکسل یکسان مورد نیاز است. ورودی دوم به عنوان راهنما عمل میکند.
- planes
- تنظیم پلانها برای فیلترسازی. پیشفرض تنها پلان اول است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
مثالها
- هموارسازی
با حفظ
لبهها با
استفاده از
فیلتر
هدایتشده:
ffmpeg -i in.png -vf guided out.png
- مهزدایی،
فیلترسازی
انتقال
ساختار،
ارتقای
جزئیات با
فیلتر
هدایتشده.
برای تولید
تصویر
راهنما، به
مقاله "Guided Image
Filtering" مراجعه
کنید.
ببینید:
http://kaiminghe.com/publications/pami12guidedfilter.pdf.
ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
haldclut
اعمال یک Hald CLUT روی یک جریان ویدیو.
ورودی اول جریان ویدیویی جهت پردازش است و ورودی دوم Hald CLUT میباشد. ورودی Hald CLUT میتواند یک تصویر ساده یا یک جریان ویدیویی کامل باشد.
این فیلتر گزینههای زیر را میپذیرد:
- clut
- تعیین اینکه کدام فریمهای ویدیویی CLUT از جریان ورودی دوم پردازش خواهند شد؛ میتواند first یا all باشد. پیشفرض all است.
- shortest
- اجبار به پایان یافتن هنگامی که کوتاهترین ورودی پایان یابد. پیشفرض 0 است.
- repeatlast
- ادامه اعمال آخرین CLUT پس از پایان جریان. مقدار 0 فیلتر را پس از رسیدن به آخرین فریم CLUT غیرفعال میکند. پیشفرض 1 است.
"haldclut" همچنین گزینههای درونیابی مشابه با lut3d دارد (هر دو فیلتر بخشهای داخلی مشترکی دارند).
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
اطلاعات بیشتر درباره Hald CLUT را میتوانید در وبسایت Eskil Steenberg (نویسنده Hald CLUT) به نشانی http://www.quelsolaar.com/technology/clut.html بیابید.
دستورات
این فیلتر از گزینه "interp" به عنوان دستورات (commands) پشتیبانی میکند.
مثالهای جریان کار
جریان ویدیویی Hald CLUT
تولید یک جریان یکتای Hald CLUT که با جلوههای گوناگون تغییر یافته است:
ffmpeg -f lavfi -i B<haldclutsrc>=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
نکته: اطمینان حاصل کنید که از یک کدک بدون اتلاف (lossless) استفاده میکنید.
سپس با استفاده از "haldclut" آن را روی یک جریان تصادفی اعمال کنید:
ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
فیلتر Hald CLUT بر روی ۱۰ ثانیه نخست (مدتزمان clut.nut) اعمال خواهد شد، سپس آخرین تصویر آن جریان CLUT بر روی فریمهای باقیمانده از جریان "mandelbrot" اعمال میشود.
Hald CLUT همراه با پیشنمایش
یک Hald CLUT فرض میشود تصویری مربعی به اندازه "Level*Level*Level" در "Level*Level*Level" پیکسل باشد. برای یک Hald CLUT دادهشده، FFmpeg بزرگترین مربع ممکن را با شروع از گوشه بالا سمت چپ تصویر انتخاب میکند. پیکسلهای اضافه (پدینگ) باقیمانده (پایین یا راست) نادیده گرفته خواهند شد. از این ناحیه میتوان برای افزودن پیشنمایشی از Hald CLUT استفاده کرد.
معمولاً، Hald CLUT تولیدشده زیر توسط فیلتر "haldclut" پشتیبانی خواهد شد:
ffmpeg -f lavfi -i B<haldclutsrc>=8 -vf " pad=iw+320 [padded_clut]; smptebars=s=320x256, split [a][b]; [padded_clut][a] overlay=W-320:h, curves=color_negative [main]; [main][b] overlay=W-320" -frames:v 1 clut.png
این شامل تصویر اصلی و پیشنمایشی از جلوه اثرگذار CLUT است: نوارهای رنگی SMPTE در بالا-راست نمایش داده میشوند و در زیر آن نوارهای رنگی مشابهی که با تغییرات رنگ پردازش شدهاند قرار دارند.
سپس، اثر این Hald CLUT را میتوان با دستور زیر مشاهده کرد:
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
hflip
معکوس کردن افقی ویدیوی ورودی.
برای نمونه، جهت معکوس کردن افقی ویدیوی ورودی با ffmpeg:
ffmpeg -i in.avi -vf "hflip" out.avi
histeq
این فیلتر تعدیل سراسری هیستوگرام رنگی را بهصورت فریمبهفریم اعمال میکند.
میتواند برای تصحیح ویدیویی که دارای دامنه فشردهای از شدتهای پیکسل است استفاده شود. فیلتر شدتهای پیکسل را مجدداً توزیع میکند تا توزیع آنها در سرتاسر دامنه شدت تعدیل و یکدست شود. میتوان آن را به عنوان یک "فیلتر کنتراست با تنظیم خودکار" در نظر گرفت. این فیلتر تنها برای تصحیح ویدیوی سورس آسیبدیده یا ضبطشده با کیفیت نامناسب کاربرد دارد.
این فیلتر گزینههای زیر را میپذیرد:
- strength
- تعیین میزان تعدیل اعمالشونده. با کاهش قدرت، توزیع شدتهای پیکسل بیشتر و بیشتر به فریم ورودی نزدیک میشود. مقدار باید یک عدد ممیز شناور در محدوده [0,1] باشد و پیشفرض آن 0.200 است.
- intensity
- تنظیم حداکثر شدتی که میتواند تولید شود و مقیاسبندی مناسب مقادیر خروجی. قدرت باید بر حسب نیاز تنظیم شود و سپس در صورت لزوم شدت محدود گردد تا از رنگپریدگی (washing-out) جلوگیری شود. مقدار باید یک عدد ممیز شناور در محدوده [0,1] باشد و پیشفرض آن 0.210 است.
- antibanding
- تنظیم سطح ضد نواریشدن (antibanding). در صورت فعال بودن، فیلتر روشنایی پیکسلهای خروجی را به مقدار اندکی بهصورت تصادفی تغییر میدهد تا از نواریشدن هیستوگرام جلوگیری شود. مقادیر ممکن عبارتند از "none"، "weak" یا "strong". پیشفرض "none" است.
histogram
محاسبه و ترسیم هیستوگرام توزیع رنگ برای ویدیوی ورودی.
هیستوگرام محاسبهشده، نمایشی از توزیع مؤلفههای رنگ در یک تصویر است.
هیستوگرام استاندارد توزیع مؤلفههای رنگ را در یک تصویر نمایش میدهد. نمودار رنگی را برای هر مؤلفه رنگ نمایش میدهد. توزیع مؤلفههای Y، U، V، A یا R، G، B را بسته به فرمت ورودی در فریم جاری نشان میدهد. زیر هر نمودار یک مقیاسسنج مؤلفه رنگ نمایش داده میشود.
این فیلتر گزینههای زیر را میپذیرد:
- level_height
- تنظیم ارتفاع سطح. مقدار پیشفرض 200 است. محدوده مجاز [50, 2048] است.
- scale_height
- تنظیم ارتفاع مقیاس رنگ. مقدار پیشفرض 12 است. محدوده مجاز [0, 40] است.
- display_mode
- تنظیم حالت نمایش. مقادیر زیر را میپذیرد:
پیشفرض "stack" است.
- levels_mode
- تنظیم حالت سطوح. میتواند "linear" یا "logarithmic" باشد. پیشفرض "linear" است.
- components
- تنظیم اینکه کدام مؤلفههای رنگ نمایش داده شوند. پیشفرض 7 است.
- fgopacity
- تنظیم میزان کدری پیشزمینه. پیشفرض 0.7 است.
- bgopacity
- تنظیم میزان کدری پسزمینه. پیشفرض 0.5 است.
- colors_mode
- تنظیم حالت رنگها. مقادیر زیر را میپذیرد:
پیشفرض "whiteonblack" است.
مثالها
- •
- محاسبه و
ترسیم
هیستوگرام:
ffplay -i input -vf histogram
hqdn3d
این یک فیلتر کاهش نوفه (نویززدایی) سهبعدی با کیفیت/دقت بالا است. هدف آن کاهش نویز تصویر، تولید تصاویر نرم و بیحرکت ساختن واقعی تصاویر ثابت است. این فیلتر باید قابلیت فشردهسازی را بهبود بخشد.
این فیلتر پارامترهای اختیاری زیر را میپذیرد:
- luma_spatial
- یک عدد ممیز شناور نامنفی که قدرت مکانی لوما را تعیین میکند. پیشفرض آن 4.0 است.
- chroma_spatial
- یک عدد ممیز شناور نامنفی که قدرت مکانی کروما را تعیین میکند. پیشفرض آن 3.0*luma_spatial/4.0 است.
- luma_tmp
- یک عدد ممیز شناور که قدرت زمانی لوما را تعیین میکند. پیشفرض آن 6.0*luma_spatial/4.0 است.
- chroma_tmp
- یک عدد ممیز شناور که قدرت زمانی کروما را تعیین میکند. پیشفرض آن luma_tmp*chroma_spatial/luma_spatial است.
دستورات
این فیلتر از دستوراتی (commands) مشابه با گزینهها پشتیبانی میکند. دستور همان نحو گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، در مقدار فعلی خود باقی میماند.
hwdownload
دانلود فریمهای سختافزاری به حافظه سیستم.
ورودی باید بهصورت فریمهای سختافزاری و خروجی یک فرمت غیر سختافزاری باشد. همه فرمتها در خروجی پشتیبانی نخواهند شد - ممکن است لازم باشد بلافاصله پس از آن در گراف یک فیلتر format اضافی درج شود تا خروجی در یک فرمت پشتیبانیشده به دست آید.
hwmap
نگاشت فریمهای سختافزاری به حافظه سیستم یا به دستگاهی دیگر.
این فیلتر چندین حالت عملکردی مختلف دارد؛ اینکه کدامیک استفاده شود به فرمتهای ورودی و خروجی بستگی دارد:
- ورودی فریم
سختافزاری،
خروجی فریم
عادی
فریمهای ورودی را به حافظه سیستم نگاشت کرده و آنها را به خروجی ارسال میکند. اگر فریم سختافزاری اصلی بعداً مورد نیاز باشد (برای مثال، پس از قرار دادن لایه روی بخشی از آن)، فیلتر hwmap میتواند مجدداً در حالت بعدی برای بازیابی آن استفاده شود.
- ورودی فریم
عادی،
خروجی فریم
سختافزاری
اگر ورودی در واقع یک فریم سختافزاری نگاشتشده با نرمافزار باشد، آن را لغو نگاشت (unmap) میکند - یعنی فریم سختافزاری اصلی را بازمیگرداند.
در غیر این صورت، باید یک دستگاه مشخص شود. ایجاد سطوح سختافزاری جدید بر روی آن دستگاه برای خروجی، سپس نگاشت مجدد آنها به فرمت نرمافزاری در ورودی و ارسال آن فریمها به فیلتر قبلی. این عمل سپس شبیه فیلتر hwupload رفتار خواهد کرد، اما ممکن است زمانی که ورودی از قبل در یک فرمت سازگار باشد بتواند از یک کپی اضافی جلوگیری نماید.
- ورودی و
خروجی فریم
سختافزاری
باید دستگاهی برای خروجی عرضه شود، خواه بهطور مستقیم یا با گزینه derive_device. دستگاههای ورودی و خروجی باید از انواع متفاوتی بوده و سازگار باشند - معنای دقیق این امر وابسته به سیستم است، اما معمولاً به این معنی است که آنها باید به همان زمینه سختافزاری زیرین ارجاع دهند (برای نمونه، به همان کارت گرافیک اشاره داشته باشند).
اگر فریمهای ورودی در ابتدا روی دستگاه خروجی ایجاد شده بودند، برای بازیابی فریمهای اصلی لغو نگاشت انجام دهید.
در غیر این صورت، فریمها را به دستگاه خروجی نگاشت کنید - فریمهای سختافزاری جدیدی روی خروجی متناظر با فریمهای ورودی ایجاد کنید.
پارامترهای اضافی زیر پذیرفته میشوند:
- mode
- تنظیم حالت نگاشت فریم. ترکیبی از:
- read
- فریم نگاشتشده باید قابل خواندن باشد.
- write
- فریم نگاشتشده باید قابل نوشتن باشد.
- overwrite
- نگاشت
همیشه کل
فریم را
بازنویسی
خواهد کرد.
این ممکن است در برخی موارد عملکرد را بهبود بخشد، زیرا نیازی به بارگذاری محتویات اصلی فریم نیست.
- direct
- نگاشت
نباید
هیچگونه
کپیبرداری
را شامل
شود.
نگاشتهای غیرمستقیم به کپیهایی از فریمها در مواردی ایجاد میشوند که یا نگاشت مستقیم ممکن نیست یا ویژگیهای غیرمنتظرهای دارد. تنظیم این پرچم تضمین میکند که نگاشت بهصورت مستقیم باشد و اگر این امکانپذیر نباشد با شکست مواجه میشود.
در صورت عدم تعیین، پیشفرض read+write است.
- derive_device type
- بهجای استفاده از دستگاه ارائهشده هنگام مقداردهی اولیه، یک دستگاه جدید از نوع type را از دستگاهی که فریمهای ورودی روی آن قرار دارند مشتق میکند.
- reverse
- در نگاشت
سختافزار
به
سختافزار،
نگاشت
بهصورت
معکوس
انجام شود -
فریمها در
مقصد (sink)
ایجاد شده و
به مبدا
بازگردانده
شوند. این
ممکن است در
برخی موارد
لازم باشد
که نگاشت در
یک جهت مورد
نیاز است
اما تنها
جهت مخالف
توسط
دستگاههای
مورد
استفاده
پشتیبانی
میشود.
این گزینه خطرناک است - در صورتی که هرگونه محدودیت اضافی روی خروجی فیلتر قبلی وجود داشته باشد، ممکن است آن فیلتر را به روشهای تعریفنشدهای خراب کند. بدون درک کامل پیامدهای استفاده از آن، از این گزینه استفاده نکنید.
hwupload
بارگذاری فریمهای حافظه سیستم بر روی سطوح سختافزاری.
دستگاه مورد نظر برای بارگذاری باید هنگام مقداردهی اولیه فیلتر مشخص شود. در صورت استفاده از ffmpeg، دستگاه مناسب را با گزینه -filter_hw_device یا گزینه derive_device انتخاب کنید. دستگاههای ورودی و خروجی باید از انواع متفاوتی بوده و سازگار باشند - معنای دقیق این وابسته به سیستم است، اما معمولاً به این معنی است که آنها باید به همان زمینه سختافزاری زیرین ارجاع دهند (برای نمونه، به همان کارت گرافیک اشاره داشته باشند).
پارامترهای اضافی زیر پذیرفته میشوند:
- derive_device type
- بهجای استفاده از دستگاه ارائهشده هنگام مقداردهی اولیه، یک دستگاه جدید از نوع type را از دستگاهی که فریمهای ورودی روی آن قرار دارند مشتق میکند.
hwupload_cuda
بارگذاری فریمهای حافظه سیستم بر روی یک دستگاه CUDA.
پارامترهای اختیاری زیر را میپذیرد:
- device
- شماره دستگاه CUDA جهت استفاده
hqx
اعمال یک فیلتر بزرگنمایی با کیفیت بالا که برای هنر پیکسلی (pixel art) طراحی شده است. این فیلتر در اصل توسط Maxim Stepin ایجاد شد.
این فیلتر گزینه زیر را میپذیرد:
- n
- تنظیم بعد مقیاسبندی: 2 برای "hq2x"، 3 برای "hq3x" و 4 برای "hq4x". پیشفرض 3 است.
hstack
چیدن افقی (کنار هم قرار دادن) ویدیوهای ورودی.
تمامی جریانها باید دارای فرمت پیکسلی یکسان و ارتفاع یکسان باشند.
توجه داشته باشید که این فیلتر سریعتر از استفاده از فیلترهای overlay و pad برای ایجاد همان خروجی است.
این فیلتر گزینههای زیر را میپذیرد:
hsvhold
تبدیل یک محدوده مشخص HSV به مقادیر خاکستری.
این فیلتر تفاوت رنگ میان رنگ HSV تنظیمشده در گزینهها و رنگهای اندازهگیریشده در جریان ویدیو را اندازه میگیرد. بسته به گزینهها، رنگهای خروجی را میتوان به خاکستری تغییر داد یا خیر.
این فیلتر گزینههای زیر را میپذیرد:
- hue
- تنظیم مقدار فام که در محاسبه تفاوت رنگ استفاده خواهد شد. محدوده مجاز از -360 تا 360 است. مقدار پیشفرض 0 است.
- sat
- تنظیم مقدار اشباع که در محاسبه تفاوت رنگ استفاده خواهد شد. محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 0 است.
- val
- تنظیم مقدار روشنایی (value) که در محاسبه تفاوت رنگ استفاده خواهد شد. محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 0 است.
- similarity
- تنظیم درصد
شباهت با
رنگ کلیدی.
محدوده
مجاز از 0 تا 1
است. مقدار
پیشفرض 0.01
است.
مقدار 0.00001 تنها دقیقاً با رنگ کلیدی تطابق دارد، در حالی که 1.0 با همه چیز مطابقت پیدا میکند.
- blend
- درصد ترکیب
(blend). محدوده
مجاز از 0 تا 1
است. مقدار
پیشفرض 0
است.
مقدار 0.0 باعث میشود پیکسلها یا کاملاً خاکستری باشند یا اصلاً خاکستری نباشند.
مقادیر بالاتر منجر به پیکسلهای خاکستری بیشتری میشوند، به طوری که هرچه رنگ پیکسلها به رنگ کلیدی شبیهتر باشد، پیکسل خاکستریتر خواهد بود.
hsvkey
تبدیل یک محدوده مشخص HSV به شفافیت.
این فیلتر تفاوت رنگ میان رنگ HSV تنظیمشده در گزینهها و رنگهای اندازهگیریشده در جریان ویدیو را اندازه میگیرد. بسته به گزینهها، رنگهای خروجی را میتوان با افزودن کانال آلفا به شفاف تغییر داد.
این فیلتر گزینههای زیر را میپذیرد:
- hue
- تنظیم مقدار فام که در محاسبه تفاوت رنگ استفاده خواهد شد. محدوده مجاز از -360 تا 360 است. مقدار پیشفرض 0 است.
- sat
- تنظیم مقدار اشباع که در محاسبه تفاوت رنگ استفاده خواهد شد. محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 0 است.
- val
- تنظیم مقدار روشنایی که در محاسبه تفاوت رنگ استفاده خواهد شد. محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 0 است.
- similarity
- تنظیم درصد
شباهت با
رنگ کلیدی.
محدوده
مجاز از 0 تا 1
است. مقدار
پیشفرض 0.01
است.
مقدار 0.00001 تنها دقیقاً با رنگ کلیدی تطابق دارد، در حالی که 1.0 با همه چیز مطابقت پیدا میکند.
- blend
- درصد ترکیب.
محدوده
مجاز از 0 تا 1
است. مقدار
پیشفرض 0
است.
مقدار 0.0 باعث میشود پیکسلها یا کاملاً شفاف باشند یا اصلاً شفاف نباشند.
مقادیر بالاتر منجر به پیکسلهای نیمهشفاف میشوند، به طوری که هرچه رنگ پیکسلها به رنگ کلیدی شبیهتر باشد، شفافیت بیشتر خواهد بود.
hue
تغییر دادن فام و/یا اشباع ورودی.
پارامترهای زیر را میپذیرد:
- h
- زاویه فام را بر حسب درجه مشخص میکند. یک عبارت را میپذیرد و پیشفرض آن "0" است.
- s
- اشباع را در محدوده [-10,10] مشخص میکند. یک عبارت را میپذیرد و پیشفرض آن "1" است.
- H
- زاویه فام را بر حسب رادیان مشخص میکند. یک عبارت را میپذیرد و پیشفرض آن "0" است.
- b
- روشنایی (brightness) را در محدوده [-10,10] مشخص میکند. یک عبارت را میپذیرد و پیشفرض آن "0" است.
گزینههای h و H مانعةالجمع هستند و نمیتوان آنها را همزمان مشخص کرد.
مقادیر گزینههای b، h، H و s عباراتی حاوی ثابتهای زیر هستند:
- n
- شمارش فریم ورودی با شروع از 0
- pts
- برچسب زمانی نمایش فریم ورودی بیانشده در واحدهای پایه زمانی
- r
- نرخ فریم ویدیوی ورودی، NAN در صورتی که نرخ فریم ورودی نامشخص باشد
- t
- برچسب زمانی بیانشده بر حسب ثانیه، NAN در صورتی که برچسب زمانی ورودی نامشخص باشد
- tb
- پایه زمانی ویدیوی ورودی
مثالها
- تنظیم فام
روی 90 درجه و
اشباع روی 1.0:
hue=h=90:s=1
- همان دستور
اما با بیان
فام بر حسب
رادیان:
hue=H=PI/2:s=1
- چرخاندن
فام و نوسان
دادن اشباع
میان 0 و 2 در
طول
مدتزمان 1
ثانیه:
hue="H=2*PI*t: s=sin(2*PI*t)+1"
- اعمال یک
جلوه محو
شدن تدریجی
(fade-in) اشباع ۳
ثانیهای
با شروع از 0:
hue="s=min(t/3\,1)"
عبارت کلی fade-in را میتوان بهصورت زیر نوشت:
hue="s=min(0\, max((t-START)/DURATION\, 1))"
- اعمال یک
جلوه
ناپدید شدن
تدریجی (fade-out)
اشباع ۳
ثانیهای
با شروع از
ثانیه ۵:
hue="s=max(0\, min(1\, (8-t)/3))"
عبارت کلی fade-out را میتوان بهصورت زیر نوشت:
hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
huesaturation
اعمال تنظیمات فام-اشباع-شدت روی جریان ویدیوی ورودی.
این فیلتر در فضای رنگی RGB عمل میکند.
این فیلتر گزینههای زیر را میپذیرد:
- hue
- تنظیم میزان جابجایی فام بر حسب درجه برای اعمال. پیشفرض 0 است. محدوده مجاز از -180 تا 180 است.
- saturation
- تنظیم میزان جابجایی اشباع. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- intensity
- تنظیم میزان جابجایی شدت. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است.
- colors
- تعیین اینکه کدام رنگهای اصلی و مکمل تنظیم خواهند شد. این گزینه با ارائه یک یا چند مقدار تنظیم میشود. این میتواند چندین رنگ را بهطور همزمان انتخاب کند. بهطور پیشفرض تمام رنگها انتخاب شدهاند.
- strength
- تنظیم قدرت فیلترسازی. محدوده مجاز از 0 تا 100 است. مقدار پیشفرض 1 است.
- rw, gw, bw
- تنظیم وزن برای هر مؤلفه RGB. محدوده مجاز از 0 تا 1 است. بهطور پیشفرض روی 0.333، 0.334، 0.333 تنظیم شده است. این گزینهها در پردازش اشباع و روشنایی استفاده میشوند.
- lightness
- تنظیم حفظ روشنایی؛ بهطور پیشفرض غیرفعال است. تنظیم فامها میتواند روشنایی را نسبت به سهگانه اصلی RGB تغییر دهد، با فعال بودن این گزینه روشنایی در همان مقدار حفظ میشود.
hysteresis
رشد دادن جریان اول درون جریان دوم با متصل کردن مؤلفهها. این امر امکان ساخت ماسکهای لبه پایدارتر و مستحکمتر را فراهم میسازد.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تعیین اینکه کدام پلانها بهصورت تصویر بیتی (bitmap) پردازش خواهند شد؛ پلانهای پردازشنشده از جریان اول کپی میشوند. بهطور پیشفرض با مقدار 0xf، تمام پلانها پردازش خواهند شد.
- threshold
- تنظیم آستانه مورد استفاده در فیلترسازی. اگر مقدار مؤلفه پیکسل بالاتر از این مقدار باشد، الگوریتم فیلتر برای اتصال مؤلفهها فعال میشود. مقدار پیشفرض 0 است.
فیلتر "hysteresis" همچنین از گزینههای framesync پشتیبانی میکند.
iccdetect
تشخیص فضای رنگی از روی یک پروفایل ICC جاسازیشده (در صورت وجود)، و بهروزرسانی متناظر برچسبهای (تگهای) فریم.
این فیلتر گزینههای زیر را میپذیرد:
- force
- در صورت درست بودن (true)، تگهای فضای رنگی موجود در فریم همواره با مقادیر تشخیص داده شده از یک پروفایل ICC بازنویسی میشوند. در غیر این صورت، تنها زمانی تخصیص داده میشوند که حاوی "unknown" باشند. بهطور پیشفرض فعال است.
iccgen
تولید پروفایلهای ICC و پیوست کردن آنها به فریمها.
این فیلتر گزینههای زیر را میپذیرد:
- color_primaries
- color_trc
- پیکربندی
فضای رنگی
که پروفایل
ICC برای آن
تولید
خواهد شد.
مقدار
پیشفرض
"auto" این
مقدار را از
متادیتای
فریم ورودی
استنتاج
میکند، که
بر حسب مورد
بهطور
پیشفرض BT.709/sRGB
در نظر
گرفته
میشود.
فیلتر setparams را برای فهرستی از مقادیر ممکن مشاهده کنید، اما توجه داشته باشید که "unknown" برای این فیلتر یک مقدار معتبر به شمار نمیرود.
- force
- در صورت درست بودن (true)، یک پروفایل ICC حتی اگر یک پروفایل ICC از پیش موجود را بازنویسی کند، تولید خواهد شد. بهطور پیشفرض غیرفعال است.
identity
به دست آوردن امتیاز همانی (identity score) میان دو ویدیوی ورودی.
این فیلتر دو ویدیوی ورودی میگیرد.
هر دو ویدیوی ورودی باید رزولوشن و فرمت پیکسلی یکسانی داشته باشند تا این فیلتر بهدرستی کار کند. همچنین فرض میشود که هر دو ورودی تعداد فریم یکسانی دارند که تکبهتک با یکدیگر مقایسه میشوند.
امتیاز همانی به دست آمده به ازای هر مؤلفه، میانگین، کمینه و بیشینه از طریق سیستم لاگ چاپ میشود.
این فیلتر امتیازهای همانی محاسبهشده برای هر فریم را در متادیتای فریم ذخیره میکند.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
در مثال زیر، فایل ورودی main.mpg در حال پردازش با فایل مرجع ref.mpg مقایسه میشود.
ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -
idet
تشخیص نوع درهمبافتگی (interlacing) ویدیو.
این فیلتر تلاش میکند تشخیص دهد که آیا فریمهای ورودی درهمبافته (interlaced)، پیشرونده (progressive)، فیلد بالا اول (top field first) یا فیلد پایین اول (bottom field first) هستند. همچنین تلاش میکند فیلدهایی که میان فریمهای مجاور تکرار شدهاند (نشانهای از تلهسینه) را تشخیص دهد.
تشخیص تکفریمی تنها فریمهای بلافاصله مجاور را هنگام طبقهبندی هر فریم در نظر میگیرد. تشخیص چندفریمی تاریخچه طبقهبندی فریمهای قبلی را در بر میگیرد.
این فیلتر این مقادیر متادیتا را در لاگ ثبت خواهد کرد:
- single.current_frame
- نوع فریم جاری تشخیص داده شده با استفاده از تشخیص تکفریمی. یکی از موارد: ``tff'' (فیلد بالا اول)، ``bff'' (فیلد پایین اول)، ``progressive''، یا ``undetermined''
- single.tff
- تعداد تجمعی فریمهای تشخیص داده شده به عنوان فیلد بالا اول با استفاده از تشخیص تکفریمی.
- multiple.tff
- تعداد تجمعی فریمهای تشخیص داده شده به عنوان فیلد بالا اول با استفاده از تشخیص چندفریمی.
- single.bff
- تعداد تجمعی فریمهای تشخیص داده شده به عنوان فیلد پایین اول با استفاده از تشخیص تکفریمی.
- multiple.current_frame
- نوع فریم جاری تشخیص داده شده با استفاده از تشخیص چندفریمی. یکی از موارد: ``tff'' (فیلد بالا اول)، ``bff'' (فیلد پایین اول)، ``progressive''، یا ``undetermined''
- multiple.bff
- تعداد تجمعی فریمهای تشخیص داده شده به عنوان فیلد پایین اول با استفاده از تشخیص چندفریمی.
- single.progressive
- تعداد تجمعی فریمهای تشخیص داده شده به عنوان progressive با استفاده از تشخیص تکفریمی.
- multiple.progressive
- تعداد تجمعی فریمهای تشخیص داده شده به عنوان progressive با استفاده از تشخیص چندفریمی.
- single.undetermined
- تعداد تجمعی فریمهایی که با استفاده از تشخیص تکفریمی قابل طبقهبندی نبودند.
- multiple.undetermined
- تعداد تجمعی فریمهایی که با استفاده از تشخیص چندفریمی قابل طبقهبندی نبودند.
- repeated.current_frame
- کدام فیلد در فریم جاری نسبت به فریم قبلی تکرار شده است. یکی از موارد ``neither''، ``top''، یا ``bottom''.
- repeated.neither
- تعداد تجمعی فریمهای بدون فیلد تکراری.
- repeated.top
- تعداد تجمعی فریمهایی که فیلد بالای آنها از فیلد بالای فریم قبلی تکرار شده است.
- repeated.bottom
- تعداد تجمعی فریمهایی که فیلد پایین آنها از فیلد پایین فریم قبلی تکرار شده است.
این فیلتر گزینههای زیر را میپذیرد:
- intl_thres
- تنظیم آستانه درهمبافتگی.
- prog_thres
- تنظیم آستانه پیشرونده.
- rep_thres
- آستانه تشخیص فیلد تکراری.
- half_life
- تعداد فریمهایی که پس از آن سهم یک فریم مشخص در آمار نصف میشود (یعنی تنها 0.5 در طبقهبندی خود سهم خواهد داشت). پیشفرض 0 به این معناست که به تمام فریمهای دیدهشده وزن کامل 1.0 برای همیشه داده میشود.
- analyze_interlaced_flag
- هنگامی که این مقدار 0 نباشد، idet از تعداد فریمهای مشخصشده برای تعیین اینکه آیا پرچم درهمبافتگی دقیق است یا خیر استفاده میکند؛ فریمهای نامشخص شمرده نخواهند شد. اگر پرچم دقیق تشخیص داده شود، بدون هیچگونه محاسبات بیشتر استفاده خواهد شد، و چنانچه نادرست تشخیص داده شود، بدون هیچگونه محاسبات بیشتر پاک خواهد شد. این امکان، درج فیلتر idet را به عنوان روشی با بار محاسباتی کم جهت پاکسازی پرچم درهمبافتگی فراهم میسازد.
مثالها
بررسی ترتیب فیلدهای ۳۶۰ فریم نخست در یک ویدیو با جزئیات کامل:
ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -
فیلتر idet متادیتای تجزیهوتحلیل را به هر فریم اضافه میکند که سپس دور ریخته خواهد شد. در پایان، فیلتر همچنین یک گزارش نهایی همراه با آمار چاپ خواهد کرد.
il
جداسازی فیلدها (deinterleave) یا درهمآمیزی فیلدها (interleave).
این فیلتر امکان پردازش فیلدهای تصاویر درهمبافته را بدون انجام deinterlace بر روی آنها فراهم میکند. جداسازی فیلدها فریم ورودی را به ۲ فیلد (به اصطلاح نیمتصویر) تقسیم مینماید. خطوط فرد به نیمه بالایی تصویر خروجی و خطوط زوج به نیمه پایینی منتقل میشوند. میتوانید آنها را بهطور مستقل پردازش (فیلتر) کرده و سپس مجدداً درهم بیامیزید (re-interleave کنید).
این فیلتر گزینههای زیر را میپذیرد:
- luma_mode, l
- chroma_mode, c
- alpha_mode, a
- مقادیر موجود برای luma_mode، chroma_mode و alpha_mode عبارتند از:
- none
- هیچ کاری انجام نده.
- deinterleave, d
- جداسازی فیلدها، با قرار دادن یکی بالای دیگری.
- interleave, i
- درهمآمیزی فیلدها. معکوس کردن اثر جداسازی.
مقدار پیشفرض "none" است.
- luma_swap, ls
- chroma_swap, cs
- alpha_swap, as
- تعویض فیلدهای لوما/کروما/آلفا. جابجایی خطوط زوج و فرد. مقدار پیشفرض 0 است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
inflate
اعمال جلوه اتساع (بادکردن) روی ویدیو.
این فیلتر پیکسل را با میانگین محلی (3x3) تنها با در نظر گرفتن مقادیر بالاتر از پیکسل جایگزین میکند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold0
- threshold1
- threshold2
- threshold3
- محدود کردن حداکثر تغییر برای هر پلان، پیشفرض 65535 است. اگر 0 باشد، پلان بدون تغییر باقی خواهد ماند.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
interlace, interlace_vulkan
فیلتر درهمبافتن ساده از روی محتوای پیشرونده (progressive). این فیلتر خطوط بالایی (یا پایینی) فریمهای فرد را با خطوط پایینی (یا بالایی) فریمهای زوج در هم میآمیزد، نرخ فریم را نصف کرده و ارتفاع تصویر را حفظ مینماید.
Original Original New Frame
Frame 'j' Frame 'j+1' (tff)
========== =========== ==================
Line 0 --------------------> Frame 'j' Line 0
Line 1 Line 1 ----> Frame 'j+1' Line 1
Line 2 --------------------> Frame 'j' Line 2
Line 3 Line 3 ----> Frame 'j+1' Line 3
... ... ...
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
این فیلتر پارامترهای اختیاری زیر را میپذیرد:
- scan
- تعیین میکند که آیا فریم درهمبافته از خطوط زوج (tff - پیشفرض) یا فرد (bff) فریم پیشرونده گرفته شود.
- lowpass
- فیلتر پایینگذر عمودی برای جلوگیری از لرزش ناشی از درهمبافتگی (twitter interlacing) و کاهش الگوهای موآره.
- 0, off
- غیرفعالسازی فیلتر پایینگذر عمودی
- 1, linear
- فعالسازی فیلتر خطی (پیشفرض)
- 2, complex
- فعالسازی فیلتر پیچیده. این گزینه لرزش و موآره را اندکی کمتر کاهش میدهد اما جزئیات و احساس وضوح ذهنی را بهتر حفظ میکند.
kerndeint
تبدیل ویدیوی ورودی از حالت درهمبافته به پیشرونده (deinterlace) با اعمال روش انطباقی هسته Donald Graft. روی بخشهای درهمبافته ویدیو کار میکند تا فریمهای پیشرونده تولید نماید.
شرح پارامترهای پذیرفتهشده در ادامه آمده است:
- thresh
- تنظیم آستانهای که بر میزان تحمل فیلتر هنگام تعیین اینکه آیا یک خط از پیکسلها باید پردازش شود یا خیر، تأثیر میگذارد. باید یک عدد صحیح در محدوده [0,255] باشد و پیشفرض آن 10 است. مقدار 0 منجر به اعمال فرایند بر روی تکتک پیکسلها خواهد شد.
- map
- در صورت تنظیم روی 1، پیکسلهایی که از مقدار آستانه فراتر رفتهاند را با رنگ سفید رنگآمیزی میکند. پیشفرض 0 است.
- order
- تنظیم ترتیب فیلدها. در صورت تنظیم روی 1 فیلدها را جابجا میکند و در صورت تنظیم روی 0 فیلدها را دستنخورده باقی میگذارد. پیشفرض 0 است.
- در صورت تنظیم روی 1، وضوحبخشی (sharpening) اضافی را فعال میکند. پیشفرض 0 است.
- twoway
- در صورت تنظیم روی 1، وضوحبخشی دوطرفه را فعال میکند. پیشفرض 0 است.
مثالها
- اعمال
مقادیر
پیشفرض:
kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
- فعالسازی
وضوحبخشی
اضافی:
kerndeint=sharp=1
- رنگآمیزی
پیکسلهای
پردازششده
با رنگ
سفید:
kerndeint=map=1
kirsch
اعمال عملگر کرش (Kirsch) بر روی جریان ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تعیین اینکه کدام پلانها پردازش خواهند شد، پلانهای پردازشنشده کپی میشوند. بهطور پیشفرض با مقدار 0xf، تمام پلانها پردازش خواهند شد.
- scale
- تنظیم مقداری که در نتیجه فیلتر ضرب خواهد شد.
- delta
- تنظیم مقداری که به نتیجه فیلتر اضافه خواهد شد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
lagfun
بهروزرسانی آرام پیکسلهای تیرهتر.
این فیلتر باعث میشود فلاشهای کوتاه نور طولانیتر به نظر برسند. این فیلتر گزینههای زیر را میپذیرد:
- decay
- تنظیم ضریب زوال (decay). پیشفرض .95 است. محدوده مجاز از 0 تا 1 است.
- planes
- تعیین اینکه کدام پلانها فیلتر شوند. پیشفرض همه است. محدوده مجاز از 0 تا 15 است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
lenscorrection
تصحیح اعوجاج شعاعی لنز.
این فیلتر میتواند برای تصحیح اعوجاج شعاعی که در اثر استفاده از لنزهای واید (زاویه باز) حاصل میشود و در نتیجه راستنمایی دوباره تصویر استفاده شود. برای یافتن پارامترهای مناسب میتوان از ابزارهای موجود، برای نمونه به عنوان بخشی از opencv، یا بهسادگی از روش آزمون و خطا استفاده کرد. برای استفاده از opencv از نمونه کالیبراسیون (زیر samples/cpp) در سورسهای opencv استفاده کرده و ضرایب k1 و k2 را از ماتریس حاصل استخراج کنید.
توجه داشته باشید که عملاً همین فیلتر در ابزارهای منبعباز Krita و Digikam از پروژه KDE در دسترس است.
برخلاف فیلتر vignette که میتواند برای جبران خطاهای لنز نیز به کار رود، این فیلتر اعوجاج تصویر را تصحیح میکند، در حالی که vignette توزیع روشنایی را اصلاح مینماید؛ بنابراین ممکن است بخواهید در برخی موارد هر دو فیلتر را با هم استفاده کنید، هرچند باید به ترتیب آنها توجه داشته باشید، یعنی اینکه وینیتینگ باید قبل یا بعد از تصحیح لنز اعمال شود.
گزینهها
این فیلتر گزینههای زیر را میپذیرد:
- cx
- مختصات نسبی x نقطه کانونی تصویر، و در نتیجه مرکز اعوجاج. این مقدار بازه [0,1] دارد و بهصورت کسری از عرض تصویر بیان میشود. پیشفرض 0.5 است.
- cy
- مختصات نسبی y نقطه کانونی تصویر، و در نتیجه مرکز اعوجاج. این مقدار بازه [0,1] دارد و بهصورت کسری از ارتفاع تصویر بیان میشود. پیشفرض 0.5 است.
- k1
- ضریب عبارت تصحیح درجه دو. این مقدار بازه [-1,1] دارد. 0 به معنای عدم تصحیح است. پیشفرض 0 است.
- k2
- ضریب عبارت تصحیح درجه دو مضاعف. این مقدار بازه [-1,1] دارد. 0 به معنای عدم تصحیح است. پیشفرض 0 است.
- i
- تنظیم نوع درونیابی. میتواند "nearest" یا "bilinear" باشد. پیشفرض "nearest" است.
- fc
- تعیین رنگ پیکسلهای نگاشتنشده. برای نحو این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید. رنگ پیشفرض "black@0" است.
فرمولی که تصحیح را تولید میکند به شرح زیر است:
r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)
که در آن r_0 نصف قطر تصویر است و r_src و r_tgt به ترتیب فواصل از نقطه کانونی در تصاویر سورس و هدف هستند.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
lensfun
اعمال تصحیح لنز از طریق کتابخانه lensfun (http://lensfun.sourceforge.net).
فیلتر "lensfun" برای اعمال تصحیح لنز به سازنده دوربین، مدل دوربین و مدل لنز نیاز دارد. این فیلتر پایگاهداده lensfun را بارگذاری کرده و برای یافتن مدخلهای دوربین و لنز متناظر در پایگاهداده آن را جستجو مینماید. تا زمانی که این مدخلها با گزینههای دادهشده یافت شوند، فیلتر میتواند تصحیحات را روی فریمها انجام دهد. توجه داشته باشید که رشتههای ناقص باعث میشوند فیلتر بهترین تطابق را با گزینههای دادهشده انتخاب کند و فیلتر مدلهای انتخابشده دوربین و لنز را در خروجی لاگ مینماید (با سطح "info"). شما باید سازنده، مدل دوربین و مدل لنز را مشخص کنید چرا که این موارد الزامی هستند.
برای به دست آوردن فهرستی از سازندگان و مدلهای موجود، یکی از گزینههای "make" یا "model" یا هر دوی آنها را خالی بگذارید. فیلتر فهرست کامل را با سطح "INFO" به لاگ ارسال خواهد کرد. ستون نخست سازنده و ستون دوم مدل است. برای دریافت فهرستی از لنزهای موجود، مقادیر دلخواهی برای سازنده و مدل تعیین کرده و گزینه "lens_model" را خالی بگذارید. فیلتر فهرست کامل لنزها را با سطح "INFO" در لاگ ارسال خواهد کرد. ابزار ffmpeg پس از چاپ این فهرست خارج میشود.
این فیلتر گزینههای زیر را میپذیرد:
- make
- سازنده دوربین (برای نمونه، "Canon"). این گزینه الزامی است.
- model
- مدل دوربین (برای نمونه، "Canon EOS 100D"). این گزینه الزامی است.
- lens_model
- مدل لنز (برای نمونه، "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). این گزینه الزامی است.
- db_path
- مسیر کامل به پوشه پایگاهداده لنز. در صورت عدم تنظیم، فیلتر تلاش میکند پایگاهداده را از مسیر نصب هنگام کامپایل کتابخانه بارگذاری کند. پیشفرض تنظیمنشده است.
- mode
- نوع تصحیح برای اعمال. مقادیر زیر گزینههای معتبر هستند:
- vignetting
- فعالسازی رفع تیرگی حاشیه (vignetting) لنز.
- geometry
- فعالسازی اصلاح هندسه لنز. این حالت پیشفرض است.
- subpixel
- فعالسازی اصلاح انحراف رنگی (chromatic aberrations).
- vig_geo
- فعالسازی اصلاح تیرگی حاشیه لنز و هندسه لنز.
- vig_subpixel
- فعالسازی اصلاح تیرگی حاشیه لنز و انحراف رنگی.
- distortion
- فعالسازی اصلاح همزمان هندسه لنز و انحراف رنگی.
- all
- فعالسازی تمامی تصحیحات ممکن.
- focal_length
- فاصله کانونی تصویر/ویدیو (بزرگنمایی؛ برای ویدیو ثابت فرض میشود). برای نمونه، یک لنز 18--55mm دارای محدوده فاصله کانونی [18--55] است، بنابراین هنگام استفاده از آن لنز باید مقداری در آن بازه انتخاب شود. پیشفرض 18 است.
- aperture
- دیافراگم تصویر/ویدیو (برای ویدیو ثابت فرض میشود). توجه داشته باشید که دیافراگم تنها برای تصحیح تیرگی حاشیه به کار میرود. پیشفرض 3.5 است.
- focus_distance
- فاصله فوکوس تصویر/ویدیو (برای ویدیو ثابت فرض میشود). توجه داشته باشید که فاصله فوکوس تنها برای تیرگی حاشیه استفاده میشود و تأثیر ناچیزی بر روند تصحیح تیرگی حاشیه دارد. در صورت نامشخص بودن، آن را روی مقدار پیشفرض (که 1000 است) رها کنید.
- scale
- ضریب مقیاس که پس از تبدیل اعمال میشود. پس از تصحیح، ویدیو لزوماً مستطیلشکل نخواهد بود. این پارامتر تعیین میکند که چه مقدار از تصویر حاصل نمایان باشد. مقدار 0 به این معناست که یک مقدار بهطور خودکار انتخاب میشود تا ناحیه نگاشتنشده اندکی در تصویر خروجی وجود داشته باشد یا اصلاً وجود نداشته باشد. 1.0 به معنای عدم انجام مقیاسبندی اضافی است. مقادیر پایینتر ممکن است منجر به نمایان شدن بخش بیشتری از تصویر تصحیحشده گردند، در حالی که مقادیر بالاتر ممکن است از نواحی نگاشتنشده در خروجی جلوگیری کنند.
- target_geometry
- هندسه هدف تصویر/ویدیوی خروجی. مقادیر زیر گزینههای معتبر هستند:
- reverse
- اعمال معکوس تصحیح تصویر (به جای تصحیح اعوجاج، اعمال آن).
- interpolation
- نوع درونیابی مورد استفاده هنگام تصحیح اعوجاج. مقادیر زیر گزینههای معتبر هستند:
مثالها
- اعمال
تصحیح لنز
با سازنده
"Canon"، مدل
دوربین "Canon EOS
100D"، و مدل
لنز "Canon EF-S 18-55mm f/3.5-5.6 IS STM"
با فاصله
کانونی "18" و
دیافراگم
"8.0":
ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
- اعمال همان
مورد قبلی،
اما تنها
برای ۵
ثانیه نخست
ویدیو:
ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
lcevc
فیلتر Low Complexity Enhancement Video Codec بر اساس liblcevc_dec (https://github.com/v-novaltd/LCEVCdec).
libplacebo
فیلتر پردازشی منعطف با شتابدهی GPU بر پایه libplacebo (https://code.videolan.org/videolan/libplacebo).
گزینهها
گزینههای این فیلتر به بخشهای زیر تقسیم میشوند:
حالت خروجی
این گزینهها حالت کلی خروجی را کنترل میکنند. بهطور پیشفرض، libplacebo تلاش خواهد کرد کالریمتری (colorimetry) و اندازه سورس را تا حد امکان حفظ کند، اما هرگونه فیلم گرین (film grain) تعبیهشده، متادیتای دالبی ویژن یا SAR آنامورفیک موجود در فریمهای سورس را اعمال خواهد کرد.
- inputs
- تنظیم تعداد ورودیها. این گزینه میتواند در کنار متغیر "idx" برای قرار دادن/ترکیب چند ورودی درون فریم خروجی استفاده شود. این امر عملاً قابلیتهایی مشابه با hstack، overlay و غیره را فعال میسازد.
- w
- h
- تنظیم
عبارت
ابعاد
ویدیوی
خروجی.
مقادیر
پیشفرض
"iw" و
"ih"
هستند.
عبارات مشابه با فیلتر scale را مجاز میداند.
- crop_x
- crop_y
- تنظیم عبارات برش x/y ورودی، مقادیر پیشفرض "(iw-cw)/2" و "(ih-ch)/2" هستند.
- crop_w
- crop_h
- تنظیم عبارات عرض/ارتفاع برش ورودی، مقادیر پیشفرض "iw" و "ih" هستند.
- pos_x
- pos_y
- تنظیم عبارات جایگذاری x/y خروجی، مقادیر پیشفرض "(ow-pw)/2" و "(oh-ph)/2" هستند.
- pos_w
- pos_h
- تنظیم عبارات عرض/ارتفاع جایگذاری خروجی، مقادیر پیشفرض "ow" و "oh" هستند.
- rotate
- چرخاندن فریم ورودی در جهت عقربههای ساعت با زاویه مشخصشده.
- 0, 360
- 90
- 180
- 270
- fps
- تنظیم نرخ فریم خروجی. این میتواند گویا باشد، مانند "60000/1001". اگر روی رشته خاص "none" (پیشفرض) تنظیم شود، برچسبهای زمانی ورودی بدون تغییر به خروجی منتقل میشوند. در غیر این صورت، فریمهای ویدیوی ورودی در صورت نیاز درونیابی میشوند تا ویدیو به نرخ فریم هدف مشخصشده تغییر مقیاس داده شود، به روشی که توسط گزینه frame_mixer تعیین میگردد.
- format
- بازنویسی فرمت خروجی. در صورت عدم تنظیم (پیشفرض)، فریمها با همان فرمت فریمهای ورودی مربوطه خروجی داده میشوند. در غیر این صورت، تبدیل فرمت انجام خواهد شد.
- force_original_aspect_ratio
- force_divisible_by
- عملکردی مشابه با گزینههای همنام در فیلتر scale دارند. توجه داشته باشید که force_divisible_by با "fit_sense=constraint" نیز کار میکند.
- reset_sar
- در صورت فعال بودن، فریمهای خروجی همواره دارای نسبت ابعاد پیکسلی برابر 1:1 خواهند بود. در صورت غیرفعال بودن (پیشفرض)، هرگونه عدم تطابق نسبت ابعاد، از جمله مواردی مانند منابع ویدیویی آنامورفیک، به نسبت ابعاد پیکسلی خروجی منتقل میشود.
- normalize_sar
- مانند reset_sar، اما به جای کشیدن محتوای ویدیو برای پر کردن نسبت ابعاد خروجی جدید، محتوا در صورت لزوم پدینگ (افزودن کادر) یا برش (crop) داده میشود. با fit_mode مانعةالجمع است. بهطور پیشفرض غیرفعال است.
- pad_crop_ratio
- نسبتی (بین 0.0 و 1.0) میان پدینگ و برش را در زمانی که نسبت ابعاد ورودی با نسبت ابعاد خروجی مطابقت ندارد و normalize_sar برقرار است، مشخص میکند. مقدار پیشفرض 0.0 همواره محتوا را با حاشیههای سیاه پد میکند، در حالی که مقدار 1.0 همواره بخشهایی از محتوا را برش میدهد. مقادیر میانی امکانپذیر است و به ترکیبی از این دو رویکرد میانجامد.
- fit_mode
- تعیین استراتژی برازش محتوا بر اساس فهرستی از حالتهای از پیش تعریفشده. نحوه قرارگیری تصویر ورودی درون مستطیل برش مقصد (همانطور که توسط "pos_x/y" و "pos_w/h" تعریف شده است) را تعیین میکند. نامها و پیادهسازیهای آنها از ویژگی 'object-fit' در CSS برگرفته شده است. توجه داشته باشید که این گزینه با normalize_sar مانعةالجمع است. پیشفرض "fill" است. مقادیر معتبر عبارتند از:
- fill
- کشیدن ورودی به مستطیل خروجی، با نادیده گرفتن عدم تطابق نسبت ابعاد. توجه داشته باشید مگر اینکه reset_sar نیز فعال باشد، خروجی همچنان تگ نسبت ابعاد پیکسلی صحیح را خواهد داشت.
- contain
- مقیاسبندی ورودی برای قرار گرفتن در داخل خروجی، با حفظ نسبت ابعاد از طریق پدینگ. معادل normalize_sar با pad_crop_ratio تنظیمشده روی 0.0.
- cover
- مقیاسبندی ورودی برای پر کردن خروجی، با حفظ نسبت ابعاد از طریق برش. معادل normalize_sar با pad_crop_ratio تنظیمشده روی 1.0.
- none, place
- عدم مقیاسبندی ورودی. ورودی در اندازه طبیعی خود درون مستطیل خروجی قرار میگیرد؛ که ممکن است به پدینگ یا برش اضافی منجر شود.
- scale_down
- کاهش مقیاس ورودی تا اندازه مورد نیاز برای جا شدن در داخل خروجی. بسته به اینکه ورودی بزرگتر از خروجی باشد یا نه، معادل "contain" یا "none" خواهد بود.
- fit_sense
- هنگام استفاده از fit_mode، این گزینه نحوه اعمال استراتژی برازش در برابر وضوح خروجی مشخصشده را کنترل میکند. با force_original_aspect_ratio مانعةالجمع است. مقادیر معتبر عبارتند از:
- target
- وضوح خروجی محاسبهشده به عنوان اندازه دقیق فریم خروجی در نظر گرفته میشود. این رفتار پیشفرض است.
- constraint
- وضوح خروجی محاسبهشده یک مرجع اندازه است که حالت برازش در برابر آن اعمال میشود و اندازه واقعی فریم را بر حسب نیاز برای جا شدن محتوا بزرگ یا کوچک میکند.
- fillcolor
- تنظیم رنگ مورد استفاده برای پر کردن ناحیه خروجی که توسط تصویر خروجی پوشانده نشده است، برای نمونه در نتیجه normalize_sar. برای نحو کلی این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید. پیشفرض "black@0" است.
- corner_rounding
- رندر کردن فریمها با گوشههای گرد. مقدار دادهشده بهصورت یک عدد ممیز شناور در محدوده 0.0 تا 1.0، درجه نسبی گرد کردن را از کاملاً مربعی تا کاملاً دایرهای نشان میدهد. به عبارت دیگر، شعاع را تقسیم بر نصف طول ضلع کوچکتر به دست میدهد. پیشفرض 0.0 است.
- lut
- مشخص کردن یک LUT سفارشی (در فرمت .cube ادوبی) برای اعمال روی رنگها به عنوان بخشی از تبدیل رنگ. تفسیر دقیق به مقدار lut_type بستگی دارد.
- lut_type
- کنترل تفسیر مقادیر رنگ ورودی و خروجی LUT مشخصشده به عنوان lut. مقادیر معتبر عبارتند از:
- auto
- تفسیر LUT را بهطور خودکار از متادیتای تگشده انتخاب میکند و در غیر این صورت به native بازمیگردد. (پیشفرض)
- native
- روی محتوای خام تصویر در فضای رنگی RGB بومی آن (نور غیرخطی)، پیش از تبدیل به فضای رنگی خروجی اعمال میشود.
- normalized
- روی محتوای تصویر RGB نرمالشده، در نور خطی، پیش از تبدیل به فضای رنگی خروجی اعمال میشود.
- conversion
- تبدیل از فضای رنگی تصویر به فضای رنگی خروجی را کاملاً جایگزین میکند. در صورت وجود چنین LUTی، بالاترین اولویت را دارد و هرگونه پروفایل ICC و همچنین گزینههای مربوط به تونمپینگ و کالریمتری خروجی (color_primaries، color_trc) را بازنویسی میکند.
- extra_opts
- ارسال
گزینههای
پیکربندی
داخلی
اضافی libplacebo.
این
گزینهها
را میتوان
بهصورت
فهرستی از
جفتهای
key=value جداشده
با ':' مشخص
کرد. مثال
زیر نشان
میدهد که
چگونه یک
هسته فیلتر
سفارشی ("EWA
LanczosSharp") را
پیکربندی
کرده و از
آن برای دو
برابر کردن
رزولوشن
تصویر
ورودی
استفاده
نمایید:
-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
- shader_cache
- مسیر فایل
یک
دایرکتوری
کش که libplacebo
برای ذخیره
و بارگذاری
اشیاء شیدر
کششده
استفاده
خواهد کرد.
این کش
بهطور
خودکار
پاکسازی
نمیشود.
اگر مسیر به
جداکننده
دایرکتوری
ختم نشود،
نام
فایلهای
تولیدشده
عملاً با
آخرین جزء
مسیر
پیشوند
میخورند.
تمامی
دایرکتوریها
باید از قبل
وجود داشته
باشند.
-vf "libplacebo=shader_cache=/tmp/pl-shader-"
- colorspace
- color_primaries
- color_trc
- range
- chroma_location
- پیکربندی
فضای رنگی
که
فریمهای
خروجی در آن
تحویل داده
میشوند.
مقدار
پیشفرض
"auto"
فریمها را
با همان
فرمت
فریمهای
ورودی
خروجی
میدهد که
منجر به عدم
تغییر
میشود.
برای هر
مقدار
دیگر،
تبدیل
انجام
خواهد شد.
فیلتر setparams را برای فهرستی از مقادیر ممکن مشاهده کنید.
- alpha_mode
- انتخاب حالت آلفای خروجی مورد نظر، هنگامی که فرمت خروجی دارای کانال آلفا باشد. فیلتر setparams را برای فهرستی از مقادیر ممکن ببینید.
- apply_filmgrain
- اعمال فیلم گرین (مانند AV1 یا H.274) در صورت وجود در فریمهای سورس، و حذف آن از خروجی. بهطور پیشفرض فعال است.
- apply_dolbyvision
- اعمال متادیتای RPU دالبی ویژن در صورت وجود در فریمهای سورس، و حذف آن از خروجی. بهطور پیشفرض فعال است. توجه داشته باشید که دالبی ویژن همواره BT.2020+PQ خروجی خواهد داد و متادیتای معمول فریم ورودی را بازنویسی میکند. این مقادیر همچنین به عنوان مقادیر "auto" برای گزینههای مربوط به خروجی فریم انتخاب خواهند شد.
علاوه بر ثابتهای عبارات مستندشده برای فیلتر scale، گزینههای crop_w، crop_h، crop_x، crop_y، pos_w، pos_h، pos_x و pos_y همچنین میتوانند شامل ثابتهای زیر باشند:
- in_idx, idx
- شاخص عددی (بر مبنای 0) جریان ورودی فعال جاری.
- crop_w, cw
- crop_h, ch
- مقادیر محاسبهشده crop_w و crop_h.
- pos_w, pw
- pos_h, ph
- مقادیر محاسبهشده pos_w و pos_h.
- in_t, t
- برچسب زمانی فریم ورودی، بر حسب ثانیه. NAN در صورتی که برچسب زمانی ورودی نامشخص باشد.
- out_t, ot
- برچسب زمانی فریم ورودی، بر حسب ثانیه. NAN در صورتی که برچسب زمانی ورودی نامشخص باشد.
- n
- شماره فریم ورودی، با شروع از 0.
مقیاسبندی
گزینههای این بخش کنترل میکنند که libplacebo چگونه افزایش مقیاس (upscaling) و (در صورت لزوم) کاهش مقیاس (downscaling) را انجام دهد. توجه داشته باشید که libplacebo همواره در داخل روی محتوای 4:4:4 عمل میکند، بنابراین هر فرمت کرومای زیرنمونهبرداریشده مانند "yuv420p" لزوماً به عنوان بخشی از فرایند رندر کردن فرونمونهبرداری و فرونمونگی خواهد شد. این بدان معناست که مقیاسبندی ممکن است حتی در صورتی که رزولوشن مبدا و مقصد یکسان باشد نیز اعمال شود.
- upscaler
- downscaler
- پیکربندی هسته فیلتر مورد استفاده برای افزایش و کاهش مقیاس. پیشفرضهای مربوطه "spline36" و "mitchell" هستند. برای فهرست کامل مقادیر ممکن، "help" را به این گزینهها ارسال کنید. مهمترین مقادیر عبارتند از:
- none
- استفاده از نمونهبرداری بافت توکار GPU (معمولاً bilinear) را تحمیل میکند. بسیار سریع اما با کیفیت پایین، بهویژه هنگام کاهش مقیاس.
- bilinear
- درونیابی دوخطی (bilinear). معمولاً میتواند روی GPUها بدون بار اضافی انجام شود، مگر زمانی که این کار منجر به پلگی (aliasing) شود. سریع و کمکیفیت.
- nearest
- درونیابی نزدیکترین همسایه. واضح اما با پلگی و اعوجاج بالا.
- oversample
- الگوریتمی که از نظر بصری مشابه درونیابی نزدیکترین همسایه است اما تلاش میکند نسبت ابعاد پیکسل را حفظ کند. برای هنر پیکسلی مناسب است، چرا که منجر به حداقل اعوجاج در ظاهر هنری میشود.
- lanczos
- هسته استاندارد درونیابی sinc-sinc.
- spline36
- تقریب اسپلاین مکعبی لنسوس. هیچ تفاوتی در عملکرد ندارد، اما حلقهزنی بسیار اندکتری دارد.
- ewa_lanczos
- نسخه میانگین وزنی بیضوی لنسوس، بر اساس یک هسته jinc-jinc. این روش معمولاً تنها با عنوان "مقیاسبندی Jinc" نیز شناخته میشود. کند اما با کیفیت بسیار بالا.
- gaussian
- هسته گوسی. ویژگیهای ریاضی ایدهآل خاصی دارد، اما از نظر بصری بسیار تار است.
- mitchell
- اسپلاین مکعبی BC با پارامترهای توصیهشده توسط Mitchell و Netravali. حلقهزنی بسیار کم.
- frame_mixer
- هسته مورد استفاده برای ترکیب زمانی فریمها را کنترل میکند. مقدار پیشفرض "none" است که ترکیب فریم را غیرفعال میکند. برای فهرست کامل مقادیر ممکن، "help" را به این گزینه ارسال کنید. مهمترین مقادیر عبارتند از:
- none
- ترکیب فریم را غیرفعال میکند و نتیجهای معادل معانی "نزدیکترین همسایه" میدهد.
- oversample
- نمونهبرداری فراتر از حد (oversample) از ویدیوی ورودی برای ایجاد جلوهای از نوع "حرکت روان" (Smooth Motion): اگر یک فریم خروجی دقیقاً روی نقطه انتقال میان دو فریم ویدیو بیفتد، با توجه به همپوشانی نسبی ترکیب میشود. هر زمان که حفظ ظاهر ذهنی اولیه مد نظر باشد، این گزینه توصیه میشود.
- mitchell_clamp
- هسته فیلتر بزرگتر که فریمهای متعددی را به شیوهای روان درونیابی میکند که برای حذف حلقهزنی و سایر آرتیفکتها تا حد امکان طراحی شده است. هر زمان که حداکثر روانی بصری مد نظر باشد، این گزینه توصیه میشود.
- linear
- ترکیب/محو شدن خطی میان فریمها. بهویژه برای ساخت اسلایدشوها مفید است.
- antiringing
- ضد حلقهزنی را فعال میکند (برای فیلترهای غیر EWA). مقدار (بین 0.0 و 1.0) قدرت الگوریتم ضد حلقهزنی را پیکربندی میکند. در صورت تنظیم بیش از حد بالا ممکن است پلگی (aliasing) را افزایش دهد. بهطور پیشفرض غیرفعال است.
- sigmoid
- فعالسازی فشردهسازی سیگموئید در طول افزایش مقیاس. حلقهزنی را اندکی کاهش میدهد. بهطور پیشفرض فعال است.
درهمبافتگیزدایی (Deinterlacing)
عملیات Deinterlacing بهطور خودکار هنگامی که فریمها به عنوان درهمبافته تگگذاری شده باشند پشتیبانی میشود، با این حال فریمها deinterlace نمیشوند مگر اینکه یک الگوریتم deinterlacing انتخاب شود.
- deinterlace
- الگوریتم deinterlacing برای استفاده.
- skip_spatial_check
- صرفنظر از بررسی مکانی deinterlacing هنگام استفاده از دیاینترلیس "yadif".
- send_fields
- خروجی دادن یک فریم برای هر فیلد، به جای هر فریم. توجه داشته باشید که این گزینه همواره نرخ فریم خروجی تگشده را دو برابر میکند، حتی اگر ورودی شامل فریمهای درهمبافته نباشد. بهطور پیشفرض غیرفعال است.
حذف نوار (Debanding)
ابزار Libplacebo همراه با یک فیلتر توکار حذف نوار (debanding) ارائه میشود که در خنثیسازی بسیاری از منابع رایج نواریشدن و بلوکیشدن عالی عمل میکند. روشن کردن این گزینه هر زمان که کیفیت مد نظر باشد بهشدت توصیه میشود.
- deband
- الگوریتم (سریع) debanding را فعال میکند. بهطور پیشفرض غیرفعال است.
- deband_iterations
- تعداد تکرارهای الگوریتم debanding. هر تکرار با شعاع بهطور تدریجی افزایشیافته (و آستانه کاهشیافته) انجام میشود. مقادیر توصیهشده در محدوده 1 تا 4 هستند. پیشفرض 1 است.
- deband_threshold
- قدرت فیلتر debanding. اعداد بالاتر منجر به debanding تهاجمیتر میشوند. پیشفرض 4.0 است.
- deband_radius
- شعاع فیلتر debanding. یک شعاع بالاتر برای گرادیانهای آرام بهتر است، در حالی که یک شعاع کمتر برای گرادیانهای تند مناسبتر است. پیشفرض 16.0 است.
- deband_grain
- مقدار گرین (دانهبندی) اضافی خروجی برای اضافه کردن. به پنهان کردن نواقص کمک میکند. پیشفرض 6.0 است.
تنظیم رنگ
مجموعهای از کنترلهای رنگی ذهنی. چندان دقیق نیست، بنابراین اثر واقعی تا حدودی بسته به رنگهای پایه و فضای رنگی ورودی متفاوت خواهد بود.
- brightness
- تقویت روشنایی، بین -1.0 و 1.0. پیشفرض 0.0 است.
- contrast
- بهره کنتراست، بین 0.0 و 16.0. پیشفرض 1.0 است.
- saturation
- بهره اشباع، بین 0.0 و 16.0. پیشفرض 1.0 است.
- hue
- تغییر فام بر حسب رادیان، بین -3.14 و 3.14. پیشفرض 0.0 است. این گزینه زیربردار UV را میچرخاند و برای ورودیهای RGB بهطور پیشفرض ضرایب BT.709 در نظر گرفته میشود.
- gamma
- تنظیم گاما، بین 0.0 و 16.0. پیشفرض 1.0 است.
- temperature
- تنظیم دمای رنگ. مقادیر پایینتر خروجی را گرمتر/قرمزتر میکنند (تا 1667)، در حالی که مقادیر بالاتر خروجی را خنکتر/آبیتر میکنند (تا 25000). پیشفرض 6500 (سفید خنثی) است.
- cones
- مدل مخروطی برای شبیهسازی کوررنگی. هر ترکیبی از "l"، "m" و "s" را میپذیرد. چند مثال:
- cone-strength
- ضریب بهره برای مخروطهای مشخصشده توسط "cones"، بین 0.0 و 10.0. مقدار 1.0 منجر به عدم تغییر در دید رنگی میشود. مقدار 0.0 (پیشفرض) از دست رفتن کامل آن مخروطها را شبیهسازی میکند. مقادیر بالاتر از 1.0 منجر به اغراق در تفاوت میان مخروطها میشوند، که ممکن است به جبران کاهش دید رنگی کمک کند.
تشخیص پیک
برای کمک به مدیریت سورسهایی که تنها متادیتای استاتیک HDR10 دارند (یا اصلاً برچسبی ندارند)، libplacebo از کامپیوت شیدر تحلیل فریم داخلی خود برای تجزیهوتحلیل فریمهای سورس و انطباق تابع تونمپینگ بهصورت بلادرنگ استفاده میکند. اگر این کار بسیار کند باشد، یا اگر به نتایج فریمبهفریم کاملاً تکرارپذیر نیاز باشد، توصیه میشود این قابلیت خاموش شود.
- peak_detect
- فعالسازی تشخیص پیک HDR. مقادیر استاتیک MaxCLL/MaxFALL را به نفع تشخیص پویا از ورودی نادیده میگیرد. توجه داشته باشید که مقادیر تشخیص داده شده مجدداً روی فریمهای خروجی نوشته نمیشوند، بلکه صرفاً فرایند تونمپینگ داخلی را هدایت میکنند. بهطور پیشفرض فعال است.
- smoothing_period
- دوره هموارسازی تشخیص پیک، بین 0.0 و 1000.0. مقادیر بالاتر منجر به پاسخدهی کندتر تشخیص پیک به تغییرات ورودی میشوند. پیشفرض 20.0 است.
- scene_threshold_low
- scene_threshold_high
- آستانههای پایین و بالا برای تشخیص تغییر صحنه. بیانشده در مقیاس لگاریتمی بین 0.0 و 100.0. به ترتیب پیشفرض 1.0 و 3.0 هستند. تنظیم هر یک روی یک مقدار منفی این قابلیت را غیرفعال میکند.
- percentile
- کدام صدک از هیستوگرام روشنایی فریم به عنوان پیک منبع برای تونمپینگ استفاده شود. پیشفرض 99.995 است که یک مقدار نسبتاً محافظهکارانه است. تنظیم این مقدار روی 100.0 اندازهگیری هیستوگرام فریم را غیرفعال کرده و به جای آن از پیک روشنایی واقعی برای تونمپینگ استفاده میکند.
نگاشت تون (Tone mapping)
گزینههای این بخش نحوه انجام تونمپینگ و گاموتمپینگ توسط libplacebo را هنگام مواجهه با عدم تطابق بین محتوای با طیف گسترده (wide-gamut) یا HDR کنترل میکنند. بهطور کلی، libplacebo به برچسبگذاری دقیق سورس و اطلاعات گاموت مانیتور مسترینگ برای دستیابی به بهترین نتایج متکی است.
- gamut_mode
- نحوه مدیریت رنگهای خارج از گاموت که میتوانند در نتیجه گاموتمپینگ کالریمتری رخ دهند:
- clip
- هیچ کاری انجام نده، صرفاً رنگهای خارج از محدوده را به حجم RGB برش (clip) بزن. کیفیت پایین اما بسیار سریع.
- perceptual
- برش نرم رنگها به حجم گاموت بهصورت ادراکی. این حالت پیشفرض است.
- relative
- برش سخت کالریمتری نسبی. مشابه "perceptual" اما بدون نقطه زانویی نرم.
- saturation
- مپینگ اشباع، رنگهای اولیه را مستقیماً به رنگهای اولیه در فضای RGB مپ میکند. به جز برای گرافیکهای رایانهای مصنوعی که در آنها نمایشگر روشن و اشباع مد نظر است، توصیه نمیشود.
- absolute
- برش سخت کالریمتری مطلق. هیچ تنظیمی برای نقطه سفید انجام نمیدهد.
- desaturate
- رنگهای خارج از گاموت را بهشدت به سمت سفید غیراشباع میکند، ضمن اینکه درخشندگی (luminance) را حفظ مینماید. تمایل به تحریف ظاهر بصری اشیاء روشن دارد.
- darken
- روشنایی محتوا را بهصورت خطی کاهش میدهد تا جزئیات اشباعشده حفظ شوند، و به دنبال آن رنگهای خارج از گاموت باقیمانده را برش میزند.
- warn
- برجستهسازی پیکسلهای خارج از گاموت (با معکوس کردن/علامتگذاری آنها).
- linear
- کروماسیتی کل تصویر را بهصورت خطی کاهش میدهد تا در حجم رنگ هدف جا شود. هنگام استفاده از این گزینه روی سورسهای BT.2020 بدون متادیتای مسترینگ مناسب دقت کنید، زیرا انجام این کار منجر به عدم اشباع بیش از حد میشود.
- tonemapping
- الگوریتم تونمپینگ برای استفاده. مقادیر موجود عبارتند از:
- auto
- انتخاب خودکار بر اساس اکتشافیهای داخلی. این مقدار پیشفرض است.
- clip
- هیچ تونمپینگی انجام نمیدهد، صرفاً رنگهای خارج از محدوده را برش میزند. دقت رنگ عالی را برای رنگهای داخل محدوده حفظ میکند اما اطلاعات خارج از محدوده را کاملاً از بین میبرد. هیچ انطباق نقطه سیاهی انجام نمیدهد. غیرقابلپیکربندی.
- st2094-40
- تابع EETF از ضمیمه B استاندارد SMPTE ST 2094-40، که منحنیهای بزیه حاصل از متادیتای پویای HDR10+ را برای انجام تونمپینگ اعمال میکند. تابع OOTF مورد استفاده بر اساس نسبت میان درخشندگیهای پیک هدف و واقعی نمایشگر تنظیم میشود.
- st2094-10
- تابع EETF از ضمیمه B.2 استاندارد SMPTE ST 2094-10، که علاوه بر بیشینه/کمینه، میانگین درخشندگی سیگنال ورودی را نیز در نظر میگیرد. پارامتر کنتراست قابل تنظیم بر شیب بخش خروجی خطی تأثیر میگذارد، که پیشفرض آن 1.0 برای عدم افزایش/کاهش کنتراست است. توجه داشته باشید که این گزینه در حال حاضر کنترلهای ذهنی بهره/آفست/گامای تعریفشده در ضمیمه B.3 را شامل نمیشود.
- bt.2390
- تابع EETF از گزارش ITU-R Report BT.2390، یک کاهش منحنی هرمیت با بخش خطی. آفست نقطه زانو (knee point) قابل پیکربندی است. توجه داشته باشید که این پارامتر بهجای مقدار 0.5 در مشخصات ITU-R، بهطور پیشفرض روی 1.0 تنظیم شده است.
- bt.2446a
- تابع EETF از گزارش ITU-R Report BT.2446، روش A. برای سورسهای HDR بهخوبی مسترشده طراحی شده است. میتواند برای هر دو تونمپینگ مستقیم و معکوس استفاده شود. غیرقابلپیکربندی.
- spline
- اسپلاین ساده متشکل از دو چندجملهای، متصلشده با یک نقطه لولای منفرد. پارامتر نقطه لولا را (در فضای PQ) مشخص میکند که پیشفرض آن 0.30 است. میتواند برای هر دو تونمپینگ مستقیم و معکوس استفاده شود.
- reinhard
- الگوریتم تونمپینگ سراسری غیرخطی و ساده. پارامتر، ضریب کنتراست محلی در پیک نمایشگر را مشخص میکند. اساساً، پارامتر 0.5 به این معناست که سفید مرجع حدوداً نصف زمانی که برش زده میشود روشن خواهد بود. پیشفرض 0.5 است که سادهترین فرمولبندی این تابع را نتیجه میدهد.
- mobius
- تعمیم الگوریتم تونمپینگ راینهارد (reinhard) برای پشتیبانی از یک شیب خطی اضافی نزدیک به سیاه. پارامتر تونمپینگ موازنه میان بخش خطی و بخش غیرخطی را نشان میدهد. اساساً برای یک پارامتر x معین، هر مقدار رنگ زیر x بهصورت خطی مپ میشود، در حالی که مقادیر بالاتر بهصورت غیرخطی تونمپ میشوند. مقادیر نزدیک به 1.0 این منحنی را مانند "clip" و مقادیر نزدیک به 0.0 آن را مانند "reinhard" رفتار میدهند. مقدار پیشفرض 0.3 است که تعادل خوبی بین دقت کالریمتری و حفظ جزئیات خارج از گاموت برقرار میسازد.
- hable
- الگوریتم تونمپینگ فیلمیک و تکهتکه توسعهیافته توسط جان هیبل (John Hable) برای استفاده در بازی Uncharted 2، الهامگرفته از الگوریتم تونمپینگ مشابه مورد استفاده توسط کداک. با استفاده از آن در بازیهای ویدیویی با رندرینگ HDR محبوبیت یافت. هر دو جزئیات تیره و روشن را بهخوبی حفظ میکند، اما با این نقطهضعف همراه است که میانگین روشنایی را بهطور قابل توجهی تغییر میدهد. این تا حدودی شبیه به "reinhard" با پارامتر 0.24 است.
- gamma
- برازش یک تابع گاما (توانی) برای انتقال میان فضاهای رنگی سورس و مقصد، که عملاً منجر به یک زانوی سخت ادراکی متصلکننده دو بخش تقریباً خطی میشود. این امر جزئیات را در تمام مقیاسها نسبتاً دقیق حفظ میکند، اما میتواند منجر به تصویری با ظاهر مات یا کدر شود. پارامتر به عنوان نقطه قطع استفاده میشود که پیشفرض آن 0.5 است.
- linear
- کشیدن خطی محدوده ورودی به محدوده خروجی، در فضای PQ. این تمام جزئیات را بهطور دقیق حفظ میکند، اما به روشنایی میانگین کاملاً متفاوتی منجر میشود. میتواند علاوه بر تونمپینگ معمولی برای تونمپینگ معکوس نیز استفاده شود. پارامتر میتواند به عنوان یک ضریب بهره خطی اضافی استفاده شود (پیشفرض 1.0).
- tonemapping_param
- برای توابع تونمپینگ قابل تنظیم، این پارامتر میتواند برای تنظیم دقیق رفتار منحنی استفاده شود. به مستندات "tonemapping" مراجعه کنید. مقدار پیشفرض 0.0 با تنظیمات پیشفرض ترجیحی منحنی جایگزین میشود.
- inverse_tonemapping
- در صورت فعال بودن، این فیلتر همچنین تلاش خواهد کرد سیگنالهای SDR را بکشد تا حجم رنگ خروجی HDR را پر کند. بهطور پیشفرض غیرفعال است.
- tonemapping_lut_size
- اندازه LUT تونمپینگ، بین 2 و 1024. پیشفرض 256 است. توجه داشته باشید که این مقدار هنگام ترکیب با "peak_detect" به توان دو میرسد.
- contrast_recovery
- قدرت بازیابی کنتراست. در صورت تنظیم روی مقداری بالاتر از 0.0، تصویر سورس به مؤلفههای با فرکانس بالا و فرکانس پایین تقسیم میشود و بخشی از تصویر با فرکانس بالا مجدداً به خروجی تونمپشده اضافه میگردد. ممکن است برای برخی سورسهای HDR باعث ایجاد آرتیفکتهای حلقهزنی بیش از حد شود، اما میتواند وضوح ذهنی و جزئیات باقیمانده در تصویر پس از تونمپینگ را بهبود بخشد. پیشفرض 0.30 است.
- contrast_smoothness
- اندازه هسته پایینگذر بازیابی کنتراست. پیشفرض 3.5 است. افزایش یا کاهش این مقدار تأثیر اساسی بر ظاهر بصری خواهد داشت. هنگام غیرفعال بودن "contrast_recovery" هیچ تأثیری ندارد.
دیترینگ (Dithering)
بهطور پیشفرض، libplacebo هر زمان که لازم باشد عمل دیترینگ را انجام میدهد، که شامل رندر کردن به هر فرمت عدد صحیح زیر دقت ۱۶ بیتی میشود. توصیه میشود همیشه این گزینه روشن بماند، زیرا عدم انجام آن ممکن است منجر به نواریشدن قابل مشاهده در خروجی شود، حتی اگر فیلتر "debanding" فعال باشد. در صورت نیاز به حداکثر کارایی، به جای غیرفعال کردن دیترینگ از "ordered_fixed" استفاده کنید.
- dithering
- روش دیترینگ مورد استفاده. مقادیر زیر را میپذیرد:
- none
- دیترینگ را کاملاً غیرفعال میکند. ممکن است منجر به نواریشدن قابل مشاهده شود.
- blue
- دیتر با نویز شبهآبی. این حالت پیشفرض است.
- ordered
- الگوی دیتر مرتبشده قابل تنظیم.
- ordered_fixed
- دیتر مرتبشده سریعتر با اندازه ثابت 6. بدون بافت.
- white
- دیتر با نویز سفید. بدون بافت.
- dither_lut_size
- اندازه LUT دیتر، بهصورت لگاریتم مبنای ۲ بین 1 و 8. پیشفرض 6 است، که متناظر با اندازه LUT برابر با "64x64" است.
- dither_temporal
- دیترینگ زمانی را فعال میکند. بهطور پیشفرض غیرفعال است.
شیدرهای سفارشی
ابزار libplacebo از تعدادی شیدر سفارشی بر اساس نحو mpv .hook GLSL پشتیبانی میکند. مجموعهای از چنین شیدرهایی را میتوان در اینجا یافت: https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders
شرح کامل فرمت شیدر mpv خارج از دامنه این بخش است، اما خلاصهای از آن را میتوان در اینجا یافت: https://mpv.io/manual/master/#options-glsl-shader
- custom_shader_path
- مسیر یک فایل شیدر سفارشی را برای بارگذاری در زمان اجرا مشخص میکند.
- custom_shader_bin
- یک شیدر سفارشی کامل را بهصورت یک رشته خام مشخص میکند.
اشکالزدایی / کارایی
تمامی گزینههای این بخش بهطور پیشفرض خاموش هستند. آنها ممکن است هنگام تلاش برای دریافت حداکثر کارایی به بهای کیفیت مفید باشند.
- skip_aa
- غیرفعالسازی ضد پلگی (anti-aliasing) هنگام کاهش مقیاس.
- disable_linear
- غیرفعالسازی مقیاسبندی نور خطی.
- disable_builtin
- غیرفعالسازی نمونهبرداری توکار GPU (اجبار به استفاده از LUT).
- disable_fbos
- غیرفعالسازی اجباری FBOها، که منجر به از دست رفتن تقریباً تمام قابلیتها میشود، اما حداکثر سرعت ممکن را ارائه میدهد.
دستورات
این فیلتر تقریباً از تمامی گزینههای فوق به عنوان دستورات (commands) پشتیبانی میکند.
مثالها
- تونمپ
کردن ورودی
به خروجی با
گاموت
استاندارد
BT.709:
libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
- تغییر
مقیاس
ورودی برای
جا شدن در 1080p
استاندارد،
همراه با
مقیاسبندی
کیفیت بالا:
libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
- درونیابی
ورودی با FPS
پایین / VFR به
خروجی
هموار ثابت
60 فریم بر
ثانیه:
libplacebo=fps=60:frame_mixer=mitchell_clamp
- تبدیل
ورودی به JPEG
استاندارد
sRGB:
libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
- استفاده از
تنظیمات
باکیفیتتر
رفع
نواریشدن
(debanding):
libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
- اجرای این
فیلتر روی
CPU، در
سیستمهایی
با Mesa
نصبشده (و
با غیرفعال
بودن
پرهزینهترین
گزینهها):
ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
- متوقف کردن
اعمال فیلم
گرین AV1/H.274
مبتنی بر CPU
در رمزگشا،
به نفع
انجام آن با
این فیلتر.
توجه داشته
باشید که
این کار
تنها در
صورتی مزیت
محسوب
میشود که
فریمها یا
از قبل روی GPU
باشند یا از
libplacebo برای
اهداف
دیگری
استفاده
کنید، زیرا
در غیر این
صورت رفت و
برگشت به VRAM
هرگونه
افزایش
سرعت مورد
انتظار را
خنثی خواهد
کرد.
ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
- تعامل با
رمزگشای
سختافزاری
VAAPI برای
جلوگیری از
رفت و برگشت
از طریق RAM:
ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
libvmaf
محاسبه امتیاز VMAF (Video Multi-Method Assessment Fusion) برای یک جفت ویدیوی ورودی مرجع/تحریفشده.
ورودی نخست، ویدیوی تحریفشده و ورودی دوم، ویدیوی مرجع است.
امتیاز VMAF بهدستآمده از طریق سامانه لاگگیری چاپ میشود.
این فیلتر به عنوان پیشنیاز به کتابخانه vmaf نتفلیکس (libvmaf) نیاز دارد. پس از نصب کتابخانه میتوان با دستور زیر آن را فعال کرد: "./configure --enable-libvmaf".
این فیلتر گزینههای زیر را دارد:
- model
- فهرستی از مدلهای vmaf که با `|` از هم جدا شدهاند. هر مدل را میتوان با تعدادی پارامتر پیکربندی کرد. مقدار پیشفرض: "version=vmaf_v0.6.1"
- feature
- فهرستی از ویژگیها که با `|` از هم جدا شدهاند. هر ویژگی را میتوان با تعدادی پارامتر پیکربندی کرد.
- log_path
- تنظیم مسیر فایلی که برای ذخیره فایلهای گزارش (لاگ) استفاده میشود.
- log_fmt
- تنظیم فرمت فایل گزارش (xml، json، csv، یا sub).
- pool
- تنظیم روش ادغام (pool) مورد استفاده برای محاسبه vmaf. گزینهها عبارتند از "min"، "harmonic_mean" یا "mean" (پیشفرض).
- n_threads
- تنظیم تعداد ریسهها (threads) جهت استفاده هنگام مقداردهی اولیه libvmaf. مقدار پیشفرض: 0، بدون ریسه.
- n_subsample
- تنظیم فاصله زیرنمونهبرداری فریمها.
این فیلتر از گزینههای framesync نیز پشتیبانی میکند.
مثالها (Examples)
- در مثالهای زیر، ویدیوی تحریفشده distorted.mpg با فایل مرجع reference.mpg مقایسه میشود.
- کاربرد
پایه:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
- مثال با چند
مدل:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
- مثال با چند
ویژگی
اضافی:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
- مثال با
گزینهها و
کانتینرهای
مختلف:
ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
libvmaf_cuda
این نگارش CUDA فیلتر libvmaf است. این فیلتر فقط فریمهای CUDA را میپذیرد.
این فیلتر به عنوان پیشنیاز به کتابخانه vmaf نتفلیکس (libvmaf) نیاز دارد. پس از نصب کتابخانه میتوان با دستور زیر آن را فعال کرد: "./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf".
مثالها (Examples)
- •
- کاربرد
پایه که
رمزگشایی
سختافزاری
CUVID و تغییر
مقیاس CUDA را
با scale_cuda نشان
میدهد:
ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \ -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \ -filter_complex " [0:v]scale_cuda=format=yuv420p[dis]; \ [1:v]scale_cuda=format=yuv420p[ref]; \ [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json " \ -f null -
limitdiff
اعمال فیلتر تفاضل محدود با استفاده از جریان ویدیویی دوم و در صورت تمایل جریان ویدیویی سوم.
این فیلتر گزینههای زیر را میپذیرد:
- threshold
- تنظیم آستانه برای مجاز دانستن تفاوتهای مشخص میان جریانهای ویدیویی. هر مقدار اختلاف مطلق کمتر یا دقیقاً برابر با این آستانه، مؤلفههای پیکسل را از نخستین جریان ویدیویی انتخاب خواهد کرد.
- elasticity
- تنظیم کشسانی (elasticity) آستانهگذاری نرم هنگام پردازش جریانهای ویدیویی. این مقدار ضربدر مقدار اول شده و آستانه دوم را تعیین میکند. هر مقدار اختلاف مطلق بیشتر یا دقیقاً برابر با آستانه دوم، مؤلفههای پیکسل را از دومین جریان ویدیویی انتخاب خواهد کرد. برای مقادیر بین این دو آستانه، از درونیابی خطی میان جریان ویدیویی اول و دوم استفاده خواهد شد.
- reference
- فعالسازی پردازش جریان ویدیویی مرجع (سوم). بهطور پیشفرض غیرفعال است. در صورت تنظیم، از این جریان ویدیویی برای محاسبه اختلاف مطلق با جریان ویدیویی اول استفاده خواهد شد.
- planes
- مشخص میکند کدام پلینها پردازش شوند. پیشفرض تمام پلینهای موجود است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به جز گزینه reference به عنوان دستورات پشتیبانی میکند.
limiter
محدود کردن مقادیر مؤلفههای پیکسل به محدوده مشخصشده [min, max].
این فیلتر گزینههای زیر را میپذیرد:
- min
- کران پایین. مقدار پیشفرض، کمترین مقدار مجاز برای ورودی است.
- max
- کران بالا. مقدار پیشفرض، بیشترین مقدار مجاز برای ورودی است.
- planes
- مشخص میکند کدام پلینها پردازش شوند. پیشفرض تمام پلینهای موجود است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
loop
تکرار (حلقه کردن) فریمهای ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- loop
- تنظیم تعداد دفعات تکرار حلقه. تنظیم این مقدار روی -1 منجر به حلقههای نامحدود میشود. پیشفرض 0 است.
- size
- تنظیم حداکثر اندازه بر حسب تعداد فریمها. پیشفرض 0 است.
- start
- تنظیم نخستین فریم حلقه. پیشفرض 0 است.
- time
- تنظیم زمان شروع حلقه بر حسب ثانیه. تنها در صورتی استفاده میشود که گزینه start روی -1 تنظیم شده باشد.
مثالها (Examples)
- تکرار
بیپایان
اولین
تکفریم:
loop=loop=-1:size=1:start=0
- تکرار ۱۰
باره اولین
تکفریم:
loop=loop=10:size=1:start=0
- تکرار ۵
باره ۱۰
فریم نخست:
loop=loop=5:size=10:start=0
lut1d
اعمال یک جدول جستجوی یکبعدی (1D LUT) بر روی یک ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- file
- تنظیم نام
فایل جدول
جستجوی
یکبعدی (1D LUT).
فرمتهای پشتیبانیشده در حال حاضر:
- interp
- انتخاب
حالت
درونیابی.
مقادیر موجود عبارتند از:
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
lut3d
اعمال یک جدول جستجوی سهبعدی (3D LUT) بر روی یک ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- file
- تنظیم نام
فایل جدول
جستجوی
سهبعدی (3D LUT).
فرمتهای پشتیبانیشده در حال حاضر:
- interp
- انتخاب
حالت
درونیابی.
مقادیر موجود عبارتند از:
- nearest
- استفاده از مقادیر نزدیکترین نقطه تعریفشده.
- trilinear
- درونیابی مقادیر با استفاده از ۸ نقطه تعیینکننده یک مکعب.
- tetrahedral
- درونیابی مقادیر با استفاده از یک چهاروجهی (تتراهدرون).
- pyramid
- درونیابی مقادیر با استفاده از یک هرم.
- prism
- درونیابی مقادیر با استفاده از یک منشور.
دستورات (Commands)
این فیلتر از گزینه "interp" به عنوان دستورات پشتیبانی میکند.
lumakey
تبدیل مقادیر معینی از روشنایی (luma) به شفافیت.
این فیلتر گزینههای زیر را میپذیرد:
- threshold
- تنظیم روشنایی که به عنوان پایه برای شفافیت استفاده میشود. مقدار پیشفرض 0 است.
- tolerance
- تنظیم محدوده مقادیر روشنایی برای حذف شدن (keyed out). مقدار پیشفرض 0.01 است.
- softness
- تنظیم محدوده نرمی (softness). مقدار پیشفرض 0 است. از این گزینه برای کنترل گذار تدریجی از شفافیت صفر تا کامل استفاده کنید.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. این دستور ساختار نحوی مشابه با گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
lut, lutrgb, lutyuv
محاسبه یک جدول جستجو (look-up table) جهت پیوند دادن هر مقدار ورودی مؤلفه پیکسل به یک مقدار خروجی، و اعمال آن بر روی ویدیوی ورودی.
lutyuv جدول جستجو را بر روی یک ویدیوی ورودی YUV اعمال میکند، و lutrgb بر روی ویدیوی ورودی RGB.
این فیلترها پارامترهای زیر را میپذیرند:
- c0
- تنظیم عبارت مؤلفه پیکسلی نخست
- c1
- تنظیم عبارت مؤلفه پیکسلی دوم
- c2
- تنظیم عبارت مؤلفه پیکسلی سوم
- c3
- تنظیم عبارت مؤلفه پیکسلی چهارم، مربوط به مؤلفه آلفا
- r
- تنظیم عبارت مؤلفه قرمز (red)
- g
- تنظیم عبارت مؤلفه سبز (green)
- b
- تنظیم عبارت مؤلفه آبی (blue)
- a
- عبارت مؤلفه آلفا (alpha)
- y
- تنظیم عبارت مؤلفه Y/روشنایی (luma)
- u
- تنظیم عبارت مؤلفه U/Cb
- v
- تنظیم عبارت مؤلفه V/Cr
هر یک از آنها عبارت مورد استفاده برای محاسبه جدول جستجو را برای مقادیر مؤلفه پیکسل متناظر مشخص میکند.
مؤلفه دقیقی که به هر یک از گزینههای c* اختصاص مییابد به فرمت ورودی بستگی دارد.
فیلتر lut در ورودی به فرمتهای پیکسلی YUV یا RGB نیاز دارد، lutrgb به فرمتهای پیکسلی RGB در ورودی نیاز دارد، و lutyuv به YUV نیاز دارد.
عبارتها میتوانند شامل ثابتها و توابع زیر باشند:
- w
- h
- پهنا و ارتفاع ورودی.
- val
- مقدار ورودی برای مؤلفه پیکسل.
- clipval
- مقدار ورودی، محدودشده به محدوده minval-maxval.
- maxval
- حداکثر مقدار برای مؤلفه پیکسل.
- minval
- حداقل مقدار برای مؤلفه پیکسل.
- negval
- مقدار منفیشده (معکوس) برای مقدار مؤلفه پیکسل، محدودشده به محدوده minval-maxval؛ این متناظر با عبارت "maxval-clipval+minval" است.
- clip(val)
- مقدار محاسبهشده در val، محدودشده به محدوده minval-maxval.
- gammaval(gamma)
- مقدار تصحیح گامای محاسبهشده برای مقدار مؤلفه پیکسل، محدودشده به محدوده minval-maxval. این متناظر با عبارت زیر است: "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"
تمام عبارتها بهطور پیشفرض برابر با "clipval" هستند.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند.
مثالها (Examples)
- معکوس
(نگاتیو)
کردن
ویدیوی
ورودی:
lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val" lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
عبارت بالا با دستور زیر یکسان است:
lutrgb="r=negval:g=negval:b=negval" lutyuv="y=negval:u=negval:v=negval"
- معکوس کردن
روشنایی (luma):
lutyuv=y=negval
- حذف
مؤلفههای
رنگی (chroma) و
تبدیل
ویدیو به یک
تصویر با
طیف
خاکستری:
lutyuv="u=128:v=128"
- اعمال یک
جلوه
سوختگی
روشنایی (luma burning):
lutyuv="y=2*val"
- حذف
مؤلفههای
سبز و آبی:
lutrgb="g=0:b=0"
- تنظیم یک
مقدار ثابت
برای کانال
آلفا در
ورودی:
format=rgba,lutrgb=a="maxval-minval/2"
- تصحیح
گامای
روشنایی با
ضریب 0.5:
lutyuv=y=gammaval(0.5)
- دور
انداختن
کمارزشترین
بیتهای
روشنایی:
lutyuv=y='bitand(val, 128+64+32)'
- جلوهای
شبیه به
تکنیکالر
(Technicolor):
lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
lut2, tlut2
فیلتر "lut2" دو جریان ورودی دریافت کرده و یک جریان را در خروجی میدهد.
فیلتر "tlut2" (جدول جستجوی زمانی ۲) دو فریم متوالی را از یک جریان واحد دریافت میکند.
این فیلتر پارامترهای زیر را میپذیرد:
- c0
- تنظیم عبارت مؤلفه پیکسلی نخست
- c1
- تنظیم عبارت مؤلفه پیکسلی دوم
- c2
- تنظیم عبارت مؤلفه پیکسلی سوم
- c3
- تنظیم عبارت مؤلفه پیکسلی چهارم، مربوط به مؤلفه آلفا
- d
- تنظیم عمق بیت خروجی، تنها برای فیلتر "lut2" در دسترس است. بهطور پیشفرض 0 است، به این معنی که عمق بیت بهطور خودکار از فرمت ورودی نخست انتخاب میشود.
فیلتر "lut2" همچنین از گزینههای framesync پشتیبانی میکند.
هر یک از آنها عبارت مورد استفاده برای محاسبه جدول جستجو را برای مقادیر مؤلفه پیکسلی متناظر مشخص میکند.
مؤلفه دقیقی که به هر یک از گزینههای c* اختصاص مییابد به فرمت ورودیها بستگی دارد.
عبارتها میتوانند شامل ثابتهای زیر باشند:
- w
- h
- پهنا و ارتفاع ورودی.
- x
- مقدار ورودی نخست برای مؤلفه پیکسل.
- y
- مقدار ورودی دوم برای مؤلفه پیکسل.
- bdx
- عمق بیت ویدیوی ورودی نخست.
- bdy
- عمق بیت ویدیوی ورودی دوم.
تمام عبارتها بهطور پیشفرض برابر با "x" هستند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات به جز گزینه "d" پشتیبانی میکند.
مثالها (Examples)
- برجستهسازی
تفاوتها
میان دو
جریان
ویدیویی RGB:
lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
- برجستهسازی
تفاوتها
میان دو
جریان
ویدیویی YUV:
lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
- نمایش
حداکثر
اختلاف
میان دو
جریان
ویدیویی:
lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
maskedclamp
محدود کردن (Clamp) نخستین جریان ورودی بر اساس دومین و سومین جریان ورودی.
مقدار جریان نخست را به گونهای بازمیگرداند که بین (جریان ورودی دوم - "undershoot") و (جریان ورودی سوم + "overshoot") قرار گیرد.
این فیلتر گزینههای زیر را میپذیرد:
- undershoot
- مقدار پیشفرض 0 است.
- overshoot
- مقدار پیشفرض 0 است.
- planes
- تنظیم اینکه کدام پلینها به صورت بیتمپ پردازش شوند؛ پلینهای پردازشنشده از جریان نخست کپی خواهند شد. بهطور پیشفرض با مقدار 0xf، تمام پلینها پردازش میشوند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
maskedmax
ادغام دومین و سومین جریان ورودی در جریان خروجی با استفاده از تفاضلهای مطلق میان دومین جریان ورودی و نخستین جریان ورودی، و تفاضل مطلق میان سومین جریان ورودی و نخستین جریان ورودی. اگر تفاضل مطلق دوم بزرگتر از اولی باشد، مقدار انتخابشده از جریان ورودی دوم خواهد بود و در غیر این صورت از سومین جریان ورودی انتخاب میشود.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم اینکه کدام پلینها به صورت بیتمپ پردازش شوند؛ پلینهای پردازشنشده از جریان نخست کپی خواهند شد. بهطور پیشفرض با مقدار 0xf، تمام پلینها پردازش میشوند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
maskedmerge
ادغام نخستین جریان ورودی با دومین جریان ورودی با استفاده از وزنهای تفکیکشده به ازای هر پیکسل در سومین جریان ورودی.
مقدار 0 در مؤلفه پیکسلی جریان سوم بدین معناست که مؤلفه پیکسلی جریان نخست بدون تغییر بازگردانده میشود، در حالی که مقدار بیشینه (مانند 255 برای ویدیوهای ۸ بیتی) یعنی مؤلفه پیکسلی جریان دوم بدون تغییر بازگردانده میشود. مقادیر میانی میزان ادغام میان مؤلفههای پیکسلی هر دو جریان ورودی را تعیین میکنند.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم اینکه کدام پلینها به صورت بیتمپ پردازش شوند؛ پلینهای پردازشنشده از جریان نخست کپی خواهند شد. بهطور پیشفرض با مقدار 0xf، تمام پلینها پردازش میشوند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
maskedmin
ادغام دومین و سومین جریان ورودی در جریان خروجی با استفاده از تفاضلهای مطلق میان دومین جریان ورودی و نخستین جریان ورودی، و تفاضل مطلق میان سومین جریان ورودی و نخستین جریان ورودی. اگر تفاضل مطلق دوم کمتر از اولی باشد، مقدار از دومین جریان ورودی انتخاب میشود و در غیر این صورت از سومین جریان ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم اینکه کدام پلینها به صورت بیتمپ پردازش شوند؛ پلینهای پردازشنشده از جریان نخست کپی خواهند شد. بهطور پیشفرض با مقدار 0xf، تمام پلینها پردازش میشوند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
maskedthreshold
انتخاب پیکسلها از طریق مقایسه تفاضل مطلق دو جریان ویدیویی با یک آستانه ثابت.
اگر تفاضل مطلق بین مؤلفه پیکسلی جریان ویدیویی اول و دوم مساوی یا کمتر از آستانه مشخصشده توسط کاربر باشد، مؤلفه پیکسلی از جریان ویدیویی اول انتخاب میشود، در غیر این صورت مؤلفه پیکسلی از جریان ویدیویی دوم انتخاب خواهد شد.
این فیلتر گزینههای زیر را میپذیرد:
- threshold
- تنظیم آستانه مورد استفاده هنگام انتخاب پیکسلها بر اساس تفاضل مطلق از دو جریان ویدیویی ورودی.
- planes
- تنظیم اینکه کدام پلینها به صورت بیتمپ پردازش شوند؛ پلینهای پردازشنشده از جریان دوم کپی خواهند شد. بهطور پیشفرض با مقدار 0xf، تمام پلینها پردازش میشوند.
- mode
- تنظیم حالت عملکرد فیلتر. میتواند "abs" یا "diff" باشد. مقدار پیشفرض "abs" است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
maskfun
ایجاد ماسک از ویدیوی ورودی.
به عنوان مثال، برای ایجاد ماسکهای حرکتی پس از فیلتر "tblend" سودمند است.
این فیلتر گزینههای زیر را میپذیرد:
- low
- تنظیم آستانه پایین. هر مؤلفه پیکسلی کمتر یا دقیقاً برابر با این مقدار روی 0 تنظیم خواهد شد.
- high
- تنظیم آستانه بالا. هر مؤلفه پیکسلی بیشتر از این مقدار روی حداکثر مقدار مجاز برای فرمت پیکسلی فعلی تنظیم خواهد شد.
- planes
- تنظیم پلینها جهت فیلتر کردن؛ بهطور پیشفرض تمام پلینهای موجود فیلتر میشوند.
- fill
- پر کردن تمامی پیکسلهای فریم با این مقدار.
- sum
- تنظیم حداکثر میانگین مقدار پیکسل برای فریم. اگر مجموع تمام مؤلفههای پیکسلی از این میانگین بیشتر شود، فریم خروجی بهطور کامل با مقدار تعیینشده توسط گزینه fill پر خواهد شد. معمولاً هنگام استفاده در ترکیب با فیلتر "tblend" برای تغییر صحنهها سودمند است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
mcdeint
اعمال دیاینترلیس با جبران حرکت (motion-compensation deinterlacing).
این فیلتر در ورودی به یک فیلد به ازای هر فریم نیاز دارد و بنابراین باید همراه با yadif=1/3 یا معادل آن استفاده شود.
این فیلتر گزینههای زیر را میپذیرد:
- mode
- تنظیم حالت
دیاینترلیس
کردن.
یکی از مقادیر زیر را میپذیرد:
- fast
- medium
- slow
- استفاده از تخمین حرکت تکرارشونده
- extra_slow
- شبیه به slow، اما از چندین فریم مرجع استفاده میکند.
مقدار پیشفرض fast است.
- parity
- تنظیم زوجیت فیلد تصویر فرضشده برای ویدیوی ورودی. باید یکی از مقادیر زیر باشد:
- 0, tff
- فرض بر برتری فیلد بالایی (top field first)
- 1, bff
- فرض بر برتری فیلد پایینی (bottom field first)
مقدار پیشفرض bff است.
- qp
- تنظیم
پارامتر
کوانتایزیشن
(QP) به ازای هر
بلوک مورد
استفاده در
انکودر
داخلی.
مقادیر بالاتر باید منجر به میدان بردارهای حرکتی هموارتر شوند، اما بهینگی بردارهای منفرد کمتر خواهد بود. مقدار پیشفرض 1 است.
median
انتخاب پیکسل میانه از یک مستطیل مشخص که با شعاع تعریف میشود.
این فیلتر گزینههای زیر را میپذیرد:
- radius
- تنظیم اندازه شعاع افقی. مقدار پیشفرض 1 است. محدوده مجاز عدد صحیح از 1 تا 127 است.
- planes
- تنظیم پلینهای پردازش. پیشفرض 15 است که تمام پلینهای موجود را شامل میشود.
- radiusV
- تنظیم اندازه شعاع عمودی. مقدار پیشفرض 0 است. محدوده مجاز عدد صحیح از 0 تا 127 است. در صورت 0 بودن، مقدار از گزینه افقی "radius" برداشته میشود.
- percentile
- تنظیم صدک میانه (percentile). مقدار پیشفرض 0.5 است. مقدار پیشفرض 0.5 همواره مقادیر میانه را انتخاب میکند، در حالی که 0 مقادیر کمینه و 1 مقادیر بیشینه را انتخاب خواهد کرد.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. این دستور ساختار نحوی مشابه با گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
mergeplanes
ادغام مؤلفههای کانال رنگ از چندین جریان ویدیویی.
این فیلتر حداکثر تا ۴ جریان ورودی را میپذیرد و پلینهای ورودی انتخابی را در ویدیوی خروجی ادغام میکند.
این فیلتر گزینههای زیر را میپذیرد:
- mapping
- تنظیم
نگاشت پلین
ورودی به
خروجی.
پیشفرض
0 است.
نگاشتها به صورت یک بیتمپ مشخص میشوند. این مقدار باید به صورت یک عدد در مبنای ۱۶ (هگزادسیمال) در قالب 0xAa[Bb[Cc[Dd]]] مشخص گردد. عبارت 'Aa' نگاشت نخستین پلین جریان خروجی را توصیف میکند. 'A' شماره جریان ورودی مورد استفاده را تنظیم میکند (از 0 تا 3)، و 'a' شماره پلین ورودی متناظر مورد استفاده را تعیین میکند (از 0 تا 3). بقیه نگاشتها نیز مشابه هستند؛ 'Bb' نگاشت پلین دوم جریان خروجی، 'Cc' نگاشت پلین سوم جریان خروجی و 'Dd' نگاشت پلین چهارم جریان خروجی را توصیف میکند.
- format
- تنظیم فرمت پیکسلی خروجی. پیشفرض "yuva444p" است.
- map0s
- map1s
- map2s
- map3s
- تنظیم نگاشت جریان ورودی به جریان خروجی برای N-امین پلین خروجی. پیشفرض 0 است.
- map0p
- map1p
- map2p
- map3p
- تنظیم نگاشت پلین ورودی به خروجی برای N-امین پلین خروجی. پیشفرض 0 است.
مثالها (Examples)
- ادغام سه
جریان
ویدیویی
خاکستری (gray)
با پهنا و
ارتفاع
یکسان در یک
جریان
ویدیویی
واحد:
[a0][a1][a2]mergeplanes=0x001020:yuv444p
- ادغام
جریان نخست
yuv444p و دومین
جریان
ویدیویی
خاکستری در
یک جریان
ویدیویی yuva444p:
[a0][a1]mergeplanes=0x00010210:yuva444p
- جابهجایی
پلین Y و A در
جریان yuva444p:
format=yuva444p,mergeplanes=0x03010200:yuva444p
- جابهجایی
پلین U و V در
جریان yuv420p:
format=yuv420p,mergeplanes=0x000201:yuv420p
- تبدیل یک
کلیپ rgb24 به yuv444p:
format=rgb24,mergeplanes=0x000102:yuv444p
mestimate
تخمین و صادر کردن بردارهای حرکت با استفاده از الگوریتمهای تطبیق بلوک. بردارهای حرکت در دادههای جانبی فریم ذخیره میشوند تا توسط سایر فیلترها مورد استفاده قرار گیرند.
این فیلتر گزینههای زیر را میپذیرد:
- method
- مشخص کردن روش تخمین حرکت. یکی از مقادیر زیر را میپذیرد:
- esa
- الگوریتم جستجوی جامع (Exhaustive search algorithm).
- tss
- الگوریتم جستجوی سهمرحلهای (Three step search algorithm).
- tdls
- الگوریتم جستجوی لگاریتمی دوبعدی (Two dimensional logarithmic search algorithm).
- ntss
- الگوریتم جستجوی سهمرحلهای نوین (New three step search algorithm).
- fss
- الگوریتم جستجوی چهارمرحلهای (Four step search algorithm).
- ds
- الگوریتم جستجوی الماسی (Diamond search algorithm).
- hexbs
- الگوریتم جستجوی مبتنی بر ششضلعی (Hexagon-based search algorithm).
- epzs
- الگوریتم جستجوی ناحیهای پیشبین ارتقایافته (Enhanced predictive zonal search algorithm).
- umh
- الگوریتم جستجوی چند ششضلعی ناهمگون (Uneven multi-hexagon search algorithm).
مقدار پیشفرض esa است.
- mb_size
- اندازه ماکروبلوک. پیشفرض 16 است.
- search_param
- پارامتر جستجو. پیشفرض 7 است.
mestimate_d3d12
تخمین و صادر کردن بردارهای حرکت با شتابدهی سختافزاری D3D12. این فیلتر از قابلیتهای تخمین حرکت سختافزاری GPU موجود در APIهای ویدیویی DirectX 12 بهره میبرد تا نسبت به فیلتر مبتنی بر نرمافزار "mestimate" بهبود کارایی چشمگیری به دست آورد.
بردارهای حرکت در دادههای جانبی فریم ذخیره میشوند تا توسط سایر فیلترها مورد استفاده قرار گیرند.
این فیلتر مستلزم آن است که ورودی در فرمت پیکسلی سختافزاری "d3d12" باشد. این فیلتر از دقت یکچهارم پیکسل برای تخمین بردار حرکت استفاده میکند.
این فیلتر گزینههای زیر را میپذیرد:
- mb_size
- اندازه ماکروبلوک. تنها مقادیر 8 و 16 پشتیبانی میشوند. پیشفرض 16 است.
مثالها (Examples)
تخمین بردارهای حرکت با شتابدهی سختافزاری D3D12 با بلوکهای 16x16، و بصریسازی آنها:
ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 \
-vf mestimate_d3d12=mb_size=16,hwdownload,format=nv12,codecview=mv=pf \
-c:v libx264 -preset fast -b:v 5M output.mp4
midequalizer
اعمال جلوه تعدیل تصویر میانه (Midway Image Equalization) با استفاده از دو جریان ویدیویی.
تعدیل تصویر میانه یک جفت تصویر را به گونهای تنظیم میکند که هیستوگرام یکسانی داشته باشند، ضمن اینکه پویایی (داینامیک) آنها تا حد امکان حفظ میشود. این فیلتر به عنوان نمونه برای تطبیق نوردهی حاصل از یک جفت دوربین استریو سودمند است.
این فیلتر دارای دو ورودی و یک خروجی است که باید فرمت پیکسلی یکسانی داشته باشند، اما ممکن است اندازههای متفاوتی داشته باشند. خروجی فیلتر ورودی نخست است که با هیستوگرام میانه هر دو ورودی تنظیم شده است.
این فیلتر گزینه زیر را میپذیرد:
- planes
- تنظیم پلینهای پردازش. پیشفرض 15 است که تمام پلینهای موجود را شامل میشود.
minterpolate
تبدیل ویدیو به نرخ فریم مشخصشده با استفاده از درونیابی حرکتی (motion interpolation).
این فیلتر گزینههای زیر را میپذیرد:
- fps
- مشخص کردن نرخ فریم خروجی. این مقدار میتواند گویا باشد مانند "60000/1001". اگر مقدار fps کمتر از نرخ فریم مبدأ باشد، فریمها حذف (drop) میشوند. پیشفرض 60 است.
- mi_mode
- حالت درونیابی حرکت. مقادیر زیر پذیرفته میشوند:
- dup
- تکرار فریم قبلی یا بعدی برای درونیابی فریمهای جدید.
- blend
- ترکیب فریمهای مبدأ. فریم درونیابیشده میانگین فریمهای قبلی و بعدی است.
- mci
- درونیابی با جبران حرکت (Motion compensated interpolation). هنگام انتخاب این حالت، گزینههای زیر مؤثر خواهند بود:
- mc_mode
- حالت جبران حرکت. مقادیر زیر پذیرفته میشوند:
حالت پیشفرض obmc است.
- me_mode
- حالت تخمین حرکت. مقادیر زیر پذیرفته میشوند:
حالت پیشفرض bilat است.
- me
- الگوریتم مورد استفاده برای تخمین حرکت. مقادیر زیر پذیرفته میشوند:
- esa
- الگوریتم جستجوی جامع (Exhaustive search algorithm).
- tss
- الگوریتم جستجوی سهمرحلهای (Three step search algorithm).
- tdls
- الگوریتم جستجوی لگاریتمی دوبعدی (Two dimensional logarithmic search algorithm).
- ntss
- الگوریتم جستجوی سهمرحلهای نوین (New three step search algorithm).
- fss
- الگوریتم جستجوی چهارمرحلهای (Four step search algorithm).
- ds
- الگوریتم جستجوی الماسی (Diamond search algorithm).
- hexbs
- الگوریتم جستجوی مبتنی بر ششضلعی (Hexagon-based search algorithm).
- epzs
- الگوریتم جستجوی ناحیهای پیشبین ارتقایافته (Enhanced predictive zonal search algorithm).
- umh
- الگوریتم جستجوی چند ششضلعی ناهمگون (Uneven multi-hexagon search algorithm).
الگوریتم پیشفرض epzs است.
- mb_size
- اندازه ماکروبلوک. پیشفرض 16 است.
- search_param
- پارامتر جستجوی تخمین حرکت. پیشفرض 32 است.
- vsbmc
- فعالسازی جبران حرکت بلوکی با اندازه متغیر. تخمین حرکت با اندازههای بلوک کوچکتر در مرزهای اشیاء اعمال میشود تا تاری آنها کاهش یابد. پیشفرض 0 (غیرفعال) است.
- scd
- روش تشخیص تغییر صحنه. تغییر صحنه موجب میشود بردارهای حرکت در جهتی تصادفی قرار گیرند. تشخیص تغییر صحنه، فریمهای درونیابیشده را با فریمهای تکراری جایگزین میکند. ممکن است برای سایر حالتها لازم نباشد. مقادیر زیر پذیرفته میشوند:
روش پیشفرض fdiff است.
- scd_threshold
- آستانه تشخیص تغییر صحنه. پیشفرض 10. است.
mix
مخلوط کردن چند جریان ورودی ویدیو در یک جریان ویدیویی واحد.
توضیحات مربوط به گزینههای پذیرفتهشده در ادامه آمده است.
- inputs
- تعداد ورودیها. در صورت عدم تعیین، مقدار پیشفرض 2 است.
- weights
- مشخص کردن وزن هر جریان ویدیویی ورودی به صورت یک دنباله. هر وزن با فاصله (space) جدا میشود. اگر تعداد وزنها کمتر از تعداد فریمها (frames) باشد، آخرین وزن مشخصشده برای تمامی وزنهای تعییننشده باقیمانده استفاده خواهد شد.
- scale
- مشخص کردن مقیاس؛ در صورت تنظیم، در مجموع حاصلضرب هر وزن در مقادیر پیکسلی ضرب میشود تا مقدار پیکسلی مقصد نهایی حاصل شود. بهطور پیشفرض، scale بهطور خودکار متناسب با مجموع وزنها مقیاسبندی میشود.
- planes
- تنظیم پلینها جهت فیلتر کردن. پیشفرض همه پلینها است. محدوده مجاز از 0 تا 15 است.
- duration
- مشخص کردن چگونگی تعیین پایان جریان.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
monochrome
تبدیل ویدیو به تصویر با طیف خاکستری با استفاده از فیلتر رنگی سفارشی.
توضیحات مربوط به گزینههای پذیرفتهشده در ادامه آمده است.
- cb
- تنظیم نقطه آبی کروما (chroma blue). محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 0 است.
- cr
- تنظیم نقطه قرمز کروما (chroma red). محدوده مجاز از -1 تا 1 است. مقدار پیشفرض 0 است.
- size
- تنظیم اندازه فیلتر رنگ. محدوده مجاز از .1 تا 10 است. مقدار پیشفرض 1 است.
- high
- تنظیم شدت روشناییها (highlights). محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0 است.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
morpho
این فیلتر امکان اعمال تبدیلات ریختشناسی (مورفولوژیکی) اصلی مقیاس خاکستری، یعنی فرسایش (erode) و اتساع (dilate) را با ساختارهای دلخواه تعیینشده در دومین جریان ورودی فراهم میکند.
برخلاف پیادهسازی ساده و کارایی بسیار کندتر در فیلترهای erosion و dilation، هنگامی که سرعت اهمیت حیاتی دارد باید به جای آنها از فیلتر "morpho" استفاده شود.
توضیحات مربوط به گزینههای پذیرفتهشده در ادامه آمده است:
- mode
- تنظیم تبدیل ریختشناسی جهت اعمال، میتواند یکی از مقادیر زیر باشد:
پیشفرض "erode" است.
- planes
- تنظیم پلینها جهت فیلتر کردن؛ بهطور پیشفرض تمامی پلینها به جز آلفا فیلتر میشوند.
- structure
- تنظیم اینکه کدام فریمهای ویدیویی ساختار از جریان ورودی دوم پردازش شوند؛ میتواند first یا all باشد. پیشفرض all است.
فیلتر "morpho" همچنین از گزینههای framesync پشتیبانی میکند.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند.
mpdecimate
حذف (Drop) فریمهایی که تفاوت چندانی با فریم قبلی ندارند به منظور کاهش نرخ فریم.
کاربرد اصلی این فیلتر برای انکودینگ با بیتریت بسیار پایین (مانند استریم روی مودم دیالآپ) است، اما از نظر تئوری میتوان از آن برای اصلاح فیلمهایی که تلهسینه معکوس آنها به نادرستی انجام شده است نیز استفاده کرد.
توضیحات مربوط به گزینههای پذیرفتهشده در ادامه آمده است.
- max
- تنظیم
حداکثر
تعداد
فریمهای
متوالی که
میتوانند
حذف شوند
(در صورت
مثبت بودن)،
یا حداقل
فاصله بین
فریمهای
حذفشده (در
صورت منفی
بودن). اگر
مقدار 0
باشد، فریم
بدون توجه
به تعداد
فریمهای
متوالی
حذفشده
قبلی، حذف
میشود.
مقدار پیشفرض 0 است.
- keep
- تنظیم
حداکثر
تعداد
فریمهای
مشابه
متوالی جهت
نادیدهگرفتن
پیش از شروع
به حذف
آنها. اگر
مقدار 0
باشد، فریم
بدون توجه
به تعداد
فریمهای
مشابه
متوالی
پیشین، حذف
میشود.
مقدار پیشفرض 0 است.
- hi
- lo
- frac
- تنظیم
مقادیر
آستانه حذف
فریم.
مقادیر hi و lo برای بلوکهای پیکسلی 8x8 هستند و تفاوت واقعی مقادیر پیکسلها را نشان میدهند، بنابراین آستانه 64 متناظر با ۱ واحد تفاوت برای هر پیکسل، یا همان مقدار به شکل متفاوتی توزیعشده بر روی بلوک است.
یک فریم کاندیدای حذف است اگر هیچ بلوک 8x8 بیشتر از آستانه hi تفاوت نداشته باشد، و بیش از کسری از بلوکها به میزان frac (مقدار 1 به معنای کل تصویر است) اختلافی بیش از آستانه lo نداشته باشند.
مقدار پیشفرض برای hi برابر 64*12، مقدار پیشفرض برای lo برابر 64*5 و مقدار پیشفرض برای frac برابر 0.33 است.
msad
به دست آوردن میانگین مجموع تفاضلهای مطلق (MSAD - Mean Sum of Absolute Differences) میان دو ویدیوی ورودی.
این فیلتر دو ویدیوی ورودی میگیرد.
برای عملکرد صحیح این فیلتر، هر دو ویدیوی ورودی باید رزولوشن و فرمت پیکسلی یکسانی داشته باشند. همچنین فرض میشود که هر دو ورودی تعداد فریمهای برابری دارند که یکبهیک مقایسه میشوند.
مقادیر MSAD به دست آمده به تفکیک مؤلفه، میانگین، کمینه و بیشینه از طریق سامانه لاگگیری چاپ میشوند.
این فیلتر مقدار MSAD محاسبهشده هر فریم را در متادیتای فریم ذخیره میکند.
این فیلتر از گزینههای framesync نیز پشتیبانی میکند.
در مثال زیر، فایل ورودی در حال پردازش main.mpg با فایل مرجع ref.mpg مقایسه میشود.
ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -
multiply
ضرب مقادیر پیکسلی نخستین جریان ویدیویی در مقادیر پیکسلی دومین جریان ویدیویی.
این فیلتر گزینههای زیر را میپذیرد:
- scale
- تنظیم مقیاس اعمالشده بر جریان ویدیویی دوم. بهطور پیشفرض 1 است. محدوده مجاز از 0 تا 9 است.
- offset
- تنظیم آفست (انحراف) اعمالشده بر جریان ویدیویی دوم. بهطور پیشفرض 0.5 است. محدوده مجاز از -1 تا 1 است.
- planes
- مشخص کردن پلینهایی از جریان ویدیویی ورودی که پردازش خواهند شد. بهطور پیشفرض تمام پلینها پردازش میشوند.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند.
negate
معکوس کردن (نگاتیو کردن) ویدیوی ورودی.
این فیلتر گزینه زیر را میپذیرد:
- components
- تنظیم
مؤلفهها
جهت
معکوسسازی.
مقادیر موجود برای مؤلفهها عبارتند از:
- negate_alpha
- با مقدار 1، مؤلفه آلفا (در صورت وجود) معکوس میشود. مقدار پیشفرض 0 است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند.
nlmeans
نویززدایی فریمها با استفاده از الگوریتم میانگینهای غیرمحلی (Non-Local Means).
هر پیکسل با بررسی سایر پیکسلها با زمینههای مشابه تنظیم میشود. این شباهت زمینه با مقایسه وصلههای پیرامونی آنها با اندازه pxp تعریف میگردد. وصلهها در ناحیهای به ابعاد rxr در اطراف پیکسل جستجو میشوند.
توجه داشته باشید که ناحیه جستجو مراکز وصلهها را تعیین میکند، به این معنی که برخی از وصلهها از پیکسلهای خارج از آن ناحیه جستجو تشکیل خواهند شد.
این فیلتر گزینههای زیر را میپذیرد:
- s
- تنظیم قدرت نویززدایی. پیشفرض 1.0 است. باید در محدوده [1.0, 30.0] باشد.
- p
- تنظیم اندازه وصله (patch). پیشفرض 7 است. باید یک عدد فرد در محدوده [0, 99] باشد.
- pc
- مشابه با p
اما برای
پلینهای
کروما.
مقدار پیشفرض 0 و به معنای خودکار است.
- r
- تنظیم اندازه ناحیه جستجو. پیشفرض 15 است. باید یک عدد فرد در محدوده [0, 99] باشد.
- rc
- مشابه با r
اما برای
پلینهای
کروما.
مقدار پیشفرض 0 و به معنای خودکار است.
nnedi
دیاینترلیس ویدیو با استفاده از درونیابی جهتدار لبه با شبکه عصبی (neural network edge directed interpolation).
این فیلتر گزینههای زیر را میپذیرد:
- weights
- گزینه اجباری؛ بدون فایل باینری فیلتر نمیتواند کار کند. در حال حاضر این فایل در نشانی زیر قابل دریافت است: https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
- deint
- تنظیم فریمها برای دیاینترلیس؛ بهطور پیشفرض "all" است. میتواند "all" یا "interlaced" باشد.
- field
- تنظیم حالت
عملکرد.
میتواند یکی از مقادیر زیر باشد:
- planes
- تنظیم پلینهای پردازش؛ بهطور پیشفرض فیلتر تمامی پلینها را پردازش میکند.
- nsize
- تنظیم
اندازه
همسایگی
محلی در
اطراف هر
پیکسل، که
توسط شبکه
عصبی
پیشبین
استفاده
میشود.
میتواند یکی از مقادیر زیر باشد:
- nns
- تنظیم تعداد نورونها در شبکه عصبی پیشبین. میتواند یکی از مقادیر زیر باشد:
- qual
- کنترل تعداد پیشبینیهای مختلف شبکه عصبی که برای محاسبه مقدار خروجی نهایی با هم ادغام میشوند. میتواند "fast"، پیشفرض یا "slow" باشد.
- etype
- تنظیم مجموعه وزنهای مورد استفاده در پیشبین. میتواند یکی از مقادیر زیر باشد:
- pscrn
- کنترل
اینکه آیا
از شبکه
عصبی
پیشغربالگر
(prescreener) برای
تصمیمگیری
در مورد
اینکه
کدام
پیکسلها
باید توسط
شبکه عصبی
پیشبین
پردازش
شوند و
کدامیک با
درونیابی
مکعبی ساده
قابل
رسیدگی
هستند
استفاده
شود یا خیر.
پیشغربالگر
آموزش دیده
است تا
بداند آیا
درونیابی
مکعبی برای
یک پیکسل
کافی خواهد
بود یا باید
توسط شبکه
عصبی
پیشبین
پیشبینی
شود.
پیچیدگی
محاسباتی
شبکه عصبی
پیشغربالگر
بسیار کمتر
از شبکه
عصبی
پیشبین
است. از
آنجا که
بیشتر
پیکسلها
را میتوان
با
درونیابی
مکعبی
پردازش
کرد،
استفاده از
پیشغربالگر
عموماً
منجر به
پردازش
بسیار
سریعتر
میشود.
پیشغربالگر
کاملاً
دقیق است،
بنابراین
تفاوت بین
استفاده از
آن و عدم
استفاده از
آن تقریباً
همیشه
نامحسوس
است.
میتواند یکی از مقادیر زیر باشد:
پیشفرض "new" است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها، به جز گزینه weights پشتیبانی میکند.
noformat
مجبور ساختن libavfilter به عدم استفاده از هر یک از فرمتهای پیکسلی مشخصشده برای ورودی فیلتر بعدی.
این فیلتر پارامترهای زیر را میپذیرد:
- pix_fmts
- فهرستی از نامهای فرمت پیکسلی جداشده با '|'، مانند pix_fmts=yuv420p|monow|rgb24".
مثالها (Examples)
- مجبور
ساختن libavfilter به
استفاده از
فرمتی
متفاوت از
yuv420p برای
ورودی به
فیلتر vflip:
noformat=pix_fmts=yuv420p,vflip
- تبدیل
ویدیوی
ورودی به هر
یک از
فرمتهایی
که در این
فهرست وجود
ندارند:
noformat=yuv420p|yuv444p|yuv410p
noise
افزودن نویز بر روی فریم ورودی ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- all_seed
- c0_seed
- c1_seed
- c2_seed
- c3_seed
- تنظیم سید (بذر) نویز برای مؤلفه پیکسلی خاص، یا برای تمام مؤلفههای پیکسلی در صورت استفاده از all_seed. مقدار پیشفرض 123457 است.
- all_strength, alls
- c0_strength, c0s
- c1_strength, c1s
- c2_strength, c2s
- c3_strength, c3s
- تنظیم شدت نویز برای مؤلفه پیکسلی خاص یا تمام مؤلفههای پیکسلی در صورت استفاده از all_strength. مقدار پیشفرض 0 است. محدوده مجاز [0, 100] است.
- all_flags, allf
- c0_flags, c0f
- c1_flags, c1f
- c2_flags, c2f
- c3_flags, c3f
- تنظیم فلگهای مؤلفه پیکسلی یا تنظیم پرچمها برای تمام مؤلفهها در صورت استفاده از all_flags. مقادیر موجود برای پرچمهای مؤلفه عبارتند از:
مثالها (Examples)
افزودن نویز زمانی و یکنواخت به ویدیوی ورودی:
noise=alls=20:allf=t+u
normalize
نرمالسازی ویدیوی RGB (معروف به کشش هیستوگرام، کشش کنتراست). ببینید: https://en.wikipedia.org/wiki/Normalization_(image_processing)
برای هر کانال از هر فریم، فیلتر محدوده ورودی را محاسبه کرده و آن را به صورت خطی به محدوده خروجی مشخصشده توسط کاربر نگاشت میکند. محدوده خروجی بهطور پیشفرض کل محدوده دینامیکی از سیاه خالص تا سفید خالص است.
میتوان از هموارسازی زمانی (temporal smoothing) روی محدوده ورودی برای کاهش سوسوزدن (تغییرات سریع روشنایی) ناشی از ورود یا خروج اشیاء کوچک تیره یا روشن به صحنه استفاده کرد. این شبیه به نوردهی خودکار (کنترل خودکار بهره) در یک دوربین ویدیویی است و مانند دوربین ویدیویی، ممکن است موجب دورهای از بیشنوردهی یا کمنوردهی ویدیو شود.
کانالهای R، G، B را میتوان به صورت مستقل نرمال کرد که ممکن است باعث مقداری تغییر رنگ (color shifting) شود، یا به صورت پیوندیافته با یکدیگر به عنوان یک تککانال، که از تغییر رنگ جلوگیری میکند. نرمالسازی پیوندیافته فام رنگ (hue) را حفظ میکند. نرمالسازی مستقل این کار را نمیکند، بنابراین میتوان از آن برای حذف برخی خطاهای رنگی (color casts) استفاده کرد. نرمالسازی مستقل و پیوندیافته را میتوان با هر نسبتی ترکیب کرد.
فیلتر normalize گزینههای زیر را میپذیرد:
- blackpt
- whitept
- رنگهایی که محدوده خروجی را تعریف میکنند. کمترین مقدار ورودی به blackpt نگاشت میشود. بیشترین مقدار ورودی به whitept نگاشت میشود. مقادیر پیشفرض به ترتیب سیاه و سفید هستند. مشخص کردن رنگ سفید برای blackpt و سیاه برای whitept ویدیوی نرمالشده با رنگ معکوس ارائه میدهد. سایههای خاکستری میتوانند برای کاهش محدوده دینامیکی (کنتراست) استفاده شوند. مشخص کردن رنگهای اشباع در اینجا میتواند جلوههای جالبی ایجاد کند.
- smoothing
- تعداد فریمهای قبلی جهت استفاده برای هموارسازی زمانی. محدوده ورودی هر کانال با استفاده از میانگین متحرک روی فریم فعلی و smoothing فریم پیشین هموار میشود. پیشفرض 0 است (بدون هموارسازی زمانی).
- independence
- کنترل نسبت نرمالسازی مستقل کانالها (تغییردهنده رنگ) به نرمالسازی پیوندیافته (حفظکننده رنگ). مقدار 0.0 کاملاً پیوندیافته و 1.0 کاملاً مستقل است. پیشفرض 1.0 (کاملاً مستقل) است.
- strength
- قدرت کلی فیلتر. مقدار 1.0 قدرت کامل است. مقدار 0.0 یک عملیات بیاثر نسبتاً پرهزینه است. پیشفرض 1.0 (قدرت کامل) است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها، به جز گزینه smoothing پشتیبانی میکند. این دستور ساختار نحوی مشابه با گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
مثالها (Examples)
کشش کنتراست ویدیو برای استفاده از تمام محدوده دینامیکی، بدون هموارسازی زمانی؛ بسته به محتوای مبدأ ممکن است سوسو بزند:
normalize=blackpt=black:whitept=white:smoothing=0
همانند بالا، اما با ۵۰ فریم هموارسازی زمانی؛ بسته به محتوای مبدأ سوسوزدن باید کاهش یابد:
normalize=blackpt=black:whitept=white:smoothing=50
همانند بالا، اما با نرمالسازی کانالهای پیوندیافته با حفظ فام رنگ:
normalize=blackpt=black:whitept=white:smoothing=50:independence=0
همانند بالا، اما با نصف قدرت:
normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
نگاشت تاریکترین رنگ ورودی به قرمز، روشنترین رنگ ورودی به فیروزهای:
normalize=blackpt=red:whitept=cyan
null
عبور دادن منبع ویدیو به خروجی بدون هیچ تغییری.
ocio
فیلتر کتابخانه OpenColorIO
این فیلتر به شما امکان میدهد مدیریت رنگ را با استفاده از کتابخانه OpenColorIO انجام دهید. برای جزئیات بیشتر به https://opencolorio.org مراجعه کنید. برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-libopencolorio" پیکربندی کنید.
این فیلتر گزینههای زیر را میپذیرد:
- config
- بهطور پیشفرض فیلتر از پیکربندی OCIO تعریفشده توسط متغیر محیطی OCIO استفاده خواهد کرد، اما این پارامتر به شما امکان میدهد مکان آن را بهطور صریح مشخص کنید. اگر به تازگی کار را آغاز کردهاید، میتوانید از config=ocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1 استفاده کنید که یکی از پیشفرضهای داخلی را مشخص میکند.
- input
- تنظیم فضای رنگی ورودی.
- output
- تنظیم فضای رنگی خروجی.
- display
- تنظیم فضای رنگی نمایشگر، در ترکیب با view استفاده میشود.
- view
- تنظیم فضای رنگی نما (view)، در ترکیب با display استفاده میشود.
- inverse
- هنگام استفاده در ترکیب با display و view، این گزینه تبدیل را معکوس میکند، بنابراین از یک display/view به "فضای رنگی ورودی" میرود.
- filetransform
- به شما امکان میدهد به جای فایل پیکربندی OCIO، یک فایل تبدیل خارجی مشخص کنید. این گزینه برای اعمال یک تبدیل منفرد بدون نیاز به یک فایل پیکربندی کامل OCIO سودمند است.
- format
- به شما اجازه میدهد فرمت پیکسلی (pix_fmt) خروجی فیلتر OCIO را تعیین کنید. این مقدار *حتماً* باید یک فضای رنگی RGB باشد، بنابراین شما محدود به گزینههای rgb24، rgba، rgb48، rgba48، gbrp10، gbrp12، gbrpf32le و gbrapf32le هستید؛ برای اغلب موارد انکودینگ rgb48 توصیه میشود.
- context_params
- به شما اجازه میدهد پارامترهای زمینه اضافی را برای فیلتر OCIO مشخص کنید. این یک فهرست از جفتهای key=value است که با دونقطه از هم جدا شدهاند.
مثالها (Examples)
نگاشت از ACEScg به ACEScct، با این فرض که فایل OCIO از طریق متغیر محیطی OCIO تعریف شده است.
input=ACEScg:output=ACEScct:format=rgb48
نگاشت از ACEScg به یک نمایشگر sRGB با استفاده از تبدیل نمای "ACES 1.0 - SDR Video"، با این فرض که فایل OCIO از طریق متغیر محیطی OCIO تعریف شده است. توجه داشته باشید که باید آرگومان را درون گیومه قرار دهید تا مطمئن شوید فاصلهها به درستی تفسیر میشوند.
input=ACEScg:display=sRGB - Display:view=ACES 1.0 - SDR Video:format=rgb48
همانند بالا اما با استفاده از فایل OCIO به نام studio-config-v1.0.0_aces-v1.3_ocio-v2.1_ns.ocio به جای متغیر محیطی OCIO.
config=studio-config-v1.0.0_aces-v1.3_ocio-v2.1_ns.ocio:input=ACEScg:display=sRGB - Display:view=ACES 1.0 - SDR Video:format=rgb48
اگر در حال تبدیل به YCrCb هستید، همچنان باید ماتریس رنگ را برای تبدیل تنظیم کنید. این یک مثال خوب از ترکیب این دو است.
ffmpeg -y -i SOURCEFRAMES.%05d.exr -c:v libx265 -vf "ocio=input=ACEScg:output=ACEScct:format=rgb48,scale=in_color_matrix=bt709:out_color_matrix=bt709,format=yuv444p10" OUTPUTFILE.mov
ocr
تشخیص نوری نویسهها (OCR - Optical Character Recognition)
این فیلتر از Tesseract برای تشخیص نوری نویسهها استفاده میکند. برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-libtesseract" پیکربندی کنید.
این فیلتر گزینههای زیر را میپذیرد:
- datapath
- تنظیم مسیر دادهها به دادههای tesseract. پیشفرض استفاده از مقداری است که هنگام نصب تعیین شده بود.
- language
- تنظیم زبان، پیشفرض "eng" است.
- whitelist
- تنظیم فهرست مجاز نویسهها.
- blacklist
- تنظیم فهرست غیرمجاز نویسهها.
این فیلتر متن تشخیصدادهشده را به عنوان متادیتای فریم "lavfi.ocr.text" صادر میکند. این فیلتر میزان اطمینان کلمات تشخیصدادهشده را به عنوان متادیتای فریم "lavfi.ocr.confidence" صادر میکند.
ocv
اعمال تبدیل ویدیویی با استفاده از libopencv.
برای فعالسازی این فیلتر، کتابخانه و هدرهای libopencv را نصب کرده و FFmpeg را با "--enable-libopencv" پیکربندی کنید.
این فیلتر پارامترهای زیر را میپذیرد:
- filter_name
- نام فیلتر libopencv برای اعمال.
- filter_params
- پارامترهایی که به فیلتر libopencv ارسال میشوند. در صورت عدم تعیین، مقادیر پیشفرض فرض خواهند شد.
برای اطلاعات دقیقتر به مستندات رسمی libopencv مراجعه فرمایید: http://docs.opencv.org/master/modules/imgproc/doc/filtering.html
چندین فیلتر libopencv پشتیبانی میشوند؛ به بخشهای زیر مراجعه کنید.
dilate
اتساع یک تصویر با استفاده از یک عنصر ساختاری مشخص. این متناظر با تابع "cvDilate" در libopencv است.
پارامترهای زیر را میپذیرد: struct_el|nb_iterations.
struct_el یک عنصر ساختاری را نشان میدهد و ساختار نحوی زیر را دارد: colsxrows+anchor_xxanchor_y/shape
cols و rows نشاندهنده تعداد ستونها و ردیفهای عنصر ساختاری هستند، anchor_x و anchor_y نقطه لنگر (anchor point)، و shape شکل عنصر ساختاری است. shape باید "rect" یا "cross" یا "ellipse" یا "custom" باشد.
اگر مقدار shape برابر "custom" باشد، باید رشتهای با فرمت "=filename" به دنبال آن بیاید. فرض میشود فایلی با نام filename یک تصویر باینری را نشان میدهد که در آن هر نویسه قابل چاپ متناظر با یک پیکسل روشن است. هنگامی که یک shape سفارشی استفاده میشود، cols و rows نادیده گرفته شده و تعداد ستونها و ردیفهای فایل خواندهشده به جای آن فرض میشود.
مقدار پیشفرض برای struct_el برابر "3x3+0x0/rect" است.
nb_iterations تعداد دفعاتی را مشخص میکند که تبدیل بر روی تصویر اعمال میشود، و پیشفرض آن 1 است.
چند مثال:
# استفاده از مقادیر پیشفرض ocv=dilate # اتساع با استفاده از عنصر ساختاری صلیب 5x5، با دو تکرار ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2 # خواندن شکل از فایل diamond.shape، با دو تکرار. # فایل diamond.shape ممکن است شامل الگویی از نویسهها مانند این باشد: # * # *** # ***** # *** # * # ستونها و ردیفهای مشخصشده نادیده گرفته میشوند # اما مختصات نقطه لنگر نادیده گرفته نمیشوند ocv=dilate:0x0+2x2/custom=diamond.shape|2
erode
فرسایش یک تصویر با استفاده از یک عنصر ساختاری مشخص. این متناظر با تابع "cvErode" در libopencv است.
پارامترهای struct_el:nb_iterations را با همان ساختار نحوی و مفاهیم فیلتر dilate میپذیرد.
smooth
هموارسازی ویدیوی ورودی.
این فیلتر پارامترهای زیر را میگیرد: type|param1|param2|param3|param4.
type نوع فیلتر هموارسازی جهت اعمال است، و باید یکی از مقادیر زیر باشد: "blur"، "blur_no_scale"، "median"، "gaussian" یا "bilateral". مقدار پیشفرض "gaussian" است.
معنای param1، param2، param3 و param4 به نوع فیلتر هموارسازی بستگی دارد. param1 و param2 مقادیر عدد صحیح مثبت یا 0 را میپذیرند. param3 و param4 مقادیر اعشاری (ممیز شناور) را میپذیرند.
مقدار پیشفرض برای param1 برابر 3 است. مقدار پیشفرض برای سایر پارامترها 0 است.
این پارامترها متناظر با پارامترهای اختصاصیافته به تابع "cvSmooth" در libopencv هستند.
oscilloscope
اسیلوسکوپ ویدیویی دوبعدی.
سودمند برای اندازهگیری پاسخ ضربه مکانی، پاسخهای پله، تأخیرهای کروما و غیره.
این فیلتر پارامترهای زیر را میپذیرد:
- x
- تنظیم موقعیت افقی (x) مرکز اسکوپ.
- y
- تنظیم موقعیت عمودی (y) مرکز اسکوپ.
- s
- تنظیم اندازه اسکوپ، نسبت به قطر فریم.
- t
- تنظیم شیب/چرخش اسکوپ.
- o
- تنظیم کدر بودن (opacity) رد نما.
- tx
- تنظیم موقعیت افقی (x) مرکز رد نما.
- ty
- تنظیم موقعیت عمودی (y) مرکز رد نما.
- tw
- تنظیم عرض رد نما، نسبت به عرض فریم.
- th
- تنظیم ارتفاع رد نما، نسبت به ارتفاع فریم.
- c
- تنظیم مؤلفههایی که باید ردیابی شوند. بهطور پیشفرض سه مؤلفه نخست را ردیابی میکند.
- g
- ترسیم شبکه شطرنجی رد نما. بهطور پیشفرض فعال است.
- st
- ترسیم برخی آمارها. بهطور پیشفرض فعال است.
- sc
- ترسیم اسکوپ. بهطور پیشفرض فعال است.
دستورات (Commands)
این فیلتر از دستوراتی مشابه گزینهها پشتیبانی میکند. این دستور ساختار نحوی مشابه با گزینه متناظر را میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
مثالها (Examples)
- بررسی کامل
نخستین
ردیف فریم
ویدیو:
oscilloscope=x=0.5:y=0:s=1
- بررسی کامل
آخرین ردیف
فریم ویدیو:
oscilloscope=x=0.5:y=1:s=1
- بررسی کامل
خط پنجم از
یک فریم
ویدیویی با
ارتفاع 1080:
oscilloscope=x=0.5:y=5/1080:s=1
- بررسی کامل
آخرین ستون
فریم ویدیو:
oscilloscope=x=1:y=0.5:s=1:t=1
overlay
همپوشانی یک ویدیو بر روی ویدیوی دیگر.
این فیلتر دو ورودی دریافت کرده و یک خروجی ارائه میدهد. ورودی نخست ویدیوی "اصلی" (main) است که ورودی دوم روی آن همپوشانی میشود.
پارامترهای زیر را میپذیرد:
توضیحات مربوط به گزینههای پذیرفتهشده در ادامه آمده است:
- x
- y
- تنظیم عبارت برای مختصات x و y ویدیوی همپوشانیشده روی ویدیوی اصلی. مقدار پیشفرض برای هر دو عبارت "0" است. در صورتی که عبارت نامعتبر باشد، روی مقداری بسیار بزرگ تنظیم میشود (به این معنی که همپوشانی درون ناحیه قابل مشاهده خروجی نمایش داده نخواهد شد).
- eof_action
- به framesync مراجعه کنید.
- eval
- تنظیم زمان
ارزیابی
عبارتهای
x و y.
مقادیر زیر را میپذیرد:
مقدار پیشفرض frame است.
- shortest
- به framesync مراجعه کنید.
- format
- تنظیم فرمت
برای
ویدیوی
خروجی.
مقادیر زیر را میپذیرد:
- yuv420
- اجبار خروجی صفحهای (planar) با فرمت YUV 4:2:0 ۸ بیتی
- yuv420p10
- اجبار خروجی صفحهای با فرمت YUV 4:2:0 ۱۰ بیتی
- yuv422
- اجبار خروجی صفحهای با فرمت YUV 4:2:2 ۸ بیتی
- yuv422p10
- اجبار خروجی صفحهای با فرمت YUV 4:2:2 ۱۰ بیتی
- yuv444
- اجبار خروجی صفحهای با فرمت YUV 4:4:4 ۸ بیتی
- yuv444p10
- اجبار خروجی صفحهای با فرمت YUV 4:4:4 ۱۰ بیتی
- rgb
- اجبار خروجی بستهبندیشده (packed) با فرمت RGB ۸ بیتی
- gbrp
- اجبار خروجی صفحهای با فرمت RGB ۸ بیتی
- auto
- انتخاب خودکار فرمت
مقدار پیشفرض yuv420 است.
- repeatlast
- به framesync مراجعه کنید.
- alpha
- تنظیم فرمت آلفای ویدیوی همپوشانیشده؛ میتواند straight یا premultiplied یا auto برای انتخاب خودکار حالت آلفا باشد. پیشفرض auto است.
عبارتهای x و y میتوانند شامل پارامترهای زیر باشند:
- main_w, W
- main_h, H
- عرض و ارتفاع ورودی اصلی.
- overlay_w, w
- overlay_h, h
- عرض و ارتفاع ورودی همپوشانی.
- x
- y
- مقادیر محاسبهشده برای x و y. این مقادیر برای هر فریم جدید ارزیابی میشوند.
- hsub
- vsub
- مقادیر زیرنمونهبرداری افقی و عمودی کروما برای فرمت خروجی. به عنوان مثال برای فرمت پیکسلی "yuv422p"، مقدار hsub برابر 2 و vsub برابر 1 است.
- n
- شماره فریم ورودی، با شروع از 0
- pos
- موقعیت فریم ورودی در فایل، در صورت نامشخص بودن NAN؛ منسوخ شده است، استفاده نکنید
- t
- برچسب زمانی، بر حسب ثانیه. اگر برچسب زمانی ورودی ناشناخته باشد برابر NAN است.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
توجه داشته باشید که متغیرهای n و t تنها زمانی در دسترس هستند که ارزیابی به ازای هر فریم (per frame) انجام شود، و در صورتی که eval روی init تنظیم شده باشد به NAN ارزیابی میشوند.
توجه داشته باشید که فریمها به ترتیب برچسب زمانی از هر ویدیوی ورودی گرفته میشوند؛ بنابراین اگر برچسبهای زمانی اولیه آنها متفاوت باشد، ایده خوبی است که هر دو ورودی را از یک فیلتر setpts=PTS-STARTPTS عبور دهید تا همانند مثال فیلتر movie، هر دو با یک برچسب زمانی صفر یکسان آغاز شوند.
میتوانید همپوشانیهای بیشتری را به صورت زنجیرهای متصل کنید، اما باید کارایی چنین رویکردی را بیازمایید.
دستورات (Commands)
این فیلتر از دستورات زیر پشتیبانی میکند:
- x
- y
- تغییر
مقادیر x و y
ورودی
همپوشانی.
این دستور
ساختار
نحوی مشابه
با گزینه
متناظر را
میپذیرد.
اگر عبارت مشخصشده معتبر نباشد، مقدار فعلی آن حفظ میشود.
مثالها (Examples)
- رسم
همپوشانی
در فاصله ۱۰
پیکسلی از
گوشه پایین
سمت راست
ویدیوی
اصلی:
overlay=main_w-overlay_w-10:main_h-overlay_h-10
با استفاده از گزینههای نامدار، مثال بالا به این صورت درمیآید:
overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
- درج یک
لوگوی PNG
شفاف در
گوشه پایین
سمت چپ
ورودی، با
استفاده از
ابزار ffmpeg
همراه با
گزینه
"-filter_complex":
ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
- درج ۲ لوگوی
PNG شفاف
مختلف
(لوگوی دوم
در گوشه
پایین سمت
راست) با
استفاده از
ابزار ffmpeg:
ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
- افزودن یک
لایه رنگی
شفاف بر روی
ویدیوی
اصلی؛
عبارت
"WxH" باید
اندازه
ورودی اصلی
فیلتر overlay را
مشخص کند:
color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
- پخش ویدیوی
اصلی و نسخه
فیلترشده
(در اینجا
با فیلتر deshake)
در کنار هم
با استفاده
از ابزار ffplay:
ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
دستور بالا معادل دستور زیر است:
ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
- ایجاد یک
همپوشانی
کشویی که از
سمت چپ
پدیدار شده
و از زمان 2
به سمت بخش
بالای راست
صفحه حرکت
میکند:
overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
- ترکیب
خروجی با
قرار دادن
دو ویدیوی
ورودی در
کنار
یکدیگر:
ffmpeg -i left.avi -i right.avi -filter_complex " nullsrc=size=200x100 [background]; [0:v] setpts=PTS-STARTPTS, scale=100x100 [left]; [1:v] setpts=PTS-STARTPTS, scale=100x100 [right]; [background][left] overlay=shortest=1 [background+left]; [background+left][right] overlay=shortest=1:x=100 [left+right] "
- ماسک کردن
۱۰ تا ۲۰
ثانیه از یک
ویدیو با
اعمال
فیلتر delogo بر
روی یک بخش:
ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k \ -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]' \ masked.avi
- زنجیر کردن
چندین
همپوشانی
به صورت
آبشاری:
nullsrc=s=200x200 [bg]; testsrc=s=100x100, split=4 [in0][in1][in2][in3]; [in0] lutrgb=r=0, [bg] overlay=0:0 [mid0]; [in1] lutrgb=g=0, [mid0] overlay=100:0 [mid1]; [in2] lutrgb=b=0, [mid1] overlay=0:100 [mid2]; [in3] null, [mid2] overlay=100:100 [out0]
owdenoise
اعمال نویززدای موجک فراتکمیل (Overcomplete Wavelet denoiser).
این فیلتر گزینههای زیر را میپذیرد:
- depth
- تنظیم عمق.
مقادیر عمق بزرگتر، مؤلفههای فرکانس پایین را بیشتر نویززدایی میکنند، اما سرعت فیلتر کردن را کاهش میدهند.
باید یک عدد صحیح در محدوده 8-16 باشد، پیشفرض 8 است.
- luma_strength, ls
- تنظیم قدرت
روشنایی (luma).
باید یک مقدار ممیز شناور در محدوده 0-1000 باشد، پیشفرض 1.0 است.
- chroma_strength, cs
- تنظیم قدرت
کروما (chroma).
باید یک مقدار ممیز شناور در محدوده 0-1000 باشد، پیشفرض 1.0 است.
pad
افزودن فاصلهگذاری (پدینگ - padding) به تصویر ورودی، و قرار دادن ورودی اصلی در مختصات x و y ارائهشده.
پارامترهای زیر را میپذیرد:
- width, w
- height, h
- مشخص کردن
عبارتی
برای
اندازه
تصویر
خروجی
همراه با
فاصلهگذاریهای
اضافهشده.
اگر مقدار
width یا height
برابر 0
باشد،
اندازه
ورودی
متناظر
برای خروجی
استفاده
میشود.
عبارت width میتواند به مقدار تنظیمشده توسط عبارت height ارجاع دهد و برعکس.
مقدار پیشفرض width و height برابر 0 است.
- x
- y
- مشخص کردن
آفستها
برای قرار
دادن تصویر
ورودی در
ناحیه
پدینگ،
نسبت به
حاشیه
بالا/چپ
تصویر
خروجی.
عبارت x میتواند به مقدار تنظیمشده توسط عبارت y ارجاع دهد و برعکس.
مقدار پیشفرض x و y برابر 0 است.
اگر x یا y به یک عدد منفی ارزیابی شوند، تغییر داده خواهند شد تا تصویر ورودی در مرکز ناحیه پدینگ قرار گیرد.
- color
- مشخص کردن
رنگ ناحیه
پدینگ. برای
ساختار
نحوی این
گزینه، به
بخش "Color" در
راهنمای ffmpeg-utils
مراجعه
کنید.
مقدار پیشفرض color برابر "black" است.
- eval
- مشخص کردن
زمان
ارزیابی
عبارتهای
width، height، x و y.
مقادیر زیر را میپذیرد:
مقدار پیشفرض init است.
- aspect
- پدینگ بر اساس نسبت تصویر (aspect) به جای یک رزولوشن مشخص.
مقادیر گزینههای width، height، x و y عبارتهایی شامل ثابتهای زیر هستند:
- in_w
- in_h
- عرض و ارتفاع ویدیوی ورودی.
- iw
- ih
- همانند in_w و in_h هستند.
- out_w
- out_h
- عرض و ارتفاع خروجی (اندازه ناحیه پدینگشده)، همانگونه که توسط عبارتهای width و height مشخص شده است.
- ow
- oh
- همانند out_w و out_h هستند.
- x
- y
- آفستهای x و y همانطور که توسط عبارتهای x و y مشخص شده است، یا در صورتی که هنوز تعیین نشده باشد برابر NAN.
- a
- همانند iw / ih
- sar
- نسبت تصویر نمونه ورودی (sample aspect ratio).
- dar
- نسبت تصویر نمایش ورودی (display aspect ratio)، همانند (iw / ih) * sar است.
- hsub
- vsub
- مقادیر زیرنمونهبرداری افقی و عمودی کروما. برای مثال برای فرمت پیکسلی "yuv422p" مقدار hsub برابر 2 و vsub برابر 1 است.
مثالها (Examples)
- افزودن
فاصلهگذاری
با رنگ "violet"
به ویدیوی
ورودی.
اندازه
ویدیوی
خروجی 640x480
است، و گوشه
بالا-چپ
ویدیوی
ورودی در
ستون 0،
ردیف 40 قرار
میگیرد:
pad=640:480:0:40:violet
مثال بالا معادل دستور زیر است:
pad=width=640:height=480:x=0:y=40:color=violet
- پدینگ
ورودی برای
رسیدن به
خروجی با
ابعادی که
به میزان 3/2
افزایش
یافته است،
و قرار دادن
ویدیوی
ورودی در
مرکز ناحیه
پدینگ:
pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
- پدینگ
ورودی جهت
دستیابی به
یک خروجی
مربعی با
اندازهای
برابر با
بیشترین
مقدار بین
عرض و
ارتفاع
ورودی، و
قرار دادن
ویدیوی
ورودی در
مرکز ناحیه
پدینگ:
pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
- پدینگ
ورودی جهت
به دست
آوردن نسبت
نهایی عرض
به ارتفاع 16:9:
pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
- در مورد
ویدیوی
آنامورفیک،
برای تنظیم
صحیح نسبت
تصویر
نمایش
خروجی،
لازم است از
sar در عبارت
استفاده
شود، مطابق
با رابطه
زیر:
(ih * X / ih) * sar = output_dar X = output_dar / sar
بنابراین مثال قبلی باید به شکل زیر تغییر کند:
pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
- دو برابر
کردن
اندازه
خروجی و
قرار دادن
ویدیوی
ورودی در
گوشه
پایین-راست
ناحیه
پدینگشده
خروجی:
pad="2*iw:2*ih:ow-iw:oh-ih"
palettegen
تولید یک پالت رنگی (palette) برای کل یک جریان ویدیویی.
این فیلتر گزینههای زیر را میپذیرد:
- max_colors
- تنظیم حداکثر تعداد رنگها برای کوانتایز کردن در پالت. نکته: پالت همچنان شامل ۲۵۶ رنگ خواهد بود؛ خانههای استفادهنشده پالت سیاه خواهند بود.
- reserve_transparent
- ایجاد پالتی با حداکثر ۲۵۵ رنگ و رزرو آخرین رنگ برای شفافیت. رزرو رنگ شفافیت برای بهینهسازی GIF سودمند است. در صورت عدم تنظیم، حداکثر تعداد رنگها در پالت ۲۵۶ خواهد بود. احتمالاً میخواهید این گزینه را برای یک تصویر مستقل غیرفعال کنید. بهطور پیشفرض تنظیم شده است.
- transparency_color
- تنظیم رنگی که به عنوان پسزمینه برای شفافیت استفاده خواهد شد.
- stats_mode
- تنظیم حالت
آمارگیری.
مقادیر زیر را میپذیرد:
مقدار پیشفرض full است.
این فیلتر همچنین متادیتای فریم "lavfi.color_quant_ratio" ("nb_color_in / nb_color_out") را صادر میکند که میتوانید برای ارزیابی میزان کوانتایزاسیون رنگ پالت از آن استفاده کنید. این اطلاعات در سطح گزارشگیری info نیز قابل مشاهده است.
مثالها (Examples)
- •
- تولید یک
پالت معرف
از یک
ویدیوی
مشخص با
استفاده از
ffmpeg:
ffmpeg -i input.mkv -vf palettegen palette.png
paletteuse
استفاده از یک پالت برای کاهش نمونه (downsample) یک جریان ویدیویی ورودی.
این فیلتر دو ورودی دریافت میکند: یک جریان ویدیو و یک پالت. پالت باید تصویری به اندازه ۲۵۶ پیکسل باشد.
این فیلتر گزینههای زیر را میپذیرد:
- dither
- انتخاب حالت دیترینگ (dithering). الگوریتمهای موجود عبارتند از:
- bayer
- دیترینگ مرتبشده بایر 8x8 (قطعی)
- heckbert
- دیترینگ طبق تعریف پل هکبرت در سال ۱۹۸۲ (پخش خطای ساده). نکته: این دیترینگ گاهی "نادرست" در نظر گرفته میشود و به عنوان مرجع گنجانده شده است.
- floyd_steinberg
- دیترینگ فلوید و اشتاینبرگ (پخش خطا)
- sierra2
- دیترینگ فرانکی سیرا نسخه ۲ (پخش خطا)
- sierra2_4a
- دیترینگ فرانکی سیرا نسخه ۲ "Lite" (پخش خطا)
- sierra3
- دیترینگ فرانکی سیرا نسخه ۳ (پخش خطا)
- burkes
- دیترینگ برکس (پخش خطا)
- atkinson
- دیترینگ اتکینسون توسط بیل اتکینسون در شرکت اپل (پخش خطا)
- none
- غیرفعالسازی دیترینگ.
پیشفرض sierra2_4a است.
- bayer_scale
- هنگامی که
دیترینگ bayer
انتخاب شده
باشد، این
گزینه
مقیاس الگو
را تعیین
میکند
(میزان وضوح
الگوی خطوط
متقاطع). یک
مقدار کم به
معنای
الگوی
واضحتر
برای اثر
نواری کمتر
است، و
مقدار
بالاتر به
معنای
الگوی کمتر
قابل
مشاهده به
قیمت ایجاد
اثر نواری
(banding) بیشتر
است.
این گزینه باید یک مقدار عدد صحیح در محدوده [0,5] باشد. پیشفرض 2 است.
- diff_mode
- در صورت تنظیم، ناحیه مورد پردازش را تعیین میکند
- rectangle
- تنها مستطیل در حال تغییر مجدداً پردازش خواهد شد. این شبیه به مکانیزم فشردهسازی برش/آفست در GIF است. این گزینه میتواند در صورت تغییر تنها بخشی از تصویر برای افزایش سرعت سودمند باشد، و کاربردهایی از جمله محدود کردن دامنه دیترینگ پخش خطا (dither) به مستطیلی که صحنه متحرک را در بر میگیرد دارد (اگر صحنه چندان تغییر نکند، منجر به خروجی قطعیتر و در نتیجه نویز متحرک کمتر و فشردهسازی بهتر GIF میشود).
پیشفرض none است.
- new
- گرفتن پالت جدید برای هر فریم خروجی.
- alpha_threshold
- تنظیم
آستانه
آلفا برای
شفافیت.
مقادیر
آلفا
بالاتر از
این آستانه
کاملاً کدر
در نظر
گرفته
میشوند، و
مقادیر
پایینتر
از این
آستانه
کاملاً
شفاف در نظر
گرفته
خواهند شد.
این گزینه باید یک مقدار عدد صحیح در محدوده [0,255] باشد. پیشفرض 128 است.
مثالها (Examples)
- •
- استفاده از
یک پالت
(برای مثال
تولیدشده
با palettegen) جهت
انکود یک GIF
با استفاده
از ffmpeg:
ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
perspective
تصحیح پرسپکتیو ویدیویی که به صورت عمود بر صفحه تصویربرداری نشده است.
توضیحات مربوط به پارامترهای پذیرفتهشده در ادامه آمده است.
- x0
- y0
- x1
- y1
- x2
- y2
- x3
- y3
- تنظیم
عبارت
مختصات
برای
گوشههای
بالا-چپ،
بالا-راست،
پایین-چپ و
پایین-راست.
مقادیر
پیشفرض
"0:0:W:0:0:H:W:H"
هستند که با
آنها
پرسپکتیو
بدون تغییر
باقی خواهد
ماند. اگر
گزینه
"sense" روی
"source"
تنظیم شده
باشد، نقاط
مشخصشده
به
گوشههای
مقصد ارسال
میشوند.
اگر گزینه
"sense" روی
"destination"
تنظیم شده
باشد،
گوشههای
مبدأ به
مختصات
مشخصشده
ارسال
خواهند شد.
عبارتها میتوانند از متغیرهای زیر استفاده کنند:
- interpolation
- تنظیم
درونیابی
جهت تصحیح
پرسپکتیو.
مقادیر زیر را میپذیرد:
مقدار پیشفرض linear است.
- sense
- تنظیم
تفسیر
گزینههای
مختصات.
مقادیر زیر را میپذیرد:
- 0, source
- ارسال نقطه موجود در مبدأ که با مختصات دادهشده مشخص شده است به گوشههای مقصد.
- 1, destination
- ارسال
گوشههای
مبدأ به
نقطهای در
مقصد که با
مختصات
دادهشده
مشخص شده
است.
مقدار پیشفرض source است.
- eval
- تنظیم زمان
ارزیابی
عبارتها
برای
مختصاتهای
x0,y0,...x3,y3.
مقادیر زیر را میپذیرد:
مقدار پیشفرض init است.
phase
به تأخیر انداختن ویدیوی اینترلیس (interlaced) به اندازه مدتزمان یک فیلد، به طوری که ترتیب فیلدها تغییر کند.
کاربرد مورد نظر، اصلاح فیلمهای PAL است که با ترتیب فیلد معکوس نسبت به تبدیل فیلم-به-ویدیو ضبط (کپچر) شدهاند.
توضیحات مربوط به پارامترهای پذیرفتهشده در ادامه آمده است.
- mode
- تنظیم حالت
فاز.
مقادیر زیر را میپذیرد:
- t
- کپچر با ترتیب فیلد بالایی نخست (top-first)، انتقال پایینی نخست (bottom-first). فیلتر فیلد پایینی را به تأخیر میاندازد.
- b
- کپچر با ترتیب فیلد پایینی نخست (bottom-first)، انتقال بالایی نخست (top-first). فیلتر فیلد بالایی را به تأخیر میاندازد.
- p
- کپچر و انتقال با ترتیب فیلد یکسان. این حالت فقط برای ارجاع در مستندات سایر گزینهها وجود دارد، اما اگر واقعاً آن را انتخاب کنید، فیلتر با وفاداری هیچ کاری انجام نخواهد داد.
- a
- ترتیب فیلد کپچر بهطور خودکار توسط پرچمهای فیلد تعیین میشود، انتقال معکوس. فیلتر با استفاده از پرچمهای فیلد، به صورت فریم به فریم بین حالتهای t و b انتخاب میکند. اگر اطلاعات فیلد در دسترس نباشد، درست مانند u عمل خواهد کرد.
- u
- کپچر نامشخص یا متغیر، انتقال معکوس. فیلتر با تحلیل تصاویر و انتخاب گزینهای که بهترین تطابق را بین فیلدها ایجاد میکند، به صورت فریم به فریم بین t و b انتخاب میکند.
- T
- کپچر top-first، انتقال نامشخص یا متغیر. فیلتر با استفاده از تحلیل تصویر بین t و p انتخاب میکند.
- B
- کپچر bottom-first، انتقال نامشخص یا متغیر. فیلتر با استفاده از تحلیل تصویر بین b و p انتخاب میکند.
- A
- کپچر تعیینشده توسط پرچمهای فیلد، انتقال نامشخص یا متغیر. فیلتر با استفاده از پرچمهای فیلد و تحلیل تصویر بین t، b و p انتخاب میکند. اگر اطلاعات فیلد در دسترس نباشد، درست مانند U عمل میکند. این حالت پیشفرض است.
- U
- هر دو حالت کپچر و انتقال نامشخص یا متغیر. فیلتر تنها با استفاده از تحلیل تصویر بین t، b و p انتخاب میکند.
دستورات (Commands)
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
photosensitivity
کاهش انواع مختلف فلشها در ویدیو، جهت کمک به کاربرانی که مبتلا به صرع (epilepsy) هستند.
این فیلتر گزینههای زیر را میپذیرد:
- frames, f
- تنظیم تعداد فریمهای مورد استفاده هنگام فیلتر کردن. پیشفرض 30 است.
- threshold, t
- تنظیم ضریب آستانه تشخیص. پیشفرض 1 است. مقادیر کمتر سختگیرانهتر هستند.
- skip
- تنظیم تعداد پیکسلهایی که هنگام نمونهبرداری از فریمها نادیده گرفته میشوند. پیشفرض 1 است. محدوده مجاز از 1 تا 1024 است.
- bypass
- رها کردن فریمها بدون تغییر. بهطور پیشفرض غیرفعال است.
pixdesctest
فیلتر آزمون توصیفگر قالب پیکسل، که عمدتاً برای آزمونهای داخلی مفید است. ویدیوی خروجی باید با ویدیوی ورودی برابر باشد.
برای مثال:
format=monow, pixdesctest
میتواند برای آزمایش تعریف توصیفگر قالب پیکسل monowhite به کار رود.
pixelize
اعمال پیکسلسازی (شطرنجی کردن) بر روی استریم ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- width, w
- height, h
- تنظیم ابعاد بلوک که برای پیکسلسازی استفاده خواهد شد. مقدار پیشفرض 16 است.
- mode, m
- تنظیم حالت
پیکسلسازی
استفادهشده.
مقادیر ممکن عبارتند از:
مقدار پیشفرض "avg" است.
- planes, p
- تنظیم صفحاتی که باید فیلتر شوند. پیشفرض فیلتر کردن تمامی صفحهها است.
دستورات
این فیلتر از تمامی گزینهها به عنوان دستورات پشتیبانی میکند.
pixscope
نمایش مقادیر نمونه کانالهای رنگی. عمدتاً برای بررسی رنگ و سطوح مفید است. حداقل تفکیکپذیری پشتیبانیشده 640x480 است.
این فیلتر گزینههای زیر را میپذیرد:
- x
- تنظیم موقعیت X اسکوپ، آفست نسبی در محور X.
- y
- تنظیم موقعیت Y اسکوپ، آفست نسبی در محور Y.
- w
- تنظیم عرض اسکوپ.
- h
- تنظیم ارتفاع اسکوپ.
- o
- تنظیم میزان مات بودن پنجره. این پنجره همچنین شامل آمار مربوط به ناحیه پیکسلی است.
- wx
- تنظیم موقعیت X پنجره، آفست نسبی در محور X.
- wy
- تنظیم موقعیت Y پنجره، آفست نسبی در محور Y.
دستورات
این فیلتر از همان دستورات به عنوان گزینهها پشتیبانی میکند.
pp7
اعمال فیلتر پسپردازش 7 (Postprocessing filter 7). این گونهای از فیلتر spp است، مشابه با spp = 6 به همراه DCT هفت نقطهای، که در آن تنها نمونه مرکزی پس از IDCT استفاده میشود.
این فیلتر گزینههای زیر را میپذیرد:
- qp
- اجبار یک پارامتر کوانتیزاسیون ثابت. یک عدد صحیح در محدوده 0 تا 63 را میپذیرد. در صورت عدم تنظیم، فیلتر از QP موجود در استریم ویدیو (در صورت وجود) استفاده خواهد کرد.
- mode
- تنظیم حالت آستانهگذاری. حالتهای موجود عبارتند از:
premultiply
اعمال جلوه پیشضرب آلفا (alpha premultiply) روی استریم ویدیوی ورودی با استفاده از صفحه اول استریم دوم به عنوان آلفا.
هر دو استریم باید ابعاد و قالب پیکسلی یکسانی داشته باشند.
این فیلتر گزینههای زیر را میپذیرد:
premultiply_dynamic
پیشضرب یا لغو پیشضرب پویا روی استریم ویدیوی ورودی بر اساس نیاز، جهت تطابق با ملزومات گراف فیلتر پاییندست. این تقریباً معادل یکی از موارد "premultiply:inplace=yes" یا "unpremultiply:inplace=yes" است، و در غیر این صورت بدون عملیات (noop) خواهد بود.
این فیلتر گزینه زیر را میپذیرد:
- planes
- تنظیم صفحاتی که پردازش خواهند شد، صفحات پردازشنشده کپی میشوند. با مقدار پیشفرض 0xf، تمامی صفحات پردازش خواهند شد.
prewitt
اعمال عملگر پِرویت (prewitt operator) بر روی استریم ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم صفحاتی که پردازش خواهند شد، صفحات پردازشنشده کپی میشوند. با مقدار پیشفرض 0xf، تمامی صفحات پردازش خواهند شد.
- scale
- تنظیم مقداری که در نتیجه فیلترشده ضرب خواهد شد.
- delta
- تنظیم مقداری که به نتیجه فیلترشده اضافه خواهد شد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
pseudocolor
تغییر رنگهای فریم در ویدیو با رنگهای کاذب (pseudocolors).
این فیلتر گزینههای زیر را میپذیرد:
- c0
- تنظیم عبارت مؤلفه اول پیکسل
- c1
- تنظیم عبارت مؤلفه دوم پیکسل
- c2
- تنظیم عبارت مؤلفه سوم پیکسل
- c3
- تنظیم عبارت مؤلفه چهارم پیکسل، متناظر با مؤلفه آلفا
- index, i
- تنظیم مؤلفهای که به عنوان پایه برای تغییر رنگها استفاده میشود
- preset, p
- انتخاب یکی
از LUTهای
توکار.
بهطور
پیشفرض
روی none تنظیم
شده است.
LUTهای موجود:
- opacity
- تنظیم میزان مات بودن رنگهای خروجی. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض روی 1 تنظیم شده است.
هر یک از گزینههای عبارت، عبارتی را مشخص میکند که برای محاسبه جدول جستجو (LUT) جهت مقادیر مؤلفه پیکسلی متناظر استفاده میشود.
عبارتها میتوانند شامل ثوابت و توابع زیر باشند:
- w
- h
- عرض و ارتفاع ورودی.
- val
- مقدار ورودی برای مؤلفه پیکسل.
- ymin, umin, vmin, amin
- حداقل مقدار مجاز مؤلفه.
- ymax, umax, vmax, amax
- حداکثر مقدار مجاز مؤلفه.
پیشفرض تمامی عبارتها "val" است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
مثالها
- •
- تغییر
مقادیر
روشنایی (luma)
بیش از حد
بالا به یک
گرادیان:
pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
psnr
به دست آوردن میانگین، حداکثر و حداقل مقدار PSNR (نسبت بیشینه سیگنال به نویز) میان دو ویدیوی ورودی.
این فیلتر دو ویدیوی ورودی را دریافت میکند؛ ورودی اول به عنوان منبع «اصلی» (main) در نظر گرفته شده و بدون تغییر به خروجی منتقل میشود. ورودی دوم به عنوان ویدیوی «مرجع» (reference) برای محاسبه PSNR استفاده میشود.
برای عملکرد صحیح این فیلتر، هر دو ویدیوی ورودی باید تفکیکپذیری و قالب پیکسلی یکسان داشته باشند. همچنین فرض میشود هر دو ورودی دارای تعداد فریمهای برابری هستند که به صورت فریمبهفریم مقایسه میشوند.
میانگین PSNR حاصلشده از طریق سامانه گزارشگیری (logging) چاپ میشود.
فیلتر مقدار انباشتهشده MSE (میانگین مربعات خطا) مربوط به هر فریم را ذخیره میکند، و در پایان پردازش، میانگین آن به طور مساوی در تمامی فریمها محاسبه شده و فرمول زیر برای به دست آوردن PSNR اعمال میگردد:
PSNR = 10*log10(MAX^2/MSE)
که در آن MAX میانگین حداکثر مقادیر هر مؤلفه تصویر است.
در ادامه شرح پارامترهای پذیرفتهشده آمده است.
- stats_file, f
- در صورت تعیین، فیلتر از پرونده نامبرده برای ذخیره PSNR هر تک فریم استفاده میکند. هنگامی که نام پرونده برابر با "-" باشد، دادهها به خروجی استاندارد فرستاده میشوند.
- stats_version
- مشخص میکند کدام نسخه از قالب پرونده آمار استفاده شود. جزئیات هر قالب در زیر نوشته شده است. مقدار پیشفرض 1 است.
- output_max
- تعیین میکند که آیا مقدار حداکثر در گزارش آمار خروجی داده شود یا خیر. مقدار پیشفرض 0 است. نیاز به stats_version >= 2 دارد. اگر این گزینه تنظیم شود و stats_version < 2 باشد، فیلتر یک خطا برمیگرداند.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
پرونده چاپشده در صورت انتخاب stats_file، شامل دنبالهای از جفتهای کلید/مقدار به صورت key:value برای هر جفت فریم مقایسهشده است.
اگر یک stats_version بزرگتر از 1 مشخص شود، یک خط سربرگ پیش از فهرست آمار جفتفریمها قرار میگیرد، با جفتهای کلید/مقدار مطابق با قالب فریم به همراه پارامترهای زیر:
- psnr_log_version
- نسخه قالب پرونده گزارش. با stats_version مطابقت خواهد داشت.
- fields
- فهرستی جداشده با کاما از پارامترهای به ازای هر جفتفریم گنجاندهشده در گزارش.
شرح هر پارامتر نشاندادهشده به ازای هر جفتفریم در ادامه آمده است:
- n
- شماره ترتیبی فریم ورودی، شروع از 1
- mse_avg
- میانگین مربعات خطای تفاضل پیکسلبهپیکسل فریمهای مقایسهشده، میانگینگیریشده در تمامی مؤلفههای تصویر.
- mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
- میانگین مربعات خطای تفاضل پیکسلبهپیکسل فریمهای مقایسهشده برای مؤلفه مشخصشده توسط پسوند.
- psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
- نسبت بیشینه سیگنال به نویز فریمهای مقایسهشده برای مؤلفه مشخصشده توسط پسوند.
- max_avg, max_y, max_u, max_v
- حداکثر مقدار مجاز برای هر کانال، و میانگین در تمامی کانالها.
مثالها
- برای مثال:
movie=ref_movie.mpg, setpts=PTS-STARTPTS [main]; [main][ref] psnr="stats_file=stats.log" [out]
در این مثال پرونده ورودیِ در حال پردازش با پرونده مرجع ref_movie.mpg مقایسه میشود. مقدار PSNR هر فریم منفرد در stats.log ذخیره میشود.
- مثال دیگری
با
کانتینرهای
متفاوت:
ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
pullup
فیلتر معکوسسازی Pulldown (تلهسینه معکوس)، با توانایی مدیریت محتوای ترکیبی hard-telecine، پروگرسیو 24000/1001 فریم بر ثانیه، و پروگرسیو 30000/1001 فریم بر ثانیه.
فیلتر pullup به گونهای طراحی شده است که در تصمیمگیریهای خود از زمینه و اطلاعات آینده بهره ببرد. این فیلتر بدون حالت (stateless) است، به این معنا که روی الگویی خاص قفل نمیشود، بلکه به فیلدهای پس از آن نگاه میکند تا تطابقها را شناسایی کرده و فریمهای پروگرسیو را بازسازی نماید.
برای تولید محتوا با نرخ فریم یکنواخت، فیلتر fps را پس از pullup قرار دهید؛ در صورتی که نرخ فریم ورودی 29.97fps است از "fps=24000/1001"، و برای 30fps و ورودی (نادر) تلهسینهشده 25fps از "fps=24" استفاده کنید.
این فیلتر گزینههای زیر را میپذیرد:
- jl
- jr
- jt
- jb
- این گزینهها به ترتیب مقدار حاشیههای اضافی ("junk") برای نادیده گرفتن در سمت چپ، راست، بالا، و پایین تصویر را تعیین میکنند. چپ و راست در واحدهای 8 پیکسلی هستند، در حالی که بالا و پایین در واحدهای 2 خطی میباشند. مقدار پیشفرض 8 پیکسل در هر طرف است.
- sb
- تنظیم شکستهای دقیق (strict breaks). تنظیم این گزینه روی 1 شانس تولید فریم تصادفی نامطابق توسط فیلتر را کاهش میدهد، اما همچنین ممکن است باعث افت تعداد زیادی از فریمها در طول سکانسهای با حرکت سریع شود. برعکس، تنظیم آن روی -1 باعث میشود فیلتر فیلدها را آسانتر تطبیق دهد. این ممکن است به پردازش ویدیویی که در آن تاری جزئی بین فیلدها وجود دارد کمک کند، اما همچنین ممکن است باعث وجود فریمهای درهمبافته در خروجی شود. مقدار پیشفرض 0 است.
- mp
- تنظیم صفحه سنجه (metric plane) برای استفاده. مقادیر زیر را میپذیرد:
این گزینه ممکن است برای استفاده از صفحه رنگی بهجای صفحه پیشفرض روشنایی جهت انجام محاسبات فیلتر تنظیم شود. این کار ممکن است دقت را روی محتوای منبع بسیار تمیز بهبود بخشد، اما به احتمال زیاد دقت را کاهش خواهد داد، به ویژه اگر نویز کروما (اثر رنگینکمانی) یا هرگونه ویدیوی مقیاس خاکستری وجود داشته باشد. هدف اصلی از تنظیم mp روی یک صفحه کروما، کاهش بار CPU و امکان استفاده از pullup به صورت بلادرنگ در رایانههای کند است.
برای بهترین نتایج (بدون فریمهای تکراری در پرونده خروجی) تغییر نرخ فریم خروجی ضروری است. برای مثال، برای تلهسینه معکوس ورودی NTSC:
ffmpeg -i input -vf pullup -r 24000/1001 ...
qp
تغییر پارامترهای کوانتیزاسیون ویدیو (QP).
این فیلتر گزینه زیر را میپذیرد:
- qp
- تنظیم عبارت برای پارامتر کوانتیزاسیون.
این عبارت از طریق رابط ارزیابی (eval API) ارزیابی میشود و میتواند از جمله شامل ثوابت زیر باشد:
- known
- 1 اگر ایندکس 129 نباشد، در غیر این صورت 0.
- qp
- ایندکس متوالی که از -129 تا 128 شروع میشود.
مثالها
- •
- معادلهای
مانند:
qp=2+2*sin(PI*qp)
qrencode
تولید یک کد QR با استفاده از کتابخانه libqrencode (ببینید https://fukuchi.org/works/qrencode)، و همپوشانی آن بر روی فریم جاری.
برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-libqrencode" پیکربندی کنید.
کد QR از متن یا الگوی متنی ارائهشده تولید میشود. کد QR مربوطه بر اساس گزینههای مشخصشده مقیاسبندی شده و روی خروجی ویدیو همپوشانی میشود.
در صورتی که هیچ متنی تعیین نشود، هیچ کد QR همپوشانی نمیگردد.
این فیلتر گزینههای زیر را میپذیرد:
- qrcode_width, q
- padded_qrcode_width, Q
- تعیین یک
عبارت برای
عرض کد QR
رندرشده،
با و بدون
حاشیه (padding).
عبارت qrcode_width
میتواند
به مقدار
تعیینشده
توسط عبارت
padded_qrcode_width ارجاع
دهد و
برعکس.
بهطور
پیشفرض
padded_qrcode_width روی qrcode_width
تنظیم شده
است، به این
معنی که هیچ
حاشیهای
وجود ندارد.
این عبارتها برای هر فریم جدید ارزیابی میشوند.
برای جزئیات به بخش عبارتهای qrencode مراجعه کنید.
- x
- y
- تعیین یک
عبارت برای
موقعیتدهی
گوشه
بالا-چپ کد QR
دارای
حاشیه.
عبارت x
میتواند
به مقدار
تعیینشده
توسط عبارت
y ارجاع دهد
و برعکس.
بهطور پیشفرض x و y روی 0 تنظیم شدهاند، به این معنی که کد QR در گوشه بالا-چپ ورودی قرار میگیرد.
این عبارتها برای هر فریم جدید ارزیابی میشوند.
برای جزئیات به بخش عبارتهای qrencode مراجعه کنید.
- case_sensitive, cs
- دستور به libqrencode جهت استفاده از کدگذاری حساس به حروف کوچک و بزرگ. این مورد بهطور پیشفرض فعال است. میتوان آن را برای کاهش اندازه کدگذاری QR غیرفعال کرد.
- level, l
- تعیین سطح
تصحیح خطای
کدگذاری QR.
با سطح
تصحیح
بالاتر،
اندازه
کدگذاری
افزایش
مییابد
اما کد در
برابر
خرابی
مقاومتر
خواهد بود.
سطح
پایینتر L
است.
مقادیر زیر را میپذیرد:
- expansion
- انتخاب نحوه بسط متن ورودی. میتواند یکی از مقادیر "none" یا "normal" (پیشفرض) باشد. برای جزئیات به بخش بسط متن qrencode در زیر مراجعه کنید.
- text
- textfile
- تعریف متنی
که باید
رندر شود.
در صورتی که
هیچیک
تعیین
نشود، هیچ
کد QR
کدگذاری
نمیشود
(صرفاً یک
فریم رنگی
خالی).
در صورتی که بسط متن فعال باشد، با متن مانند یک الگوی متنی رفتار میشود که از سازوکار بسط qrencode استفاده میکند. برای جزئیات به بخش بسط متن qrencode در زیر مراجعه کنید.
- background_color, bc
- foreground_color, fc
- تنظیم رنگ
کد QR و رنگ
پسزمینه.
مقدار
پیشفرض
foreground_color برابر
"black" و مقدار
پیشفرض
background_color برابر
"white" است.
برای نحو گزینههای رنگ، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید.
عبارتهای qrencode
عبارتهای تعیینشده توسط گزینهها شامل ثوابت و توابع زیر هستند:
- dar
- نسبت ابعاد نمایش ورودی، همانند (w / h) * sar است
- duration
- مدت زمان فریم جاری، بر حسب ثانیه
- hsub
- vsub
- مقادیر زیرنمونهبرداری رنگی افقی و عمودی. برای مثال برای قالب پیکسلی "yuv422p"، مقدار hsub برابر 2 و vsub برابر 1 است.
- main_h, H
- ارتفاع ورودی
- main_w, W
- عرض ورودی
- n
- شماره فریم ورودی، شروع از 0
- pict_type
- عددی که نوع تصویر را نشان میدهد
- qr_w, w
- عرض کد QR کدگذاریشده
- rendered_qr_w, q
- rendered_padded_qr_w, Q
- عرض کد QR
رندرشده،
بدون و با
حاشیه.
این پارامترها به عبارتهای q و Q اجازه میدهند به یکدیگر ارجاع دهند، بنابراین میتوانید به عنوان مثال "q=3/4*Q" را تعیین کنید.
- rand(min, max)
- بازگرداندن یک عدد تصادفی بین min و max
- sar
- نسبت ابعاد نمونه ورودی
- t
- برچسب زمانی بیانشده به ثانیه، NAN در صورتی که برچسب زمانی ورودی ناشناخته باشد
- x
- y
- مختصات
آفست x و y در
جایی که متن
رسم میشود.
این پارامترها به عبارتهای x و y اجازه میدهند به یکدیگر ارجاع دهند، بنابراین میتوانید به عنوان مثال "y=x/dar" را تعیین کنید.
بسط متن qrencode
اگر expansion روی "none" تنظیم شود، متن عیناً چاپ میشود.
اگر expansion روی "normal" (که پیشفرض است) تنظیم شود، سازوکار بسط زیر استفاده میشود.
نویسه بکاسلش \، همراه با هر نویسهای پس از آن، همواره به نویسه دوم بسط مییابد.
دنبالههایی به فرم "%{...}" بسط داده میشوند. متن میان آکولادها یک نام تابع است که احتمالاً آرگومانهایی جداشده با ':' به دنبال آن میآیند. اگر آرگومانها شامل نویسههای خاص یا جداکنندهها (':' یا '}') باشند، باید اسکیپ شوند.
توجه داشته باشید که آنها احتمالاً باید به عنوان مقدار گزینه text در رشته آرگومان فیلتر و به عنوان آرگومان فیلتر در شرح گراف فیلتر، و احتمالاً برای پوسته نیز اسکیپ شوند، که تا چهار سطح اسکیپ ایجاد میکند؛ استفاده از یک پرونده متنی با گزینه textfile از این مشکلات جلوگیری میکند.
توابع زیر در دسترس هستند:
- n, frame_num
- بازگرداندن شماره فریم
- pts
- بازگرداندن
برچسب
زمانی
نمایش (PTS)
فریم جاری.
میتواند تا دو آرگومان دریافت کند.
آرگومان اول قالب برچسب زمانی است؛ پیشفرض "flt" برای ثانیهها به صورت یک عدد اعشاری با دقت میکروثانیه است؛ "hms" نشاندهنده برچسب زمانی قالببندیشده [-]HH:MM:SS.mmm با دقت میلیثانیه است. "gmtime" نشاندهنده برچسب زمانی فریم در قالب زمان UTC است؛ "localtime" نشاندهنده برچسب زمانی فریم در قالب زمان منطقه زمانی محلی است. اگر قالب روی "hms24hh" تنظیم شود، زمان در قالب ۲۴ ساعته (00-23) قالببندی میشود.
آرگومان دوم یک آفست است که به برچسب زمانی اضافه میشود.
اگر قالب روی "localtime" یا "gmtime" تنظیم شود، آرگومان سومی نیز ممکن است ارائه شود: یک رشته قالب تابع C از نوع "strftime". بهطور پیشفرض، قالب YYYY-MM-DD HH:MM:SS استفاده خواهد شد.
- expr, e
- محاسبه
مقدار
عبارت و
خروجی دادن
آن به صورت
یک عدد
اعشاری
مضاعف (double).
باید یک آرگومان دریافت کند که عبارت مورد ارزیابی را مشخص میکند، و ثوابت و توابع تعریفشده در qrencode_expressions را میپذیرد.
- expr_formatted, ef
- محاسبه
مقدار
عبارت و
خروجی دادن
آن به صورت
یک رشته
قالببندیشده.
آرگومان اول عبارتی است که باید ارزیابی شود، دقیقاً همانند تابع expr. آرگومان دوم قالب خروجی را مشخص میکند. مقادیر مجاز عبارتند از x، X، d و u. با آنها دقیقاً مانند تابع "printf" رفتار میشود. پارامتر سوم اختیاری است و تعداد موقعیتهای اشغالشده توسط خروجی را تعیین میکند. میتوان از آن برای افزودن پدینگ صفر از سمت چپ استفاده کرد.
- gmtime
- زمانی که فیلتر در آن در حال اجرا است، بیانشده به وقت UTC. میتواند یک آرگومان بپذیرد: رشته قالب تابع C از نوع "strftime". این رشته قالب برای پشتیبانی از متغیر %[1-6]N گسترش یافته است که کسرهای ثانیه را با تعداد ارقام اختیاری مشخصشده چاپ میکند.
- localtime
- زمانی که فیلتر در آن در حال اجرا است، بیانشده به وقت منطقه زمانی محلی. میتواند یک آرگومان بپذیرد: رشته قالب تابع C از نوع "strftime". این رشته قالب برای پشتیبانی از متغیر %[1-6]N گسترش یافته است که کسرهای ثانیه را با تعداد ارقام اختیاری مشخصشده چاپ میکند.
- metadata
- متاداده
فریم. یک یا
دو آرگومان
میگیرد.
آرگومان اول اجباری است و کلید متاداده را مشخص میکند.
آرگومان دوم اختیاری است و یک مقدار پیشفرض را مشخص میکند، که در صورت یافت نشدن کلید متاداده یا خالی بودن آن استفاده میشود.
متادادههای موجود را میتوان با بررسی ورودیهایی که با TAG شروع میشوند و در هر بخش فریم با اجرای "ffprobe -show_frames" چاپ میشوند، شناسایی کرد.
متادادههای متنی تولیدشده در فیلترهای منتهی به فیلتر qrencode نیز در دسترس هستند.
- rand(min, max)
- بازگرداندن یک عدد تصادفی بین min و max
مثالها
- تولید یک کد
QR شامل متن
مشخصشده
با اندازه
پیشفرض،
همپوشانیشده
در گوشه
بالا-چپ
ویدیوی
ورودی با
اندازه
پیشفرض:
qrencode=text=www.ffmpeg.org
- همانند
مورد زیر،
اما انتخاب
رنگهای
آبی روی
صورتی:
qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
- قرار دادن
کد QR در گوشه
پایین-راست
ویدیوی
ورودی:
qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
- تولید یک کد
QR با عرض 200
پیکسل و
حاشیه، به
طوری که عرض
دارای
حاشیه 4/3 عرض
کد QR باشد:
qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
- تولید یک کد
QR با عرض
دارای
حاشیه 200
پیکسل و
حاشیه، به
طوری که عرض
کد QR برابر 3/4
عرض دارای
حاشیه باشد:
qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
- تنظیم کد QR
به صورت
کسری از عرض
ویدیوی
ورودی:
qrencode=text=www.ffmpeg.org:q=W/5
- تولید یک کد
QR شامل
شماره فریم:
qrencode=text=%{n} - تولید یک کد
QR شامل
برچسب
زمانی GMT:
qrencode=text=%{gmtime} - تولید یک کد
QR شامل
برچسب
زمانی
بیانشده
به صورت عدد
اعشاری:
qrencode=text=%{pts}
quirc
شناسایی و رمزگشایی یک کد QR با استفاده از کتابخانه libquirc (ببینید https://github.com/dlbeer/quirc)، و چاپ موقعیتها و محموله (payload) کدهای QR شناساییشده به عنوان متاداده.
برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-libquirc" پیکربندی کنید.
به ازای هر کد QR یافتشده در ویدیوی ورودی، مدخلهایی از متاداده با پیشوند lavfi.quirc.N اضافه میشود، که در آن N شاخص مربوط به کد QR با شروع از 0 است.
شرح هر مقدار متاداده در ادامه آمده است:
- lavfi.quirc.count
- تعداد کدهای QR یافتشده؛ در صورتی که هیچ کدی یافت نشود تنظیم نمیشود
- lavfi.quirc.N.corner.M.x
- lavfi.quirc.N.coreer.M.y
- موقعیتهای x/y چهار گوشه مربع حاوی کد QR، که در آن M شاخص گوشه با شروع از 0 است
- lavfi.quirc.N.payload
- محموله (payload) کد QR
random
تخلیه فریمهای ویدیویی از حافظه موقت (کَش) داخلی فریمها با ترتیبی تصادفی. هیچ فریمی دور ریخته نمیشود. با الهام از فیلتر nervous در frei0r.
- frames
- تنظیم اندازه کَش داخلی بر حسب تعداد فریم، در محدوده 2 تا 512. پیشفرض 30 است.
- seed
- تنظیم سید (seed) برای مولد اعداد تصادفی؛ باید یک عدد صحیح بین 0 و "UINT32_MAX" باشد. در صورت عدم تعیین، یا در صورتی که صراحتاً کمتر از 0 تنظیم شود، فیلتر تلاش میکند تا بر پایه بیشترین تلاش یک سید تصادفی مناسب استفاده کند.
readeia608
خواندن اطلاعات زیرنویس پنهان (EIA-608) از خطوط بالایی یک فریم ویدیو.
این فیلتر متاداده فریم را برای "lavfi.readeia608.X.cc" و "lavfi.readeia608.X.line" اضافه میکند، که در آن "X" شماره خط شناساییشده حاوی دادههای EIA-608 (شروع از 0) است. شرح هر مقدار متاداده در ادامه آمده است:
- lavfi.readeia608.X.cc
- دو بایت ذخیرهشده به عنوان داده EIA-608 (چاپشده در مبنای شانزده).
- lavfi.readeia608.X.line
- شماره خطی که دادههای EIA-608 روی آن شناسایی و خوانده شدند.
این فیلتر گزینههای زیر را میپذیرد:
- scan_min
- تنظیم خط برای شروع پویش جهت دادههای EIA-608. پیشفرض 0 است.
- scan_max
- تنظیم خط برای پایان پویش جهت دادههای EIA-608. پیشفرض 29 است.
- spw
- تنظیم نسبت عرض رزروشده برای تشخیص کد همگامسازی (sync code). پیشفرض 0.27 است. محدوده مجاز "[0.1 - 0.7]" است.
- chp
- فعالسازی بررسی بیت توازن (parity bit). در صورت بروز خطای توازن، فیلتر 0x00 را برای آن نویسه خروجی میدهد. پیشفرض false است.
- lp
- اعمال فیلتر پایینگذر بر روی خطوط پیش از پردازش بیشتر. پیشفرض فعال است.
دستورات
این فیلتر از تمامی گزینههای بالا به عنوان دستورات پشتیبانی میکند.
مثالها
- •
- خروجی دادن
یک پرونده csv
همراه با
زمان نمایش
و دو خط اول
از
دادههای
زیرنویس EIA-608
شناساییشده.
ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
readvitc
خواندن اطلاعات کد زمانی بازه عمودی (VITC) از خطوط بالایی یک فریم ویدیو.
در صورتی که یک کد زمانی معتبر شناسایی شده باشد، این فیلتر کلید متاداده فریم "lavfi.readvitc.tc_str" را با مقدار کد زمانی اضافه میکند. کلید متاداده دیگر با نام "lavfi.readvitc.found" بسته به اینکه دادههای کد زمانی یافت شده باشد یا خیر روی 0/1 تنظیم میشود.
این فیلتر گزینههای زیر را میپذیرد:
- scan_max
- تنظیم حداکثر تعداد خطوط برای پویش جهت دادههای VITC. اگر مقدار روی -1 تنظیم شود، کل فریم ویدیو پویش میشود. پیشفرض 45 است.
- thr_b
- تنظیم آستانه روشنایی (luma) برای رنگ سیاه. اعداد اعشاری در محدوده [0.0,1.0] را میپذیرد، مقدار پیشفرض 0.2 است. این مقدار باید برابر یا کمتر از "thr_w" باشد.
- thr_w
- تنظیم آستانه روشنایی (luma) برای رنگ سفید. اعداد اعشاری در محدوده [0.0,1.0] را میپذیرد، مقدار پیشفرض 0.6 است. این مقدار باید برابر یا بیشتر از "thr_b" باشد.
مثالها
- •
- شناسایی و
رسم
دادههای VITC
بر روی فریم
ویدیو؛ اگر
VITC معتبری
شناسایی
نشود، رسم
"--:--:--:--" به
عنوان
نگهدارنده
مکان:
ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
remap
نگاشت مجدد پیکسلها با استفاده از استریم ویدیوی ورودی دوم: Xmap و سوم: Ymap.
پیکسل مقصد در موقعیت (X, Y) از موقعیت منبع (x, y) برداشته میشود که در آن x = Xmap(X, Y) و y = Ymap(X, Y) است. اگر مقادیر نگاشت خارج از محدوده باشند، مقدار صفر برای پیکسل مقصد استفاده خواهد شد.
استریمهای ویدیوی ورودی Xmap و Ymap باید ابعاد یکسانی داشته باشند. استریم ویدیوی خروجی ابعاد استریمهای ویدیویی Xmap/Ymap را خواهد داشت. استریمهای ویدیوی ورودی Xmap و Ymap تککاناله با عمق ۱۶ بیت هستند.
- format
- تعیین قالب پیکسلی خروجی از این فیلتر. میتواند "color" یا "gray" باشد. پیشفرض "color" است.
- fill
- تعیین رنگ پیکسلهای نگاشتنشده. برای نحو این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید. رنگ پیشفرض "black" است.
removegrain
فیلتر removegrain یک نویزگیر مکانی (spatial denoiser) برای ویدیوی پروگرسیو است.
- m0
- تنظیم حالت برای صفحه اول.
- m1
- تنظیم حالت برای صفحه دوم.
- m2
- تنظیم حالت برای صفحه سوم.
- m3
- تنظیم حالت برای صفحه چهارم.
محدوده حالت از 0 تا 24 است. شرح هر حالت در ادامه آمده است:
- 0
- رها کردن صفحه ورودی بدون تغییر. پیشفرض.
- 1
- برش پیکسل با حداقل و حداکثر 8 پیکسل همسایه.
- 2
- برش پیکسل با دومین حداقل و حداکثر 8 پیکسل همسایه.
- 3
- برش پیکسل با سومین حداقل و حداکثر 8 پیکسل همسایه.
- 4
- برش پیکسل با چهارمین حداقل و حداکثر 8 پیکسل همسایه. این معادل یک فیلتر میانه (median filter) است.
- 5
- برش حساس به خط که کمترین تغییر را ایجاد میکند.
- 6
- برش حساس به خط، حالت میانی.
- 7
- برش حساس به خط، حالت میانی.
- 8
- برش حساس به خط، حالت میانی.
- 9
- برش حساس به خط روی خطی که در آن پیکسلهای همسایه نزدیکترین هستند.
- 10
- جایگزینی پیکسل هدف با نزدیکترین همسایه.
- 11
- محو کردن هسته افقی و عمودی [1 2 1].
- 12
- همانند حالت 11.
- 13
- حالت Bob، درونیابی فیلد بالایی از روی خطی که در آن پیکسلهای همسایه نزدیکترین هستند.
- 14
- حالت Bob، درونیابی فیلد پایینی از روی خطی که در آن پیکسلهای همسایه نزدیکترین هستند.
- 15
- حالت Bob، درونیابی فیلد بالایی. همانند 13 اما با یک فرمول درونیابی پیچیدهتر.
- 16
- حالت Bob، درونیابی فیلد پایینی. همانند 14 اما با یک فرمول درونیابی پیچیدهتر.
- 17
- برش پیکسل با حداقل و حداکثرِ به ترتیب حداکثر و حداقلِ هر جفت از پیکسلهای همسایه روبرو.
- 18
- برش حساس به خط با استفاده از همسایههای روبرو که بیشترین فاصله آنها از پیکسل جاری کمترین است.
- 19
- جایگزینی پیکسل با میانگین 8 همسایه آن.
- 20
- میانگینگیری از 9 پیکسل (محو کردن افقی و عمودی [1 1 1]).
- 21
- برش پیکسلها با استفاده از میانگینهای همسایه روبرو.
- 22
- همانند حالت 21 اما سادهتر و سریعتر.
- 23
- حذف لبهها و هالههای کوچک، اما مشهور به بیفایده بودن.
- 24
- مشابه با 23.
removelogo
حذف لوگوی شبکه تلویزیونی، با استفاده از یک پرونده تصویری برای تعیین اینکه کدام پیکسلها لوگو را تشکیل میدهند. این فیلتر با پر کردن پیکسلهای تشکیلدهنده لوگو با پیکسلهای مجاور کار میکند.
این فیلتر گزینههای زیر را میپذیرد:
- filename, f
- تنظیم پرونده بیتمپ فیلتر، که میتواند هر قالب تصویری پشتیبانیشده توسط libavformat باشد. عرض و ارتفاع پرونده تصویر باید با ابعاد استریم ویدیوی در حال پردازش مطابقت داشته باشد.
پیکسلهای دارای مقدار صفر در تصویر بیتمپ ارائهشده، به عنوان بخشی از لوگو در نظر گرفته نمیشوند؛ پیکسلهای غیرصفر بخشی از لوگو محسوب میشوند. اگر از رنگ سفید (255) برای لوگو و سیاه (0) برای بقیه تصویر استفاده کنید، مطمئن خواهید بود. برای ساخت بیتمپ فیلتر، توصیه میشود از یک فریم سیاه که لوگو روی آن قابل مشاهده است اسکرینشات بگیرید، و سپس یک یا دو بار از فیلتر آستانه (threshold) و به دنبال آن فیلتر سایش (erode) استفاده کنید.
در صورت نیاز، لکههای کوچک را میتوان به صورت دستی اصلاح کرد. به یاد داشته باشید که اگر پیکسلهای لوگو پوشش داده نشوند، کیفیت فیلتر به شدت کاهش مییابد. علامتگذاری بیش از حد پیکسلها به عنوان بخشی از لوگو آسیب چندانی نمیزند، اما مقدار محوکردگی مورد نیاز برای پوشاندن روی تصویر را افزایش میدهد و اطلاعات بیشتری را نسبت به آنچه لازم است از بین میبرد؛ همچنین پیکسلهای اضافی در یک لوگوی بزرگ سرعت پردازش را کاهش میدهند.
repeatfields
این فیلتر از پرچم repeat_field موجود در سربرگهای Video ES استفاده کرده و فیلدها را بر پایه مقدار آن به صورت سخت (hard repeat) تکرار میکند.
reverse
معکوس کردن یک کلیپ ویدیویی.
هشدار: این فیلتر برای بافر کردن کل کلیپ به حافظه نیاز دارد، بنابراین برش زدن (trimming) پیشنهاد میشود.
مثالها
- •
- گرفتن ۵
ثانیه اول
یک کلیپ و
معکوس کردن
آن:
trim=end=5,reverse
rgbashift
تغییر مکان (شیفت) افقی و/یا عمودی پیکسلهای R/G/B/A.
این فیلتر گزینههای زیر را میپذیرد:
- rh
- تنظیم مقدار جابهجایی افقی رنگ قرمز.
- rv
- تنظیم مقدار جابهجایی عمودی رنگ قرمز.
- gh
- تنظیم مقدار جابهجایی افقی رنگ سبز.
- gv
- تنظیم مقدار جابهجایی عمودی رنگ سبز.
- bh
- تنظیم مقدار جابهجایی افقی رنگ آبی.
- bv
- تنظیم مقدار جابهجایی عمودی رنگ آبی.
- ah
- تنظیم مقدار جابهجایی افقی آلفا.
- av
- تنظیم مقدار جابهجایی عمودی آلفا.
- edge
- تنظیم حالت لبه؛ میتواند smear (پیشفرض) یا warp باشد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
roberts
اعمال عملگر متقاطع رابرتز (roberts cross operator) بر روی استریم ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم صفحاتی که پردازش خواهند شد، صفحات پردازشنشده کپی میشوند. با مقدار پیشفرض 0xf، تمامی صفحات پردازش خواهند شد.
- scale
- تنظیم مقداری که در نتیجه فیلترشده ضرب خواهد شد.
- delta
- تنظیم مقداری که به نتیجه فیلترشده اضافه خواهد شد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
rotate
چرخش ویدیو با یک زاویه دلخواه بر حسب رادیان.
این فیلتر گزینههای زیر را میپذیرد:
در ادامه شرح پارامترهای اختیاری آمده است.
- angle, a
- تنظیم یک
عبارت برای
زاویهای
که ویدیوی
ورودی بر
اساس آن در
جهت
عقربههای
ساعت
میچرخد،
بر حسب
تعداد
رادیان. یک
مقدار منفی
منجر به
چرخش در
خلاف جهت
عقربههای
ساعت خواهد
شد. بهطور
پیشفرض
روی "0"
تنظیم شده
است.
این عبارت برای هر فریم ارزیابی میشود.
- out_w, ow
- تنظیم عبارت عرض خروجی؛ مقدار پیشفرض "iw" است. این عبارت فقط یکبار در طول پیکربندی ارزیابی میشود.
- out_h, oh
- تنظیم عبارت ارتفاع خروجی؛ مقدار پیشفرض "ih" است. این عبارت فقط یکبار در طول پیکربندی ارزیابی میشود.
- bilinear
- فعالسازی درونیابی دوخطی (bilinear) در صورت تنظیم روی 1؛ مقدار 0 آن را غیرفعال میکند. مقدار پیشفرض 1 است.
- fillcolor, c
- تنظیم رنگ
مورد
استفاده
برای پر
کردن ناحیه
خروجی که
توسط تصویر
چرخاندهشده
پوشش داده
نمیشود.
برای نحو
کلی این
گزینه،
بخش "Color" در
راهنمای ffmpeg-utils
را بررسی
کنید. اگر
مقدار ویژه
"none" انتخاب
شود، هیچ
پسزمینهای
رسم
نمیشود
(برای مثال
در حالتی که
پسزمینه
هرگز نشان
داده
نمیشود
مفید است).
مقدار پیشفرض "black" است.
عبارتهای مربوط به زاویه و اندازه خروجی میتوانند شامل ثوابت و توابع زیر باشند:
- n
- شماره ترتیبی فریم ورودی، شروع از 0. پیش از فیلتر شدن اولین فریم همواره NAN است.
- t
- زمان بر حسب ثانیه برای فریم ورودی؛ هنگام پیکربندی فیلتر روی 0 تنظیم میشود. پیش از فیلتر شدن اولین فریم همواره NAN است.
- hsub
- vsub
- مقادیر زیرنمونهبرداری رنگی افقی و عمودی. برای مثال برای قالب پیکسلی "yuv422p"، مقدار hsub برابر 2 و vsub برابر 1 است.
- in_w, iw
- in_h, ih
- عرض و ارتفاع ویدیوی ورودی
- out_w, ow
- out_h, oh
- عرض و ارتفاع خروجی، یعنی اندازه ناحیه حاشیهدار (padded) مشخصشده توسط عبارتهای width و height
- rotw(a)
- roth(a)
- حداقل
عرض/ارتفاع
مورد نیاز
برای
دربرگرفتن
کامل
ویدیوی
ورودی
چرخاندهشده
به اندازه a
رادیان.
این موارد تنها هنگام محاسبه عبارتهای out_w و out_h در دسترس هستند.
مثالها
- چرخش ورودی
به اندازه PI/6
رادیان در
جهت
عقربههای
ساعت:
rotate=PI/6
- چرخش ورودی
به اندازه PI/6
رادیان در
خلاف جهت
عقربههای
ساعت:
rotate=-PI/6
- چرخش ورودی
به اندازه 45
درجه در جهت
عقربههای
ساعت:
rotate=45*PI/180
- اعمال یک
چرخش ثابت
با دوره
تناوب T،
شروع از
زاویه PI/3:
rotate=PI/3+2*PI*t/T
- ایجاد
نوسان در
چرخش
ویدیوی
ورودی با
دوره تناوب
T ثانیه و
دامنه A
رادیان:
rotate=A*sin(2*PI/T*t)
- چرخش
ویدیو،
اندازه
خروجی طوری
انتخاب
میشود که
کل ویدیوی
ورودیِ در
حال چرخش
همواره
کاملاً
درون خروجی
جا گیرد:
rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
- چرخش
ویدیو،
کاهش
اندازه
خروجی به
گونهای که
هرگز هیچ
پسزمینهای
نشان داده
نشود:
rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
- a, angle
- تنظیم
عبارت
زاویه. این
دستور همان
نحو گزینه
متناظر را
میپذیرد.
اگر عبارت تعیینشده نامعتبر باشد، روی مقدار جاری خود باقی میماند.
sab
اعمال محوکردگی تطبیقی با شکل (Shape Adaptive Blur).
این فیلتر گزینههای زیر را میپذیرد:
- luma_radius, lr
- تنظیم شدت فیلتر محوکننده روشنایی؛ باید مقداری در محدوده 0.1-4.0 باشد، مقدار پیشفرض 1.0 است. یک مقدار بزرگتر منجر به تصویری تارتر و پردازشی کندتر خواهد شد.
- luma_pre_filter_radius, lpfr
- تنظیم شعاع پیشفیلتر روشنایی؛ باید مقداری در محدوده 0.1-2.0 باشد، مقدار پیشفرض 1.0 است.
- luma_strength, ls
- تنظیم حداکثر اختلاف میان پیکسلها در روشنایی برای اینکه همچنان در نظر گرفته شوند؛ باید مقداری در محدوده 0.1-100.0 باشد، مقدار پیشفرض 1.0 است.
- chroma_radius, cr
- تنظیم شدت فیلتر محوکننده رنگ؛ باید مقداری در محدوده -0.9-4.0 باشد. یک مقدار بزرگتر منجر به تصویری تارتر و پردازشی کندتر خواهد شد.
- chroma_pre_filter_radius, cpfr
- تنظیم شعاع پیشفیلتر رنگ؛ باید مقداری در محدوده -0.9-2.0 باشد.
- chroma_strength, cs
- تنظیم حداکثر اختلاف میان پیکسلها در رنگ برای اینکه همچنان در نظر گرفته شوند؛ باید مقداری در محدوده -0.9-100.0 باشد.
مقدار هر گزینه رنگ (chroma) در صورتی که صراحتاً مشخص نشود، روی مقدار گزینه روشنایی (luma) متناظر تنظیم میشود.
scale
تغییر مقیاس (تغییر اندازه) ویدیوی ورودی، با استفاده از کتابخانه libswscale.
فیلتر scale با تغییر دادن نسبت ابعاد نمونه خروجی، نسبت ابعاد نمایش خروجی را مجبور میکند که با ورودی یکسان باشد.
اگر قالب تصویر ورودی با قالب درخواستشده توسط فیلتر بعدی متفاوت باشد، فیلتر scale ورودی را به قالب درخواستشده تبدیل خواهد کرد.
گزینهها
این فیلتر گزینههای زیر، هر یک از گزینههای پشتیبانیشده توسط مقیاسبند libswscale، و همچنین هر یک از گزینههای framesync را میپذیرد.
برای فهرست کامل گزینههای مقیاسبند به راهنمای ffmpeg-scaler مراجعه کنید.
- width, w
- height, h
- تنظیم
عبارت
ابعاد
ویدیوی
خروجی.
مقدار
پیشفرض
ابعاد
ورودی است.
اگر مقدار width یا w برابر 0 باشد، عرض ورودی برای خروجی استفاده میشود. اگر مقدار height یا h برابر 0 باشد، ارتفاع ورودی برای خروجی استفاده میشود.
اگر یکی و فقط یکی از مقادیر برابر -n با n >= 1 باشد، فیلتر scale مقداری را استفاده میکند که نسبت ابعاد تصویر ورودی را حفظ کند، که از بعد مشخصشده دیگر محاسبه میشود. پس از آن با این حال، مطمئن خواهد شد که بعد محاسبهشده بر n بخشپذیر است و در صورت لزوم مقدار را تعدیل میکند.
اگر هر دو مقدار برابر -n با n >= 1 باشند، رفتار کاملاً مشابه تنظیم هر دو مقدار روی 0 خواهد بود، همانطور که پیشتر شرح داده شد.
برای فهرست ثوابت پذیرفتهشده جهت استفاده در عبارت بعد به زیر مراجعه کنید.
- eval
- تعیین زمان ارزیابی عبارتهای width و height. مقادیر زیر را میپذیرد:
مقدار پیشفرض init است.
- interl
- تنظیم حالت درهمبافی (interlacing). مقادیر زیر را میپذیرد:
- 1
- اجبار مقیاسبندی آگاه از درهمبافی.
- 0
- عدم اعمال مقیاسبندی درهمبافته.
- -1
- انتخاب مقیاسبندی آگاه از درهمبافی بسته به اینکه فریمهای منبع به عنوان درهمبافته نشانهگذاری شده باشند یا خیر.
مقدار پیشفرض 0 است.
- flags
- تنظیم فلگهای مقیاسبندی libswscale. برای فهرست کامل مقادیر به راهنمای ffmpeg-scaler مراجعه کنید. در صورت عدم تعیین صریح، فیلتر فلگهای پیشفرض را اعمال میکند.
- param0, param1
- تنظیم پارامترهای ورودی libswscale برای الگوریتمهای مقیاسبندی که به آنها نیاز دارند. برای مستندات کامل به راهنمای ffmpeg-scaler مراجعه کنید. در صورت عدم تعیین صریح، فیلتر پارامترهای خالی اعمال میکند.
- intent
- تنظیم قصد رندرینگ (rendering intent) مربوط به ICC برای استفاده هنگام تبدیل میان فضاهای رنگی مختلف. مقادیر زیر را میپذیرد:
- perceptual
- استفاده از منحنی نگاشت تنالیته و گاموت با هدایت ادراکی (perceptual). جزئیات دقیق نگاشت مورداستفاده ممکن است در هر زمان تغییر کند و نباید به عنوان مقداری پایدار به آن اتکا شود. این قصد رندرینگ برای مشاهده نهایی محتوای تصویر/ویدیو در تنظیمات مشاهده معمول توصیه میشود.
- relative_colorimetric
- برش استاتیک رنگهای خارج از گاموت با استفاده از یک منحنی برش رنگسنجی که تلاش میکند کماختلافترین رنگ درون گاموت را از نظر رنگسنجی پیدا کند. این قصد تطبیق نقطه سفید و تطبیق نقطه سیاه را انجام میدهد. این مقدار پیشفرض است. این قصد رندرینگ در هر جایی که بازتولید وفادارانه رنگها از بالاترین اهمیت برخوردار است، حتی به بهای برش خوردن، توصیه میشود.
- absolute_colorimetric
- برش سخت رنگهای خارج از گاموت بدون هیچ تلاشی برای بازتولید نقطه سفید یا سیاه. این قصد، رنگهای درون گاموت را روی نمایشگر خروجی نسبت 1:1 همانگونه که در نمایشگر مرجع ظاهر میشوند بازتولید میکند، با فرض اینکه نمایشگر خروجی به درستی کالیبره شده باشد.
- saturation
- انجام نگاشت اشباع - یعنی کشیدن حجم رنگ ورودی مستقیماً روی حجم رنگ خروجی، به روشی غیرخطی که ظاهر سیگنال اصلی را تا حد امکان حفظ کند. این قصد برای ارزیابی محتوای سیگنال توصیه میشود، زیرا منجر به هیچگونه برشی نخواهد شد. این حالت تقریباً مشابه انجام ندادن هیچگونه نگاشت رنگی است، گرچه هنوز رنگهای اصلی نمایشگر مسترینگ و هرگونه تفاوت در TRC کدگذاری را در نظر میگیرد.
- size, s
- تنظیم اندازه ویدیو. برای نحو این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- in_color_matrix
- out_color_matrix
- تنظیم نوع
فضای رنگی YCbCr
ورودی/خروجی.
این گزینه امکان بازنویسی مقدار خودکار تشخیصدادهشده را فراهم میکند و همچنین اجازه میدهد یک مقدار خاص برای خروجی و انکودر تحمیل شود.
در صورت عدم تعیین، نوع فضای رنگی به قالب پیکسل بستگی دارد.
مقادیر ممکن:
- auto
- انتخاب خودکار.
- bt709
- قالب منطبق با توصیهنامه BT.709 اتحادیه بینالمللی مخابرات (ITU).
- fcc
- تنظیم فضای رنگی منطبق با کمیسیون ارتباطات فدرال ایالات متحده (FCC) مجموعه قوانین مقررات فدرال (CFR) عنوان 47 سال (2003) بند 73.682 (a).
- bt601
- bt470
- smpte170m
- تنظیم فضای رنگی منطبق با:
- توصیهنامه BT.601 بخش ارتباطات رادیویی اتحادیه بینالمللی مخابرات (ITU-R)
- توصیهنامه ITU-R Rec. BT.470-6 (1998) سامانههای B، B1، و G
- انجمن مهندسان فیلم و تلویزیون (SMPTE) استاندارد ST 170:2004
- in_range
- out_range
- تنظیم
محدوده
نمونه YCbCr
ورودی/خروجی.
این گزینه اجازه میدهد مقدار تشخیصدادهشده خودکار بازنویسی شود و همچنین امکان تحمیل یک مقدار خاص برای خروجی و انکودر را میدهد. در صورت عدم تعیین، محدوده به قالب پیکسل بستگی دارد. مقادیر ممکن:
- auto/unknown
- انتخاب خودکار.
- jpeg/full/pc
- تنظیم محدوده کامل (0-255 در مورد روشنایی ۸ بیتی).
- mpeg/limited/tv
- تنظیم محدوده "MPEG" (16-235 در مورد روشنایی ۸ بیتی).
- in_chroma_loc
- out_chroma_loc
- تنظیم موقعیت مکانی نمونه کروما در ورودی/خروجی. در صورت عدم تعیین، کرومای در مرکز قرار گرفته (center-sited) بهطور پیشفرض استفاده میشود. مقادیر ممکن:
- in_primaries
- out_primaries
- تنظیم
رنگهای
اصلی (primaries) در RGB
ورودی/خروجی.
این گزینه اجازه میدهد مقدار تشخیصدادهشده خودکار بازنویسی شود و همچنین امکان تحمیل یک مقدار خاص برای خروجی و انکودر را میدهد. مقادیر ممکن:
- in_transfer
- out_transfer
- تنظیم
منحنی پاسخ
انتقال (TRC)
ورودی/خروجی.
این گزینه اجازه میدهد مقدار تشخیصدادهشده خودکار بازنویسی شود و همچنین امکان تحمیل یک مقدار خاص برای خروجی و انکودر را میدهد. مقادیر ممکن:
- force_original_aspect_ratio
- فعالسازی کاهش یا افزایش عرض یا ارتفاع ویدیوی خروجی در صورت لزوم جهت حفظ نسبت ابعاد اصلی. مقادیر ممکن:
یک کاربرد مفید این گزینه زمانی است که حداکثر تفکیکپذیری مجاز یک دستگاه خاص را میدانید و میتوانید از این گزینه برای محدود کردن ویدیوی خروجی به آن، همراه با حفظ نسبت ابعاد استفاده کنید. برای مثال، دستگاه A امکان پخش 1280x720 را میدهد، و ویدیوی شما 1920x800 است. استفاده از این گزینه (تنظیم آن روی decrease) و تعیین 1280x720 در خط فرمان، خروجی را برابر 1280x533 میسازد.
لطفاً توجه داشته باشید که این موضوع با تعیین -1 برای w یا h متفاوت است؛ برای کارکرد این گزینه همچنان باید وضوح خروجی را مشخص کنید.
- force_divisible_by
- اطمینان
حاصل
میکند که
هر دو بعد
خروجی، عرض
و ارتفاع،
در هنگام
استفاده به
همراه
force_original_aspect_ratio بر
عدد صحیح
ارائهشده
بخشپذیر
باشند. این
گزینه
مشابه
استفاده از
"-n" در
گزینههای
w و h عمل
میکند.
این گزینه به مقدار تنظیمشده برای force_original_aspect_ratio احترام میگذارد، و تفکیکپذیری را متناسب با آن افزایش یا کاهش میدهد. نسبت ابعاد ویدیو ممکن است اندکی دستخوش تغییر شود.
این گزینه میتواند زمانی مفید باشد که نیاز دارید با استفاده از force_original_aspect_ratio، یک ویدیو درون یک تفکیکپذیری معین جا گیرد یا از آن فراتر رود، اما محدودیتهای انکودر روی بخشپذیری عرض یا ارتفاع نیز وجود دارد.
- reset_sar
- فعالسازی این گزینه منجر به ریست شدن SAR خروجی روی 1 میشود. علاوه بر این، اگر کاربر مقیاسبندی متناسب را از طریق عبارتهای عرض یا ارتفاع درخواست کند، برای مثال "w=-4:h=360" یا "w=iw/2:h=-1" یا با فعال کردن "force_original_aspect_ratio"، آنگاه DAR ورودی در نظر گرفته شده و خروجی به گونهای مقیاسبندی میشود که پیکسلهای مربعی تولید کند. پیشفرض false است.
مقادیر گزینههای w و h عبارتهایی شامل ثوابت زیر هستند:
- in_w
- in_h
- عرض و ارتفاع ورودی
- iw
- ih
- این موارد با in_w و in_h یکسان هستند.
- out_w
- out_h
- عرض و ارتفاع (مقیاسشده) خروجی
- ow
- oh
- این موارد با out_w و out_h یکسان هستند.
- a
- همانند iw / ih
- sar
- نسبت ابعاد نمونه ورودی
- dar
- نسبت ابعاد نمایش ورودی. محاسبهشده از "(iw / ih) * sar".
- hsub
- vsub
- مقادیر زیرنمونهبرداری رنگی افقی و عمودی ورودی. برای مثال برای قالب پیکسلی "yuv422p"، مقدار hsub برابر 2 و vsub برابر 1 است.
- ohsub
- ovsub
- مقادیر زیرنمونهبرداری رنگی افقی و عمودی خروجی. برای مثال برای قالب پیکسلی "yuv422p"، مقدار hsub برابر 2 و vsub برابر 1 است.
- n
- شماره (ترتیبی) فریم ورودی، شروع از 0. تنها با "eval=frame" در دسترس است.
- t
- برچسب زمانی نمایش فریم ورودی، بیانشده به صورت تعداد ثانیهها. تنها با "eval=frame" در دسترس است.
- pos
- موقعیت (آفست بایتی) فریم در استریم ورودی، یا NaN در صورتی که این اطلاعات در دسترس نباشد و/یا بیمعنی باشد (برای مثال در مورد ویدیوی ساختگی). تنها با "eval=frame" در دسترس است. منسوخشده، استفاده نکنید.
- ref_w, rw
- ref_h, rh
- ref_a
- ref_dar, rdar
- ref_n
- ref_t
- ref_pos
- معادل موارد بالا، اما برای یک ورودی مرجع دوم. اگر هر یک از این متغیرها وجود داشته باشند، این فیلتر دو ورودی را میپذیرد.
مثالها
- مقیاسبندی
ویدیوی
ورودی به
اندازه 200x100
scale=w=200:h=100
این معادل است با:
scale=200:100
یا:
scale=200x100
- مشخص کردن
یک نام
اختصاری
برای
اندازه
خروجی:
scale=qcif
که همچنین میتواند به صورت زیر نوشته شود:
scale=size=qcif
- مقیاسبندی
ورودی به 2
برابر:
scale=w=2*iw:h=2*ih
- مورد بالا
همانند این
است:
scale=2*in_w:2*in_h
- مقیاسبندی
ورودی به 2
برابر با
تحمیل
مقیاسبندی
درهمبافته:
scale=2*iw:2*ih:interl=1
- مقیاسبندی
ورودی به
نصف اندازه:
scale=w=iw/2:h=ih/2
- افزایش
عرض، و
تنظیم
ارتفاع به
همان
اندازه:
scale=3/2*iw:ow
- تطابق با
تناسب
یونانی:
scale=iw:1/PHI*iw scale=ih*PHI:ih
- افزایش
ارتفاع، و
تنظیم عرض
به 3/2 ارتفاع:
scale=w=3/2*oh:h=3/5*ih
- افزایش
اندازه، به
طوری که
اندازه
مضربی از
مقادیر
زیرنمونهبرداری
رنگی باشد:
scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
- افزایش عرض
به حداکثر 500
پیکسل،
همراه با
حفظ همان
نسبت ابعاد
ورودی:
scale=w='min(500\, iw*3/2):h=-1'
- مربعی کردن
پیکسلها
با ترکیب scale و
setsar:
scale='trunc(ih*dar):ih',setsar=1/1
- مربعی کردن
پیکسلها
با استفاده
از reset_sar،
همراه با
اطمینان از
اینکه
تفکیکپذیری
حاصل زوج
باشد (مورد
نیاز توسط
برخی
کُدکها):
scale='-2:ih-mod(ih,2):reset_sar=1'
- مقیاسبندی
دقیق به
هدف، اما
ریست کردن SAR
روی 1:
scale='400:300:reset_sar=1'
- مقیاسبندی
به ابعاد
زوج که درون
400x300 جا گیرند،
با حفظ SAR
ورودی:
scale='400:300:force_original_aspect_ratio=decrease:force_divisible_by=2'
- مقیاسبندی
برای تولید
پیکسلهای
مربعی با
ابعاد زوج
که درون 400x300 جا
گیرند:
scale='400:300:force_original_aspect_ratio=decrease:force_divisible_by=2:reset_sar=1'
- مقیاسبندی
یک استریم
زیرنویس (sub)
برای
مطابقت با
اندازه
ویدیوی
اصلی (main) پیش
از
همپوشانی.
("scale2ref")
'[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay'
- مقیاسبندی
یک لوگو به 1/10
ارتفاع
ویدیو، ضمن
حفظ نسبت
ابعاد
نمایش آن.
[logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
scharr
اعمال عملگر شار (scharr operator) بر روی استریم ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم صفحاتی که پردازش خواهند شد، صفحات پردازشنشده کپی میشوند. با مقدار پیشفرض 0xf، تمامی صفحات پردازش خواهند شد.
- scale
- تنظیم مقداری که در نتیجه فیلترشده ضرب خواهد شد.
- delta
- تنظیم مقداری که به نتیجه فیلترشده اضافه خواهد شد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
scroll
پیمایش (اسکرول) افقی و/یا عمودی ویدیوی ورودی با سرعت ثابت.
این فیلتر گزینههای زیر را میپذیرد:
- horizontal, h
- تنظیم سرعت پیمایش افقی. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است. مقادیر منفی جهت پیمایش را تغییر میدهند.
- vertical, v
- تنظیم سرعت پیمایش عمودی. پیشفرض 0 است. محدوده مجاز از -1 تا 1 است. مقادیر منفی جهت پیمایش را تغییر میدهند.
- hpos
- تنظیم موقعیت اولیه پیمایش افقی. پیشفرض 0 است. محدوده مجاز از 0 تا 1 است.
- vpos
- تنظیم موقعیت اولیه پیمایش عمودی. پیشفرض 0 است. محدوده مجاز از 0 تا 1 است.
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
- horizontal, h
- تنظیم سرعت پیمایش افقی.
- vertical, v
- تنظیم سرعت پیمایش عمودی.
scdet
تشخیص تغییر صحنه در ویدیو.
این فیلتر متاداده فریم را با mafd بین فریم و امتیاز صحنه تنظیم کرده، و فریم را به فیلتر بعدی ارسال میکند تا بتوانند از این متاداده برای تشخیص تغییر صحنه یا موارد دیگر استفاده کنند.
علاوه بر این، هنگامی که این فیلتر تغییر صحنه را با threshold تشخیص دهد، پیامی را ثبت کرده و متاداده فریم را تنظیم میکند.
کلیدهای متاداده "lavfi.scd.mafd" با mafd برای هر فریم تنظیم میشوند.
کلیدهای متاداده "lavfi.scd.score" با امتیاز تغییر صحنه برای هر فریم جهت تشخیص تغییر صحنه تنظیم میشوند.
کلیدهای متاداده "lavfi.scd.time" با زمان فریم فیلترشده جاری که تغییر صحنه را با threshold تشخیص میدهد تنظیم میشوند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold, t
- تنظیم
آستانه
تشخیص
تغییر صحنه
به صورت
درصدی از
حداکثر
تغییر.
مقادیر
مناسب در
محدوده
"[8.0, 14.0]"
هستند.
محدوده
برای threshold
برابر "[0.,
100.]" است.
مقدار پیشفرض 10. است.
- sc_pass, s
- تنظیم پرچم برای عبور دادن فریمهای تغییر صحنه به فیلتر بعدی. مقدار پیشفرض 0 است. اگر میخواهید تنها اسنپشات فریمهای تغییر صحنه را دریافت کنید، میتوانید آن را فعال نمایید.
selectivecolor
تنظیم فیروزهای، ارغوانی، زرد و سیاه (CMYK) برای محدودههای خاصی از رنگها (مانند "reds"، "yellows"، "greens"، "cyans" و ...). محدوده تنظیم توسط «خلوص» رنگ (یعنی اینکه از پیش چقدر اشباع شده است) تعریف میشود.
این فیلتر مشابه ابزار Selective Color در ادوبی فتوشاپ است.
این فیلتر گزینههای زیر را میپذیرد:
- correction_method
- انتخاب روش
اصلاح رنگ.
مقادیر موجود عبارتند از:
پیشفرض "absolute" است.
- reds
- تنظیمات برای پیکسلهای قرمز (پیکسلهایی که مؤلفه قرمز در آنها بیشترین است)
- yellows
- تنظیمات برای پیکسلهای زرد (پیکسلهایی که مؤلفه آبی در آنها کمترین است)
- greens
- تنظیمات برای پیکسلهای سبز (پیکسلهایی که مؤلفه سبز در آنها بیشترین است)
- cyans
- تنظیمات برای پیکسلهای فیروزهای (پیکسلهایی که مؤلفه قرمز در آنها کمترین است)
- blues
- تنظیمات برای پیکسلهای آبی (پیکسلهایی که مؤلفه آبی در آنها بیشترین است)
- magentas
- تنظیمات برای پیکسلهای ارغوانی (پیکسلهایی که مؤلفه سبز در آنها کمترین است)
- whites
- تنظیمات برای پیکسلهای سفید (پیکسلهایی که تمامی مؤلفهها در آنها بیشتر از 128 است)
- neutrals
- تنظیمات برای تمامی پیکسلها به جز سیاه خالص و سفید خالص
- blacks
- تنظیمات برای پیکسلهای سیاه (پیکسلهایی که تمامی مؤلفهها در آنها کمتر از 128 است)
- psfile
- تعیین یک پرونده selective color فتوشاپ (".asv") برای وارد کردن تنظیمات از آن.
تمامی تنظیمات (reds، yellows، ...) تا ۴ مقدار اعشاری جداشده با فاصله را در محدوده [-1,1] میپذیرند، که به ترتیب برای تنظیم مقدار فیروزهای، ارغوانی، زرد و سیاه برای پیکسلهای محدوده خود به کار میروند.
مثالها
- افزایش ۵۰
درصدی
فیروزهای
و کاهش ۳۳
درصدی زرد
در تمامی
نواحی سبز،
و افزایش ۲۷
درصدی
ارغوانی در
نواحی آبی:
selectivecolor=greens=.5 0 -.33 0:blues=0 .27
- استفاده از
یک
پیشتنظیم
selective color فتوشاپ:
selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
separatefields
فیلتر "separatefields" یک ورودی ویدیویی مبتنی بر فریم را دریافت کرده و هر فریم را به فیلدهای تشکیلدهنده آن تقسیم میکند، که کلیپی جدید با نصف ارتفاع، دو برابر نرخ فریم و دو برابر تعداد فریم تولید مینماید.
این فیلتر از اطلاعات غلبه فیلد در فریم استفاده میکند تا تصمیم بگیرد کدام فیلد از هر جفت فیلد ابتدا در خروجی قرار گیرد. اگر اشتباه عمل کرد، پیش از فیلتر "separatefields" از فیلتر setfield استفاده کنید.
setdar, setsar
فیلتر "setdar" نسبت ابعاد نمایش (DAR) را برای ویدیوی خروجی فیلتر تنظیم میکند.
این کار با تغییر دادن نسبت ابعاد نمونه (معروف به پیکسل) مشخصشده، مطابق با معادله زیر انجام میشود:
<DAR> = <HORIZONTAL_RESOLUTION> / <VERTICAL_RESOLUTION> * <SAR>
به یاد داشته باشید که فیلتر "setdar" ابعاد پیکسلی فریم ویدیو را تغییر نمیدهد. همچنین، نسبت ابعاد نمایش تنظیمشده توسط این فیلتر ممکن است توسط فیلترهای بعدی در زنجیره فیلتر تغییر کند، برای مثال در صورت تغییر مقیاس یا اگر فیلتر دیگری از "setdar" یا "setsar" اعمال شود.
فیلتر "setsar" نسبت ابعاد نمونه (معروف به پیکسل) را برای ویدیوی خروجی فیلتر تنظیم میکند.
توجه داشته باشید که در نتیجه اعمال این فیلتر، نسبت ابعاد نمایش خروجی مطابق با معادله فوق تغییر خواهد کرد.
به یاد داشته باشید که نسبت ابعاد نمونه تنظیمشده توسط فیلتر "setsar" ممکن است توسط فیلترهای بعدی در زنجیره فیلتر تغییر کند، برای مثال اگر فیلتر دیگری از "setsar" یا "setdar" اعمال شود.
این فیلتر پارامترهای زیر را میپذیرد:
- r, ratio, dar ("setdar" only), sar ("setsar" only)
- تنظیم نسبت
ابعاد مورد
استفاده
توسط فیلتر.
پارامتر میتواند یک رشته عدد اعشاری، یا یک عبارت باشد. اگر پارامتر مشخص نشود، مقدار "0" در نظر گرفته میشود، به این معنی که همان مقدار ورودی استفاده میشود.
- max
- تنظیم حداکثر مقدار عدد صحیح برای استفاده در بیان صورت و مخرج هنگام کاهش نسبت ابعاد بیانشده به یک کسر گویا. مقدار پیشفرض 100 است.
پارامتر sar عبارتی شامل ثوابت زیر است:
- w, h
- عرض و ارتفاع ورودی.
- a
- همانند w / h.
- sar
- نسبت ابعاد نمونه ورودی.
- dar
- نسبت ابعاد نمایش ورودی. همانند (w / h) * sar است.
- hsub, vsub
- مقادیر زیرنمونهبرداری رنگی افقی و عمودی. برای مثال، برای قالب پیکسلی "yuv422p"، مقدار hsub برابر 2 و vsub برابر 1 است.
مثالها
- برای تغییر
نسبت ابعاد
نمایش به 16:9،
یکی از
موارد زیر
را مشخص
کنید:
setdar=dar=1.77777 setdar=dar=16/9
- برای تغییر
نسبت ابعاد
نمونه به 10:11،
مشخص کنید:
setsar=sar=10/11
- برای تنظیم
نسبت ابعاد
نمایش 16:9، و
تعیین
حداکثر
مقدار عدد
صحیح 1000 در
سادهسازی
نسبت
ابعاد، از
این دستور
استفاده
کنید:
setdar=ratio=16/9:max=1000
setfield
تحمیل فیلد برای فریم ویدیوی خروجی.
فیلتر "setfield" فیلد نوع درهمبافی را برای فریمهای خروجی نشانهگذاری میکند. این فیلتر فریم ورودی را تغییر نمیدهد، بلکه تنها ویژگی متناظر را تنظیم میکند، که بر نحوه رفتار فیلترهای بعدی (مانند "fieldorder" یا "yadif") با فریم تأثیر میگذارد.
این فیلتر گزینههای زیر را میپذیرد:
- mode
- مقادیر موجود عبارتند از:
setparams
تحمیل پارامتر فریم برای فریم ویدیوی خروجی.
فیلتر "setparams" درهمبافی و محدوده رنگ را برای فریمهای خروجی نشانهگذاری میکند. این فیلتر فریم ورودی را تغییر نمیدهد، بلکه تنها ویژگی متناظر را تنظیم میکند، که بر نحوه برخورد فیلترها/انکودرها با فریم تأثیر میگذارد.
- field_mode
- مقادیر موجود عبارتند از:
- range
- مقادیر موجود عبارتند از:
- auto
- حفظ همان ویژگی محدوده رنگ (پیشفرض).
- unspecified, unknown
- نشانهگذاری فریم به عنوان محدوده رنگ نامشخص.
- limited, tv, mpeg
- نشانهگذاری فریم به عنوان محدوده محدود (limited range).
- full, pc, jpeg
- نشانهگذاری فریم به عنوان محدوده کامل (full range).
- color_primaries
- تنظیم رنگهای اصلی (primaries). مقادیر موجود عبارتند از:
- color_trc
- تنظیم تابع انتقال رنگ (TRC). مقادیر موجود عبارتند از:
- colorspace
- تنظیم فضای رنگی. مقادیر موجود عبارتند از:
- chroma_location
- تنظیم موقعیت مکانی نمونه کروما. مقادیر موجود عبارتند از:
- auto
- حفظ همان موقعیت کروما (پیشفرض).
- unspecified, unknown
- left
- center
- topleft
- top
- bottomleft
- bottom
- alpha_mode
- تنظیم حالت آلفا. مقادیر موجود عبارتند از:
- auto
- حفظ همان حالت آلفا (پیشفرض).
- unspecified, unknown
- premultiplied
- straight
shear
اعمال تبدیل برشی (shear transform) بر روی ویدیوی ورودی.
این فیلتر از گزینههای زیر پشتیبانی میکند:
- shx
- ضریب برش در راستای محور X. مقدار پیشفرض 0 است. محدوده مجاز از -2 تا 2 است.
- shy
- ضریب برش در راستای محور Y. مقدار پیشفرض 0 است. محدوده مجاز از -2 تا 2 است.
- fillcolor, c
- تنظیم رنگ
مورد
استفاده
برای پر
کردن ناحیه
خروجی که
توسط
ویدیوی
تبدیلیافته
پوشش داده
نمیشود.
برای نحو
کلی این
گزینه،
بخش "Color" در
راهنمای ffmpeg-utils
را بررسی
کنید. اگر
مقدار ویژه
"none" انتخاب
شود، هیچ
پسزمینهای
چاپ
نمیشود
(برای مثال
در حالتی که
پسزمینه
هرگز نشان
داده
نمیشود
مفید است).
مقدار پیشفرض "black" است.
- interp
- تنظیم نوع درونیابی. میتواند "bilinear" یا "nearest" باشد. پیشفرض "bilinear" است.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
showinfo
نمایش یک خط حاوی اطلاعات گوناگون برای هر فریم ویدیوی ورودی. ویدیوی ورودی تغییر نمیکند.
این فیلتر از گزینههای زیر پشتیبانی میکند:
- checksum
- محاسبه چکسام (checksum) هر صفحه. بهطور پیشفرض فعال است.
- udu_sei_as_ascii
- تلاش برای چاپ دادههای کاربر در SEI ثبتنشده به صورت نویسه اسکی در صورت امکان، و در غیر این صورت در قالب هگز.
خط نشاندادهشده شامل دنبالهای از جفتهای کلید/مقدار به فرم key:value است.
مقادیر زیر در خروجی نشان داده میشوند:
- n
- شماره (ترتیبی) فریم ورودی، شروع از 0.
- pts
- برچسب زمانی نمایش (PTS) فریم ورودی، بیانشده بر حسب تعداد واحدهای پایه زمانی. واحد پایه زمانی به پد ورودی فیلتر بستگی دارد.
- pts_time
- برچسب زمانی نمایش فریم ورودی، بیانشده بر حسب ثانیه.
- fmt
- نام قالب پیکسل.
- sar
- نسبت ابعاد نمونه فریم ورودی، بیانشده به فرم num/den.
- s
- اندازه فریم ورودی. برای نحو این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- i
- نوع حالت درهمبافته ("P" برای "پروگرسیو"، "T" برای فیلد بالایی اول، "B" برای فیلد پایینی اول).
- iskey
- این مقدار در صورتی که فریم یک فریم کلیدی باشد 1، و در غیر این صورت 0 است.
- type
- نوع تصویر فریم ورودی ("I" برای فریم نوع I، "P" برای فریم نوع P، "B" برای فریم نوع B، یا "?" برای یک نوع ناشناخته). همچنین به مستندات شمارش "AVPictureType" و تابع "av_get_picture_type_char" تعریفشده در libavutil/avutil.h مراجعه کنید.
- checksum
- چکسام Adler-32 (چاپشده در مبنای شانزده) از تمامی صفحات فریم ورودی.
- plane_checksum
- چکسام Adler-32 (چاپشده در مبنای شانزده) از هر صفحه فریم ورودی، بیانشده به فرم "[c0 c1 c2 c3]".
- mean
- مقدار میانگین پیکسلها در هر صفحه فریم ورودی، بیانشده به فرم "[mean0 mean1 mean2 mean3]".
- stdev
- انحراف معیار مقادیر پیکسل در هر صفحه فریم ورودی، بیانشده به فرم "[stdev0 stdev1 stdev2 stdev3]".
showpalette
نمایش پالت ۲۵۶ رنگ هر فریم. این فیلتر تنها برای فریمهای دارای قالب پیکسلی pal8 مرتبط است.
این فیلتر گزینه زیر را میپذیرد:
- s
- تنظیم اندازه کادر مورد استفاده برای نمایش یک مدخل رنگ پالت. پیشفرض 30 است (برای یک کادر پیکسلی "30x30").
shuffleframes
تغییر ترتیب و/یا تکثیر و/یا حذف فریمهای ویدیو.
این فیلتر پارامترهای زیر را میپذیرد:
- mapping
- تنظیم شاخصهای مقصد فریمهای ورودی. این یک فهرست جداشده با فاصله یا '|' از شاخصها است که فریمهای ورودی را به فریمهای خروجی نگاشت میکند. تعداد شاخصها همچنین حداکثر مقداری را که هر شاخص میتواند داشته باشد مشخص میکند. شاخص '-1' معنای ویژهای دارد و آن حذف فریم است.
فریم اول دارای شاخص 0 است. مقدار پیشفرض حفظ ورودی بدون تغییر است.
مثالها
- جابهجا
کردن فریم
دوم و سوم
از هر سه
فریم ورودی:
ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
- جابهجا
کردن فریم
دهم و اول
از هر ده
فریم ورودی:
ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
shufflepixels
تغییر ترتیب پیکسلها در فریمهای ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- direction, d
- تنظیم جهت بازآرایی (shuffle). میتواند جهت مستقیم یا معکوس باشد. جهت پیشفرض مستقیم است.
- mode, m
- تنظیم حالت بازآرایی. میتواند حالت افقی، عمودی یا بلوکی باشد.
- width, w
- height, h
- تنظیم اندازه بلوک بازآرایی. در مورد حالت بازآرایی افقی تنها بخش عرض اندازه استفاده میشود، و در مورد حالت بازآرایی عمودی تنها بخش ارتفاع اندازه استفاده میشود.
- seed, s
- تنظیم سید (seed) تصادفی مورد استفاده در بازآرایی پیکسلها. عمدتاً برای این مفید است که بتوان فرایند فیلتر را برای به دست آوردن ورودی اصلی معکوس کرد. برای مثال، جهت معکوس کردن بازآرایی مستقیم باید از همان پارامترها و دقیقاً همان سید استفاده کرده و جهت را روی معکوس (inverse) تنظیم کنید.
shuffleplanes
تغییر ترتیب و/یا تکثیر صفحات ویدیویی.
این فیلتر پارامترهای زیر را میپذیرد:
- map0
- شاخص صفحه ورودی برای استفاده به عنوان اولین صفحه خروجی.
- map1
- شاخص صفحه ورودی برای استفاده به عنوان دومین صفحه خروجی.
- map2
- شاخص صفحه ورودی برای استفاده به عنوان سومین صفحه خروجی.
- map3
- شاخص صفحه ورودی برای استفاده به عنوان چهارمین صفحه خروجی.
صفحه اول دارای شاخص 0 است. مقدار پیشفرض حفظ ورودی بدون تغییر است.
مثالها
- •
- جابهجا
کردن صفحات
دوم و سوم
ورودی:
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
signalstats
ارزیابی معیارهای بصری گوناگون که به تعیین مشکلات مرتبط با دیجیتالی کردن رسانههای ویدیویی آنالوگ کمک میکنند.
بهطور پیشفرض این فیلتر این مقادیر متاداده را ثبت میکند:
- YMIN
- نمایش حداقل مقدار Y موجود درون فریم ورودی. بیانشده در محدوده [0-255].
- YLOW
- نمایش مقدار Y در صدک ۱۰٪ درون فریم ورودی. بیانشده در محدوده [0-255].
- YAVG
- نمایش میانگین مقدار Y درون فریم ورودی. بیانشده در محدوده [0-255].
- YHIGH
- نمایش مقدار Y در صدک ۹۰٪ درون فریم ورودی. بیانشده در محدوده [0-255].
- YMAX
- نمایش حداکثر مقدار Y موجود درون فریم ورودی. بیانشده در محدوده [0-255].
- UMIN
- نمایش حداقل مقدار U موجود درون فریم ورودی. بیانشده در محدوده [0-255].
- ULOW
- نمایش مقدار U در صدک ۱۰٪ درون فریم ورودی. بیانشده در محدوده [0-255].
- UAVG
- نمایش میانگین مقدار U درون فریم ورودی. بیانشده در محدوده [0-255].
- UHIGH
- نمایش مقدار U در صدک ۹۰٪ درون فریم ورودی. بیانشده در محدوده [0-255].
- UMAX
- نمایش حداکثر مقدار U موجود درون فریم ورودی. بیانشده در محدوده [0-255].
- VMIN
- نمایش حداقل مقدار V موجود درون فریم ورودی. بیانشده در محدوده [0-255].
- VLOW
- نمایش مقدار V در صدک ۱۰٪ درون فریم ورودی. بیانشده در محدوده [0-255].
- VAVG
- نمایش میانگین مقدار V درون فریم ورودی. بیانشده در محدوده [0-255].
- VHIGH
- نمایش مقدار V در صدک ۹۰٪ درون فریم ورودی. بیانشده در محدوده [0-255].
- VMAX
- نمایش حداکثر مقدار V موجود درون فریم ورودی. بیانشده در محدوده [0-255].
- SATMIN
- نمایش حداقل مقدار اشباع موجود درون فریم ورودی. بیانشده در محدوده [0-~181.02].
- SATLOW
- نمایش مقدار اشباع در صدک ۱۰٪ درون فریم ورودی. بیانشده در محدوده [0-~181.02].
- SATAVG
- نمایش میانگین مقدار اشباع درون فریم ورودی. بیانشده در محدوده [0-~181.02].
- SATHIGH
- نمایش مقدار اشباع در صدک ۹۰٪ درون فریم ورودی. بیانشده در محدوده [0-~181.02].
- SATMAX
- نمایش حداکثر مقدار اشباع موجود درون فریم ورودی. بیانشده در محدوده [0-~181.02].
- HUEMED
- نمایش مقدار میانه برای فام درون فریم ورودی. بیانشده در محدوده [0-360].
- HUEAVG
- نمایش مقدار میانگین برای فام درون فریم ورودی. بیانشده در محدوده [0-360].
- YDIF
- نمایش میانگین اختلاف مقدار نمونه بین تمامی مقادیر صفحه Y در فریم جاری و مقادیر متناظر فریم ورودی قبلی. بیانشده در محدوده [0-255].
- UDIF
- نمایش میانگین اختلاف مقدار نمونه بین تمامی مقادیر صفحه U در فریم جاری و مقادیر متناظر فریم ورودی قبلی. بیانشده در محدوده [0-255].
- VDIF
- نمایش میانگین اختلاف مقدار نمونه بین تمامی مقادیر صفحه V در فریم جاری و مقادیر متناظر فریم ورودی قبلی. بیانشده در محدوده [0-255].
- YBITDEPTH
- نمایش عمق بیت صفحه Y در فریم جاری. بیانشده در محدوده [0-16].
- UBITDEPTH
- نمایش عمق بیت صفحه U در فریم جاری. بیانشده در محدوده [0-16].
- VBITDEPTH
- نمایش عمق بیت صفحه V در فریم جاری. بیانشده در محدوده [0-16].
این فیلتر گزینههای زیر را میپذیرد:
- stat
- out
- stat شکل
اضافی
تحلیل
تصویر را
مشخص
میکند. out
ویدیو را با
هایلایت
کردن نوع
مشخصشده
از
پیکسلها
خروجی
میدهد.
هر دو گزینه مقادیر زیر را میپذیرند:
- tout
- شناسایی پیکسلهای پرت زمانی (temporal outliers). یک پرت زمانی پیکسلی است که برخلاف پیکسلهای مجاور در همان فیلد است. نمونههایی از پرتهای زمانی شامل نتایج افت ویدیو، گرفتگی هد، یا مشکلات ردیابی نوار است.
- vrep
- شناسایی تکرار خط عمودی. تکرار خط عمودی شامل ردیفهای مشابهی از پیکسلها درون یک فریم است. در ویدیوی ذاتاً دیجیتال تکرار خط عمودی رایج است، اما این الگو در ویدیوی دیجیتالیشده از یک منبع آنالوگ نامعمول است. هنگامی که در ویدیوی حاصل از دیجیتالی کردن یک منبع آنالوگ رخ میدهد، میتواند نشاندهنده پنهانسازی ناشی از جبرانکننده افت سیگنال باشد.
- brng
- شناسایی پیکسلهایی که خارج از محدوده مجاز پخش قرار میگیرند.
- color, c
- تنظیم رنگ هایلایت برای گزینه out. رنگ پیشفرض زرد است.
مثالها
- خروجی دادن
دادههای
سنجههای
مختلف
ویدیو:
ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
- خروجی دادن
دادههای
خاص در مورد
مقادیر
حداقل و
حداکثر
صفحه Y به
ازای هر
فریم:
ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
- پخش ویدیو
در حین
هایلایت
کردن
پیکسلهای
خارج از
محدوده پخش
به رنگ
قرمز.
ffplay example.mov -vf signalstats="out=brng:color=red"
- پخش ویدیو
با متاداده
signalstats رسمشده
بر روی
فریم.
ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
محتوای signalstat_drawtext.txt استفادهشده در دستور عبارت است از:
time %{pts:hms} Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX}) U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX}) V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX}) saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
signature
امضای ویدیویی (Video Signature) استاندارد MPEG-7 را محاسبه میکند. این فیلتر میتواند بیش از یک ورودی را مدیریت کند. در این حالت تطابق میان ورودیها نیز میتواند به صورت اضافی محاسبه شود. فیلتر همواره ورودی اول را بدون تغییر عبور میدهد. امضای هر استریم را میتوان در یک پرونده نوشت.
این فیلتر گزینههای زیر را میپذیرد:
- detectmode
- فعال یا
غیرفعال
کردن
فرایند
تطابق.
مقادیر موجود عبارتند از:
- nb_inputs
- تنظیم تعداد ورودیها. مقدار گزینه باید یک عدد صحیح غیرمنفی باشد. مقدار پیشفرض 1 است.
- filename
- تنظیم مسیری که خروجی در آن نوشته میشود. اگر بیش از یک ورودی وجود داشته باشد، مسیر باید یک الگو (prototype) باشد، یعنی حاوی %d یا %0nd (که در آن n یک عدد صحیح مثبت است) باشد که با شماره ورودی جایگزین خواهد شد. اگر نام پروندهای مشخص نشود، هیچ خروجی نوشته نخواهد شد. این حالت پیشفرض است.
- format
- انتخاب
قالب خروجی.
مقادیر موجود عبارتند از:
- th_d
- تنظیم آستانه برای تشخیص یک کلمه به عنوان مشابه. مقدار گزینه باید یک عدد صحیح بزرگتر از صفر باشد. مقدار پیشفرض 9000 است.
- th_dc
- تنظیم آستانه برای تشخیص تمام کلمات به عنوان مشابه. مقدار گزینه باید یک عدد صحیح بزرگتر از صفر باشد. مقدار پیشفرض 60000 است.
- th_xh
- تنظیم آستانه برای تشخیص فریمها به عنوان مشابه. مقدار گزینه باید یک عدد صحیح بزرگتر از صفر باشد. مقدار پیشفرض 116 است.
- th_di
- تنظیم حداقل طول یک توالی بر حسب فریم برای شناسایی آن به عنوان توالی منطبق. مقدار گزینه باید یک مقدار صحیح غیرمنفی باشد. مقدار پیشفرض 0 است.
- th_it
- تنظیم حداقل نسبت فریمهای منطبق به کل فریمها. مقدار گزینه باید یک مقدار اعشاری با دقت مضاعف (double) بین 0 و 1 باشد. مقدار پیشفرض 0.5 است.
مثالها
- برای
محاسبه
امضای یک
ویدیوی
ورودی و
ذخیره آن در
signature.bin:
ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
- برای تشخیص
اینکه آیا
دو ویدیو
مطابقت
دارند یا
خیر و ذخیره
امضاها در
قالب XML در signature0.xml
و signature1.xml:
ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
siti
محاسبه امتیازهای اطلاعات مکانی (SI) و اطلاعات زمانی (TI) برای یک ویدیو، مطابق با تعریف توصیهنامه ITU-T Rec. P.910 (11/21): روشهای ارزیابی کیفی ذهنی ویدیو برای کاربردهای چندرسانهای. فایل PDF در https://www.itu.int/rec/T-REC-P.910-202111-S/en در دسترس است. توجه داشته باشید که این یک پیادهسازی قدیمی است که مربوط به یک توصیهنامه منسوخشده میباشد. برای آخرین نسخه به ITU-T Rec. P.910 (07/22) در https://www.itu.int/rec/T-REC-P.910-202207-I/en مراجعه کنید.
این فیلتر گزینه زیر را میپذیرد:
- print_summary
- اگر روی 1 تنظیم شود، آمارهای خلاصه در کنسول چاپ میشوند. پیشفرض 0 است.
مثالها
- •
- برای
محاسبه
معیارهای SI/TI
و چاپ
خلاصه:
ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
smartblur
تار کردن (بلور کردن) ویدیوی ورودی بدون تأثیر بر خطوط پیرامونی.
این فیلتر گزینههای زیر را میپذیرد:
- luma_radius, lr
- تنظیم شعاع روشنایی (luma). مقدار گزینه باید یک عدد اعشاری در محدوده [0.1,5.0] باشد که واریانس فیلتر گوسی مورد استفاده برای تار کردن تصویر را مشخص میکند (هرچه بزرگتر باشد، کندتر خواهد بود). مقدار پیشفرض 1.0 است.
- luma_strength, ls
- تنظیم شدت روشنایی (luma). مقدار گزینه باید یک عدد اعشاری در محدوده [-1.0,1.0] باشد که میزان تاری را پیکربندی میکند. مقداری در بازه [0.0,1.0] تصویر را تار میکند، در حالی که مقداری در بازه [-1.0,0.0] تصویر را شارپ (واضح) میکند. مقدار پیشفرض 1.0 است.
- luma_threshold, lt
- تنظیم آستانه روشنایی (luma) مورد استفاده به عنوان ضریبی برای تعیین اینکه آیا یک پیکسل باید تار شود یا خیر. مقدار گزینه باید یک عدد صحیح در محدوده [-30,30] باشد. مقدار 0 تمام تصویر را فیلتر میکند، مقداری در بازه [0,30] نواحی تخت را فیلتر میکند و مقداری در بازه [-30,0] لبهها را فیلتر خواهد کرد. مقدار پیشفرض 0 است.
- chroma_radius, cr
- تنظیم شعاع رنگ (chroma). مقدار گزینه باید یک عدد اعشاری در محدوده [0.1,5.0] باشد که واریانس فیلتر گوسی مورد استفاده برای تار کردن تصویر را مشخص میکند (هرچه بزرگتر باشد، کندتر خواهد بود). مقدار پیشفرض برابر با luma_radius است.
- chroma_strength, cs
- تنظیم شدت رنگ (chroma). مقدار گزینه باید یک عدد اعشاری در محدوده [-1.0,1.0] باشد که تاری را پیکربندی میکند. مقداری در بازه [0.0,1.0] تصویر را تار میکند در حالی که مقداری در بازه [-1.0,0.0] تصویر را شارپ میکند. مقدار پیشفرض برابر با luma_strength است.
- chroma_threshold, ct
- تنظیم آستانه رنگ (chroma) مورد استفاده به عنوان ضریبی برای تعیین اینکه آیا یک پیکسل باید تار شود یا خیر. مقدار گزینه باید یک عدد صحیح در محدوده [-30,30] باشد. مقدار 0 تمام تصویر را فیلتر میکند، مقداری در بازه [0,30] نواحی تخت را فیلتر میکند و مقداری در بازه [-30,0] لبهها را فیلتر میکند. مقدار پیشفرض برابر با luma_threshold است.
- alpha_radius, ar
- تنظیم شعاع آلفا. مقدار گزینه باید یک عدد اعشاری در محدوده [0.1,5.0] باشد که واریانس فیلتر گوسی مورد استفاده برای تار کردن تصویر را مشخص میکند (هرچه بزرگتر باشد، کندتر خواهد بود). مقدار پیشفرض برابر با luma_radius است.
- alpha_strength, as
- تنظیم شدت آلفا. مقدار گزینه باید یک عدد اعشاری در محدوده [-1.0,1.0] باشد که تاری را پیکربندی میکند. مقداری در بازه [0.0,1.0] تصویر را تار میکند، در حالی که مقداری در بازه [-1.0,0.0] تصویر را شارپ میکند. مقدار پیشفرض برابر با luma_strength است.
- alpha_threshold, at
- تنظیم آستانه آلفا مورد استفاده به عنوان ضریبی برای تعیین اینکه آیا یک پیکسل باید تار شود یا خیر. مقدار گزینه باید یک عدد صحیح در محدوده [-30,30] باشد. مقدار 0 کل تصویر را فیلتر میکند، مقداری در بازه [0,30] نواحی تخت را فیلتر میکند و مقداری در بازه [-30,0] لبهها را فیلتر میکند. مقدار پیشفرض برابر با luma_threshold است.
اگر یکی از گزینههای chroma یا alpha صراحتاً تنظیم نشود، مقدار متناظر آن در luma تنظیم خواهد شد.
sobel
اعمال عملگر سوبل (sobel) بر روی استریم ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تعیین اینکه کدام صفحات (planes) پردازش خواهند شد؛ صفحات پردازشنشده کپی میشوند. با مقدار پیشفرض 0xf، تمام صفحات پردازش خواهند شد.
- scale
- تنظیم مقداری که در نتیجه فیلترشده ضرب خواهد شد.
- delta
- تنظیم مقداری که به نتیجه فیلترشده اضافه خواهد شد.
دستورات
این فیلتر از تمام گزینههای بالا به عنوان دستورات پشتیبانی میکند.
spp
اعمال یک فیلتر پسپردازش ساده که تصویر را در چندین شیفت (یا در صورت سطح کیفیت quality برابر با 6، در تمام شیفتها) فشرده و بازفشردهسازی میکند و نتایج را میانگین میگیرد.
این فیلتر گزینههای زیر را میپذیرد:
- quality
- تنظیم کیفیت. این گزینه تعداد سطوح برای میانگینگیری را مشخص میکند. یک عدد صحیح در محدوده 0-6 میپذیرد. در صورت تنظیم روی 0، فیلتر هیچ اثری نخواهد داشت. مقدار 6 به معنای بالاترین کیفیت است. به ازای هر واحد افزایش در این مقدار، سرعت تقریباً به ضریب 2 کاهش مییابد. مقدار پیشفرض 3 است.
- qp
- اجبار یک پارامتر کوانتیزاسیون (QP) ثابت. در صورت عدم تنظیم، فیلتر از QP استریم ویدیو (در صورت وجود) استفاده خواهد کرد.
- mode
- تنظیم حالت آستانهگذاری. حالتهای موجود عبارتند از:
- use_bframe_qp
- در صورت تنظیم روی 1، استفاده از QP فریمهای B را فعال میکند. استفاده از این گزینه ممکن است سبب سوسوزدن شود زیرا فریمهای B معمولاً دارای QP بزرگتری هستند. پیشفرض 0 (غیرفعال) است.
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
- quality, level
- تنظیم سطح کیفیت. مقدار "max" را میتوان برای تنظیم حداکثر سطح، در حال حاضر 6، استفاده کرد.
sr
مقیاسبندی ورودی با اعمال یکی از روشهای وضوح فوقالعاده (super-resolution) مبتنی بر شبکههای عصبی پیچشی (CNN). مدلهای پشتیبانیشده:
- مدل شبکه عصبی پیچشی با وضوح فوقالعاده (SRCNN). https://arxiv.org/abs/1501.00092 را ببینید.
- مدل شبکه عصبی پیچشی زیرپیکسلی کارآمد (ESPCN). https://arxiv.org/abs/1609.05158 را ببینید.
اسکریپتهای آموزش و همچنین اسکریپتهای ذخیره پرونده مدل (.pb) را میتوان در https://github.com/XueweiMeng/sr/tree/sr_dnn_native یافت. مخزن اصلی در https://github.com/HighVoltageRocknRoll/sr.git قرار دارد.
این فیلتر گزینههای زیر را میپذیرد:
- dnn_backend
- تعیین اینکه از کدام بکاند DNN برای بارگذاری و اجرای مدل استفاده شود. این گزینه مقادیر زیر را میپذیرد:
- tensorflow
- بکاند TensorFlow. برای فعال کردن این بکاند باید کتابخانه TensorFlow for C را نصب کنید (به https://www.tensorflow.org/install/lang_c مراجعه کنید) و FFmpeg را با "--enable-libtensorflow" پیکربندی نمایید.
- model
- تنظیم مسیر پرونده مدل که معماری شبکه و پارامترهای آن را مشخص میکند. توجه داشته باشید که بکاندهای مختلف از قالبهای پرونده متفاوتی استفاده میکنند. بکاندهای TensorFlow و OpenVINO تنها میتوانند پروندههای قالب مخصوص خود را بارگذاری کنند.
- scale_factor
- تنظیم ضریب مقیاس برای مدل SRCNN. مقادیر مجاز 2، 3 و 4 هستند. مقدار پیشفرض 2 است. ضریب مقیاس برای مدل SRCNN ضروری است، زیرا ورودی را که با استفاده از مقیاسبندی دومکعبی (bicubic) با ضریب مقیاس مناسب بزرگ شده است میپذیرد.
برای دسترسی به قابلیتهای کامل (مانند اجرای ناهمگام)، لطفاً از فیلتر dnn_processing استفاده کنید.
sr_amf
افزایش مقیاس (بزرگنمایی اندازه) برای ویدیوی ورودی با استفاده از کتابخانه چارچوب رسانهای پیشرفته AMD (AMF) جهت شتابدهی سختافزاری. استفاده از الگوریتمهای پیشرفته برای بزرگنمایی با کیفیت خروجی بالاتر. تنظیم پهنا و ارتفاع خروجی به همان روش فیلتر scale کار میکند.
این فیلتر گزینههای زیر را میپذیرد:
- w
- h
- تنظیم
عبارت
ابعاد
ویدیوی
خروجی.
مقدار
پیشفرض
ابعاد
ورودی است.
همان عبارتهای فیلتر scale را مجاز میداند.
- algorithm
- تنظیم الگوریتم مورد استفاده برای مقیاسبندی:
- کنترل شارپسازی مقیاسبند باکیفیت (hq scaler). این مقدار یک عدد اعشاری در محدوده [0.0, 2.0] است.
- format
- کنترل قالب پیکسلی خروجی. بهطور پیشفرض، یا در صورت عدم تعیین، از قالب پیکسلی ورودی استفاده میشود.
- keep-ratio
- اجبار مقیاسبند به حفظ نسبت ابعاد تصویر ورودی هنگامی که اندازه خروجی دارای نسبت ابعاد متفاوتی است. مقدار پیشفرض false است.
- fill
- مشخص میکند که آیا تصویر خروجی خارج از ناحیه مورد نظر، که تمام سطح خروجی را پر نمیکند، باید با یک رنگ یکدست پر شود یا خیر.
مثالها
- مقیاسبندی
ورودی به 720p
با حفظ نسبت
ابعاد و
اطمینان از
اینکه
خروجی yuv420p است.
sr_amf=-2:720:format=yuv420p
- بزرگنمایی
به 4K با
الگوریتم
ویدیو SR1.1.
sr_amf=4096:2160:algorithm=sr1-1
ssim
محاسبه معیار شباهت ساختاری (SSIM) میان دو ویدیوی ورودی.
این فیلتر دو ویدیوی ورودی را دریافت میکند؛ ورودی اول منبع «اصلی» تلقی میشود و بدون تغییر به خروجی فرستاده میشود. ورودی دوم به عنوان ویدیوی «مرجع» برای محاسبه SSIM استفاده میشود.
هر دو ویدیوی ورودی باید دارای وضوح و قالب پیکسلی یکسانی باشند تا این فیلتر به درستی کار کند. همچنین فرض میشود هر دو ورودی دارای تعداد فریمهای یکسانی هستند که یک به یک مقایسه میشوند.
این فیلتر مقدار SSIM محاسبهشده برای هر فریم را ذخیره میکند.
شرح پارامترهای پذیرفتهشده در ادامه آمده است:
- stats_file, f
- در صورت مشخص شدن، فیلتر از پرونده نامبرده برای ذخیره SSIM هر تکفریم استفاده خواهد کرد. هنگامی که نام پرونده برابر با "-" باشد، دادهها به خروجی استاندارد فرستاده میشوند.
پرونده چاپشده در صورت انتخاب stats_file، شامل توالیای از جفتهای کلید/مقدار به شکل key:value برای هر جفت فریم مقایسهشده است.
شرح هر یک از پارامترهای نمایشدادهشده در ادامه آمده است:
- n
- شماره ترتیبی فریم ورودی، با شروع از 1
- Y, U, V, R, G, B
- مقدار SSIM فریمهای مقایسهشده برای مؤلفه مشخصشده با پسوند.
- All
- مقدار SSIM فریمهای مقایسهشده برای کل فریم.
- dB
- مشابه موارد بالا اما در قالب بازنمایی دسیبل (dB).
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
مثالها
- به عنوان
مثال:
movie=ref_movie.mpg, setpts=PTS-STARTPTS [main]; [main][ref] ssim="stats_file=stats.log" [out]
در این مثال پرونده ورودی در حال پردازش با پرونده مرجع ref_movie.mpg مقایسه میشود. مقدار SSIM هر تکفریم در stats.log ذخیره میشود.
- مثال دیگری
با محاسبه
همزمان هر
دو معیار psnr و
ssim:
ffmpeg -i main.mpg -i ref.mpg -lavfi "ssim;[0:v][1:v]psnr" -f null -
- مثال دیگری
با
کانتینرهای
مختلف:
ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
stereo3d
تبدیل میان قالبهای مختلف تصویر برجستهنما (stereoscopic).
این فیلتر گزینههای زیر را میپذیرد:
- in
- تنظیم قالب
تصویر
برجستهنمای
ورودی.
مقادیر موجود برای قالبهای تصویر ورودی عبارتند از:
- sbsl
- کنار هم موازی (چشم چپ در چپ، چشم راست در راست)
- sbsr
- کنار هم ضربدری (چشم راست در چپ، چشم چپ در راست)
- sbs2l
- کنار هم موازی با وضوح نصف پهنا (چشم چپ در چپ، چشم راست در راست)
- sbs2r
- کنار هم ضربدری با وضوح نصف پهنا (چشم راست در چپ، چشم چپ در راست)
- abl
- tbl
- بالا-پایین (چشم چپ در بالا، چشم راست در پایین)
- abr
- tbr
- بالا-پایین (چشم راست در بالا، چشم چپ در پایین)
- ab2l
- tb2l
- بالا-پایین با وضوح نصف ارتفاع (چشم چپ در بالا، چشم راست در پایین)
- ab2r
- tb2r
- بالا-پایین با وضوح نصف ارتفاع (چشم راست در بالا، چشم چپ در پایین)
- al
- فریمهای متناوب (ابتدا چشم چپ، سپس چشم راست)
- ar
- فریمهای متناوب (ابتدا چشم راست، سپس چشم چپ)
- irl
- ردیفهای درهمتنیده (چشم چپ ردیف بالایی، چشم راست از ردیف بعدی شروع میشود)
- irr
- ردیفهای درهمتنیده (چشم راست ردیف بالایی، چشم چپ از ردیف بعدی شروع میشود)
- icl
- ستونهای درهمتنیده، ابتدا چشم چپ
- icr
- ستونهای
درهمتنیده،
ابتدا چشم
راست
مقدار پیشفرض sbsl است.
- out
- تنظیم قالب تصویر برجستهنمای خروجی.
- sbsl
- کنار هم موازی (چشم چپ در چپ، چشم راست در راست)
- sbsr
- کنار هم ضربدری (چشم راست در چپ، چشم چپ در راست)
- sbs2l
- کنار هم موازی با وضوح نصف پهنا (چشم چپ در چپ، چشم راست در راست)
- sbs2r
- کنار هم ضربدری با وضوح نصف پهنا (چشم راست در چپ، چشم چپ در راست)
- abl
- tbl
- بالا-پایین (چشم چپ در بالا، چشم راست در پایین)
- abr
- tbr
- بالا-پایین (چشم راست در بالا، چشم چپ در پایین)
- ab2l
- tb2l
- بالا-پایین با وضوح نصف ارتفاع (چشم چپ در بالا، چشم راست در پایین)
- ab2r
- tb2r
- بالا-پایین با وضوح نصف ارتفاع (چشم راست در بالا، چشم چپ در پایین)
- al
- فریمهای متناوب (ابتدا چشم چپ، سپس چشم راست)
- ar
- فریمهای متناوب (ابتدا چشم راست، سپس چشم چپ)
- irl
- ردیفهای درهمتنیده (چشم چپ ردیف بالایی، چشم راست از ردیف بعدی شروع میشود)
- irr
- ردیفهای درهمتنیده (چشم راست ردیف بالایی، چشم چپ از ردیف بعدی شروع میشود)
- arbg
- آناگلیف قرمز/آبی خاکستری (فیلتر قرمز روی چشم چپ، فیلتر آبی روی چشم راست)
- argg
- آناگلیف قرمز/سبز خاکستری (فیلتر قرمز روی چشم چپ، فیلتر سبز روی چشم راست)
- arcg
- آناگلیف قرمز/فیروزهای خاکستری (فیلتر قرمز روی چشم چپ، فیلتر فیروزهای روی چشم راست)
- arch
- آناگلیف قرمز/فیروزهای نیمهرنگی (فیلتر قرمز روی چشم چپ، فیلتر فیروزهای روی چشم راست)
- arcc
- آناگلیف قرمز/فیروزهای رنگی (فیلتر قرمز روی چشم چپ، فیلتر فیروزهای روی چشم راست)
- arcd
- آناگلیف قرمز/فیروزهای بهینهشده با تصویرسازی حداقل مربعات دوبوآ (فیلتر قرمز روی چشم چپ، فیلتر فیروزهای روی چشم راست)
- agmg
- آناگلیف سبز/سرخابی خاکستری (فیلتر سبز روی چشم چپ، فیلتر سرخابی روی چشم راست)
- agmh
- آناگلیف سبز/سرخابی نیمهرنگی (فیلتر سبز روی چشم چپ، فیلتر سرخابی روی چشم راست)
- agmc
- آناگلیف سبز/سرخابی رنگی (فیلتر سبز روی چشم چپ، فیلتر سرخابی روی چشم راست)
- agmd
- آناگلیف سبز/سرخابی بهینهشده با تصویرسازی حداقل مربعات دوبوآ (فیلتر سبز روی چشم چپ، فیلتر سرخابی روی چشم راست)
- aybg
- آناگلیف زرد/آبی خاکستری (فیلتر زرد روی چشم چپ، فیلتر آبی روی چشم راست)
- aybh
- آناگلیف زرد/آبی نیمهرنگی (فیلتر زرد روی چشم چپ، فیلتر آبی روی چشم راست)
- aybc
- آناگلیف زرد/آبی رنگی (فیلتر زرد روی چشم چپ، فیلتر آبی روی چشم راست)
- aybd
- آناگلیف زرد/آبی بهینهشده با تصویرسازی حداقل مربعات دوبوآ (فیلتر زرد روی چشم چپ، فیلتر آبی روی چشم راست)
- ml
- خروجی تککاناله (فقط چشم چپ)
- mr
- خروجی تککاناله (فقط چشم راست)
- chl
- شطرنجی، ابتدا چشم چپ
- chr
- شطرنجی، ابتدا چشم راست
- icl
- ستونهای درهمتنیده، ابتدا چشم چپ
- icr
- ستونهای درهمتنیده، ابتدا چشم راست
- hdmi
- بستهبندی فریم HDMI
مقدار پیشفرض arcd است.
مثالها
- تبدیل
ویدیوی
ورودی از
حالت کنار
هم موازی به
آناگلیف
زرد/آبی
دوبوآ:
stereo3d=sbsl:aybd
- تبدیل
ویدیوی
ورودی از
بالا-پایین
(چشم چپ در
بالا، چشم
راست در
پایین) به
کنار هم
ضربدری:
stereo3d=abl:sbsr
streamselect, astreamselect
انتخاب استریمهای ویدیویی یا صوتی.
این فیلتر گزینههای زیر را میپذیرد:
دستورات
فیلترهای "streamselect" و "astreamselect" از دستورات زیر پشتیبانی میکنند:
- map
- تنظیم اندیسهای ورودی برای نگاشت مجدد به خروجیها.
مثالها
- انتخاب
استریم اول
برای 5
ثانیه نخست
و استریم
دوم برای
مابقی زمان:
sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
- مشابه مورد
بالا، اما
برای صدا:
asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
subtitles
ترسیم زیرنویس بر روی ویدیوی ورودی با استفاده از کتابخانه libass.
برای فعالسازی کامپایل این فیلتر، باید FFmpeg را با "--enable-libass" پیکربندی کنید. این فیلتر همچنین برای تبدیل پرونده زیرنویس ارائهشده به قالب زیرنویس ASS (Advanced Substation Alpha)، نیازمند ساختی همراه با libavcodec و libavformat است.
این فیلتر گزینههای زیر را میپذیرد:
- filename, f
- تنظیم نام پرونده زیرنویس جهت خواندن. تعیین آن الزامی است.
- original_size
- تعیین اندازه ویدیوی اصلی، یعنی ویدیویی که پرونده ASS برای آن ساخته شده است. برای نحو این گزینه، به بخش "Video size" در راهنمای ffmpeg-utils مراجعه کنید. به دلیل یک نقص طراحی در محاسبات نسبت ابعاد ASS، این گزینه برای مقیاسبندی صحیح قلمها در صورت تغییر نسبت ابعاد ضروری است.
- fontsdir
- تنظیم مسیر پوشهای حاوی قلمها که میتواند توسط فیلتر استفاده شود. این قلمها علاوه بر مواردی که ارائهدهنده قلم استفاده میکند، به کار گرفته خواهند شد.
- alpha
- پردازش کانال آلفا؛ بهطور پیشفرض کانال آلفا دستنخورده باقی میماند.
- charenc
- تنظیم کدگذاری نویسههای زیرنویس ورودی. فقط برای فیلتر "subtitles". تنها زمانی مفید است که کدگذاری UTF-8 نباشد.
- stream_index, si
- تنظیم اندیس استریم زیرنویس. فقط برای فیلتر "subtitles".
- force_style
- بازنویسی سبک پیشفرض یا پارامترهای اطلاعات اسکریپت زیرنویس. رشتهای حاوی جفتهای "KEY=VALUE" با قالب سبک ASS را میپذیرد که با "," از هم جدا شدهاند.
- wrap_unicode
- شکستن خطوط
بر اساس
الگوریتم
شکستن خط
یونیکد. در
دسترس بودن
آن نیازمند
حداقل نسخه
0.17.0 کتابخانه
libass (یا LIBASS_VERSION 0x01600010)
است، و libass
باید همراه
با libunibreak ساخته
شده باشد.
این گزینه بهطور پیشفرض به جز برای ASS بومی فعال است.
- shaping
- تنظیم
موتور
شکلدهی
متن.
مقادیر موجود عبارتند از:
- auto
- موتور شکلدهی پیشفرض libass که بهترین گزینه در دسترس است.
- simple
- شکلدهنده سریع و مستقل از قلم که تنها میتواند جایگزینیها را انجام دهد.
- complex
- شکلدهنده کندتر با استفاده از OpenType برای جایگزینیها و موقعیتیابی. برای رندر صحیح خطوط پیچیده مانند فارسی/عربی، عبری، دواناگاری و تایلندی ضروری است. نیازمند ساخت libass با HarfBuzz میباشد.
مقدار پیشفرض "auto" است.
اگر کلید اول مشخص نشود، فرض میشود که مقدار اول filename را مشخص میکند.
به عنوان مثال، برای رندر کردن پرونده sub.srt روی ویدیوی ورودی، از دستور زیر استفاده کنید:
subtitles=sub.srt
که معادل است با:
subtitles=filename=sub.srt
برای رندر استریم زیرنویس پیشفرض از پرونده video.mkv، استفاده کنید از:
subtitles=video.mkv
برای رندر دومین استریم زیرنویس از آن پرونده، استفاده کنید از:
subtitles=video.mkv:si=1
برای اینکه استریم زیرنویس از sub.srt با 80% آبی شفاف و با قلم "DejaVu Serif" نمایش داده شود، استفاده کنید از:
subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
super2xsai
مقیاسبندی ورودی به میزان 2 برابر و هموارسازی با استفاده از الگوریتم مقیاسبندی هنر پیکسلی Super2xSaI (Scale and Interpolate).
برای بزرگنمایی تصاویر هنر پیکسلی بدون کاهش وضوح مفید است.
swaprect
جابجا کردن دو ناحیه مستطیلی در ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- w
- تنظیم پهنای شیء.
- h
- تنظیم ارتفاع شیء.
- x1
- تنظیم مختصات x مستطیل اول.
- y1
- تنظیم مختصات y مستطیل اول.
- x2
- تنظیم مختصات x مستطیل دوم.
- y2
- تنظیم
مختصات y
مستطیل دوم.
تمام عبارتها یک بار برای هر فریم ارزیابی میشوند.
تمام گزینهها عبارتهایی هستند که شامل ثابتهای زیر میباشند:
- w
- h
- پهنا و ارتفاع ورودی.
- a
- همان w / h
- sar
- نسبت ابعاد نمونه (sample aspect ratio) ورودی
- dar
- نسبت ابعاد نمایش (display aspect ratio) ورودی، معادل (w / h) * sar
- n
- شماره فریم ورودی، با شروع از 0.
- t
- برچسب زمانی بر حسب ثانیه. اگر برچسب زمانی ورودی ناشناخته باشد، NAN است.
- pos
- موقعیت فریم ورودی در پرونده، در صورت ناشناخته بودن NAN است؛ منسوخشده، استفاده نکنید
دستورات
این فیلتر از تمام گزینههای بالا به عنوان دستورات پشتیبانی میکند.
swapuv
جابجا کردن صفحات U و V.
tblend
آمیختن فریمهای متوالی ویدیو.
blend را ببینید
telecine
اعمال فرایند تلهسینه (telecine) بر روی ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- pattern
- رشتهای از اعداد که الگوی pulldown مورد نظر برای اعمال را مشخص میکند. مقدار پیشفرض 23 است.
Some typical patterns:
NTSC output (30i):
27.5p: 32222
24p: 23 (classic)
24p: 2332 (preferred)
20p: 33
18p: 334
16p: 3444
PAL output (25i):
27.5p: 12222
24p: 222222222223 ("Euro pulldown")
16.67p: 33
16p: 33333334
thistogram
محاسبه و رسم هیستوگرام توزیع رنگ برای ویدیوی ورودی در طول زمان.
برخلاف فیلتر ویدیویی histogram که تنها هیستوگرام یک تکفریم ورودی را در زمانی مشخص نشان میدهد، این فیلتر هیستوگرامهای پیشین به تعداد فریمهای مشخصشده با گزینه "width" را نیز نمایش میدهد.
هیستوگرام محاسبهشده بازنمایی توزیع مؤلفههای رنگ در یک تصویر است.
این فیلتر گزینههای زیر را میپذیرد:
- width, w
- تنظیم پهنای خروجی یک مؤلفه رنگ منفرد. مقدار پیشفرض 0 است. مقدار 0 به این معنی است که پهنا از ویدیوی ورودی گرفته خواهد شد. این گزینه همچنین تعداد هیستوگرامهای گذشته جهت نگهداری را مشخص میکند. محدوده مجاز [0, 8192] است.
- display_mode, d
- تنظیم حالت نمایش. مقادیر زیر را میپذیرد:
پیشفرض "stack" است.
- levels_mode, m
- تنظیم حالت. میتواند "linear" (خطی) یا "logarithmic" (لگاریتمی) باشد. پیشفرض "linear" است.
- components, c
- تنظیم مؤلفههای رنگی جهت نمایش. پیشفرض 7 است.
- bgopacity, b
- تنظیم کدر بودن پسزمینه. پیشفرض 0.9 است.
- envelope, e
- نمایش پوش (envelope). بهطور پیشفرض غیرفعال است.
- ecolor, ec
- تنظیم رنگ پوش. پیشفرض "gold" است.
- slide
- تنظیم حالت
اسلاید
(لغزش).
مقادیر موجود برای اسلاید عبارتند از:
پیشفرض "replace" است.
threshold
اعمال اثر آستانهگذاری بر روی استریم ویدیو.
این فیلتر برای انجام آستانهگذاری نیازمند چهار استریم ویدیویی است. استریم اول استریمی است که در حال فیلتر کردن آن هستیم. استریم دوم حامل مقادیر آستانه است، استریم سوم مقادیر حداقل را نگه میدارد، و آخرین استریم، یعنی استریم چهارم، مقادیر حداکثر را نگه میدارد.
این فیلتر گزینه زیر را میپذیرد:
- planes
- تعیین اینکه کدام صفحات پردازش خواهند شد؛ صفحات پردازشنشده کپی میشوند. با مقدار پیشفرض 0xf، تمام صفحات پردازش خواهند شد.
به عنوان مثال، اگر مقدار مؤلفه پیکسل استریم اول کمتر از مقدار آستانه مؤلفه پیکسل از استریم دوم (آستانه) باشد، مقدار استریم سوم انتخاب خواهد شد، در غیر این صورت مقدار مؤلفه پیکسل استریم چهارم انتخاب میشود.
با استفاده از فیلتر منبع رنگ (color)، میتوان انواع مختلفی از آستانهگذاری را انجام داد:
دستورات
این فیلتر از تمام گزینهها به عنوان دستورات پشتیبانی میکند.
مثالها
- آستانهگذاری
دودویی، با
استفاده از
رنگ
خاکستری به
عنوان
آستانه:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
- آستانهگذاری
دودویی
معکوس، با
استفاده از
رنگ
خاکستری به
عنوان
آستانه:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
- آستانهگذاری
دودویی
برشی (truncate)، با
استفاده از
رنگ
خاکستری به
عنوان
آستانه:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
- آستانهگذاری
به صفر، با
استفاده از
رنگ
خاکستری به
عنوان
آستانه:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
- آستانهگذاری
معکوس به
صفر، با
استفاده از
رنگ
خاکستری به
عنوان
آستانه:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
thumbnail
انتخاب شاخصترین فریم (نمای بندانگشتی) در یک توالی مشخص از فریمهای متوالی.
این فیلتر گزینههای زیر را میپذیرد:
- n
- تنظیم اندازه دسته فریمها جهت تحلیل؛ در یک مجموعه از n فریم، فیلتر یکی از آنها را برمیگزیند و سپس دسته بعدی از n فریم را تا انتها پردازش میکند. پیشفرض 100 است.
- log
- تنظیم سطح گزارش جهت نمایش آمارهای فریم برگزیده. پیشفرض "info" است.
از آنجا که فیلتر توالی کل فریمها را دنبال میکند، مقدار بزرگتر n منجر به مصرف حافظه بالاتر خواهد شد، بنابراین مقدار بالا توصیه نمیشود.
مثالها
- استخراج یک
تصویر به
ازای هر 50
فریم:
thumbnail=50
- مثال کامل
ساخت تصویر
بندانگشتی
با ffmpeg:
ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
tile
کاشیکاری (چیدمان کنار هم) چندین فریم متوالی در کنار یکدیگر.
فیلتر untile میتواند عمل معکوس آن را انجام دهد.
این فیلتر گزینههای زیر را میپذیرد:
- layout
- تنظیم اندازه شبکه به شکل "COLUMNSxROWS" (ستونهاxسطرها). محدوده تا UINT_MAX سلول است. پیشفرض "6x5" است.
- nb_frames
- تنظیم حداکثر تعداد فریمها جهت رندر در ناحیه دادهشده. باید کمتر یا مساوی با wxh باشد. مقدار پیشفرض 0 است، به این معنی که از تمام ناحیه استفاده خواهد شد.
- margin
- تنظیم حاشیه مرز بیرونی بر حسب پیکسل. محدوده از 0 تا 1024 است. پیشفرض 0 است.
- padding
- تنظیم ضخامت مرز درونی (یعنی تعداد پیکسلهای میان فریمها). برای گزینههای فاصلهگذاری پیشرفتهتر (مانند مقادیر متفاوت برای لبهها)، به فیلتر ویدیویی pad مراجعه کنید. محدوده از 0 تا 1024 است. پیشفرض 0 است.
- color
- تعیین رنگ ناحیه بلااستفاده. برای نحو این گزینه، به بخش "Color" در راهنمای ffmpeg-utils مراجعه کنید. مقدار پیشفرض color برابر با "black" است.
- overlap
- تنظیم تعداد فریمهای همپوشان هنگام کاشیکاری چندین فریم متوالی در کنار هم. مقدار باید بین 0 و nb_frames - 1 باشد. پیشفرض 0 است.
- init_padding
- تنظیم تعداد فریمهایی که در ابتدا قبل از نمایش اولین فریم خروجی خالی میمانند. این گزینه مشخص میکند چه زمانی اولین فریم خروجی دریافت میشود. مقدار باید بین 0 و nb_frames - 1 باشد. پیشفرض 0 است.
مثالها
- تولید
کاشیهای PNG
با ابعاد 8x8
از تمام
فریمهای
کلیدی (-skip_frame nokey)
در یک فیلم:
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -fps_mode passthrough keyframes%03d.png
گزینه -fps_mode passthrough برای جلوگیری از تکثیر هر فریم خروجی توسط ffmpeg جهت تطبیق با نرخ فریم شناساییشده اصلی ضروری است.
- نمایش 5
تصویر در
ناحیهای
به ابعاد
"3x2"
فریم، با
7 پیکسل
فاصله میان
آنها، و
2 پیکسل
حاشیه
اولیه، با
استفاده از
ترکیبی از
گزینههای
ترتیبی و
نامدار:
tile=3x2:nb_frames=5:padding=7:margin=2
tiltandshift
اعمال اثر شیفت و تیلت (tilt-and-shift).
چه اتفاقی میافتد اگر زمان و فضا را وارونه کنید؟
بهطور معمول یک ویدیو از چندین فریم تشکیل شده است که هر یک لحظه متفاوتی از زمان را نشان میدهند و صحنهای را به تصویر میکشند که در فضای ضبطشده توسط فریم تکامل مییابد. این فیلتر نقطه مقابل این مفهوم است و از عکاسی تیلت و شیفت الهام گرفته است.
یک فریم فیلترشده شامل کل خط زمانی رویدادهای سازنده توالی است، و این با قرار دادن برشی از پیکسلهای هر فریم در یک تکفریم به دست میآید. با این حال، از آنجا که فریمهایی با پهنای بینهایت وجود ندارند، این کار تا پهنای فریم ورودی انجام میشود، و ویدیو با جابجایی (شیفت) یک ستون به ازای هر فریم بعدی بازسازی میشود. به منظور نگاشت فضا به زمان، فیلتر هر فریم ورودی را نیز کج (تیلت) میکند تا حرکت حفظ شود. این کار با انتخاب تدریجی یک ستون متفاوت از هر فریم ورودی محقق میشود.
نتیجه نهایی نوعی اختلافمنظر (پارالاکس) معکوس است، بهگونهای که اشیاء دوردست بسیار سریعتر از اشیاء جلو حرکت میکنند. شرایط ایدهآل برای این اثر ویدیویی زمانی است که یا حرکت بسیار کمی وجود داشته باشد و پسزمینه ایستا باشد، یا زمانی که حرکت زیادی وجود داشته باشد و عمق میدان بسیار وسیعی حاکم باشد (مثلاً نمای سراسرنما/پانورامای وسیع، هنگام حرکت در قطار).
این فیلتر پارامترهای زیر را میپذیرد:
- tilt
- تیلت کردن ویدیو هنگام شیفت (پیشفرض). در صورت عدم تنظیم، ویدیو تصویری ایستا را میلغزاند که از ستون اول هر فریم تشکیل شده است.
- start
- در آغاز فیلتر کردن چه کاری انجام شود (زیر را ببینید).
- end
- در پایان فیلتر کردن چه کاری انجام شود (زیر را ببینید).
- hold
- چند ستون قبل از شروع فیلتر کردن عبور داده شود.
- pad
- چند ستون قبل از پایان فیلتر کردن درج شود.
بهطور معمول فیلتر از همان فریم اول شیفت و تیلت را انجام میدهد و پس از دریافت آخرین فریم متوقف میشود. با این حال، قبل از شروع فیلتر کردن، میتوان ویدیوی عادی را حفظ کرد تا این اثر به آرامی در جای خود بلغزد و بنشیند. به همین ترتیب، آخرین فریم ویدیو را میتوان در پایان بازسازی کرد. متناوباً میتوان کار را به سادگی با رنگ سیاه شروع کرد و به پایان رساند.
tinterlace
انجام انواع مختلف درهمتنیدگی فیلد زمانی (temporal field interlacing).
فریمها با شروع از 1 شمرده میشوند، بنابراین اولین فریم ورودی فرد در نظر گرفته میشود.
این فیلتر گزینههای زیر را میپذیرد:
- mode
- تعیین حالت
درهمتنیدگی.
این گزینه
را میتوان
به عنوان یک
مقدار تنها
نیز مشخص
کرد. برای
فهرست
مقادیر این
گزینه به
ادامه مطلب
مراجعه
کنید.
مقادیر موجود عبارتند از:
- merge, 0
- انتقال
فریمهای
فرد به فیلد
بالایی و
فریمهای
زوج به فیلد
پایینی، که
فریمی با
ارتفاع
دوبرابر در
نصف نرخ
فریم تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444
- drop_even, 1
- فقط
فریمهای
فرد را
خروجی
میدهد و
فریمهای
زوج دور
انداخته
میشوند،
که فریمی با
ارتفاع
بدون تغییر
در نصف نرخ
فریم تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 11111 33333 11111 33333 11111 33333
- drop_odd, 2
- فقط
فریمهای
زوج را
خروجی
میدهد و
فریمهای
فرد دور
انداخته
میشوند،
که فریمی با
ارتفاع
بدون تغییر
در نصف نرخ
فریم تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 22222 44444 22222 44444 22222 44444 22222 44444 - pad, 3
- گسترش هر
فریم به
ارتفاع
کامل، اما
پر کردن
خطوط
متناوب با
رنگ سیاه،
که فریمی با
ارتفاع
دوبرابر در
همان نرخ
فریم ورودی
تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444
- interleave_top, 4
- درهمتنیدن
فیلد
بالایی از
فریمهای
فرد با فیلد
پایینی از
فریمهای
زوج، که
فریمی با
ارتفاع
بدون تغییر
در نصف نرخ
فریم تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- Output: 11111 33333 22222 44444 11111 33333 22222 44444
- interleave_bottom, 5
- درهمتنیدن
فیلد
پایینی از
فریمهای
فرد با فیلد
بالایی از
فریمهای
زوج، که
فریمی با
ارتفاع
بدون تغییر
در نصف نرخ
فریم تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 Output: 22222 44444 11111 33333 22222 44444 11111 33333
- interlacex2, 6
- دو برابر
کردن نرخ
فریم با
ارتفاع
بدون تغییر.
فریمهایی
درج
میشوند که
هر یک شامل
دومین فیلد
زمانی از
فریم ورودی
قبلی و
اولین فیلد
زمانی از
فریم ورودی
بعدی هستند.
این حالت به
پرچم top_field_first
وابسته است.
برای
نمایشگرهای
ویدیوی
درهمتنیده
بدون
همگامسازی
فیلد مفید
است.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444
- mergex2, 7
- انتقال
فریمهای
فرد به فیلد
بالایی و
فریمهای
زوج به فیلد
پایینی، که
فریمی با
ارتفاع
دوبرابر در
همان نرخ
فریم تولید
میکند.
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444
مقادیر عددی منسوخ شدهاند اما به دلایل سازگاری عقبرو پذیرفته میشوند.
حالت پیشفرض "merge" است.
- flags
- تعیین
پرچمهای
مؤثر بر
فرایند
فیلتر.
مقادیر موجود برای flags عبارتند از:
- low_pass_filter, vlpf
- فعالسازی فیلتر پایینگذر عمودی خطی در فیلتر. فیلتر کردن پایینگذر عمودی هنگام ایجاد یک مقصد درهمتنیده از یک منبع پیشرونده (progressive) حاوی جزئیات عمودی با فرکانس بالا الزامی است. فیلتر کردن باعث کاهش لرزش بینخطی و الگوهای موآره در حالت درهمتنیده میشود.
- complex_filter, cvlpf
- فعالسازی فیلتر پایینگذر عمودی پیچیده. این گزینه لرزش بینخطی و الگوهای موآره را اندکی کمتر کاهش میدهد اما جزئیات و حس ذهنی وضوح را بهتر حفظ میکند.
- bypass_il
- گذر دادن فریمهایی که از پیش درهمتنیده هستند، و تنها تنظیم نرخ فریم.
فیلتر کردن پایینگذر عمودی و گذر دادن فریمهای از پیش درهمتنیده تنها میتواند برای modeهای interleave_top و interleave_bottom فعال شود.
tmedian
انتخاب پیکسلهای میانه (median) از چندین فریم متوالی ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- radius
- تنظیم شعاع فیلتر میانه. پیشفرض 1 است. محدوده مجاز از 1 تا 127 است.
- planes
- تنظیم صفحاتی که باید فیلتر شوند. مقدار پیشفرض 15 است که با آن تمام صفحات پردازش میشوند.
- percentile
- تنظیم صدک میانه. مقدار پیشفرض 0.5 است. مقدار پیشفرض 0.5 همواره مقادیر میانه را انتخاب میکند، در حالی که 0 مقادیر کمینه و 1 مقادیر بیشینه را انتخاب خواهد کرد.
دستورات
این فیلتر از تمامی گزینههای فوق به جز گزینه "radius" به عنوان دستورات پشتیبانی میکند.
tmidequalizer
اعمال افکت همسانسازی ویدیویی میانراهی زمانی (Temporal Midway Video Equalization).
همسانسازی ویدیویی میانراهی یک توالی از فریمهای ویدیو را به گونهای تنظیم میکند که دارای هیستوگرامهای یکسان باشند، در حالی که پویایی (dynamics) آنها را تا حد ممکن حفظ میکند. این ویژگی برای مثال جهت تطبیق نوردهی (exposure) در یک توالی از فریمهای ویدیو مفید است.
این فیلتر گزینههای زیر را میپذیرد:
tmix
آمیختن فریمهای متوالی ویدیو.
توضیحات گزینههای پذیرفتهشده در ادامه آمده است:
- frames
- تعداد فریمهای متوالی برای آمیختن. در صورت مشخص نشدن، مقدار پیشفرض 3 است.
- weights
- مشخص کردن وزن هر فریم ویدیوی ورودی. هر وزن با فاصله (فاصله خالی) جدا میشود. اگر تعداد وزنها کمتر از تعداد frames باشد، آخرین وزن مشخصشده برای تمام وزنهای باقیمانده استفاده خواهد شد.
- scale
- مشخص کردن مقیاس (scale)؛ اگر تنظیم شود در مجموع حاصلضرب هر وزن در مقادیر پیکسل ضرب میشود تا مقدار نهایی پیکسل مقصد بهدست آید. به طور پیشفرض، scale به صورت خودکار با مجموع وزنها مقیاسبندی میشود.
- planes
- تنظیم صفحاتی که باید فیلتر شوند. پیشفرض همه صفحات است. محدوده مجاز از 0 تا 15 است.
مثالها
- میانگینگیری
از 7 فریم
متوالی:
tmix=frames=7:weights="1 1 1 1 1 1 1"
- اعمال یک
کانولوشن
زمانی ساده:
tmix=frames=3:weights="-1 3 -1"
- مشابه مورد
بالا اما
تنها نمایش
تفاوتهای
زمانی:
tmix=frames=3:weights="-1 2 -1":scale=1
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
tonemap
نگاشت تن (Tone map) رنگها از محدودههای دینامیکی مختلف.
این فیلتر انتظار دادههایی با ممیز شناور با دقت یگانه (single precision) دارد، زیرا نیاز به کار روی مقادیر خارج از محدوده دارد (و میتواند آنها را در خروجی تولید کند). فیلتر دیگری مانند zscale برای تبدیل فریم حاصل به یک قالب قابل استفاده مورد نیاز است.
الگوریتمهای نگاشت تن پیادهسازیشده تنها روی نور خطی (linear light) کار میکنند، بنابراین دادههای ورودی باید از قبل خطیسازی شده باشند (و احتمالاً با برچسبهای رنگی صحیح نشانهگذاری شده باشند).
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
گزینهها
این فیلتر گزینههای زیر را میپذیرد:
- tonemap
- تنظیم
الگوریتم
نگاشت تن
برای
استفاده.
مقادیر ممکن عبارتند از:
- none
- هیچ نگاشت تنی اعمال نشود، فقط اشباع رنگ پیکسلهای بیش از حد روشن کاهش یابد (desaturate).
- clip
- برش سخت (Hard-clip) مقادیر خارج از محدوده. از این حالت برای دقت رنگ بینقص در مقادیر درون محدوده استفاده کنید، در حالی که مقادیر خارج از محدوده دگرگون میشوند.
- linear
- کشش کل وسعت رنگ (gamut) مرجع به یک مضرب خطی از نمایشگر.
- gamma
- برازش یک تبدیل لگاریتمی میان منحنیهای تن.
- reinhard
- حفظ روشنایی کلی تصویر با یک منحنی ساده، با استفاده از کنتراست غیرخطی که منجر به مسطح شدن جزئیات و کاهش دقت رنگ میشود.
- hable
- حفظ بهتر جزئیات تاریک و روشن نسبت به reinhard، به قیمت اندکی تیره کردن همهچیز. زمانی از آن استفاده کنید که حفظ جزئیات مهمتر از دقت رنگ و روشنایی باشد.
- mobius
- نگاشت نرم مقادیر خارج از محدوده، در حالی که کنتراست و رنگها برای محتوای درون محدوده تا حد ممکن حفظ میشود. زمانی از آن استفاده کنید که دقت رنگ مهمتر از حفظ جزئیات باشد.
پیشفرض none است.
- param
- تنظیم دقیق
الگوریتم
نگاشت تن.
این گزینه بر الگوریتمهای زیر تأثیر میگذارد:
- none
- نادیده گرفته میشود.
- linear
- ضریب مقیاس مورد استفاده هنگام کشش را تعیین میکند. پیشفرض 1.0 است.
- gamma
- توان تابع را تعیین میکند. پیشفرض 1.8 است.
- clip
- تعیین یک ضریب خطی اضافی برای ضرب در سیگنال پیش از برش. پیشفرض 1.0 است.
- reinhard
- تعیین ضریب کنتراست محلی در اوج روشنایی نمایشگر. پیشفرض 0.5 است، به این معنی که مقادیر درون دامنه (in-gamut) تقریباً نصف روشنایی حالت برش را خواهند داشت.
- hable
- نادیده گرفته میشود.
- mobius
- تعیین نقطه گذار از تبدیل خطی به موبیوس. تضمین میشود که تمام مقادیر زیر این نقطه به صورت 1:1 نگاشت شوند. هرچه مقدار بالاتر باشد، نتیجه دقیقتر خواهد بود اما به بهای از دست رفتن جزئیات روشن تمام میشود. پیشفرض 0.3 است که به دلیل شیب تند اولیه، رنگهای درون محدوده را همچنان با دقت قابل توجهی حفظ میکند.
- desat
- اعمال کاهش
اشباع رنگ
(desaturation) برای
بخشهای
روشن (highlights) که
از این سطح
روشنایی
فراتر
میروند.
هرچه این
پارامتر
بالاتر
باشد،
اطلاعات
رنگ بیشتری
حفظ خواهد
شد. این
تنظیم با
تبدیل (نرم)
رنگها به
سفید، از
ایجاد
رنگهای
سوخته و
غیرطبیعی
در
هایلایتهای
شدید
جلوگیری
میکند. این
کار به قیمت
کاهش
اطلاعات
رنگهای
خارج از
محدوده، حس
طبیعیتری
به تصاویر
میدهد.
مقدار پیشفرض 2.0 تا حدی محافظهکارانه است و اغلب فقط روی آسمان یا سطوحی که مستقیماً نور خورشید به آنها میتابد اعمال میشود. مقدار 0.0 این گزینه را غیرفعال میکند.
این گزینه تنها در صورتی کار میکند که فریم ورودی دارای برچسب رنگی پشتیبانیشده باشد.
- peak
- بازنویسی اوج سیگنال/اسمی/مرجع با این مقدار. هنگامی مفید است که اطلاعات اوج تعبیهشده در متادیتای نمایشگر قابل اعتماد نباشد یا هنگام نگاشت تن از یک محدوده پایینتر به یک محدوده بالاتر.
tpad
افزودن موقت پدینگ به فریمهای ویدیو (حاشیهگذاری زمانی).
این فیلتر گزینههای زیر را میپذیرد:
- start
- تعیین تعداد فریمهای تأخیر پیش از جریان ویدیوی ورودی. پیشفرض 0 است.
- stop
- تعیین تعداد فریمهای پدینگ پس از جریان ویدیوی ورودی. برای پدینگ نامحدود روی -1 تنظیم کنید. پیشفرض 0 است.
- start_mode
- تنظیم نوع فریمهای اضافهشده به ابتدای جریان. میتواند add یا clone باشد. با add فریمهایی با رنگ یکدست اضافه میشوند. با clone فریمها شبیهسازیشده از فریم نخست هستند. پیشفرض add است.
- stop_mode
- تنظیم نوع فریمهای اضافهشده به انتهای جریان. میتواند add یا clone باشد. با add فریمهایی با رنگ یکدست اضافه میشوند. با clone فریمها شبیهسازیشده از فریم پایانی هستند. پیشفرض add است.
- start_duration, stop_duration
- تعیین مدتزمان تأخیر شروع/پایان. برای ساختار نحوی پذیرفتهشده به بخش مدتزمان (Time duration) در دفترچه راهنمای ffmpeg-utils(1) مراجعه کنید. این گزینهها جایگزین start و stop میشوند. پیشفرض 0 است.
- color
- تعیین رنگ
ناحیه
پدینگشده.
برای
ساختار
نحوی این
گزینه،
بخش "Color" در
دفترچه
راهنمای ffmpeg-utils
را بررسی
کنید.
مقدار پیشفرض color برابر "black" است.
transpose
ترانهادن سطرهای ویدیوی ورودی با ستونهای آن و در صورت تمایل برگرداندن (flip) آن.
پارامترهای زیر را میپذیرد:
- dir
- تعیین جهت
ترانهش.
میتواند مقادیر زیر را به خود بگیرد:
- 0, 4, cclock_flip
- چرخش 90 درجه
پادساعتگرد
و
برگرداندن
عمودی
(پیشفرض)،
یعنی:
L.R L.l . . -> . . l.r R.r
- 1, 5, clock
- چرخش 90 درجه
ساعتگرد،
یعنی:
L.R l.L . . -> . . l.r r.R
- 2, 6, cclock
- چرخش 90 درجه
پادساعتگرد،
یعنی:
L.R R.r . . -> . . l.r L.l
- 3, 7, clock_flip
- چرخش 90 درجه
ساعتگرد و
برگرداندن
عمودی،
یعنی:
L.R r.R . . -> . . l.r l.L
برای مقادیر بین 4-7، ترانهش تنها در صورتی انجام میشود که هندسه ویدیوی ورودی پرتره (عمودی) باشد و نه لنداسکیپ (افقی). این مقادیر منسوخ شدهاند و به جای آنها باید از گزینه "passthrough" استفاده شود.
مقادیر عددی منسوخ شدهاند و باید به نفع ثابتهای نمادین کنار گذاشته شوند.
- passthrough
- اگر هندسه ورودی با مقدار مشخصشده مطابقت داشته باشد، ترانهش اعمال نشود. مقادیر زیر را میپذیرد:
مقدار پیشفرض "none" است.
برای مثال، جهت چرخش 90 درجه ساعتگرد و حفظ چیدمان پرتره:
transpose=dir=1:passthrough=portrait
دستور بالا میتواند به صورت زیر نیز مشخص شود:
transpose=1:portrait
trim
برش ورودی به گونهای که خروجی شامل یک بخش پیوسته از ورودی باشد.
پارامترهای زیر را میپذیرد:
- start
- تعیین زمان شروع بخش نگهداشتهشده؛ یعنی فریمی با برچسب زمانی start نخستین فریم در خروجی خواهد بود.
- end
- تعیین زمان نخستین فریمی که دور انداخته میشود؛ یعنی فریمی که بلافاصله پیش از فریم با برچسب زمانی end قرار دارد، آخرین فریم خروجی خواهد بود.
- start_pts
- مشابه start است، با این تفاوت که این گزینه برچسب زمانی شروع را بر حسب واحدهای پایه زمانی (timebase) به جای ثانیه تنظیم میکند.
- end_pts
- مشابه end است، با این تفاوت که این گزینه برچسب زمانی پایان را بر حسب واحدهای پایه زمانی (timebase) به جای ثانیه تنظیم میکند.
- duration
- حداکثر مدت زمان خروجی بر حسب ثانیه.
- start_frame
- شماره نخستین فریمی که باید به خروجی منتقل شود.
- end_frame
- شماره نخستین فریمی که باید دور انداخته شود.
مقادیر start، end و duration به صورت مشخصات مدتزمان بیان میشوند؛ برای ساختار نحوی پذیرفتهشده به بخش مدتزمان (Time duration) در دفترچه راهنمای ffmpeg-utils(1) مراجعه کنید.
توجه داشته باشید که دو دسته اول از گزینههای start/end و گزینه duration به برچسب زمانی فریم نگاه میکنند، در حالی که گونههای _frame صرفاً فریمهایی را که از فیلتر عبور میکنند میشمارند. همچنین توجه داشته باشید که این فیلتر برچسبهای زمانی را تغییر نمیدهد. اگر میخواهید برچسبهای زمانی خروجی از صفر شروع شوند، یک فیلتر setpts بعد از فیلتر trim درج کنید.
اگر چندین گزینه شروع یا پایان تنظیم شوند، این فیلتر حریصانه تلاش میکند و تمام فریمهایی را که حداقل با یکی از محدودیتهای مشخصشده مطابقت دارند نگه میدارد. برای نگهداشتن تنها بخشی که همزمان با تمام محدودیتها مطابقت دارد، چندین فیلتر trim را زنجیرهای کنید.
مقادیر پیشفرض به گونهای هستند که کل ورودی نگه داشته میشود. بنابراین میتوان مثلاً تنها مقادیر پایان را تنظیم کرد تا همه چیز پیش از زمان مشخصشده نگه داشته شود.
مثالها:
- دور
انداختن
همهچیز به
جز دقیقه
دوم ورودی:
ffmpeg -i INPUT -vf trim=60:120
- نگهداشتن
تنها ثانیه
اول:
ffmpeg -i INPUT -vf trim=duration=1
unpremultiply
اعمال افکت وارون پیشضرب آلفا (unpremultiply) بر جریان ویدیوی ورودی با استفاده از نخستین صفحه از جریان دوم به عنوان آلفا.
هر دو جریان باید ابعاد و قالب پیکسلی یکسانی داشته باشند.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تعیین
صفحاتی که
پردازش
میشوند؛
صفحات
پردازشنشده
کپی خواهند
شد. به طور
پیشفرض با
مقدار 0xf،
تمام صفحات
پردازش
میشوند.
اگر قالب دارای 1 یا 2 مؤلفه باشد، روشنایی (luma) بیت 0 است. اگر قالب دارای 3 یا 4 مؤلفه باشد: برای قالبهای RGB، بیت 0 سبز، بیت 1 آبی و بیت 2 قرمز است؛ برای قالبهای YUV، بیت 0 روشنایی (luma)، بیت 1 فام رنگ U و بیت 2 فام رنگ V است. کانال آلفا در صورت وجود، همواره آخرین بیت است.
- inplace
- برای پردازش نیازی به ورودی دوم نیست، در عوض از صفحه آلفای جریان ورودی استفاده میشود.
unsharp
واضحسازی (Sharpen) یا تار کردن (blur) ویدیوی ورودی.
پارامترهای زیر را میپذیرد:
- luma_msize_x, lx
- تنظیم اندازه افقی ماتریس روشنایی (luma). باید یک عدد صحیح فرد بین 3 و 23 باشد. مقدار پیشفرض 5 است.
- luma_msize_y, ly
- تنظیم اندازه عمودی ماتریس روشنایی (luma). باید یک عدد صحیح فرد بین 3 و 23 باشد. مقدار پیشفرض 5 است.
- luma_amount, la
- تنظیم شدت
افکت
روشنایی.
باید یک عدد
ممیز شناور
باشد،
مقادیر
منطقی بین -1.5
و 1.5 قرار
دارند.
مقادیر منفی ویدیوی ورودی را تار میکنند، در حالی که مقادیر مثبت آن را واضح میسازند؛ مقدار صفر افکت را غیرفعال میکند.
مقدار پیشفرض 1.0 است.
- chroma_msize_x, cx
- تنظیم اندازه افقی ماتریس رنگ (chroma). باید یک عدد صحیح فرد بین 3 و 23 باشد. مقدار پیشفرض 5 است.
- chroma_msize_y, cy
- تنظیم اندازه عمودی ماتریس رنگ (chroma). باید یک عدد صحیح فرد بین 3 و 23 باشد. مقدار پیشفرض 5 است.
- chroma_amount, ca
- تنظیم شدت
افکت رنگ.
باید یک عدد
ممیز شناور
باشد،
مقادیر
منطقی بین -1.5
و 1.5 قرار
دارند.
مقادیر منفی ویدیوی ورودی را تار میکنند، در حالی که مقادیر مثبت آن را واضح میسازند؛ مقدار صفر افکت را غیرفعال میکند.
مقدار پیشفرض 0.0 است.
- alpha_msize_x, ax
- تنظیم اندازه افقی ماتریس آلفا. باید یک عدد صحیح فرد بین 3 و 23 باشد. مقدار پیشفرض 5 است.
- alpha_msize_y, ay
- تنظیم اندازه عمودی ماتریس آلفا. باید یک عدد صحیح فرد بین 3 و 23 باشد. مقدار پیشفرض 5 است.
- alpha_amount, aa
- تنظیم شدت
افکت آلفا.
باید یک عدد
ممیز شناور
باشد،
مقادیر
منطقی بین -1.5
و 1.5 قرار
دارند.
مقادیر منفی ویدیوی ورودی را تار میکنند، در حالی که مقادیر مثبت آن را واضح میسازند؛ مقدار صفر افکت را غیرفعال میکند.
مقدار پیشفرض 0.0 است.
تمامی پارامترها اختیاری هستند و پیشفرض آنها معادل رشته '5:5:1.0:5:5:0.0' است.
مثالها
- اعمال افکت
واضحسازی
شدید
روشنایی:
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
- اعمال تاری
شدید روی هر
دو پارامتر
روشنایی و
رنگ:
unsharp=7:7:-2:7:7:-2
untile
تجزیه ویدیویی متشکل از تصاویر کاشیکاریشده (tiled) به تصاویر مجزا.
نرخ فریم ویدیوی خروجی برابر است با نرخ فریم ویدیوی ورودی ضرب در تعداد کاشیها.
این فیلتر عکس عمل tile را انجام میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- layout
- تنظیم اندازه شبکه (یعنی تعداد سطرها و ستونها). برای ساختار نحوی این گزینه، بخش "Video size" در دفترچه راهنمای ffmpeg-utils را بررسی کنید.
مثالها
- •
- تولید یک
ویدیوی 1
ثانیهای
از یک
پرونده
تصویر ثابت
شامل 25 فریم
که به صورت
عمودی روی
هم چیده
شدهاند،
مانند یک
حلقه فیلم
آنالوگ:
ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
uspp
اعمال یک فیلتر پسپردازش فوقالعاده آهسته/ساده که تصویر را در چندین انتقال (shift) مختلف (یا در سطح کیفی quality برابر 8، در تمامی شیفتها) فشرده و باز میکند و از نتایج میانگین میگیرد.
تفاوت این فیلتر با رفتار spp در این است که uspp عملاً هر حالت را با libavcodec Snow کدگذاری و کدگشایی میکند، در حالی که spp از یک DCT سادهشده 8x8 فقط درونفریمی (intra only) شبیه به MJPEG استفاده مینماید.
این فیلتر در نسخههای FFmpeg بین 5.0 و 6.0 در دسترس نیست.
این فیلتر گزینههای زیر را میپذیرد:
- quality
- تنظیم کیفیت. این گزینه تعداد سطوح را برای میانگینگیری تعیین میکند. یک عدد صحیح در محدوده 0-8 میپذیرد. در صورت تنظیم روی 0، فیلتر هیچ اثری نخواهد داشت. مقدار 8 به معنای بالاترین کیفیت است. به ازای هر واحد افزایش این مقدار، سرعت تقریباً به نصف کاهش مییابد. مقدار پیشفرض 3 است.
- qp
- اجبار به استفاده از یک پارامتر کوانتیزاسیون ثابت. در صورت تنظیم نشدن، فیلتر از QP جریان ویدیو (در صورت وجود) استفاده خواهد کرد.
- codec
- استفاده از کدک مشخصشده به جای snow.
v360
تبدیل ویدیوهای ۳۶۰ درجه بین قالبهای مختلف.
این فیلتر گزینههای زیر را میپذیرد:
- e
- equirect
- تصویرسازی متساویالمستطیل (Equirectangular projection).
- c3x2
- c6x1
- c1x6
- نگاشت
مکعبی (Cubemap) با
چیدمان 3x2/6x1/1x6.
گزینههای اختصاصی این قالب:
- in_pad
- out_pad
- تنظیم نسبت
پدینگ
(حاشیه)
برای نگاشت
مکعبی
ورودی/خروجی.
مقادیر به
صورت
اعشاری.
نمونه مقادیر:
- 0
- بدون پدینگ.
- 0.01
- ۱٪ از هر وجه پدینگ است. برای نمونه، با تفکیکپذیری 1920x1280 اندازه هر وجه 640x640 خواهد بود و پدینگ از هر طرف ۳ پیکسل است. (640 * 0.01 = 6 پیکسل)
مقدار پیشفرض @samp{0} است. حداکثر مقدار @samp{0.1} است.
- fin_pad
- fout_pad
- تنظیم
پدینگ ثابت
برای نگاشت
مکعبی
ورودی/خروجی.
مقادیر به
پیکسل است.
مقدار پیشفرض @samp{0} است. در صورت بزرگتر بودن از صفر، سایر گزینههای پدینگ را نادیده میگیرد (override میکند).
- in_forder
- out_forder
- تنظیم
ترتیب
وجهها
برای نگاشت
مکعبی
ورودی/خروجی.
برای هر
موقعیت یک
جهت را
انتخاب
کنید.
نشانههای جهتها:
مقدار پیشفرض @samp{rludfb} است.
- in_frot
- out_frot
- تنظیم چرخش
وجهها
برای نگاشت
مکعبی
ورودی/خروجی.
برای هر
موقعیت یک
زاویه
انتخاب
کنید.
نشانههای زوایا:
- 0
- ۰ درجه در جهت ساعتگرد
- 1
- ۹۰ درجه در جهت ساعتگرد
- 2
- ۱۸۰ درجه در جهت ساعتگرد
- 3
- ۲۷۰ درجه در جهت ساعتگرد
مقدار پیشفرض @samp{000000} است.
- eac
- نگاشت مکعبی همزاویه (Equi-Angular Cubemap).
- flat
- gnomonic
- rectilinear
- ویدیوی
معمولی (Regular video).
گزینههای اختصاصی قالب:
- h_fov
- v_fov
- d_fov
- تنظیم
میدان دید (field
of view)
افقی/عمودی/قطری
خروجی.
مقادیر بر
حسب درجه.
اگر میدان دید قطری تنظیم شود، جایگزین میدان دید افقی و عمودی خواهد شد.
- ih_fov
- iv_fov
- id_fov
- تنظیم
میدان دید
افقی/عمودی/قطری
ورودی.
مقادیر بر
حسب درجه.
اگر میدان دید قطری تنظیم شود، جایگزین میدان دید افقی و عمودی خواهد شد.
- dfisheye
- چشمماهی
دوگانه (Dual fisheye).
گزینههای اختصاصی قالب:
- barrel
- fb
- barrelsplit
- قالبهای ۳۶۰ درجه فیسبوک (Facebook).
- sg
- قالب
برجستهنگاری
(Stereographic format).
گزینههای اختصاصی قالب:
- mercator
- قالب مرکاتور (Mercator format).
- ball
- قالب کروی (Ball format)، اعوجاج قابل توجهی به سمت عقب ایجاد میکند.
- hammer
- قالب تصویرسازی نقشه هامر-آیتوف (Hammer-Aitoff).
- sinusoidal
- قالب تصویرسازی نقشه سینوسی (Sinusoidal).
- fisheye
- تصویرسازی
چشمماهی (Fisheye
projection).
گزینههای اختصاصی قالب:
- pannini
- تصویرسازی
پانینی (Pannini projection).
گزینههای اختصاصی قالب:
- cylindrical
- تصویرسازی
استوانهای
(Cylindrical projection).
گزینههای اختصاصی قالب:
- perspective
- تصویرسازی
پرسپکتیو
(Perspective projection). (فقط
خروجی)
گزینههای اختصاصی قالب:
- v_fov
- تنظیم پارامتر پرسپکتیو.
- tetrahedron
- تصویرسازی چهاروجهی (Tetrahedron projection).
- tsp
- تصویرسازی هرم مربعی بریدهشده (Truncated square pyramid projection).
- he
- hequirect
- تصویرسازی نیمهمتساویالمستطیل (Half equirectangular projection).
- equisolid
- قالب
همزاویه
متقارن (Equisolid format).
گزینههای اختصاصی قالب:
- og
- قالب
اورتوگرافیک
(Orthographic format).
گزینههای اختصاصی قالب:
- octahedron
- تصویرسازی هشتوجهی (Octahedron projection).
- cylindricalea
- تصویرسازی استوانهای هممساحت (Cylindrical Equal Area projection).
- interp
- تنظیم روش
درونیابی.توجه:
روشهای
درونیابی
پیچیدهتر
برای اجرا
به حافظه
بسیار
بیشتری
نیاز
دارند.
روشهای موجود:
- near
- nearest
- نزدیکترین همسایه (Nearest neighbour).
- line
- linear
- درونیابی دوسطحی (Bilinear).
- lagrange9
- درونیابی لاگرانژ ۹ (Lagrange9).
- cube
- cubic
- درونیابی دومکعبی (Bicubic).
- lanc
- lanczos
- درونیابی لانچوز (Lanczos).
- sp16
- spline16
- درونیابی اسپیلاین ۱۶ (Spline16).
- gauss
- gaussian
- درونیابی گاوسی (Gaussian).
- mitchell
- درونیابی میچل (Mitchell).
مقدار پیشفرض @samp{line} است.
- w
- h
- تنظیم
تفکیکپذیری
(رزولوشن)
ویدیوی
خروجی.
تفکیکپذیری پیشفرض به قالبها بستگی دارد.
- in_stereo
- out_stereo
- تنظیم قالب استریوی ورودی/خروجی.
مقدار پیشفرض برای قالب ورودی و خروجی @samp{2d} است.
- yaw
- pitch
- roll
- تنظیم چرخش برای ویدیوی خروجی. مقادیر بر حسب درجه.
- rorder
- تنظیم ترتیب چرخش برای ویدیوی خروجی. برای هر موقعیت یک مورد را انتخاب کنید.
مقدار پیشفرض @samp{ypr} است.
- h_flip
- v_flip
- d_flip
- برگرداندن ویدیوی خروجی به صورت افقی (جابجایی چپ-راست) / عمودی (جابجایی بالا-پایین) / در عمق (جابجایی عقب-جلو). مقادیر بولی.
- ih_flip
- iv_flip
- تعیین این که آیا ویدیوی ورودی به صورت افقی/عمودی برگردانده شود یا خیر. مقادیر بولی.
- in_trans
- تعیین این که آیا ویدیوی ورودی ترانهاده (transposed) شود یا خیر. مقدار بولی، به طور پیشفرض غیرفعال است.
- out_trans
- تعیین این که آیا ویدیوی خروجی نیاز به ترانهش دارد یا خیر. مقدار بولی، به طور پیشفرض غیرفعال است.
- h_offset
- v_offset
- تنظیم آفست غیرمحوری افقی/عمودی خروجی. مقدار پیشفرض روی 0 تنظیم شده است. محدوده مجاز از -1 تا 1 است.
- alpha_mask
- ساخت ماسک در صفحه آلفا برای تمام پیکسلهای نگاشتنشده با علامتگذاری آنها به عنوان کاملاً شفاف. مقدار بولی، به طور پیشفرض غیرفعال است.
- reset_rot
- بازنشانی چرخش ویدیوی خروجی. مقدار بولی، به طور پیشفرض غیرفعال است.
مثالها
- تبدیل
ویدیوی
متساویالمستطیل
به نگاشت
مکعبی با
چیدمان 3x2 و
پدینگ ۱٪ با
استفاده از
درونیابی
دومکعبی:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
- استخراج
نمای عقب از
نگاشت
مکعبی
همزاویه:
ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
- تبدیل
نگاشت
مکعبی
همزاویه
ترانهاده و
به صورت
افقی
برگرداندهشده
در قالب
استریوی
کنار هم به
قالب
استریوی
متساویالمستطیل
بالا-پایین:
v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
دستورات
این فیلتر از زیرمجموعهای از گزینههای فوق به عنوان دستورات پشتیبانی میکند.
vaguedenoiser
اعمال یک حذفکننده نویز (denoiser) مبتنی بر موجک (wavelet).
این فیلتر هر فریم را از ورودی ویدیو با استفاده از Cohen-Daubechies-Feauveau 9/7 به دامنه موجک تبدیل میکند. سپس مقداری فیلتر روی ضرایب بهدستآمده اعمال مینماید. پس از آن تبدیل معکوس موجک انجام میدهد. با توجه به ویژگیهای موجک، این روش باید نتیجهای هموار و نویز کاهشیافته را بدون محو کردن ویژگیهای تصویر به همراه داشته باشد.
این فیلتر گزینههای زیر را میپذیرد:
- threshold
- شدت فیلتر کردن. هرچه بالاتر باشد، ویدیو بیشتر فیلتر خواهد شد. آستانهگذاری سخت (Hard thresholding) میتواند پیش از آنکه ویدیو بیش از حد فیلترشده به نظر برسد، از آستانه بالاتری نسبت به آستانهگذاری نرم استفاده کند. مقدار پیشفرض 2 است.
- method
- روش فیلتر
کردنی که
فیلتر
استفاده
خواهد کرد.
مقادیر زیر را میپذیرد:
پیشفرض garrote است.
- nsteps
- تعداد دفعاتی که موجک تصویر را تجزیه میکند. تصویر نمیتواند فراتر از یک نقطه مشخص تجزیه شود (معمولاً 8 برای یک فریم 640x480 - زیرا 2^9 = 512 > 480). مقادیر معتبر اعداد صحیح بین 1 و 32 هستند. مقدار پیشفرض 6 است.
- percent
- حذف نویز جزئی یا کامل (کاهش محدود ضرایب)، از 0 تا 100. مقدار پیشفرض 85 است.
- planes
- فهرستی از صفحاتی که باید پردازش شوند. به طور پیشفرض تمام صفحات پردازش میشوند.
- type
- نوع
آستانهای
که فیلتر
استفاده
خواهد کرد.
مقادیر زیر را میپذیرد:
پیشفرض universal است.
varblur
اعمال فیلتر تاری متغیر با استفاده از جریان ویدیوی دوم برای تنظیم شعاع تاری. جریان دوم باید ابعاد یکسانی داشته باشد.
این فیلتر گزینههای زیر را میپذیرد:
- min_r
- تنظیم حداقل شعاع مجاز. محدوده مجاز از 0 تا 254 است. پیشفرض 0 است.
- max_r
- تنظیم حداکثر شعاع مجاز. محدوده مجاز از 1 تا 255 است. پیشفرض 8 است.
- planes
- تنظیم صفحاتی که باید پردازش شوند. به طور پیشفرض، همه استفاده میشوند.
فیلتر "varblur" همچنین از گزینههای framesync پشتیبانی میکند.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستورات پشتیبانی میکند.
vectorscope
نمایش مقادیر ۲ مؤلفه رنگی در نمودار دوبعدی (که وکتوراسکوپ نامیده میشود).
این فیلتر گزینههای زیر را میپذیرد:
- mode, m
- تنظیم حالت
وکتوراسکوپ.
مقادیر زیر را میپذیرد:
- gray
- tint
- مقادیر خاکستری در نمودار نمایش داده میشوند؛ روشنایی بالاتر به این معنی است که پیکسلهای بیشتری دارای مقدار رنگی یکسان برای آن مؤلفه در آن موقعیت از نمودار هستند. این حالت پیشفرض است.
- color
- مقادیر خاکستری در نمودار نمایش داده میشوند. مقادیر پیکسلهای اطراف که در فریم ویدیو وجود ندارند، با گرادیانی از ۲ مؤلفه رنگ که با گزینههای "x" و "y" تنظیم شدهاند رسم میشوند. مؤلفه رنگ سوم ایستا (استاتیک) است.
- color2
- مقادیر مؤلفههای رنگ واقعی موجود در فریم ویدیو در نمودار نمایش داده میشوند.
- color3
- مشابه color2 اما تکرار بالاتر مقادیر یکسان "x" و "y" در نمودار، مقدار مؤلفه رنگ دیگر را افزایش میدهد که با مقادیر پیشفرض "x" و "y" روشنایی (درخشندگی) است.
- color4
- رنگهای واقعی موجود در فریم ویدیو در نمودار نمایش داده میشوند. اگر دو رنگ مختلف به یک موقعیت در نمودار نگاشت شوند، رنگ با مقدار بالاتر از مؤلفهای که در نمودار وجود ندارد انتخاب میشود.
- color5
- مقادیر خاکستری در نمودار نمایش داده میشوند. مشابه "color" اما مؤلفه رنگ سوم از گرادیان شعاعی انتخاب میشود.
- x
- تعیین این که کدام مؤلفه رنگ روی محور X نشان داده شود. پیشفرض 1 است.
- y
- تعیین این که کدام مؤلفه رنگ روی محور Y نشان داده شود. پیشفرض 2 است.
- intensity, i
- تنظیم شدت، مورد استفاده در حالتهای: gray، color، color3 و color5 برای افزایش روشنایی مؤلفه رنگی که فراوانی موقعیت (X, Y) را در نمودار نشان میدهد.
- envelope, e
- none
- بدون پوش (envelope)، این حالت پیشفرض است.
- instant
- پوش آنی، حتی تاریکترین تکپیکسل نیز به وضوح برجسته خواهد شد.
- peak
- نگهداشتن مقادیر بیشینه و کمینه ارائهشده در نمودار در طول زمان. از این طریق همچنان میتوانید مقادیر خارج از محدوده را بدون نگاه مداوم به وکتوراسکوپ تشخیص دهید.
- peak+instant
- ترکیب همزمان پوش اوج و آنی.
- graticule, g
- تنظیم نوع شبکه مدرج (graticule) برای رسم.
- opacity, o
- تنظیم کدر بودن (شفافیت معکوس) شبکه مدرج.
- flags, f
- تنظیم پرچمهای شبکه مدرج.
- bgopacity, b
- تنظیم کدر بودن پسزمینه.
- lthreshold, l
- تنظیم آستانه پایین برای مؤلفه رنگی که روی محور X یا Y نمایش داده نمیشود. مقادیر پایینتر از این مقدار نادیده گرفته میشوند. پیشفرض 0 است. توجه داشته باشید که این مقدار در حداکثر مقدار ممکن واقعی که یک مؤلفه پیکسل میتواند داشته باشد ضرب میشود. بنابراین برای ورودی 8-بیتی و مقدار آستانه پایین 0.1، آستانه واقعی برابر است با 0.1 * 255 = 25.
- hthreshold, h
- تنظیم آستانه بالا برای مؤلفه رنگی که روی محور X یا Y نمایش داده نمیشود. مقادیر بالاتر از این مقدار نادیده گرفته میشوند. پیشفرض 1 است. توجه داشته باشید که این مقدار در حداکثر مقدار ممکن واقعی که یک مؤلفه پیکسل میتواند داشته باشد ضرب میشود. بنابراین برای ورودی 8-بیتی و مقدار آستانه بالا 0.9، آستانه واقعی برابر است با 0.9 * 255 = 230.
- colorspace, c
- تعیین فضای رنگی مورد استفاده هنگام رسم شبکه مدرج.
- auto
- 601
- 709
پیشفرض auto است.
vidstabdetect
تحلیل پایداری ویدیو / لرزشگیری (deshaking). انجام پاس 1 از 2، برای پاس 2 به vidstabtransform مراجعه کنید.
این فیلتر پروندهای حاوی اطلاعات تبدیلات چرخش و انتقال نسبی فریمهای بعدی تولید میکند که سپس توسط فیلتر vidstabtransform استفاده میشود.
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-libvidstab" پیکربندی کنید.
این فیلتر گزینههای زیر را میپذیرد:
- result
- تنظیم مسیر پروندهای که برای نوشتن اطلاعات تبدیلات استفاده میشود. مقدار پیشفرض transforms.trf است.
- shakiness
- تنظیم میزان لرزش ویدیو و سرعت حرکت دوربین. این گزینه یک عدد صحیح در بازه 1-10 میپذیرد؛ مقدار 1 به معنای لرزش کم و مقدار 10 به معنای لرزش شدید است. مقدار پیشفرض 5 است.
- accuracy
- تنظیم دقت فرایند تشخیص. باید مقداری در بازه 1-15 باشد. مقدار 1 به معنای دقت کم و مقدار 15 به معنای دقت زیاد است. مقدار پیشفرض 15 است.
- stepsize
- تنظیم اندازه گام (stepsize) فرایند جستجو. ناحیه اطراف مقدار کمینه با تفکیکپذیری 1 پیکسل پویش میشود. مقدار پیشفرض 6 است.
- mincontrast
- تنظیم حداقل کنتراست. میدان اندازهگیری محلی زیر این مقدار دور انداخته میشود. باید یک مقدار ممیز شناور در بازه 0-1 باشد. مقدار پیشفرض 0.3 است.
- tripod
- تنظیم
شماره فریم
مرجع برای
حالت
سهپایه (tripod).
در صورت فعال بودن، حرکت فریمها با یک فریم مرجع در استریم فیلترشده که با شماره مشخصشده تعیین میشود، مقایسه میگردد. ایده این است که تمام حرکات در یک صحنه کموبیش ایستا جبران شوند و نمای دوربین کاملاً ثابت نگه داشته شود.
اگر روی 0 تنظیم شود، غیرفعال خواهد بود. شمارش فریمها از 1 شروع میشود.
- show
- نمایش میدانها و تبدیلات در فریمهای خروجی حاصل. یک عدد صحیح در بازه 0-2 میپذیرد. مقدار پیشفرض 0 است که هرگونه مصورسازی را غیرفعال میکند.
- fileformat
- قالب پرونده دادههای تبدیلات برای نوشتن. مقادیر پذیرفتنی عبارتند از:
مثالها
- استفاده از
مقادیر
پیشفرض:
vidstabdetect
- تحلیل فیلم
با لرزش
شدید و قرار
دادن نتایج
در پرونده
mytransforms.trf:
vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
- مصورسازی
نتیجه
تبدیلات
درونی در
ویدیوی
حاصل:
vidstabdetect=show=1
- تحلیل یک
ویدیو با
لرزش متوسط
با استفاده
از ffmpeg:
ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
vidstabtransform
پایداری ویدیو / لرزشگیری: پاس 2 از 2، برای پاس 1 به vidstabdetect مراجعه کنید.
خواندن یک پرونده با اطلاعات تبدیل برای هر فریم و اعمال/جبرانسازی آنها. این فیلتر به همراه فیلتر vidstabdetect میتواند برای لرزشگیری ویدیوها استفاده شود. همچنین ببینید http://public.hronopik.de/vid.stab. استفاده از فیلتر unsharp نیز مهم است، به بخش زیر مراجعه کنید.
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-libvidstab" پیکربندی کنید.
گزینهها
- input
- تنظیم مسیر پرونده مورد استفاده برای خواندن تبدیلات. مقدار پیشفرض transforms.trf است.
- smoothing
- تنظیم
تعداد
فریمها
(مقدار*2 + 1)
مورد
استفاده
برای فیلتر
پایینگذر
حرکات
دوربین.
مقدار
پیشفرض 10
است.
برای مثال مقدار 10 به این معنی است که از 21 فریم (10 فریم در گذشته و 10 فریم در آینده) برای هموارسازی حرکت در ویدیو استفاده میشود. مقدار بزرگتر منجر به ویدیوی هموارتر میشود، اما شتاب دوربین (حرکات pan/tilt) را محدود میکند. 0 یک حالت خاص است که در آن دوربین ثابت شبیهسازی میشود.
- optalgo
- تنظیم
الگوریتم
بهینهسازی
مسیر
دوربین.
مقادیر پذیرفتهشده عبارتند از:
- maxshift
- تنظیم حداکثر تعداد پیکسلها برای جابجایی فریمها. مقدار پیشفرض -1 است، به معنای نامحدود.
- maxangle
- تنظیم حداکثر زاویه بر حسب رادیان (درجه*PI/180) برای چرخش فریمها. مقدار پیشفرض -1 است، به معنای نامحدود.
- crop
- تعیین نحوه
برخورد با
حاشیههایی
که ممکن است
به دلیل
جبرانسازی
حرکت
نمایان
شوند.
مقادیر موجود عبارتند از:
- invert
- معکوس کردن تبدیلات در صورت تنظیم روی 1. مقدار پیشفرض 0 است.
- relative
- در نظر گرفتن تبدیلات به صورت نسبی به فریم پیشین در صورت تنظیم روی 1، و مطلق در صورت تنظیم روی 0. مقدار پیشفرض 0 است.
- zoom
- تنظیم درصد بزرگنمایی (zoom). مقدار مثبت منجر به اثر بزرگنمایی (zoom-in) و مقدار منفی منجر به اثر کوچکنمایی (zoom-out) میشود. مقدار پیشفرض 0 است (بدون بزرگنمایی).
- optzoom
- تنظیم
بزرگنمایی
بهینه برای
جلوگیری از
ایجاد
حاشیهها.
مقادیر پذیرفتهشده عبارتند از:
- 0
- غیرفعال
- 1
- مقدار بزرگنمایی ایستای بهینه تعیین میشود (تنها حرکات بسیار شدید منجر به حاشیههای مشهود میشوند) (پیشفرض)
- 2
- مقدار بزرگنمایی تطبیقی بهینه تعیین میشود (هیچ حاشیهای نمایان نخواهد شد)، به zoomspeed مراجعه کنید.
توجه داشته باشید که مقدار دادهشده در zoom به مقدار محاسبهشده در اینجا اضافه میشود.
- zoomspeed
- تنظیم حداکثر درصد بزرگنمایی در هر فریم (در صورتی که optzoom روی 2 تنظیم شده باشد فعال میشود). بازه از 0 تا 5 است، مقدار پیشفرض 0.25 است.
- interpol
- تعیین نوع
درونیابی
(interpolation).
مقادیر موجود عبارتند از:
- tripod
- فعالسازی
حالت
سهپایه
مجازی در
صورت تنظیم
روی 1، که
معادل
"relative=0:smoothing=0"
است. مقدار
پیشفرض 0
است.
همچنین از گزینه "tripod" در vidstabdetect استفاده کنید.
- debug
- افزایش سطح جزئیات گزارشها در صورت تنظیم روی 1. همچنین حرکات سراسری شناساییشده در پرونده موقت global_motions.trf نوشته میشوند. مقدار پیشفرض 0 است.
مثالها
- استفاده از
ffmpeg برای یک
پایداریسازی
معمول با
مقادیر
پیشفرض:
ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
به استفاده از فیلتر unsharp که همواره توصیه میشود توجه کنید.
- بزرگنمایی
کمی بیشتر و
بارگذاری
دادههای
تبدیل از یک
پرونده
مشخص:
vidstabtransform=zoom=5:input="mytransforms.trf"
- هموارسازی
باز هم
بیشتر
ویدیو:
vidstabtransform=smoothing=30
vflip
برگرداندن (flip) عمودی ویدیوی ورودی.
برای مثال، برای برگرداندن عمودی یک ویدیو با ffmpeg:
ffmpeg -i in.avi -vf "vflip" out.avi
vfrdet
تشخیص نرخ فریم متغیر ویدیو.
این فیلتر سعی میکند تشخیص دهد که آیا ورودی نرخ فریم متغیر دارد یا ثابت.
در پایان، تعداد فریمهایی که با delta pts متغیر تشخیص داده شدهاند و فریمهایی با delta pts ثابت را در خروجی نمایش میدهد. اگر فریمهایی با دلتای متغیر وجود داشته باشند، کمینه، بیشینه و میانگین دلتای مشاهدهشده را نیز نشان خواهد داد.
vibrance
تقویت یا تغییر اشباع رنگ (saturation).
این فیلتر گزینههای زیر را میپذیرد:
- intensity
- تنظیم شدت تقویت در صورت مثبت بودن مقدار یا شدت تغییر در صورت منفی بودن مقدار. پیشفرض 0 است. بازه مجاز از -2 تا 2 است.
- rbal
- تنظیم تعادل رنگ قرمز. پیشفرض 1 است. بازه مجاز از -10 تا 10 است.
- gbal
- تنظیم تعادل رنگ سبز. پیشفرض 1 است. بازه مجاز از -10 تا 10 است.
- bbal
- تنظیم تعادل رنگ آبی. پیشفرض 1 است. بازه مجاز از -10 تا 10 است.
- rlum
- تنظیم ضریب روشنایی (luma) قرمز.
- glum
- تنظیم ضریب روشنایی (luma) سبز.
- blum
- تنظیم ضریب روشنایی (luma) آبی.
- alternate
- اگر "intensity" منفی باشد و این گزینه روی 1 تنظیم شود، رنگها تغییر خواهند کرد، در غیر این صورت اشباع رنگها کمتر شده و بیشتر به سمت خاکستری میل میکنند.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند.
vif
به دست آوردن میانگین VIF (Visual Information Fidelity) بین دو ویدیوی ورودی.
این فیلتر دو ویدیوی ورودی میگیرد.
هر دو ویدیوی ورودی باید رزولوشن و قالب پیکسلی یکسانی داشته باشند تا این فیلتر به درستی کار کند. همچنین فرض میشود که هر دو ورودی تعداد فریمهای یکسانی دارند که یکبهیک با هم مقایسه میشوند.
امتیاز میانگین VIF به دست آمده از طریق سیستم گزارشگیری (logging) چاپ میشود.
فیلتر امتیاز VIF محاسبهشده برای هر فریم را ذخیره میکند.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
در مثال زیر پرونده ورودی main.mpg که در حال پردازش است با پرونده مرجع ref.mpg مقایسه میشود.
ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -
vignette
ایجاد یا معکوس کردن افکت وینیت (vignetting) طبیعی.
این فیلتر گزینههای زیر را میپذیرد:
- angle, a
- تنظیم
عبارت
زاویه لنز
به عنوان
تعدادی
رادیان.
مقدار در بازه "[0,PI/2]" محدود (clip) میشود.
مقدار پیشفرض: "PI/5"
- x0
- y0
- تنظیم عبارات مختصات مرکز. به طور پیشفرض به ترتیب "w/2" و "h/2".
- mode
- تنظیم حالت
مستقیم/معکوس
(forward/backward).
حالتهای موجود عبارتند از:
- forward
- هر چه فاصله از نقطه مرکزی بیشتر شود، تصویر تاریکتر میشود.
- backward
- هر چه فاصله از نقطه مرکزی بیشتر شود، تصویر روشنتر میشود. این حالت میتواند برای معکوس کردن افکت وینیت استفاده شود، هرچند هنوز هیچ تشخیص خودکاری برای استخراج angle لنز و سایر تنظیمات وجود ندارد. همچنین میتواند برای ایجاد یک افکت سوختگی (burning) استفاده شود.
مقدار پیشفرض forward است.
- eval
- تنظیم حالت
ارزیابی
عبارات (angle،
x0، y0).
مقادیر زیر را میپذیرد:
مقدار پیشفرض init است.
- dither
- تنظیم دیترینگ (dithering) برای کاهش اثرات نواری دایرهای (circular banding). پیشفرض 1 (فعال) است.
- aspect
- تنظیم نسبت
ابعاد
وینیت. این
تنظیم
امکان
تغییر شکل
وینیت را
فراهم
میکند.
تنظیم این
مقدار روی SAR
ورودی، یک
وینیت
مستطیلی
متناسب با
ابعاد
ویدیو
ایجاد
میکند.
پیشفرض "1/1" است.
عبارات
عبارات alpha، x0 و y0 میتوانند شامل پارامترهای زیر باشند:
- w
- h
- عرض و ارتفاع ورودی
- n
- شماره فریم ورودی، شروع از 0
- pts
- زمان برچسب زمانی نمایش (PTS) فریم ویدیوی فیلترشده، بیانشده در واحدهای TB، در صورت تعریف نشدن NAN
- r
- نرخ فریم ویدیوی ورودی، در صورت نامشخص بودن نرخ فریم ورودی NAN
- t
- برچسب زمانی نمایش (PTS) فریم ویدیوی فیلترشده، بیانشده به ثانیه، در صورت تعریف نشدن NAN
- tb
- پایه زمانی (time base) ویدیوی ورودی
مثالها
- اعمال یک
افکت وینیت
قوی ساده:
vignette=PI/4
- ایجاد یک
وینیت
چشمکزن:
vignette='PI/4+random(1)*PI/50':eval=frame
vmafmotion
به دست آوردن میانگین امتیاز حرکت VMAF یک ویدیو. این یکی از معیارهای سازنده VMAF است.
امتیاز حرکت میانگین به دست آمده از طریق سیستم گزارشگیری چاپ میشود.
این فیلتر گزینههای زیر را میپذیرد:
- stats_file
- در صورت تعیین، فیلتر از پرونده نامبرده برای ذخیره امتیاز حرکت هر فریم نسبت به فریم قبلی استفاده میکند. وقتی نام پرونده برابر "-" باشد، دادهها به خروجی استاندارد فرستاده میشوند.
مثال:
ffmpeg -i ref.mpg -vf vmafmotion -f null -
vpp_amf
مقیاسبندی (تغییر اندازه) و تبدیل فضای رنگی، ویژگیهای انتقال یا رنگهای اصلی برای ویدیوی ورودی، با استفاده از کتابخانه AMD Advanced Media Framework برای شتابدهی سختافزاری. تنظیم عرض و ارتفاع خروجی به همان شیوه فیلتر scale کار میکند.
این فیلتر گزینههای زیر را میپذیرد:
- w
- h
- تنظیم
عبارت
ابعاد
ویدیوی
خروجی.
مقدار
پیشفرض
ابعاد
ورودی است.
عبارات یکسانی مانند فیلتر scale را مجاز میداند.
- scale_type
- تنظیم الگوریتم مورد استفاده برای مقیاسبندی:
- format
- قالب پیکسلی خروجی را کنترل میکند. به طور پیشفرض، یا در صورت عدم تعیین، از قالب پیکسلی ورودی استفاده میشود.
- force_original_aspect_ratio
- force_divisible_by
- مانند گزینههای مشابه در فیلتر scale کار میکنند.
- reset_sar
- مانند گزینه مشابه در فیلتر scale کار میکند.
- in_color_range
- بازنویسی محدوده رنگ ورودی.
- out_color_range
- تعیین
محدوده رنگ
خروجی.
مقادیر پذیرفتهشده برای in_trc و out_trc عبارتند از:
- color_profile
- تعیین
تمامی
مشخصههای
رنگ به طور
همزمان.
مقادیر پذیرفتهشده عبارتند از:
- in_trc
- بازنویسی ویژگیهای انتقال ورودی.
- out_trc
- تعیین
ویژگیهای
انتقال
خروجی.
مقادیر پذیرفتهشده برای in_trc و out_trc عبارتند از:
- bt709
- BT.709
- gamma22
- گامای ثابت 2.2
- gamma28
- گامای ثابت 2.8
- smpte170m
- SMPTE-170M
- smpte240m
- SMPTE-240M
- linear
- خطی (Linear)
- log
- LOG
- log-sqrt
- LOG_SQRT
- iec61966-2-4
- iec61966-2-4
- bt1361-ecg
- BT1361_ECG
- iec61966-2-1
- iec61966-2-1
- bt2020-10
- BT.2020 برای محتوای 10-بیتی
- bt2020-12
- BT.2020 برای محتوای 12-بیتی
- smpte2084
- SMPTE2084
- smpte428
- SMPTE428
- arib-std-b67
- ARIB_STD_B67
- in_primaries
- بازنویسی رنگهای اصلی ورودی.
- out_primaries
- تعیین
رنگهای
اصلی خروجی.
مقادیر پذیرفتهشده برای in_primaries و out_primaries عبارتند از:
مثالها
- مقیاسبندی
ورودی به 720p
با حفظ نسبت
ابعاد و
اطمینان از
اینکه
خروجی yuv420p است:
vpp_amf=-2:720:format=yuv420p
- افزایش
مقیاس به 4K و
تغییر
نمایه رنگ
به bt2020:
vpp_amf=4096:2160:color_profile=bt2020
- بازنویسی
رنگهای
اصلی ورودی
و
ویژگیهای
انتقال
ورودی، و
تغییر هر دو
به bt709:
vpp_amf=color_profile=bt2020:in_trc=smpte2084:in_primaries=bt2020:out_trc=bt709:out_primaries=bt709
vstack
چیدمان عمودی ویدیوهای ورودی روی یکدیگر.
تمام استریمها باید دارای قالب پیکسلی و عرض یکسانی باشند.
توجه داشته باشید که این فیلتر سریعتر از استفاده از فیلترهای overlay و pad برای ایجاد همان خروجی است.
این فیلتر گزینههای زیر را میپذیرد:
w3fdif
دیاینترلیس کردن (Deinterlace) ویدیوی ورودی ("w3fdif" مخفف "Weston 3 Field Deinterlacing Filter" است).
فیلتر دیاینترلیس ۳ میدانی وستون، بر پایه فرایند شرحدادهشده توسط مارتین وستون برای بخش تحقیق و توسعه بیبیسی (BBC R&D) و پیادهسازیشده بر اساس الگوریتم دیاینترلیس نوشتهشده توسط جیم ایستربروک برای BBC R&D، از ضرایب فیلتر محاسبهشده توسط BBC R&D استفاده میکند.
این فیلتر از اطلاعات تسلط میدان (field-dominance) در فریم برای تصمیمگیری درباره اینکه کدام میدان از هر جفت میدان در ابتدا در خروجی قرار گیرد، استفاده میکند. اگر این تصمیم اشتباه بود، پیش از فیلتر "w3fdif" از فیلتر setfield استفاده کنید.
دو مجموعه ضریب فیلتر وجود دارد که "ساده" (simple) و "پیچیده" (complex) نامیده میشوند. اینکه کدام مجموعه از ضرایب فیلتر استفاده شود را میتوان با ارسال یک پارامتر اختیاری تنظیم کرد:
- filter
- تنظیم ضرایب فیلتر اینترلیس. یکی از مقادیر زیر را میپذیرد:
مقدار پیشفرض complex است.
- mode
- حالت اینترلیس برای اتخاذ. یکی از مقادیر زیر را میپذیرد:
- frame
- خروجی دادن یک فریم به ازای هر فریم.
- field
- خروجی دادن یک فریم به ازای هر میدان.
مقدار پیشفرض "field" است.
- parity
- توازن (parity) میدان تصویر که برای ویدیوی اینترلیس ورودی فرض میشود. یکی از مقادیر زیر را میپذیرد:
مقدار پیشفرض "auto" است. اگر حالت اینترلیس ناشناخته باشد یا رمزگشا این اطلاعات را صادر نکند، فرض میشود که میدان بالایی در ابتدا است.
- deint
- تعیین اینکه کدام فریمها دیاینترلیس شوند. یکی از مقادیر زیر را میپذیرد:
- all
- دیاینترلیس کردن تمامی فریمها.
- interlaced
- فقط دیاینترلیس کردن فریمهایی که به عنوان اینترلیس علامتگذاری شدهاند.
مقدار پیشفرض all است.
دستورات
این فیلتر از دستورات مشابهی مانند گزینهها پشتیبانی میکند.
waveform
پایشگر شکلموج (waveform) ویدیو.
پایشگر شکلموج، شدت مؤلفههای رنگ را ترسیم میکند. به طور پیشفرض فقط روشنایی (luma). هر ستون از شکلموج متناظر با یک ستون از پیکسلها در ویدیوی مبدأ است.
این فیلتر گزینههای زیر را میپذیرد:
- mode, m
- میتواند "row" (سطری) یا "column" (ستونی) باشد. پیشفرض "column" است. در حالت سطری، نمودار در سمت چپ نشاندهنده مقدار مؤلفه رنگ 0 و سمت راست نشاندهنده مقدار 255 است. در حالت ستونی، سمت بالا نشاندهنده مقدار مؤلفه رنگ 0 و سمت پایین نشاندهنده مقدار 255 است.
- intensity, i
- تنظیم شدت. مقادیر کوچکتر برای پی بردن به اینکه چه تعداد مقدار با روشنایی یکسان در سطرها/ستونهای ورودی توزیع شدهاند مفید است. مقدار پیشفرض 0.04 است. بازه مجاز [0, 1] است.
- mirror, r
- تنظیم حالت آینهای. 0 به معنای بدون آینه و 1 به معنای آینهای است. در حالت آینهای، مقادیر بالاتر در سمت چپ برای حالت "row" و در بالا برای حالت "column" نمایش داده میشوند. پیشفرض 1 (آینهای) است.
- display, d
- تنظیم حالت نمایش. مقادیر زیر را میپذیرد:
- overlay
- اطلاعاتی
همسان با
حالت
"parade"
ارائه
میدهد، با
این تفاوت
که
نمودارهای
نشاندهنده
مؤلفههای
رنگ
مستقیماً
روی یکدیگر
قرار
میگیرند.
این حالت نمایش، تشخیص تفاوتها یا شباهتهای نسبی در نواحی همپوشان مؤلفههای رنگی را که قرار است یکسان باشند، مانند سفید، خاکستری یا سیاه خنثی، آسانتر میکند.
- stack
- نمایش نمودارهای جداگانه برای مؤلفههای رنگ کنار هم در حالت "row" یا زیر یکدیگر در حالت "column".
- parade
- نمایش
نمودارهای
جداگانه
برای
مؤلفههای
رنگ کنار هم
در حالت
"column" یا
زیر یکدیگر
در حالت
"row".
استفاده از این حالت نمایش، تشخیص تهرنگها (color casts) را در سایهروشنها و تاریکیهای تصویر با مقایسه خطوط کانتور بالا و پایین هر شکلموج آسان میکند. از آنجا که رنگهای سفید، خاکستری و سیاه با مقادیر دقیقاً مساوی از قرمز، سبز و آبی مشخص میشوند، نواحی خنثی تصویر باید سه شکلموج با عرض/ارتفاع تقریباً برابر نمایش دهند. در غیر این صورت، تصحیح با انجام تنظیمات سطح روی سه شکلموج آسان خواهد بود.
پیشفرض "stack" است.
- components, c
- تنظیم مؤلفههای رنگی مورد نمایش. پیشفرض 1 است، که به معنای تنها روشنایی (luma) یا مؤلفه رنگ قرمز در صورت قرار داشتن ورودی در فضای رنگی RGB است. اگر برای مثال روی 7 تنظیم شود، هر 3 مؤلفه رنگی موجود (در صورت وجود) را نمایش میدهد.
- envelope, e
- none
- بدون پوش (envelope)، این حالت پیشفرض است.
- instant
- پوش لحظهای، مقادیر کمینه و بیشینه ارائهشده در نمودار حتی با مقدار کوچک "step" به راحتی قابل مشاهده خواهند بود.
- peak
- نگهداشتن مقادیر کمینه و بیشینه ارائهشده در نمودار در طول زمان. از این طریق میتوانید مقادیر خارج از محدوده را بدون نگاه مداوم به شکلموجها تشخیص دهید.
- peak+instant
- ترکیب هر دو پوش اوج (peak) و لحظهای (instant) با یکدیگر.
- lowpass
- بدون فیلتر، این حالت پیشفرض است.
- flat
- ترکیب روشنایی (luma) و رنگ (chroma) با یکدیگر.
- aflat
- مشابه موارد بالا، اما تفاوت بین رنگ آبی و قرمز را نشان میدهد.
- xflat
- مشابه موارد بالا، اما از رنگهای متفاوتی استفاده میکند.
- yflat
- مشابه موارد بالا، اما مجدداً با رنگهای متفاوت.
- chroma
- فقط نمایش رنگ (chroma).
- color
- نمایش مقدار رنگ واقعی روی شکلموج.
- acolor
- مشابه مورد بالا، اما با روشنایی که بسامد مقادیر رنگ را نشان میدهد.
- graticule, g
- تنظیم اینکه کدام شبکه مدرج (graticule) نمایش داده شود.
- opacity, o
- تنظیم کدر بودن (opacity) شبکه مدرج.
- flags, fl
- تنظیم پرچمهای شبکه مدرج.
- scale, s
- تنظیم مقیاس مورد استفاده برای نمایش شبکه مدرج.
پیشفرض digital است.
- bgopacity, b
- تنظیم کدر بودن پسزمینه.
- tint0, t0
- tint1, t1
- تنظیم تهرنگ خروجی. تنها با فیلتر lowpass و زمانی که حالت نمایش overlay نیست و قالبهای پیکسلی ورودی RGB نیستند استفاده میشود.
- fitmode, fm
- تنظیم نسبت ابعاد نمونه (SAR) فریمهای خروجی ویدیو. میتواند برای پیکربندی شکلموج استفاده شود تا در یکی از جهات بیش از حد کشیده نشود.
پیشفرض none است.
- input
- تنظیم قالبهای ورودی برای انتخاب توسط فیلتر. میتواند all برای انتخاب از میان تمامی قالبهای موجود، یا first برای انتخاب نخستین قالب موجود باشد. پیشفرض first است.
weave, doubleweave
فیلتر "weave" یک ورودی ویدیویی مبتنی بر میدان (field-based) را میگیرد و هر دو میدان متوالی را در یک فریم ادغام میکند و یک کلیپ جدید با ارتفاع دوبرابر، نرخ فریم نصف و تعداد فریم نصف تولید میکند.
فیلتر "doubleweave" همانند "weave" کار میکند اما بدون نصف کردن نرخ فریم و تعداد فریمها.
این فیلتر گزینه زیر را میپذیرد:
- first_field
- تنظیم میدان اول. مقادیر موجود عبارتند از:
مثالها
- •
- اینترلیس
کردن ویدیو
با استفاده
از
فیلترهای
select و separatefields:
separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
xbr
اعمال فیلتر بزرگنمایی باکیفیت xBR که برای پیکسل آرت (pixel art) طراحی شده است. این فیلتر از مجموعهای از قوانین تشخیص لبه پیروی میکند، ببینید https://forums.libretro.com/t/xbr-algorithm-tutorial/123.
این فیلتر گزینه زیر را میپذیرد:
- n
- تنظیم ابعاد مقیاسبندی: 2 برای "2xBR"، 3 برای "3xBR" و 4 برای "4xBR". پیشفرض 3 است.
xcorrelate
اعمال همبستگی متقابل نرمالشده (normalized cross-correlation) میان استریم ویدیوی ورودی اول و دوم.
ابعاد استریم ویدیوی ورودی دوم باید کوچکتر از استریم ویدیوی ورودی اول باشد.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تنظیم صفحههایی که باید پردازش شوند.
- secondary
- تنظیم اینکه کدام فریمهای ویدیوی ثانویه از استریم ویدیوی ورودی دوم پردازش شوند، میتواند first یا all باشد. پیشفرض all است.
فیلتر "xcorrelate" همچنین از گزینههای framesync پشتیبانی میکند.
xfade
اعمال محوشدگی متقاطع (cross fade) از یک استریم ویدیوی ورودی به استریم ویدیوی ورودی دیگر. محوشدگی متقاطع برای مدتزمان مشخص اعمال میشود.
هر دو ورودی باید دارای نرخ فریم ثابت بوده و تفکیکپذیری، قالب پیکسلی، نرخ فریم و پایه زمانی یکسانی داشته باشند.
این فیلتر گزینههای زیر را میپذیرد:
- transition
- تنظیم یکی از جلوههای گذار (transition) موجود:
- custom
- fade
- wipeleft
- wiperight
- wipeup
- wipedown
- slideleft
- slideright
- slideup
- slidedown
- circlecrop
- rectcrop
- distance
- fadeblack
- fadewhite
- radial
- smoothleft
- smoothright
- smoothup
- smoothdown
- circleopen
- circleclose
- vertopen
- vertclose
- horzopen
- horzclose
- dissolve
- pixelize
- diagtl
- diagtr
- diagbl
- diagbr
- hlslice
- hrslice
- vuslice
- vdslice
- hblur
- fadegrays
- wipetl
- wipetr
- wipebl
- wipebr
- squeezeh
- squeezev
- zoomin
- fadefast
- fadeslow
- hlwind
- hrwind
- vuwind
- vdwind
- coverleft
- coverright
- coverup
- coverdown
- revealleft
- revealright
- revealup
- revealdown
جلوه گذار پیشفرض fade است.
- duration
- تنظیم مدتزمان محوشدگی متقاطع به ثانیه. بازه 0 تا 60 ثانیه است. مدتزمان پیشفرض 1 ثانیه است.
- offset
- تنظیم نقطه شروع محوشدگی متقاطع نسبت به استریم ورودی اول به ثانیه. میزان آفست پیشفرض 0 است.
- expr
- تنظیم
عبارت برای
جلوه گذار
سفارشی.
عبارات میتوانند از متغیرها و توابع زیر استفاده کنند:
- X
- Y
- مختصات نمونه کنونی.
- W
- H
- عرض و ارتفاع تصویر.
- P
- پیشرفت جلوه گذار.
- PLANE
- صفحه در حال پردازش کنونی.
- A
- مقدار بازگشتی ورودی اول در موقعیت و صفحه کنونی.
- B
- مقدار بازگشتی ورودی دوم در موقعیت و صفحه کنونی.
- a0(x, y)
- a1(x, y)
- a2(x, y)
- a3(x, y)
- بازگرداندن مقدار پیکسل در موقعیت (x,y) مؤلفه اول/دوم/سوم/چهارم ورودی اول.
- b0(x, y)
- b1(x, y)
- b2(x, y)
- b3(x, y)
- بازگرداندن مقدار پیکسل در موقعیت (x,y) مؤلفه اول/دوم/سوم/چهارم ورودی دوم.
مثالها
- •
- محوشدگی
متقاطع از
یک ویدیوی
ورودی به
ویدیوی
ورودی
دیگر، با
گذار fade و
مدتزمان
گذار 2
ثانیه که در
آفست 5
ثانیهای
آغاز
میشود:
ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
xmedian
انتخاب پیکسلهای میانه (median) از چندین ویدیوی ورودی.
این فیلتر گزینههای زیر را میپذیرد:
- inputs
- تنظیم تعداد ورودیها. پیشفرض 3 است. بازه مجاز از 3 تا 255 است. اگر تعداد ورودیها عددی زوج باشد، نتیجه مقدار میانگین بین دو مقدار میانه خواهد بود.
- planes
- تنظیم صفحههایی که باید فیلتر شوند. مقدار پیشفرض 15 است که با آن همه صفحهها پردازش میشوند.
- percentile
- تنظیم صدک میانه. مقدار پیشفرض 0.5 است. مقدار پیشفرض 0.5 همیشه مقادیر میانه را انتخاب میکند، در حالی که 0 مقادیر کمینه و 1 مقادیر بیشینه را انتخاب خواهد کرد.
دستورات
این فیلتر از تمامی گزینههای فوق به عنوان دستور پشتیبانی میکند، به جز گزینه "inputs".
xpsnr
به دست آوردن میانگین (در تمام فریمهای ورودی) و کمینه (در تمام میانگینهای صفحههای رنگی) نسبت سیگنال به نویز اوج وزندهیشده ادراکی تعمیمیافته (XPSNR) میان دو ویدیوی ورودی.
معیار XPSNR یک الگوریتم اندازهگیری اعوجاج با پیچیدگی پایین و با انگیزه روانی-دیداری (psychovisually) برای ارزیابی تفاوت بین دو استریم ویدیو یا تصویر است. این معیار بهویژه برای تعیین کمّی عینی اعوجاجهای ناشی از کدکهای ویدیویی و تصویری، به عنوان جایگزینی برای آزمون ذهنی رسمی مفید است. مقادیر لگاریتمی خروجی XPSNR در محدودهای مشابه با ارزیابیهای سنتی psnr قرار دارند اما برداشتهای انسانی از کیفیت کدگذاری دیداری را بهتر بازتاب میدهند. جزئیات بیشتر درباره معیار XPSNR، که اساساً بیانگر یک گونه وزندهیشده بلوکی از معیار PSNR است، در مقالات آزاد زیر قابل دسترسی است:
- C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020. <www.ecodis.de/xpsnr.htm>
- C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, and T. Wiegand, "A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths," ITU Journal: ICT Discoveries, vol. 3, no. 1, pp. 65 - 72, May 2020. http://handle.itu.int/11.1002/pub/8153d78b-en
هنگام انتشار نتایج ارزیابیهای XPSNR به دست آمده مثلاً با استفاده از این فیلتر FFmpeg، ارجاع به مقالات فوق به عنوان روشی برای مستندسازی اکیداً توصیه میشود. این فیلتر به دو ویدیوی ورودی نیاز دارد. ورودی اول به عنوان منبع مرجع (معمولاً بدون اعوجاج) در نظر گرفته شده و بدون تغییر به خروجی منتقل میشود، در حالی که ورودی دوم سیگنال آزمون (دارای اعوجاج) است. به جز عمق بیتی (bit depth)، این دو ویدیوی ورودی باید دارای قالب پیکسلی یکسانی باشند. علاوه بر این، برای بهترین عملکرد، هر دو ویدیوی ورودی مورد مقایسه باید در قالب رنگی YCbCr باشند.
مقادیر کلی به دست آمده XPSNR ذکرشده در بالا از طریق سیستم گزارشگیری چاپ میشوند. در صورت ورودی با چندین صفحه رنگی، پیشنهاد میکنیم کمینه میانگین XPSNR گزارش شود.
پارامتر زیر که رفتاری مشابه با پارامتر فیلتر psnr دارد پذیرفته میشود:
- stats_file, f
- در صورت تعیین، فیلتر از پرونده نامبرده برای ذخیره مقدار XPSNR هر فریم منفرد و صفحه رنگی استفاده میکند. وقتی نام پرونده برابر "-" باشد، آن دادهها به خروجی استاندارد فرستاده میشوند.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
مثالها
- تحلیل XPSNR دو
ویدیوی HD با
تفکیکپذیری
1080p با
نامهای ref_source.yuv
و test_video.yuv، هر دو
با نرخ 24
فریم بر
ثانیه، با
قالب رنگی
4:2:0، عمق بیتی
8، و خروجی
در یک
پرونده لاگ
به نام "xpsnr.log":
ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null -
- تحلیل XPSNR دو
ویدیوی UHD با
تفکیکپذیری
2160p با
نامهای ref_source.yuv
با عمق بیتی
8 و test_video.yuv با عمق
بیتی 10، هر
دو با نرخ 60
فریم بر
ثانیه با
قالب رنگی
4:2:0، بدون
خروجی
پرونده لاگ:
ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate 60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
xstack
چیدمان ورودیهای ویدیو در یک طرحبندی (layout) سفارشی.
تمام استریمها باید دارای قالب پیکسلی یکسانی باشند.
این فیلتر گزینههای زیر را میپذیرد:
- inputs
- تنظیم تعداد استریمهای ورودی. پیشفرض 2 است.
- layout
- تعیین
طرحبندی
ورودیها.
این گزینه
نیازمند آن
است که
پیکربندی
طرحبندی
دلخواه
صریحاً
توسط کاربر
تعیین شود.
این گزینه
موقعیت هر
ورودی
ویدیو را در
خروجی مشخص
میکند. هر
ورودی با '|'
جدا میشود.
عدد اول
نشاندهنده
ستون و عدد
دوم
نشاندهنده
سطر است.
اعداد از 0
شروع
میشوند و
با '_' جدا
میگردند.
به صورت
اختیاری
میتوان از
wX و hX استفاده
کرد که در
آن X ورودی
ویدیویی
است که عرض
یا ارتفاع
از آن گرفته
میشود. در
صورت
جداسازی با
'+' میتوان
از چندین
مقدار
استفاده
کرد. در
چنین حالتی
مقادیر با
یکدیگر جمع
میشوند.
توجه داشته باشید که اگر ورودیها دارای اندازههای متفاوتی باشند ممکن است فاصلههای خالی ایجاد شود، زیرا تمام فریم ویدیوی خروجی پر نخواهد شد. به طور مشابه، اگر موقعیت ویدیوها فضای کافی برای فریم کامل ویدیوهای مجاور باقی نگذارد، ویدیوها میتوانند روی یکدیگر همپوشانی داشته باشند.
برای 2 ورودی، یک طرحبندی پیشفرض "0_0|w0_0" (معادل "grid=2x1") تنظیم شده است. در تمام موارد دیگر، یک طرحبندی یا یک شبکه (grid) باید توسط کاربر تنظیم شود. در هر زمان تنها یکی از گزینههای "grid" یا "layout" را میتوان تعیین کرد. تعیین هر دوی آنها منجر به خطا خواهد شد.
- grid
- تعیین یک
شبکه (grid) با
اندازه
ثابت از
ورودیها.
این گزینه
برای ایجاد
یک شبکه با
اندازه
ثابت از
استریمهای
ورودی
استفاده
میشود.
اندازه
شبکه را به
صورت
"COLUMNSxROWS"
تنظیم کنید.
باید به
تعداد "ROWS *
COLUMNS" استریم
ورودی وجود
داشته باشد
و آنها به
صورت یک
شبکه با
"ROWS" سطر و
"COLUMNS"
ستون چیده
خواهند شد.
هنگام
استفاده از
این گزینه،
هر استریم
ورودی درون
یک سطر باید
ارتفاع
یکسانی
داشته باشد
و تمامی
سطرها باید
عرض یکسانی
داشته
باشند.
اگر "grid" تنظیم شود، گزینه "inputs" نادیده گرفته شده و به طور ضمنی روی "ROWS * COLUMNS" تنظیم میشود.
برای 2 ورودی، یک شبکه پیشفرض "2x1" (معادل "layout=0_0|w0_0") تنظیم شده است. در تمام موارد دیگر، یک طرحبندی یا یک شبکه باید توسط کاربر تنظیم شود. در هر زمان تنها یکی از گزینههای "grid" یا "layout" را میتوان تعیین کرد. تعیین هر دوی آنها منجر به خطا خواهد شد.
- shortest
- در صورت تنظیم روی 1، خروجی را وادار میکند با پایان یافتن کوتاهترین ورودی خاتمه یابد. مقدار پیشفرض 0 است.
- fill
- در صورت تنظیم روی یک رنگ معتبر، تمام پیکسلهای استفادهنشده با آن رنگ پر میشوند. به طور پیشفرض fill روی none تنظیم شده است، بنابراین غیرفعال است.
مثالها
- نمایش 4
ورودی در یک
شبکه 2x2.
طرحبندی:
input1(0, 0) | input3(w0, 0) input2(0, h0) | input4(w0, h0) xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
توجه داشته باشید که اگر ورودیها دارای اندازههای متفاوتی باشند، ممکن است فاصلههای خالی یا همپوشانی رخ دهد.
- نمایش 4
ورودی در یک
شبکه 1x4.
طرحبندی:
input1(0, 0) input2(0, h0) input3(0, h0+h1) input4(0, h0+h1+h2) xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
توجه داشته باشید که اگر ورودیها دارای عرضهای متفاوتی باشند، فضای استفادهنشده ظاهر خواهد شد.
- نمایش 9
ورودی در یک
شبکه 3x3.
طرحبندی:
input1(0, 0) | input4(w0, 0) | input7(w0+w3, 0) input2(0, h0) | input5(w0, h0) | input8(w0+w3, h0) input3(0, h0+h1) | input6(w0, h0+h1) | input9(w0+w3, h0+h1) xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
توجه داشته باشید که اگر ورودیها دارای اندازههای متفاوتی باشند، ممکن است فاصلههای خالی یا همپوشانی رخ دهد.
- نمایش 16
ورودی در یک
شبکه 4x4.
طرحبندی:
input1(0, 0) | input5(w0, 0) | input9 (w0+w4, 0) | input13(w0+w4+w8, 0) input2(0, h0) | input6(w0, h0) | input10(w0+w4, h0) | input14(w0+w4+w8, h0) input3(0, h0+h1) | input7(w0, h0+h1) | input11(w0+w4, h0+h1) | input15(w0+w4+w8, h0+h1) input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2) xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0| w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
توجه داشته باشید که اگر ورودیها دارای اندازههای متفاوتی باشند، ممکن است فاصلههای خالی یا همپوشانی رخ دهد.
yadif
دیاینترلیس کردن ویدیوی ورودی ("yadif" به معنای "yet another deinterlacing filter" است).
این فیلتر پارامترهای زیر را میپذیرد:
- mode
- حالت اینترلیس برای اتخاذ. یکی از مقادیر زیر را میپذیرد:
- 0, send_frame
- خروجی دادن یک فریم به ازای هر فریم.
- 1, send_field
- خروجی دادن یک فریم به ازای هر میدان.
- 2, send_frame_nospatial
- مشابه "send_frame"، اما بررسی اینترلیس مکانی را نادیده میگیرد.
- 3, send_field_nospatial
- مشابه "send_field"، اما بررسی اینترلیس مکانی را نادیده میگیرد.
مقدار پیشفرض "send_frame" است.
- parity
- توازن میدان تصویر که برای ویدیوی اینترلیس ورودی فرض میشود. یکی از مقادیر زیر را میپذیرد:
- 0, tff
- فرض میشود میدان بالایی در ابتدا است.
- 1, bff
- فرض میشود میدان پایینی در ابتدا است.
- -1, auto
- فعالسازی تشخیص خودکار توازن میدان.
مقدار پیشفرض "auto" است. اگر حالت اینترلیس ناشناخته باشد یا رمزگشا این اطلاعات را صادر نکند، فرض میشود که میدان بالایی در ابتدا است.
- deint
- تعیین اینکه کدام فریمها دیاینترلیس شوند. یکی از مقادیر زیر را میپذیرد:
- 0, all
- دیاینترلیس کردن تمام فریمها.
- 1, interlaced
- فقط دیاینترلیس کردن فریمهایی که به عنوان اینترلیس علامتگذاری شدهاند.
مقدار پیشفرض "all" است.
yaepblur
اعمال فیلتر تاری (blur) با حفظ لبهها ("yaepblur" مخفف "yet another edge preserving blur filter" است). این الگوریتم در منبع زیر شرح داده شده است: "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
این فیلتر پارامترهای زیر را میپذیرد:
- radius, r
- تنظیم شعاع پنجره. مقدار پیشفرض 3 است.
- planes, p
- تنظیم صفحههایی که باید فیلتر شوند. پیشفرض تنها صفحه اول است.
- sigma, s
- تنظیم شدت تاری. مقدار پیشفرض 128 است.
دستورات
این فیلتر از دستورات مشابهی مانند گزینهها پشتیبانی میکند.
zoompan
اعمال جلوه بزرگنمایی و حرکت افقی/عمودی (Zoom & Pan).
این فیلتر گزینههای زیر را میپذیرد:
- zoom, z
- تنظیم عبارت بزرگنمایی. بازه 1-10 است. پیشفرض 1 است.
- x
- y
- تنظیم عبارات x و y. پیشفرض 0 است.
- d
- تنظیم عبارت مدتزمان بر حسب تعداد فریمها. این گزینه تعیین میکند که جلوه برای یک تصویر ورودی منفرد چند فریم دوام داشته باشد. پیشفرض 90 است.
- s
- تنظیم اندازه تصویر خروجی، پیشفرض 'hd720' است.
- fps
- تنظیم نرخ فریم خروجی، پیشفرض '25' است.
هر عبارت میتواند شامل ثابتهای زیر باشد:
- in_w, iw
- عرض ورودی.
- in_h, ih
- ارتفاع ورودی.
- out_w, ow
- عرض خروجی.
- out_h, oh
- ارتفاع خروجی.
- in
- شمارش فریم ورودی.
- on
- شمارش فریم خروجی.
- in_time, it
- برچسب زمانی ورودی بیانشده به ثانیه. در صورت نامشخص بودن برچسب زمانی ورودی NAN است.
- out_time, time, ot
- برچسب زمانی خروجی بیانشده به ثانیه.
- x
- y
- آخرین موقعیت 'x' و 'y' محاسبهشده از عبارت 'x' و 'y' برای فریم ورودی کنونی.
- px
- py
- موقعیتهای 'x' و 'y' آخرین فریم خروجی فریم ورودی پیشین یا 0 در صورتی که هنوز چنین فریمی وجود نداشته باشد (نخستین فریم ورودی).
- zoom
- آخرین بزرگنمایی محاسبهشده از عبارت 'z' برای فریم ورودی کنونی.
- pzoom
- آخرین بزرگنمایی محاسبهشده آخرین فریم خروجی فریم ورودی پیشین.
- duration
- تعداد فریمهای خروجی برای فریم ورودی کنونی. برای هر فریم ورودی از عبارت 'd' محاسبه میشود.
- pduration
- تعداد فریمهای خروجی ایجادشده برای فریم ورودی پیشین.
- a
- عدد کسری: عرض ورودی / ارتفاع ورودی
- sar
- نسبت ابعاد نمونه (sample aspect ratio)
- dar
- نسبت ابعاد نمایش (display aspect ratio)
مثالها
- بزرگنمایی
تا 1.5 برابر و
همزمان
جابجایی به
نقطهای
نزدیک به
مرکز تصویر:
zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
- بزرگنمایی
تا 1.5 برابر و
جابجایی
همواره در
مرکز تصویر:
zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
- مشابه مورد
بالا اما
بدون مکث:
zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
- بزرگنمایی
2 برابر در
مرکز تصویر
تنها برای
ثانیه اول
ویدیوی
ورودی:
zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
zscale
مقیاسبندی (تغییر اندازه) ویدیوی ورودی با استفاده از کتابخانه z.lib: https://github.com/sekrit-twc/zimg. برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-libzimg" پیکربندی کنید.
فیلتر zscale با تغییر نسبت ابعاد نمونه خروجی، نسبت ابعاد نمایش خروجی را مجبور میکند با ورودی یکسان باشد.
اگر قالب تصویر ورودی با قالب درخواستشده توسط فیلتر بعدی متفاوت باشد، فیلتر zscale ورودی را به قالب درخواستشده تبدیل میکند.
گزینهها
این فیلتر گزینههای زیر را میپذیرد:
- width, w
- height, h
- تنظیم
عبارت
ابعاد
ویدیوی
خروجی.
مقدار
پیشفرض
همان ابعاد
ورودی است.
اگر مقدار width یا w برابر 0 باشد، عرض ورودی برای خروجی استفاده میشود. اگر مقدار height یا h برابر 0 باشد، ارتفاع ورودی برای خروجی استفاده میشود.
اگر یکی و فقط یکی از مقادیر برابر -n با n >= 1 باشد، فیلتر zscale از مقداری استفاده میکند که نسبت ابعاد تصویر ورودی را حفظ کند که از بعد مشخصشده دیگر محاسبه میشود. پس از آن، اطمینان حاصل میکند که بعد محاسبهشده بر n بخشپذیر است و در صورت لزوم مقدار را تنظیم میکند.
اگر هر دو مقدار برابر -n با n >= 1 باشند، رفتار دقیقاً مشابه حالتی خواهد بود که هر دو مقدار روی 0 تنظیم شده باشند همانطور که پیشتر توضیح داده شد.
برای فهرست ثابتهای پذیرفتهشده جهت استفاده در عبارت ابعاد، به بخش زیر مراجعه کنید.
- size, s
- تنظیم اندازه ویدیو. برای نحو نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- dither, d
- تنظیم نوع
دیتر (dither).
مقادیر ممکن عبارتند از:
- none
- ordered
- random
- error_diffusion
پیشفرض none است.
- filter, f
- تنظیم نوع
فیلتر
تغییر
اندازه.
مقادیر ممکن عبارتند از:
پیشفرض bilinear است.
- range, r
- تنظیم
محدوده رنگ.
مقادیر ممکن عبارتند از:
پیشفرض همانند ورودی است.
- primaries, p
- تنظیم
رنگهای
اصلی.
مقادیر ممکن عبارتند از:
- input
- 709
- unspecified
- 170m
- 240m
- 2020
پیشفرض همانند ورودی است.
- transfer, t
- تنظیم
ویژگیهای
انتقال.
مقادیر ممکن عبارتند از:
- input
- 709
- unspecified
- 601
- linear
- 2020_10
- 2020_12
- smpte2084
- iec61966-2-1
- arib-std-b67
پیشفرض همانند ورودی است.
- matrix, m
- تنظیم
ماتریس
فضای رنگی.
مقادیر ممکن عبارتند از:
- input
- 709
- unspecified
- 470bg
- 170m
- 2020_ncl
- 2020_cl
پیشفرض همانند ورودی است.
- rangein, rin
- تنظیم
محدوده رنگ
ورودی.
مقادیر ممکن عبارتند از:
پیشفرض همانند ورودی است.
- primariesin, pin
- تنظیم
رنگهای
اصلی ورودی.
مقادیر ممکن عبارتند از:
- input
- 709
- unspecified
- 170m
- 240m
- 2020
پیشفرض همانند ورودی است.
- transferin, tin
- تنظیم
ویژگیهای
انتقال
ورودی.
مقادیر ممکن عبارتند از:
- input
- 709
- unspecified
- 601
- linear
- 2020_10
- 2020_12
پیشفرض همانند ورودی است.
- matrixin, min
- تنظیم
ماتریس
فضای رنگی
ورودی.
مقادیر ممکن عبارتند از:
- input
- 709
- unspecified
- 470bg
- 170m
- 2020_ncl
- 2020_cl
- chromal, c
- تنظیم
موقعیت رنگ
(chroma) خروجی.
مقادیر ممکن عبارتند از:
- chromalin, cin
- تنظیم
موقعیت رنگ
(chroma) ورودی.
مقادیر ممکن عبارتند از:
- npl
- تنظیم روشنایی اوج نامی (nominal peak luminance).
- param_a
- پارامتر A برای فیلترهای مقیاسبندی. پارامتر "b" برای دومکعبی (bicubic)، و تعداد شاخهها (taps) برای لانچوس (lanczos).
- param_b
- پارامتر B برای فیلترهای مقیاسبندی. پارامتر "c" برای دومکعبی.
مقادیر گزینههای w و h عباراتی هستند که شامل ثابتهای زیر میباشند:
- in_w
- in_h
- عرض و ارتفاع ورودی
- iw
- ih
- همانند in_w و in_h هستند.
- out_w
- out_h
- عرض و ارتفاع خروجی (مقیاسشده)
- ow
- oh
- همانند out_w و out_h هستند.
- a
- همانند iw / ih
- sar
- نسبت ابعاد نمونه ورودی
- dar
- نسبت ابعاد نمایش ورودی. محاسبهشده از "(iw / ih) * sar".
- hsub
- vsub
- مقادیر زیرنمونهبرداری رنگ (chroma subsample) افقی و عمودی ورودی. برای مثال برای قالب پیکسلی "yuv422p" مقدار hsub برابر 2 و vsub برابر 1 است.
- ohsub
- ovsub
- مقادیر زیرنمونهبرداری رنگ افقی و عمودی خروجی. برای مثال برای قالب پیکسلی "yuv422p" مقدار hsub برابر 2 و vsub برابر 1 است.
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
فیلترهای ویدیویی CUDA (CUDA VIDEO FILTERS)
در ادامه شرحی از فیلترهای ویدیویی Nvidia CUDA موجود ارائه شده است.
پیشنیازها:
- *<Install Nvidia CUDA Toolkit>
نکته: اگر FFmpeg در طول پیکربندی Nvidia CUDA Toolkit را تشخیص دهد، فیلترهای CUDA را به طور خودکار بدون نیاز به هیچ پرچم اضافی فعال میکند. اگر میخواهید آنها را صریحاً فعال کنید، از گزینههای زیر استفاده نمایید:
- *<Configure FFmpeg with "--enable-cuda-nvcc --enable-nonfree".>
- *<Configure FFmpeg with "--enable-cuda-llvm". Additional requirement: "llvm" lib must be installed.>
اجرای فیلترهای CUDA نیازمند آن است که یک دستگاه سختافزاری را مقداردهی اولیه کرده و آن دستگاه را به تمام فیلترها در هر گراف فیلتری ارسال کنید.
- -init_hw_device cuda[=name][:device[,key=value...]]
- مقداردهی اولیه یک دستگاه سختافزاری جدید از نوع cuda به نام name، با استفاده از پارامترهای دستگاه دادهشده.
- -filter_hw_device name
- ارسال دستگاه سختافزاری با نام name به تمامی فیلترها در هر گراف فیلتر.
برای کسب اطلاعات دقیقتر به https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options مراجعه کنید
- •
- مثال از
مقداردهی
اولیه
دومین
دستگاه CUDA در
سیستم و
اجرای
فیلترهای
scale_cuda و bilateral_cuda روی
آن:
./ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -init_hw_device cuda:1 -filter_complex \ "[0:v]scale_cuda=format=yuv444p[scaled_video];[scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \ -an -sn -c:v h264_nvenc -cq 20 out.mp4
از آنجا که فیلترهای CUDA منحصراً روی حافظه GPU کار میکنند، دادههای فریم گاهی اوقات باید پیش از پردازش به سطوح سختافزاری مرتبط با دستگاه CUDA مناسب بارگذاری شوند (hwupload)، و پس از آن در صورت نیاز به حافظه عادی بازگردانده شوند (hwdownload). اینکه آیا hwupload یا hwdownload ضروری است یا خیر، به گردش کار خاص بستگی دارد:
- *<If the input frames are already in GPU memory (e.g., when using "-hwaccel cuda" or "-hwaccel_output_format cuda"), explicit use of hwupload is not needed, as the data is already in the appropriate memory space.>
- *<If the input frames are in CPU memory (e.g., software-decoded frames or frames processed by CPU-based filters), it is necessary to use hwupload to transfer the data to GPU memory for CUDA processing.>
- *<If the output of the CUDA filters needs to be further processed by software-based filters or saved in a format not supported by GPU-based encoders, hwdownload is required to transfer the data back to CPU memory.>
توجه داشته باشید که hwupload دادهها را روی سطحی با همان طرحبندی فریم نرمافزاری بارگذاری میکند، بنابراین ممکن است لازم باشد بلافاصله پیش از hwupload یک فیلتر format اضافه کنید تا مطمئن شوید ورودی در قالب درستی قرار دارد. به طور مشابه، hwdownload ممکن است از همه قالبهای خروجی پشتیبانی نکند، بنابراین ممکن است لازم باشد یک فیلتر format اضافی بلافاصله پس از hwdownload در گراف فیلتر قرار داده شود تا سازگاری تضمین شود.
bilateral_cuda
فیلتر دوطرفه (bilateral) شتابیافته با CUDA، یک فیلتر حفظکننده لبه. این فیلتر به لطف استفاده از شتابدهی GPU از نظر ریاضی دقیق است. برای بهترین کیفیت خروجی، از زیرنمونهبرداری رنگ یکبهیک، یعنی قالب yuv444p استفاده کنید.
این فیلتر گزینههای زیر را میپذیرد:
- sigmaS
- تنظیم سیگما برای تابع گاوسی جهت محاسبه وزن مکانی، که سیگمای مکان (sigma space) نیز نامیده میشود. بازه مجاز 0.1 تا 512 است. پیشفرض 0.1 است.
- sigmaR
- تنظیم سیگما برای تابع گاوسی جهت محاسبه وزن محدوده رنگ، که سیگمای رنگ (sigma color) نیز نامیده میشود. بازه مجاز 0.1 تا 512 است. پیشفرض 0.1 است.
- window_size
- تنظیم اندازه پنجره تابع دوطرفه برای تعیین تعداد همسایهها جهت حلقه زدن روی آنها. اگر عدد واردشده زوج باشد، یک واحد به طور خودکار به آن اضافه میشود. بازه مجاز 1 تا 255 است. پیشفرض 1 است.
مثالها
- •
- اعمال
فیلتر
دوطرفه روی
یک ویدیو:
./ffmpeg -v verbose \ -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 \ -init_hw_device cuda \ -filter_complex \ " \ [0:v]scale_cuda=format=yuv444p[scaled_video]; [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \ -an -sn -c:v h264_nvenc -cq 20 out.mp4
bwdif_cuda
دیاینترلیس کردن ویدیوی ورودی با استفاده از الگوریتم bwdif، اما پیادهسازیشده در CUDA تا بتواند به عنوان بخشی از یک خطلوله شتابیافته با GPU به همراه nvdec و/یا nvenc کار کند.
این فیلتر پارامترهای زیر را میپذیرد:
- mode
- حالت اینترلیس برای اتخاذ. یکی از مقادیر زیر را میپذیرد:
- 0, send_frame
- خروجی دادن یک فریم به ازای هر فریم.
- 1, send_field
- خروجی دادن یک فریم به ازای هر میدان.
مقدار پیشفرض "send_field" است.
- parity
- توازن میدان تصویر که برای ویدیوی اینترلیس ورودی فرض میشود. یکی از مقادیر زیر را میپذیرد:
- 0, tff
- فرض میشود میدان بالایی در ابتدا است.
- 1, bff
- فرض میشود میدان پایینی در ابتدا است.
- -1, auto
- فعالسازی تشخیص خودکار توازن میدان.
مقدار پیشفرض "auto" است. اگر حالت اینترلیس ناشناخته باشد یا رمزگشا این اطلاعات را صادر نکند، فرض میشود که میدان بالایی در ابتدا است.
- deint
- تعیین اینکه کدام فریمها دیاینترلیس شوند. یکی از مقادیر زیر را میپذیرد:
- 0, all
- دیاینترلیس کردن تمامی فریمها.
- 1, interlaced
- فقط دیاینترلیس کردن فریمهایی که به عنوان اینترلیس علامتگذاری شدهاند.
مقدار پیشفرض "all" است.
chromakey_cuda
حذف رنگ پسزمینه (color/chroma keying) در فضای رنگی YUV با شتابدهی CUDA.
این فیلتر مانند فیلتر کروماکی معمولی کار میکند اما روی فریمهای CUDA عمل مینماید. برای جزئیات و پارامترهای بیشتر به chromakey مراجعه کنید.
مثالها
- شفاف کردن
تمام
پیکسلهای
سبز در
ویدیوی
ورودی و
استفاده از
آن به عنوان
یک لایه روی
ویدیوی
دیگر:
./ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4 \ -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \ -init_hw_device cuda \ -filter_complex \ " \ [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \ [1:v]scale_cuda=format=yuv420p[base]; \ [base][overlay_video]overlay_cuda" \ -an -sn -c:v h264_nvenc -cq 20 output.mp4 - پردازش دو
منبع
نرمافزاری،
همراه با
بارگذاری
صریح
فریمها:
./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \ -f lavfi -i color=size=800x600:color=white,format=yuv420p \ -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \ -filter_complex \ " \ [0]hwupload[under]; \ [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \ [under][over]overlay_cuda" \ -c:v hevc_nvenc -cq 18 -preset slow output.mp4
colorspace_cuda
پیادهسازی شتابیافته با CUDA از فیلتر فضای رنگی (colorspace).
این فیلتر در مقایسه با فیلتر نرمافزاری colorspace به هیچ وجه از نظر قابلیت کامل نیست و در حال حاضر فقط از تبدیل محدوده رنگ بین محدوده jpeg/کامل و mpeg/محدود پشتیبانی میکند.
این فیلتر گزینههای زیر را میپذیرد:
- range
- تعیین
محدوده رنگ
خروجی.
مقادیر پذیرفتهشده عبارتند از:
overlay_cuda
قرار دادن یک ویدیو روی ویدیوی دیگر (overlay).
این نسخه CUDA از فیلتر overlay است. این فیلتر تنها فریمهای CUDA را میپذیرد. قالبهای پیکسلی ورودی زیربنایی باید مطابقت داشته باشند.
این فیلتر دو ورودی میگیرد و یک خروجی دارد. ورودی اول ویدیوی "اصلی" است که ورودی دوم روی آن قرار میگیرد.
این فیلتر پارامترهای زیر را میپذیرد:
- x
- y
- تنظیم
عبارات
برای
مختصات x و y
ویدیوی
قرار
دادهشده
روی ویدیوی
اصلی.
آنها میتوانند شامل پارامترهای زیر باشند:
- main_w, W
- main_h, H
- عرض و ارتفاع ورودی اصلی.
- overlay_w, w
- overlay_h, h
- عرض و ارتفاع ورودی لایه رویی (overlay).
- x
- y
- مقادیر محاسبهشده برای x و y. آنها برای هر فریم جدید ارزیابی میشوند.
- n
- شاخص ترتیبی فریم ورودی اصلی، شروع از 0.
- pos
- موقعیت آفست بایتی فریم ورودی اصلی در پرونده، در صورت نامشخص بودن NAN. منسوخشده، استفاده نکنید.
- t
- برچسب زمانی فریم ورودی اصلی، بیانشده به ثانیه، در صورت نامشخص بودن NAN.
مقدار پیشفرض برای هر دو عبارت "0" است.
- eval
- تنظیم زمان
ارزیابی
عبارات x و
y.
مقادیر زیر را میپذیرد:
مقدار پیشفرض frame است.
- eof_action
- به framesync مراجعه کنید.
- shortest
- به framesync مراجعه کنید.
- repeatlast
- به framesync مراجعه کنید.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
pad_cuda
افزودن حاشیه (padding) به استریم ویدیوی ورودی با استفاده از CUDA.
این فیلتر نسخه شتابیافته با CUDA از فیلتر pad است. این فیلتر همان گزینهها و عبارات را میپذیرد و همان قابلیت اصلی را ارائه میدهد. برای شرح دقیق گزینههای موجود، لطفاً مستندات فیلتر pad را ببینید.
مثالها
- افزودن یک
حاشیه سیاه
200 پیکسلی به
تمام جهات
فریم ویدیو:
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=iw+400:h=ih+400:x=200:y=200" -c:v h264_nvenc out.mp4
- افزودن
حاشیه به
ویدیوی
ورودی برای
رسیدن به
نسبت ابعاد
16:9، پر شده با
رنگ "blue":
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=ih*16/9/sar:h=ih:x=(ow-iw)/2:y=(oh-ih)/2:color=blue" -c:v h264_nvenc out.mp4
scale_cuda
مقیاسبندی (تغییر اندازه) و تبدیل (قالب پیکسلی) ویدیوی ورودی با استفاده از هستههای شتابیافته CUDA. تنظیم عرض و ارتفاع خروجی به همان شیوه فیلتر scale کار میکند.
این فیلتر گزینههای زیر را میپذیرد:
- w
- h
- تنظیم
عبارت
ابعاد
ویدیوی
خروجی.
مقدار
پیشفرض
ابعاد
ورودی است.
عبارات یکسانی مانند فیلتر scale را مجاز میداند.
- interp_algo
- تنظیم الگوریتم مورد استفاده برای مقیاسبندی:
- format
- قالب
پیکسلی
خروجی را
کنترل
میکند. به
طور
پیشفرض،
یا در صورت
عدم تعیین،
از قالب
پیکسلی
ورودی
استفاده
میشود.
این فیلتر از تبدیل بین قالبهای پیکسلی YUV و RGB پشتیبانی نمیکند.
- passthrough
- اگر روی 0
تنظیم شود،
هر فریم حتی
اگر هیچ
تبدیلی
لازم نباشد
پردازش
میشود. این
حالت
میتواند
برای
استفاده از
فیلتر به
عنوان بافر
برای یک
مصرفکننده
فریم
پایینی که
مخزن فریم
محدود
رمزگشا را
تخلیه
میکند،
مفید باشد.
اگر روی 1 تنظیم شود، در صورتی که فریمها با پارامترهای خروجی مورد نظر مطابقت داشته باشند بدون تغییر عبور داده میشوند. این رفتار پیشفرض است.
- use_filters
- اگر روی 1 تنظیم شود، به جای استفاده از هستههای سایهزن تابعثابت، با یک جدول مراجعه (LUT) وزن سراسری فیلتر میکند. بسته به سختافزار ممکن است سریعتر یا کندتر باشد. مقدار "auto" (پیشفرض) این ویژگی را در صورت لزوم برای ضدپلگی (anti-aliasing) صحیح هنگام کاهش مقیاس به طور خودکار فعال میکند.
- param
- پارامتر
خاص
الگوریتم.
بر منحنیهای الگوریتم bicubic تأثیر میگذارد.
- force_original_aspect_ratio
- force_divisible_by
- مشابه گزینههای همنام در فیلتر scale کار میکنند.
- reset_sar
- مشابه گزینه همنام در فیلتر scale کار میکند.
مثالها
- مقیاسبندی
ورودی به 720p
با حفظ نسبت
ابعاد و
اطمینان از
اینکه
خروجی yuv420p است:
scale_cuda=-2:720:format=yuv420p
- افزایش
مقیاس به 4K
با استفاده
از
الگوریتم
نزدیکترین
همسایه:
scale_cuda=4096:2160:interp_algo=nearest
- هیچ تبدیل
یا
مقیاسبندی
انجام
ندهد، اما
تمام
فریمهای
ورودی را در
فریمهای
تازه
تخصیصیافته
کپی کند.
این
میتواند
برای
مدیریت یک
زنجیره
فیلتر و
کدگذاری که
در غیر این
صورت مخزن
فریمهای
رمزگشاها
را تخلیه
میکند
مفید باشد:
scale_cuda=passthrough=0
thumbnail_cuda
انتخاب نمایندهترین فریم در یک دنباله مشخص از فریمهای متوالی با استفاده از CUDA.
این فیلتر گزینههای زیر را میپذیرد:
- n
- تنظیم اندازه دسته فریمها برای تحلیل؛ در مجموعهای از n فریم، فیلتر یکی از آنها را انتخاب کرده و سپس دسته بعدی از n فریم را تا پایان پردازش میکند. پیشفرض 100 است.
از آنجا که فیلتر رد کل دنباله فریمها را نگه میدارد، مقدار بزرگتر n منجر به مصرف حافظه بیشتر خواهد شد، بنابراین مقدار بالا توصیه نمیشود.
مثال
- •
- بندانگشتیها
از هر دسته
n=150 فریمی
استخراج
میشوند و
در هر دسته
یک فریم
انتخاب
میشود.
فریمهای
انتخابشده
سپس با scale_cuda
مقیاسبندی
میشوند:
./ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i ./input.mp4 -vf "thumbnail_cuda=150,scale_cuda=1920:1080,hwdownload,format=nv12" ./output/out%03d.png
transpose_cuda
جابجایی سطرها با ستونها در ویدیوی ورودی و برگرداندن (flip) اختیاری آن. برای مثالهای دقیقتر فیلتر ویدیویی transpose را ببینید که عمدتاً گزینههای یکسانی دارد.
این فیلتر پارامترهای زیر را میپذیرد:
- dir
- تعیین جهت
ترانهش (transposition).
میتواند مقادیر زیر را به خود بگیرد:
- cclock_flip
- چرخش ۹۰ درجه خلاف جهت عقربههای ساعت و برگرداندن عمودی. (پیشفرض)
- clock
- چرخش ۹۰ درجه در جهت عقربههای ساعت.
- cclock
- چرخش ۹۰ درجه خلاف جهت عقربههای ساعت.
- clock_flip
- چرخش ۹۰ درجه در جهت عقربههای ساعت و برگرداندن عمودی.
- reversal
- چرخش ۱۸۰ درجه.
- hflip
- برگرداندن افقی.
- vflip
- برگرداندن عمودی.
- passthrough
- در صورتی که هندسه ورودی با هندسه مشخصشده توسط مقدار تعیینشده مطابقت داشته باشد، ترانهش اعمال نشود. مقادیر زیر را میپذیرد:
yadif_cuda
دیاینترلیس کردن ویدیوی ورودی با استفاده از الگوریتم yadif، اما پیادهسازیشده در CUDA تا بتواند به عنوان بخشی از یک خطلوله شتابیافته با GPU به همراه nvdec و/یا nvenc کار کند.
این فیلتر پارامترهای زیر را میپذیرد:
- mode
- حالت اینترلیس برای اتخاذ. یکی از مقادیر زیر را میپذیرد:
- 0, send_frame
- خروجی دادن یک فریم به ازای هر فریم.
- 1, send_field
- خروجی دادن یک فریم به ازای هر میدان.
- 2, send_frame_nospatial
- مشابه "send_frame"، اما بررسی اینترلیس مکانی را نادیده میگیرد.
- 3, send_field_nospatial
- مشابه "send_field"، اما بررسی اینترلیس مکانی را نادیده میگیرد.
مقدار پیشفرض "send_frame" است.
- parity
- توازن میدان تصویر که برای ویدیوی اینترلیس ورودی فرض میشود. یکی از مقادیر زیر را میپذیرد:
- 0, tff
- فرض میشود میدان بالایی در ابتدا است.
- 1, bff
- فرض میشود میدان پایینی در ابتدا است.
- -1, auto
- فعالسازی تشخیص خودکار توازن میدان.
مقدار پیشفرض "auto" است. اگر حالت اینترلیس ناشناخته باشد یا رمزگشا این اطلاعات را صادر نکند، فرض میشود که میدان بالایی در ابتدا است.
- deint
- تعیین اینکه کدام فریمها دیاینترلیس شوند. یکی از مقادیر زیر را میپذیرد:
- 0, all
- دیاینترلیس کردن تمام فریمها.
- 1, interlaced
- فقط دیاینترلیس کردن فریمهایی که به عنوان اینترلیس علامتگذاری شدهاند.
مقدار پیشفرض "all" است.
فیلترهای ویدیویی OPENCL (OPENCL VIDEO FILTERS)
در ادامه شرحی از فیلترهای ویدیویی OpenCL موجود ارائه شده است.
برای فعالسازی کامپایل این فیلترها باید FFmpeg را با "--enable-opencl" پیکربندی کنید.
اجرای فیلترهای OpenCL نیازمند آن است که یک دستگاه سختافزاری را مقداردهی اولیه کرده و آن دستگاه را به تمام فیلترها در هر گراف فیلتری ارسال کنید.
- -init_hw_device opencl[=name][:device[,key=value...]]
- مقداردهی اولیه یک دستگاه سختافزاری جدید از نوع opencl به نام name، با استفاده از پارامترهای دستگاه دادهشده.
- -filter_hw_device name
- ارسال دستگاه سختافزاری با نام name به تمامی فیلترها در هر گراف فیلتر.
برای کسب اطلاعات دقیقتر به https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options مراجعه کنید
- •
- مثال از
انتخاب
دستگاه اول
روی پلتفرم
دوم و اجرای
فیلتر avgblur_opencl با
پارامترهای
پیشفرض
روی آن:
-init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
از آنجا که فیلترهای OpenCL قادر به دسترسی به دادههای فریم در حافظه عادی نیستند، تمام دادههای فریم باید پیش از استفاده در سطوح سختافزاری متصل به دستگاه مناسب بارگذاری شوند (hwupload) و سپس به حافظه عادی بازگردانده شوند (hwdownload). توجه داشته باشید که hwupload روی سطحی با همان طرحبندی فریم نرمافزاری بارگذاری میکند، بنابراین ممکن است لازم باشد بلافاصله پیش از آن یک فیلتر format اضافه کنید تا ورودی به قالب درستی تبدیل شود و hwdownload از همه قالبها در خروجی پشتیبانی نمیکند - ممکن است لازم باشد یک فیلتر format اضافی بلافاصله پس از آن در گراف درج شود تا خروجی در یک قالب پشتیبانیشده به دست آید.
avgblur_opencl
اعمال فیلتر تاری میانگین (average blur).
این فیلتر گزینههای زیر را میپذیرد:
- sizeX
- تنظیم اندازه شعاع افقی. بازه "[1, 1024]" و مقدار پیشفرض 1 است.
- planes
- تنظیم صفحههایی که باید فیلتر شوند. مقدار پیشفرض 0xf است که با آن همه صفحهها پردازش میشوند.
- sizeY
- تنظیم اندازه شعاع عمودی. بازه "[1, 1024]" و مقدار پیشفرض 0 است. اگر صفر باشد، مقدار "sizeX" استفاده خواهد شد.
مثال
- •
- اعمال
فیلتر تاری
میانگین با
اندازه
افقی و
عمودی 3، که
هر پیکسل
خروجی را
روی مقدار
میانگین
ناحیه 7x7
متمرکز بر
آن در ورودی
تنظیم
میکند.
برای
پیکسلهای
روی
لبههای
تصویر، این
ناحیه
فراتر از
مرزهای
تصویر
گسترش
نمییابد،
و بنابراین
از مختصات
خارج از
محدوده در
محاسبات
استفاده
نمیشود:
-i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
boxblur_opencl
الگوریتم تاری جعبهای (boxblur) را روی ویدیوی ورودی اعمال میکند.
این فیلتر پارامترهای زیر را میپذیرد:
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
- عبارتی را
برای شعاع
جعبه بر حسب
پیکسل
تعیین
میکند که
برای محو
کردن صفحه
ورودی
مربوطه
استفاده
میشود.
مقدار شعاع باید یک عدد غیرمنفی باشد، و نباید بزرگتر از مقدار عبارت "min(w,h)/2" برای صفحههای روشنایی (luma) و آلفا (alpha)، و عبارت "min(cw,ch)/2" برای صفحههای رنگی (chroma) باشد.
مقدار پیشفرض برای luma_radius برابر "2" است. در صورت عدم تعیین، مقدار chroma_radius و alpha_radius به صورت پیشفرض برابر با مقدار تعیینشده برای luma_radius خواهد بود.
عبارات میتوانند حاوی ثابتهای زیر باشند:
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
- مشخص
میکند که
فیلتر boxblur چند
بار بر روی
صفحه
مربوطه
اعمال شود.
مقدار پیشفرض برای luma_power برابر 2 است. در صورت عدم تعیین، مقادیر chroma_power و alpha_power به طور پیشفرض برابر با مقدار تعیینشده برای luma_power خواهد بود.
مقدار 0 این جلوه را غیرفعال میکند.
Examples
فیلتر boxblur را اعمال میکند و هر پیکسل خروجی را بر روی میانگین مقادیر شعاعهای جعبهای luma_radius، chroma_radius و alpha_radius به ترتیب برای هر صفحه تنظیم میکند. فیلتر به تعداد luma_power، chroma_power و alpha_power بار بر روی صفحه مربوطه اعمال خواهد شد. برای پیکسلهای روی لبههای تصویر، شعاع فراتر از مرزهای تصویر گسترش نمییابد، بنابراین مختصات خارج از محدوده در محاسبات استفاده نمیشوند.
- اعمال یک
فیلتر boxblur با
تنظیم شعاع
روشنایی (luma)،
کروما و
آلفا روی 2 و
توان
روشنایی،
کروما و
آلفا روی 3.
فیلتر 3 بار
با شعاع
جعبه 2 برای
تمام صفحات
تصویر اجرا
خواهد شد.
-i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
- اعمال یک
فیلتر boxblur با
تنظیم شعاع
روشنایی
روی 2، luma_power روی
1، chroma_radius روی 4، chroma_power
روی 5، alpha_radius روی 3
و alpha_power روی 7.
برای صفحه روشنایی (luma)، یک شعاع جعبه 2x2 یکبار اجرا خواهد شد.
برای صفحه کروما (chroma)، یک شعاع جعبه 4x4 پنج بار اجرا خواهد شد.
برای صفحه آلفا (alpha)، یک شعاع جعبه 3x3 هفت بار اجرا خواهد شد.
-i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
colorkey_opencl
کلیدگذاری رنگی (color keying) در فضای رنگی RGB.
این فیلتر گزینههای زیر را میپذیرد:
- color
- رنگی که با شفافیت جایگزین خواهد شد.
- similarity
- درصد شباهت
با رنگ
کلید.
مقدار 0.01 فقط دقیقاً با رنگ کلید مطابقت دارد، در حالی که 1.0 با همه چیز مطابقت دارد.
- blend
- درصد
آمیختگی (blend).
مقدار 0.0 پیکسلها را یا کاملاً شفاف میکند، یا اصلاً شفاف نمیکند.
مقادیر بالاتر منجر به پیکسلهای نیمهشفاف میشوند، و هرچه رنگ پیکسلها به رنگ کلید شبیهتر باشد، شفافیت بیشتری خواهند داشت.
Examples
- •
- شفاف کردن
هر پیکسل
مایل به سبز
در ورودی با
مقداری
آمیختگی
اندک:
-i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
convolution_opencl
اعمال کانولوشن با ماتریس 3x3، 5x5 یا 7x7.
این فیلتر گزینههای زیر را میپذیرد:
- 0m
- 1m
- 2m
- 3m
- تنظیم ماتریس برای هر صفحه. ماتریس دنبالهای از 9، 25 یا 49 عدد علامتدار است. مقدار پیشفرض برای هر صفحه "0 0 0 0 1 0 0 0 0" است.
- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
- تنظیم ضریب برای مقدار محاسبهشده در هر صفحه. در صورت عدم تنظیم یا مقدار 0، برابر مجموع تمام عناصر ماتریس خواهد بود. مقدار گزینه باید یک عدد اعشاری بزرگتر یا مساوی 0.0 باشد. مقدار پیشفرض 1.0 است.
- 0bias
- 1bias
- 2bias
- 3bias
- تنظیم بایاس (bias) برای هر صفحه. این مقدار به حاصل ضرب اضافه میشود. برای روشنتر یا تاریکتر کردن تصویر کلی مفید است. مقدار گزینه باید یک عدد اعشاری بزرگتر یا مساوی 0.0 باشد. مقدار پیشفرض 0.0 است.
Examples
- اعمال شارپ
کردن (تیز
کردن
تصویر):
-i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
- اعمال تاری
(blur):
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
- اعمال
برجستهسازی
لبهها (edge enhance):
-i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
- اعمال
تشخیص لبه (edge
detect):
-i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
- اعمال
آشکارساز
لبه
لاپلاسی
شامل قطرها:
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
- اعمال
نقشبرجسته
(emboss):
-i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
erosion_opencl
اعمال جلوه فرسایش (erosion) روی ویدیو.
این فیلتر هر پیکسل را با کمینه محلی (3x3) جایگزین میکند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold0
- threshold1
- threshold2
- threshold3
- محدود کردن حداکثر تغییر برای هر صفحه. محدوده "[0, 65535]" و مقدار پیشفرض 65535 است. اگر 0 باشد، صفحه بدون تغییر باقی خواهد ماند.
- coordinates
- پرچمی که
پیکسلهای
مورد ارجاع
را مشخص
میکند.
محدوده
"[0, 255]" و
مقدار
پیشفرض
255 است،
یعنی از
تمام هشت
پیکسل
استفاده
میشود.
پرچمها برای ناحیه مختصات محلی 3x3 متمرکز بر "x":
1 2 3 4 x 5 6 7 8
Example
- •
- اعمال
فیلتر
فرسایش با
threshold0 برابر 30، threshold1
برابر 40، threshold2
برابر 50 و coordinates
برابر 231، که
هر پیکسل
خروجی را بر
روی کمینه
محلی بین
پیکسلهای
1، 2، 3، 6، 7، 8 از
ناحیه 3x3
متمرکز بر
آن در ورودی
تنظیم
میکند. اگر
تفاوت بین
پیکسل
ورودی و
کمینه محلی
بیشتر از
آستانه
صفحه
مربوطه
باشد،
پیکسل
خروجی بر
روی مقدار
(پیکسل
ورودی
منهای
آستانه
صفحه
مربوطه)
تنظیم
خواهد شد.
-i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
deshake_opencl
فیلتر تثبیتکننده ویدیو (لرزشگیر) بر پایه نقاط مشخصه.
این فیلتر گزینههای زیر را میپذیرد:
- tripod
- با جلوگیری از هرگونه حرکت دوربین نسبت به فریم اصلی، یک سهپایه را شبیهسازی میکند. مقدار پیشفرض 0 است.
- debug
- نمایش یا
عدم نمایش
اطلاعات
اشکالزدایی
اضافی، چه
در خروجی
پردازششده
و چه در
کنسول.
توجه داشته باشید که برای مشاهده خروجی اشکالزدایی در کنسول، باید شناسه "-v verbose" را نیز به ffmpeg ارسال کنید.
مشاهده تطابق نقاط در ویدیوی خروجی فقط برای ورودی RGB پشتیبانی میشود.
مقدار پیشفرض 0 است.
- adaptive_crop
- انجام یا
عدم انجام
برش اندک در
لبهها جهت
کاهش مقدار
پیکسلهای
آینهایشده.
مقدار پیشفرض 1 است.
- refine_features
- اصلاح یا
عدم اصلاح
نقاط مشخصه
در سطح
زیرپیکسل
(sub-pixel).
این گزینه را میتوان برای بهبود جزئی عملکرد به قیمت کاهش دقت خاموش کرد.
مقدار پیشفرض 1 است.
- smooth_strength
- قدرت
هموارسازی
اعمالشده
به مسیر
دوربین از
0.0 تا 1.0.
مقدار 1.0 حداکثر قدرت هموارسازی است در حالی که مقادیر کمتر از آن منجر به هموارسازی کمتری میشوند.
مقدار 0.0 باعث میشود که فیلتر به صورت تطبیقی قدرت هموارسازی را بر مبنای هر فریم انتخاب کند.
مقدار پیشفرض 0.0 است.
- smooth_window_multiplier
- کنترل
اندازه
پنجره
هموارسازی
(تعداد
فریمهای
بافرشده
برای تعیین
اطلاعات
حرکت).
اندازه پنجره هموارسازی با ضرب کردن نرخ فریم ویدیو در این عدد تعیین میشود.
مقادیر قابل قبول در محدوده 0.1 تا 10.0 قرار دارند.
مقادیر بزرگتر مقدار دادههای حرکتی در دسترس را برای تعیین نحوه هموارسازی مسیر دوربین افزایش میدهند و بهطور بالقوه نرمی حرکت را بهبود میبخشند، اما تأخیر و مصرف حافظه را نیز افزایش میدهند.
مقدار پیشفرض 2.0 است.
Examples
- تثبیت یک
ویدیو با
قدرت
هموارسازی
ثابت و
متوسط:
-i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
- تثبیت
ویدیو
همراه با
اشکالزدایی
(هم در
کنسول و هم
در ویدیوی
رندرشده):
-i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
dilation_opencl
اعمال جلوه اتساع (dilation) روی ویدیو.
این فیلتر هر پیکسل را با بیشینه محلی (3x3) جایگزین میکند.
این فیلتر گزینههای زیر را میپذیرد:
- threshold0
- threshold1
- threshold2
- threshold3
- محدود کردن حداکثر تغییر برای هر صفحه. محدوده "[0, 65535]" و مقدار پیشفرض 65535 است. اگر 0 باشد، صفحه بدون تغییر باقی خواهد ماند.
- coordinates
- پرچمی که
پیکسلهای
مورد ارجاع
را مشخص
میکند.
محدوده
"[0, 255]" و
مقدار
پیشفرض
255 است،
یعنی از
تمام هشت
پیکسل
استفاده
میشود.
پرچمها برای ناحیه مختصات محلی 3x3 متمرکز بر "x":
1 2 3 4 x 5 6 7 8
Example
- •
- اعمال
فیلتر
اتساع با threshold0
برابر 30، threshold1
برابر 40، threshold2
برابر 50 و coordinates
برابر 231، که
هر پیکسل
خروجی را بر
روی بیشینه
محلی بین
پیکسلهای
1، 2، 3، 6، 7، 8 از
ناحیه 3x3
متمرکز بر
آن در ورودی
تنظیم
میکند. اگر
تفاوت بین
پیکسل
ورودی و
بیشینه
محلی بیشتر
از آستانه
صفحه
مربوطه
باشد،
پیکسل
خروجی بر
روی مقدار
(پیکسل
ورودی به
علاوه
آستانه
صفحه
مربوطه)
تنظیم
خواهد شد.
-i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
nlmeans_opencl
فیلتر کاهش نویز میانگین غیرمحلی (Non-local Means) از طریق OpenCL؛ این فیلتر همان گزینههای فیلتر nlmeans را میپذیرد.
overlay_opencl
همپوشانی یک ویدیو بر روی ویدیوی دیگر.
این فیلتر دو ورودی میگیرد و یک خروجی دارد. ورودی اول ویدیوی «اصلی» است که ورودی دوم بر روی آن همپوشانی میشود. این فیلتر نیازمند چیدمان حافظه یکسان برای تمام ورودیها است. بنابراین ممکن است تبدیل قالب (فرمت) لازم باشد.
این فیلتر گزینههای زیر را میپذیرد:
- x
- تنظیم مختصات x ویدیوی روکششده بر روی ویدیوی اصلی. مقدار پیشفرض 0 است.
- y
- تنظیم مختصات y ویدیوی روکششده بر روی ویدیوی اصلی. مقدار پیشفرض 0 است.
Examples
- همپوشانی
یک تصویر LOGO
در گوشه
بالا-چپ
ویدیوی INPUT. هر
دو ورودی
دارای قالب
yuv420p هستند.
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
- ورودیها
چیدمان
حافظه
یکسانی
برای
کانالهای
رنگی
دارند،
لایه روکش
دارای صفحه
آلفای
اضافه است،
مانند
اینکه INPUT
دارای قالب
yuv420p باشد و LOGO
دارای قالب
yuva420p.
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
pad_opencl
افزودن حاشیه (padding) به تصویر ورودی و قرار دادن ورودی اصلی در مختصات ارائهشده x، y.
این فیلتر گزینههای زیر را میپذیرد:
- width, w
- height, h
- تعیین یک
عبارت برای
اندازه
تصویر
خروجی با
احتساب
حاشیههای
اضافهشده.
اگر مقدار
width یا height
برابر 0
باشد،
اندازه
ورودی
متناظر
برای خروجی
استفاده
میشود.
عبارت width میتواند به مقدار تنظیمشده توسط عبارت height ارجاع دهد و برعکس.
مقدار پیشفرض width و height برابر 0 است.
- x
- y
- تعیین
آفستها
برای قرار
دادن تصویر
ورودی در
ناحیه
حاشیهبندیشده
نسبت به مرز
بالا/چپ
تصویر
خروجی.
عبارت x میتواند به مقدار تنظیمشده توسط عبارت y ارجاع دهد و برعکس.
مقدار پیشفرض x و y برابر 0 است.
اگر x یا y به یک عدد منفی ارزیابی شوند، تغییر داده خواهند شد تا تصویر ورودی در مرکز ناحیه حاشیهبندیشده قرار گیرد.
- color
- تعیین رنگ ناحیه حاشیهبندیشده. برای ساختار نحوی این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید.
- aspect
- حاشیهبندی بر اساس یک نسبت تصویر به جای یک وضوح.
مقادیر گزینههای width، height، x و y عباراتی حاوی ثابتهای زیر هستند:
- in_w
- in_h
- عرض و ارتفاع ویدیوی ورودی.
- iw
- ih
- این موارد همانند in_w و in_h هستند.
- out_w
- out_h
- عرض و ارتفاع خروجی (اندازه ناحیه حاشیهبندیشده)، همانطور که توسط عبارات width و height تعیین شده است.
- ow
- oh
- این موارد همانند out_w و out_h هستند.
- x
- y
- آفستهای x و y همانطور که توسط عبارات x و y مشخص شدهاند، یا در صورت عدم تعیین NAN.
- a
- همانند iw / ih
- sar
- نسبت تصویر نمونه (SAR) ورودی
- dar
- نسبت تصویر نمایش (DAR) ورودی، همانند (iw / ih) * sar
prewitt_opencl
عملگر پرویت (https://en.wikipedia.org/wiki/Prewitt_operator) را روی استریم ویدیوی ورودی اعمال میکند.
این فیلتر گزینههای زیر را میپذیرد:
- planes
- تعیین صفحاتی که باید فیلتر شوند. مقدار پیشفرض 0xf است که به وسیله آن تمام صفحات پردازش میشوند.
- scale
- تنظیم مقداری که در نتیجه فیلتر ضرب خواهد شد. محدوده "[0.0, 65535]" و مقدار پیشفرض 1.0 است.
- delta
- تنظیم مقداری که به نتیجه فیلتر اضافه خواهد شد. محدوده "[-65535, 65535]" و مقدار پیشفرض 0.0 است.
Example
- •
- اعمال
عملگر
پرویت با scale
تنظیمشده
روی 2 و delta روی 10.
-i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
program_opencl
فیلتر کردن ویدیو با استفاده از یک برنامه OpenCL.
- source
- پرونده سورس برنامه OpenCL.
- kernel
- نام کرنل در برنامه.
- inputs
- تعداد ورودیهای فیلتر. پیشفرض 1 است.
- size, s
- اندازه فریمهای خروجی. پیشفرض همانند ورودی اول است.
فیلتر "program_opencl" همچنین از گزینههای framesync پشتیبانی میکند.
پرونده سورس برنامه باید شامل یک تابع کرنل با نام مشخصشده باشد که برای هر صفحه خروجی یکبار اجرا خواهد شد. هر اجرا بر روی یک صفحه به عنوان یک NDRange دوبعدی سراسری مجزا با یک work-item برای هر پیکسلی که باید تولید شود در صف قرار میگیرد. بنابراین آفست شناسه سراسری (global ID) برای هر work-item، مختصات یک پیکسل در تصویر مقصد است.
تابع کرنل باید آرگومانهای زیر را دریافت کند:
- تصویر
مقصد، __write_only image2d_t.
این تصویر خروجی خواهد شد؛ کرنل باید کل آن را بنویسد.
- شاخص فریم،
unsigned int.
این یک شمارنده است که از صفر شروع میشود و برای هر فریم یکی افزایش مییابد.
- تصاویر
مبدأ، __read_only image2d_t.
اینها جدیدترین تصاویر در هر ورودی هستند. کرنل میتواند برای تولید خروجی از آنها بخواند، اما نمیتواند در آنها بنویسد.
برنامههای نمونه:
- کپی کردن
ورودی در
خروجی
(خروجی باید
هماندازه
ورودی
باشد).
__kernel void copy(__write_only image2d_t destination, unsigned int index, __read_only image2d_t source) { const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE; int2 location = (int2)(get_global_id(0), get_global_id(1)); float4 value = read_imagef(source, sampler, location); write_imagef(destination, location, value); } - اعمال یک
تبدیل
ساده،
چرخاندن
ورودی به
میزانی که
با شمارنده
شاخص
افزایش
مییابد.
مقادیر
پیکسلها
توسط
نمونهبردار
به صورت خطی
درونیابی
میشوند، و
خروجی
نیازی
ندارد که
ابعادی
یکسان با
ورودی
داشته باشد.
__kernel void rotate_image(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float angle = (float)index / 100.0f; float2 dst_dim = convert_float2(get_image_dim(dst)); float2 src_dim = convert_float2(get_image_dim(src)); float2 dst_cen = dst_dim / 2.0f; float2 src_cen = src_dim / 2.0f; int2 dst_loc = (int2)(get_global_id(0), get_global_id(1)); float2 dst_pos = convert_float2(dst_loc) - dst_cen; float2 src_pos = { cos(angle) * dst_pos.x - sin(angle) * dst_pos.y, sin(angle) * dst_pos.x + cos(angle) * dst_pos.y }; src_pos = src_pos * src_dim / dst_dim; float2 src_loc = src_pos + src_cen; if (src_loc.x < 0.0f || src_loc.y < 0.0f || src_loc.x > src_dim.x || src_loc.y > src_dim.y) write_imagef(dst, dst_loc, 0.5f); else write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc)); } - ترکیب کردن
دو ورودی با
یکدیگر، با
تغییر
میزان
استفاده از
هر ورودی
متناسب با
شمارنده
شاخص.
__kernel void blend_images(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src1, __read_only image2d_t src2) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f; int2 dst_loc = (int2)(get_global_id(0), get_global_id(1)); int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst); int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst); float4 val1 = read_imagef(src1, sampler, src1_loc); float4 val2 = read_imagef(src2, sampler, src2_loc); write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend)); }
remap_opencl
نگاشت مجدد پیکسلها با استفاده از استریم ویدیوی ورودی دوم: Xmap و سوم: Ymap.
پیکسل مقصد در موقعیت (X, Y) از موقعیت سورس (x, y) برداشته میشود که در آن x = Xmap(X, Y) و y = Ymap(X, Y) است. اگر مقادیر نگاشت خارج از محدوده باشند، مقدار صفر برای پیکسل در مقصد استفاده خواهد شد.
استریمهای ویدیویی ورودی Xmap و Ymap باید ابعاد یکسانی داشته باشند. استریم ویدیوی خروجی ابعاد استریمهای ویدیویی Xmap/Ymap را خواهد داشت. استریمهای ویدیویی ورودی Xmap و Ymap قالب پیکسلی اعشاری ۳۲ بیتی و تککاناله دارند.
roberts_opencl
اعمال عملگر متقاطع رابرتز (https://en.wikipedia.org/wiki/Roberts_cross) بر روی استریم ویدیوی ورودی.
این فیلتر گزینه زیر را میپذیرد:
- planes
- تعیین صفحاتی که باید فیلتر شوند. مقدار پیشفرض 0xf است که با آن تمام صفحات پردازش میشوند.
- scale
- تنظیم مقداری که در نتیجه فیلتر ضرب خواهد شد. محدوده "[0.0, 65535]" و مقدار پیشفرض 1.0 است.
- delta
- تنظیم مقداری که به نتیجه فیلتر اضافه خواهد شد. محدوده "[-65535, 65535]" و مقدار پیشفرض 0.0 است.
Example
- •
- اعمال
عملگر
متقاطع
رابرتز با scale
تنظیمشده
روی 2 و delta روی 10
-i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
sobel_opencl
اعمال عملگر سوبل (https://en.wikipedia.org/wiki/Sobel_operator) بر روی استریم ویدیوی ورودی.
این فیلتر گزینه زیر را میپذیرد:
- planes
- تعیین صفحاتی که باید فیلتر شوند. مقدار پیشفرض 0xf است که با آن تمام صفحات پردازش میشوند.
- scale
- تنظیم مقداری که در نتیجه فیلتر ضرب خواهد شد. محدوده "[0.0, 65535]" و مقدار پیشفرض 1.0 است.
- delta
- تنظیم مقداری که به نتیجه فیلتر اضافه خواهد شد. محدوده "[-65535, 65535]" و مقدار پیشفرض 0.0 است.
Example
- •
- اعمال
عملگر سوبل
با scale
تنظیمشده
روی 2 و delta روی 10
-i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
tonemap_opencl
انجام تبدیل HDR(PQ/HLG) به SDR همراه با نگاشت تن (tone-mapping).
این فیلتر پارامترهای زیر را میپذیرد:
- tonemap
- تعیین عملگر نگاشت تن مورد استفاده. همانند گزینه tonemap در فیلتر tonemap است.
- param
- تنظیم دقیق الگوریتم نگاشت تن. همانند گزینه param در فیلتر tonemap است.
- desat
- اعمال
اشباعزدایی
(desaturation) برای
هایلایتهایی
که از این
سطح
روشنایی
فراتر
میروند.
هرچه این
پارامتر
بالاتر
باشد،
اطلاعات
رنگی
بیشتری حفظ
خواهد شد.
این تنظیم
با تبدیل
(نرم و
یکنواخت) به
رنگ سفید،
از رنگهای
به شکل
غیرطبیعی
سوخته در
هایلایتهای
بسیار شدید
جلوگیری
میکند. این
کار باعث
میشود
تصاویر
طبیعیتر
به نظر
برسند، به
قیمت کاهش
اطلاعات
مربوط به
رنگهای
خارج از
محدوده.
مقدار پیشفرض 0.5 است، و الگوریتم در اینجا در حال حاضر کمی با نسخه CPU فیلتر tonemap متفاوت است. مقدار 0.0 این گزینه را غیرفعال میکند.
- threshold
- پارامترهای الگوریتم نگاشت تن برای هر صحنه به طور دقیق تنظیم میشوند. و از یک آستانه برای تشخیص تغییر صحنه استفاده میشود. اگر فاصله میانگین روشنایی فریم فعلی و میانگین متحرک فعلی از مقدار آستانه فراتر رود، میانگین و اوج روشنایی صحنه مجدداً محاسبه خواهد شد. مقدار پیشفرض 0.2 است.
- format
- تعیین قالب
پیکسلی
خروجی.
قالبهای پشتیبانیشده در حال حاضر عبارتند از:
- range, r
- تنظیم
محدوده رنگ
خروجی.
مقادیر ممکن عبارتند از:
پیشفرض همانند ورودی است.
- primaries, p
- تنظیم
مشخصههای
رنگهای
اولیه (primaries)
خروجی.
مقادیر ممکن عبارتند از:
پیشفرض همانند ورودی است.
- transfer, t
- تنظیم
مشخصههای
تابع
انتقال
خروجی.
مقادیر ممکن عبارتند از:
پیشفرض bt709 است.
- matrix, m
- تنظیم
ماتریس
فضای رنگی
خروجی.
مقادیر ممکن عبارتند از:
پیشفرض همانند ورودی است.
Example
- •
- تبدیل
ویدیوی HDR(PQ/HLG)
به قالب p010 با
ویژگی تابع
انتقال bt2020 با
استفاده از
عملگر خطی
(linear).
-i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
unsharp_opencl
تیز کردن (شارپ) یا محو کردن (بلور) ویدیوی ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- luma_msize_x, lx
- تنظیم اندازه افقی ماتریس روشنایی (luma). محدوده "[1, 23]" و مقدار پیشفرض 5 است.
- luma_msize_y, ly
- تنظیم اندازه عمودی ماتریس روشنایی (luma). محدوده "[1, 23]" و مقدار پیشفرض 5 است.
- luma_amount, la
- تنظیم قدرت
جلوه
روشنایی (luma).
محدوده
"[-10, 10]" و
مقدار
پیشفرض
1.0 است.
مقادیر منفی ویدیوی ورودی را محو میکنند، در حالی که مقادیر مثبت آن را تیز میکنند؛ مقدار صفر این جلوه را غیرفعال میکند.
- chroma_msize_x, cx
- تنظیم اندازه افقی ماتریس کروما (chroma). محدوده "[1, 23]" و مقدار پیشفرض 5 است.
- chroma_msize_y, cy
- تنظیم اندازه عمودی ماتریس کروما (chroma). محدوده "[1, 23]" و مقدار پیشفرض 5 است.
- chroma_amount, ca
- تنظیم قدرت
جلوه کروما
(chroma). محدوده
"[-10, 10]" و
مقدار
پیشفرض
0.0 است.
مقادیر منفی ویدیوی ورودی را محو میکنند، در حالی که مقادیر مثبت آن را تیز میکنند؛ مقدار صفر این جلوه را غیرفعال میکند.
تمام پارامترها اختیاری هستند و به صورت پیشفرض معادل رشته '5:5:1.0:5:5:0.0' میباشند.
Examples
- اعمال جلوه
تیز کردن
قوی
روشنایی:
-i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
- اعمال تاری
قوی برای هر
دو پارامتر
روشنایی و
کروما:
-i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
xfade_opencl
ایجاد انتقال تدریجی متقاطع (cross fade) میان دو ویدیو با جلوه گذار سفارشی با استفاده از OpenCL.
این فیلتر گزینههای زیر را میپذیرد:
- transition
- تنظیم یکی از جلوههای گذار ممکن.
- source
- پرونده سورس برنامه OpenCL برای گذار سفارشی.
- kernel
- تنظیم نام کرنل مورد استفاده برای گذار سفارشی از پرونده سورس برنامه.
- duration
- تنظیم مدتزمان گذار ویدیویی.
- offset
- تنظیم زمان شروع گذار نسبت به ویدیوی اول.
پرونده سورس برنامه باید شامل یک تابع کرنل با نام مشخصشده باشد که برای هر صفحه از خروجی یکبار اجرا خواهد شد. هر اجرا بر روی یک صفحه به عنوان یک NDRange دوبعدی سراسری مجزا با یک work-item برای هر پیکسلی که باید تولید شود در صف قرار میگیرد. بنابراین آفست شناسه سراسری برای هر work-item، مختصات یک پیکسل در تصویر مقصد است.
تابع کرنل باید آرگومانهای زیر را دریافت کند:
- تصویر
مقصد، __write_only image2d_t.
این تصویر خروجی خواهد شد؛ کرنل باید کل آن را بنویسد.
- تصویر سورس
اول، __read_only image2d_t.
تصویر سورس
دوم، __read_only image2d_t.
اینها جدیدترین تصاویر در هر ورودی هستند. کرنل میتواند برای تولید خروجی از آنها بخواند، اما نمیتواند در آنها بنویسد.
- میزان پیشرفت گذار، float. این مقدار همیشه بین 0 و 1 (شامل خود آنها) است.
برنامههای نمونه:
- •
- اعمال جلوه
گذار پرده
نقطهای (dots curtain):
__kernel void blend_images(__write_only image2d_t dst, __read_only image2d_t src1, __read_only image2d_t src2, float progress) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); int2 p = (int2)(get_global_id(0), get_global_id(1)); float2 rp = (float2)(get_global_id(0), get_global_id(1)); float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y); rp = rp / dim; float2 dots = (float2)(20.0, 20.0); float2 center = (float2)(0,0); float2 unused; float4 val1 = read_imagef(src1, sampler, p); float4 val2 = read_imagef(src2, sampler, p); bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center)); write_imagef(dst, p, next ? val1 : val2); }
فیلترهای ویدیویی VAAPI (VAAPI VIDEO FILTERS)
فیلترهای ویدیویی VAAPI معمولاً همراه با دیکودر VAAPI و اینکودر VAAPI استفاده میشوند. در ادامه شرح فیلترهای ویدیویی VAAPI آمده است.
برای فعالسازی کامپایل این فیلترها باید FFmpeg را با شناسه "--enable-vaapi" پیکربندی کنید.
برای استفاده از فیلترهای vaapi، باید دستگاه vaapi را به درستی راهاندازی کنید. برای اطلاعات بیشتر، لطفاً https://trac.ffmpeg.org/wiki/Hardware/VAAPI را مطالعه فرمایید.
overlay_vaapi
همپوشانی یک ویدیو بر روی ویدیوی دیگر.
این فیلتر دو ورودی میگیرد و یک خروجی دارد. ورودی اول ویدیوی «اصلی» است که ورودی دوم بر روی آن همپوشانی میشود.
این فیلتر گزینههای زیر را میپذیرد:
- x
- y
- تنظیم
عبارات
برای
مختصات x و y
ویدیوی
روکششده
بر روی
ویدیوی
اصلی.
مقدار پیشفرض برای هر دو عبارت "0" است.
- w
- h
- تنظیم
عبارات
برای عرض و
ارتفاع
ویدیوی
روکششده
بر روی
ویدیوی
اصلی.
مقادیر پیشفرض برابر 'overlay_iw' برای 'w' و 'overlay_ih*w/overlay_iw' برای 'h' هستند.
این عبارات میتوانند شامل پارامترهای زیر باشند:
- main_w, W
- main_h, H
- عرض و ارتفاع ورودی اصلی.
- overlay_iw
- overlay_ih
- عرض و ارتفاع ورودی لایه روکش (overlay).
- overlay_w, w
- overlay_h, h
- عرض و ارتفاع خروجی لایه روکش (overlay).
- overlay_x, x
- overlay_y, y
- موقعیت لایه روکش در داخل ورودی اصلی
- alpha
- تنظیم شفافیت ویدیوی روکششده. محدوده مجاز 0.0 تا 1.0 است. مقدار بالاتر به معنای شفافیت کمتر است. مقدار پیشفرض 1.0 است.
- eof_action
- به framesync مراجعه کنید.
- shortest
- به framesync مراجعه کنید.
- repeatlast
- به framesync مراجعه کنید.
این فیلتر همچنین از گزینههای framesync پشتیبانی میکند.
Examples
- همپوشانی
یک تصویر LOGO
در گوشه
بالا-چپ
ویدیوی INPUT. هر
دو ورودی
برای این
فیلتر با
قالب yuv420p
هستند.
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
- همپوشانی
یک تصویر LOGO
در آفست (200, 100)
از گوشه
بالا-چپ
ویدیوی INPUT.
ورودیها
چیدمان
حافظه
یکسانی
برای
کانالهای
رنگی
دارند،
لایه روکش
دارای صفحه
آلفای
اضافه است،
مانند
اینکه INPUT
دارای قالب
yuv420p و LOGO دارای
قالب yuva420p
باشد.
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
tonemap_vaapi
انجام نگاشت تن (tone-mapping) از نوع HDR به SDR یا HDR به HDR. این فیلتر در حال حاضر تنها HDR10 را به عنوان ورودی میپذیرد.
این فیلتر پارامترهای زیر را میپذیرد:
- format
- تعیین قالب
پیکسلی
خروجی.
پیشفرض nv12 برای نگاشت تن HDR به SDR و p010 برای نگاشت تن HDR به HDR است.
- primaries, p
- تنظیم
مشخصههای
رنگهای
اولیه
خروجی.
پیشفرض bt709 برای نگاشت تن HDR به SDR و همانند ورودی برای نگاشت تن HDR به HDR است.
- transfer, t
- تنظیم
مشخصههای
تابع
انتقال
خروجی.
پیشفرض bt709 برای نگاشت تن HDR به SDR و همانند ورودی برای نگاشت تن HDR به HDR است.
- matrix, m
- تنظیم
ماتریس
فضای رنگی
خروجی.
پیشفرض bt709 برای نگاشت تن HDR به SDR و همانند ورودی برای نگاشت تن HDR به HDR است.
- display
- تنظیم حجم
رنگ
نمایشگر
مرجع
مسترینگ در
خروجی. این
گزینه به
صورت
فهرستی
جداشده با '|'
از دو مقدار
داده
میشود و دو
مقدار با
فاصله از
یکدیگر
تفکیک
شدهاند.
این گزینه
مشخصههای
اولیه
نمایشگر x و y
را به ترتیب
G، B، R، سپس
نقطه سفید x
و y و درخشش
اسمی حداقل
و حداکثر
نمایشگر را
تنظیم
میکند.
در صورت تنظیم این گزینه، نگاشت تن HDR به HDR انجام خواهد شد.
- light
- تنظیم
اطلاعات
سطح نور
محتوا در
خروجی. این
گزینه ۲
مقدار
جداشده با
فاصله را
میپذیرد،
ورودی اول
حداکثر سطح
نور و ورودی
دوم حداکثر
سطح نور
میانگین
است.
این گزینه برای نگاشت تن HDR به SDR نادیده گرفته میشود و برای نگاشت تن HDR به HDR اختیاری است.
Example
- تبدیل
ویدیوی HDR(HDR10)
به قالب p010 با
ویژگی
انتقال bt2020
tonemap_vaapi=format=p010:t=bt2020-10
- تبدیل
ویدیوی HDR به
ویدیوی HDR
tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
hstack_vaapi
چیدمان افقی ویدیوهای ورودی در کنار یکدیگر.
این گونهٔ تحت VA-API از فیلتر hstack است؛ هر استریم ورودی ممکن است ارتفاع متفاوتی داشته باشد، این فیلتر هر استریم ورودی را ضمن حفظ نسبت تصویر اصلی، به سمت بالا/پایین مقیاسبندی خواهد کرد.
این فیلتر گزینههای زیر را میپذیرد:
vstack_vaapi
چیدمان عمودی ویدیوهای ورودی روی یکدیگر.
این گونهٔ تحت VA-API از فیلتر vstack است؛ هر استریم ورودی ممکن است عرض متفاوتی داشته باشد، این فیلتر هر استریم ورودی را ضمن حفظ نسبت تصویر اصلی، به سمت بالا/پایین مقیاسبندی خواهد کرد.
این فیلتر گزینههای زیر را میپذیرد:
xstack_vaapi
چیدمان ورودیهای ویدیویی در یک قالب و ساختار سفارشی.
این گونهٔ تحت VA-API از فیلتر xstack است؛ هر استریم ورودی ممکن است اندازه متفاوتی داشته باشد، این فیلتر هر استریم ورودی را به اندازه خروجی دادهشده یا اندازه اولین استریم ورودی مقیاسبندی میکند.
این فیلتر گزینههای زیر را میپذیرد:
- inputs
- به xstack مراجعه کنید.
- shortest
- به xstack مراجعه کنید.
- layout
- به xstack
مراجعه
کنید. علاوه
بر این، به
کاربر
امکان
میدهد
اندازه
خروجی را
برای هر
استریم
ورودی مشخص
کند.
xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
- grid
- به xstack مراجعه کنید.
- grid_tile_size
- تنظیم اندازه خروجی برای هر استریم ورودی در هنگام تنظیم grid. اگر این گزینه تنظیم نشود، این فیلتر به صورت پیشفرض اندازه خروجی را برابر با اندازه نخستین استریم ورودی قرار میدهد. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- fill
- به xstack مراجعه کنید.
pad_vaapi
افزودن حاشیه (padding) به تصویر ورودی و قرار دادن ورودی اصلی در مختصات ارائهشده x، y.
این فیلتر گزینههای زیر را میپذیرد:
- width, w
- height, h
- تعیین یک
عبارت برای
اندازه
تصویر
خروجی با
احتساب
حاشیههای
اضافهشده.
اگر مقدار
width یا height
برابر 0
باشد،
اندازه
ورودی
متناظر
برای خروجی
استفاده
میشود.
عبارت width میتواند به مقدار تنظیمشده توسط عبارت height ارجاع دهد و برعکس.
مقدار پیشفرض width و height برابر 0 است.
- x
- y
- تعیین
آفستها
برای قرار
دادن تصویر
ورودی در
ناحیه
حاشیهبندیشده
نسبت به مرز
بالا/چپ
تصویر
خروجی.
عبارت x میتواند به مقدار تنظیمشده توسط عبارت y ارجاع دهد و برعکس.
مقدار پیشفرض x و y برابر 0 است.
اگر x یا y به یک عدد منفی ارزیابی شوند، تغییر داده خواهند شد تا تصویر ورودی در مرکز ناحیه حاشیهبندیشده قرار گیرد.
- color
- تعیین رنگ ناحیه حاشیهبندیشده. برای ساختار نحوی این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید.
- aspect
- حاشیهبندی بر اساس یک نسبت تصویر به جای یک وضوح.
مقادیر گزینههای width، height، x و y عباراتی حاوی ثابتهای زیر هستند:
- in_w
- in_h
- عرض و ارتفاع ویدیوی ورودی.
- iw
- ih
- این موارد همانند in_w و in_h هستند.
- out_w
- out_h
- عرض و ارتفاع خروجی (اندازه ناحیه حاشیهبندیشده)، همانطور که توسط عبارات width و height تعیین شده است.
- ow
- oh
- این موارد همانند out_w و out_h هستند.
- x
- y
- آفستهای x و y همانطور که توسط عبارات x و y مشخص شدهاند، یا در صورت عدم تعیین NAN.
- a
- همانند iw / ih
- sar
- نسبت تصویر نمونه (SAR) ورودی
- dar
- نسبت تصویر نمایش (DAR) ورودی، همانند (iw / ih) * sar
drawbox_vaapi
رسم یک جعبه رنگی روی تصویر ورودی.
این فیلتر پارامترهای زیر را میپذیرد:
- x
- y
- عباراتی که مختصات گوشه بالا-چپ جعبه را مشخص میکنند. مقدار پیشفرض آن 0 است.
- width, w
- height, h
- عباراتی که عرض و ارتفاع جعبه را مشخص میکنند؛ اگر 0 باشند به عنوان عرض و ارتفاع ورودی تفسیر میشوند. پیشفرض 0 است.
- color, c
- تعیین رنگ جعبهای که رسم میشود. برای ساختار نحوی عمومی این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید.
- thickness, t
- عبارتی که
ضخامت لبه
جعبه را
تعیین
میکند.
مقدار
"fill" یک
جعبه توپُر
ایجاد
خواهد کرد.
مقدار
پیشفرض
3 است.
فهرست ثابتهای پذیرفتهشده را در زیر مشاهده کنید.
- replace
- با مقدار 1، پیکسلهای جعبه رسمشده جایگزین پیکسلهای رنگ و آلفای ویدیو خواهند شد. پیشفرض 0 است که جعبه را روی ویدیوی ورودی ترکیب میکند.
پارامترهای x، y، w، h و t عباراتی حاوی ثابتهای زیر هستند:
- in_h, ih
- in_w, iw
- عرض و ارتفاع ورودی.
- x
- y
- مختصات آفست x و y که جعبه در آن رسم میشود.
- w
- h
- عرض و ارتفاع جعبه رسمشده.
- t
- ضخامت جعبه رسمشده.
Examples
- رسم یک جعبه
سیاه در
اطراف لبه
تصویر
ورودی:
drawbox
- رسم یک جعبه
با رنگ قرمز
و کدر بودن
(opacity) ۵۰٪:
drawbox=10:20:200:60:red@0.5
مثال قبلی را میتوان به این صورت نیز مشخص کرد:
drawbox=x=10:y=20:w=200:h=60:color=red@0.5
- پر کردن
جعبه با رنگ
صورتی:
drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
- رسم یک ماسک
۲ پیکسلی
قرمز با
نسبت تصویر
۲.۴۰:۱:
drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
فیلترهای ویدیویی VIDEOTOOLBOX (VIDEOTOOLBOX VIDEO FILTERS)
در ادامه شرح فیلترهای ویدیویی VideoToolbox که در حال حاضر در دسترس هستند آمده است.
فیلتر VideoToolbox به چارچوب VideoToolbox وابسته است و هنگام ساخت FFmpeg برای یک پلتفرم شرکت اپل مانند macOS به طور خودکار شناسایی میشود. در صورت غیرفعال بودن شناسایی خودکار، گزینه "--enable-videotoolbox" را به configure اضافه کنید.
scale_vt
مقیاسبندی و تبدیل پارامترهای رنگ با استفاده از VTPixelTransferSession.
این فیلتر گزینههای زیر را میپذیرد:
- w
- h
- تنظیم عبارت ابعاد ویدیوی خروجی. مقدار پیشفرض ابعاد ورودی است.
- color_matrix
- تنظیم ماتریس فضای رنگی خروجی.
- color_primaries
- تنظیم مشخصههای رنگهای اولیه خروجی.
- color_transfer
- تنظیم مشخصههای تابع انتقال خروجی.
Examples
- •
- انجام
تبدیل HDR به SDR،
و
مقیاسبندی
به نصف
اندازه
ورودی
ffmpeg -hwaccel videotoolbox \ -hwaccel_output_format videotoolbox_vld \ -i hdr.mov \ -c:v hevc_videotoolbox \ -profile:v main \ -b:v 3M \ -vf scale_vt=w=iw/2:h=ih/2:color_matrix=bt709:color_primaries=bt709:color_transfer=bt709 \ -c:a copy \ -tag:v hvc1 \ sdr.mp4
transpose_vt
ترانهادن سطرها و ستونها در ویدیوی ورودی و برگرداندن اختیاری آن (flip). برای مثالهای عمیقتر، فیلتر ویدیویی transpose را مشاهده کنید که عمدتاً گزینههای یکسانی دارد.
این فیلتر پارامترهای زیر را میپذیرد:
- dir
- تعیین جهت
ترانهش (transposition).
میتواند مقادیر زیر را به خود بگیرد:
- cclock_flip
- چرخش ۹۰ درجه در خلاف جهت عقربههای ساعت و برگرداندن عمودی (پیشفرض).
- clock
- چرخش ۹۰ درجه در جهت عقربههای ساعت.
- cclock
- چرخش ۹۰ درجه در خلاف جهت عقربههای ساعت.
- clock_flip
- چرخش ۹۰ درجه در جهت عقربههای ساعت و برگرداندن عمودی.
- hflip
- برگرداندن افقی ویدیوی ورودی.
- vflip
- برگرداندن عمودی ویدیوی ورودی.
- passthrough
- عدم اعمال ترانهش در صورتی که هندسه ورودی با مقدار مشخصشده مطابقت داشته باشد. این گزینه مقادیر زیر را میپذیرد:
فیلترهای ویدیویی VULKAN (VULKAN VIDEO FILTERS)
در ادامه شرح فیلترهای ویدیویی Vulkan که در حال حاضر در دسترس هستند آمده است.
برای فعالسازی کامپایل این فیلترها باید FFmpeg را با شناسه "--enable-vulkan" پیکربندی کنید، و یک کامپایلر SPIR-V ("glslc" یا "glslangValidator") را در زمان ساخت در دسترس داشته باشید.
اجرای فیلترهای Vulkan نیازمند راهاندازی اولیه یک دستگاه سختافزاری و ارسال آن دستگاه به تمامی فیلترها در هر گراف فیلتر است.
- -init_hw_device vulkan[=name][:device[,key=value...]]
- راهاندازی اولیه یک دستگاه سختافزاری جدید از نوع vulkan با نام name، با استفاده از پارامترهای دستگاه و گزینههای دادهشده در key=value. گزینههای زیر پشتیبانی میشوند:
- debug
- در صورت تنظیم روی 1، لایههای اعتبارسنجی را فعال میکند.
- linear_images
- تخصیص تصاویر خطی. برای دیکودینگ کاربرد ندارد.
- disable_multiplane
- غیرفعال کردن تصاویر چندصفحهای. برای دیکودینگ کاربرد ندارد.
- avoid_host_import
- اجتناب از واردسازیهای حافظه میزبان پویا، به نفع استفاده از یک memcpy() معمولی درون بافری که از قبل نگاشت شده است.
- -filter_hw_device name
- ارسال دستگاه سختافزاری با نام name به تمامی فیلترها در هر گراف فیلتر.
برای اطلاعات دقیقتر، https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options را مشاهده کنید.
- •
- نمونهای
از انتخاب
اولین
دستگاه و
اجرای
فیلتر nlmeans_vulkan با
پارامترهای
پیشفرض
روی آن:
-init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
از آنجا که فیلترهای Vulkan قادر به دسترسی به دادههای فریم در حافظه عادی نیستند، تمامی دادههای فریم باید پیش از استفاده به سطوح سختافزاری متصل به دستگاه مناسب بارگذاری شوند (hwupload) و سپس مجدداً به حافظه عادی دانلود شوند (hwdownload). توجه داشته باشید که hwupload دادهها را در فریمی با همان چیدمان فریم نرمافزاری بارگذاری میکند، بنابراین ممکن است لازم باشد بلافاصله قبل از آن یک فیلتر format اضافه کنید تا ورودی به قالب مناسب تبدیل شود؛ و hwdownload نیز از تمامی قالبها در خروجی پشتیبانی نمیکند - معمولاً لازم است بلافاصله پس از آن در گراف یک فیلتر format اضافی درج شود تا خروجی در یک قالب پشتیبانیشده به دست آید.
avgblur_vulkan
اعمال یک فیلتر محوکننده میانگین (average blur)، پیادهسازیشده بر روی GPU با استفاده از Vulkan.
این فیلتر گزینههای زیر را میپذیرد:
blend_vulkan
ترکیب و آمیختن دو فریم Vulkan در یکدیگر.
فیلتر "blend" دو استریم ورودی میگیرد و یک استریم خروجی میدهد؛ ورودی اول لایه «رویی» و ورودی دوم لایه «زیرین» است. به صورت پیشفرض، خروجی زمانی پایان مییابد که طولانیترین ورودی خاتمه یابد.
شرح گزینههای پذیرفتهشده در ادامه آمده است.
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
- تنظیم حالت
آمیختگی
برای یک
مؤلفه
پیکسلی خاص
یا تمام
مؤلفههای
پیکسلی در
صورت
استفاده از
all_mode. مقدار
پیشفرض
"normal" است.
مقادیر موجود برای حالتهای مؤلفه عبارتند از:
- normal
- multiply
bwdif_vulkan
فیلتر حذف درهمبافتگی (deinterlacer) با استفاده از bwdif، الگوریتم "Bob Weaver Deinterlacing Filter"، پیادهسازیشده روی GPU با استفاده از Vulkan.
این فیلتر پارامترهای زیر را میپذیرد:
- mode
- حالت درهمبافتگی اتخاذشده. یکی از مقادیر زیر را میپذیرد:
- 0, send_frame
- خروجی دادن یک فریم به ازای هر فریم.
- 1, send_field
- خروجی دادن یک فریم به ازای هر فیلد.
مقدار پیشفرض "send_field" است.
- parity
- برابری فیلد تصویر فرضشده برای ویدیوی درهمبافته ورودی. یکی از مقادیر زیر را میپذیرد:
- 0, tff
- فرض اینکه فیلد بالایی اول است (top field first).
- 1, bff
- فرض اینکه فیلد پایینی اول است (bottom field first).
- -1, auto
- فعالسازی تشخیص خودکار تقدم فیلد.
مقدار پیشفرض "auto" است. اگر درهمبافتگی ناشناخته باشد یا دیکودر این اطلاعات را صادر نکند، اولویت با فیلد بالایی فرض خواهد شد.
- deint
- تعیین فریمهایی که باید درهمبافتگیزدایی شوند. یکی از مقادیر زیر را میپذیرد:
- 0, all
- حذف درهمبافتگی از تمام فریمها.
- 1, interlaced
- تنها حذف درهمبافتگی از فریمهایی که به عنوان درهمبافته نشانهگذاری شدهاند.
مقدار پیشفرض "all" است.
chromaber_vulkan
اعمال جلوهای که ابیراهی رنگی (chromatic aberration) را شبیهسازی میکند. با ورودیهای RGB بهترین نتیجه را دارد، اما با ورودیهای YCbCr نیز جلوه مشابهی فراهم میکند.
color_vulkan
سورس ویدیویی که یک فریم Vulkan با رنگ یکدست ایجاد میکند. برای بنچمارک یا همپوشانی مفید است.
این فیلتر پارامترهای زیر را میپذیرد:
- color
- رنگ مورد استفاده. نام یا مقدار هگزادسیمال. مقدار پیشفرض "black" است.
- size
- اندازه فریم خروجی. مقدار پیشفرض "1920x1080" است.
- rate
- نرخ فریم خروجی. مقدار پیشفرض 60 فریم در ثانیه است.
- duration
- مدتزمان ویدیو. مقدار پیشفرض -0.000001 است.
- sar
- نسبت تصویر نمونه سیگنال ویدیویی. مقدار پیشفرض "1/1" است.
- format
- قالب پیکسلی فریمهای Vulkan خروجی. مقدار پیشفرض "yuv444p" است.
- out_range
- تنظیم
محدوده
نمونه YCbCr
خروجی.
این گزینه اجازه میدهد مقدار شناساییشده خودکار بازنویسی شود و همچنین امکان تحمیل یک مقدار خاص مورد استفاده برای خروجی و اینکودر را فراهم میکند. در صورت عدم تعیین، محدوده به قالب پیکسلی بستگی دارد. مقادیر ممکن:
- auto/unknown
- انتخاب خودکار.
- jpeg/full/pc
- تنظیم محدوده کامل (0-255 در صورت روشنایی ۸ بیتی).
- mpeg/limited/tv
- تنظیم محدوده "MPEG" (16-235 در صورت روشنایی ۸ بیتی).
vflip_vulkan
تصویر را به صورت عمودی برمیگرداند.
hflip_vulkan
تصویر را به صورت افقی برمیگرداند.
flip_vulkan
تصویر را در راستای هر دو محور عمودی و افقی برمیگرداند.
gblur_vulkan
اعمال فیلتر محوکننده گاوسی (Gaussian blur) بر روی فریمهای Vulkan.
این فیلتر گزینههای زیر را میپذیرد:
- sigma
- تنظیم سیگما افقی، انحراف معیار تاری گاوسی. پیشفرض 0.5 است.
- sigmaV
- تنظیم سیگما عمودی؛ اگر منفی باشد برابر "sigma" خواهد بود. پیشفرض -1 است.
- planes
- تعیین صفحاتی که باید فیلتر شوند. به طور پیشفرض تمام صفحات فیلتر میشوند.
- size
- تنظیم اندازه کرنل در راستای محور افقی. پیشفرض 19 است.
- sizeV
- تنظیم اندازه کرنل در راستای محور عمودی. پیشفرض 0 است که باعث استفاده از مقداری مشابه با size میشود.
nlmeans_vulkan
کاهش نویز فریمها با استفاده از الگوریتم میانگین غیرمحلی (Non-Local Means)، پیادهسازیشده بر روی GPU با استفاده از Vulkan. از قالبهای پیکسلی بیشتری نسبت به nlmeans یا nlmeans_opencl پشتیبانی میکند، از جمله پشتیبانی از کانال آلفا.
این فیلتر گزینههای زیر را میپذیرد:
- s
- تنظیم قدرت کاهش نویز برای تمامی مؤلفهها. پیشفرض 1.0 است. باید در محدوده [0.0, 100.0] باشد.
- p
- تنظیم اندازه وصله (patch size) برای تمام صفحات. پیشفرض 7 است. باید یک عدد فرد در محدوده [0, 99] باشد.
- r
- تنظیم اندازه جستجو (research size). پیشفرض 15 است. باید یک عدد فرد در محدوده [0, 99] باشد.
- t
- تنظیم موازیسازی (parallelism). پیشفرض 8 است. باید عددی در محدوده [1, 64] باشد. مقادیر بزرگتر حافظه ویدیویی (VRAM) بیشتری مصرف میکنند اما لزوماً منجر به سرعت بیشتر نمیشوند. مقدار بهینه به سختافزار و ورودی وابسته است.
- s0
- s1
- s2
- s3
- تنظیم قدرت کاهش نویز برای یک مؤلفه خاص. پیشفرض 1.0 و برابر با s است. باید در محدوده [0.0, 100.0] باشد. مقدار 0.0 کاهش نویز را در آن مؤلفه غیرفعال میکند.
- p0
- p1
- p2
- p3
- تنظیم اندازه وصله برای یک مؤلفه خاص. پیشفرض 7 و برابر با p است. باید یک عدد فرد در محدوده [0, 99] باشد.
overlay_vulkan
همپوشانی یک ویدیو بر روی ویدیوی دیگر.
دو ورودی میگیرد و یک خروجی دارد. ورودی اول ویدیوی «اصلی» است که ورودی دوم بر روی آن همپوشانی میشود. این فیلتر نیازمند این است که تمام ورودیها از قالب پیکسلی یکسانی استفاده کنند. بنابراین ممکن است تبدیل قالب لازم باشد.
این فیلتر گزینههای زیر را میپذیرد:
transpose_vulkan
ترانهادن سطرها و ستونها در ویدیوی ورودی و برگرداندن اختیاری آن (flip). برای مثالهای عمیقتر، فیلتر ویدیویی transpose را مشاهده کنید که عمدتاً گزینههای یکسانی دارد.
این فیلتر پارامترهای زیر را میپذیرد:
- dir
- تعیین جهت
ترانهش (transposition).
میتواند مقادیر زیر را به خود بگیرد:
- cclock_flip
- چرخش ۹۰ درجه در خلاف جهت عقربههای ساعت و برگرداندن عمودی (پیشفرض).
- clock
- چرخش ۹۰ درجه در جهت عقربههای ساعت.
- cclock
- چرخش ۹۰ درجه در خلاف جهت عقربههای ساعت.
- clock_flip
- چرخش ۹۰ درجه در جهت عقربههای ساعت و برگرداندن عمودی.
- passthrough
- عدم اعمال ترانهش در صورتی که هندسه ورودی با مقدار مشخصشده مطابقت داشته باشد. مقادیر زیر را میپذیرد:
فیلترهای ویدیویی QSV (QSV VIDEO FILTERS)
در ادامه شرح فیلترهای ویدیویی QSV که در حال حاضر در دسترس هستند آمده است.
برای فعالسازی کامپایل این فیلترها باید FFmpeg را با شناسه "--enable-libmfx" یا "--enable-libvpl" پیکربندی کنید.
برای استفاده از فیلترهای QSV، باید دستگاه QSV را به درستی راهاندازی کنید. برای اطلاعات بیشتر، لطفاً https://trac.ffmpeg.org/wiki/Hardware/QuickSync را مطالعه فرمایید.
hstack_qsv
چیدمان افقی ویدیوهای ورودی در کنار یکدیگر.
این گونهٔ تحت QSV از فیلتر hstack است؛ هر استریم ورودی ممکن است ارتفاع متفاوتی داشته باشد، این فیلتر هر استریم ورودی را ضمن حفظ نسبت تصویر اصلی، به سمت بالا/پایین مقیاسبندی خواهد کرد.
این فیلتر گزینههای زیر را میپذیرد:
vstack_qsv
چیدمان عمودی ویدیوهای ورودی روی یکدیگر.
این گونهٔ تحت QSV از فیلتر vstack است؛ هر استریم ورودی ممکن است عرض متفاوتی داشته باشد، این فیلتر هر استریم ورودی را ضمن حفظ نسبت تصویر اصلی، به سمت بالا/پایین مقیاسبندی خواهد کرد.
این فیلتر گزینههای زیر را میپذیرد:
xstack_qsv
چیدمان ورودیهای ویدیویی در یک قالب و ساختار سفارشی.
این گونهٔ تحت QSV از فیلتر xstack است.
این فیلتر گزینههای زیر را میپذیرد:
- inputs
- به xstack مراجعه کنید.
- shortest
- به xstack مراجعه کنید.
- layout
- به xstack
مراجعه
کنید. علاوه
بر این، به
کاربر
امکان
میدهد
اندازه
خروجی را
برای هر
استریم
ورودی مشخص
کند.
xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
- grid
- به xstack مراجعه کنید.
- grid_tile_size
- تنظیم اندازه خروجی برای هر استریم ورودی در هنگام تنظیم grid. اگر این گزینه تنظیم نشود، این فیلتر به صورت پیشفرض اندازه خروجی را برابر با اندازه نخستین استریم ورودی تنظیم خواهد کرد. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- fill
- به xstack مراجعه کنید.
سورسهای ویدیویی (VIDEO SOURCES)
در ادامه شرح سورسهای ویدیویی که در حال حاضر در دسترس هستند آمده است.
buffer
بافر کردن فریمهای ویدیو و در دسترس قرار دادن آنها برای زنجیره فیلتر.
این سورس عمدتاً برای استفاده برنامهنویسیشده در نظر گرفته شده است، به ویژه از طریق رابط تعریفشده در libavfilter/buffersrc.h.
این فیلتر پارامترهای زیر را میپذیرد:
- video_size
- تعیین اندازه (عرض و ارتفاع) فریمهای ویدیویی بافرشده. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- width
- عرض ویدیوی ورودی.
- height
- ارتفاع ویدیوی ورودی.
- pix_fmt
- رشتهای که نشاندهنده قالب پیکسلی فریمهای ویدیویی بافرشده است. میتواند عددی متناظر با یک قالب پیکسلی، یا نام یک قالب پیکسلی باشد.
- time_base
- تعیین پایه زمانی فرضشده برای برچسبهای زمانی فریمهای بافرشده.
- frame_rate
- تعیین نرخ فریم مورد انتظار برای استریم ویدیو.
- colorspace
- رشتهای که نشاندهنده فضای رنگی فریمهای ویدیویی بافرشده است. میتواند عددی متناظر با یک فضای رنگی، یا نام یک فضای رنگی باشد.
- range
- رشتهای که نشاندهنده محدوده رنگی فریمهای ویدیویی بافرشده است. میتواند عددی متناظر با یک محدوده رنگی، یا نام یک محدوده رنگی باشد.
- alpha_mode
- رشتهای که نشاندهنده حالت آلفای فریمهای ویدیویی بافرشده است. میتواند عددی متناظر با یک حالت آلفا، یا نام یک حالت آلفا باشد.
- pixel_aspect, sar
- نسبت تصویر نمونه (پیکسل) در ویدیوی ورودی.
- hw_frames_ctx
- هنگام استفاده از یک قالب پیکسلی سختافزاری، این گزینه باید ارجاعی به یک AVHWFramesContext باشد که فریمهای ورودی را توصیف میکند.
برای مثال:
buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
به سورس دستور میدهد فریمهای ویدیویی با اندازه 320x240 و قالب "yuv410p" را بپذیرد، با فرض 1/24 به عنوان پایه زمانی برچسبهای زمانی و پیکسلهای مربعی (نسبت تصویر نمونه 1:1). از آنجا که قالب پیکسلی با نام "yuv410p" متناظر با عدد 6 است (تعریف شمارشی AVPixelFormat در libavutil/pixfmt.h را بررسی کنید)، این مثال متناظر است با:
buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
به عنوان روشی جایگزین، گزینهها را میتوان به عنوان یک رشته مسطح مشخص کرد، اما این ساختار نحوی منسوخ شده است:
width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den
cellauto
ایجاد یک الگو که توسط یک خودکاره سلولی ابتدایی (cellular automaton) تولید میشود.
وضعیت اولیه خودکاره سلولی را میتوان از طریق گزینههای filename و pattern تعریف کرد. اگر چنین گزینههایی تعیین نشوند، وضعیت اولیه به صورت تصادفی ایجاد میشود.
در هر فریم جدید، یک سطر جدید در ویدیو با نتیجه نسل بعدی خودکاره سلولی پر میشود. رفتار فیلتر در هنگام پر شدن کامل فریم توسط گزینه scroll تعیین میگردد.
این سورس گزینههای زیر را میپذیرد:
- filename, f
- خواندن وضعیت اولیه خودکاره سلولی، یعنی سطر شروع، از پرونده مشخصشده. در پرونده، هر نویسه غیر از فاصله خالی (non-whitespace) به عنوان یک سلول زنده در نظر گرفته میشود، یک خط جدید سطر را خاتمه میدهد، و نویسههای بعدی در پرونده نادیده گرفته خواهند شد.
- pattern, p
- خواندن
وضعیت
اولیه
خودکاره
سلولی،
یعنی سطر
شروع، از
رشته
مشخصشده.
هر نویسه غیر از فاصله خالی در رشته به عنوان یک سلول زنده در نظر گرفته میشود، یک خط جدید سطر را خاتمه میدهد، و نویسههای بعدی در رشته نادیده گرفته خواهند شد.
- rate, r
- تنظیم نرخ ویدیو، یعنی تعداد فریمهای تولیدشده در هر ثانیه. پیشفرض 25 است.
- random_fill_ratio, ratio
- تنظیم نسبت
پر کردن
تصادفی
برای سطر
اولیه
خودکاره
سلولی. این
یک مقدار
عددی
اعشاری در
محدوده 0 تا 1
است و مقدار
پیشفرض آن
1/PHI میباشد.
این گزینه در صورت مشخص شدن یک پرونده یا یک الگو نادیده گرفته میشود.
- random_seed, seed
- تنظیم بذر تصادفی (seed) برای پر کردن تصادفی سطر اولیه؛ باید یک عدد صحیح بین 0 و UINT32_MAX باشد. در صورت عدم تعیین، یا در صورت تنظیم صریح روی -1، فیلتر سعی خواهد کرد بر پایه بهترین تلاش از یک بذر تصادفی مناسب استفاده کند.
- rule
- تنظیم قاعده خودکاره سلولی، که عددی در محدوده 0 تا 255 است. مقدار پیشفرض 110 است.
- size, s
- تنظیم
اندازه
ویدیوی
خروجی. برای
ساختار
نحوی این
گزینه، بخش
"Video size" در
راهنمای ffmpeg-utils
را بررسی
کنید.
اگر filename یا pattern مشخص شده باشد، اندازه به طور پیشفرض روی عرض سطر وضعیت اولیه مشخصشده تنظیم میشود، و ارتفاع روی width * PHI تنظیم خواهد شد.
اگر size تنظیم شود، باید حاوی عرض رشته الگوی مشخصشده باشد، و الگوی مشخصشده در مرکز سطر بزرگتر قرار خواهد گرفت.
اگر نام پرونده یا رشته الگو مشخص نشود، مقدار اندازه به طور پیشفرض "320x518" خواهد بود (که برای وضعیت اولیه تصادفی تولیدشده استفاده میشود).
- scroll
- اگر روی 1 تنظیم شود، هنگامی که تمام سطرهای خروجی پر شدند، خروجی را به سمت بالا پیمایش میکند. اگر روی 0 تنظیم شود، سطر جدید تولیدشده درست پس از پر شدن سطر انتهایی، روی سطر بالایی بازنویسی میشود. پیشفرض 1 است.
- start_full, full
- اگر روی 1 تنظیم شود، خروجی را قبل از ارسال فریم اول، به طور کامل با سطرهای تولیدشده پر میکند. این رفتار پیشفرض است؛ برای غیرفعال کردن مقدار را روی 0 تنظیم کنید.
- stitch
- اگر روی 1 تنظیم شود، لبههای چپ و راست سطر را به یکدیگر وصل میکند. این رفتار پیشفرض است؛ برای غیرفعال کردن مقدار را روی 0 تنظیم کنید.
Examples
- خواندن
وضعیت
اولیه از pattern
و تعیین
خروجی با
اندازه 200x400.
cellauto=f=pattern:s=200x400
- تولید یک
سطر اولیه
تصادفی با
عرض ۲۰۰
سلول، با
نسبت پر
کردن ۲/۳:
cellauto=ratio=2/3:s=200x200
- ایجاد یک
الگو که
توسط قاعده
18 با شروع از
یک سلول
زنده منفرد
متمرکز در
سطر اولیه
با عرض 100
تولید
میشود:
cellauto=p=@s=100x400:full=0:rule=18
- تعیین یک
الگوی
اولیه
پیچیدهتر:
cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
coreimagesrc
سورس ویدیویی تولیدشده بر روی GPU با استفاده از API بخش CoreImage شرکت اپل در OSX.
این سورس ویدیویی نسخه تخصصی فیلتر ویدیویی coreimage است. برای تولید محتوا، از یک تولیدکننده CoreImage در ابتدای زنجیره فیلترهای اعمالشده استفاده کنید.
سورس ویدیویی coreimagesrc گزینههای زیر را میپذیرد:
- list_generators
- فهرست کردن
تمام
مولدهای
موجود به
همراه
تمامی
گزینههای
مربوطه و
مقادیر
حداقل و
حداکثر
ممکن در
کنار
مقادیر
پیشفرض.
list_generators=true
- size, s
- تعیین اندازه ویدیوی تولیدشده. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "320x240" است.
- rate, r
- تعیین نرخ فریم ویدیوی تولیدشده، به عنوان تعداد فریمهای تولیدشده در ثانیه. باید رشتهای در قالب frame_rate_num/frame_rate_den، یک عدد صحیح، یک عدد اعشاری یا یک اختصار معتبر نرخ فریم ویدیو باشد. مقدار پیشفرض "25" است.
- sar
- تنظیم نسبت تصویر نمونه ویدیوی تولیدشده.
- duration, d
- تنظیم
مدتزمان
ویدیوی
تولیدشده.
بخش
مدتزمان (Time
duration) در
راهنمای
ffmpeg-utils(1) را برای
ساختار
نحوی
پذیرفتهشده
مشاهده
کنید.
اگر تعیین نشود، یا مدتزمان بیانشده منفی باشد، فرض میشود که ویدیو برای همیشه تولید خواهد شد.
علاوه بر این، تمامی گزینههای فیلتر ویدیویی coreimage پذیرفته میشوند. میتوان از یک زنجیره فیلتر کامل برای پردازش بیشتر ورودی تولیدشده بدون انتقال میان پردازنده و میزبان (CPU-HOST) استفاده کرد. برای جزئیات به مستندات و مثالهای coreimage مراجعه کنید.
Examples
- •
- استفاده از
CIQRCodeGenerator برای
ایجاد کد QR
برای صفحه
خانگی FFmpeg،
ارائهشده
به عنوان خط
فرمان کامل
و گریزدار
برای پوسته
استاندارد
bash اپل:
ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
این مثال معادل مثال QRCode در coreimage بدون نیاز به سورس ویدیویی nullsrc است.
ddagrab
ضبط دسکتاپ ویندوز از طریق API تکثیر دسکتاپ (Desktop Duplication API).
این فیلتر منحصراً فریمهای سختافزاری D3D11 را برای انکود یا پردازش روی GPU برمیگرداند. بنابراین برای هر نوع پردازش نرمافزاری، یک hwdownload صریح مورد نیاز است.
این فیلتر گزینههای زیر را میپذیرد:
- output_idx
- شاخص خروجی
DXGI برای ضبط.
معمولاً متناظر با شاخصی است که ویندوز به صفحه نمایش داده است منهای یک، بنابراین از 0 شروع میشود.
پیشفرض خروجی 0 است.
- draw_mouse
- رسم یا عدم
رسم
مکاننمای
ماوس.
پیشفرض true است.
تنها مکاننماهای سختافزاری را تحت تأثیر قرار میدهد. اگر یک بازی یا برنامه مکاننمای خود را رندر کند، همواره ضبط خواهد شد.
- framerate
- حداکثر نرخ
فریمی که
دسکتاپ با
آن ضبط
خواهد شد -
فاصله بین
فریمهای
متوالی
کوچکتر از
معکوس نرخ
فریم
نخواهد بود.
هنگامی که
dup_frames برابر true
باشد
(پیشفرض) و
دسکتاپ به
اندازه
کافی
بهروزرسانی
نشود،
فیلتر فریم
قبلی را
تکثیر
خواهد کرد.
توجه داشته
باشید که
هیچ
بافرینگی
در
پسزمینه
انجام
نمیشود،
بنابراین
هنگامی که
فیلتر به
اندازه
کافی
فراخوانی
نشود،
فاصله
واقعی بین
فریمها
ممکن است به
طور قابل
توجهی
بزرگتر
باشد.
پیشفرض 30 FPS است.
- video_size
- تعیین
اندازه
ویدیوی
ضبطشده.
پیشفرض اندازه کامل صفحه نمایش است.
در صورتی که کوچکتر از اندازه صفحه باشد، از پایین/راست بریده میشود.
- offset_x
- آفست افقی ویدیوی ضبطشده.
- offset_y
- آفست عمودی ویدیوی ضبطشده.
- output_fmt
- قالب خروجی
مورد نظر
فیلتر.
پیشفرض 8
بیتی BGRA است.
مقادیر زیر را میپذیرد:
- auto
- تمامی قالبهای خروجی پشتیبانیشده را به DDA ارسال میکند و آنچه را که DDA تصمیم به استفاده از آن میگیرد برمیگرداند.
- 8bit
- bgra
- قالبهای ۸ بیتی همیشه کار میکنند و DDA در صورت لزوم به آنها تبدیل خواهد کرد.
- 10bit
- x2bgr10
- اگر قالب ۱۰ بیتی درخواست شود اما در دسترس نباشد، راهاندازی اولیه فیلتر با شکست مواجه خواهد شد.
- dup_frames
- هنگامی که این گزینه روی true تنظیم شود (پیشفرض)، فیلتر در صورت عدم بهروزرسانی دسکتاپ، فریمها را تکرار میکند تا نرخ فریم هدف را تقریباً ثابت نگه دارد. هنگامی که این گزینه روی false تنظیم شود، فیلتر منتظر بهروزرسانی دسکتاپ میماند (در این حالت فاصلههای بین فریمها ممکن است به طور چشمگیری متفاوت باشند).
Examples
ضبط صفحه اصلی و اینکود با استفاده از nvenc:
ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4
شما همچنین میتوانید از دستگاه lavfi صرفنظر کرده و مستقیماً از فیلتر استفاده کنید. همچنین دانلود فریم و انکود با libx264 را نشان میدهد. در این حالت تعیین صریح قالب خروجی الزامی است:
ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4
اگر میخواهید تنها بخشی از دسکتاپ را ضبط کنید، میتوان این کار را با مشخص کردن یک اندازه کوچکتر و آفستهای آن در صفحه به انجام رساند:
ddagrab=video_size=800x600:offset_x=100:offset_y=100
gfxcapture
ضبط پنجرهها یا مانیتورها با استفاده از API مربوط به Windows.Graphics.Capture.
این سورس ضبط با سربار کم از پنجرههای برنامهها یا کل مانیتورها را فراهم میکند. این فیلتر فریمهای سختافزاری را در قالب "d3d11" خروجی میدهد؛ در صورتی که فریمها در حافظه سیستم مورد نیاز باشند از "hwdownload,format=" استفاده کنید.
پنجرهای که باید ضبط شود را میتوان از طریق عبارات باقاعده (regex) روی عنوان، نام کلاس یا نام فایل اجرایی پشتیبان آن، با دستگیرههای بومی (handles) صریح، یا با شاخص مانیتور یا دستگیره بومی صریح انتخاب کرد. یک پنجره برای انتخاب شدن باید با تمام عبارات ارائهشده مطابقت داشته باشد. نخستین پنجره منطبق، به هر ترتیبی که ویندوز آنها را بازگرداند، برداشته خواهد شد.
دستگیرههای صریح (hwnd، hmonitor) اولویت بالاتری نسبت به انتخاب بر اساس الگو یا شاخص دارند. اگر نه دستگیرهها و نه شاخص مانیتور داده نشوند، اولین پنجره منطبق با عبارات باقاعده ارائهشده ضبط میشود.
این سورس یک FPS ثابت را حفظ نمیکند. فریمها را با هر نرخی که ترکیبکننده (compositor) ارائه میدهد بازمیگرداند، و فقط توسط max_framerate محدود میشود. اگر به نرخ ثابتی نیاز دارید، باید یک فیلتر fps اضافه کنید تا بر حسب نیاز فریمها را حذف یا تکرار کند.
اگر سورس ضبط در میانه ضبط ناپدید شود (پنجره بسته شود، مانیتور قطع شود)، فیلتر EOF برمیگرداند.
این سورس گزینههای زیر را میپذیرد:
- window_title
- عبارت باقاعده ECMAScript که با عنوان پنجره مطابقت داده میشود. از پیشوند "(?i)" به سبک PCRE برای تطابق بدون تمایز حروف کوچک و بزرگ پشتیبانی میکند.
- window_class
- همانند window_title، اما با نام کلاس پنجره مطابقت داده میشود.
- window_exe
- همانند window_title، اما با نام پرونده اجرایی فرایند پنجره مطابقت داده میشود.
- monitor_idx
- شاخص مبتنی
بر صفر از
مانیتور
جهت ضبط.
همچنین میتواند روی "window" تنظیم شود تا مانیتوری را ضبط کند که پنجره انتخابشده در زمان راهاندازی اولیه فیلتر روی آن نمایش داده میشود.
- hwnd
- دستگیره بومی صریح پنجره (HWND).
- hmonitor
- دستگیره بومی صریح مانیتور (HMONITOR).
- capture_cursor
- ضبط مکاننمای ماوس. به طور پیشفرض فعال است.
- capture_border
- ضبط کل ناحیه پنجره، شامل تزیینات/کادر حاشیه پنجره. به طور پیشفرض غیرفعال است.
- display_border
- رسم یک کادر حاشیه برجسته زرد در اطراف پنجره ضبطشده. به طور پیشفرض غیرفعال است.
- max_framerate
- حداکثر نرخ فریم ضبط. یک نرخ ویدیو را میپذیرد (مانند 30، "60/1"، "24000/1001"). مقدار پیشفرض 60 فریم در ثانیه است. نرخ واقعی نرخی است که ترکیبکننده پنجره/مانیتور را رندر میکند، و با این گزینه محدود میشود.
- width
- اجبار عرض
بوم خروجی.
اگر صفر
باشد
(پیشفرض)،
عرض سورس
ضبطشده
اولیه
استفاده
میشود. اگر
یک عدد منفی
ارائه شود،
عرض به مضرب
بعدی آن عدد
گرد میشود.
به resize_mode مراجعه کنید.
- height
- اجبار
ارتفاع بوم
خروجی. اگر
صفر باشد
(پیشفرض)،
ارتفاع
سورس
ضبطشده
اولیه
استفاده
میشود. اگر
یک عدد منفی
ارائه شود،
ارتفاع به
مضرب بعدی
آن عدد گرد
میشود.
به resize_mode مراجعه کنید.
- crop_left
- برش این تعداد پیکسل از سمت چپ فریمهای ضبطشده.
- crop_top
- برش این تعداد پیکسل از سمت بالای فریمهای ضبطشده.
- crop_right
- برش این تعداد پیکسل از سمت راست فریمهای ضبطشده.
- crop_bottom
- برش این تعداد پیکسل از سمت پایین فریمهای ضبطشده.
- premultiplied
- اگر روی 1 تنظیم شود، فریمها را با آلفای پیشضربشده (premultiplied alpha) بازمیگرداند. پیشفرض 0 است (آلفای مستقیم/straight alpha).
- resize_mode
- نحوه برازش محتوای ضبطشده در اندازه بوم خروجی را تعریف میکند. مقادیر ممکن:
- crop
- برش (یا حاشیهبندی با رنگ سیاه) به اندازه بوم (پیشفرض).
- scale
- مقیاسبندی مبدأ برای پر کردن بوم، با احتمال تغییر نسبت تصویر.
- scale_aspect
- مقیاسبندی مبدأ برای قرار گرفتن درون بوم ضمن حفظ نسبت تصویر. ناحیه باقیمانده با رنگ سیاه پر میشود.
- scale_mode
- الگوریتم
مقیاسبندی
مورد
استفاده در
هنگام نیاز
به تغییر
اندازه.
مقادیر ممکن:
- output_fmt
- قالب
پیکسلی
خروجی مورد
نظر درون
فریمهای
سختافزاری
D3D11.
مقادیر ممکن:
Examples
- *<Capture a window by title (case-insensitive) at a maximum of 60 fps:>
-
ffmpeg -filter_complex gfxcapture=window_title='(?i)My Application':max_framerate=60,hwdownload,format=bgra,format=yuv420p -c:v libx264 -crf 15 capture.mp4
- *<Capture monitor 1 at native refresh, 10bit color depth, scale to 1920x1080 preserving aspect:>
-
ffmpeg -filter_complex gfxcapture=monitor_idx=1:width=1920:height=1080:resize_mode=scale_aspect:output_fmt=10bit -c:v hevc_nvenc -cq 15 capture.mp4
- *<Capture a window by executable name, draw border, force point scaling, fixed 60 fps:>
-
ffmpeg -filter_complex gfxcapture=window_exe='^firefox.exe$':display_border=1:scale_mode=point,fps=60 -rc qvbr -qvbr_quality_level 15 -c:v h264_amf capture.mp4
gradients
تولید چندین گرادیان رنگی.
- size, s
- تنظیم اندازه فریم. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "640x480" است.
- rate, r
- تنظیم نرخ فریم، بیانشده به صورت تعداد فریمها در هر ثانیه. مقدار پیشفرض "25" است.
- c0, c1, c2, c3, c4, c5, c6, c7
- تنظیم ۸ رنگ. مقادیر پیشفرض برای رنگها انتخاب رنگ تصادفی است.
- x0, y0, y0, y1
- تنظیم نقاط مبدأ و مقصد خط گرادیان. اگر منفی یا خارج از محدوده باشند، مقادیر تصادفی انتخاب میشوند.
- nb_colors, n
- تنظیم تعداد رنگهای مورد استفاده در یک زمان. محدوده مجاز از 2 تا 8 است. مقدار پیشفرض 2 است.
- seed
- تنظیم بذر تصادفی (seed) برای انتخاب نقاط خط گرادیان.
- duration, d
- تنظیم
مدتزمان
ویدیوی
تولیدشده.
بخش
مدتزمان (Time
duration) در
راهنمای
ffmpeg-utils(1) را برای
ساختار
نحوی
پذیرفتهشده
مشاهده
کنید.
اگر تعیین نشود، یا مدتزمان بیانشده منفی باشد، فرض میشود که ویدیو برای همیشه تولید خواهد شد.
- speed
- تنظیم سرعت چرخش گرادیانها.
- type, t
- تنظیم نوع گرادیانها. مقادیر موجود عبارتند از:
نوع پیشفرض linear است.
Commands
این سورس از برخی از گزینههای بالا به عنوان دستورات (commands) پشتیبانی میکند.
mandelbrot
تولید یک فراکتال مجموعه مندلبرو (Mandelbrot set) و بزرگنمایی تدریجی به سمت نقطه مشخصشده با start_x و start_y.
این سورس گزینههای زیر را میپذیرد:
- end_pts
- تنظیم مقدار پایانی pts. مقدار پیشفرض 400 است.
- end_scale
- تنظیم مقدار مقیاس پایانی. باید یک مقدار ممیز شناور باشد. مقدار پیشفرض 0.3 است.
- inner
- تنظیم حالت
رنگآمیزی
درونی،
یعنی
الگوریتم
مورد
استفاده
برای رسم
ناحیه
درونی
فراکتال
مندلبرو.
باید یکی از مقادیر زیر را به خود بگیرد:
- black
- حالت سیاه.
- convergence
- نمایش زمان تا رسیدن به همگرایی.
- mincol
- تنظیم رنگ بر اساس نزدیکترین نقطه به مبدأ تکرارها.
- period
- حالت تناوب (period).
مقدار پیشفرض mincol است.
- bailout
- تنظیم مقدار خروج (bailout). مقدار پیشفرض 10.0 است.
- maxiter
- تنظیم حداکثر تعداد تکرارهای انجامشده توسط الگوریتم رندر. مقدار پیشفرض 7189 است.
- outer
- تنظیم حالت رنگآمیزی بیرونی. باید یکی از مقادیر زیر را به خود بگیرد:
- iteration_count
- حالت شمارش تکرار.
- normalized_iteration_count
- حالت شمارش تکرار نرمالشده.
مقدار پیشفرض normalized_iteration_count است.
- rate, r
- تنظیم نرخ فریم، بیانشده به صورت تعداد فریمها در هر ثانیه. مقدار پیشفرض "25" است.
- size, s
- تنظیم اندازه فریم. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "640x480" است.
- start_scale
- تنظیم مقدار مقیاس اولیه. مقدار پیشفرض 3.0 است.
- start_x
- تنظیم موقعیت اولیه x. باید یک مقدار ممیز شناور بین -100 و 100 باشد. مقدار پیشفرض -0.743643887037158704752191506114774 است.
- start_y
- تنظیم موقعیت اولیه y. باید یک مقدار ممیز شناور بین -100 و 100 باشد. مقدار پیشفرض -0.131825904205311970493132056385139 است.
mptestsrc
تولید الگوهای آزمایشی مختلف، همانطور که توسط فیلتر آزمایشی MPlayer تولید میشوند.
اندازه ویدیوی تولیدشده ثابت و برابر با 512x512 است. این سورس به ویژه برای آزمایش ویژگیهای اینکودینگ مفید است.
این سورس گزینههای زیر را میپذیرد:
- rate, r
- تعیین نرخ فریم ویدیوی تولیدشده، به صورت تعداد فریمهای تولیدشده در ثانیه. باید رشتهای در قالب frame_rate_num/frame_rate_den، یک عدد صحیح، یک عدد اعشاری یا یک اختصار معتبر نرخ فریم ویدیو باشد. مقدار پیشفرض "25" است.
- duration, d
- تنظیم
مدتزمان
ویدیوی
تولیدشده.
بخش
مدتزمان (Time
duration) در
راهنمای
ffmpeg-utils(1) را برای
ساختار
نحوی
پذیرفتهشده
مشاهده
کنید.
اگر تعیین نشود، یا مدتزمان بیانشده منفی باشد، فرض میشود که ویدیو برای همیشه تولید خواهد شد.
- test, t
- تنظیم شماره یا نام آزمایشی که باید انجام شود. آزمایشهای پشتیبانیشده عبارتند از:
- dc_luma
- dc_chroma
- freq_luma
- freq_chroma
- amp_luma
- amp_chroma
- cbp
- mv
- ring1
- ring2
- all
- max_frames, m
- تنظیم حداکثر تعداد فریمهای تولیدشده برای هر آزمایش؛ مقدار پیشفرض 30 است.
مقدار پیشفرض "all" است، که در میان فهرست تمام آزمایشها چرخش خواهد کرد.
چندین نمونه:
mptestsrc=t=dc_luma
یک الگوی آزمایشی "dc_luma" تولید خواهد کرد.
frei0r_src
ارائه یک سورس frei0r.
برای فعالسازی کامپایل این فیلتر باید هدر frei0r را نصب کرده و FFmpeg را با شناسه "--enable-frei0r" پیکربندی کنید.
این سورس پارامترهای زیر را میپذیرد:
- size
- اندازه ویدیوی تولیدی. برای ساختار نحوی این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید.
- framerate
- نرخ فریم ویدیوی تولیدشده. ممکن است رشتهای به شکل num/den یا اختصار نرخ فریم باشد.
- filter_name
- نام سورس frei0r جهت بارگذاری. برای اطلاعات بیشتر در مورد frei0r و نحوه تنظیم پارامترها، بخش frei0r را در مستندات فیلترهای ویدیو مطالعه فرمایید.
- filter_params
- فهرستی از پارامترهای جداشده با '|' جهت ارسال به سورس frei0r.
برای مثال، جهت تولید یک سورس partik0l از نوع frei0r با اندازه 200x200 و نرخ فریم 10 که روی ورودی اصلی فیلتر overlay همپوشانی میشود:
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
life
تولید الگوی زندگی (life pattern).
این سورس بر پایه تعمیمی از بازی زندگی جان کانوی (John Conway) است.
ورودی سورس نشاندهنده یک شبکه زندگی است؛ هر پیکسل نشاندهنده یک سلول است که میتواند در یکی از دو وضعیت ممکن، زنده یا مرده باشد. هر سلول با هشت همسایه خود که سلولهای مجاور افقی، عمودی یا مورب هستند، تعامل دارد.
در هر تعامل، شبکه با توجه به قاعده اتخاذشده تکامل مییابد، که تعداد سلولهای زنده همسایهای را که باعث زنده ماندن یا متولد شدن یک سلول میشوند، مشخص میکند. گزینه rule امکان میدهد قاعده مورد نظر را مشخص کنید.
این سورس گزینههای زیر را میپذیرد:
- filename, f
- تعیین
پروندهای
که وضعیت
اولیه شبکه
از آن
خوانده
میشود. در
پرونده، هر
نویسه غیر
از فاصله
خالی به
عنوان یک
سلول زنده
در نظر
گرفته
میشود، و
خط جدید
برای تعیین
انتهای هر
سطر
استفاده
میشود.
اگر این گزینه مشخص نشود، شبکه اولیه به صورت تصادفی تولید میشود.
- rate, r
- تنظیم نرخ ویدیو، یعنی تعداد فریمهای تولیدشده در هر ثانیه. پیشفرض 25 است.
- random_fill_ratio, ratio
- تنظیم نسبت پر کردن تصادفی برای شبکه تصادفی اولیه. این یک مقدار عددی اعشاری در محدوده 0 تا 1 است و پیشفرض آن 1/PHI میباشد. هنگامی که پروندهای مشخص شود، این گزینه نادیده گرفته میشود.
- random_seed, seed
- تنظیم بذر تصادفی برای پر کردن شبکه تصادفی اولیه؛ باید یک عدد صحیح بین 0 و UINT32_MAX باشد. در صورت عدم تعیین، یا در صورت تنظیم صریح روی -1، فیلتر سعی خواهد کرد بر پایه بهترین تلاش از یک بذر تصادفی مناسب استفاده کند.
- rule
- تنظیم
قاعده
زندگی (life rule).
یک قاعده را میتوان با کدی از نوع "SNS/BNB" مشخص کرد، که در آن NS و NB دنبالههایی از اعداد در محدوده 0-8 هستند، NS تعداد سلولهای زنده همسایه را مشخص میکند که باعث زنده ماندن یک سلول زنده میشوند، و NB تعداد سلولهای زنده همسایه را که باعث زنده شدن یک سلول مرده میشوند (یعنی «متولد شدن»). میتوان از "s" و "b" به جای "S" و "B" استفاده کرد.
به عنوان روشی دیگر، یک قاعده را میتوان با یک عدد صحیح ۱۸ بیتی مشخص کرد. ۹ بیت مرتبه بالا برای رمزگذاری وضعیت سلول بعدی در صورت زنده بودن به ازای هر تعداد سلول زنده همسایه استفاده میشود، و بیتهای مرتبه پایین قاعده «متولد شدن» سلولهای جدید را مشخص میکنند. بیتهای مرتبه بالاتر تعداد بیشتری از سلولهای همسایه را رمزگذاری میکنند. برای مثال عدد 6153 = "(12<<9)+9" یک قاعده زنده ماندن 12 و یک قاعده تولد 9 را تعیین میکند، که متناظر با "S23/B03" است.
مقدار پیشفرض "S23/B3" است، که همان قاعده اصلی بازی زندگی کانوی است، و اگر سلول دارای ۲ یا ۳ سلول زنده همسایه باشد آن را زنده نگه میدارد، و در صورتی که سه سلول زنده در اطراف یک سلول مرده وجود داشته باشد یک سلول جدید متولد خواهد کرد.
- size, s
- تنظیم
اندازه
ویدیوی
خروجی. برای
ساختار
نحوی این
گزینه، بخش
"Video size" در
راهنمای ffmpeg-utils
را بررسی
کنید.
اگر filename مشخص شود، اندازه به طور پیشفرض روی همان اندازه پرونده ورودی تنظیم میشود. اگر size تنظیم شود، باید شامل اندازه مشخصشده در پرونده ورودی باشد، و شبکه اولیه تعریفشده در آن پرونده در مرکز ناحیه حاصل بزرگتر قرار خواهد گرفت.
اگر نام پرونده مشخص نشود، مقدار اندازه به طور پیشفرض "320x240" خواهد بود (که برای یک شبکه اولیه تصادفی تولیدشده استفاده میشود).
- stitch
- اگر روی 1 تنظیم شود، لبههای چپ و راست شبکه را به یکدیگر وصل میکند، و لبههای بالا و پایین را نیز همینطور. پیشفرض 1 است.
- mold
- تنظیم سرعت کپک زدن سلول. در صورت تنظیم، یک سلول مرده با گام mold از رنگ death_color به mold_color تغییر وضعیت میدهد. mold میتواند مقداری از 0 تا 255 داشته باشد.
- life_color
- تنظیم رنگ سلولهای زنده (یا تازه متولدشده).
- death_color
- تنظیم رنگ سلولهای مرده. اگر mold تنظیم شده باشد، این نخستین رنگی است که برای بازنمایی یک سلول مرده استفاده میشود.
- mold_color
- تنظیم رنگ
کپک، برای
سلولهای
قطعاً مرده
و کپکزده.
برای ساختار نحوی این ۳ گزینه رنگ، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید.
Examples
- خواندن یک
شبکه از pattern،
و قرار دادن
آن در مرکز
یک شبکه با
اندازه 300x300
پیکسل:
life=f=pattern:s=300x300
- تولید یک
شبکه
تصادفی با
اندازه 200x200،
با نسبت پر
کردن ۲/۳:
life=ratio=2/3:s=200x200
- تعیین یک
قاعده
سفارشی
برای تکامل
یک شبکه
تصادفی
تولیدشده:
life=rule=S14/B34
- مثال کامل
با جلوه مرگ
تدریجی
(کپک) با
استفاده از
ffplay:
ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
perlin
تولید نویز پرلین (Perlin noise).
نویز پرلین نوعی نویز با پیوستگی محلی در فضا است. از این نویز میتوان برای ایجاد الگوهایی با پیوستگی در فضا و زمان استفاده کرد، به عنوان مثال برای شبیهسازی دود، سیالات یا عوارض زمین (terrain).
در صورتی که از طریق گزینه octaves بیش از یک اکتاو تعیین شود، نویز پرلین به عنوان مجموعی از مؤلفهها تولید میشود که فرکانس هر یک دو برابر مؤلفه قبلی است. در این حالت، گزینه persistence نسبت دامنه را نسبت به مؤلفه قبلی مشخص میکند. مؤلفههای اکتاو بیشتر امکان تعیین جزئیات فرکانس بالای بیشتری را در نویز تولیدشده فراهم میسازند (به عنوان مثال تغییرات کوچک ناشی از تختهسنگها در یک عارضه زمین تولیدشده).
گزینهها
- size, s
- اندازه (عرض و ارتفاع) فریمهای ویدیویی بافرشده را مشخص میکند. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "320x240" است.
- rate, r
- نرخ فریم مورد انتظار برای استریم ویدیو را بر حسب تعداد فریم در ثانیه مشخص میکند. مقدار پیشفرض 25 است.
- octaves
- تعداد کل مؤلفههای تشکیلدهنده نویز را مشخص میکند که فرکانس هر یک دو برابر مؤلفه قبلی است. مقدار پیشفرض 1 است.
- persistence
- نسبت مورد استفاده برای محاسبه دامنه مؤلفه اکتاو بعدی نسبت به دامنه مؤلفه قبلی را تنظیم میکند. مقدار پیشفرض 1 است.
- xscale
- yscale
- یک ضریب مقیاسبندی مورد استفاده برای ضرب در مختصات x و y را تعریف میکند. این میتواند برای تعریف اثری با الگوی کشیدهشده در امتداد محور x یا y مفید باشد. مقدار پیشفرض 1 است.
- tscale
- یک ضریب مقیاسبندی مورد استفاده برای ضرب در مختصات زمان را تعریف میکند. این میتواند برای تغییر سرعت تغییرات زمانی مفید باشد. مقدار پیشفرض 1 است.
- random_mode
- حالت
تصادفی
مورد
استفاده
برای
محاسبه
الگوی
اولیه را
تنظیم
میکند.
مقادیر پشتیبانیشده عبارتند از:
مقدار پیشفرض "random" است.
- random_seed, seed
- هنگامی که random_mode روی random_seed تنظیم شده باشد، از این مقدار برای محاسبه الگوی اولیه استفاده میکند. مقدار پیشفرض 0 است.
مثالها
- تولید یک
مؤلفه
منفرد:
perlin
- استفاده از
نویز پرلین
با 7 مؤلفه،
که هر یک
سهم
نصفشدهای
در دامنه کل
دارند:
perlin=octaves=7:persistence=0.5
- زنجیر کردن
نویز پرلین
با lutyuv برای
تولید اثر
سیاهوسفید:
perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
- کشیدن نویز
در امتداد
محور y و
تبدیل سطح
خاکستری به
سیگنال فقط
قرمز:
perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
qrencodesrc
تولید یک کد QR با استفاده از کتابخانه libqrencode (به https://fukuchi.org/works/qrencode مراجعه کنید).
برای فعالسازی کامپایل این سورس، باید FFmpeg را با "--enable-libqrencode" پیکربندی کنید.
کد QR از متن یا الگوی متنی ارائهشده تولید میشود. کد QR متناظر بر اساس گزینههای اندازه خروجی مشخصشده، مقیاسبندی شده و در خروجی ویدیو قرار میگیرد.
در صورتی که هیچ متنی مشخص نشود، کد QR تولید نمیشود، بلکه یک خروجی رنگی خالی برگردانده میشود.
این سورس گزینههای زیر را میپذیرد:
- qrcode_width, q
- padded_qrcode_width, Q
- یک عبارت
برای عرض کد
QR رندرشده،
با و بدون
پدینگ
(فاصلهگذاری)
مشخص
میکند.
عبارت qrcode_width
میتواند
به مقدار
تنظیمشده
توسط عبارت
padded_qrcode_width ارجاع
دهد و
برعکس. به
طور
پیشفرض
padded_qrcode_width روی qrcode_width
تنظیم شده
است، به این
معنی که هیچ
پدینگی
وجود ندارد.
این عبارات فقط یک بار، هنگام مقداردهی اولیه سورس ارزیابی میشوند. برای جزئیات به بخش عبارات qrencode مراجعه کنید.
توجه داشته باشید که برخی از ثوابت برای این سورس وجود ندارند (برای مثال x یا t یا n)، زیرا آنها فقط هنگام ارزیابی عبارت برای هر فریم معنا دارند نه در زمان مقداردهی اولیه.
- rate, r
- نرخ فریم ویدیوی سورس را به صورت تعداد فریمهای تولیدشده در ثانیه مشخص میکند. این مقدار باید یک رشته در قالب frame_rate_num/frame_rate_den، یک عدد صحیح، یک عدد ممیز شناور یا یک اختصار معتبر نرخ فریم ویدیو باشد. مقدار پیشفرض "25" است.
- case_sensitive, cs
- به libqrencode دستور میدهد تا از کدگذاری حساس به حروف بزرگ و کوچک استفاده کند. این گزینه به طور پیشفرض فعال است. برای کاهش اندازه کدگذاری QR میتوان آن را غیرفعال کرد.
- level, l
- سطح تصحیح
خطای
کدگذاری QR
را مشخص
میکند. با
سطح تصحیح
بالاتر،
اندازه
کدگذاری
افزایش
مییابد
اما کد در
برابر
خرابی
مقاومتر
خواهد بود.
سطح
پایینتر L
است.
مقادیر زیر را میپذیرد:
- expansion
- نحوه بسط دادن متن ورودی را انتخاب میکند. میتواند "none" یا "normal" (پیشفرض) باشد. برای جزئیات به بخش بسط متن qrencode مراجعه کنید.
- text
- textfile
- متنی را که
باید رندر
شود تعریف
میکند. در
صورتی که
هیچیک
مشخص نشود،
هیچ کدی
انکود
نمیشود
(صرفاً یک
فریم رنگی
خالی).
در صورتی که بسط فعال باشد، با متن مانند یک الگوی متنی با استفاده از سازوکار بسط qrencode رفتار میشود. برای جزئیات به بخش بسط متن qrencode مراجعه کنید.
- background_color, bc
- foreground_color, fc
- رنگ کد QR و
رنگ
پسزمینه
را تنظیم
میکند.
مقدار
پیشفرض
foreground_color برابر
با "black" و
مقدار
پیشفرض
background_color برابر
با "white" است.
برای سینتکس گزینههای رنگ، بخش "رنگ" (Color) در راهنمای ffmpeg-utils را بررسی کنید.
مثالها
- تولید یک کد
QR که متن
مشخصشده
را با
اندازه
پیشفرض
کدگذاری
میکند:
qrencodesrc=text=www.ffmpeg.org
- همانند
مورد قبل،
اما با
انتخاب رنگ
آبی روی
صورتی:
qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
- تولید یک کد
QR با عرض 200
پیکسل و
پدینگ، به
طوری که عرض
پدینگشده
4/3 عرض کد QR
باشد:
qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
- تولید یک کد
QR با عرض
پدینگشده
200 پیکسل و
پدینگ، به
طوری که عرض
کد QR برابر 3/4
عرض
پدینگشده
باشد:
qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
- تولید یک کد
QR که شماره
فریم را
کدگذاری
میکند:
qrencodesrc=text=%{n} - تولید یک کد
QR که برچسب
زمانی GMT را
کدگذاری
میکند:
qrencodesrc=text=%{gmtime} - تولید یک کد
QR که برچسب
زمانی را به
صورت عدد
ممیز شناور
کدگذاری
میکند:
qrencodesrc=text=%{pts}
allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
سورس "allrgb" فریمهایی به اندازه 4096x4096 از تمام رنگهای rgb را برمیگرداند.
سورس "allyuv" فریمهایی به اندازه 4096x4096 از تمام رنگهای yuv را برمیگرداند.
سورس "color" یک ورودی با رنگ یکنواخت ارائه میدهد.
سورس "colorchart" یک جدول تست رنگ (color checker chart) ارائه میدهد.
سورس "colorspectrum" یک ورودی طیف رنگی ارائه میدهد.
سورس "haldclutsrc" یک جدول تطبیق رنگ همانی Hald CLUT ارائه میدهد. همچنین فیلتر haldclut را ببینید.
سورس "nullsrc" فریمهای ویدیویی پردازشنشده را برمیگرداند. این سورس عمدتاً برای استفاده در ابزارهای تحلیل / خطایابی، یا به عنوان سورسی برای فیلترهایی که دادههای ورودی را نادیده میگیرند، مفید است.
سورس "pal75bars" یک الگوی میلههای رنگی را بر اساس توصیههای EBU PAL با سطوح رنگی 75% تولید میکند.
سورس "pal100bars" یک الگوی میلههای رنگی را بر اساس توصیههای EBU PAL با سطوح رنگی 100% تولید میکند.
سورس "rgbtestsrc" یک الگوی آزمایشی RGB تولید میکند که برای تشخیص مشکلات RGB در برابر BGR مفید است. شما باید یک نوار قرمز، سبز و آبی را از بالا به پایین مشاهده کنید.
سورس "smptebars" یک الگوی میلههای رنگی را بر اساس راهنمای مهندسی SMPTE EG 1-1990 تولید میکند.
سورس "smptehdbars" یک الگوی میلههای رنگی را بر اساس SMPTE RP 219-2002 تولید میکند.
سورس "testsrc" یک الگوی ویدیویی آزمایشی تولید میکند که یک الگوی رنگی، یک گرادیان متحرک و یک برچسب زمانی را نشان میدهد. این سورس عمدتاً برای اهداف آزمایشی در نظر گرفته شده است.
سورس "testsrc2" شبیه به testsrc است، اما به جای فقط "rgb24" از فرمتهای پیکسلی بیشتری پشتیبانی میکند. این ویژگی امکان استفاده از آن را به عنوان ورودی برای سایر آزمایشها بدون نیاز به تبدیل فرمت فراهم میسازد.
سورس "yuvtestsrc" یک الگوی آزمایشی YUV تولید میکند. شما باید یک نوار y، cb و cr را از بالا به پایین مشاهده کنید.
این سورسها پارامترهای زیر را میپذیرند:
- level
- سطح Hald CLUT را مشخص میکند، تنها در سورس "haldclutsrc" در دسترس است. سطح "N" تصویری به ابعاد "N*N*N" در "N*N*N" پیکسل تولید میکند تا به عنوان ماتریس همانی برای جدولهای جستجوی سهبعدی (3D lookup tables) استفاده شود. هر مؤلفه در مقیاس "1/(N*N)" کدگذاری میشود.
- color, c
- رنگ سورس را مشخص میکند، تنها در سورس "color" در دسترس است. برای سینتکس این گزینه، بخش "Color" در راهنمای ffmpeg-utils را بررسی کنید.
- size, s
- اندازه
ویدیوی
سورس را
مشخص
میکند.
برای
سینتکس این
گزینه، بخش
"Video size" در
راهنمای ffmpeg-utils
را بررسی
کنید. مقدار
پیشفرض
"320x240" است.
این گزینه در فیلترهای "allrgb"، "allyuv" و "haldclutsrc" در دسترس نیست.
- rate, r
- نرخ فریم ویدیوی سورس را به عنوان تعداد فریمهای تولیدشده در ثانیه مشخص میکند. این مقدار باید رشتهای در قالب frame_rate_num/frame_rate_den، یک عدد صحیح، یک عدد ممیز شناور یا یک اختصار معتبر نرخ فریم ویدیو باشد. مقدار پیشفرض "25" است.
- duration, d
- مدتزمان
ویدیوی
سورس را
تنظیم
میکند.
برای
سینتکس
پذیرفتهشده
به بخش Time duration
در راهنمای
ffmpeg-utils(1) مراجعه
کنید.
اگر مشخص نشود یا مدتزمان بیانشده منفی باشد، فرض میشود که ویدیو برای همیشه تولید خواهد شد.
از آنجا که نرخ فریم به عنوان پایه زمانی (time base) استفاده میشود، تمام فریمها از جمله آخرین فریم دارای مدتزمان کامل خود خواهند بود. اگر مدتزمان مشخصشده مضربی از مدتزمان فریم نباشد، به بالا گرد خواهد شد.
- sar
- نسبت ابعاد نمونه (sample aspect ratio) ویدیوی سورس را تنظیم میکند.
- alpha
- آلفا (کدر بودن) پسزمینه را مشخص میکند، تنها در سورس "testsrc2" در دسترس است. مقدار باید بین 0 (کاملاً شفاف) و 255 (کاملاً کدر، حالت پیشفرض) باشد.
- decimals, n
- تعداد
ارقام
اعشار برای
نمایش در
برچسب
زمانی را
تنظیم
میکند،
تنها در
سورس
"testsrc" در
دسترس است.
مقدار برچسب زمانی نمایشدادهشده متناظر با مقدار برچسب زمانی اصلی ضرب در توان ۱۰ مقدار مشخصشده خواهد بود. مقدار پیشفرض 0 است.
- type
- نوع طیف رنگی را مشخص میکند، تنها در سورس "colorspectrum" در دسترس است. میتواند یکی از موارد زیر باشد:
- patch_size
- اندازه وصله رنگی (color patch) منفرد را تنظیم میکند، تنها در سورس "colorchart" در دسترس است. مقدار پیشفرض "64x64" است.
- preset
- پیشتنظیم
رنگهای
جدول تست
رنگ را
تنظیم
میکند،
تنها در
سورس
"colorchart" در
دسترس است.
مقادیر موجود عبارتند از:
مقدار پیشفرض "reference" است.
مثالها
- تولید یک
ویدیو با
مدتزمان 5.3
ثانیه، با
اندازه 176x144 و
نرخ فریم 10
فریم در
ثانیه:
testsrc=duration=5.3:size=qcif:rate=10
- توصیف گراف
زیر یک سورس
قرمز با
میزان کدر
بودن 0.2، با
اندازه "qcif" و
نرخ فریم 10
فریم در
ثانیه
تولید
میکند:
color=c=red@0.2:s=qcif:r=10
- اگر قرار
است محتوای
ورودی
نادیده
گرفته شود،
میتوان از
"nullsrc"
استفاده
کرد. دستور
زیر با
بهکارگیری
فیلتر
"geq" در
صفحه لوما
نویز تولید
میکند:
nullsrc=s=256x256, geq=random(1)*255:128:128
دستورات
سورس "color" از دستورات زیر پشتیبانی میکند:
- c, color
- تنظیم رنگ تصویر ایجادشده. از همان سینتکس گزینه color متناظر پیروی میکند.
openclsrc
تولید ویدیو با استفاده از یک برنامه OpenCL.
- source
- پرونده سورس برنامه OpenCL.
- kernel
- نام کرنل در برنامه.
- size, s
- اندازه فریمهای تولیدی. این مقدار باید تنظیم شود.
- format
- فرمت پیکسلی مورد استفاده برای فریمهای تولیدی. این مقدار باید تنظیم شود.
- rate, r
- تعداد فریمهای تولیدشده در هر ثانیه. مقدار پیشفرض '25' است.
برای جزئیات نحوه بارگذاری برنامه، فیلتر program_opencl را ببینید.
برنامههای نمونه:
- تولید شیب
رنگی با
تنظیم
مقادیر
پیکسل بر
اساس
موقعیت
پیکسل در
تصویر
خروجی.
(توجه داشته
باشید که
این با تمام
فرمتهای
پیکسلی کار
خواهد کرد،
اما خروجی
تولیدشده
یکسان
نخواهد
بود.)
__kernel void ramp(__write_only image2d_t dst, unsigned int index) { int2 loc = (int2)(get_global_id(0), get_global_id(1)); float4 val; val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst)); write_imagef(dst, loc, val); } - تولید
الگوی فرش
سرپینسکی،
با پیمایش (pan)
به اندازه
یک پیکسل در
هر فریم.
__kernel void sierpinski_carpet(__write_only image2d_t dst, unsigned int index) { int2 loc = (int2)(get_global_id(0), get_global_id(1)); float4 value = 0.0f; int x = loc.x + index; int y = loc.y + index; while (x > 0 || y > 0) { if (x % 3 == 1 && y % 3 == 1) { value = 1.0f; break; } x /= 3; y /= 3; } write_imagef(dst, loc, value); }
sierpinski
تولید فراکتال فرش/مثلث سرپینسکی، و حرکت تصادفی به اطراف (pan).
این سورس گزینههای زیر را میپذیرد:
- size, s
- تنظیم اندازه فریم. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "640x480" است.
- rate, r
- تنظیم نرخ فریم، بر حسب تعداد فریم در ثانیه. مقدار پیشفرض "25" است.
- seed
- تنظیم سید (seed) که برای حرکت تصادفی استفاده میشود.
- jump
- تنظیم حداکثر جهش برای یک مقصد منفرد در پیمایش. محدوده مجاز از 1 تا 10000 است.
- type
- تنظیم نوع فراکتال، میتواند مقدار پیشفرض "carpet" یا "triangle" باشد.
zoneplate
تولید یک الگوی ویدیویی آزمایشی صفحه ناحیهای (zoneplate).
این سورس گزینههای زیر را میپذیرد:
- size, s
- تنظیم اندازه فریم. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "320x240" است.
- rate, r
- تنظیم نرخ فریم، بر حسب تعداد فریم در ثانیه. مقدار پیشفرض "25" است.
- duration, d
- تنظیم
مدتزمان
ویدیوی
سورس. برای
سینتکس
پذیرفتهشده
به بخش Time duration
در راهنمای
ffmpeg-utils(1) مراجعه
کنید.
اگر مشخص نشود یا مدتزمان بیانشده منفی باشد، فرض میشود که ویدیو برای همیشه تولید خواهد شد.
- sar
- تنظیم نسبت ابعاد نمونه (sample aspect ratio) ویدیوی سورس.
- precision
- تنظیم دقت بر حسب بیت برای جدول جستجوی محاسبات سینوسی. مقدار پیشفرض 10 است. محدوده مجاز از 4 تا 16 است.
- xo
- تنظیم آفست محور افقی برای سیگنال خروجی. مقدار پیشفرض 0 است.
- yo
- تنظیم آفست محور عمودی برای سیگنال خروجی. مقدار پیشفرض 0 است.
- to
- تنظیم آفست محور زمان برای سیگنال خروجی. مقدار پیشفرض 0 است.
- k0
- تنظیم مرتبه 0، مقدار ثابت اضافهشده به فاز سیگنال. مقدار پیشفرض 0 است.
- kx
- تنظیم مرتبه 1، ضریب فاز برای محور افقی. مقدار پیشفرض 0 است.
- ky
- تنظیم مرتبه 1، ضریب فاز برای محور عمودی. مقدار پیشفرض 0 است.
- kt
- تنظیم مرتبه 1، ضریب فاز برای محور زمان. مقدار پیشفرض 0 است.
- kxt, kyt, kxy
- تنظیم ضریبهای فاز برای ترکیب محورهای مکانی و زمانی. مقدار پیشفرض 0 است.
- kx2
- تنظیم مرتبه 2، ضریب فاز برای محور افقی. مقدار پیشفرض 0 است.
- ky2
- تنظیم مرتبه 2، ضریب فاز برای محور عمودی. مقدار پیشفرض 0 است.
- kt2
- تنظیم مرتبه 2، ضریب فاز برای محور زمان. مقدار پیشفرض 0 است.
- ku
- تنظیم مقدار ثابت اضافهشده به فاز نهایی برای تولید مؤلفه کروما-آبی (chroma-blue) سیگنال. مقدار پیشفرض 0 است.
- kv
- تنظیم مقدار ثابت اضافهشده به فاز نهایی برای تولید مؤلفه کروما-قرمز (chroma-red) سیگنال. مقدار پیشفرض 0 است.
دستورات
این سورس از برخی گزینههای بالا به عنوان دستورات پشتیبانی میکند.
مثالها
- تولید روبش
سینوسی
رنگی افقی:
zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
- تولید روبش
سینوسی
رنگی عمودی:
zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
- تولید صفحه
ناحیهای
دایرهای:
zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
سینکهای ویدیویی (VIDEO SINKS)
در ادامه توصیف سینکهای ویدیویی در دسترس ارائه شده است.
buffersink
فریمهای ویدیویی را بافر میکند و آنها را در انتهای گراف فیلتر در دسترس قرار میدهد.
این سینک عمدتاً برای استفاده برنامهنویسی در نظر گرفته شده است، بهویژه از طریق رابط کاربری تعریفشده در libavfilter/buffersink.h یا سیستم گزینهها.
این فیلتر یک اشارهگر به ساختار AVBufferSinkContext را میپذیرد که فرمتهای بافرهای ورودی را تعریف میکند، تا به عنوان پارامتر مبهم (opaque) برای مقداردهی اولیه به "avfilter_init_filter" ارسال شود.
nullsink
سینک ویدیویی تهی: مطلقاً هیچ کاری با ویدیوی ورودی انجام نمیدهد. این سینک عمدتاً به عنوان یک الگو و برای استفاده در ابزارهای تحلیل / خطایابی مفید است.
فیلترهای چندرسانهای (MULTIMEDIA FILTERS)
در ادامه توصیف فیلترهای چندرسانهای در دسترس ارائه شده است.
a3dscope
تبدیل صدای ورودی به خروجی ویدیویی اسکوپ سهبعدی (3d scope).
این فیلتر گزینههای زیر را میپذیرد:
- rate, r
- تنظیم نرخ فریم، بر حسب تعداد فریم در ثانیه. مقدار پیشفرض "25" است.
- size, s
- تعیین اندازه ویدیو برای خروجی. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "hd720" است.
- fov
- تنظیم میدان دید (field of view) دوربین. پیشفرض 90 درجه است. محدوده مجاز از 40 تا 150 است.
- roll
- تنظیم زاویه رول (roll) دوربین.
- pitch
- تنظیم زاویه پیچ (pitch) دوربین.
- yaw
- تنظیم زاویه یاو (yaw) دوربین.
- xzoom
- تنظیم بزرگنمایی دوربین در محور X.
- yzoom
- تنظیم بزرگنمایی دوربین در محور Y.
- zzoom
- تنظیم بزرگنمایی دوربین در محور Z.
- xpos
- تنظیم موقعیت دوربین در محور X.
- ypos
- تنظیم موقعیت دوربین در محور Y.
- zpos
- تنظیم موقعیت دوربین در محور Z.
- length
- تنظیم طول امواج صوتی نمایشدادهشده بر حسب تعداد فریم.
دستورات
این فیلتر از برخی گزینههای بالا به عنوان دستورات پشتیبانی میکند.
abitscope
تبدیل صدای ورودی به یک خروجی ویدیو، که بیتاسکوپ (audio bit scope) صدا را نمایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- rate, r
- تنظیم نرخ فریم، بر حسب تعداد فریم در ثانیه. مقدار پیشفرض "25" است.
- size, s
- تعیین اندازه ویدیو برای خروجی. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "1024x256" است.
- colors
- تعیین فهرستی از رنگها جداشده با فاصله یا با '|' که برای رسم کانالها استفاده خواهند شد. رنگهای ناشناخته یا ناموجود با رنگ سفید جایگزین خواهند شد.
- mode, m
- تنظیم حالت خروجی. میتواند "bars" یا "trace" باشد. پیشفرض "bars" است.
adrawgraph
ترسیم یک نمودار با استفاده از متادادههای صدای ورودی.
فیلتر drawgraph را ببینید.
agraphmonitor
فیلتر graphmonitor را ببینید.
ahistogram
تبدیل صدای ورودی به یک خروجی ویدیو، که هیستوگرام بلندی صدا را نمایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- dmode
- تعیین نحوه
محاسبه
هیستوگرام.
مقادیر زیر را میپذیرد:
پیشفرض "single" است.
- rate, r
- تنظیم نرخ فریم، بر حسب تعداد فریم در ثانیه. مقدار پیشفرض "25" است.
- size, s
- تعیین اندازه ویدیو برای خروجی. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "hd720" است.
- scale
- تنظیم
مقیاس
نمایش.
مقادیر زیر را میپذیرد:
پیشفرض "log" است.
- ascale
- تنظیم
مقیاس
دامنه.
مقادیر زیر را میپذیرد:
پیشفرض "log" است.
- acount
- تنظیم تعداد فریمهایی که باید در هیستوگرام انباشته شوند. پیشفرض 1 است. تنظیم این مقدار روی -1 تمام فریمها را انباشته میکند.
- rheight
- تنظیم نسبت ارتفاع هیستوگرام به ارتفاع پنجره.
- slide
- تنظیم حالت
لغزش
سونوگرام.
مقادیر زیر را میپذیرد:
- replace
- جایگزینی سطرهای قدیمی با سطرهای جدید.
- scroll
- پیمایش از بالا به پایین.
پیشفرض "replace" است.
- hmode
- تنظیم حالت
هیستوگرام.
مقادیر زیر را میپذیرد:
پیشفرض "abs" است.
aphasemeter
فاز صدای ورودی را اندازه میگیرد، که به عنوان متاداده "lavfi.aphasemeter.phase"، نمایانگر فاز میانگین فریم صوتی فعلی صادر (export) میشود. یک خروجی ویدیو نیز میتواند تولید شود و به صورت پیشفرض فعال است. صدا به عنوان خروجی اول عبور داده میشود.
اگر صدا دارای چیدمان کانال متفاوتی باشد به استریو ریماتریکس خواهد شد. مقدار فاز در محدوده "[-1, 1]" است که در آن -1 به معنای این است که کانالهای چپ و راست کاملاً خارج از فاز هستند و 1 به معنای همفاز بودن کانالها است.
این فیلتر گزینههای زیر را میپذیرد که همگی مربوط به خروجی ویدیوی آن هستند:
- rate, r
- تنظیم نرخ فریم خروجی. مقدار پیشفرض 25 است.
- size, s
- تنظیم اندازه ویدیو برای خروجی. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "800x400" است.
- rc
- gc
- bc
- تعیین کنتراست قرمز، سبز و آبی. مقادیر پیشفرض 2، 7 و 1 هستند. محدوده مجاز "[0, 255]" است.
- mpc
- تنظیم رنگی که برای رسم فاز میانه استفاده میشود. اگر رنگ "none" باشد که حالت پیشفرض است، هیچ مقدار فاز میانهای رسم نخواهد شد.
- video
- فعالسازی خروجی ویدیو. پیشفرض فعال است.
تشخیص فاز (phasing detection)
این فیلتر همچنین توالیهای مونو و خارج از فاز را در استریمهای استریو تشخیص میدهد. هرگاه توالی به اندازه حداقل تنظیمشده یا طولانیتر ادامه یابد، شروع، پایان و مدتزمان توالی را لاگ میکند.
این فیلتر گزینههای زیر را برای این تشخیص میپذیرد:
- phasing
- فعالسازی تشخیص مونو و خارج از فاز بودن. پیشفرض غیرفعال است.
- tolerance, t
- تنظیم تلورانس فاز برای تشخیص مونو، بر حسب نسبت دامنه. پیشفرض 0 است. محدوده مجاز "[0, 1]" است.
- angle, a
- تنظیم آستانه زاویه برای تشخیص خارج از فاز بودن، بر حسب درجه. پیشفرض 170 است. محدوده مجاز "[90, 180]" است.
- duration, d
- تنظیم مدتزمان مونو یا خارج از فاز بودن تا زمان اعلان، بر حسب ثانیه. پیشفرض 2 است.
مثالها
- •
- مثال کامل
با ffmpeg برای
تشخیص 1
ثانیه مونو
با تلورانس
فاز 0.001:
ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
avectorscope
تبدیل صدای ورودی به یک خروجی ویدیو، که نمایانگر وکتوراسکوپ صدا است.
این فیلتر برای سنجش اختلاف میان کانالهای استریم صوتی استریو استفاده میشود. یک سیگنال مونورال (مونو)، متشکل از سیگنالهای چپ و راست یکسان، منجر به یک خط عمودی مستقیم میشود. هرگونه تفکیک استریو به صورت انحراف از این خط قابل مشاهده است که یک شکل لیساژو ایجاد میکند. اگر خط مستقیم (یا انحراف از آن) اما به صورت افقی ظاهر شود، نشان میدهد که کانالهای چپ و راست خارج از فاز هستند.
این فیلتر گزینههای زیر را میپذیرد:
- mode, m
- تنظیم حالت
وکتوراسکوپ.
مقادیر موجود عبارتند از:
- lissajous
- لیساژو دورانیافته به اندازه 45 درجه.
- lissajous_xy
- همانند بالا اما بدون دوران.
- polar
- شکلی شبیه به نیمدایره.
مقدار پیشفرض lissajous است.
- size, s
- تنظیم اندازه ویدیو برای خروجی. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "400x400" است.
- rate, r
- تنظیم نرخ فریم خروجی. مقدار پیشفرض 25 است.
- rc
- gc
- bc
- ac
- تعیین کنتراست قرمز، سبز، آبی و آلفا. مقادیر پیشفرض 40، 160، 80 و 255 هستند. محدوده مجاز "[0, 255]" است.
- rf
- gf
- bf
- af
- تعیین محوشدگی قرمز، سبز، آبی و آلفا. مقادیر پیشفرض 15، 10، 5 و 5 هستند. محدوده مجاز "[0, 255]" است.
- zoom
- تنظیم ضریب بزرگنمایی. مقدار پیشفرض 1 است. محدوده مجاز "[0, 10]" است. مقادیر کمتر از 1 ضریب بزرگنمایی را به طور خودکار به حداکثر مقدار ممکن تنظیم میکنند.
- draw
- تنظیم حالت
ترسیم
وکتوراسکوپ.
مقادیر موجود عبارتند از:
مقدار پیشفرض dot است.
- scale
- تعیین
مقیاس
دامنه
نمونههای
صوتی.
مقادیر موجود عبارتند از:
مثالها
- •
- مثال کامل
با استفاده
از ffplay:
ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1]; [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
دستورات
این فیلتر از تمام گزینههای بالا به عنوان دستور پشتیبانی میکند، به جز گزینههای "size" و "rate".
bench, abench
سنجش عملکرد (بنچمارک) بخشی از یک گراف فیلتر.
این فیلتر گزینههای زیر را میپذیرد:
- action
- شروع یا
توقف یک
تایمر.
مقادیر موجود عبارتند از:
- start
- دریافت زمان فعلی، تنظیم آن به عنوان متاداده فریم (با استفاده از کلید "lavfi.bench.start_time")، و هدایت فریم به فیلتر بعدی.
- stop
- دریافت زمان فعلی و واکشی متاداده "lavfi.bench.start_time" از متاداده فریم ورودی برای به دست آوردن اختلاف زمانی. سپس اختلاف زمانی، میانگین، حداکثر و حداقل زمان (به ترتیب "t"، "avg"، "max" و "min") چاپ میشوند. برچسبهای زمانی بر حسب ثانیه بیان میشوند.
مثالها
- •
- سنجش
عملکرد
فیلتر selectivecolor:
bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
concat
الحاق استریمهای صوتی و ویدیویی به یکدیگر، متصل کردن آنها یکی پس از دیگری.
این فیلتر بر روی بخشهایی (segments) از استریمهای همگامشده ویدیو و صدا کار میکند. تمام بخشها باید تعداد یکسانی از استریمها از هر نوع داشته باشند، و این تعداد همچنین تعداد استریمها در خروجی خواهد بود.
این فیلتر گزینههای زیر را میپذیرد:
- n
- تنظیم تعداد بخشها. پیشفرض 2 است.
- v
- تنظیم تعداد استریمهای ویدیویی خروجی، که همان تعداد استریمهای ویدیویی در هر بخش نیز هست. پیشفرض 1 است.
- a
- تنظیم تعداد استریمهای صوتی خروجی، که همان تعداد استریمهای صوتی در هر بخش نیز هست. پیشفرض 0 است.
- unsafe
- فعال کردن حالت ناامن: در صورتی که بخشها دارای فرمت متفاوتی باشند عملیات با شکست مواجه نشود.
فیلتر دارای v+a خروجی است: ابتدا v خروجی ویدیو، سپس a خروجی صدا.
تعداد ورودیها برابر با nx(v+a) است: ابتدا ورودیهای مربوط به بخش اول، با همان ترتیب خروجیها، سپس ورودیهای مربوط به بخش دوم و غیره.
استریمهای مرتبط به دلایل مختلفی از جمله اندازه فریم کدک یا تألیف نادرست، همواره دقیقاً دارای مدتزمان یکسانی نیستند. به همین دلیل، استریمهای همگامشده مرتبط (مانند یک ویدیو و تراک صوتی آن) باید به صورت همزمان الحاق شوند. فیلتر concat از مدتزمان طولانیترین استریم در هر بخش (به جز آخرین بخش) استفاده خواهد کرد و در صورت لزوم استریمهای صوتی کوتاهتر را با سکوت پر میکند (pad).
برای اینکه این فیلتر به درستی کار کند، تمام بخشها باید در برچسب زمانی 0 شروع شوند.
تمام استریمهای متناظر باید در تمام بخشها دارای پارامترهای یکسانی باشند؛ سیستم فیلترگذاری به طور خودکار یک فرمت پیکسلی مشترک را برای استریمهای ویدیو، و یک فرمت نمونه، نرخ نمونهبرداری و چیدمان کانال مشترک را برای استریمهای صوتی انتخاب میکند، اما سایر تنظیمات، مانند وضوح تصویر، باید صراحتاً توسط کاربر تبدیل شوند.
نرخهای فریم متفاوت قابل قبول هستند اما منجر به نرخ فریم متغیر در خروجی خواهند شد؛ اطمینان حاصل کنید که پرونده خروجی را برای مدیریت آن پیکربندی کردهاید.
مثالها
- الحاق یک
تیتراژ
آغازین، یک
قسمت و یک
تیتراژ
پایانی،
همگی در
نسخه
دوزبانه
(ویدیو در
استریم 0،
صدا در
استریمهای
1 و 2):
ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \ '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2] concat=n=3:v=1:a=2 [v] [a1] [a2]' \ -map '[v]' -map '[a1]' -map '[a2]' output.mkv
- الحاق دو
بخش،
مدیریت
جداگانه
صدا و ویدیو
با استفاده
از
سورسهای
(a)movie، و تنظیم
وضوح تصویر:
movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ; movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ; [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
توجه داشته باشید که اگر استریمهای صوتی و ویدیویی در پرونده اول دقیقاً دارای مدتزمان یکسانی نباشند، در محل اتصال (stitch) ناهمگامی رخ خواهد داد.
دستورات
این فیلتر از دستورات زیر پشتیبانی میکند:
- next
- بستن بخش فعلی و گام برداشتن به بخش بعدی
ebur128
فیلتر پویشگر EBU R128. این فیلتر یک استریم صوتی را دریافت کرده و سطح بلندی صدای آن را تحلیل میکند. به طور پیشفرض، پیامی را با فرکانس 10 هرتز با بلندی صدای لحظهای (مشخصشده با "M")، بلندی صدای کوتاهمدت ("S")، بلندی صدای یکپارچه ("I") و محدوده بلندی صدا ("LRA") لاگ میکند.
این فیلتر فقط میتواند استریمهایی را تحلیل کند که فرمت نمونه آنها ممیز شناور با دقت مضاعف (double-precision) باشد. در صورت لزوم، استریم ورودی به این مشخصات تبدیل خواهد شد. ممکن است کاربران نیاز داشته باشند فیلترهای aformat و/یا aresample را پس از این فیلتر درج کنند تا پارامترهای اصلی بازیابی شوند.
این فیلتر همچنین دارای یک خروجی ویدیو است (گزینه video را ببینید) همراه با یک نمودار بلادرنگ برای مشاهده روند تغییر بلندی صدا. نمودار شامل پیام لاگشده ذکرشده در بالا است، بنابراین هنگامی که این گزینه تنظیم شده باشد، دیگر چاپ نمیشود، مگر اینکه گزارشگیری با جزئیات (verbose) تنظیم شده باشد. ناحیه اصلی نمودار شامل بلندی صدای کوتاهمدت (3 ثانیه تحلیل) است، و درجه (gauge) در سمت راست برای بلندی صدای لحظهای (400 میلیثانیه) است، اما میتواند به صورت اختیاری به گونهای پیکربندی شود که به جای آن بلندی صدای کوتاهمدت را نمایش دهد (به gauge مراجعه کنید).
ناحیه سبز یک محدوده هدف 1LU+/ را در اطراف بلندی صدای هدف (به طور پیشفرض 23LUFS-، مگر اینکه از طریق target تغییر یابد) مشخص میکند.
اطلاعات بیشتر درباره توصیهنامه بلندی صدای EBU R128 در http://tech.ebu.ch/loudness.
این فیلتر گزینههای زیر را میپذیرد:
- video
- فعالسازی خروجی ویدیو. استریم صوتی بدون تغییر عبور داده میشود، چه این گزینه تنظیم شده باشد یا خیر. استریم ویدیو در صورت فعال بودن، اولین استریم خروجی خواهد بود. پیشفرض 0 است.
- size
- تنظیم اندازه ویدیو. این گزینه فقط برای ویدیو است. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. وضوح پیشفرض و حداقل "640x480" است.
- meter
- تنظیم مقیاسسنج EBU. پیشفرض 9 است. مقادیر متداول 9 و 18 هستند، به ترتیب برای مقیاسسنج +9 EBU و مقیاسسنج +18 EBU. هر مقدار صحیح دیگری بین این محدوده مجاز است.
- metadata
- تنظیم
تزریق
متاداده.
اگر روی
1 تنظیم
شود، ورودی
صوتی به
فریمهای
خروجی 100
میلیثانیهای
بخشبندی
میشود که
هر یک از
آنها حاوی
اطلاعات
مختلف
بلندی صدا
در متاداده
هستند. تمام
کلیدهای
متاداده
دارای
پیشوند
"lavfi.r128."
هستند.
پیشفرض 0 است.
- framelog
- اجبار سطح
ثبت گزارش
فریم.
مقادیر موجود عبارتند از:
به طور پیشفرض، سطح لاگگیری روی info تنظیم شده است. اگر گزینههای video یا metadata تنظیم شوند، به verbose تغییر وضعیت میدهد.
- peak
- تنظیم
حالت(های)
اوج (peak).
حالتهای موجود را میتوان با هم ترکیب کرد (این گزینه از نوع "flag" است). مقادیر ممکن عبارتند از:
- none
- غیرفعال کردن هرگونه حالت اوج (پیشفرض).
- sample
- فعالسازی
حالت sample-peak.
حالت اوج ساده که به دنبال بالاترین مقدار نمونه میگردد. پیامی را برای sample-peak (مشخصشده با "SPK") ثبت میکند.
- true
- فعالسازی
حالت true-peak.
در صورت فعال بودن، جستجوی مقدار اوج بر روی نسخهای از استریم ورودی با بیشنمونهبرداری (over-sampled) برای دقت بهتر در تعیین اوج انجام میشود. پیامی را برای true-peak (مشخصشده با "TPK") و true-peak به ازای هر فریم (مشخصشده با "FTPK") ثبت میکند. این حالت نیازمند ساخت برنامهای است که شامل "libswresample" باشد.
- dualmono
- رفتار با پروندههای ورودی مونو به عنوان "dual mono". اگر یک پرونده مونو برای پخش بر روی یک سیستم استریو در نظر گرفته شده باشد، اندازهگیری EBU R128 آن از نظر ادراکی نادرست خواهد بود. در صورت تنظیم روی "true"، این گزینه این اثر را جبران خواهد کرد. پروندههای ورودی چندکاناله تحت تأثیر این گزینه قرار نمیگیرند.
- panlaw
- تنظیم یک قانون حرکت متوازن (pan law) خاص برای استفاده در اندازهگیری پروندههای dual mono. این پارامتر اختیاری است و دارای مقدار پیشفرض -3.01dB است.
- target
- تنظیم یک سطح هدف خاص (بر حسب LUFS) مورد استفاده به عنوان صفر نسبی در مصورسازی. این پارامتر اختیاری است و دارای مقدار پیشفرض -23LUFS است همانطور که توسط EBU R128 مشخص شده است. با این حال، محتوای منتشرشده آنلاین ممکن است سطح -16LUFS را ترجیح دهد (به عنوان مثال برای استفاده در پادکستها یا پلتفرمهای ویدیویی).
- gauge
- تنظیم مقداری که توسط درجه نمایش داده میشود. مقادیر معتبر عبارتند از "momentary" و "shortterm". به طور پیشفرض مقدار لحظهای استفاده خواهد شد، اما در برخی سناریوها ممکن است مشاهده مقدار کوتاهمدت مفیدتر باشد (به عنوان مثال میکس زنده).
- scale
- تنظیم مقیاس نمایش برای بلندی صدا. پارامترهای معتبر عبارتند از "absolute" (بر حسب LUFS) یا "relative" (LU) به صورت نسبی نسبت به هدف. این گزینه فقط بر خروجی ویدیو تأثیر میگذارد، نه بر خلاصه یا خروجی لاگ پیوسته.
- integrated
- مقدار صادرشده فقطخواندنی برای بلندی صدای یکپارچه اندازهگیریشده، بر حسب LUFS.
- range
- مقدار صادرشده فقطخواندنی برای محدوده بلندی صدای اندازهگیریشده، بر حسب LU.
- lra_low
- مقدار صادرشده فقطخواندنی برای حد پایین LRA اندازهگیریشده، بر حسب LUFS.
- lra_high
- مقدار صادرشده فقطخواندنی برای حد بالای LRA اندازهگیریشده، بر حسب LUFS.
- sample_peak
- مقدار صادرشده فقطخواندنی برای اوج نمونه اندازهگیریشده، بر حسب dBFS.
- true_peak
- مقدار صادرشده فقطخواندنی برای اوج واقعی اندازهگیریشده، بر حسب dBFS.
مثالها
- نمودار
بلادرنگ با
استفاده از
ffplay، با یک
مقیاسسنج
+18 EBU:
ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
- اجرای یک
تحلیل با ffmpeg:
ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
interleave, ainterleave
درهمآمیزی زمانی فریمها از چندین ورودی.
"interleave" با ورودیهای ویدیو کار میکند، و "ainterleave" با ورودیهای صدا.
این فیلترها فریمها را از چندین ورودی میخوانند و قدیمیترین فریم صفبندیشده را به خروجی ارسال میکنند.
استریمهای ورودی باید مقادیر برچسب زمانی فریم کاملاً تعریفشده و به صورت یکنواخت صعودی داشته باشند.
به منظور ارسال یک فریم به خروجی، این فیلترها باید حداقل یک فریم را برای هر ورودی صفبندی کنند، بنابراین در صورتی که یکی از ورودیها هنوز خاتمه نیافته باشد و فریمهای ورودی دریافت نکند، نمیتوانند کار کنند.
به عنوان مثال حالتی را در نظر بگیرید که در آن یک ورودی یک فیلتر "select" باشد که همیشه فریمهای ورودی را دور میاندازد. فیلتر "interleave" به خواندن از آن ورودی ادامه خواهد داد، اما تا زمانی که ورودی یک سیگنال پایان استریم ارسال نکند هرگز قادر به ارسال فریمهای جدید به خروجی نخواهد بود.
همچنین، بسته به همگامسازی ورودیها، در صورتی که یک ورودی فریمهای بیشتری نسبت به بقیه دریافت کند و صف از قبل پر شده باشد، فیلترها فریمها را دور میاندازند.
این فیلترها گزینههای زیر را میپذیرند:
- nb_inputs, n
- تنظیم تعداد ورودیهای مختلف، به طور پیشفرض 2 است.
- duration
- نحوه تعیین پایان استریم.
مثالها
- درهمآمیزی
فریمهای
متعلق به
استریمهای
مختلف با
استفاده از
ffmpeg:
ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
- افزودن
جلوه
محوشدگی
سوسوزننده:
select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
latency, alatency
سنجش تأخیر فیلترگذاری.
گزارش تأخیر فیلترگذاری فیلتر قبلی، تأخیر بر حسب تعداد نمونههای صوتی برای فیلترهای صوتی یا تعداد فریمهای ویدیو برای فیلترهای ویدیو.
در پایان استریم ورودی، فیلتر حداقل و حداکثر تأخیر اندازهگیریشده را برای فیلتر در حال اجرای قبلی در گراف فیلتر گزارش میدهد.
metadata, ametadata
دستکاری متاداده فریم.
این فیلتر گزینههای زیر را میپذیرد:
- mode
- تنظیم حالت
عملکرد
فیلتر.
میتواند یکی از موارد زیر باشد:
- select
- اگر هر دو گزینه "value" و "key" تنظیم شده باشند، فریمهایی که دارای چنین متادادهای هستند انتخاب میشوند. اگر فقط "key" تنظیم شده باشد، هر فریمی که چنین کلیدی در متاداده دارد انتخاب میشود.
- add
- افزودن "key" و "value" جدید به متاداده. اگر کلید از قبل موجود باشد هیچ کاری انجام ندهد.
- modify
- اصلاح مقدار کلیدی که از قبل موجود است.
- delete
- اگر "value" تنظیم شده باشد، فقط کلیدهایی که چنین مقداری دارند حذف میشوند. در غیر این صورت، کلید حذف میشود. اگر "key" تنظیم نشده باشد، تمام مقادیر متاداده در فریم حذف میشوند.
- چاپ کلید و مقدار آن در صورتی که متاداده یافت شود. اگر "key" تنظیم نشده باشد تمام مقادیر متاداده موجود در فریم چاپ میشوند.
- key
- تنظیم کلید مورد استفاده در تمام حالتها. باید برای تمام حالتها به جز "print" و "delete" تنظیم شود.
- value
- تنظیم مقدار متاداده که مورد استفاده قرار میگیرد. این گزینه برای حالتهای "modify" و "add" الزامی است.
- function
- کدام تابع
هنگام
مقایسه
مقدار
متاداده و
"value"
استفاده
شود.
میتواند یکی از موارد زیر باشد:
- same_str
- مقادیر به صورت رشته تفسیر میشوند، اگر مقدار متاداده با "value" یکسان باشد مقدار درستی برمیگرداند.
- starts_with
- مقادیر به صورت رشته تفسیر میشوند، اگر مقدار متاداده با رشته گزینه "value" شروع شود مقدار درستی برمیگرداند.
- less
- مقادیر به صورت ممیز شناور تفسیر میشوند، اگر مقدار متاداده کمتر از "value" باشد مقدار درستی برمیگرداند.
- equal
- مقادیر به صورت ممیز شناور تفسیر میشوند، اگر "value" با مقدار متاداده برابر باشد مقدار درستی برمیگرداند.
- greater
- مقادیر به صورت ممیز شناور تفسیر میشوند، اگر مقدار متاداده بزرگتر از "value" باشد مقدار درستی برمیگرداند.
- expr
- مقادیر به صورت ممیز شناور تفسیر میشوند، اگر عبارت گزینه "expr" به درستی ارزیابی شود مقدار درستی برمیگرداند.
- ends_with
- مقادیر به صورت رشته تفسیر میشوند، اگر مقدار متاداده با رشته گزینه "value" پایان یابد مقدار درستی برمیگرداند.
- expr
- تنظیم عبارتی که در زمان تنظیم "function" روی "expr" استفاده میشود. این عبارت از طریق eval API ارزیابی میشود و میتواند شامل ثوابت زیر باشد:
- VALUE1, FRAMEVAL
- نمایش ممیز شناور "value" از کلید متاداده.
- VALUE2, USERVAL
- نمایش ممیز شناور "value" همانطور که توسط کاربر در گزینه "value" ارائه شده است.
- file
- اگر در حالت "print" مشخص شود، خروجی در پرونده نامبرده نوشته میشود. به جای نام پرونده ساده میتوان هر آدرس url قابل نوشتن را مشخص کرد. نام پرونده ``-'' نمادی برای خروجی استاندارد است. اگر گزینه "file" تنظیم نشود، خروجی با سطح لاگ AV_LOG_INFO در گزارش ثبت میشود.
- direct
- کاهش بافرسازی در حالت print زمانی که خروجی در یک URL تنظیمشده با استفاده از file نوشته میشود.
مثالها
- چاپ تمام
مقادیر
متاداده
برای
فریمهایی
با کلید
"lavfi.signalstats.YDIF"
با مقادیر
بین 0 و 1.
signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
- چاپ خروجی
silencedetect در
پرونده metadata.txt.
silencedetect,ametadata=mode=print:file=metadata.txt
- هدایت
مستقیم
تمام
متاداده به
یک پایپ با
توصیفگر
پرونده 4.
metadata=mode=print:file='pipe\:4'
perms, aperms
تنظیم مجوزهای خواندن/نوشتن برای فریمهای خروجی.
این فیلترها عمدتاً برای توسعهدهندگان به منظور آزمایش مسیر مستقیم (direct path) در فیلتر بعدی در گراف فیلتر در نظر گرفته شدهاند.
این فیلترها گزینههای زیر را میپذیرند:
- mode
- انتخاب
حالت
مجوزها.
مقادیر زیر را میپذیرد:
- none
- هیچ کاری انجام ندهد. این حالت پیشفرض است.
- ro
- تمام فریمهای خروجی را فقطخواندنی (read-only) تنظیم کند.
- rw
- تمام فریمهای خروجی را مستقیماً قابل نوشتن تنظیم کند.
- toggle
- فریم را در صورت قابل نوشتن بودن فقطخواندنی کند، و در صورت فقطخواندنی بودن قابل نوشتن کند.
- random
- هر فریم خروجی را به صورت تصادفی فقطخواندنی یا قابل نوشتن کند.
- seed
- تنظیم سید برای حالت random، باید یک عدد صحیح بین 0 و "UINT32_MAX" باشد. اگر مشخص نشود، یا اگر صراحتاً روی -1 تنظیم شود، فیلتر تلاش میکند تا بر پایه بیشترین تلاش از یک سید تصادفی مناسب استفاده کند.
توجه: در صورت درج خودکار فیلتر بین فیلتر مجوزها و فیلتر بعدی، ممکن است مجوز طبق انتظار در فیلتر بعدی دریافت نشود. درج یک فیلتر format یا aformat پیش از فیلتر perms/aperms میتواند از این مشکل جلوگیری کند.
realtime, arealtime
کاهش سرعت فیلترگذاری برای انطباق تقریبی با زمان واقعی (real time).
این فیلترها فرآیند فیلترگذاری را برای مدتزمانی متغیر متوقف میکنند تا نرخ خروجی با برچسبهای زمانی ورودی مطابقت پیدا کند. آنها مشابه گزینه re در "ffmpeg" هستند.
آنها گزینههای زیر را میپذیرند:
- limit
- محدودیت زمانی برای مکثها. هر مکثی طولانیتر از آن به عنوان یک ناپیوستگی در برچسب زمانی در نظر گرفته شده و تایمر را بازنشانی میکند. پیشفرض 2 ثانیه است.
- speed
- ضریب سرعت
برای
پردازش.
مقدار باید
یک عدد ممیز
شناور
بزرگتر از
صفر باشد.
مقادیر
بزرگتر از
1.0 منجر به
پردازش
سریعتر از
زمان واقعی
میشوند، و
مقادیر
کوچکتر
پردازش را
کند
میکنند.
گزینه limit به
طور خودکار
بر این اساس
تطبیق داده
میشود.
پیشفرض 1.0
است.
سرعت پردازشی سریعتر از آنچه بدون این فیلترها ممکن است، قابل دستیابی نیست.
دستورات
هر دو فیلتر از تمام گزینههای بالا به عنوان دستورات پشتیبانی میکنند.
segment, asegment
تقسیم یک استریم ورودی منفرد به چندین استریم.
این فیلتر عکس فیلترهای concat عمل میکند.
"segment" بر روی فریمهای ویدیو، و "asegment" بر روی نمونههای صوتی کار میکند.
این فیلتر گزینههای زیر را میپذیرد:
- timestamps
- برچسبهای زمانی بخشهای خروجی جداشده با '|'. اولین بخش از ابتدای استریم ورودی آغاز خواهد شد. آخرین بخش تا پایان استریم ورودی ادامه مییابد.
- frames, samples
- تعداد دقیق فریمها/نمونهها برای تقسیم بخشها.
در تمام موارد، اضافه کردن پیشوند '+' به هر بخش، آن را نسبت به بخش قبلی نسبی میکند.
مثالها
- •
- تقسیم
استریم
صوتی ورودی
به سه
استریم
صوتی
خروجی،
شروع از
ابتدای
استریم
صوتی ورودی
و ذخیره آن
در اولین
استریم
صوتی
خروجی، سپس
ادامه در
ثانیه 60 و
ذخیره آن در
دومین
استریم
صوتی
خروجی، و در
نهایت پس از
ثانیه 150
استریم
صوتی ورودی
و ذخیره در
سومین
استریم
صوتی خروجی:
asegment=timestamps="60|150"
select, aselect
انتخاب فریمها برای ارسال به خروجی.
این فیلتر گزینههای زیر را میپذیرد:
- expr, e
- تنظیم
عبارتی که
برای هر
فریم ورودی
ارزیابی
میشود.
اگر عبارت به صفر ارزیابی شود، فریم دور انداخته میشود.
اگر نتیجه ارزیابی منفی یا NaN باشد، فریم به خروجی اول فرستاده میشود؛ در غیر این صورت به خروجی با اندیس "ceil(val)-1" فرستاده میشود، با این فرض که اندیس ورودی از 0 شروع میشود.
برای مثال مقدار 1.2 متناظر با خروجی با اندیس "ceil(1.2)-1 = 2-1 = 1" است، یعنی دومین خروجی.
- outputs, n
- تنظیم تعداد خروجیها. خروجیای که فریم انتخابشده باید به آن فرستاده شود بر اساس نتیجه ارزیابی تعیین میشود. مقدار پیشفرض 1 است.
عبارت میتواند شامل ثوابت زیر باشد:
- n
- شماره (ترتیبی) فریم فیلترشده، شروع از 0.
- selected_n
- شماره (ترتیبی) فریم انتخابشده، شروع از 0.
- prev_selected_n
- شماره ترتیبی آخرین فریم انتخابشده. در صورت تعریف نشدن NAN است.
- TB
- پایه زمانی برچسبهای زمانی ورودی.
- pts
- مقدار PTS (برچسب زمانی ارائه) فریم فیلترشده، بیانشده در واحدهای TB. در صورت تعریف نشدن NAN است.
- t
- مقدار PTS فریم فیلترشده، بیانشده بر حسب ثانیه. در صورت تعریف نشدن NAN است.
- prev_pts
- مقدار PTS فریم فیلترشده قبلی. در صورت تعریف نشدن NAN است.
- prev_selected_pts
- مقدار PTS آخرین فریم فیلترشده قبلی. در صورت تعریف نشدن NAN است.
- prev_selected_t
- مقدار PTS آخرین فریم انتخابشده قبلی، بیانشده بر حسب ثانیه. در صورت تعریف نشدن NAN است.
- start_pts
- اولین PTS در استریم که NAN نیست. در صورت یافت نشدن NAN باقی میماند.
- start_t
- اولین PTS، بر حسب ثانیه، در استریم که NAN نیست. در صورت یافت نشدن NAN باقی میماند.
- pict_type (فقط ویدیو)
- نوع فریم فیلترشده. میتواند یکی از مقادیر زیر را به خود بگیرد:
- interlace_type (فقط ویدیو)
- نوع اینترلیس فریم. میتواند یکی از مقادیر زیر را به خود بگیرد:
- PROGRESSIVE
- فریم پیشرونده (غیر اینترلیس) است.
- TOPFIRST
- فریم فیلد بالایی اول است.
- BOTTOMFIRST
- فریم فیلد پایینی اول است.
- consumed_sample_n (فقط صدا)
- تعداد نمونههای انتخابشده پیش از فریم فعلی
- samples_n (فقط صدا)
- تعداد نمونهها در فریم فعلی
- sample_rate (فقط صدا)
- نرخ نمونهبرداری ورودی
- key
- اگر فریم فیلترشده فریم کلیدی (key-frame) باشد 1 است، در غیر این صورت 0.
- pos
- موقعیت فریم فیلترشده در پرونده، اگر اطلاعات در دسترس نباشد -1 است (مثلاً برای ویدیوی ساختگی)؛ منسوخ شده است، استفاده نکنید
- scene (فقط ویدیو)
- مقداری بین 0 و 1 برای نشان دادن یک صحنه جدید؛ مقدار کم نشاندهنده احتمال پایین برای فریم فعلی در معرفی صحنه جدید است، در حالی که مقدار بالاتر به معنای احتمال بیشتر است (مثال زیر را ببینید)
- concatdec_select
- دیمکسر concat
میتواند
با تنظیم یک
نقطه ورودی
(inpoint) و یک نقطه
خروجی (outpoint)
تنها بخشی
از یک
پرونده
ورودی concat را
انتخاب
کند، اما
بستههای
خروجی ممکن
است کاملاً
در بازه
انتخابشده
قرار
نگیرند. با
استفاده از
این متغیر،
میتوان
فریمهای
تولیدشده
توسط
دیمکسر concat را
که دقیقاً
در بازه
انتخابشده
قرار
ندارند،
نادیده
گرفت.
این عملکرد با مقایسه pts فریم با مقادیر متاداده بسته lavf.concat.start_time و lavf.concat.duration که در فریمهای دیکودشده نیز وجود دارند، کار میکند.
متغیر concatdec_select برابر -1 است اگر pts فریم حداقل برابر با start_time باشد و متاداده duration موجود نباشد یا pts فریم کمتر از start_time + duration باشد، در غیر این صورت 0 است، و اگر متاداده start_time وجود نداشته باشد NaN است.
این اساساً بدان معناست که یک فریم ورودی در صورتی انتخاب میشود که pts آن در بازه تعیینشده توسط دیمکسر concat قرار داشته باشد.
- iw (فقط ویدیو)
- نمایانگر عرض فریم ویدیوی ورودی.
- ih (فقط ویدیو)
- نمایانگر ارتفاع فریم ویدیوی ورودی.
- view (فقط ویدیو)
- شناسه دید (View ID) برای ویدیوی چنددیدی (multi-view).
مقدار پیشفرض عبارت select برابر "1" است.
مثالها
- انتخاب
تمام
فریمها در
ورودی:
select
مثال بالا همانند زیر است:
select=1
- نادیده
گرفتن تمام
فریمها:
select=0
- انتخاب فقط
فریمهای I:
select='eq(pict_type\,I)'
- انتخاب یک
فریم از هر
۱۰۰ فریم:
select='not(mod(n\,100))'
- انتخاب فقط
فریمهای
قرارگرفته
در بازه
زمانی 10-20:
select=between(t\,10\,20)
- انتخاب فقط
فریمهای I
قرارگرفته
در بازه
زمانی 10-20:
select=between(t\,10\,20)*eq(pict_type\,I)
- انتخاب
فریمها با
حداقل
فاصله 10
ثانیه:
select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
- استفاده از
aselect برای
انتخاب فقط
فریمهای
صوتی با
تعداد
نمونههای
> 100:
aselect='gt(samples_n\,100)'
- ایجاد یک
موزاییک از
نخستین
صحنهها:
ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
مقایسه scene با مقداری بین 0.3 و 0.5 معمولاً یک انتخاب منطقی است.
- ارسال
فریمهای
زوج و فرد
به
خروجیهای
جداگانه و
ترکیب
آنها:
select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
- انتخاب
فریمهای
مفید از یک
پرونده ffconcat که
از inpointها و outpointها
استفاده
میکند اما
در آن
پروندههای
سورس فقط intra frame
نیستند.
ffmpeg -copyts -segment_time_metadata 1 -i input.ffconcat -fps_mode passthrough -vf select=concatdec_select -af aselect=concatdec_select output.avi
sendcmd, asendcmd
ارسال دستورات به فیلترها در گراف فیلتر.
این فیلترها دستوراتی را میخوانند تا به سایر فیلترها در گراف فیلتر ارسال شوند.
"sendcmd" باید بین دو فیلتر ویدیو درج شود، و "asendcmd" باید بین دو فیلتر صدا درج شود، اما صرفنظر از این به همان روش عمل میکنند.
تعیین مشخصات دستورات را میتوان در آرگومانهای فیلتر با گزینه commands یا در پروندهای مشخصشده با گزینه filename ارائه داد.
این فیلترها گزینههای زیر را میپذیرند:
- commands, c
- تنظیم دستوراتی که باید خوانده شده و به سایر فیلترها ارسال شوند.
- filename, f
- تنظیم نام پرونده حاوی دستوراتی که باید خوانده شده و به سایر فیلترها ارسال شوند.
سینتکس دستورات
یک توصیف دستورات شامل توالیای از مشخصات بازه است، شامل فهرستی از دستورات که هنگام رخ دادن رویدادی خاص مرتبط با آن بازه اجرا میشوند. رویداد رخداده معمولاً زمان فریم فعلی هنگام ورود به یک بازه زمانی معین یا خروج از آن است.
یک بازه با سینتکس زیر مشخص میشود:
<START>[-<END>] <COMMANDS>;
بازه زمانی با زمانهای START و END مشخص میشود. END اختیاری است و پیشفرض آن حداکثر زمان است.
زمان فریم فعلی در صورتی داخل بازه مشخصشده در نظر گرفته میشود که در بازه [START, END) قرار داشته باشد، یعنی زمانی که زمان بزرگتر یا مساوی با START و کمتر از END باشد.
بخش COMMANDS شامل توالیای از یک یا چند مشخصه دستور، جداشده با ","، مربوط به آن بازه است. سینتکس یک مشخصه دستور به صورت زیر است:
[<FLAGS>] <TARGET> <COMMAND> <ARG>
بخش FLAGS اختیاری است و نوع رویدادهای مرتبط با بازه زمانی را مشخص میکند که ارسال دستور مشخصشده را فعال میسازند، و باید دنبالهای غیرخالی از فلگهای شناسه باشد که با "+" یا "|" جدا شده و بین "[" و "]" قرار گرفتهاند.
فلگهای زیر شناختهشده هستند:
- enter
- دستور زمانی ارسال میشود که برچسب زمانی فریم فعلی وارد بازه مشخصشده شود. به عبارت دیگر، دستور زمانی ارسال میشود که برچسب زمانی فریم قبلی در بازه دادهشده نبوده و فریم فعلی در آن قرار دارد.
- leave
- دستور زمانی ارسال میشود که برچسب زمانی فریم فعلی از بازه مشخصشده خارج شود. به عبارت دیگر، دستور زمانی ارسال میشود که برچسب زمانی فریم قبلی در بازه دادهشده بوده و فریم فعلی در آن قرار ندارد.
- expr
- شناسه ARG
دستور به
عنوان یک
عبارت
تفسیر
میشود و
نتیجه
عبارت به
عنوان ARG
ارسال
میگردد.
این عبارت از طریق eval API ارزیابی میشود و میتواند شامل ثوابت زیر باشد:
- POS
- موقعیت اصلی فریم در پرونده، یا در صورت تعریف نشدن برای فریم فعلی تعریفنشده. منسوخ شده است، استفاده نکنید.
- PTS
- برچسب زمانی ارائه در ورودی.
- N
- شمارش فریم ورودی برای ویدیو یا صدا، شروع از 0.
- T
- زمان بر حسب ثانیه برای فریم فعلی.
- TS
- زمان شروع بر حسب ثانیه برای بازه دستور فعلی.
- TE
- زمان پایان بر حسب ثانیه برای بازه دستور فعلی.
- TI
- زمان درونیابیشده بازه دستور فعلی، TI = (T - TS) / (TE - TS).
- W
- عرض فریم ویدیو.
- H
- ارتفاع فریم ویدیو.
اگر FLAGS مشخص نشود، مقدار پیشفرض "[enter]" در نظر گرفته میشود.
بخش TARGET هدف دستور را مشخص میکند، معمولاً نام کلاس فیلتر یا نام یک نمونه فیلتر خاص.
بخش COMMAND نام دستور برای فیلتر هدف را مشخص میکند.
بخش ARG اختیاری است و فهرست اختیاری آرگومان را برای دستور COMMAND دادهشده مشخص میکند.
بین یک مشخصه بازه و بازه دیگر، فاصلههای خالی، یا توالی نویسههایی که با "#" شروع شده و تا انتهای خط ادامه دارند، نادیده گرفته میشوند و میتوان از آنها برای نوشتن یادداشتها استفاده کرد.
توصیف سادهشده BNF سینتکس مشخصات دستورات در ادامه آمده است:
<COMMAND_FLAG> ::= "enter" | "leave" <COMMAND_FLAGS> ::= <COMMAND_FLAG> [(+|"|")<COMMAND_FLAG>] <COMMAND> ::= ["[" <COMMAND_FLAGS> "]"] <TARGET> <COMMAND> [<ARG>] <COMMANDS> ::= <COMMAND> [,<COMMANDS>] <INTERVAL> ::= <START>[-<END>] <COMMANDS> <INTERVALS> ::= <INTERVAL>[;<INTERVALS>]
مثالها
- تعیین
تغییر
تمپوی صدا
در ثانیه 4:
asendcmd=c='4.0 atempo tempo 1.5',atempo
- هدف قرار
دادن یک
نمونه
فیلتر خاص:
asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
- تعیین
فهرستی از
دستورات drawtext و
hue در یک
پرونده:
# show text in the interval 5-10 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world', [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text='; # desaturate the image in the interval 15-20 15.0-20.0 [enter] hue s 0, [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor', [leave] hue s 1, [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color'; # apply an exponential saturation fade-out effect, starting from time 25 25 [enter] hue s exp(25-t)یک گراف فیلتر که امکان خواندن و پردازش فهرست دستورات بالا را که در پرونده test.cmd ذخیره شده فراهم میکند، میتواند به صورت زیر مشخص شود:
sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
setpts, asetpts
تغییر PTS (برچسب زمانی ارائه) فریمهای ورودی.
"setpts" بر روی فریمهای ویدیو، و "asetpts" بر روی فریمهای صدا کار میکند.
این فیلتر گزینههای زیر را میپذیرد:
- expr
- عبارتی که برای هر فریم به منظور ساخت برچسب زمانی آن ارزیابی میشود.
- strip_fps (فقط ویدیو)
- گزینه بولی که تعیین میکند آیا متاداده نرخ فریم و مدتزمان فریم اصلی حذف شود یا خیر. اگر روی true تنظیم شود، توجه داشته باشید که در صورت ارسال خروجی به یک مکسر با نرخ فریم ثابت، باید یک نرخ فریم معقول صراحتاً مشخص گردد. پیشفرض "false" است.
این عبارت از طریق eval API ارزیابی میشود و میتواند شامل ثوابت زیر باشد:
- FRAME_RATE, FR
- نرخ فریم، تنها برای ویدیوی با نرخ فریم ثابت تعریف شده است
- PTS
- برچسب زمانی ارائه در ورودی
- N
- شمارش فریم ورودی برای ویدیو یا تعداد نمونههای مصرفشده، بدون احتساب فریم فعلی برای صدا، شروع از 0.
- NB_CONSUMED_SAMPLES
- تعداد نمونههای مصرفشده، بدون احتساب فریم فعلی (فقط صدا)
- NB_SAMPLES, S
- تعداد نمونهها در فریم فعلی (فقط صدا)
- SAMPLE_RATE, SR
- نرخ نمونهبرداری صدا.
- STARTPTS
- مقدار PTS فریم اول.
- STARTT
- زمان بر حسب ثانیه برای فریم اول
- INTERLACED
- بیان اینکه آیا فریم فعلی اینترلیس است یا خیر.
- T
- زمان بر حسب ثانیه برای فریم فعلی
- POS
- موقعیت اصلی فریم در پرونده، یا در صورت تعریف نشدن برای فریم فعلی تعریفنشده؛ منسوخ شده است، استفاده نکنید
- PREV_INPTS
- مقدار PTS ورودی قبلی.
- PREV_INT
- زمان ورودی قبلی بر حسب ثانیه
- PREV_OUTPTS
- مقدار PTS خروجی قبلی.
- PREV_OUTT
- زمان خروجی قبلی بر حسب ثانیه
- RTCTIME
- زمان ساعت دیواری (RTC) بر حسب میکروثانیه. این متغیر منسوخ شده است، به جای آن از time(0) استفاده کنید.
- RTCSTART
- زمان ساعت دیواری (RTC) در شروع فیلم بر حسب میکروثانیه.
- TB
- پایه زمانی برچسبهای زمانی ورودی.
- T_CHANGE
- زمان اولین فریم پس از اعمال دستور یا زمان اولین فریم در صورت عدم وجود دستورات.
مثالها
- شروع شمارش
PTS از صفر:
setpts=PTS-STARTPTS
- اعمال اثر
حرکت سریع (fast
motion):
setpts=0.5*PTS
- اعمال اثر
حرکت آهسته
(slow motion):
setpts=2.0*PTS
- تنظیم نرخ
ثابت 25 فریم
در ثانیه:
setpts=N/(25*TB)
- اعمال یک
اثر لرزش (jitter)
تصادفی به
میزان +/-100
واحد TB:
setpts=PTS+randomi(0, -100\,100)
- تنظیم نرخ
ثابت 25 فریم
در ثانیه با
مقداری
لرزش:
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
- اعمال یک
آفست 10
ثانیهای
به PTS ورودی:
setpts=PTS+10/TB
- تولید
برچسبهای
زمانی از یک
"سورس
زنده" و
بازپایهگذاری
روی پایه
زمانی فعلی:
setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
- تولید
برچسبهای
زمانی با
شمارش
نمونهها:
asetpts=N/SR/TB
دستورات
هر دو فیلتر از تمام گزینههای بالا به عنوان دستورات پشتیبانی میکنند.
setrange
اجبار محدوده رنگ برای فریم ویدیوی خروجی.
فیلتر "setrange" ویژگی محدوده رنگ را برای فریمهای خروجی علامتگذاری میکند. این فیلتر فریم ورودی را تغییر نمیدهد، بلکه فقط ویژگی متناظر را تنظیم میکند، که بر نحوه رفتار فیلترهای بعدی با فریم تأثیر میگذارد.
این فیلتر گزینههای زیر را میپذیرد:
- range
- مقادیر موجود عبارتند از:
- auto
- حفظ همان ویژگی محدوده رنگ.
- unspecified, unknown
- تنظیم محدوده رنگ به عنوان نامشخص.
- limited, tv, mpeg
- تنظیم محدوده رنگ به عنوان محدود (limited).
- full, pc, jpeg
- تنظیم محدوده رنگ به عنوان کامل (full).
settb, asettb
تنظیم پایه زمانی مورد استفاده برای برچسبهای زمانی فریمهای خروجی. این فیلتر عمدتاً برای آزمایش پیکربندی پایه زمانی مفید است.
این فیلتر پارامترهای زیر را میپذیرد:
- expr, tb
- عبارتی که به پایه زمانی خروجی ارزیابی میشود.
مقدار tb یک عبارت محاسباتی است که یک عدد گویا (کسری) را نشان میدهد. این عبارت میتواند شامل ثوابت "AVTB" (پایه زمانی پیشفرض)، "intb" (پایه زمانی ورودی) و "sr" (نرخ نمونهبرداری، فقط صدا) باشد. مقدار پیشفرض "intb" است.
مثالها
- تنظیم پایه
زمانی به 1/25:
settb=expr=1/25
- تنظیم پایه
زمانی به 1/10:
settb=expr=0.1
- تنظیم پایه
زمانی به 1001/1000:
settb=1+0.001
- تنظیم پایه
زمانی به 2*intb:
settb=2*intb
- تنظیم
مقدار
پیشفرض
پایه زمانی:
settb=AVTB
showcqt
تبدیل صدای ورودی به یک خروجی ویدیو که طیف فرکانسی را به صورت لگاریتمی با استفاده از الگوریتم تبدیل کیو ثابت براون-پاکت (Brown-Puckette constant Q transform) با محاسبه مستقیم ضرایب در حوزه فرکانس بازنمایی میکند (اما خود تبدیل واقعاً Q ثابت نیست، بلکه ضریب Q در واقع متغیر/محدودشده است)، با مقیاس تن موسیقی، از E0 تا D#10.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. باید زوج باشد. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "1920x1080" است.
- fps, rate, r
- تنظیم نرخ فریم خروجی. مقدار پیشفرض 25 است.
- bar_h
- تنظیم ارتفاع نمودار میلهای (bargraph). باید زوج باشد. مقدار پیشفرض -1 است که ارتفاع نمودار میلهای را به طور خودکار محاسبه میکند.
- axis_h
- تنظیم ارتفاع محور. باید زوج باشد. مقدار پیشفرض -1 است که ارتفاع محور را به طور خودکار محاسبه میکند.
- sono_h
- تنظیم ارتفاع سونوگرام. باید زوج باشد. مقدار پیشفرض -1 است که ارتفاع سونوگرام را به طور خودکار محاسبه میکند.
- fullhd
- تنظیم وضوح fullhd. این گزینه منسوخ شده است، به جای آن از size، s استفاده کنید. مقدار پیشفرض 1 است.
- sono_v, volume
- تعیین عبارت بلندی صدای سونوگرام. میتواند شامل متغیرهای زیر باشد:
- bar_v
- عبارت ارزیابیشده bar_v
- frequency, freq, f
- فرکانسی که در آن ارزیابی میشود
- timeclamp, tc
- مقدار گزینه timeclamp
و توابع:
- a_weighting(f)
- وزندهی A برای بلندی صدای برابر
- b_weighting(f)
- وزندهی B برای بلندی صدای برابر
- c_weighting(f)
- وزندهی C برای بلندی صدای برابر.
مقدار پیشفرض 16 است.
- bar_v, volume2
- تعیین عبارت بلندی صدای نمودار میلهای. میتواند شامل متغیرهای زیر باشد:
- sono_v
- عبارت ارزیابیشده sono_v
- frequency, freq, f
- فرکانسی که در آن ارزیابی میشود
- timeclamp, tc
- مقدار گزینه timeclamp
و توابع:
- a_weighting(f)
- وزندهی A برای بلندی صدای برابر
- b_weighting(f)
- وزندهی B برای بلندی صدای برابر
- c_weighting(f)
- وزندهی C برای بلندی صدای برابر.
مقدار پیشفرض "sono_v" است.
- sono_g, gamma
- تعیین گامای سونوگرام. گامای پایینتر کنتراست طیف را بیشتر میکند، گامای بالاتر باعث میشود طیف محدوده بیشتری داشته باشد. مقدار پیشفرض 3 است. محدوده قابل قبول "[1, 7]" است.
- bar_g, gamma2
- تعیین گامای نمودار میلهای. مقدار پیشفرض 1 است. محدوده قابل قبول "[1, 7]" است.
- bar_t
- تعیین سطح شفافیت نمودار میلهای. مقدار کمتر نمودار میلهای را واضحتر میسازد. مقدار پیشفرض 1 است. محدوده قابل قبول "[0, 1]" است.
- timeclamp, tc
- تعیین timeclamp تبدیل. در فرکانسهای پایین، موازنهای بین دقت در حوزه زمان و حوزه فرکانس وجود دارد. اگر timeclamp کمتر باشد، رویداد در حوزه زمان با دقت بیشتری بازنمایی میشود (مانند طبل باس سریع)، در غیر این صورت رویداد در حوزه فرکانس با دقت بیشتری بازنمایی میشود (مانند گیتار باس). محدوده قابل قبول "[0.002, 1]" است. مقدار پیشفرض 0.17 است.
- attack
- تنظیم زمان خیز (attack) بر حسب ثانیه. پیشفرض 0 (غیرفعال) است. در غیر این صورت، نمونههای آینده را با اعمال پنجرهبندی نامتقارن در حوزه زمان محدود میکند، که زمانی که تأخیر کم مورد نیاز باشد مفید است. محدوده پذیرفتهشده "[0, 1]" است.
- basefreq
- تعیین فرکانس پایه تبدیل. مقدار پیشفرض 20.01523126408007475 است، که فرکانس ۵۰ سنت زیر E0 است. محدوده قابل قبول "[10, 100000]" است.
- endfreq
- تعیین فرکانس پایانی تبدیل. مقدار پیشفرض 20495.59681441799654 است، که فرکانس ۵۰ سنت بالای D#10 است. محدوده قابل قبول "[10, 100000]" است.
- coeffclamp
- این گزینه منسوخ شده و نادیده گرفته میشود.
- tlength
- تعیین طول تبدیل در حوزه زمان. از این گزینه برای کنترل موازنه دقت بین حوزه زمان و حوزه فرکانس در هر نمونه فرکانسی استفاده کنید. میتواند شامل متغیرهای زیر باشد:
- frequency, freq, f
- فرکانسی که در آن ارزیابی میشود
- timeclamp, tc
- مقدار گزینه timeclamp.
مقدار پیشفرض "384*tc/(384+tc*f)" است.
- count
- تعیین تعداد تبدیل برای هر فریم ویدیو. مقدار پیشفرض 6 است. محدوده قابل قبول "[1, 30]" است.
- fcount
- تعیین تعداد تبدیل برای هر تکپیکسل. مقدار پیشفرض 0 است، که باعث میشود به طور خودکار محاسبه شود. محدوده قابل قبول "[0, 10]" است.
- fontfile
- تعیین پرونده قلم برای استفاده با freetype جهت رسم محور. اگر مشخص نشود، از قلم تعبیهشده استفاده میشود. توجه داشته باشید که رسم با پرونده قلم یا قلم تعبیهشده با مقادیر سفارشی basefreq و endfreq پیادهسازی نشده است، به جای آن از گزینه axisfile استفاده کنید.
- font
- تعیین الگوی fontconfig. این گزینه اولویت کمتری نسبت به fontfile دارد. نویسه ":" در الگو ممکن است با "|" جایگزین شود تا از گریزهای غیرضروری جلوگیری شود.
- fontcolor
- تعیین عبارت رنگ قلم. این یک عبارت محاسباتی است که باید مقدار صحیح 0xRRGGBB را برگرداند. میتواند شامل متغیرهای زیر باشد:
- frequency, freq, f
- فرکانسی که در آن ارزیابی میشود
- timeclamp, tc
- مقدار گزینه timeclamp
و توابع:
- midi(f)
- شماره مدی برای فرکانس f، برخی شمارههای مدی: E0(16), C1(24), C2(36), A4(69)
- r(x), g(x), b(x)
- مقدار قرمز، سبز و آبی برای شدت x.
مقدار پیشفرض عبارت است از: "st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1))".
- axisfile
- تعیین پرونده تصویر برای رسم محور. این گزینه بر گزینههای fontfile و fontcolor اولویت دارد.
- axis, text
- فعال/غیرفعال کردن رسم متن روی محور. اگر روی 0 تنظیم شود، رسم روی محور غیرفعال شده و گزینههای fontfile و axisfile نادیده گرفته میشوند. مقدار پیشفرض 1 است.
- csp
- تنظیم فضای رنگی (colorspace). مقادیر پذیرفتهشده عبارتند از:
- cscheme
- تنظیم طرح رنگ اسپکتروگرام. این فهرستی از مقادیر ممیز شناور با فرمت "left_r|left_g|left_b|right_r|right_g|right_b" است. پیشفرض "1|0.5|0|0|0.5|1" است.
مثالها
- پخش صدا
همزمان با
نمایش طیف:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
- همانند
بالا، اما
با نرخ فریم
30 فریم در
ثانیه:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
- پخش در وضوح
1280x720:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
- غیرفعال
کردن نمایش
سونوگرام:
sono_h=0
- نت A1 و
هارمونیکهای
آن: A1, A2, (near)E3, A3:
ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t), asplit[a][out1]; [a] showcqt [out0]' - همانند
بالا، اما
با دقت
بیشتر در
حوزه
فرکانس:
ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t), asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]' - بلندی صدای
سفارشی:
bar_v=10:sono_v=bar_v*a_weighting(f)
- گامای
سفارشی،
اکنون طیف
نسبت به
دامنه خطی
است:
bar_g=2:sono_g=2
- معادله
سفارشی tlength:
tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
- قلم و رنگ
قلم
سفارشی، نت
C با رنگ سبز
و بقیه با
رنگ آبی
نمایش داده
میشوند:
fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
- قلم سفارشی
با استفاده
از fontconfig:
font='Courier New,Monospace,mono|bold'
- محدوده
فرکانس
سفارشی با
محور
سفارشی با
استفاده از
پرونده
تصویر:
axisfile=myaxis.png:basefreq=40:endfreq=10000
showcwt
تبدیل صدای ورودی به خروجی ویدیو که طیف فرکانسی را با استفاده از تبدیل موجک پیوسته (Continuous Wavelet Transform) و موجک مورلت بازنمایی میکند.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. برای سینتکس این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "640x512" است.
- rate, r
- تنظیم نرخ فریم خروجی. مقدار پیشفرض 25 است.
- scale
- تنظیم مقیاس فرکانسی مورد استفاده. مقادیر مجاز عبارتند از:
مقدار پیشفرض "linear" است.
- iscale
- تنظیم مقیاس شدت مورد استفاده. مقادیر مجاز عبارتند از:
مقدار پیشفرض "log" است.
- min
- تنظیم حداقل فرکانسی که در خروجی استفاده خواهد شد. پیشفرض 20 هرتز است.
- max
- تنظیم حداکثر فرکانسی که در خروجی استفاده خواهد شد. پیشفرض 20000 هرتز است. حد بالای فرکانس واقعی به نرخ نمونهبرداری صدای ورودی بستگی دارد و هنگامی که مقداری بزرگتر از فرکانس نایکویست تنظیم شود، این محدودیت روی این مقدار اعمال خواهد شد.
- imin
- تنظیم حداقل شدتی که در خروجی استفاده خواهد شد.
- imax
- تنظیم حداکثر شدتی که در خروجی استفاده خواهد شد.
- logb
- تنظیم مبنای لگاریتمی برای میزان روشنایی هنگام نگاشت مقادیر بزرگی محاسبهشده به مقادیر پیکسل. محدوده مجاز از 0 تا 1 است. مقدار پیشفرض 0.0001 است.
- deviation
- تنظیم انحراف فرکانس. مقادیر کمتر از 1 بیشتر مبتنی بر فرکانس هستند، در حالی که مقادیر بیشتر از 1 بیشتر مبتنی بر زمان هستند. محدوده مجاز از 0 تا 10 است. مقدار پیشفرض 1 است.
- pps
- تنظیم تعداد پیکسلهای خروجی در هر ثانیه در یک سطر. محدوده مجاز از 1 تا 1024 است. مقدار پیشفرض 64 است.
- mode
- تنظیم حالت بصری خروجی. مقادیر مجاز عبارتند از:
مقدار پیشفرض "magnitude" است.
- slide
- تنظیم روش لغزش خروجی. مقادیر مجاز عبارتند از:
- direction
- تنظیم روش جهت برای روش لغزش خروجی. مقادیر مجاز عبارتند از:
showfreqs
تبدیل صدای ورودی به خروجی ویدیویی که طیف توان صوتی را نمایش میدهد. دامنه صدا بر روی محور Y قرار دارد در حالی که بسامد (فرکانس) بر روی محور X است.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو. برای نحوه نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. پیشفرض "1024x512" است.
- rate, r
- تنظیم نرخ فریم ویدیو. پیشفرض 25 است.
- mode
- تنظیم حالت
نمایش. این
گزینه مشخص
میکند که
هر بخش
فرکانسی (frequency bin)
چگونه
نمایش داده
شود.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "bar" است.
- ascale
- تنظیم
مقیاس
دامنه.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "log" است.
- fscale
- تنظیم
مقیاس
فرکانس.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "lin" است.
- win_size
- تنظیم
اندازه
پنجره.
محدوده
مجاز از 16 تا
65536 است.
پیشفرض 2048 است.
- win_func
- تنظیم تابع
پنجرهگذاری.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "hanning" است.
- overlap
- تنظیم همپوشانی پنجره. در محدوده "[0, 1]". مقدار پیشفرض 1 است، به این معنی که همپوشانی بهینه برای تابع پنجره انتخابشده برگزیده خواهد شد.
- averaging
- تنظیم میانگینگیری زمانی. تنظیم این گزینه بر روی 0 قلههای بیشینه فعلی را نمایش میدهد. پیشفرض 1 است که به معنی غیرفعال بودن میانگینگیری زمانی است.
- colors
- تعیین فهرست رنگها جداشده با فاصله یا با '|' که برای رسم فرکانسهای کانال استفاده خواهند شد. رنگهای ناشناخته یا از قلم افتاده با رنگ سفید جایگزین خواهند شد.
- cmode
- تنظیم حالت
نمایش
کانال.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "combined" است.
- minamp
- تنظیم حداقل دامنه استفادهشده در مقیاسبخش دامنه "log".
- data
- تنظیم حالت
نمایش داده.
این گزینه مقادیر زیر را میپذیرد:
پیشفرض "magnitude" است.
- channels
- تنظیم کانالهای مورد استفاده هنگام پردازش صدا. به طور پیشفرض تمام کانالها پردازش میشوند.
showspatial
تبدیل صدای ورودی استریو به یک خروجی ویدیو که رابطه فضایی بین دو کانال را نمایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. برای نحوه نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "512x512" است.
- win_size
- تنظیم اندازه پنجره. محدوده مجاز از 1024 تا 65536 است. اندازه پیشفرض 4096 است.
- win_func
- تنظیم تابع
پنجره.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض "hann" است.
- rate, r
- تنظیم نرخ فریم خروجی.
showspectrum
تبدیل صدای ورودی به یک خروجی ویدیو که طیف فرکانسی صدا را نمایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. برای نحوه نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "640x512" است.
- slide
- تعیین
چگونگی
لغزش طیف در
طول پنجره.
این گزینه مقادیر زیر را میپذیرد:
- replace
- نمونهها پس از رسیدن به سمت راست، مجدداً از سمت چپ آغاز میشوند
- scroll
- نمونهها از راست به چپ پیمایش میشوند
- fullframe
- فریمها تنها زمانی تولید میشوند که نمونهها به سمت راست برسند
- rscroll
- نمونهها از چپ به راست پیمایش میشوند
- lreplace
- نمونهها پس از رسیدن به سمت چپ، مجدداً از سمت راست آغاز میشوند
مقدار پیشفرض "replace" است.
- mode
- تعیین حالت
نمایش.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض combined است.
- color
- تعیین حالت
رنگی نمایش.
این گزینه مقادیر زیر را میپذیرد:
- channel
- هر کانال با رنگی مجزا نمایش داده میشود
- intensity
- هر کانال با طرح رنگی یکسان نمایش داده میشود
- rainbow
- هر کانال با طرح رنگینکمانی نمایش داده میشود
- moreland
- هر کانال با طرح رنگی moreland نمایش داده میشود
- nebulae
- هر کانال با طرح رنگی nebulae نمایش داده میشود
- fire
- هر کانال با طرح رنگی آتش نمایش داده میشود
- fiery
- هر کانال با طرح رنگی آتشی نمایش داده میشود
- fruit
- هر کانال با طرح رنگی میوهای نمایش داده میشود
- cool
- هر کانال با طرح رنگی خنک نمایش داده میشود
- magma
- هر کانال با طرح رنگی ماگما نمایش داده میشود
- green
- هر کانال با طرح رنگی سبز نمایش داده میشود
- viridis
- هر کانال با طرح رنگی viridis نمایش داده میشود
- plasma
- هر کانال با طرح رنگی plasma نمایش داده میشود
- cividis
- هر کانال با طرح رنگی cividis نمایش داده میشود
- terrain
- هر کانال با طرح رنگی terrain نمایش داده میشود
مقدار پیشفرض channel است.
- scale
- تعیین
مقیاس مورد
استفاده
برای
محاسبه
مقادیر رنگ
شدت (intensity).
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض sqrt است.
- fscale
- تعیین
مقیاس
فرکانس.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض lin است.
- saturation
- تنظیم ضریب اشباع برای رنگهای نمایشدادهشده. مقادیر منفی طرح رنگی متفاوتی ارائه میدهند. 0 یعنی بدون هیچ اشباع رنگی. اشباع باید در محدوده [-10.0, 10.0] باشد. مقدار پیشفرض 1 است.
- win_func
- تنظیم تابع
پنجره.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض "hann" است.
- orientation
- تنظیم جهتگیری محور زمان در برابر فرکانس. میتواند "vertical" (عمودی) یا "horizontal" (افقی) باشد. پیشفرض "vertical" است.
- overlap
- تنظیم نسبت همپوشانی پنجره. مقدار پیشفرض 0 است. هنگامی که مقدار 1 باشد، همپوشانی بر روی اندازه توصیهشده برای تابع پنجره خاصی که در حال حاضر استفاده میشود تنظیم میگردد.
- gain
- تنظیم بهره مقیاس برای محاسبه مقادیر رنگ شدت. مقدار پیشفرض 1 است.
- data
- تنظیم اینکه کدام داده نمایش داده شود. میتواند "magnitude" (پیشفرض) یا "phase"، یا فاز بازشده: "uphase" باشد.
- rotation
- تنظیم چرخش رنگ، باید در محدوده [-1.0, 1.0] باشد. مقدار پیشفرض 0 است.
- start
- تنظیم فرکانس آغازین که طیفنگار از آن نمایش داده میشود. پیشفرض 0 است.
- stop
- تنظیم فرکانس پایانی که طیفنگار تا آن نمایش داده میشود. پیشفرض 0 است.
- fps
- تنظیم حد بالای نرخ فریم. پیشفرض "auto"، نامحدود است.
- legend
- رسم محورها و راهنمای زمان و فرکانس. پیشفرض غیرفعال است.
- drange
- تنظیم محدوده دینامیکی مورد استفاده برای محاسبه مقادیر رنگ شدت. پیشفرض 120 dBFS است. محدوده مجاز از 10 تا 200 است.
- limit
- تنظیم حد بالای حجم صدای نمونههای صوتی ورودی بر حسب dBFS. پیشفرض 0 dBFS است. محدوده مجاز از -100 تا 100 است.
- opacity
- تنظیم میزان ماتی (opacity) هنگام استفاده از خروجی قالب پیکسلی دارای مؤلفه آلفا.
کاربرد آن بسیار شبیه به فیلتر showwaves است؛ مثالهای آن بخش را ببینید.
مثالها
- پنجره بزرگ
با
مقیاسبندی
رنگی
لگاریتمی:
showspectrum=s=1280x480:scale=log
- مثال کامل
برای یک طیف
رنگی و
لغزان به
ازای هر
کانال با
استفاده از
ffplay:
ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1]; [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
showspectrumpic
تبدیل صدای ورودی به یک تکفریم ویدیو که طیف فرکانسی صدا را نمایش میدهد.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. برای نحوه نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "4096x2048" است.
- mode
- تعیین حالت
نمایش.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض combined است.
- color
- تعیین حالت
رنگی نمایش.
این گزینه مقادیر زیر را میپذیرد:
- channel
- هر کانال با رنگی مجزا نمایش داده میشود
- intensity
- هر کانال با طرح رنگی یکسان نمایش داده میشود
- rainbow
- هر کانال با طرح رنگینکمانی نمایش داده میشود
- moreland
- هر کانال با طرح رنگی moreland نمایش داده میشود
- nebulae
- هر کانال با طرح رنگی nebulae نمایش داده میشود
- fire
- هر کانال با طرح رنگی آتش نمایش داده میشود
- fiery
- هر کانال با طرح رنگی آتشی نمایش داده میشود
- fruit
- هر کانال با طرح رنگی میوهای نمایش داده میشود
- cool
- هر کانال با طرح رنگی خنک نمایش داده میشود
- magma
- هر کانال با طرح رنگی ماگما نمایش داده میشود
- green
- هر کانال با طرح رنگی سبز نمایش داده میشود
- viridis
- هر کانال با طرح رنگی viridis نمایش داده میشود
- plasma
- هر کانال با طرح رنگی plasma نمایش داده میشود
- cividis
- هر کانال با طرح رنگی cividis نمایش داده میشود
- terrain
- هر کانال با طرح رنگی terrain نمایش داده میشود
مقدار پیشفرض intensity است.
- scale
- تعیین
مقیاس مورد
استفاده
برای
محاسبه
مقادیر رنگ
شدت.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض log است.
- fscale
- تعیین
مقیاس
فرکانس.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض lin است.
- saturation
- تنظیم ضریب اشباع برای رنگهای نمایشدادهشده. مقادیر منفی طرح رنگی متفاوتی ارائه میدهند. 0 یعنی بدون هیچ اشباع رنگی. اشباع باید در محدوده [-10.0, 10.0] باشد. مقدار پیشفرض 1 است.
- win_func
- تنظیم تابع
پنجره.
این گزینه مقادیر زیر را میپذیرد:
مقدار پیشفرض "hann" است.
- orientation
- تنظیم جهتگیری محور زمان در برابر فرکانس. میتواند "vertical" (عمودی) یا "horizontal" (افقی) باشد. پیشفرض "vertical" است.
- gain
- تنظیم بهره مقیاس برای محاسبه مقادیر رنگ شدت. مقدار پیشفرض 1 است.
- legend
- رسم محورها و راهنمای زمان و فرکانس. پیشفرض فعال است.
- rotation
- تنظیم چرخش رنگ، باید در محدوده [-1.0, 1.0] باشد. مقدار پیشفرض 0 است.
- start
- تنظیم فرکانس آغازین که طیفنگار از آن نمایش داده میشود. پیشفرض 0 است.
- stop
- تنظیم فرکانس پایانی که طیفنگار تا آن نمایش داده میشود. پیشفرض 0 است.
- drange
- تنظیم محدوده دینامیکی مورد استفاده برای محاسبه مقادیر رنگ شدت. پیشفرض 120 dBFS است. محدوده مجاز از 10 تا 200 است.
- limit
- تنظیم حد بالای حجم صدای نمونههای صوتی ورودی بر حسب dBFS. پیشفرض 0 dBFS است. محدوده مجاز از -100 تا 100 است.
- opacity
- تنظیم میزان ماتی (opacity) هنگام استفاده از خروجی قالب پیکسلی دارای مؤلفه آلفا.
مثالها
- •
- استخراج یک
طیفنگار
صوتی از کل
یک قطعه
صوتی در یک
تصویر 1024x1024 با
استفاده از
ffmpeg:
ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
showvolume
تبدیل حجم صدای ورودی به یک خروجی ویدیو.
این فیلتر گزینههای زیر را میپذیرد:
- rate, r
- تنظیم نرخ فریم ویدیو.
- b
- تنظیم پهنای کادر، محدوده مجاز [0, 5] است. پیشفرض 1 است.
- w
- تنظیم پهنای کانال، محدوده مجاز [80, 8192] است. پیشفرض 400 است.
- h
- تنظیم ارتفاع کانال، محدوده مجاز [1, 900] است. پیشفرض 20 است.
- f
- تنظیم محوشدگی (fade)، محدوده مجاز [0, 1] است. پیشفرض 0.95 است.
- c
- تنظیم
عبارت رنگ
حجم صدا.
این عبارت میتواند از متغیرهای زیر استفاده کند:
- t
- در صورت تنظیم، نام کانالها را نمایش میدهد. پیشفرض فعال است.
- v
- در صورت تنظیم، مقادیر حجم صدا را نمایش میدهد. پیشفرض فعال است.
- o
- تنظیم جهتگیری، میتواند افقی: "h" یا عمودی: "v" باشد، پیشفرض "h" است.
- s
- تنظیم اندازه گام، محدوده مجاز [0, 5] است. پیشفرض 0 است، به این معنی که گام غیرفعال است.
- p
- تنظیم ماتی پسزمینه، محدوده مجاز [0, 1] است. پیشفرض 0 است.
- m
- تنظیم حالت سنجش، میتواند اوج (peak): "p" یا rms: "r" باشد، پیشفرض "p" است.
- ds
- تنظیم مقیاس نمایش، میتواند خطی: "lin" یا لگاریتمی: "log" باشد، پیشفرض "lin" است.
- dm
- بر حسب ثانیه. در صورت تنظیم روی > 0.، خطی را برای سطح بیشینه در ثانیههای پیشین نمایش میدهد. پیشفرض غیرفعال است: 0.
- dmc
- رنگ خط بیشینه. هنگامی که گزینه "dm" روی > 0 تنظیم شده باشد استفاده میشود. پیشفرض: "orange" است.
showwaves
تبدیل صدای ورودی به یک خروجی ویدیو، به عنوان نمایش امواج نمونهها.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. برای نحوه نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "600x240" است.
- mode
- تنظیم حالت
نمایش.
مقادیر موجود عبارتند از:
مقدار پیشفرض "point" است.
- n
- تنظیم تعداد نمونههایی که در یک ستون رسم میشوند. مقدار بزرگتر نرخ فریم را کاهش میدهد. باید یک عدد صحیح مثبت باشد. این گزینه تنها زمانی قابل تنظیم است که مقدار rate به صراحت مشخص نشده باشد.
- rate, r
- تنظیم نرخ فریم خروجی (تقریبی). این کار با تنظیم گزینه n انجام میگیرد. مقدار پیشفرض "25" است.
- split_channels
- تنظیم اینکه آیا کانالها باید جداگانه رسم شوند یا همپوشانی داشته باشند. مقدار پیشفرض 0 است.
- colors
- تنظیم رنگهای جداشده با '|' که برای رسم هر کانال استفاده خواهند شد.
- scale
- تنظیم
مقیاس
دامنه.
مقادیر موجود عبارتند از:
پیشفرض خطی است.
- draw
- تنظیم حالت
رسم. این
گزینه
بیشتر برای
مقادیر
بالای n
کاربرد
دارد.
مقادیر موجود عبارتند از:
- scale
- مقیاسبندی مقادیر پیکسلی برای هر نمونه رسمشده.
- full
- رسم مستقیم هر نمونه.
مقدار پیشفرض "scale" است.
مثالها
- خروجی دادن
همزمان
صدای فایل
ورودی و
بازنمایی
ویدیویی
متناظر با
آن:
amovie=a.mp3,asplit[out0],showwaves[out1]
- ایجاد یک
سیگنال
ساختگی و
نمایش آن با
showwaves، با
اجبار نرخ
فریم به 30
فریم بر
ثانیه:
aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
showwavespic
تبدیل صدای ورودی به یک تکفریم ویدیو، به عنوان نمایش امواج نمونهها.
این فیلتر گزینههای زیر را میپذیرد:
- size, s
- تعیین اندازه ویدیو برای خروجی. برای نحوه نگارش این گزینه، بخش "Video size" در راهنمای ffmpeg-utils را بررسی کنید. مقدار پیشفرض "600x240" است.
- split_channels
- تنظیم اینکه آیا کانالها باید جداگانه رسم شوند یا همپوشانی داشته باشند. مقدار پیشفرض 0 است.
- colors
- تنظیم رنگهای جداشده با '|' که برای رسم هر کانال استفاده خواهند شد.
- scale
- تنظیم
مقیاس
دامنه.
مقادیر موجود عبارتند از:
پیشفرض خطی است.
- draw
- تنظیم حالت
رسم.
مقادیر موجود عبارتند از:
- scale
- مقیاسبندی مقادیر پیکسلی برای هر نمونه رسمشده.
- full
- رسم مستقیم هر نمونه.
مقدار پیشفرض "scale" است.
- filter
- تنظیم حالت
فیلتر.
مقادیر موجود عبارتند از:
مقدار پیشفرض "average" است.
مثالها
- •
- استخراج
بازنمایی
تفکیکشده
کانالها
از شکل موج
کل یک قطعه
صوتی در یک
تصویر 1024x800 با
استفاده از
ffmpeg:
ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
sidedata, asidedata
حذف دادههای جانبی (side data) فریم، یا انتخاب فریمها بر پایه آن.
این فیلتر گزینههای زیر را میپذیرد:
- mode
- تنظیم حالت
عملکرد
فیلتر.
میتواند یکی از موارد زیر باشد:
- type
- تنظیم نوع
داده جانبی
مورد
استفاده در
تمام
حالتها.
برای حالت
"select"
الزامی است.
مقادیر ممکن عبارتند از:
- PANSCAN
- A53_CC
- STEREO3D
- MATRIXENCODING
- DOWNMIX_INFO
- REPLAYGAIN
- DISPLAYMATRIX
- AFD
- MOTION_VECTORS
- SKIP_SAMPLES
- AUDIO_SERVICE_TYPE
- MASTERING_DISPLAY_METADATA
- GOP_TIMECODE
- SPHERICAL
- CONTENT_LIGHT_LEVEL
- ICC_PROFILE
- S12M_TIMECODE
- DYNAMIC_HDR_PLUS
- REGIONS_OF_INTEREST
- VIDEO_ENC_PARAMS
- SEI_UNREGISTERED
- FILM_GRAIN_PARAMS
- DETECTION_BOUNDING_BOXES
- DETECTION_BBOXES
- DOVI_RPU_BUFFER
- DOVI_METADATA
- DYNAMIC_HDR_VIVID
- AMBIENT_VIEWING_ENVIRONMENT
- VIDEO_HINT
spectrumsynth
سنتز صدا از ۲ طیف ویدیویی ورودی، جریان ورودی اول نشاندهنده دامنه در طول زمان و جریان دوم نشاندهنده فاز در طول زمان است. این فیلتر از حوزه فرکانس به صورت نمایشیافته در ویدیوها به حوزه زمان به عنوان خروجی صوتی تبدیل میکند.
این فیلتر در درجه اول برای معکوس کردن خروجیهای پردازششده فیلتر showspectrum ایجاد شده است، اما میتواند صدا را از سایر طیفنگارها نیز سنتز کند. اما در چنین حالتی اگر دادههای فاز در دسترس نباشند نتایج ضعیف خواهند بود، زیرا در چنین مواردی دادههای فاز باید بازسازی شوند، که معمولاً تنها از نویز تصادفی بازسازی میشوند. برای بهترین نتایج از خروجی فقط خاکستری (حالت رنگی "channel" در فیلتر showspectrum) و مقیاس "log" برای ویدیوی دامنه و مقیاس "lin" برای ویدیوی فاز استفاده کنید. برای تولید فاز برای ویدیوی دوم، از گزینه "data" استفاده کنید. ویدیوهای ورودی معمولاً باید از حالت لغزش "fullframe" استفاده کنند زیرا این کار منابع مورد نیاز برای رمزگشایی ویدیو را صرفهجویی میکند.
این فیلتر گزینههای زیر را میپذیرد:
- sample_rate
- تعیین نرخ نمونهبرداری صدای خروجی، نرخ نمونهبرداری صدایی که طیف از آن تولید شده بود ممکن است متفاوت باشد.
- channels
- تنظیم تعداد کانالهای ارائهشده در طیفهای ویدیویی ورودی.
- scale
- تنظیم مقیاسی که هنگام تولید طیف ورودی دامنه استفاده شده بود. میتواند "lin" یا "log" باشد. پیشفرض "log" است.
- slide
- تنظیم لغزشی که هنگام تولید طیفهای ورودی استفاده شده بود. میتواند "replace"، "scroll"، "fullframe" یا "rscroll" باشد. پیشفرض "fullframe" است.
- win_func
- تنظیم تابع پنجره مورد استفاده برای بازسنتز.
- overlap
- تنظیم همپوشانی پنجره. در محدوده "[0, 1]". مقدار پیشفرض 1 است، به این معنی که همپوشانی بهینه برای تابع پنجره انتخابشده برگزیده خواهد شد.
- orientation
- تنظیم جهتگیری ویدیوهای ورودی. میتواند "vertical" یا "horizontal" باشد. پیشفرض "vertical" است.
مثالها
- •
- ابتدا
ویدیوهای
دامنه و فاز
را از صدا
ایجاد
کنید، با
فرض اینکه
صدا استریو
با نرخ
نمونهبرداری
44100 است، سپس
ویدیوها را
با spectrumsynth
مجدداً به
صدا
بازسنتز
کنید:
ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
split, asplit
تقسیم ورودی به چند خروجی یکسان.
"asplit" با ورودی صوتی کار میکند، و "split" با ویدیویی.
این فیلتر یک پارامتر منفرد میپذیرد که تعداد خروجیها را مشخص میکند. در صورت عدم تعیین، مقدار پیشفرض آن 2 است.
مثالها
- ایجاد دو
خروجی مجزا
از یک ورودی
یکسان:
[in] split [out0][out1]
- برای ایجاد
3 خروجی یا
بیشتر،
باید تعداد
خروجیها
را مشخص
کنید،
مانند:
[in] asplit=3 [out0][out1][out2]
- ایجاد دو
خروجی مجزا
از یک ورودی
یکسان، یکی
برشخورده
و دیگری
دارای
حاشیه (pad):
[in] split [splitout1][splitout2]; [splitout1] crop=100:100:0:0 [cropout]; [splitout2] pad=200:200:100:100 [padout];
- ایجاد 5
نسخه
رونوشت از
صدای ورودی
با ffmpeg:
ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
zmq, azmq
دریافت دستورهای ارسالشده از طریق یک کلاینت libzmq، و هدایت آنها به فیلترها در گراف فیلتر (filtergraph).
"zmq" و "azmq" به عنوان فیلترهای عبوری عمل میکنند. "zmq" باید میان دو فیلتر ویدیویی درج شود، و "azmq" میان دو فیلتر صوتی. هر دو قادرند پیامها را به هر نوع فیلتری ارسال کنند.
برای فعالسازی این فیلترها باید کتابخانه libzmq و فایلهای سرآیند آن را نصب کرده و FFmpeg را با گزینه "--enable-libzmq" پیکربندی کنید.
برای اطلاعات بیشتر درباره libzmq ببینید: http://www.zeromq.org
فیلترهای "zmq" و "azmq" به عنوان یک سرور libzmq کار میکنند، که پیامهای ارسالشده از طریق یک رابط شبکه تعریفشده توسط گزینه bind_address (یا کوتاهنوشت "b") را دریافت مینمایند. مقدار پیشفرض این گزینه tcp://localhost:5555 است. شما ممکن است بخواهید این مقدار را بر اساس نیاز خود تغییر دهید، اما فراموش نکنید هر علامت ':' را فرار دهید (به فرار در گراف فیلتر (filtergraph escaping) مراجعه کنید).
پیام دریافتشده باید به شکل زیر باشد:
<TARGET> <COMMAND> [<ARG>]
TARGET هدف دستور را مشخص میکند، معمولاً نام کلاس فیلتر یا یک نام نمونه فیلتر خاص است. نام پیشفرض نمونه فیلتر از الگوی Parsed_<filter_name>_<index> استفاده میکند، اما میتوانید با استفاده از دستور زبان filter_name@id آن را لغو کنید (به دستور زبان گراف فیلتر (Filtergraph syntax) مراجعه کنید).
COMMAND نام دستور برای فیلتر هدف را تعیین میکند.
ARG اختیاری است و فهرست آرگومانهای اختیاری را برای COMMAND دادهشده مشخص میکند.
پس از دریافت، پیام پردازش شده و دستور مربوطه به گراف فیلتر تزریق میشود. بسته به نتیجه، فیلتر پاسخی را به قالب زیر برای کلاینت ارسال خواهد کرد:
<ERROR_CODE> <ERROR_REASON> <MESSAGE>
MESSAGE اختیاری است.
مثالها
برای نمونهای از یک کلاینت zmq که میتواند برای ارسال دستورهای پردازششده توسط این فیلترها استفاده شود، به tools/zmqsend نگاه کنید.
گراف فیلتر زیر تولیدشده توسط ffplay را در نظر بگیرید. در این مثال آخرین فیلتر overlay دارای یک نام نمونه است. سایر فیلترها نامهای نمونه پیشفرض خواهند داشت.
ffplay -dumpgraph 1 -f lavfi " color=s=100x100:c=red [l]; color=s=100x100:c=blue [r]; nullsrc=s=200x100, zmq [bg]; [bg][l] overlay [bg+l]; [bg+l][r] overlay@my=x=100 "
برای تغییر رنگ سمت چپ ویدیو، دستور زیر را میتوان استفاده کرد:
echo Parsed_color_0 c yellow | tools/zmqsend
برای تغییر سمت راست:
echo Parsed_color_1 c pink | tools/zmqsend
برای تغییر موقعیت سمت راست:
echo overlay@my x 150 | tools/zmqsend
سورسهای چندرسانهای (MULTIMEDIA SOURCES)
در ادامه توصیفی از سورسهای چندرسانهای موجود فعلی ارائه شده است.
amovie
این سورس مانند movie است، با این تفاوت که به طور پیشفرض یک استریم صوتی را انتخاب میکند.
avsynctest
تولید یک آزمون هماهنگی صدا و تصویر (Audio/Video Sync Test).
استریم تولیدشده به صورت دورهای فریم ویدیویی چشمکزن (flash) را نشان داده و صدای بوق (beep) در صوت پخش میکند. برای بررسی مشکلات هماهنگی صدا و تصویر (A/V sync) مفید است.
این گزینه مقادیر زیر را میپذیرد:
- size, s
- تنظیم اندازه ویدیوی خروجی. مقدار پیشفرض "hd720" است.
- framerate, fr
- تنظیم نرخ فریم ویدیوی خروجی. مقدار پیشفرض 30 است.
- samplerate, sr
- تنظیم نرخ نمونهبرداری صدای خروجی. مقدار پیشفرض 44100 است.
- amplitude, a
- تنظیم دامنه بوق صوتی خروجی. مقدار پیشفرض 0.7 است.
- period, p
- تنظیم دوره تناوب بوق صوتی خروجی بر حسب ثانیه. مقدار پیشفرض 3 است.
- delay, dl
- تنظیم تأخیر فلاش ویدیوی خروجی بر حسب تعداد فریم. مقدار پیشفرض 0 است.
- cycle, c
- فعالسازی چرخه تأخیرهای ویدیو، به طور پیشفرض غیرفعال است.
- duration, d
- تنظیم مدتزمان خروجی استریم. به طور پیشفرض مدتزمان نامحدود است.
- fg, bg, ag
- تنظیم رنگ پیشزمینه/پسزمینه/اضافی.
دستورها
این سورس از برخی گزینههای فوق به عنوان دستور پشتیبانی میکند.
movie
خواندن استریم(های) صوتی و/یا ویدیویی از یک کانتینر فیلم.
این سورس پارامترهای زیر را میپذیرد:
- filename
- نام منبعی که باید خوانده شود (لزوماً یک فایل نیست؛ میتواند یک دستگاه یا یک استریم باشد که از طریق یک پروتکل در دسترس است).
- format_name, f
- قالب فرضی فیلم برای خواندن را مشخص میکند، و میتواند نام یک کانتینر یا یک دستگاه ورودی باشد. اگر مشخص نشود، قالب از movie_name یا با بررسی خودکار (probing) حدس زده میشود.
- seek_point, sp
- نقطه پرش (seek) را بر حسب ثانیه مشخص میکند. فریمها از این نقطه پرش به بعد در خروجی ارائه خواهند شد. این پارامتر با "av_strtod" ارزیابی میشود، بنابراین مقدار عددی ممکن است دارای پسوند IS باشد. مقدار پیشفرض "0" است.
- streams, s
- استریمها را برای خواندن مشخص میکند. چند استریم را میتوان با "+" جدا کرد. سپس سورس به همان تعداد خروجی با همان ترتیب خواهد داشت. دستور زبان در بخش "مشخصکنندههای استریم" در راهنمای ffmpeg توضیح داده شده است. دو نام ویژه، "dv" و "da" به ترتیب استریمهای ویدیویی و صوتی پیشفرض (مناسبترین) را مشخص میکنند. مقدار پیشفرض "dv" است، یا "da" در صورتی که فیلتر با نام "amovie" فراخوانی شود.
- stream_index, si
- اندیس استریم ویدیویی برای خواندن را مشخص میکند. اگر مقدار -1 باشد، مناسبترین استریم ویدیو به طور خودکار انتخاب خواهد شد. مقدار پیشفرض "-1" است. منسوخ شده است. اگر فیلتر با نام "amovie" فراخوانی شود، به جای ویدیو، صدا را انتخاب خواهد کرد.
- loop
- مشخص
میکند که
استریم چند
بار متوالی
خوانده شود.
اگر مقدار 0
باشد،
استریم به
طور
نامحدود
تکرار (loop)
خواهد شد.
مقدار
پیشفرض "1"
است.
توجه داشته باشید که با تکرار فیلم، برچسبهای زمانی منبع تغییر نمیکنند، بنابراین برچسبهای زمانی صعودی یکنواخت تولید نخواهد کرد.
- discontinuity
- اختلاف زمانی بین فریمها را مشخص میکند که بالاتر از آن، یک ناپیوستگی در برچسب زمانی تلقی شده و با تنظیم برچسبهای زمانی بعدی تصحیح میگردد.
- dec_threads
- تعداد نخها (threads) را برای رمزگشایی مشخص میکند.
- format_opts
- گزینههای
قالب را
برای فایل
بازشده
تعیین
میکند.
گزینههای
قالب را
میتوان به
صورت
فهرستی از
جفتهای
key=value جداشده
با ':' تعیین
کرد. مثال
زیر نحوه
افزودن
گزینههای
protocol_whitelist و protocol_blacklist را
نشان
میدهد:
ffplay -f lavfi "movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"
این سورس اجازه میدهد یک ویدیوی دوم را روی ورودی اصلی یک گراف فیلتر قرار دهید، همانطور که در این گراف نشان داده شده است:
input -----------> deltapts0 --> overlay --> output
^
|
movie --> scale--> deltapts1 -------+
مثالها
- رد کردن 3.2
ثانیه از
ابتدای
فایل AVI بنام
in.avi، و قرار
دادن آن روی
ورودی
دارای
برچسب "in":
movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over]; [in] setpts=PTS-STARTPTS [main]; [main][over] overlay=16:16 [out]
- خواندن از
یک دستگاه
video4linux2، و قرار
دادن آن روی
ورودی
دارای
برچسب "in":
movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over]; [in] setpts=PTS-STARTPTS [main]; [main][over] overlay=16:16 [out]
- خواندن
اولین
استریم
ویدیو و
استریم
صوتی با
شناسه 0x81 از
dvd.vob؛ ویدیو به
پد با نام
"video" و صدا به
پد با نام
"audio" متصل
میشود:
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
دستورها
هر دو movie و amovie از دستورهای زیر پشتیبانی میکنند:
- seek
- انجام پرش با استفاده از "av_seek_frame". دستور زبان به این صورت است: seek stream_index|timestamp|flags
- stream_index: اگر stream_index مقدار -1 باشد، استریم پیشفرض انتخاب شده و timestamp به طور خودکار از واحدهای AV_TIME_BASE به time_base ویژه استریم تبدیل میشود.
- timestamp: برچسب زمانی در واحدهای AVStream.time_base یا اگر استریمی مشخص نشده باشد، در واحدهای AV_TIME_BASE.
- flags: پرچمهایی که جهت و حالت پرش را تعیین میکنند.
- get_duration
- دریافت مدتزمان فیلم در واحدهای AV_TIME_BASE.
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
توسعهدهندگان FFmpeg.
برای جزئیات درباره نویسندگی، تاریخچه گیت پروژه (https://git.ffmpeg.org/ffmpeg) را مشاهده کنید، برای نمونه با وارد کردن دستور git log در دایرکتوری کد منبع FFmpeg، یا مرور مخزن آنلاین در https://git.ffmpeg.org/ffmpeg.
نگهدارندههای مؤلفههای خاص در پرونده MAINTAINERS در درخت کد منبع فهرست شدهاند.