| FFPLAY-ALL(1) | راهنمای ابزارهای چندرسانهای | FFPLAY-ALL(1) |
نام (NAME)
ffplay-all - مستندات جامع پخشکننده چندرسانهای FFplay همراه با تمامی کامپوننتها
خلاصه دستور (SYNOPSIS)
ffplay [گزینهها] [نشانی_اینترنتی_ورودی]
توضیحات (DESCRIPTION)
برنامه FFplay یک پخشکننده رسانهای بسیار ساده و پرتابل است که از کتابخانههای FFmpeg و کتابخانه SDL استفاده میکند. این برنامه بیشتر به عنوان بستری برای آزمودن رابطهای برنامهنویسی مختلف FFmpeg به کار میرود.
گزینهها (OPTIONS)
تمامی گزینههای عددی، چنانچه به نحو دیگری مشخص نشده باشد، یک رشته نشاندهنده یک عدد را به عنوان ورودی میپذیرند که ممکن است با یکی از پیشوندهای یکای بینالمللی (SI) مانند 'K'، 'M' یا 'G' همراه باشد.
اگر حرف 'i' به پیشوند یکای SI الحاق شود، پیشوند کامل به عنوان پیشوند برای مضارب دودویی تفسیر میشود که بر پایه توانهای ۱۰۲۴ به جای توانهای ۱۰۰۰ هستند. افزودن 'B' به پیشوند یکای SI مقدار را در ۸ ضرب میکند. این اجازه میدهد تا به عنوان مثال از 'KB'، 'MiB'، 'G' و 'B' به عنوان پسوندهای عددی استفاده شود.
گزینههایی که آرگومان دریافت نمیکنند، گزینههای بولی هستند و مقدار مربوطه را روی درست (true) تنظیم میکنند. میتوان آنها را با افزودن پیشوند "no" به نام گزینه روی نادرست (false) تنظیم کرد. به عنوان مثال استفاده از "-nofoo" گزینه بولی با نام "foo" را روی false قرار میدهد.
گزینههای دارای آرگومان از یک ساختار نحوی ویژه پشتیبانی میکنند که در آن آرگومان دادهشده در خط فرمان به عنوان مسیری به فایلی تفسیر میشود که مقدار واقعی آرگومان از آن بارگیری میشود. برای استفاده از این قابلیت، یک ممیز رو به جلو '/' بلافاصله پیش از نام گزینه (پس از خط تیره ابتدایی) اضافه کنید. برای نمونه:
ffplay -/vf filter.script input.mp4
توصیف گراف فیلتر را از فایلی به نام filter.script بارگیری میکند.
مشخصکنندههای استریم (Stream specifiers)
برخی گزینهها بهازایهراستریم اعمال میشوند، مانند نرخ بیت (bitrate) یا کدک. مشخصکنندههای استریم برای تعیین دقیق اینکه یک گزینه به کدام استریم (یا استریمها) تعلق دارد به کار میروند.
مشخصکننده استریم رشتهای است که عموماً به انتهای نام گزینه الحاق شده و با دونقطه (:) از آن جدا میشود. برای مثال، "-codec:a:1 ac3" حاوی مشخصکننده استریم "a:1" است که با دومین استریم صوتی مطابقت دارد. بنابراین، کدک ac3 را برای دومین استریم صوتی انتخاب خواهد کرد.
یک مشخصکننده استریم میتواند با چندین استریم مطابقت داشته باشد، به طوری که گزینه بر روی تمامی آنها اعمال شود. برای مثال مشخصکننده استریم در "-b:a 128k" با تمام استریمهای صوتی مطابقت دارد.
یک مشخصکننده استریم خالی با تمام استریمها مطابقت دارد. برای نمونه، "-codec copy" یا "-codec: copy" تمامی استریمها را بدون انکود مجدد کپی میکند.
شکلهای ممکن مشخصکنندههای استریم عبارتند از:
- stream_index
- با استریم دارای این اندیس مطابقت مییابد. برای مثال "-threads:1 4" تعداد ریسههای دومین استریم را روی 4 تنظیم میکند. اگر stream_index به عنوان یک مشخصکننده استریم اضافی استفاده شود (به پایین مراجعه کنید)، استریم شماره stream_index را از میان استریمهای منطبق انتخاب مینماید. شمارهگذاری استریمها بر اساس ترتیب استریمها به گونهای است که توسط libavformat شناسایی شدهاند، مگر زمانی که مشخصکننده گروه استریم یا شناسه برنامه (program ID) نیز مشخص شده باشد. در این حالت بر اساس ترتیب استریمها درون آن گروه یا برنامه خواهد بود.
- stream_type[:additional_stream_specifier]
- پارامتر stream_type یکی از موارد زیر است: 'v' یا 'V' برای ویدیو، 'a' برای صدا، 's' برای زیرنویس، 'd' برای داده، و 't' برای پیوستها. حرف 'v' با تمام استریمهای ویدیو مطابقت دارد، در حالی که 'V' تنها با استریمهای ویدیویی مطابقت دارد که تصاویر پیوستشده، تصاویر بندانگشتی (thumbnails) یا طرح جلد نیستند. اگر additional_stream_specifier استفاده شود، با استریمهایی مطابقت دارد که هم دارای این نوع باشند و هم با additional_stream_specifier مطابقت داشته باشند. در غیر این صورت، با تمام استریمهای از نوع مشخصشده مطابقت دارد.
- g:group_specifier[:additional_stream_specifier]
- با استریمهایی مطابقت دارد که در گروه دارای مشخصکننده group_specifier قرار دارند. اگر additional_stream_specifier استفاده شود، با استریمهایی مطابقت دارد که هم بخشی از گروه باشند و هم با additional_stream_specifier تطابق داشته باشند. group_specifier میتواند یکی از موارد زیر باشد:
- group_index
- تطابق با استریم دارای این اندیس گروه.
- #group_id or i:group_id
- تطابق با استریم دارای این شناسه گروه.
- p:program_id[:additional_stream_specifier]
- با استریمهایی مطابقت دارد که در برنامه با شناسه program_id قرار دارند. اگر additional_stream_specifier استفاده شود، با استریمهایی مطابقت دارد که هم بخشی از برنامه باشند و هم با additional_stream_specifier مطابقت داشته باشند.
- #stream_id or i:stream_id
- تطابق با استریم بر اساس شناسه استریم (مثلاً PID در کانتینر MPEG-TS).
- m:key[:value]
- با استریمهایی مطابقت دارد که تگ متادیتای key آنها دارای مقدار مشخصشده باشد. اگر value داده نشود، با استریمهایی که حاوی تگ دادهشده با هر مقداری باشند مطابقت مییابد. نویسه دونقطه ':' در key یا value باید با بکاسلش گریز داده شود (escape شود).
- disp:dispositions[:additional_stream_specifier]
- با استریمهای دارای وضعیت(های) مشخصشده مطابقت دارد. dispositions فهرستی از یک یا چند وضعیت (همانطور که توسط گزینه -dispositions چاپ میشود) است که با '+' به هم پیوستهاند.
- u
- با
استریمهای
دارای
پیکربندی
قابل
استفاده
مطابقت
مییابد؛
کدک باید
تعریف شده
باشد و
اطلاعات
اساسی
مانند
ابعاد
تصویر یا
نرخ
نمونهبرداری
صدا باید
موجود
باشند.
توجه داشته باشید که در ffplay، تطابق بر اساس متادیتا تنها برای فایلهای ورودی به درستی کار خواهد کرد.
گزینههای عمومی (Generic options)
این گزینهها میان تمامی ابزارهای مجموعه ff* به اشتراک گذاشته شدهاند.
- -L, -license
- نمایش مجوز برنامه.
- -h, -?, -help, --help [arg]
- نمایش
راهنما. یک
پارامتر
اختیاری
میتواند
برای
دریافت
راهنما
درباره یک
مؤلفه خاص
مشخص شود.
اگر هیچ
آرگومانی
مشخص
نگردد،
تنها
گزینههای
پایه
(غیرپیشرفته)
ابزار
نمایش داده
میشوند.
مقادیر ممکن برای arg عبارتند از:
- long
- چاپ گزینههای پیشرفته ابزار علاوه بر گزینههای پایه.
- full
- چاپ فهرست کامل تمامی گزینهها، شامل گزینههای مشترک و اختصاصی برای انکودرها، دیکودرها، دیماکسرها، ماکسرها، فیلترها و غیره.
- decoder=decoder_name
- چاپ اطلاعات تفصیلی درباره دیکودر با نام decoder_name. از گزینه -decoders برای دریافت فهرستی از تمام دیکودرها استفاده کنید.
- encoder=encoder_name
- چاپ اطلاعات تفصیلی درباره انکودر با نام encoder_name. از گزینه -encoders برای دریافت فهرستی از تمام انکودرها استفاده کنید.
- demuxer=demuxer_name
- چاپ اطلاعات تفصیلی درباره دیماکسر با نام demuxer_name. از گزینه -formats برای دریافت فهرستی از تمام دیماکسرها و ماکسرها استفاده کنید.
- muxer=muxer_name
- چاپ اطلاعات تفصیلی درباره ماکسر با نام muxer_name. از گزینه -formats برای دریافت فهرستی از تمام ماکسرها و دیماکسرها استفاده کنید.
- filter=filter_name
- چاپ اطلاعات تفصیلی درباره فیلتر با نام filter_name. از گزینه -filters برای دریافت فهرستی از تمام فیلترها استفاده کنید.
- bsf=bitstream_filter_name
- چاپ اطلاعات تفصیلی درباره فیلتر بیتاستریم با نام bitstream_filter_name. از گزینه -bsfs برای دریافت فهرستی از تمام فیلترهای بیتاستریم استفاده کنید.
- protocol=protocol_name
- چاپ اطلاعات تفصیلی درباره پروتکل با نام protocol_name. از گزینه -protocols برای دریافت فهرستی از تمام پروتکلها استفاده نمایید.
- -version
- نمایش نسخه برنامه و کتابخانهها.
- -buildconf
- نمایش پیکربندی ساخت (build)، یک گزینه در هر خط.
- -formats
- نمایش قالبهای در دسترس (شامل دستگاهها).
- -demuxers
- نمایش دیماکسرهای در دسترس.
- -muxers
- نمایش ماکسرهای در دسترس.
- -devices
- نمایش دستگاههای در دسترس.
- -codecs
- نمایش تمام
کدکهای
شناختهشده
برای
کتابخانه
libavcodec.
توجه داشته باشید که اصطلاح 'codec' در سرتاسر این مستندات به عنوان یک میانبر برای آنچه که به طور دقیقتر قالب بیتاستریم رسانه نامیده میشود به کار رفته است.
- -decoders
- نمایش دیکودرهای در دسترس.
- -encoders
- نمایش تمام انکودرهای در دسترس.
- -bsfs
- نمایش فیلترهای بیتاستریم در دسترس.
- -protocols
- نمایش پروتکلهای در دسترس.
- -filters
- نمایش فیلترهای در دسترس کتابخانه libavfilter.
- -pix_fmts
- نمایش فرمتهای پیکسل در دسترس.
- -sample_fmts
- نمایش فرمتهای نمونه صدای در دسترس.
- -layouts
- نمایش نامهای کانال و چیدمانهای استاندارد کانال.
- -dispositions
- نمایش وضعیتهای استریم.
- -colors
- نمایش نامهای رنگ شناختهشده.
- -sources device[,opt1=val1[,opt2=val2]...]
- نمایش
منابع
شناساییشده
خودکار
دستگاه
ورودی. برخی
دستگاهها
ممکن است
نامهای
منبع
وابسته به
سیستم را
ارائه دهند
که
نمیتوانند
به طور
خودکار
شناسایی
شوند.
نمیتوان
فرض کرد که
فهرست
ارائهشده
همیشه کامل
است.
ffmpeg -sources pulse,server=192.168.0.4
- -sinks device[,opt1=val1[,opt2=val2]...]
- نمایش
مقصدهای (sinks)
شناساییشده
خودکار
دستگاه
خروجی. برخی
دستگاهها
ممکن است
نامهای
مقصد
وابسته به
سیستم را
ارائه دهند
که به صورت
خودکار
شناسایی
نمیشوند.
نمیتوان
فرض کرد که
فهرست
ارائهشده
همیشه کامل
است.
ffmpeg -sinks pulse,server=192.168.0.4
- -loglevel [flags+]loglevel | -v [flags+]loglevel
- تنظیم سطح
لاگگیری و
فلگهای
مورد
استفاده
توسط
کتابخانه.
پیشوند اختیاری flags میتواند شامل مقادیر زیر باشد:
- repeat
- نشان میدهد که خروجیهای تکراری لاگ نباید به خط اول فشرده شوند و خط "Last message repeated n times" حذف خواهد شد.
- level
- نشان میدهد که خروجی لاگ باید یک پیشوند "[level]" را به هر خط پیام بیفزاید. این میتواند به عنوان جایگزینی برای رنگآمیزی لاگ استفاده شود، مثلاً هنگام ذخیره خروجی لاگ در فایل.
- time
- نشان میدهد که خطوط لاگ باید با اطلاعات زمان پیشوندگذاری شوند.
- datetime
- نشان میدهد که خطوط لاگ باید با اطلاعات تاریخ و زمان پیشوندگذاری شوند.
فلگها همچنین میتوانند به تنهایی با افزودن پیشوند '+'/'-' برای فعال/غیرفعالسازی یک فلگ منفرد بدون تأثیر بر سایر flags یا تغییر loglevel استفاده شوند. هنگام تنظیم همزمان flags و loglevel، یک جداکننده '+' میان آخرین مقدار flags و پیش از loglevel انتظار میرود.
پارامتر loglevel یک رشته یا یک عدد حاوی یکی از مقادیر زیر است:
- quiet, -8
- هیچ پیامی نشان ندهد؛ کاملاً ساکت باشد.
- panic, 0
- تنها خطاهای مرگباری را نمایش دهد که میتوانند منجر به کرش و فروپاشی فرایند شوند، مانند شکست assertion. در حال حاضر برای موردی استفاده نمیشود.
- fatal, 8
- تنها خطاهای مهلک را نشان دهد. اینها خطاهایی هستند که پس از آنها فرایند مطلقاً نمیتواند ادامه یابد.
- error, 16
- تمام خطاها را نمایش دهد، از جمله خطاهایی که برنامه قادر به بازیابی از آنها است.
- warning, 24
- تمام هشدارها و خطاها را نشان دهد. هر پیامی مرتبط با رویدادهای غیرمنتظره یا احتمالاً نادرست نمایش داده خواهد شد.
- info, 32
- پیامهای اطلاعرسانی را در طول پردازش نمایش دهد. این پیامها علاوه بر هشدارها و خطاها است. این مقدار پیشفرض است.
- verbose, 40
- مشابه "info"، اما با جزئیات و تفصیل بیشتر.
- debug, 48
- همه چیز را نمایش دهد، شامل اطلاعات اشکالزدایی.
- trace, 56
برای مثال جهت فعالسازی خروجی تکراری لاگ، افزودن پیشوند "level"، و تنظیم loglevel روی "verbose":
ffmpeg -loglevel repeat+level+verbose -i input output
مثال دیگری که خروجی تکراری لاگ را بدون تأثیر بر وضعیت جاری فلگ پیشوند "level" یا loglevel فعال میسازد:
ffmpeg [...] -loglevel +repeat
به طور پیشفرض برنامه در stderr لاگ میاندازد. اگر رنگآمیزی توسط ترمینال پشتیبانی شود، از رنگها برای نشانهگذاری خطاها و هشدارها استفاده میگردد. رنگآمیزی لاگ را میتوان با تنظیم متغیر محیطی AV_LOG_FORCE_NOCOLOR غیرفعال کرد، یا با تنظیم متغیر محیطی AV_LOG_FORCE_COLOR آن را اجباری نمود.
- -report
- ذخیره کامل
خط فرمان و
خروجی لاگ
در فایلی با
نام
"program-YYYYMMDD-HHMMSS.log"
در
دایرکتوری
جاری. این
فایل
میتواند
برای گزارش
اشکالات
بسیار
سودمند
باشد. این
گزینه
همچنین
"-loglevel debug" را
شامل
میشود.
تنظیم متغیر محیطی FFREPORT روی هر مقداری اثر یکسانی دارد. اگر این مقدار یک دنباله key=value جداشده با ':' باشد، این گزینهها بر گزارش تأثیر میگذارند؛ مقادیر گزینهها چنانچه حاوی نویسههای ویژه یا جداکننده گزینهها ':' باشند باید گریز داده شوند (به بخش "Quoting and escaping" در راهنمای ffmpeg-utils مراجعه کنید).
گزینههای زیر شناخته شده هستند:
- file
- تنظیم نام فایل مورد استفاده برای گزارش؛ %p به نام برنامه، %t به یک برچسب زمانی و "%%" به یک "%" ساده گسترش مییابد.
- level
- تنظیم سطح پرگویی لاگ با یک مقدار عددی (به "-loglevel" مراجعه کنید).
برای مثال، جهت ثبت یک گزارش در فایلی با نام ffreport.log با استفاده از سطح لاگ 32 (نام مستعار سطح لاگ "info"):
FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
خطاها در تجزیه متغیر محیطی مرگبار نیستند و در گزارش ظاهر نخواهند شد.
- جلوگیری از
چاپ بنر
کپیرایت و
بیلد.
تمامی ابزارهای FFmpeg معمولاً اطلاعیه حق نشر، گزینههای ساخت و نسخههای کتابخانهها را نمایش میدهند. از این گزینه میتوان برای جلوگیری از چاپ این اطلاعات استفاده کرد.
- -cpuflags flags (global)
- امکان
تنظیم و پاک
کردن
فلگهای
پردازنده (CPU)
را فراهم
میسازد.
این گزینه
برای اهداف
آزمایشی در
نظر گرفته
شده است. از
آن استفاده
نکنید مگر
اینکه
بدانید چه
کاری انجام
میدهید.
ffmpeg -cpuflags -sse+mmx ... ffmpeg -cpuflags mmx ... ffmpeg -cpuflags 0 ...
فلگهای ممکن برای این گزینه عبارتند از:
- -cpucount count (global)
- نادیدهگرفتن
تعداد
هستههای
پردازنده
شناساییشده.
این گزینه
برای اهداف
آزمایشی در
نظر گرفته
شده است. از
آن استفاده
نکنید مگر
اینکه
بدانید چه
کاری انجام
میدهید.
ffmpeg -cpucount 2
- -max_alloc bytes
- تنظیم سقف حداکثر اندازه برای تخصیص یک بلوک در حافظه هیپ (heap) توسط خانواده توابع malloc در ffmpeg. هنگام استفاده از این گزینه نهایت احتیاط را به خرج دهید. اگر از تمام عواقب انجام آن آگاهی ندارید از آن استفاده نکنید. مقدار پیشفرض INT_MAX است.
AVOptions
این گزینهها مستقیماً توسط کتابخانههای libavformat، libavdevice و libavcodec ارائه میشوند. برای مشاهده فهرست AVOptions موجود، از گزینه -help استفاده کنید. آنها به دو دسته تقسیم میشوند:
- generic
- این گزینهها را میتوان برای هر کانتینر، کدک یا دستگاهی تنظیم کرد. گزینههای عمومی برای کانتینرها/دستگاهها ذیل گزینههای AVFormatContext و برای کدکها ذیل گزینههای AVCodecContext فهرست شدهاند.
- private
- این گزینهها مختص کانتینر، دستگاه یا کدک دادهشده هستند. گزینههای اختصاصی ذیل کانتینرها/دستگاهها/کدکهای متناظر خود لیست شدهاند.
برای مثال جهت نوشتن یک هدر ID3v2.3 به جای هدر پیشفرض ID3v2.4 در یک فایل MP3، از گزینه اختصاصی id3v2_version در ماکسر MP3 استفاده کنید:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
تمامی گزینههای AVOptions کدک بهازایهراستریم هستند، و بنابراین باید یک مشخصکننده استریم به آنها پیوست شود:
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
در مثال فوق، یک استریم صوتی چندکاناله دو بار برای خروجی نگاشت شده است. اولین نمونه با کدک ac3 و نرخ بیت 640k انکود میشود. دومین نمونه به ۲ کانال کاهش مییابد (downmix) و با کدک aac کدگذاری میگردد. نرخ بیت 128k برای آن با استفاده از اندیس مطلق استریم خروجی مشخص شده است.
نکته: ساختار -nooption نمیتواند برای AVOptions بولی استفاده شود، از -option 0/-option 1 استفاده کنید.
نکته: شیوه قدیمی و غیرمستند تعیین AVOptions بهازایهراستریم با افزودن پیشوند v/a/s به ابتدای نام گزینه اکنون منسوخ شده است و به زودی حذف خواهد شد.
گزینههای اصلی (Main options)
- -x عرض
- اجبار به نمایش با این عرض (عرض تصویر).
- -y ارتفاع
- اجبار به نمایش با این ارتفاع (ارتفاع تصویر).
- -fs
- شروع در حالت تمام صفحه (fullscreen).
- -an
- غیرفعال کردن صدا.
- -vn
- غیرفعال کردن ویدیو.
- -sn
- غیرفعال کردن زیرنویس.
- -ss موقعیت
- پرش به موقعیت زمانی مشخصشده. توجه داشته باشید که در بیشتر قالبها امکان پرش کاملاً دقیق وجود ندارد، بنابراین ffplay به نزدیکترین نقطه کلیدی به این موقعیت پرش میکند.
- -t مدت_زمان
- پخش به میزان مشخصشده از صدا/ویدیو (به ثانیه).
- -bytes
- پرش بر پایه بایت به جای زمان.
- -seek_interval
- تنظیم فاصله سفارشی پرش (بر حسب ثانیه) هنگام استفاده از کلیدهای چپ/راست. پیشفرض ۱۰ ثانیه است.
- -nodisp
- غیرفعال کردن نمایش گرافیکی تصویر.
- -noborder
- نمایش پنجره بدون حاشیه (borderless window).
- -alwaysontop
- پنجره همواره در بالا قرار داشته باشد.
- -volume
- تنظیم بلندی صدای آغازین. 0 به معنای سکوت و 100 به معنای حجم صدای طبیعی بدون کاهش یا افزایش است.
- -f قالب
- اجبار قالب فایل ورودی.
- -window_title عنوان
- تنظیم عنوان پنجره (پیشفرض نام فایل ورودی است).
- -left موقعیت_افقی
- تنظیم موقعیت افقی x برای سمت چپ پنجره (پیشفرض پنجره وسطچین است).
- -top موقعیت_عمودی
- تنظیم موقعیت عمودی y برای بالای پنجره (پیشفرض پنجره وسطچین است).
- -loop تعداد
- تکرار پخش فیلم به میزان <تعداد> بار. مقدار 0 به معنای تکرار نامحدود است.
- -showmode حالت
- تنظیم حالت نمایش مورد استفاده. مقادیر ممکن عبارتند از:
- 0, video
- نمایش ویدیو
- 1, waves
- نمایش امواج صوتی
- 2, rdft
- نمایش باند فرکانس صوتی با استفاده از RDFT
مقدار پیشفرض "video" است. با فشردن کلید w میتوانید بین حالتها جابهجا شوید.
- -vf filtergraph
- ایجاد گراف فیلتر مشخصشده و استفاده از آن برای فیلتر کردن استریم ویدیو.
- -af filtergraph
- گراف فیلتر برای اعمال روی صدای ورودی.
- -i url
- خواندن از نشانی ورودی.
گزینههای پیشرفته (Advanced options)
- -stats
- چاپ آمارهای مختلف پخش شامل مدت استریم، پارامترهای کدک، موقعیت فعلی در استریم و رانش همگامسازی صدا/تصویر. برای غیرفعال کردن از "-nostats" استفاده کنید.
- -fast
- بهینهسازیهای غیراستاندارد برای افزایش سرعت.
- -genpts
- تولید pts (برچسبهای زمانی ارائه).
- -sync name
- تنظیم ساعت مرجع اصلی روی صدا ("type=audio")، ویدیو ("type=video") یا خارجی ("type=ext"). پیشفرض صدا است.
- -ast تعیینکننده_استریم_صدا
- انتخاب استریم صوتی دلخواه با استفاده از تعیینکننده استریم دادهشده.
- -vst تعیینکننده_استریم_ویدیو
- انتخاب استریم ویدیویی دلخواه با استفاده از تعیینکننده استریم دادهشده.
- -sst تعیینکننده_استریم_زیرنویس
- انتخاب استریم زیرنویس دلخواه با استفاده از تعیینکننده استریم دادهشده.
- -autoexit
- خروج خودکار از برنامه هنگام پایان یافتن پخش ویدیو.
- -exitonkeydown
- خروج در صورت فشرده شدن هر کلیدی روی صفحهکلید.
- -exitonmousedown
- خروج در صورت کلیک شدن هر دکمهای از موشواره (ماوس).
- -codec:media_specifier codec_name
- اجبار پیادهسازی یک دیکودر خاص برای استریم مشخصشده با media_specifier (شامل "a" برای صدا، "v" برای ویدیو و "s" برای زیرنویس).
- -acodec codec_name
- اجبار دیکودر صوتی خاص.
- -vcodec codec_name
- اجبار دیکودر ویدیویی خاص.
- -scodec codec_name
- اجبار دیکودر زیرنویس خاص.
- -autorotate
- چرخش خودکار ویدیو بر اساس فراداده فایل. به طور پیشفرض فعال است. برای غیرفعال کردن از -noautorotate استفاده کنید.
- -framedrop
- ریختن فریمهای ویدیویی (Drop frames) در صورت عدم هماهنگی ویدیو با صدا.
- -infbuf
- نامحدود کردن اندازه بافر ورودی، خواندن هرچه سریعتر دادهها از ورودی.
- -filter_threads nb_threads
- تعیین تعداد رشتههای پردازشی (threads) مورد استفاده برای پایپلاین فیلتر.
- -enable_vulkan
- استفاده از رندرکننده Vulkan به جای رندرکننده داخلی SDL. وابسته به libplacebo است.
- -vulkan_params
- پیکربندی ولکان (Vulkan) با استفاده از فهرستی از جفتهای key=value که با «:» از یکدیگر جدا شدهاند.
- -hwaccel
- استفاده از رمزگشایی با شتابدهنده سختافزاری. فعال کردن این گزینه، رندرکننده ولکان را به صورت خودکار فعال خواهد کرد.
- -video_bg الگو
- تنظیم الگوی پسزمینه ویدیو برای ویدیوهای شفاف (دارای کانال آلفا). برای الگوهای تکرنگ ساده میتوانید از نام رنگ یا کد رنگ به صورتی که در بخش Color در راهنمای ffmpeg-utils(1) مشخص شده است استفاده کنید. همچنین میتوانید از کلمه کلیدی ویژه "tiles"?R برای یک الگوی شطرنجی استفاده کنید که حالت پیشفرض نیز است. الگوی "none"?R بدون ترکیب آلفا (alpha blending) رندر را انجام میدهد و در واقع کانال آلفا را نادیده میگیرد.
هنگام پخش (While playing)
کلیدهای میانبر در زمان پخش:
- q, ESC
- خروج از برنامه.
- f
- جابهجایی بین حالت تمامصفحه و پنجرهای.
- p, فاصله (SPC)
- مکث (Pause) و ادامه پخش.
- m
- قطع/وصل صدا (Mute).
- 9, 0
- /, *
- کاهش و افزایش حجم صدا به ترتیب.
- a
- جابهجایی بین کانالهای صوتی در برنامه جاری.
- v
- جابهجایی بین کانالهای ویدیویی.
- t
- جابهجایی بین کانالهای زیرنویس در برنامه جاری.
- c
- جابهجایی بین برنامهها (Programs).
- w
- جابهجایی بین حالتهای نمایش صوتی یا فیلترهای ویدیویی.
- s
- گام به فریم بعدی (نمایش فریمبهفریم).
- چپ/راست (left/right)
- پرش به عقب/جلو به میزان ۱۰ ثانیه (یا فاصله سفارشی با -seek_interval).
- پایین/بالا (down/up)
- پرش به عقب/جلو به میزان ۱ دقیقه.
- صفحه بعد/صفحه قبل (page down/page up)
- پرش به فصل قبل/بعد (یا ۱۰ دقیقه عقب/جلو در صورت عدم وجود فصلها).
- راستکلیک موشواره (right mouse click)
- پرش به درصدی از فایل متناظر با عرض پنجره کلیکشده.
- دوبارکلیک چپ موشواره (left mouse double-click)
- تغییر وضعیت تمام صفحه.
سینتکس و قالبها (SYNTAX)
این بخش سینتکس و قالبهای مورد استفاده توسط کتابخانهها و ابزارهای FFmpeg را شرح میدهد.
نقلقول و گریز (Quoting and escaping)
ابزار FFmpeg سازوکار نقلقول و گریز (Quoting and Escaping) زیر را به کار میگیرد، مگر اینکه صریحاً چیز دیگری مشخص شده باشد. قواعد زیر اعمال میشوند:
- ' و \ نویسههای ویژه هستند (به ترتیب برای نقلقول و گریز/اسکیپ استفاده میشوند). علاوه بر آنها، بسته به سینتکس خاصی که اسکیپ و نقلقول در آن به کار میرود ممکن است نویسههای ویژهٔ دیگری نیز وجود داشته باشند.
- یک نویسهٔ ویژه با قرار دادن پیشوند \ قبل از آن اسکیپ میشود.
- تمام نویسههای محصور میان '' به صورت تحتاللفظی (literal) در رشتهٔ پردازششده گنجانده میشوند. خود نویسهٔ نقلقول ' نمیتواند داخل نقلقول قرار گیرد، بنابراین ممکن است لازم باشد نقلقول را ببندید و آن را اسکیپ کنید.
- فاصلههای خالی (whitespaces) ابتدایی و انتهایی، مگر اینکه اسکیپ یا در نقلقول قرار گرفته باشند، از رشتهٔ پردازششده حذف میشوند.
توجه داشته باشید که هنگام استفاده از خط فرمان یا یک اسکریپت، ممکن است لازم باشد یک سطح دوم از اسکیپ کردن را اضافه کنید، که به سینتکس زبان پوسته (shell) مورد استفاده بستگی دارد.
تابع "av_get_token" تعریفشده در libavutil/avstring.h میتواند برای تجزیه توکنی که بر اساس قواعد تعریفشده در بالا نقلقول یا اسکیپ شده است استفاده شود.
ابزار tools/ffescape در درخت منبع FFmpeg میتواند برای نقلقول یا اسکیپ کردن خودکار یک رشته در اسکریپت استفاده شود.
مثالها
- اسکیپ کردن
رشتهٔ "Crime
d'Amour" شامل
نویسهٔ
ویژهٔ
"'":
Crime d\'Amour
- رشته بالا
شامل یک
کوتیشن
است،
بنابراین
هنگام قرار
دادن آن در
نقلقول،
"'" باید
اسکیپ شود:
'Crime d'\''Amour'
- گنجاندن
فاصلههای
خالی
ابتدایی یا
انتهایی با
استفاده از
نقلقول:
' this string starts and ends with whitespaces '
- اسکیپ کردن
و نقلقول
میتوانند
با هم ترکیب
شوند:
' The string '\'string\'' is a string '
- برای
گنجاندن یک
\ واقعی
میتوانید
از اسکیپ
کردن یا
نقلقول
استفاده
کنید:
'c:\foo' can be written as c:\\foo
تاریخ (Date)
سینتکس پذیرفتهشده عبارت است از:
[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] now
اگر مقدار برابر با "now" باشد، زمان فعلی را میگیرد.
زمان به عنوان زمان محلی تفسیر میشود مگر اینکه Z به آن اضافه شود، که در این صورت به عنوان UTC در نظر گرفته میشود. اگر بخش سال-ماه-روز مشخص نشود، سال-ماه-روز فعلی را در نظر میگیرد.
مدت زمان (Time duration)
دو سینتکس پذیرفتهشده برای بیان مدت زمان وجود دارد:
[-][<HH>:]<MM>:<SS>[.<m>...]
HH تعداد ساعتها، MM تعداد دقیقهها را با حداکثر ۲ رقم، و SS تعداد ثانیهها را با حداکثر ۲ رقم بیان میکند. مقدار m در انتها مقدار اعشاری را برای SS بیان مینماید.
یا
[-]<S>+[.<m>...][s|ms|us]
S تعداد ثانیهها را همراه با بخش اعشاری اختیاری m بیان میکند. پسوندهای اختیاری s، ms یا us به ترتیب نشاندهنده تفسیر مقدار بر حسب ثانیه، میلیثانیه یا میکروثانیه هستند.
در هر دو عبارت، علامت اختیاری - نشاندهنده مدت زمان منفی است.
مثالها
مثالهای زیر همگی مدت زمانهای معتبر هستند:
- 55
- 55 ثانیه
- 0.2
- 0.2 ثانیه
- 200ms
- 200 میلیثانیه، یعنی 0.2s
- 200000us
- 200000 میکروثانیه، یعنی 0.2s
- 12:03:45
- 12 ساعت و 03 دقیقه و 45 ثانیه
- 23.189
- 23.189 ثانیه
اندازه ویدیو (Video size)
اندازه ویدیوی منبع را مشخص میکند، میتواند رشتهای به شکل widthxheight یا نام یکی از اختصارات اندازه باشد.
اختصارات زیر شناختهشده هستند:
- ntsc
- 720x480
- pal
- 720x576
- qntsc
- 352x240
- qpal
- 352x288
- sntsc
- 640x480
- spal
- 768x576
- film
- 352x240
- ntsc-film
- 352x240
- sqcif
- 128x96
- qcif
- 176x144
- cif
- 352x288
- 4cif
- 704x576
- 16cif
- 1408x1152
- qqvga
- 160x120
- qvga
- 320x240
- vga
- 640x480
- svga
- 800x600
- xga
- 1024x768
- uxga
- 1600x1200
- qxga
- 2048x1536
- sxga
- 1280x1024
- qsxga
- 2560x2048
- hsxga
- 5120x4096
- wvga
- 852x480
- wxga
- 1366x768
- wsxga
- 1600x1024
- wuxga
- 1920x1200
- woxga
- 2560x1600
- wqsxga
- 3200x2048
- wquxga
- 3840x2400
- whsxga
- 6400x4096
- whuxga
- 7680x4800
- cga
- 320x200
- ega
- 640x350
- hd480
- 852x480
- hd720
- 1280x720
- hd1080
- 1920x1080
- 2k
- 2048x1080
- 2kflat
- 1998x1080
- 2kscope
- 2048x858
- 4k
- 4096x2160
- 4kflat
- 3996x2160
- 4kscope
- 4096x1716
- nhd
- 640x360
- hqvga
- 240x160
- wqvga
- 400x240
- fwqvga
- 432x240
- hvga
- 480x320
- qhd
- 960x540
- 2kdci
- 2048x1080
- 4kdci
- 4096x2160
- uhd2160
- 3840x2160
- uhd4320
- 7680x4320
نرخ فریم ویدیو (Video rate)
نرخ فریم ویدیو را مشخص میکند که بر حسب تعداد فریمهای تولیدشده در هر ثانیه بیان میشود. باید رشتهای در قالب frame_rate_num/frame_rate_den، یک عدد صحیح، یک عدد اعشاری یا یک اختصار معتبر نرخ فریم ویدیو باشد.
اختصارات زیر شناختهشده هستند:
نسبت ابعاد (Ratio)
یک نسبت میتواند به صورت یک عبارت محاسباتی، یا به شکل numerator:denominator بیان شود.
توجه داشته باشید که نسبت با مقدار بینهایت (1/0) یا منفی معتبر در نظر گرفته میشود، بنابراین اگر میخواهید این مقادیر را مستثنی کنید باید مقدار بازگرداندهشده را بررسی نمایید.
مقدار تعریفنشده میتواند با استفاده از رشتهٔ "0:0" بیان شود.
رنگ (Color)
میتواند نام یک رنگ همانطور که در زیر تعریف شده است (تطبیق غیرحساس به حروف بزرگ و کوچک) یا یک توالی "[0x|#]RRGGBB[AA]" باشد که ممکن است با @ و یک رشته به عنوان مولفهٔ آلفا دنبال شود.
مولفهٔ آلفا ممکن است رشتهای متشکل از "0x" و به دنبال آن یک عدد هگزادسیمال یا یک عدد اعشاری بین 0.0 و 1.0 باشد که مقدار شفافیت (opacity) را نشان میدهد (0x00 یا 0.0 به معنی کاملاً شفاف، 0xff یا 1.0 به معنی کاملاً مات است). اگر مولفهٔ آلفا مشخص نشود، 0xff در نظر گرفته میشود.
رشتهٔ random منجر به یک رنگ تصادفی خواهد شد.
نامهای رنگهای زیر شناختهشده هستند:
- AliceBlue
- 0xF0F8FF
- AntiqueWhite
- 0xFAEBD7
- Aqua
- 0x00FFFF
- Aquamarine
- 0x7FFFD4
- Azure
- 0xF0FFFF
- Beige
- 0xF5F5DC
- Bisque
- 0xFFE4C4
- Black
- 0x000000
- BlanchedAlmond
- 0xFFEBCD
- Blue
- 0x0000FF
- BlueViolet
- 0x8A2BE2
- Brown
- 0xA52A2A
- BurlyWood
- 0xDEB887
- CadetBlue
- 0x5F9EA0
- Chartreuse
- 0x7FFF00
- Chocolate
- 0xD2691E
- Coral
- 0xFF7F50
- CornflowerBlue
- 0x6495ED
- Cornsilk
- 0xFFF8DC
- Crimson
- 0xDC143C
- Cyan
- 0x00FFFF
- DarkBlue
- 0x00008B
- DarkCyan
- 0x008B8B
- DarkGoldenRod
- 0xB8860B
- DarkGray
- 0xA9A9A9
- DarkGreen
- 0x006400
- DarkKhaki
- 0xBDB76B
- DarkMagenta
- 0x8B008B
- DarkOliveGreen
- 0x556B2F
- Darkorange
- 0xFF8C00
- DarkOrchid
- 0x9932CC
- DarkRed
- 0x8B0000
- DarkSalmon
- 0xE9967A
- DarkSeaGreen
- 0x8FBC8F
- DarkSlateBlue
- 0x483D8B
- DarkSlateGray
- 0x2F4F4F
- DarkTurquoise
- 0x00CED1
- DarkViolet
- 0x9400D3
- DeepPink
- 0xFF1493
- DeepSkyBlue
- 0x00BFFF
- DimGray
- 0x696969
- DodgerBlue
- 0x1E90FF
- FireBrick
- 0xB22222
- FloralWhite
- 0xFFFAF0
- ForestGreen
- 0x228B22
- Fuchsia
- 0xFF00FF
- Gainsboro
- 0xDCDCDC
- GhostWhite
- 0xF8F8FF
- Gold
- 0xFFD700
- GoldenRod
- 0xDAA520
- Gray
- 0x808080
- Green
- 0x008000
- GreenYellow
- 0xADFF2F
- HoneyDew
- 0xF0FFF0
- HotPink
- 0xFF69B4
- IndianRed
- 0xCD5C5C
- Indigo
- 0x4B0082
- Ivory
- 0xFFFFF0
- Khaki
- 0xF0E68C
- Lavender
- 0xE6E6FA
- LavenderBlush
- 0xFFF0F5
- LawnGreen
- 0x7CFC00
- LemonChiffon
- 0xFFFACD
- LightBlue
- 0xADD8E6
- LightCoral
- 0xF08080
- LightCyan
- 0xE0FFFF
- LightGoldenRodYellow
- 0xFAFAD2
- LightGreen
- 0x90EE90
- LightGrey
- 0xD3D3D3
- LightPink
- 0xFFB6C1
- LightSalmon
- 0xFFA07A
- LightSeaGreen
- 0x20B2AA
- LightSkyBlue
- 0x87CEFA
- LightSlateGray
- 0x778899
- LightSteelBlue
- 0xB0C4DE
- LightYellow
- 0xFFFFE0
- Lime
- 0x00FF00
- LimeGreen
- 0x32CD32
- Linen
- 0xFAF0E6
- Magenta
- 0xFF00FF
- Maroon
- 0x800000
- MediumAquaMarine
- 0x66CDAA
- MediumBlue
- 0x0000CD
- MediumOrchid
- 0xBA55D3
- MediumPurple
- 0x9370D8
- MediumSeaGreen
- 0x3CB371
- MediumSlateBlue
- 0x7B68EE
- MediumSpringGreen
- 0x00FA9A
- MediumTurquoise
- 0x48D1CC
- MediumVioletRed
- 0xC71585
- MidnightBlue
- 0x191970
- MintCream
- 0xF5FFFA
- MistyRose
- 0xFFE4E1
- Moccasin
- 0xFFE4B5
- 0xFFDEAD
- 0x000080
- OldLace
- 0xFDF5E6
- Olive
- 0x808000
- OliveDrab
- 0x6B8E23
- Orange
- 0xFFA500
- OrangeRed
- 0xFF4500
- Orchid
- 0xDA70D6
- PaleGoldenRod
- 0xEEE8AA
- PaleGreen
- 0x98FB98
- PaleTurquoise
- 0xAFEEEE
- PaleVioletRed
- 0xD87093
- PapayaWhip
- 0xFFEFD5
- PeachPuff
- 0xFFDAB9
- Peru
- 0xCD853F
- Pink
- 0xFFC0CB
- Plum
- 0xDDA0DD
- PowderBlue
- 0xB0E0E6
- Purple
- 0x800080
- Red
- 0xFF0000
- RosyBrown
- 0xBC8F8F
- RoyalBlue
- 0x4169E1
- SaddleBrown
- 0x8B4513
- Salmon
- 0xFA8072
- SandyBrown
- 0xF4A460
- SeaGreen
- 0x2E8B57
- SeaShell
- 0xFFF5EE
- Sienna
- 0xA0522D
- Silver
- 0xC0C0C0
- SkyBlue
- 0x87CEEB
- SlateBlue
- 0x6A5ACD
- SlateGray
- 0x708090
- Snow
- 0xFFFAFA
- SpringGreen
- 0x00FF7F
- SteelBlue
- 0x4682B4
- Tan
- 0xD2B48C
- Teal
- 0x008080
- Thistle
- 0xD8BFD8
- Tomato
- 0xFF6347
- Turquoise
- 0x40E0D0
- Violet
- 0xEE82EE
- Wheat
- 0xF5DEB3
- White
- 0xFFFFFF
- WhiteSmoke
- 0xF5F5F5
- Yellow
- 0xFFFF00
- YellowGreen
- 0x9ACD32
چینش کانالها (Channel Layout)
چینش کانالها آرایش مکانی کانالها را در یک استریم صوتی چندکاناله مشخص میکند. برای مشخص کردن چینش کانال، FFmpeg از سینتکس ویژهای استفاده مینماید.
کانالهای منفرد با یک شناسه همانطور که در جدول زیر آمده است مشخص میشوند:
- FL
- جلوی چپ (front left)
- FR
- جلوی راست (front right)
- FC
- جلوی مرکز (front center)
- LFE
- فرکانس پایین / سابووفر (low frequency)
- BL
- عقب چپ (back left)
- BR
- عقب راست (back right)
- FLC
- جلوی متمایل به چپِ مرکز
- FRC
- جلوی متمایل به راستِ مرکز
- BC
- عقب مرکز
- SL
- سمت چپ (side left)
- SR
- سمت راست (side right)
- TC
- بالای مرکز
- TFL
- بالای جلو چپ
- TFC
- بالای جلو مرکز
- TFR
- بالای جلو راست
- TBL
- بالای عقب چپ
- TBC
- بالای عقب مرکز
- TBR
- بالای عقب راست
- DL
- داونمیکس چپ
- DR
- داونمیکس راست
- WL
- عریض چپ
- WR
- عریض راست
- SDL
- فراگیر مستقیم چپ
- SDR
- فراگیر مستقیم راست
- LFE2
- فرکانس پایین ۲
ترکیبهای استاندارد چینش کانال را میتوان با شناسههای زیر مشخص کرد:
- mono
- FC
- stereo
- FL+FR
- 2.1
- FL+FR+LFE
- 3.0
- FL+FR+FC
- 3.0(back)
- FL+FR+BC
- 4.0
- FL+FR+FC+BC
- quad
- FL+FR+BL+BR
- quad(side)
- FL+FR+SL+SR
- 3.1
- FL+FR+FC+LFE
- 5.0
- FL+FR+FC+BL+BR
- 5.0(side)
- FL+FR+FC+SL+SR
- 4.1
- FL+FR+FC+LFE+BC
- 5.1
- FL+FR+FC+LFE+BL+BR
- 5.1(side)
- FL+FR+FC+LFE+SL+SR
- 6.0
- FL+FR+FC+BC+SL+SR
- 6.0(front)
- FL+FR+FLC+FRC+SL+SR
- 3.1.2
- FL+FR+FC+LFE+TFL+TFR
- hexagonal
- FL+FR+FC+BL+BR+BC
- 6.1
- FL+FR+FC+LFE+BC+SL+SR
- 6.1
- FL+FR+FC+LFE+BL+BR+BC
- 6.1(front)
- FL+FR+LFE+FLC+FRC+SL+SR
- 7.0
- FL+FR+FC+BL+BR+SL+SR
- 7.0(front)
- FL+FR+FC+FLC+FRC+SL+SR
- 7.1
- FL+FR+FC+LFE+BL+BR+SL+SR
- 7.1(wide)
- FL+FR+FC+LFE+BL+BR+FLC+FRC
- 7.1(wide-side)
- FL+FR+FC+LFE+FLC+FRC+SL+SR
- 5.1.2
- FL+FR+FC+LFE+BL+BR+TFL+TFR
- octagonal
- FL+FR+FC+BL+BR+BC+SL+SR
- cube
- FL+FR+BL+BR+TFL+TFR+TBL+TBR
- 5.1.4
- FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR
- 7.1.2
- FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR
- 7.1.4
- FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR
- 7.2.3
- FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2
- 9.1.4
- FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR
- 9.1.6
- FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR+TSL+TSR
- hexadecagonal
- FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
- binaural
- BIL+BIR
- downmix
- DL+DR
- 22.2
- FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR
یک چینش کانال سفارشی میتواند به صورت توالیای از عبارتها که با '+' جدا شدهاند مشخص شود. هر عبارت میتواند یکی از موارد زیر باشد:
- •
- نام یک کانال منفرد (مانند FL، FR، FC، LFE و غیره)، که هر کدام اختیاری میتواند شامل یک نام سفارشی پس از '@' باشد (مانند FL@Left، FR@Right، FC@Center، LFE@Low_Frequency و غیره)
یک چینش کانال استاندارد میتواند با موارد زیر مشخص شود:
- نام یک کانال منفرد (مانند FL، FR، FC، LFE و غیره)
- نام یک چینش کانال استاندارد (مانند mono، stereo، 4.0، quad، 5.0 و غیره)
- تعداد کانالها، به صورت دهدهی، به همراه 'c' در انتها، که چینش کانال پیشفرض را برای آن تعداد کانال ایجاد میکند (تابع "av_channel_layout_default" را ببینید). توجه داشته باشید که همه تعداد کانالها چینش پیشفرض ندارند.
- تعداد کانالها، به صورت دهدهی، به همراه 'C' در انتها، که یک چینش کانال ناشناخته را با تعداد کانال مشخصشده ارائه میدهد. توجه داشته باشید که همه رشتههای تعیین چینش کانال از چینشهای کانال ناشناخته پشتیبانی نمیکنند.
- یک ماسک چینش کانال، به صورت هگزادسیمال که با "0x" شروع میشود (ماکروهای "AV_CH_*" را در libavutil/channel_layout.h ببینید).
قبل از نسخه 53 کتابخانه libavutil نویسهٔ انتهایی "c" برای مشخص کردن تعداد کانالها اختیاری بود، اما اکنون الزامی است، در حالی که ماسک چینش کانال میتواند به صورت یک عدد دهدهی نیز مشخص شود (تنها در صورتی که با "c" یا "C" دنبال نشده باشد).
همچنین تابع "av_channel_layout_from_string" تعریفشده در libavutil/channel_layout.h را ببینید.
ارزیابی عبارات محاسباتی (EXPRESSION EVALUATION)
هنگام ارزیابی یک عبارت حسابی، FFmpeg از یک ارزیاب فرمول داخلی استفاده میکند که از طریق رابط libavutil/eval.h پیادهسازی شده است.
یک عبارت میتواند شامل عملگرهای یکانی، دودویی، ثابتها و توابع باشد.
دو عبارت expr1 و expr2 میتوانند برای تشکیل عبارت دیگری به شکل "expr1;expr2" ترکیب شوند. expr1 و expr2 به نوبت ارزیابی میشوند، و عبارت جدید به مقدار expr2 ارزیابی میگردد.
عملگرهای دودویی زیر در دسترس هستند: "+"، "-"، "*"، "/"، "^".
عملگرهای یکانی زیر در دسترس هستند: "+"، "-".
برخی متغیرهای داخلی میتوانند برای ذخیره و بارگذاری نتایج واسط استفاده شوند. آنها با استفاده از توابع "ld" و "st" با یک آرگومان نمایه متغیر از 0 تا 9 برای تعیین متغیر داخلی مورد نظر قابل دسترسی هستند.
توابع زیر در دسترس هستند:
- abs(x)
- محاسبه قدر مطلق x.
- acos(x)
- محاسبه آرککوسینوس x.
- asin(x)
- محاسبه آرکسینوس x.
- atan(x)
- محاسبه آرکتانژانت x.
- atan2(y, x)
- محاسبه مقدار اصلی آرکتانژانت y/x.
- between(x, min, max)
- بازگرداندن 1 اگر x بزرگتر یا مساوی min و کوچکتر یا مساوی max باشد، در غیر این صورت 0.
- bitand(x, y)
- bitor(x, y)
- محاسبه
عملیات
بیتی AND یا OR
روی x و y.
نتایج ارزیابی x و y قبل از اجرای عملیات بیتی به عدد صحیح تبدیل میشوند.
توجه داشته باشید که هم تبدیل به عدد صحیح و هم تبدیل مجدد به ممیز شناور میتوانند دقت را کاهش دهند. مراقب نتایج غیرمنتظره برای اعداد بزرگ (معمولاً 2^53 و بزرگتر) باشید.
- ceil(expr)
- گرد کردن مقدار عبارت expr به سمت بالا به نزدیکترین عدد صحیح. برای مثال "ceil(1.5)" برابر "2.0" است.
- clip(x, min, max)
- بازگرداندن مقدار x محدودشده میان min و max.
- cos(x)
- محاسبه کوسینوس x.
- cosh(x)
- محاسبه کوسینوس هذلولوی (هایپربولیک) x.
- eq(x, y)
- بازگرداندن 1 اگر x و y معادل باشند، در غیر این صورت 0.
- exp(x)
- محاسبه تابع نمایی x (بر مبنای "e"، عدد اویلر).
- floor(expr)
- گرد کردن مقدار عبارت expr به سمت پایین به نزدیکترین عدد صحیح. برای مثال "floor(\-1.5)" برابر "\-2.0" است.
- gauss(x)
- محاسبه تابع گاوس برای x، متناظر با "exp(\-x*x/2) / sqrt(2*PI)".
- gcd(x, y)
- بازگرداندن بزرگترین مقسومعلیه مشترک (ب.م.م) x و y. اگر هر دو x و y برابر 0 باشند یا یکی یا هر دو کمتر از صفر باشند رفتار تعریفنشده است.
- gt(x, y)
- بازگرداندن 1 اگر x بزرگتر از y باشد، در غیر این صورت 0.
- gte(x, y)
- بازگرداندن 1 اگر x بزرگتر یا مساوی y باشد، در غیر این صورت 0.
- hypot(x, y)
- این تابع مشابه تابع C با همین نام است؛ مقدار "sqrt(x*x + y*y)" یعنی طول وتر یک مثلث قائمالزاویه با اضلاع به طول x و y، یا فاصله نقطه (x, y) از مبدا مختصات را بازمیگرداند.
- if(x, y)
- ارزیابی x، و اگر نتیجه غیرصفر باشد نتیجه ارزیابی y را بازمیگرداند، در غیر این صورت 0.
- if(x, y, z)
- ارزیابی x، و اگر نتیجه غیرصفر باشد نتیجه ارزیابی y، در غیر این صورت نتیجه ارزیابی z را بازمیگرداند.
- ifnot(x, y)
- ارزیابی x، و اگر نتیجه صفر باشد نتیجه ارزیابی y را بازمیگرداند، در غیر این صورت 0.
- ifnot(x, y, z)
- ارزیابی x، و اگر نتیجه صفر باشد نتیجه ارزیابی y، در غیر این صورت نتیجه ارزیابی z را بازمیگرداند.
- isinf(x)
- بازگرداندن 1.0 اگر x برابر با +/-INFINITY باشد، در غیر این صورت 0.0.
- isnan(x)
- بازگرداندن 1.0 اگر x برابر با NAN باشد، در غیر این صورت 0.0.
- ld(idx)
- بارگذاری مقدار متغیر داخلی با نمایه idx، که قبلاً با st(idx, expr) ذخیره شده است. تابع مقدار بارگذاریشده را بازمیگرداند.
- lerp(x, y, z)
- بازگرداندن درونیابی خطی میان x و y به میزان z.
- log(x)
- محاسبه لگاریتم طبیعی x.
- lt(x, y)
- بازگرداندن 1 اگر x کوچکتر از y باشد، در غیر این صورت 0.
- lte(x, y)
- بازگرداندن 1 اگر x کوچکتر یا مساوی y باشد، در غیر این صورت 0.
- max(x, y)
- بازگرداندن بیشینه میان x و y.
- min(x, y)
- بازگرداندن کمینه میان x و y.
- mod(x, y)
- محاسبه باقیمانده تقسیم x بر y.
- not(expr)
- بازگرداندن 1.0 اگر expr صفر باشد، در غیر این صورت 0.0.
- pow(x, y)
- محاسبه توان x به توان y، معادل "(x)^(y)".
- print(t)
- print(t, l)
- چاپ مقدار عبارت t با سطح گزارشگیری (loglevel) برابر با l. اگر l مشخص نشود، از یک سطح گزارشگیری پیشفرض استفاده میشود. مقدار عبارت چاپشده را بازمیگرداند.
- random(idx)
- بازگرداندن
یک مقدار
شبهتصادفی
بین 0.0 و 1.0.
مقدار idx
نمایه
متغیر
داخلی مورد
استفاده
برای ذخیره
seed/state است که
قبلاً با
st(idx) ذخیره
شده است.
برای مقداردهی اولیه seed، باید مقدار seed را به صورت یک عدد صحیح بدونعلامت ۶۴ بیتی در متغیر داخلی با نمایه idx ذخیره کنید.
برای مثال، برای ذخیره seed با مقدار 42 در متغیر داخلی با نمایه 0 و چاپ چند مقدار تصادفی:
st(0,42); print(random(0)); print(random(0)); print(random(0))
- randomi(idx, min, max)
- بازگرداندن
یک مقدار
شبهتصادفی
در بازه بین
min و max. مقدار
idx نمایه
متغیر
داخلی است
که برای
ذخیره seed/state
استفاده
خواهد شد، و
قبلاً
میتواند
با st(idx)
ذخیره شده
باشد.
برای مقداردهی اولیه seed، باید مقدار seed را به صورت یک عدد صحیح بدونعلامت ۶۴ بیتی در متغیر داخلی با نمایه idx ذخیره کنید.
- root(expr, max)
- یافتن یک
مقدار
ورودی که
تابع
نمایشدادهشده
توسط expr با
آرگومان
ld(0) به
ازای آن در
بازه 0..max
برابر 0
باشد.
عبارت در expr باید نشاندهنده یک تابع پیوسته باشد در غیر این صورت نتیجه تعریفنشده است.
مقدار ld(0) برای نشان دادن مقدار ورودی تابع استفاده میشود، به این معنی که عبارت دادهشده چندین بار با مقادیر ورودی مختلف ارزیابی خواهد شد که عبارت میتواند از طریق ld(0) به آنها دسترسی داشته باشد. هنگامی که عبارت به 0 ارزیابی شود، مقدار ورودی مربوطه بازگردانده خواهد شد.
- round(expr)
- گرد کردن مقدار عبارت expr به نزدیکترین عدد صحیح. برای مثال "round(1.5)" برابر "2.0" است.
- sgn(x)
- محاسبه علامت x.
- sin(x)
- محاسبه سینوس x.
- sinh(x)
- محاسبه سینوس هذلولوی x.
- sqrt(expr)
- محاسبه ریشه دوم (جذر) expr. معادل "(expr)^.5".
- squish(x)
- محاسبه عبارت "1/(1 + exp(4*x))".
- st(idx, expr)
- ذخیره
مقدار
عبارت expr در
یک متغیر
داخلی. idx
نمایه
متغیری را
مشخص
میکند که
مقدار در آن
ذخیره شود،
و مقداری از
0 تا 9 است.
تابع مقدار
ذخیرهشده
در متغیر
داخلی را
بازمیگرداند.
مقدار ذخیرهشده میتواند با ld(var) بازیابی شود.
نکته: متغیرها در حال حاضر میان عبارات مختلف به اشتراک گذاشته نمیشوند.
- tan(x)
- محاسبه تانژانت x.
- tanh(x)
- محاسبه تانژانت هذلولوی x.
- taylor(expr, x)
- taylor(expr, x, idx)
- ارزیابی یک
سری تیلور
در x، با
توجه به
عبارتی که
مشتق
ld(idx)-ام یک
تابع را در 0
نشان
میدهد.
هنگامی که سری همگرا نشود، نتیجه تعریفنشده است.
مقدار ld(idx) برای نشان دادن مرتبه مشتق در expr استفاده میشود، به این معنی که عبارت دادهشده چندین بار با مقادیر ورودی مختلف ارزیابی خواهد شد که عبارت میتواند از طریق ld(idx) به آنها دسترسی داشته باشد. اگر idx مشخص نشود، 0 فرض میشود.
نکته: هنگامی که مشتقات را در y به جای 0 دارید، "taylor(expr, x-y)" میتواند استفاده شود.
- time(0)
- بازگرداندن زمان فعلی (ساعت دیواری) بر حسب ثانیه.
- trunc(expr)
- گرد کردن مقدار عبارت expr به سمت صفر به نزدیکترین عدد صحیح. برای مثال "trunc(\-1.5)" برابر "\-1.0" است.
- while(cond, expr)
- ارزیابی عبارت expr تا زمانی که عبارت cond غیرصفر باشد، و بازگرداندن مقدار آخرین ارزیابی expr، یا NAN اگر cond همیشه نادرست بوده باشد.
ثابتهای زیر در دسترس هستند:
- PI
- مساحت دیسک واحد، تقریباً 3.14
- E
- exp(1) (عدد اویلر)، تقریباً 2.718
- PHI
- نسبت طلایی (1+sqrt(5))/2، تقریباً 1.618
با فرض اینکه یک عبارت در صورت داشتن مقدار غیرصفر "درست" (true) در نظر گرفته میشود، توجه داشته باشید که:
"*" مانند AND عمل میکند
"+" مانند OR عمل میکند
برای مثال ساختار:
if (A AND B) then C
معادل است با:
if(A*B, C)
در کد زبان C خود، میتوانید فهرست توابع یکانی و دودویی را گسترش دهید و ثابتهای شناختهشده را تعریف کنید، به طوری که برای عبارات شما در دسترس باشند.
ارزیاب همچنین پیشوندهای یکای دستگاه بینالمللی (SI) را میشناسد. اگر 'i' بعد از پیشوند اضافه شود، از پیشوندهای دودویی (باینری) استفاده میشود که بر پایه توانهای 1024 هستند به جای توانهای 1000. پسوند 'B' مقدار را در ۸ ضرب میکند، و میتواند بعد از پیشوند یکا اضافه شود یا به تنهایی به کار رود. این امکان استفاده از مثلاً 'KB'، 'MiB'، 'G' و 'B' را به عنوان پسوند عدد فراهم میکند.
فهرست پیشوندهای بینالمللی موجود در ادامه میآید، همراه با نشان دادن توانهای متناظر 10 و 2.
گزینههای کدک (CODEC OPTIONS)
کتابخانه libavcodec مجموعهای از گزینههای عمومی سراسری را فراهم میکند که میتوانند روی تمام انکودرها و دیکودرها تنظیم شوند. علاوه بر این، هر کدک ممکن است از گزینههای بهاصطلاح اختصاصی (private options) پشتیبانی کند که مختص یک کدک معین هستند.
گاهی اوقات یک گزینه سراسری ممکن است تنها بر نوع خاصی از کدک تأثیر بگذارد، و برای کدک دیگری بیمعنی بوده یا نادیده گرفته شود، بنابراین باید از مفهوم گزینههای تعیینشده آگاه باشید. همچنین برخی گزینهها فقط برای دیکود یا انکود در نظر گرفته شدهاند.
گزینهها را میتوان با مشخص کردن -option value در ابزارهای FFmpeg، یا با تنظیم صریح مقدار در گزینههای "AVCodecContext" یا با استفاده از API موجود در libavutil/opt.h برای کاربردهای برنامهنویسی تنظیم کرد.
فهرست گزینههای پشتیبانیشده در ادامه میآید:
- b integer (انکود،صدا،ویدیو)
- تنظیم نرخ بیت بر حسب بیت بر ثانیه. مقدار پیشفرض 200K است.
- ab integer (انکود،صدا)
- تنظیم نرخ بیت صدا (بر حسب بیت بر ثانیه). مقدار پیشفرض 128K است.
- bt integer (انکود،ویدیو)
- تنظیم میزان تلورانس (انحراف مجاز) نرخ بیت ویدیو (بر حسب بیت بر ثانیه). در حالت 1-pass، تلورانس نرخ بیت مشخص میکند که کنترل نرخ چقدر مجاز است از مقدار میانگین نرخ بیت هدف انحراف داشته باشد. این به حداقل/حداکثر نرخ بیت ارتباطی ندارد. کاهش بیش از حد تلورانس تأثیر نامطلوبی بر کیفیت خواهد داشت.
- flags flags (دیکود/انکود،صدا،ویدیو،زیرنویس)
- تنظیم
پرچمهای
عمومی.
مقادیر ممکن:
- mv4
- استفاده از چهار بردار حرکت بهازای هر ماکروبلاک (mpeg4).
- qpel
- استفاده از جبران حرکت 1/4 پیکسلی (qpel).
- loop
- استفاده از فیلتر حلقه (loop filter).
- qscale
- استفاده از مقیاس qscale ثابت.
- pass1
- استفاده از کنترل نرخ داخلی 2pass در حالت پاس اول.
- pass2
- استفاده از کنترل نرخ داخلی 2pass در حالت پاس دوم.
- gray
- دیکود/انکود فقط به صورت مقیاس خاکستری (سیاه و سفید).
- psnr
- تنظیم متغیرهای error[?] در حین انکود.
- truncated
- استریم بیت ورودی ممکن است به صورت تصادفی کوتاه یا ناقص شده باشد.
- drop_changed
- عدم خروجی دادن فریمهایی که پارامترهای آنها با اولین فریم دیکودشده در استریم تفاوت دارد. خطای AVERROR_INPUT_CHANGED هنگام دور انداختن فریم بازگردانده میشود.
- ildct
- استفاده از DCT درهمتنیده (interlaced).
- low_delay
- اجبار تأخیر کم.
- global_header
- قرار دادن هدرهای سراسری در extradata به جای تکتک فریمهای کلیدی.
- bitexact
- فقط نوشتن دادههای مستقل از پلتفرم، ساخت و زمان (به جز (I)DCT). این اطمینان حاصل میکند که چکسامهای پرونده و داده قابل تکرار بوده و میان پلتفرمهای مختلف مطابقت دارند. کاربرد اصلی آن در آزمون رگرسیون است.
- aic
- اعمال کدگذاری پیشرفته اینترا در H263 / پیشبینی AC در mpeg4.
- ilme
- اعمال تخمین حرکت درهمتنیده.
- cgop
- استفاده از GOP بسته (closed GOP).
- output_corrupt
- خروجی دادن فریمها حتی اگر احتمال خرابی آنها وجود داشته باشد.
- time_base rational number
- تنظیم
مبنای
زمانی کدک.
واحد بنیادین زمان (بر حسب ثانیه) است که برچسبهای زمانی فریم بر پایه آن نشان داده میشوند. برای محتوای با نرخ فریم ثابت، مبنای زمانی باید "1 / frame_rate" باشد و افزایش برچسب زمانی باید دقیقاً 1 باشد.
- g integer (انکود،ویدیو)
- تنظیم اندازه گروه تصاویر (GOP). مقدار پیشفرض 12 است.
- ar integer (دیکود/انکود،صدا)
- تنظیم نرخ نمونهبرداری صدا (بر حسب هرتز).
- ac integer (دیکود/انکود،صدا)
- تنظیم تعداد کانالهای صوتی.
- cutoff integer (انکود،صدا)
- تنظیم پهنای باند قطع (تنها توسط انکودرهای برگزیده پشتیبانی میشود، بخش مستندات مربوطه آنها را ببینید).
- frame_size integer (انکود،صدا)
- تنظیم
اندازه
فریم صوتی.
هر فریم ارائهشده به جز آخرین فریم باید دقیقاً شامل frame_size نمونه بهازای هر کانال باشد. در صورتی که کدک CODEC_CAP_VARIABLE_FRAME_SIZE را تنظیم کرده باشد میتواند 0 باشد، که در این حالت اندازه فریم محدودیتی ندارد. توسط برخی دیکودرها برای نشان دادن اندازه فریم ثابت تنظیم میشود.
- frame_number integer
- تنظیم شماره فریم.
- delay integer
- qcomp float (انکود،ویدیو)
- تنظیم فشردهسازی مقیاس کوانتیایزر ویدیو (VBR). به عنوان یک ثابت در معادله کنترل نرخ استفاده میشود. محدوده توصیهشده برای rc_eq پیشفرض: 0.0-1.0.
- qblur float (انکود،ویدیو)
- تنظیم محو کردن مقیاس کوانتیایزر ویدیو (VBR).
- qmin integer (انکود،ویدیو)
- تنظیم حداقل مقیاس کوانتیایزر ویدیو (VBR). باید بین -1 و 69 باشد، مقدار پیشفرض 2 است.
- qmax integer (انکود،ویدیو)
- تنظیم حداکثر مقیاس کوانتیایزر ویدیو (VBR). باید بین -1 و 1024 باشد، مقدار پیشفرض 31 است.
- qdiff integer (انکود،ویدیو)
- تنظیم حداکثر اختلاف میان مقیاسهای کوانتیایزر (VBR).
- bf integer (انکود،ویدیو)
- تنظیم
حداکثر
تعداد
فریمهای B
میان
فریمهای
غیر B.
باید یک عدد صحیح بین -1 و 16 باشد. مقدار 0 به این معنی است که فریمهای B غیرفعال هستند. اگر از مقدار -1 استفاده شود، یک مقدار خودکار بسته به انکودر انتخاب خواهد شد.
مقدار پیشفرض 0 است.
- b_qfactor float (انکود،ویدیو)
- تنظیم فاکتور QP میان فریمهای P و B.
- codec_tag integer
- bug flags (دیکود،ویدیو)
- دور زدن
اشکالات
انکودرهایی
که به صورت
خودکار
شناسایی
نشدهاند.
مقادیر ممکن:
- autodetect
- xvid_ilace
- باگ درهمتنیدگی Xvid (در صورت fourcc==XVIX به صورت خودکار شناسایی میشود)
- ump4
- (در صورت fourcc==UMP4 به صورت خودکار شناسایی میشود)
- no_padding
- باگ پدینگ (شناسایی خودکار)
- amv
- qpel_chroma
- std_qpel
- qpel استاندارد قدیمی (شناسایی خودکار بر اساس fourcc/نسخه)
- qpel_chroma2
- direct_blocksize
- باگ direct-qpel-blocksize (شناسایی خودکار بر اساس fourcc/نسخه)
- edge
- باگ edge padding (شناسایی خودکار بر اساس fourcc/نسخه)
- hpel_chroma
- dc_clip
- ms
- دور زدن باگهای مختلف در دیکودرهای معیوب مایکروسافت.
- trunc
- فریمهای ناقص/بریدهشده
- strict integer (دیکود/انکود،صدا،ویدیو)
- مشخص کردن
میزان
سختگیری
در پیروی از
استانداردها.
مقادیر ممکن:
- very
- انطباق دقیق با یک نسخه قدیمیتر و سختگیرانهتر از مشخصات فنی یا نرمافزار مرجع
- strict
- انطباق دقیق با تمام موارد مشخصات فنی صرفنظر از پیامدها
- normal
- unofficial
- اجازه دادن به پسوندهای غیررسمی
- experimental
- اجازه دادن به قابلیتهای آزمایشی غیراستاندارد، و دیکودرها و انکودرهای آزمایشی (ناتمام/در حال توسعه/آزمایشنشده). توجه: دیکودرهای آزمایشی میتوانند خطرات امنیتی داشته باشند، از این گزینه برای رمزگشایی ورودیهای غیرقابل اعتماد استفاده نکنید.
- b_qoffset float (انکود،ویدیو)
- تنظیم آفست QP میان فریمهای P و B.
- err_detect flags (دیکود،صدا،ویدیو)
- تنظیم
پرچمهای
تشخیص خطا.
مقادیر ممکن:
- crccheck
- تایید CRCهای تعبیهشده
- bitstream
- تشخیص انحرافات از مشخصات استریم بیت
- buffer
- تشخیص طول نامناسب بافر استریم بیت
- explode
- توقف و خروج از دیکود با تشخیص کوچکترین خطا
- ignore_err
- نادیده گرفتن خطاهای دیکود و ادامه دادن به دیکود. این گزینه در صورتی که قصد تجزیه و تحلیل محتوای یک ویدیو را داشته باشید و بخواهید هر دادهای به هر نحو دیکود شود مفید است. این گزینه در صورت وجود خطا منجر به ویدیویی با کیفیت مطلوب برای تماشا نخواهد شد.
- careful
- مواردی را که مشخصات را نقض میکنند و در عمل دیده نشدهاند به عنوان خطا در نظر بگیر
- compliant
- تمام موارد عدم انطباق با مشخصات را خطا در نظر بگیر
- aggressive
- مواردی را که یک انکودر عاقل نباید انجام دهد خطا در نظر بگیر
- has_b_frames integer
- block_align integer
- rc_override_count integer
- maxrate integer (انکود،صدا،ویدیو)
- تنظیم حداکثر تلورانس نرخ بیت (بر حسب بیت بر ثانیه). نیازمند تنظیم bufsize است.
- minrate integer (انکود،صدا،ویدیو)
- تنظیم حداقل تلورانس نرخ بیت (بر حسب بیت بر ثانیه). بیشترین کاربرد را در تنظیم انکود CBR دارد، در غیر این صورت کاربرد کمی دارد.
- bufsize integer (انکود،صدا،ویدیو)
- تنظیم اندازه بافر کنترل نرخ (بر حسب بیت).
- i_qfactor float (انکود،ویدیو)
- تنظیم فاکتور QP میان فریمهای P و I.
- i_qoffset float (انکود،ویدیو)
- تنظیم آفست QP میان فریمهای P و I.
- dct integer (انکود،ویدیو)
- تنظیم
الگوریتم DCT.
مقادیر ممکن:
- lumi_mask float (انکود،ویدیو)
- فشردهسازی شدیدتر نواحی بسیار روشن نسبت به نواحی متوسط.
- tcplx_mask float (انکود،ویدیو)
- تنظیم ماسک پیچیدگی زمانی (temporal complexity masking).
- scplx_mask float (انکود،ویدیو)
- تنظیم ماسک پیچیدگی مکانی (spatial complexity masking).
- p_mask float (انکود،ویدیو)
- تنظیم ماسکگذاری بینفریمی (inter masking).
- dark_mask float (انکود،ویدیو)
- فشردهسازی شدیدتر نواحی تاریک نسبت به نواحی متوسط.
- idct integer (دیکود/انکود،ویدیو)
- انتخاب
پیادهسازی
IDCT.
مقادیر ممکن:
- auto
- int
- simple
- simplemmx
- simpleauto
- انتخاب خودکار یک IDCT سازگار با simple
- arm
- altivec
- sh4
- simplearm
- simplearmv5te
- simplearmv6
- simpleneon
- xvid
- faani
- تبدیل IDCT ممیز شناور AAN
- slice_count integer
- ec flags (دیکود،ویدیو)
- تنظیم
راهبرد
پنهانسازی
خطا (Error Concealment).
مقادیر ممکن:
- guess_mvs
- جستجوی تکرارشونده بردار حرکت (MV) (کند)
- deblock
- استفاده از فیلتر deblock قوی برای ماکروبلاکهای آسیبدیده
- favor_inter
- ترجیح پیشبینی از فریم قبلی به جای فریم فعلی
- bits_per_coded_sample integer
- aspect rational number (انکود،ویدیو)
- تنظیم نسبت ابعاد نمونه (SAR).
- sar rational number (انکود،ویدیو)
- تنظیم نسبت ابعاد نمونه. نام مستعار برای aspect.
- debug flags (دیکود/انکود،صدا،ویدیو،زیرنویس)
- چاپ
اطلاعات
اشکالزدایی
مشخص.
مقادیر ممکن:
- pict
- اطلاعات تصویر
- rc
- کنترل نرخ
- bitstream
- mb_type
- نوع ماکروبلاک (MB)
- qp
- پارامتر کوانتیزاسیون بهازای هر ماکروبلاک (QP)
- mv
- بردار حرکت
- dct_coeff
- skip
- startcode
- pts
- er
- تابآوری خطا
- mmco
- دستورات مدیریت حافظه (کنترل رفرنس فریم H.264)
- bugs
- buffers
- عملیات بافر تصویر
- thread_ops
- عملیات چندرشتهای
- nomc
- صرفنظر کردن از جبران حرکت (فقط رسم بردارها)
- cmp integer (انکود،ویدیو)
- تنظیم تابع
مقایسه
تخمین حرکت
در سطح
پیکسل کامل
(full pel me).
مقادیر ممکن:
- sad
- مجموع قدر مطلق تفاضلها، سریع (پیشفرض)
- sse
- مجموع مربعات خطاها
- satd
- مجموع قدر مطلق تفاضلهای تبدیل هادامارد
- dct
- مجموع قدر مطلق تفاضلهای تبدیل DCT
- psnr
- مجموع مربعات خطاهای کوانتیزاسیون (اجتناب شود، کیفیت پایین)
- bit
- تعداد بیتهای مورد نیاز برای بلوک
- rd
- بهینهسازی نرخ-اعوجاج (RD)، کند
- zero
- 0
- vsad
- مجموع قدر مطلق تفاضلهای عمودی
- vsse
- مجموع مربعات تفاضلهای عمودی
- nsse
- مجموع مربعات تفاضلها با حفظ نویز
- w53
- موجک 5/3، تنها در snow استفاده میشود
- w97
- موجک 9/7، تنها در snow استفاده میشود
- dctmax
- chroma
- subcmp integer (انکود،ویدیو)
- تنظیم تابع
مقایسه
تخمین حرکت
زیرپیکسل (sub pel
me).
مقادیر ممکن:
- sad
- مجموع قدر مطلق تفاضلها، سریع (پیشفرض)
- sse
- مجموع مربعات خطاها
- satd
- مجموع قدر مطلق تفاضلهای تبدیل هادامارد
- dct
- مجموع قدر مطلق تفاضلهای تبدیل DCT
- psnr
- مجموع مربعات خطاهای کوانتیزاسیون (اجتناب شود، کیفیت پایین)
- bit
- تعداد بیتهای مورد نیاز برای بلوک
- rd
- بهینهسازی نرخ-اعوجاج (RD)، کند
- zero
- 0
- vsad
- مجموع قدر مطلق تفاضلهای عمودی
- vsse
- مجموع مربعات تفاضلهای عمودی
- nsse
- مجموع مربعات تفاضلها با حفظ نویز
- w53
- موجک 5/3، تنها در snow استفاده میشود
- w97
- موجک 9/7، تنها در snow استفاده میشود
- dctmax
- chroma
- mbcmp integer (انکود،ویدیو)
- تنظیم تابع
مقایسه
تصمیمگیری
ماکروبلاک.
مقادیر ممکن:
- sad
- مجموع قدر مطلق تفاضلها، سریع (پیشفرض)
- sse
- مجموع مربعات خطاها
- satd
- مجموع قدر مطلق تفاضلهای تبدیل هادامارد
- dct
- مجموع قدر مطلق تفاضلهای تبدیل DCT
- psnr
- مجموع مربعات خطاهای کوانتیزاسیون (اجتناب شود، کیفیت پایین)
- bit
- تعداد بیتهای مورد نیاز برای بلوک
- rd
- بهینهسازی نرخ-اعوجاج (RD)، کند
- zero
- 0
- vsad
- مجموع قدر مطلق تفاضلهای عمودی
- vsse
- مجموع مربعات تفاضلهای عمودی
- nsse
- مجموع مربعات تفاضلها با حفظ نویز
- w53
- موجک 5/3، تنها در snow استفاده میشود
- w97
- موجک 9/7، تنها در snow استفاده میشود
- dctmax
- chroma
- ildctcmp integer (انکود،ویدیو)
- تنظیم تابع
مقایسه
درهمتنیده
DCT.
مقادیر ممکن:
- sad
- مجموع قدر مطلق تفاضلها، سریع (پیشفرض)
- sse
- مجموع مربعات خطاها
- satd
- مجموع قدر مطلق تفاضلهای تبدیل هادامارد
- dct
- مجموع قدر مطلق تفاضلهای تبدیل DCT
- psnr
- مجموع مربعات خطاهای کوانتیزاسیون (اجتناب شود، کیفیت پایین)
- bit
- تعداد بیتهای مورد نیاز برای بلوک
- rd
- بهینهسازی نرخ-اعوجاج (RD)، کند
- zero
- 0
- vsad
- مجموع قدر مطلق تفاضلهای عمودی
- vsse
- مجموع مربعات تفاضلهای عمودی
- nsse
- مجموع مربعات تفاضلها با حفظ نویز
- w53
- موجک 5/3، تنها در snow استفاده میشود
- w97
- موجک 9/7، تنها در snow استفاده میشود
- dctmax
- chroma
- dia_size integer (انکود،ویدیو)
- تنظیم نوع و
اندازه
لوزی (diamond)
برای تخمین
حرکت.
مقادیر ممکن:
- (1024, INT_MAX)
- الگوی لوزی تطبیقی با اندازه (1024-INT_MAX)
- (768, 1024]
- الگوی ششضلعی تطبیقی (HEX)
- (512, 768]
- الگوی ششضلعی ناهموار چندمنظوره (UMH)
- (256, 512]
- الگوی ستارهای تطبیقی
- (-1, 2)
- لوزی با شعاع ۱
- (INT_MIN, -1)
- الگوی لوزی با اندازه معکوس
- last_pred integer (انکود،ویدیو)
- میزان پیشبینیکنندههای حرکت از فریم قبلی.
- precmp integer (انکود،ویدیو)
- تنظیم تابع
مقایسه
پیشپاس
تخمین حرکت.
مقادیر ممکن:
- sad
- مجموع قدر مطلق تفاضلها، سریع (پیشفرض)
- sse
- مجموع مربعات خطاها
- satd
- مجموع قدر مطلق تفاضلهای تبدیل هادامارد
- dct
- مجموع قدر مطلق تفاضلهای تبدیل DCT
- psnr
- مجموع مربعات خطاهای کوانتیزاسیون (اجتناب شود، کیفیت پایین)
- bit
- تعداد بیتهای مورد نیاز برای بلوک
- rd
- بهینهسازی نرخ-اعوجاج (RD)، کند
- zero
- 0
- vsad
- مجموع قدر مطلق تفاضلهای عمودی
- vsse
- مجموع مربعات تفاضلهای عمودی
- nsse
- مجموع مربعات تفاضلها با حفظ نویز
- w53
- موجک 5/3، تنها در snow استفاده میشود
- w97
- موجک 9/7، تنها در snow استفاده میشود
- dctmax
- chroma
- pre_dia_size integer (انکود،ویدیو)
- تنظیم نوع و اندازه لوزی برای پیشپاس تخمین حرکت.
- subq integer (انکود،ویدیو)
- تنظیم کیفیت تخمین حرکت زیرپیکسلی.
- me_range integer (انکود،ویدیو)
- تنظیم محدودیت دامنه بردارهای حرکت (1023 برای پخشکننده DivX).
- global_quality integer (انکود،صدا،ویدیو)
- slice_flags integer
- mbd integer (انکود،ویدیو)
- تنظیم
الگوریتم
تصمیمگیری
ماکروبلاک
(حالت با
کیفیت
بالا).
مقادیر ممکن:
- rc_init_occupancy integer (انکود،ویدیو)
- تنظیم تعداد بیتهایی که باید پیش از آغاز دیکود در بافر کنترل نرخ (rc buffer) بارگذاری شوند.
- flags2 flags (دیکود/انکود،صدا،ویدیو،زیرنویس)
- مقادیر ممکن:
- fast
- اجازه دادن به ترفندهای افزایش سرعت مغایر با مشخصات استاندارد.
- noout
- صرفنظر کردن از انکود استریم بیت.
- ignorecrop
- نادیده گرفتن اطلاعات برش (crop) از sps.
- local_header
- قرار دادن هدرهای سراسری در هر فریم کلیدی به جای extradata.
- chunks
- دادههای فریم ممکن است به چندین بخش تقسیم شوند.
- showall
- نمایش تمام فریمها قبل از اولین فریم کلیدی.
- export_mvs
- برونریزی بردارهای حرکت به دادههای جانبی فریم ("AV_FRAME_DATA_MOTION_VECTORS" را ببینید) برای کدکهایی که پشتیبانی میکنند. همچنین doc/examples/export_mvs.c را ببینید.
- skip_manual
- صرفنظر نکردن از نمونهها و برونریزی اطلاعات پرش به عنوان دادههای جانبی فریم.
- ass_ro_flush_noop
- عدم بازنشانی فیلد ReadOrder در ASS هنگام flush.
- icc_profiles
- تولید/تجزیه پروفایلهای تعبیهشده ICC از/به تگهای رنگسنجی (colorimetry).
- fixed_frame_size
- اجبار انکودرهای صوتی به استفاده از اندازه فریم ثابت.
- mvs
- برونریزی بردارهای حرکت در دادههای جانبی فریم ("AV_FRAME_DATA_MOTION_VECTORS" را ببینید) برای کدکهای دارای پشتیبانی. همچنین doc/examples/export_mvs.c را ببینید.
- prft
- برونریزی زمان مرجع تولیدکننده انکودر به دادههای جانبی بسته ("AV_PKT_DATA_PRFT" را ببینید) برای کدکهای دارای پشتیبانی.
- venc_params
- برونریزی پارامترهای انکود ویدیو از طریق دادههای جانبی فریم ("AV_FRAME_DATA_VIDEO_ENC_PARAMS" را ببینید) برای کدکهای دارای پشتیبانی. در حال حاضر H.264 و VP9.
- film_grain
- برونریزی پارامترهای دانه فیلم از طریق دادههای جانبی فریم ("AV_FRAME_DATA_FILM_GRAIN_PARAMS" را ببینید). در حال حاضر توسط دیکودرهای AV1 پشتیبانی میشود.
- enhancements
- برونریزی متادادههای بهبود تصویر از طریق دادههای جانبی فریم، مثلاً LCEVC (به "AV_FRAME_DATA_LCEVC" مراجعه کنید).
- threads integer (دیکود/انکود،ویدیو)
- تنظیم
تعداد
رشتههای
پردازشی (threads)
مورد
استفاده،
در صورتی که
پیادهسازی
کدک
انتخابی از
چندرشتگی
پشتیبانی
کند.
مقادیر ممکن:
- auto, 0
- انتخاب خودکار تعداد رشتهها
مقدار پیشفرض auto است.
- dc integer (انکود،ویدیو)
- تنظیم intra_dc_precision.
- nssew integer (انکود،ویدیو)
- تنظیم وزن nsse.
- skip_top integer (دیکود،ویدیو)
- تنظیم تعداد ردیفهای ماکروبلاک بالایی که صرفنظر میشوند.
- skip_bottom integer (دیکود،ویدیو)
- تنظیم تعداد ردیفهای ماکروبلاک پایینی که صرفنظر میشوند.
- profile integer (انکود،صدا،ویدیو)
- تنظیم پروفایل کدک انکودر. مقدار پیشفرض unknown است. پروفایلهای خاص انکودرها در مستندات انکودر مربوطه شرح داده شدهاند.
- level integer (انکود،صدا،ویدیو)
- تنظیم سطح (level)
انکودر. این
سطح به کدک
مشخص بستگی
دارد و ممکن
است با سطح
پروفایل
مطابقت
داشته باشد.
بهطور
پیشفرض
روی unknown
تنظیم است.
مقادیر ممکن:
- lowres integer (دیکود،صدا،ویدیو)
- دیکود در وضوحهای پایینتر 1= 1/2، 2=1/4، 3=1/8.
- mblmin integer (انکود،ویدیو)
- تنظیم حداقل مقیاس کوانتیایزر ماکروبلاک (VBR). باید بین -1 و 69 باشد، مقدار پیشفرض 2 است.
- mblmax integer (انکود،ویدیو)
- تنظیم حداکثر مقیاس کوانتیایزر ماکروبلاک (VBR). باید بین -1 و 1024 باشد، مقدار پیشفرض 31 است.
- skip_loop_filter integer (دیکود،ویدیو)
- skip_idct integer (دیکود،ویدیو)
- skip_frame integer (دیکود،ویدیو)
- صرفنظر
کردن از
پردازش
فیلتر حلقه
/ IDCT / فریمها
بر اساس
معیار
انتخابشده.
مقادیر ممکن:
- bidir_refine integer (انکود،ویدیو)
- بهبود و اصلاح بردارهای حرکت دوطرفه مورد استفاده در فریمهای B.
- keyint_min integer (انکود،ویدیو)
- حداقل فاصله میان فریمهای IDR/کلیدی.
- refs integer (انکود،ویدیو)
- تعداد فریمهای مرجع مورد استفاده برای جبران حرکت.
- trellis integer (انکود،صدا،ویدیو)
- کوانتیزاسیون بهینهسازی نرخ-اعوجاج Trellis.
- mv0_threshold integer (انکود،ویدیو)
- آستانه بردار حرکت صفر (mv0).
- compression_level integer (انکود،صدا،ویدیو)
- سطح فشردهسازی.
- bits_per_raw_sample integer
- تعداد بیتها بهازای هر نمونه خام.
- channel_layout integer (دیکود/انکود،صدا)
- چینش کانال صوتی.
- rc_max_vbv_use float (انکود،ویدیو)
- rc_min_vbv_use float (انکود،ویدیو)
- حداکثر / حداقل استفاده مجاز از بافر VBV.
- color_primaries integer (decoding/encoding,video)
- Possible values:
- color_trc integer (decoding/encoding,video)
- Possible values:
- bt709
- BT.709
- gamma22
- BT.470 M
- gamma28
- BT.470 BG
- smpte170m
- SMPTE 170 M
- smpte240m
- SMPTE 240 M
- linear
- Linear
- log
- log100
- Log
- log_sqrt
- log316
- Log square root
- iec61966_2_4
- iec61966-2-4
- IEC 61966-2-4
- bt1361
- bt1361e
- BT.1361
- iec61966_2_1
- iec61966-2-1
- IEC 61966-2-1
- bt2020_10
- bt2020_10bit
- BT.2020 - 10 bit
- bt2020_12
- bt2020_12bit
- BT.2020 - 12 bit
- smpte2084
- SMPTE ST 2084
- smpte428
- smpte428_1
- SMPTE ST 428-1
- arib-std-b67
- ARIB STD-B67
- colorspace integer (decoding/encoding,video)
- Possible values:
- rgb
- RGB
- bt709
- BT.709
- fcc
- FCC
- bt470bg
- BT.470 BG
- smpte170m
- SMPTE 170 M
- smpte240m
- SMPTE 240 M
- ycocg
- YCOCG
- bt2020nc
- bt2020_ncl
- BT.2020 NCL
- bt2020c
- bt2020_cl
- BT.2020 CL
- smpte2085
- SMPTE 2085
- chroma-derived-nc
- Chroma-derived NCL
- chroma-derived-c
- Chroma-derived CL
- ictcp
- ICtCp
- color_range integer (دیکود/انکود،ویدیو)
- در صورت استفاده به عنوان پارامتر ورودی، به عنوان راهنمایی برای دیکودر عمل میکند که ورودی دارای چه color_range است. مقادیر ممکن:
- chroma_sample_location integer (دیکود/انکود،ویدیو)
- موقعیت نمونهبرداری کروما. مقادیر ممکن:
- alpha_mode integer (دیکود/انکود،ویدیو)
- حالت کانال آلفا. مقادیر ممکن:
- log_level_offset integer
- تنظیم آفست سطح گزارشگیری (log level).
- slices integer (انکود،ویدیو)
- تعداد اسلایسها، مورد استفاده در انکود موازی.
- thread_type flags (دیکود/انکود،ویدیو)
- انتخاب
روشهای
چندرشتگی
برای
استفاده.
استفاده از frame تأخیر دیکود را به میزان یک فریم بهازای هر رشته افزایش میدهد، بنابراین کلاینتهایی که نمیتوانند فریمهای آینده را فراهم کنند نباید از آن استفاده نمایند.
مقادیر ممکن:
مقدار پیشفرض slice+frame است.
- audio_service_type integer (انکود،صدا)
- تنظیم نوع
سرویس صدا.
مقادیر ممکن:
- ma
- سرویس اصلی صدا (Main Audio Service)
- ef
- جلوههای صوتی (Effects)
- vi
- ویژه آسیبدیدگان بینایی (Visually Impaired)
- hi
- ویژه آسیبدیدگان شنوایی (Hearing Impaired)
- di
- گفتگو و دیالوگ (Dialogue)
- co
- تفسیر و توضیحات (Commentary)
- em
- وضعیت اضطراری (Emergency)
- vo
- صداپیشگی و نریشن (Voice Over)
- ka
- کارائوکه (Karaoke)
- request_sample_fmt sample_fmt (دیکود،صدا)
- تنظیم قالب نمونه ترجیحی دیکودرهای صوتی. مقدار پیشفرض "none" است.
- pkt_timebase rational number
- sub_charenc encoding (دیکود،زیرنویس)
- تنظیم کدگذاری نویسههای زیرنویس ورودی.
- field_order field_order (ویدیو)
- تنظیم/بازنویسی ترتیب فیلدهای ویدیو. مقادیر ممکن:
- progressive
- ویدیوی پروگرسیو (Progressive)
- tt
- ویدیوی درهمتنیده، فیلد بالایی ابتدا کدگذاری و نمایش داده میشود
- bb
- ویدیوی درهمتنیده، فیلد پایینی ابتدا کدگذاری و نمایش داده میشود
- tb
- ویدیوی درهمتنیده، بالایی ابتدا کدگذاری، پایینی ابتدا نمایش داده میشود
- bt
- ویدیوی درهمتنیده، پایینی ابتدا کدگذاری، بالایی ابتدا نمایش داده میشود
- skip_alpha bool (دیکود،ویدیو)
- تنظیم روی 1 برای غیرفعال کردن پردازش آلفا (شفافیت). این همانند پرچم gray در گزینهٔ flags عمل میکند که از اطلاعات کروما به جای آلفا صرفنظر مینماید. مقدار پیشفرض 0 است.
- codec_whitelist list (ورودی)
- فهرست با کاما جداشده از دیکودرهای مجاز. بهطور پیشفرض تمام دیکودرها مجاز هستند.
- dump_separator string (ورودی)
- جداکننده
مورد
استفاده
برای تفکیک
فیلدهای
چاپشده در
خط فرمان
درباره
پارامترهای
استریم.
برای مثال،
برای
جداسازی
فیلدها با
خطوط جدید و
دندانهگذاری:
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg - max_pixels integer (دیکود/انکود،ویدیو)
- حداکثر تعداد پیکسلها بهازای هر تصویر. این مقدار میتواند برای جلوگیری از خطای کمبود حافظه به دلیل تصاویر بسیار بزرگ استفاده شود.
- apply_cropping bool (دیکود،ویدیو)
- فعالسازی برش (cropping) در صورتی که پارامترهای برش مضربی از تراز مورد نیاز برای پارامترهای چپ و بالا باشند. اگر تراز برقرار نباشد، برش به صورت جزئی اعمال خواهد شد تا تراز حفظ شود. مقدار پیشفرض 1 (فعال) است. نکته: تراز مورد نیاز بستگی به این دارد که آیا "AV_CODEC_FLAG_UNALIGNED" تنظیم شده باشد یا خیر و به پردازنده (CPU) وابسته است. مقدار "AV_CODEC_FLAG_UNALIGNED" از خط فرمان قابل تغییر نیست. همچنین دیکودرهای سختافزاری برش چپ/بالا را اعمال نخواهند کرد.
دیکودرها (DECODERS)
دیکودرها عناصر پیکربندیشدهای در FFmpeg هستند که امکان رمزگشایی (دیکود کردن) جریانهای چندرسانهای را فراهم میسازند.
هنگام پیکربندی بیلد FFmpeg، تمامی دیکودرهای توکار (native) پشتیبانیشده به صورت پیشفرض فعال هستند. دیکودرهایی که به یک کتابخانه خارجی نیاز دارند باید به صورت دستی از طریق گزینه متناظر "--enable-lib" فعال شوند. میتوانید با استفاده از گزینه پیکربندی "--list-decoders" فهرستی از تمام دیکودرهای موجود را مشاهده کنید.
میتوانید تمامی دیکودرها را با گزینه پیکربندی "--disable-decoders" غیرفعال کنید و دیکودرهای تکی را به صورت انتخابی با گزینههای "--enable-decoder=DECODER" / "--disable-decoder=DECODER" فعال یا غیرفعال نمایید.
گزینه "-decoders" در ابزارهای *ff فهرست دیکودرهای فعالشده را نمایش میدهد.
دیکودرهای ویدیو (VIDEO DECODERS)
توضیحات مربوط به برخی از دیکودرهای ویدیویی در دسترس در ادامه آمده است.
av1
دیکودر AOMedia Video 1 (AV1).
گزینهها (Options)
- operating_point
- انتخاب نقطه عملیاتی یک جریان بیت مقیاسپذیر AV1 (از 0 تا 31). مقدار پیشفرض 0 است.
hevc
دیکودر HEVC (شناختهشده با عنوان ITU-T H.265 یا ISO/IEC 23008-2).
این دیکودر از جریانهای چندنمایی MV-HEVC با حداکثر دو نما پشتیبانی میکند. نماهایی که باید به عنوان خروجی ارائه شوند با ارسال فهرستی از شناسههای نما به دیکودر (گزینه view_ids) انتخاب میگردند. این گزینه میتواند به صورت ایستا پیش از مقداردهی اولیه دیکودر، یا از فراخوان بازگشتی get_format() تنظیم شود - که برای مواردی که تعداد نماها یا شناسهها در حین دیکود به صورت پویا تغییر میکنند مفید است.
به طور پیشفرض تنها لایه پایه دیکود میشود.
توجه داشته باشید که اگر از ابزار خط فرمان "ffmpeg" استفاده میکنید، باید به جای گزینههای ذکرشده در اینجا، از مشخصکنندههای نما همانطور که در راهنمای آن مستند شده است استفاده نمایید.
گزینهها (Options)
- view_ids (MV-HEVC)
- فهرستی از شناسههای نما که باید در خروجی قرار گیرند را مشخص میکند. این گزینه همچنین میتواند روی یک مقدار تکی '-1' تنظیم شود که باعث میشود تمامی نماهای تعریفشده در VPS دیکود شده و به خروجی فرستاده شوند.
- view_ids_available (MV-HEVC)
- این گزینه
ممکن است
توسط
فراخوانکننده
خوانده شود
تا
آرایهای
از
شناسههای
نمای موجود
در VPS فعال را
بازیابی
کند. این
آرایه برای
ویدیوی
تکلایهای
خالی است.
دقت مقدار این گزینه هنگامی که از فراخوان بازگشتی get_format() خوانده شود تضمین شده است. همچنین ممکن است در زمانهای دیگر (مانند پس از باز کردن دیکودر) تنظیم شود، اما مقدار آن صرفاً جنبه اطلاعرسانی دارد و ممکن است نادرست باشد (مثلاً زمانی که جریان حاوی چندین VPS NALU متمایز باشد).
- view_pos_available (MV-HEVC)
- این گزینه
ممکن است
توسط
فراخوانکننده
خوانده شود
تا
آرایهای
از
موقعیتهای
نما (چپ،
راست، یا
نامشخص)
موجود در VPS
فعال را به
عنوان
مقادیر
"AVStereo3DView"
بازیابی
کند. هنگامی
که این
آرایه در
دسترس
باشد،
عناصر آن بر
عناصر
متناظر در
view_ids_available اعمال
میشوند؛
به این معنی
که "view_pos_available[i]"
موقعیت
نمای با
شناسه
"view_ids_available[i]" را
در بر دارد.
همان محدودیتهای اعتبارسنجی مربوط به view_ids_available بر این گزینه نیز اعمال میشود.
rawvideo
دیکودر ویدیوی خام (Raw video).
این دیکودر جریانهای rawvideo را دیکود میکند.
گزینهها (Options)
- top top_field_first
- تعیین نوع فیلد فرضشده برای ویدیوی ورودی.
- -1
- ویدیو به عنوان پروگرسیو در نظر گرفته میشود (پیشفرض)
- 0
- حالت ابتدا فیلد پایینی (Bottom-field-first) فرض میشود
- 1
- حالت ابتدا فیلد بالایی (Top-field-first) فرض میشود
libdav1d
دیکودر dav1d AV1.
کتابخانه libdav1d به libavcodec اجازه میدهد کدک AOMedia Video 1 (AV1) را دیکود کند. نیازمند وجود هدرها و کتابخانه libdav1d در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libdav1d" پیکربندی کنید.
گزینهها (Options)
گزینههای زیر توسط پوشش libdav1d پشتیبانی میشوند.
- max_frame_delay
- تنظیم حداکثر تعداد فریمهایی که دیکودر میتواند در حافظه موقت داخلی بافر کند. مقدار پیشفرض 0 است (تشخیص خودکار).
- filmgrain
- اعمال گرین فیلم (Film Grain) بر ویدیوی دیکودشده در صورت وجود در استریم بیت. به مقدار پیشفرض داخلی کتابخانه برمیگردد. این گزینه منسوخ شده است و در آینده حذف خواهد شد. برای استخراج پارامترهای گرین فیلم به جای اعمال مستقیم آن، به گزینه عمومی "export_side_data" مراجعه کنید.
- oppoint
- انتخاب نقطه عملیاتی از جریان بیت مقیاسپذیر AV1 (از 0 تا 31). به مقدار پیشفرض داخلی کتابخانه بازمیگردد.
- alllayers
- خروجی دادن تمامی لایههای فضایی جریان بیت مقیاسپذیر AV1. مقدار پیشفرض false است.
libdavs2
پوشش دیکودر ویدیوی AVS2-P2/IEEE1857.4.
این دیکودر به libavcodec امکان میدهد جریانهای AVS2 را با کتابخانه davs2 دیکود کند.
libuavs3d
دیکودر ویدیوی AVS3-P2/IEEE1857.10.
کتابخانه libuavs3d به libavcodec امکان رمزگشایی جریانهای AVS3 را میدهد. نیازمند وجود هدرها و کتابخانه libuavs3d در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libuavs3d" پیکربندی کنید.
گزینهها (Options)
گزینه زیر توسط پوشش libuavs3d پشتیبانی میشود.
- frame_threads
- تنظیم تعداد نخهای پردازشی فریم برای استفاده در هنگام دیکود. مقدار پیشفرض 0 است (تشخیص خودکار).
libxevd
پوشش دیکودر eXtra-fast Essential Video Decoder (XEVD) برای MPEG-5 EVC.
این دیکودر نیازمند وجود هدرها و کتابخانه libxevd در هنگام پیکربندی است. باید بیلد را صراحتاً با --enable-libxevd پیکربندی کنید.
وبسایت پروژه xevd در https://github.com/mpeg5/xevd قرار دارد.
گزینهها (Options)
گزینههای زیر توسط پوشش libxevd پشتیبانی میشوند. گزینهها یا مقادیر معادل در xevd برای تسهیل مهاجرت درون پرانتز درج شدهاند.
برای دستیابی به مستندات دقیقتر و جامعتر درباره گزینههای libxevd، دستور "xevd_app --help" را اجرا کنید یا به مستندات libxevd مراجعه نمایید.
- threads (threads)
- اجبار به استفاده از تعداد مشخصی نخ پردازشی (Thread).
QSV Decoders
خانواده دیکودرهای شتابیافته Intel QuickSync Video (شامل VC1، MPEG-2، H.264، HEVC، JPEG/MJPEG، VP8، VP9، AV1، VVC).
گزینههای مشترک (Common Options)
گزینههای زیر توسط تمامی دیکودرهای qsv پشتیبانی میشوند.
- async_depth
- عمق موازیسازی داخلی؛ هرچه مقدار بالاتر باشد، تاخیر بیشتر خواهد بود.
- gpu_copy
- کپی با شتاب GPU میان حافظه ویدیو و حافظه سیستم.
گزینههای HEVC (HEVC Options)
گزینههای اضافی برای hevc_qsv.
- load_plugin
- یک پلاگین کاربری برای بارگذاری در نشست داخلی.
- load_plugins
- فهرستی جداشده با نویسه دونقطه (:) از شناسه یکتای هگزادسیمال (UID) پلاگینها جهت بارگذاری در یک نشست داخلی.
v210
دیکودر غیرفشرده 4:2:2 ده بیتی (10-bit).
گزینهها (Options)
- custom_stride
- تنظیم اندازه خط دادههای v210 بر حسب بایت. مقدار پیشفرض 0 است (تشخیص خودکار). میتوانید از مقدار ویژه -1 برای v210 فاقد Stride مانند آنچه در فایلهای BOXX دیده میشود استفاده کنید.
دیکودرهای صدا (AUDIO DECODERS)
توضیحات مربوط به برخی از دیکودرهای صوتی در دسترس در ادامه آمده است.
ac3
دیکودر صوتی AC-3.
این دیکودر بخشی از استانداردهای ATSC A/52:2010 و ETSI TS 102 366 و همچنین RealAudio 3 غیرمستند (شناختهشده با نام dnet) را پیادهسازی میکند.
گزینههای دیکودر AC-3 (AC-3 Decoder Options)
- -drc_scale value
- ضریب مقیاس دامنه دینامیکی. ضریبی که بر مقادیر دامنه دینامیکی حاصل از جریان AC-3 اعمال میشود. این ضریب به صورت نمایی اعمال میگردد. مقدار پیشفرض 1 است. سه محدوده ضریب مقیاس قابل توجه وجود دارد:
- drc_scale == 0
- قابلیت DRC غیرفعال است. صدای با دامنه کامل تولید میکند.
- 0 < drc_scale <= 1
- قابلیت DRC فعال است. کسری از مقدار DRC جریان را اعمال میکند. بازتولید صدا در حدی میان دامنه کامل و فشردهسازی کامل قرار میگیرد.
- drc_scale > 1
- قابلیت DRC فعال است. مقدار drc_scale را به صورت نامتقارن اعمال میکند. صداهای بلند کاملاً فشرده میشوند. صداهای آهسته تقویت میگردند.
flac
دیکودر صوتی FLAC.
هدف این دیکودر پیادهسازی مشخصات کامل استاندارد FLAC از بنیاد Xiph است.
گزینههای دیکودر FLAC (FLAC Decoder options)
- -use_buggy_lpc
- انکودر FLAC در lavc سابقاً جریانهایی با مقادیر LPC بالا (مانند مقدار پیشفرض) تولید میکرد که دارای باگ بودند. این گزینه امکان دیکود صحیح چنین استریمهایی را با استفاده از منطق قدیمی و معیوب LPC در lavc فراهم میسازد.
ffwavesynth
سینت سایزر موجی داخلی.
این دیکودر الگوهای موجی را بر اساس توالیهای از پیش تعریفشده تولید میکند. کاربرد آن صرفاً داخلی است و قالب دادههایی که میپذیرد به صورت عمومی مستند نشده است.
libgsm
پوشش دیکودر libgsm.
کتابخانه libgsm به libavcodec امکان میدهد کدک صوتی نرخ کامل GSM را دیکود کند. نیازمند وجود هدرها و کتابخانه libgsm در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libgsm" پیکربندی کنید.
این دیکودر از هر دو گونه استاندارد GSM و گونه متعلق به مایکروسافت پشتیبانی میکند.
libilbc
پوشش دیکودر libilbc.
کتابخانه libilbc به libavcodec امکان میدهد کدک صوتی نرخ بیت پایین اینترنت (iLBC) را دیکود کند. نیازمند وجود هدرها و کتابخانه libilbc در حین پیکربندی است. باید بیلد را صراحتاً با "--enable-libilbc" پیکربندی نمایید.
گزینهها (Options)
گزینه زیر توسط پوشش libilbc پشتیبانی میشود.
- enhance
- در صورت تنظیم بر روی 1، بهبود کیفیت صدای دیکودشده را فعال میکند. مقدار پیشفرض 0 است (غیرفعال).
libmpeghdec
پوشش دیکودر libmpeghdec.
کتابخانه libmpeghdec به FFmpeg اجازه میدهد تا کدک صوتی سهبعدی MPEG-H 3D را دیکود کند. نیازمند هدرها و کتابخانه libmpeghdec در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libmpeghdec --enable-nonfree" پیکربندی نمایید.
libopencore-amrnb
پوشش دیکودر libopencore-amrnb.
کتابخانه libopencore-amrnb به libavcodec امکان رمزگشایی کدک صوتی چندنرخی تطبیقی باند باریک (AMR-NB) را میدهد. استفاده از آن مستلزم وجود هدرها و کتابخانه libopencore-amrnb در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libopencore-amrnb" پیکربندی کنید.
یک دیکودر بومی در FFmpeg برای AMR-NB وجود دارد، بنابراین کاربران میتوانند بدون نیاز به این کتابخانه فایلهای AMR-NB را دیکود کنند.
libopencore-amrwb
پوشش دیکودر libopencore-amrwb.
کتابخانه libopencore-amrwb به libavcodec اجازه میدهد کدک صوتی چندنرخی تطبیقی باند پهن (AMR-WB) را دیکود کند. استفاده از آن مستلزم حضور هدرها و کتابخانه libopencore-amrwb در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libopencore-amrwb" پیکربندی نمایید.
یک دیکودر بومی FFmpeg برای AMR-WB وجود دارد، بنابراین کاربران میتوانند بدون این کتابخانه نیز AMR-WB را رمزگشایی کنند.
libopus
پوشش دیکودر libopus.
کتابخانه libopus به libavcodec امکان میدهد تا کدک صوتی تعاملی Opus را دیکود نماید. نیازمند هدرها و کتابخانه libopus در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libopus" پیکربندی کنید.
یک دیکودر بومی در FFmpeg برای Opus وجود دارد، بنابراین کاربران بدون این کتابخانه نیز قادر به دیکود کردن Opus هستند.
دیکودرهای زیرنویس (SUBTITLES DECODERS)
libaribb24
دیکودر زیرنویس ARIB STD-B24.
پروفایلهای A و C از استاندارد ARIB STD-B24 را پیادهسازی میکند.
گزینههای دیکودر libaribb24 (libaribb24 Decoder Options)
- -aribb24-base-path path
- مسیر پایه
را برای
کتابخانه
libaribb24 تعیین
میکند. این
مسیر برای
خواندن
پروندههای
پیکربندی
(جهت
تبدیلهای
سفارشی
یونیکد) و
ذخیره
نمادهای
غیرمتنی به
صورت تصویر
در آن مکان
به کار
میرود.
به طور پیشفرض تعییننشده است.
- -aribb24-skip-ruby-text boolean
- به پوشش
دیکودر
دستور
میدهد از
بلوکهای
متنی حاوی
نویسههای
نیمهارتفاع
روبی (Ruby text)
صرفنظر
کند.
به طور پیشفرض فعال است.
libaribcaption
یک دیکودر دیگر برای زیرنویس ARIB STD-B24 با استفاده از کتابخانه خارجی libaribcaption.
پروفایلهای A و C از استاندارد ژاپنی ARIB STD-B24، استاندارد برزیلی ABNT NBR 15606-1 و نسخه فیلیپینی ISDB-T را پیادهسازی میکند.
نیازمند وجود هدرها و کتابخانه libaribcaption (https://github.com/xqq/libaribcaption) در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libaribcaption" پیکربندی کنید. اگر هر دو دیکودر libaribb24 و libaribcaption فعال باشند، دیکودر libaribcaption اولویت خواهد داشت.
گزینههای دیکودر libaribcaption (libaribcaption Decoder Options)
- -sub_type subtitle_type
- قالب زیرنویسهای دیکودشده را مشخص میکند.
پیشفرض همانند دیکودر libaribb24 مقدار ass است. برخی از پخشکنندههای امروزی (مانند mpv) برای زیرنویس ARIB انتظار قالب ASS را دارند.
- -caption_encoding encoding_scheme
- طرح کدگذاری متن زیرنویس ورودی را مشخص میکند.
- auto
- تشخیص خودکار انکودینگ متن (پیشفرض).
- jis
- انکودینگ نویسه ۸ بیتی JIS تعریفشده در ARIB STD B24. این انکودینگ در ژاپن برای زیرنویسهای ISDB استفاده میشود.
- utf8
- انکودینگ UTF-8 تعریفشده در ARIB STD B24. این انکودینگ در فیلیپین برای زیرنویسهای ISDB-T استفاده میشود.
- latin
- انکودینگ نویسههای لاتین تعریفشده در ABNT NBR 15606-1. این انکودینگ در آمریکای جنوبی برای زیرنویسهای SBTVD / ISDB-Tb استفاده میگردد.
- -font font_name[,font_name2,...]
- فهرستی
جداشده با
کاما از
نامهای
خانواده
قلم را برای
استفاده در
رندر
زیرنویس
نوع bitmap یا ass
مشخص
میکند.
برای
زیرنویس
نوع ass تنها
نام اولین
فونت
استفاده
میشود.
در صورت عدم تعیین، از خانواده قلم پیشفرض تعریفشده در داخل استفاده میگردد.
- -ass_single_rect boolean
- استاندارد
ARIB STD-B24 مشخص
میکند که
برخی
زیرنویسها
ممکن است
همزمان در
موقعیتهای
متفاوتی
نمایش داده
شوند
(زیرنویس
چندمستطیلی).
از آنجا که
برخی از
پخشکنندهها
(مانند
نسخههای
قدیمی mpv)
نمیتوانند
چندین
مستطیل ASS را
در یک AVSubtitle
واحد
پردازش
کنند، یا
چند مستطیل
ASS با مدت
نامشخص و
برچسب
زمانی شروع
یکسان را به
درستی
نمایش
دهند، این
گزینه
میتواند
رفتار را به
گونهای
تغییر دهد
که تمام
متنها در
یک مستطیل
واحد ASS
نمایش داده
شوند.
مقدار پیشفرض false است.
اگر پخشکننده شما نمیتواند AVSubtitleهای دارای چندین مستطیل ASS را به درستی پردازش کند، این گزینه را روی true تنظیم کنید یا مقدار ASS_SINGLE_RECT=1 را تعریف نمایید تا رفتار پیشفرض در زمان کامپایل تغییر کند.
- -force_outline_text boolean
- مشخص
میکند که
آیا همیشه
برای تمامی
نویسهها
خط بیرونی
(Outline) رندر
شود، بدون
توجه به
آنچه سبک
نویسه نشان
میدهد.
مقدار پیشفرض false است.
- -outline_width number (0.0 - 3.0)
- عرض خط دور
متن را بر
حسب نقطه
(نسبی)
تعیین
میکند.
مقدار پیشفرض 1.5 است.
- -ignore_background boolean
- مشخص
میکند که
آیا از رندر
رنگ
پسزمینه
صرفنظر
شود یا خیر.
مقدار پیشفرض false است.
- -ignore_ruby boolean
- مشخص
میکند که
آیا از رندر
نویسههای
شبیه به
روبی
(فوریگانا)
صرفنظر
شود یا خیر.
مقدار پیشفرض false است.
- -replace_drcs boolean
- مشخص
میکند که
آیا
نویسههای
جایگزین DRCS
به صورت
نویسههای
یونیکد
رندر شوند
یا خیر.
مقدار پیشفرض true است.
- -replace_msz_ascii boolean
- مشخص
میکند که
آیا
نویسههای
عددی-حرفی
تمامعرض MSZ
(اندازه
متوسط؛
نیمعرض) با
نویسههای
نیمعرض
جایگزین
شوند یا
خیر.
مقدار پیشفرض true است.
- -replace_msz_japanese boolean
- مشخص
میکند که
آیا برخی
نویسههای
ویژه ژاپنی
تمامعرض MSZ
(اندازه
متوسط؛
نیمعرض) با
نمونههای
نیمعرض
جایگزین
شوند یا
خیر.
مقدار پیشفرض true است.
- -replace_msz_glyph boolean
- مشخص
میکند که
در صورت
پشتیبانی
فونت، آیا
نویسههای
MSZ (اندازه
متوسط؛
نیمعرض) با
گلیفهای
نیمعرض
جایگزین
شوند یا
خیر. این
گزینه تحت
موتورهای
رندر FreeType یا DirectWrite
با قلمهای
سازگار با
Adobe-Japan1 کار
میکند؛
مانند IBM Plex Sans JP، Morisawa
BIZ UDGothic، Morisawa BIZ UDMincho، Yu Gothic، Yu
Mincho و Meiryo.
مقدار پیشفرض true است.
- -canvas_size image_size
- وضوح بوم (Canvas)
را جهت رندر
زیرنویسها
مشخص
میکند؛
معمولاً
این مقدار
باید با
اندازه
فریم
ویدیوی
ورودی
برابر باشد.
این گزینه
تنها زمانی
اعمال
میشود که
"-subtitle_type" بر
روی bitmap
تنظیم شده
باشد.
دیکودر libaribcaption اندازه فریم ورودی را برای رندر بیتمپ به صورت زیر فرض میکند:
- 1.
- پروفایل PROFILE_A : ابعاد 1440 x 1080 با SAR (PAR) 4:3
- 2.
- پروفایل PROFILE_C : ابعاد 320 x 180 با SAR (PAR) 1:1
اگر ابعاد واقعی فریم ویدیوی ورودی با این فرضها مطابقت نداشته باشد، ممکن است زیرنویسهای رندرشده دچار اعوجاج شوند. برای جلوگیری از اعوجاج، گزینه "-canvas_size" را برای مشخص کردن اندازه واقعی ویدیوی ورودی اضافه کنید.
توجه داشته باشید که گزینه "-canvas_size" برای ویدیوهایی با ابعاد متفاوت اما با نسبت تصویر یکسان لازم نیست. در چنین مواردی اگر "-canvas_size" مشخص نشده باشد، زیرنویس متناسب با اندازه واقعی ویدیو کشیده یا کوچک میشود. در صورتی که "-canvas_size" با اندازه متفاوتی مشخص شود، زیرنویس به اندازه تعیینشده با SAR محاسبهشده کشیده یا جمع خواهد شد.
مثالهای استفاده از دیکودر libaribcaption (libaribcaption decoder usage examples)
نمایش فایل MPEG-TS با زیرنویس ARIB توسط ابزار "ffplay":
ffplay -sub_type bitmap MPEG.TS
نمایش فایل MPEG-TS با ابعاد فریم ورودی 1920x1080 توسط ابزار "ffplay":
ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS
گنجاندن زیرنویس ARIB در ویدیوی ترنسکدشده:
ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4
dvbsub
گزینهها (Options)
- -2
- اگر جدول CLUT مطابقی در استریم نباشد، clut را یکبار محاسبه کن.
- -1
- اگر جدول CLUT مطابقی در استریم نباشد، clut را محاسبه کن.
- 0
- هرگز CLUT را محاسبه نکن.
- 1
- همیشه CLUT را محاسبه کن و مقدار ارائهشده در استریم را نادیده بگیر و جایگزین کن.
- dvb_substream
- زیرجریان dvb را انتخاب میکند، یا در صورت مقدار -1 (پیشفرض) تمام زیرجریانها انتخاب میشوند.
dvdsub
این کدک زیرنویسهای بیتمپ استفادهشده در DVDها را دیکود میکند؛ همین زیرنویسها را میتوان در جفتفایلهای VobSub و برخی فایلهای Matroska نیز یافت.
گزینهها (Options)
- palette
- پالت رنگ
سراسری
استفادهشده
توسط
بیتمپها
را مشخص
میکند.
هنگام
ذخیره در VobSub،
پالت
معمولاً در
فایل اندیس
مشخص
میشود؛ در
Matroska، پالت در
دادههای
اضافه کدک
با همان
فرمت VobSub
ذخیره
میگردد. در
DVDها پالت در
فایل IFO
ذخیره
میشود و
بنابراین
هنگام
خواندن
مستقیم از
فایلهای VOB
استخراجشده
در دسترس
نیست.
فرمت این گزینه رشتهای شامل ۱۶ عدد هگزادسیمال ۲۴ بیتی (بدون پیشوند 0x) است که با کاما جدا شدهاند؛ به عنوان مثال: "0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b".
- ifo_palette
- مشخص کردن فایل IFO که پالت سراسری از آن استخراج میشود (آزمایشی).
- forced_subs_only
- تنها دیکود کردن زیرنویسهایی که به عنوان اجباری (Forced) علامتگذاری شدهاند. برخی عنوانها شامل هر دو زیرنویس اجباری و غیراجباری در یک ترک واحد هستند. تنظیم این فلگ روی 1 تنها زیرنویسهای اجباری را حفظ میکند. مقدار پیشفرض 0 است.
libzvbi-teletext
کتابخانه Libzvbi به libavcodec امکان میدهد صفحات تلهتکست DVB و زیرنویسهای تلهتکست DVB را رمزگشایی کند. نیازمند هدرها و کتابخانه libzvbi در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libzvbi" پیکربندی کنید.
گزینهها (Options)
- txt_page
- فهرست شماره صفحات تلهتکست جهت دیکود. صفحاتی که با این فهرست مطابقت نداشته باشند نادیده گرفته میشوند. میتوانید از رشته ویژه "*" برای تطبیق با همه صفحات، یا "subtitle" برای تمام صفحات زیرنویس استفاده کنید. مقدار پیشفرض * است.
- txt_default_region
- تنظیم مجموعه نویسه پیشفرض برای دیکود؛ مقداری بین 0 تا 87 (جدول 32، بخش 15 استاندارد ETS 300 706 را ببینید). مقدار پیشفرض -1 است که پیشفرض libzvbi را بازنویسی نمیکند. این گزینه برای برخی مخابرههای قدیمی سطح 1.0 که نمیتوانند مجموعه نویسه مناسب را اعلام کنند لازم است.
- txt_chop_top
- حذف خط بالایی تلهتکست. مقدار پیشفرض 1 است.
- txt_format
- مشخص کردن قالب زیرنویسهای دیکودشده.
- bitmap
- قالب پیشفرض؛ باید از این قالب برای صفحات تلهتکست استفاده کنید، زیرا برخی گرافیکها و رنگها در متن ساده یا حتی ASS قابل بیان نیستند.
- text
- خروجی ساده مبتنی بر متن بدون قالببندی.
- ass
- خروجی فرمتبندیشده ASS؛ صفحات زیرنویس و صفحات تلهتکست در استایلهای متفاوتی بازگردانده میشوند. صفحات زیرنویس به متن تقلیل مییابند، اما تلاش میشود چیدمان متن و فرمتبندی حفظ گردد.
- txt_left
- آفست افقی (X) بیتمپهای تولیدشده؛ مقدار پیشفرض 0 است.
- txt_top
- آفست عمودی (Y) بیتمپهای تولیدشده؛ مقدار پیشفرض 0 است.
- txt_chop_spaces
- حذف فاصلههای ابتدا و انتها و پاک کردن خطوط خالی از متن تولیدشده. این گزینه برای زیرنویسهای تلهتکست که به دلیل نویسههای دوبرابر پهن تلهتکست ممکن است در آغاز یا پایان خطوط دارای فاصله خالی یا بین خطوط دارای خط خالی باشند مفید است. مقدار پیشفرض 1 است.
- txt_duration
- تنظیم مدتزمان نمایش صفحات یا زیرنویسهای دیکودشده تلهتکست بر حسب میلیثانیه. مقدار پیشفرض -1 است که به معنای بینهایت یا تا زمان رسیدن رویداد زیرنویس بعدی است.
- txt_transparent
- اجبار به پسزمینه شفاف در بیتمپهای تلهتکست تولیدشده. مقدار پیشفرض 0 است که به معنای پسزمینه کدر است.
- txt_opacity
- تنظیم کدر بودن (0-255) پسزمینه تلهتکست. اگر txt_transparent تنظیم نشده باشد، تنها نویسههای میان کادر شروع و کادر پایان (معمولاً زیرنویسها) را تحت تاثیر قرار میدهد. مقدار پیشفرض 0 است اگر txt_transparent تنظیم شده باشد، در غیر این صورت 255 است.
فیلترهای جریان بیت (BITSTREAM FILTERS)
هنگامی که بیلد FFmpeg خود را پیکربندی میکنید، تمامی فیلترهای جریان بیت پشتیبانیشده به طور پیشفرض فعال هستند. میتوانید با استفاده از گزینه پیکربندی "--list-bsfs" فهرستی از تمام موارد موجود را مشاهده کنید.
میتوانید تمامی فیلترهای جریان بیت را با استفاده از گزینه پیکربندی "--disable-bsfs" غیرفعال کنید، و هر فیلتر جریان بیت را با استفاده از گزینه "--enable-bsf=BSF" به صورت گزینشی فعال نمایید، یا یک فیلتر جریان بیت مشخص را با استفاده از گزینه "--disable-bsf=BSF" غیرفعال کنید.
گزینه "-bsfs" در ابزارهای ff* فهرستی از تمامی فیلترهای جریان بیت پشتیبانیشده گنجاندهشده در بیلد شما را نمایش میدهد.
ابزارهای ff* گزینه -bsf را دارند که به ازای هر استریم اعمال میشود و فهرستی از فیلترها را که با کاما جدا شدهاند دریافت میکند؛ پارامترهای هر فیلتر پس از علامت '=' به دنبال نام فیلتر میآیند.
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
در ادامه توضیحات فیلترهای جریان بیت فعلی در دسترس به همراه پارامترهای آنها (در صورت وجود) آورده شده است.
aac_adtstoasc
تبدیل جریان بیت MPEG-2/4 AAC ADTS به پیکربندی صوتی ویژه MPEG-4 (Audio Specific Configuration).
این فیلتر یک MPEG-4 AudioSpecificConfig از روی هدر MPEG-2/4 ADTS ایجاد کرده و هدر ADTS را حذف میکند.
این فیلتر برای نمونه هنگام کپی کردن یک استریم AAC از یک ظرف خام ADTS AAC یا کانتینر MPEG-TS به MP4A-LATM، به یک فایل FLV، یا به فایلهای MOV/MP4 و فرمتهای مرتبط مانند 3GP یا M4A مورد نیاز است. لطفاً توجه داشته باشید که این فیلتر به صورت خودکار برای MP4A-LATM و MOV/MP4 و فرمتهای مرتبط درج میشود.
av1_metadata
اصلاح متادیتای تعبیهشده در یک استریم AV1.
- td
- درج یا حذف OBUهای جداکننده زمانی (temporal delimiter) در تمام واحدهای زمانی استریم.
- color_primaries
- transfer_characteristics
- matrix_coefficients
- تنظیم فیلدهای توصیف رنگ در استریم (بخش 6.4.2 استاندارد AV1 را ببینید).
- color_range
- تنظیم محدوده رنگ در استریم (بخش 6.4.2 استاندارد AV1 را ببینید؛ توجه داشته باشید که این فیلد را نمیتوان برای استریمهایی که از مشخصات اصلی BT.709، ویژگی انتقال sRGB و ضرایب ماتریس همانی (RGB) استفاده میکنند تنظیم کرد).
- chroma_sample_position
- تنظیم مکان نمونه کروما در استریم (بخش 6.4.2 استاندارد AV1 را ببینید). این فیلد تنها برای استریمهای 4:2:0 قابل تنظیم است.
- tick_rate
- تنظیم نرخ تیک (time_scale / num_units_in_display_tick) در اطلاعات زمانبندی هدر دنباله (sequence header).
- num_ticks_per_picture
- تنظیم تعداد تیکها در هر تصویر برای مشخص کردن این که استریم دارای نرخ فریم ثابت است. در صورتی که tick_rate نیز تنظیم نشده باشد، نادیده گرفته میشود.
- delete_padding
- حذف OBUهای پدینگ (Padding OBUs).
chomp
حذف پدینگ صفر در انتهای یک بسته (packet).
dca_core
استخراج هسته اصلی از یک استریم DCA/DTS، با صرفنظر از پسوندهایی مانند DTS-HD.
dovi_rpu
دستکاری متادیتای Dolby Vision در یک جریان بیت HEVC/AV1، با امکان اختیاری فعالسازی فشردهسازی متادیتا.
- strip
- در صورت فعال بودن، تمامی متادیتای Dolby Vision (رکورد پیکربندی + بلوکهای داده RPU) از استریم حذف میشوند.
- compression
- کدام سطح فشردهسازی فعال شود.
dovi_split
تفکیک یک جریان بیت چندلایهای HEVC با پروفایل ۷ دالبی ویژن (Dolby Vision Profile 7). پروفایل ۷ جریان بیت HEVC لایه ارتقا (enhancement-layer) را به صورت درهمتنیده داخل واحدهای دسترسی لایه پایه حمل میکند که درون واحدهای NAL مشخصنشده توسط کاربر از نوع ۶۳ (UNSPEC63) بستهبندی شدهاند، و متادیتای RPU نیز به عنوان یک NAL مشخصنشده توسط کاربر از نوع ۶۲ (UNSPEC62) در کنار آن قرار دارد.
- mode
- کدام مؤلفههای Dolby Vision در جریان بیت خروجی حفظ شوند.
- bl
- تنها لایه پایه: حذف تمام UNSPEC63 (لایه EL) و تمام UNSPEC62 (متادیتای RPU). خروجی یک استریم ساده HEVC بدون هیچ نشانگر Dolby Vision خواهد بود. این حالت پیشفرض است.
- bl_rpu
- لایه پایه به همراه حفظ NAL مربوط به RPU.
- el
- تنها لایه ارتقا: برای هر NAL از نوع UNSPEC63، هدر خارجی دو بایتی NAL حذف شده و بار داده داخلی صادر میشود. نتیجه یک جریان بیت مستقل HEVC است. واحد UNSPEC62 (RPU) حذف میشود.
- el_rpu
- لایه ارتقا با حفظ عین به عین NALهای RPU. همانند el، اما NALهای RPU از نوع UNSPEC62 نیز در کنار NALهای بازشده EL صادر میشوند.
dump_extra
اضافه کردن extradata به ابتدای بستههای فیلترشده به جز زمانی که بستههای مذکور دقیقاً با همان extradata که قرار است اضافه شود آغاز شده باشند.
- freq
- آرگومان اضافی مشخص میکند که کدام بستهها باید فیلتر شوند. مقادیر زیر را میپذیرد:
اگر مشخص نشود، پیشفرض k در نظر گرفته میشود.
برای نمونه دستور ffmpeg زیر یک هدر سراسری را در بستههای H.264 تولیدشده توسط اینکودر "libx264" اجبار میکند (و در نتیجه هدرهای بستههای فردی را غیرفعال میسازد)، اما با افزودن هدر ذخیرهشده در extradata به بستههای کلیدی، آنها را اصلاح مینماید:
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
dv_error_marker
بلوکهایی در DV که به عنوان آسیبدیده علامتگذاری شدهاند با بلوکهایی با رنگ مشخصشده جایگزین میشوند.
- color
- رنگی که بلوکهای آسیبدیده با آن جایگزین میشوند.
- sta
- یک ماسک ۱۶ بیتی که مشخص میکند کدام یک از ۱۶ مقدار ممکن وضعیت خطا باید با بلوکهای رنگی جایگزین شوند. 0xFFFE مقدار پیشفرضی است که تمامی مقادیر وضعیت خطای غیر صفر را جایگزین میکند.
صفحات ۴۴-۴۶ یا بخش 5.5 از پیوند زیر را ببینید: http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf
eac3_core
استخراج هسته از یک استریم E-AC-3، با صرفنظر از کانالهای اضافی.
eia608_to_smpte436m
تبدیل یک استریم "EIA_608" به یک استریم داده "SMPTE_436M_ANC"، با بستهبندی زیرنویسهای بسته (closed captions) در بستههای CTA-708 CDP VANC.
- line_number
- انتخاب شماره خطی که بستههای VANC تولیدشده باید در آن قرار گیرند. معمولاً خط ۹ (پیشفرض) یا ۱۱ مد نظر است.
- wrapping_type
- انتخاب نوع بستهبندی SMPTE 436M، پیشفرض vanc_frame است. مقادیر زیر را میپذیرد:
- vanc_frame
- فریم VANC (فریم درهمبافته یا پیشرونده بخشبندیشده).
- vanc_field_1
- vanc_field_2
- vanc_progressive_frame
- sample_coding
- انتخاب کدگذاری نمونه SMPTE 436M، پیشفرض 8bit_luma است. مقادیر زیر را میپذیرد:
- 8bit_luma
- نمونههای روشنایی (luma) مؤلفه ۸ بیتی.
- 8bit_color_diff
- نمونههای تفاضل رنگ مؤلفه ۸ بیتی.
- 8bit_luma_and_color_diff
- نمونههای روشنایی و تفاضل رنگ مؤلفه ۸ بیتی.
- 10bit_luma
- نمونههای روشنایی مؤلفه ۱۰ بیتی.
- 10bit_color_diff
- نمونههای تفاضل رنگ مؤلفه ۱۰ بیتی.
- 10bit_luma_and_color_diff
- نمونههای روشنایی و تفاضل رنگ مؤلفه ۱۰ بیتی.
- 8bit_luma_parity_error
- نمونههای روشنایی مؤلفه ۸ بیتی همراه با خطای پاریتی.
- 8bit_color_diff_parity_error
- نمونههای تفاضل رنگ مؤلفه ۸ بیتی همراه با خطای پاریتی.
- 8bit_luma_and_color_diff_parity_error
- نمونههای روشنایی و تفاضل رنگ مؤلفه ۸ بیتی همراه با خطای پاریتی.
- initial_cdp_sequence_cntr
- مقدار اولیه فیلدهای عدد صحیح بدون علامت ۱۶ بیتی "cdp_hdr_sequence_cntr" و "cdp_ftr_sequence_cntr" در CDP. پیشفرض 0 است.
- cdp_frame_rate
- تنظیم فیلد "cdp_frame_rate" در CDP. این گزینه در عمل زمانبندی استریم داده را تغییر نمیدهد، بلکه صرفاً مقادیر درجشده در آن فیلد را در بستههای تولیدشده CDP تغییر میدهد. پیشفرض 30000/1001 است.
extract_extradata
استخراج extradata درونباندی (in-band extradata).
برخی کدکها اجازه میدهند هدرهای بلندمدت (مانند هدرهای دنباله MPEG-2 یا (VPS/)SPS/PPS در H.264/HEVC) یا به صورت «درونباندی» (یعنی به عنوان بخشی از جریان بیت حاوی فریمهای کدگذاریشده) یا «برونباندی» (مانند سطح کانتینر) ارسال شوند. این حالت اخیر در اصطلاحات FFmpeg با نام «extradata» شناخته میشود.
این فیلتر جریان بیت هدرهای درونباندی را شناسایی کرده و آنها را به عنوان extradata در دسترس قرار میدهد.
- remove
- هنگامی که این گزینه فعال باشد، هدرهای بلندمدت پس از استخراج از جریان بیت حذف میشوند.
filter_units
حذف واحدهایی با انواعی در مجموعه مشخصشده یا خارج از آن از استریم.
- pass_types
- فهرستی از انواع واحد یا محدودهای از انواع واحد برای عبور دادن، در حالی که همه موارد دیگر حذف میشوند. این فهرست با '|' از مقادیر نوع واحد یا محدودهای از مقادیر با '-' مشخص میشود.
- remove_types
- همانند pass_types، با این تفاوت که واحدهای موجود در مجموعه دادهشده حذف شده و تمام موارد دیگر عبور داده میشوند.
انواع مورد استفاده توسط pass_types و remove_types متناظر هستند با انواع واحد NAL به نام (nal_unit_type) در H.264، HEVC و H.266 (جدول 7-1 در مشخصات H.264 و HEVC یا جدول 5 در مشخصات H.266 را ببینید)، مقادیر نشانگر (marker) برای JPEG (بدون پیشوند 0xFF) و کدهای شروع بدون پیشوند کد شروع (یعنی بایت بعد از 0x000001) برای MPEG-2. برای VP8 و VP9، هر واحد دارای نوع صفر است.
داده اضافی (Extradata) توسط این تبدیل بدون تغییر باقی میماند، اما توجه داشته باشید اگر استریم شامل مجموعههای پارامتر درونخطی باشد، در صورت حذف آنها ممکن است خروجی غیرقابل استفاده شود.
برای نمونه، جهت حذف تمامی واحدهای NAL غیر VCL از یک استریم H.264:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
جهت حذف تمامی AUDها، SEI و پرکنندهها (filler) از یک استریم H.265:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
جهت حذف تمامی دادههای کاربر از یک استریم MPEG-2، شامل زیرنویسهای بسته (Closed Captions):
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT
جهت حذف تمامی SEI از یک استریم H264، شامل زیرنویسهای بسته:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT
جهت حذف تمامی پیشوندها و پسوندهای SEI از یک استریم HEVC، شامل زیرنویسهای بسته و HDR پویا:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT
hapqa_extract
استخراج بخش Rgb یا Alpha از یک فایل HAPQA، بدون فشردهسازی مجدد، به منظور ایجاد یک فایل HAPQ یا HAPAlphaOnly.
- texture
- بافتی را که باید نگه داشته شود مشخص میکند.
تبدیل HAPQA به HAPQ:
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
تبدیل HAPQA به HAPAlphaOnly:
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
h264_metadata
اصلاح متادیتای تعبیهشده در یک استریم H.264.
- aud
- درج یا حذف واحدهای NAL از نوع AUD در تمام واحدهای دسترسی استریم.
پیشفرض pass است.
- sample_aspect_ratio
- تنظیم نسبت ابعاد نمونه استریم در پارامترهای VUI. جدول E-1 در H.264 را ببینید.
- overscan_appropriate_flag
- تنظیم این که آیا استریم برای نمایش با overscan مناسب است یا خیر (بخش E.2.1 در H.264 را ببینید).
- video_format
- video_full_range_flag
- تنظیم فرمت ویدیو در استریم (بخش E.2.1 و جدول E-2 در H.264 را ببینید).
- colour_primaries
- transfer_characteristics
- matrix_coefficients
- تنظیم توصیف رنگ در استریم (بخش E.2.1 و جدولهای E-3، E-4 و E-5 در H.264 را ببینید).
- chroma_sample_loc_type
- تنظیم مکان نمونه کروما در استریم (بخش E.2.1 و شکل E-1 در H.264 را ببینید).
- tick_rate
- تنظیم نرخ تیک (time_scale / num_units_in_tick) در پارامترهای VUI. این کوچکترین واحد زمانی قابل نمایش در استریم است و در بسیاری از موارد نرخ فیلد استریم را نشان میدهد (دو برابر نرخ فریم).
- fixed_frame_rate_flag
- تنظیم این که آیا استریم دارای نرخ فریم ثابت است یا خیر - معمولاً نشان میدهد که نرخ فریم دقیقاً نصف نرخ تیک است، اما معنای دقیق به درهمبافتگی و ساختار تصویر وابسته است (بخش E.2.1 و جدول E-6 در H.264 را ببینید).
- zero_new_constraint_set_flags
- صفر کردن پرچمهای constraint_set4_flag و constraint_set5_flag در SPS. این بیتها در نسخه قبلی مشخصات H.264 رزرو شده بودند، و از این رو برخی دیکودرهای سختافزاری نیاز دارند که اینها صفر باشند. نتیجه صفر کردن اینها همچنان یک جریان بیت معتبر است.
- crop_left
- crop_right
- crop_top
- crop_bottom
- تنظیم
آفستهای
برش فریم در
SPS. این
مقادیر در
صورتی که
استریم از
قبل برش
داده شده
باشد،
جایگزین
مقادیر
فعلی
خواهند شد.
این فیلدها بر حسب پیکسل تنظیم میشوند. توجه داشته باشید که اگر کروما سابسمپل شده باشد یا استریم درهمبافته باشد، ممکن است برخی اندازهها قابل نمایش نباشند (بخش 7.4.2.1.1 در H.264 را ببینید).
- sei_user_data
- درج یک رشته
به عنوان
داده
کاربری
ثبتنشده SEI
(unregistered user data).
آرگومان
باید به فرم
UUID+string باشد که
در آن UUID به
صورت ارقام
هگزادسیمال
است که
احتمالاً
با خط تیره
جدا
شدهاند، و
رشته
میتواند
هر چیزی
باشد.
برای نمونه، 086f3693-b7b3-4f2c-9653-21492feee5b8+hello رشته «hello» را که به UUID دادهشده مرتبط است درج میکند.
- delete_filler
- حذف هر دو واحد NAL پرکننده و پیامهای پرکننده SEI.
- display_orientation
- درج، استخراج یا حذف پیامهای SEI جهت نمایش (Display orientation). برای نحو و معناشناسی، بخشهای D.1.27 و D.2.27 استاندارد H.264 را ببینید.
پیشفرض pass است.
حالت درج (insert) همراه با گزینههای "rotate" و "flip" کار میکند. هرگونه پیام از پیش موجود جهت نمایش در حالتهای insert یا remove حذف خواهد شد. حالت استخراج (extract) ماتریس نمایش را به عنوان داده جانبی (side data) به بسته پیوست میکند.
- rotate
- تنظیم چرخش در SEI جهت نمایش (زاویه پادساعتگرد بر حسب درجه). محدوده از -360 تا +360 است. پیشفرض NaN است.
- flip
- تنظیم وارونگی (flip) در SEI جهت نمایش.
پیشفرض تنظیمنشده است.
- level
- تنظیم سطح (level)
در SPS. به بخش A.3
و جدولهای
A-1 تا A-5 در H.264
مراجعه
کنید.
آرگومان باید نام یک سطح (برای نمونه 4.2)، یک مقدار level_idc (برای نمونه 42)، یا نام ویژه auto باشد که نشان میدهد فیلتر باید تلاش کند سطح را از ویژگیهای استریم ورودی حدس بزند.
h264_mp4toannexb
تبدیل یک جریان بیت H.264 از حالت طول با پیشوند (length prefixed) به حالت کد شروع با پیشوند (start code prefixed)، مطابق با تعریف در پیوست B از مشخصات ITU-T H.264.
این تبدیل برای برخی فرمتهای پخش زنده، معمولاً فرمت استریم انتقال MPEG-2 (میکسر "mpegts") مورد نیاز است.
برای نمونه جهت ریمکس کردن یک فایل MP4 حاوی استریم H.264 به فرمت mpegts با ffmpeg، میتوانید از دستور زیر استفاده کنید:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
لطفاً توجه داشته باشید که این فیلتر برای فرمتهای خروجی MPEG-TS (میکسر "mpegts") و خام H.264 (میکسر "h264") به صورت خودکار درج میشود.
h264_redundant_pps
این فیلتر یک اصلاح ویژه را روی برخی استریمهای H264 دیسک بلو-ری BDMV که شامل PPSهای زائد هستند اعمال میکند. این PPSها پارامترهای نامربوط استریم را تغییر میدهند و باعث سردرگمی سایر تبدیلات میشوند که به extradata صحیح نیاز دارند.
اینکودر مورد استفاده در این استریمهای متأثر، PPSهای اضافی را در سرتاسر استریم اضافه میکند و مقدار اولیه QP و فعال بودن یا نبودن پیشبینی وزنی را تغییر میدهد. این امر پس از کپی کردن استریم در کانتینری با هدر سراسری مشکلاتی ایجاد میکند، زیرا PPS آغازین برای ادامه استریم مناسب نیست. به عنوان یک اثر جانبی، برای نمونه، پرش در ویدیو (seeking) تا زمان ظاهر شدن یک PPS جدید خروجی بههمریخته ارائه میدهد.
این فیلتر جریان بیت (BSF) این PPSهای اضافی را حذف کرده و هدرهای برش را بازنویسی میکند به گونهای که استریم از یک PPS راهنمای منفرد در هدر سراسری استفاده کند، که مشکل را برطرف میسازد.
hevc_metadata
اصلاح متادیتای تعبیهشده در یک استریم HEVC.
- aud
- درج یا حذف واحدهای NAL از نوع AUD در تمام واحدهای دسترسی استریم.
- sample_aspect_ratio
- تنظیم نسبت ابعاد نمونه در پارامترهای VUI استریم.
- video_format
- video_full_range_flag
- تنظیم فرمت ویدیو در استریم (بخش E.3.1 و جدول E.2 در H.265 را ببینید).
- colour_primaries
- transfer_characteristics
- matrix_coefficients
- تنظیم توصیف رنگ در استریم (بخش E.3.1 و جدولهای E.3، E.4 و E.5 در H.265 را ببینید).
- chroma_sample_loc_type
- تنظیم مکان نمونه کروما در استریم (بخش E.3.1 و شکل E.1 در H.265 را ببینید).
- tick_rate
- تنظیم نرخ تیک در پارامترهای VPS و VUI به صورت (time_scale / num_units_in_tick). همراه با num_ticks_poc_diff_one، این گزینه میتواند یک نرخ فریم ثابت در استریم تنظیم کند. توجه داشته باشید که اگر استریم در یک کانتینر باشد، احتمالاً توسط پارامترهای کانتینر نادیده گرفته میشود.
- num_ticks_poc_diff_one
- تنظیم poc_proportional_to_timing_flag در VPS و VUI و استفاده از این مقدار برای تنظیم num_ticks_poc_diff_one_minus1 (بخشهای 7.4.3.1 و E.3.1 در H.265 را ببینید). اگر tick_rate نیز تنظیم نشده باشد، نادیده گرفته میشود.
- crop_left
- crop_right
- crop_top
- crop_bottom
- تنظیم
آفستهای
برش پنجره
انطباق (conformance window)
در SPS. این
مقادیر در
صورتی که
استریم از
قبل برش
داده شده
باشد،
جایگزین
مقادیر
فعلی
خواهند شد.
این فیلدها بر حسب پیکسل تنظیم میشوند. توجه داشته باشید که در صورت سابسمپل بودن کروما ممکن است برخی اندازهها قابل نمایش نباشند (بخش 7.4.3.2.1 در H.265).
- width
- height
- تنظیم عرض و ارتفاع پس از برش.
- level
- تنظیم سطح (level)
در VPS و SPS. بخش A.4 و
جدولهای A.6
و A.7 در H.265 را
ببینید.
آرگومان باید نام یک سطح (برای نمونه 5.1)، یک مقدار general_level_idc (برای نمونه 153 برای سطح 5.1)، یا نام ویژه auto باشد که نشان میدهد فیلتر باید تلاش کند سطح را از ویژگیهای استریم ورودی حدس بزند.
hevc_mp4toannexb
تبدیل یک جریان بیت HEVC/H.265 از حالت با پیشوند طول به حالت با پیشوند کد شروع (همانطور که در پیوست B از مشخصات ITU-T H.265 تعریف شده است).
این تبدیل برای برخی فرمتهای پخش زنده، معمولاً فرمت استریم انتقال MPEG-2 (میکسر "mpegts") مورد نیاز است.
برای نمونه جهت ریمکس کردن یک فایل MP4 حاوی استریم HEVC به فرمت mpegts با ffmpeg، میتوانید از دستور زیر استفاده کنید:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
لطفاً توجه داشته باشید که این فیلتر به صورت خودکار برای فرمتهای خروجی MPEG-TS (میکسر "mpegts") و خام HEVC/H.265 (میکسر "h265" یا "hevc") درج میشود.
imxdump
جریان بیت را اصلاح میکند تا در MOV قرار گیرد و توسط دیکودر Final Cut Pro قابل استفاده باشد. این فیلتر تنها برای کدک mpeg2video اعمال میشود، و احتمالاً برای Final Cut Pro 7 و نسخههای جدیدتر با داشتن -tag:v مناسب نیازی به آن نیست.
برای نمونه، برای ریمکس کردن ۳۰ مگابایت بر ثانیه NTSC IMX به MOV:
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
mjpeg2jpeg
تبدیل بستههای MJPEG/AVI1 به بستههای کامل JPEG/JFIF.
فرمت MJPEG یک کدک ویدیویی است که در آن هر فریم ویدیو در اصل یک تصویر JPEG است. فریمهای مجزا را میتوان بدون اتلاف استخراج کرد، مثلاً با:
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
متأسفانه این تکهها تصاویر ناقص JPEG هستند، زیرا بخش DHT مورد نیاز برای دیکود را ندارند. به نقل از http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml:
اوری لی (Avery Lee)، در سال ۲۰۰۱ در گروه خبری rec.video.desktop نوشت: «MJPEG، یا حداقل MJPEG در فایلهای AVI دارای کد چهارنویسهای (fourcc) از نوع MJPG، یک JPEG محدودشده با یک جدول هافمن ثابت -- و *حذفشده* -- است. تصویر JPEG باید در فضای رنگی YCbCr باشد، باید 4:2:2 باشد، و باید از انکود هافمن پایه استفاده کند، نه محاسباتی یا پیشرونده. . . . در واقع میتوانید فریمهای MJPEG را استخراج کرده و آنها را با یک دیکودر معمولی JPEG رمزگشایی کنید، اما باید بخش DHT را به آنها اضافه نمایید، در غیر این صورت دیکودر هیچ اطلاعی از نحوه از حالت فشرده خارج کردن دادهها نخواهد داشت. جدول دقیق مورد نیاز در مشخصات OpenDML ارائه شده است.»
این فیلتر جریان بیت، هدر فریمهای استخراجشده از یک استریم MJPEG را (که شناسه هدر AVI1 را حمل میکنند و فاقد بخش DHT هستند) وصله میکند تا تصاویر JPEG کاملاً استاندارد تولید شوند.
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg exiftran -i -9 frame*.jpg ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
mjpegadump
افزودن یک هدر MJPEG A به جریان بیت، برای امکانپذیر ساختن رمزگشایی توسط Quicktime.
mov2textsub
استخراج یک فایل متنی قابل نمایش از زیرنویسهای MOV، با حذف هدر متادیتا از هر بسته زیرنویس.
همچنین فیلتر text2movsub را ببینید.
mpeg2_metadata
اصلاح متادیتای تعبیهشده در یک استریم MPEG-2.
- display_aspect_ratio
- تنظیم نسبت
ابعاد
نمایش در
استریم.
مقادیر ثابت زیر پشتیبانی میشوند:
- 4/3
- 16/9
- 221/100
هر مقدار دیگری باعث میشود که به جای آن پیکسلهای مربعی اعلام شوند (بخش 6.3.3 و جدول 6-3 در H.262 را ببینید).
- frame_rate
- تنظیم نرخ فریم در استریم. این مقدار از جدولی از مقادیر شناختهشده همراه با یک ضریب و مقسومعلیه کوچک ساخته میشود - اگر مقدار ارائهشده دقیقاً قابل نمایش نباشد، نزدیکترین مقدار قابل نمایش استفاده خواهد شد (بخش 6.3.3 و جدول 6-4 در H.262 را ببینید).
- video_format
- تنظیم فرمت ویدیو در استریم (بخش 6.3.6 و جدول 6-6 در H.262 را ببینید).
- colour_primaries
- transfer_characteristics
- matrix_coefficients
- تنظیم توصیف رنگ در استریم (بخش 6.3.6 و جدولهای 6-7، 6-8 و 6-9 در H.262 را ببینید).
mpeg4_unpack_bframes
باز کردن فریمهای B بستهبندیشده به سبک DivX.
فریمهای B بستهبندیشده به سبک DivX فرمت استاندارد و معتبر MPEG-4 نیستند و صرفاً راهکاری برای زیرسیستم معیوب Video for Windows بودند. آنها فضای بیشتری مصرف میکنند، میتوانند باعث مشکلات جزئی همگامسازی AV شوند، برای دیکود به توان CPU بیشتری نیاز دارند (مگر اینکه پخشکننده صف تصاویر دیکودشده داشته باشد تا سبک فریم در بسته 2,0,2,0 را جبران کند) و اگر در کانتینرهای استانداردی مانند mp4 یا mpeg-ps/ts کپی شوند مشکلساز میشوند، زیرا ممکن است دیکودرهای MPEG-4 قادر به دیکود آنها نباشند چون MPEG-4 معتبر نیستند.
برای نمونه جهت اصلاح یک فایل AVI حاوی استریم MPEG-4 با فریمهای B بستهبندیشده به سبک DivX با استفاده از ffmpeg، میتوانید از دستور زیر استفاده کنید:
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
noise
محتوای بستهها را مخدوش میکند یا به سادگی آنها را بدون آسیب رساندن به کانتینر دور میاندازد (drop). میتواند برای تست تصادفی (fuzzing) یا آزمودن تابآوری/پنهانسازی خطا استفاده شود.
پارامترها:
- amount
- عبارتی را میپذیرد که ارزیابی آن به ازای هر بسته تعیین میکند هر چند وقت یکبار بایتها در آن بسته تغییر داده شوند. مقداری زیر ۰ به فرکانس متغیر منجر خواهد شد. پیشفرض 0 است که منجر به عدم تغییر میشود. با این حال، اگر نه amount و نه drop مشخص نشده باشند، amount روی -1 تنظیم خواهد شد. برای متغیرهای پذیرفتهشده به زیر مراجعه کنید.
- drop
- عبارتی را میپذیرد که به ازای هر بسته ارزیابی میشود و مقدار آن مشخص میکند که آیا آن بسته دور انداخته شود یا خیر. ارزیابی به یک مقدار مثبت منجر به دور انداختن بسته میشود. ارزیابی به یک مقدار منفی منجر به شانس متغیر برای دور انداخته شدن آن میشود که تقریباً نسبت معکوس با بزرگی مقدار دارد. پیشفرض 0 است که به معنای دور نینداختن است. برای متغیرهای پذیرفتهشده به زیر مراجعه کنید.
- dropamount
- یک عدد صحیح غیرمنفی را میپذیرد که شانس متغیری را برای دور انداخته شدن آن اختصاص میدهد که تقریباً نسبت معکوس با مقدار دارد. پیشفرض 0 است که منجر به دور نینداختن میشود. این گزینه برای سازگاری با گذشته حفظ شده است و معادل تنظیم drop به یک مقدار منفی با همان بزرگی است، یعنی "dropamount=4" مشابه "drop=-4" است. اگر drop نیز مشخص شده باشد نادیده گرفته میشود.
هر دو گزینه "amount" و "drop" عبارات حاوی متغیرهای زیر را میپذیرند:
- n
- اندیس بسته، با شروع از صفر.
- tb
- مبنای زمان (timebase) برای برچسبهای زمانی بسته.
- pts
- برچسب زمان ارائه (presentation timestamp) بسته.
- dts
- برچسب زمان دیکود (decoding timestamp) بسته.
- nopts
- ثابت نمایانگر AV_NOPTS_VALUE.
- startpts
- نخستین مقدار PTS غیر از AV_NOPTS_VALUE که در استریم دیده شده است.
- startdts
- نخستین مقدار DTS غیر از AV_NOPTS_VALUE که در استریم دیده شده است.
- duration
- d
- مدتزمان بسته، در واحدهای مبنای زمان.
- pos
- موقعیت بسته در ورودی؛ در صورت نامشخص بودن یا عدم تنظیم ممکن است -1 باشد.
- size
- اندازه بسته، بر حسب بایت.
- key
- این که آیا بسته به عنوان یک فریم کلیدی (keyframe) علامتگذاری شده است یا خیر.
- state
- یک عدد صحیح شبهتصادفی، که عمدتاً از محتوای بار داده بسته مشتق شده است.
نمونهها (Examples)
اعمال تغییر روی هر بایت اما بدون دور انداختن هیچ بستهای:
ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
دور انداختن تمام بستههای ویدیویی که به عنوان فریم کلیدی علامتگذاری نشدهاند پس از برچسب زمان ۳۰ ثانیه، اما بدون تغییر در هیچیک از بستههای باقیمانده:
ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(pts*tb\,30)*not(key)' output.mkv
دور انداختن یک ثانیه صوت در هر ۱۰ ثانیه و افزودن مقداری نویز تصادفی به بقیه:
ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(pts*tb\,10)\,9\,10)' output.mkv
null
این فیلتر جریان بیت بستهها را بدون تغییر عبور میدهد.
pcm_rechunk
بستهبندی مجدد صدای PCM به تعداد ثابتی از نمونهها در هر بسته یا نرخ ثابت بسته در هر ثانیه. این شبیه به فیلتر صوتی asetnsamples است اما به جای فریمهای صوتی، روی بستههای صوتی کار میکند.
- nb_out_samples, n
- تنظیم تعداد نمونهها در هر بسته صوتی خروجی. این تعداد به عنوان تعداد نمونهها به ازای هر کانال در نظر گرفته میشود. مقدار پیشفرض 1024 است.
- pad, p
- اگر روی ۱ تنظیم شود، فیلتر آخرین بسته صوتی را با سکوت پر میکند (pad)، به طوری که تعداد نمونههای آن مشابه (یا تقریباً مشابه، frame_rate را ببینید) بستههای قبلی باشد. مقدار پیشفرض 1 است.
- frame_rate, r
- این گزینه باعث میشود فیلتر به جای تعداد ثابتی نمونه در هر بسته، تعداد ثابتی بسته در هر ثانیه خروجی دهد. اگر نرخ نمونه صوتی بر نرخ فریم بخشپذیر نباشد، تعداد نمونهها ثابت نخواهد بود بلکه اندکی تغییر میکند تا هر بسته تا حد ممکن نزدیک به مرز فریم آغاز شود. استفاده از این گزینه نسبت به nb_out_samples اولویت دارد.
میتوانید با استفاده از گزینه frame_rate الگوی شناختهشده 1602-1601-1602-1601-1602 صدای 48kHz را برای نرخ فریم NTSC ایجاد کنید:
ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
pgs_frame_merge
ادغام دنبالهای از بخشهای زیرنویس PGS منتهی به یک بخش «پایان مجموعه نمایش» (end of display set) در یک بسته واحد.
این برای برخی کانتینرهایی که از زیرنویسهای PGS پشتیبانی میکنند (میکسر "matroska") مورد نیاز است.
prores_metadata
اصلاح متادیتای ویژگیهای رنگ تعبیهشده در استریم prores.
- color_primaries
- تنظیم مشخصات اصلی رنگ (color primaries). مقادیر در دسترس عبارتند از:
- transfer_characteristics
- تنظیم مشخصه انتقال رنگ (color transfer). مقادیر در دسترس عبارتند از:
- auto
- حفظ همان ویژگی مشخصه انتقال (پیشفرض).
- unknown
- bt709
- BT 601, BT 709, BT 2020
- smpte2084
- SMPTE ST 2084
- arib-std-b67
- ARIB STD-B67
- matrix_coefficients
- تنظیم ضریب ماتریس (matrix coefficient). مقادیر در دسترس عبارتند از:
تنظیم فضای رنگ Rec709 برای هر فریم فایل:
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
تنظیم پارامترهای Hybrid Log-Gamma برای هر فریم فایل:
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
remove_extra
حذف extradata از بستهها.
پارامتر زیر را میپذیرد:
- freq
- مشخص میکند که extradata از کدام انواع فریم حذف شود.
setts
تنظیم PTS و DTS در بستهها.
پارامترهای زیر را میپذیرد:
- ts
- pts
- dts
- تنظیم عبارات برای PTS، DTS یا هر دو.
- duration
- تنظیم عبارت برای مدتزمان (duration).
- time_base
- تنظیم مبنای زمان خروجی.
- prescale
- تنظیم این که آیا فیلدهای زمان پیش از ارزیابی عبارات به مبنای زمان خروجی تعیینشده توسط کاربر تبدیل شوند یا خیر. پیشفرض 0 است.
عبارات از طریق API ارزیابی (eval API) ارزیابی میشوند و میتوانند شامل ثابتهای زیر باشند:
- N
- شمارش بسته ورودی. با شروع از 0.
- TS
- برچسب زمان دیمکس در ورودی در صورت وجود گزینه "ts" یا "dts"، یا برچسب زمان ارائه در صورت وجود گزینه "pts".
- POS
- موقعیت اصلی بسته در فایل، یا تعریفنشده در صورتی که برای بسته فعلی نامشخص باشد.
- DTS
- برچسب زمان دیمکس در ورودی.
- PTS
- برچسب زمان ارائه در ورودی.
- DURATION
- مدتزمان در ورودی.
- STARTDTS
- مقدار DTS نخستین بسته.
- STARTPTS
- مقدار PTS نخستین بسته.
- PREV_INDTS
- مقدار DTS ورودی قبلی.
- PREV_INPTS
- مقدار PTS ورودی قبلی.
- PREV_INDURATION
- مدتزمان ورودی قبلی.
- PREV_OUTDTS
- مقدار DTS خروجی قبلی.
- PREV_OUTPTS
- مقدار PTS خروجی قبلی.
- PREV_OUTDURATION
- مدتزمان خروجی قبلی.
- NEXT_DTS
- مقدار DTS ورودی بعدی.
- NEXT_PTS
- مقدار PTS ورودی بعدی.
- NEXT_DURATION
- مدتزمان ورودی بعدی.
- TB
- مبنای زمانی که فیلدهای زمانی در آن بیان میشوند. در صورت فعال بودن prescale مبنای زمان خروجی تعیینشده توسط کاربر است، و در غیر این صورت مبنای زمان ورودی است.
- TB_OUT
- مبنای زمان خروجی.
- SR
- نرخ نمونهبرداری استریمی که بسته به آن تعلق دارد.
- NOPTS
- ثابت AV_NOPTS_VALUE.
برای نمونه، جهت برابر قرار دادن PTS با DTS (در صورت وجود فریمهای B توصیه نمیشود):
ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv
showinfo
ثبت اطلاعات پایهای بستهها در لاگ. عمدتاً برای آزمون، اشکالزدایی و توسعه مفید است.
smpte436m_to_eia608
تبدیل یک استریم داده "SMPTE_436M_ANC" به یک استریم "EIA_608"، با استخراج زیرنویسهای بسته از بستههای CTA-708 CDP VANC و نادیده گرفتن تمام دادههای دیگر.
text2movsub
تبدیل زیرنویسهای متنی به زیرنویسهای MOV (همانگونه که توسط کدک "mov_text" استفاده میشود) همراه با هدرهای متادیتا.
همچنین فیلتر mov2textsub را ببینید.
trace_headers
ثبت خروجی ردگیری حاوی تمامی عناصر ساختاری (syntax elements) در هدرهای استریم کدگذاریشده (همه چیز بالاتر از سطح بلوکهای کدگذاریشده منفرد). این گزینه میتواند برای اشکالزدایی مشکلات سطح پایین استریم مفید باشد.
از AV1، H.264، H.265، (M)JPEG، MPEG-2 و VP9 پشتیبانی میکند، اما بسته به بیلد برنامه ممکن است تنها زیرمجموعهای از این موارد در دسترس باشند.
truehd_core
استخراج هسته اصلی از یک استریم TrueHD، با صرفنظر از دادههای ATMOS.
vp9_metadata
اصلاح متادیتای تعبیهشده در یک استریم VP9.
- color_space
- تنظیم مقدار فضای رنگ در هدر فریم. توجه داشته باشید هر فریمی که روی RGB تنظیم شود به صورت ضمنی روی محدوده PC تنظیم خواهد شد و RGB با پروفایلهای 0 و 2 ناسازگار است.
- color_range
- تنظیم مقدار محدوده رنگ در هدر فریم. توجه داشته باشید که هر مقداری که توسط فضای رنگ تحمیل شود، بر این مقدار تقدم خواهد داشت.
vp9_superframe
ادغام مجدد فریمهای نامرئی (alt-ref) در سوپرفریمهای VP9. این کار ادغام استریمهای تقسیمشده/بخشبندیشده VP9 را که در آنها فریم alt-ref از همتای مرئی خود جدا شده است، اصلاح میکند.
vp9_superframe_split
تقسیم سوپرفریمهای VP9 به فریمهای تکی.
vp9_raw_reorder
در صورت داشتن یک استریم VP9 با برچسبهای زمانی درست اما احتمالاً نامرتب، بستههای show-existing-frame اضافی را برای اصلاح ترتیب درج میکند.
گزینههای فرمت (FORMAT OPTIONS)
کتابخانه libavformat برخی گزینههای سراسری عمومی را ارائه میدهد که میتوانند روی تمامی میکسرها و دیمکسرها تنظیم شوند. علاوه بر این هر میکسر یا دیمکسر ممکن است از گزینههای اصطلاحاً اختصاصی (private options) پشتیبانی کند که مختص آن مؤلفه است.
گزینهها را میتوان با مشخص کردن -option value در ابزارهای FFmpeg، یا با تنظیم صریح مقدار در گزینههای "AVFormatContext" یا استفاده از API پرونده libavutil/opt.h برای استفاده برنامهنویسی تنظیم کرد.
فهرست گزینههای پشتیبانیشده در ادامه آمده است:
- avioflags flags (ورودی/خروجی)
- مقادیر ممکن:
- direct
- کاهش بافرینگ.
- probesize integer (ورودی)
- تنظیم اندازه پروب بر حسب بایت، یعنی اندازه دادهای که برای به دست آوردن اطلاعات استریم تجزیه و تحلیل میشود. مقدار بالاتر در صورتی که اطلاعات در استریم پراکنده باشد، شناسایی اطلاعات بیشتری را امکانپذیر میسازد، اما تاخیر را افزایش میدهد. باید یک عدد صحیح نه کمتر از ۳۲ باشد. به طور پیشفرض 5000000 است.
- max_probe_packets integer (ورودی)
- تنظیم حداکثر تعداد بستههای بافرشده هنگام پروب یک کدک. پیشفرض 2500 بسته است.
- packetsize integer (خروجی)
- تنظیم اندازه بسته.
- fflags flags
- تنظیم
پرچمهای
فرمت. برخی
از آنها
برای تعداد
محدودی از
فرمتها
پیادهسازی
شدهاند.
مقادیر ممکن برای فایلهای ورودی:
- discardcorrupt
- دور انداختن بستههای آسیبدیده و خراب.
- fastseek
- فعالسازی پرش سریع، اما نادقیق برای برخی فرمتها.
- genpts
- تولید PTSهای گمشده در صورت وجود DTS.
- igndts
- نادیده گرفتن DTS در صورتی که PTS نیز تنظیم شده باشد. در صورتی که PTS تنظیم شده باشد، مقدار DTS روی NOPTS تنظیم میشود. این مورد در صورت تنظیم پرچم "nofillin" نادیده گرفته میشود.
- ignidx
- نادیده گرفتن فهرست اندیس (index).
- nobuffer
- کاهش تاخیر ناشی از بافرینگ در طول تحلیل اولیه استریمهای ورودی.
- nofillin
- عدم پر کردن مقادیر گمشده در فیلدهای بسته که میتوانند دقیقاً محاسبه شوند.
- noparse
- غیرفعال کردن AVParsers، این گزینه به "+nofillin" نیز نیاز دارد.
- sortdts
- تلاش برای درهمبافتن بستههای خروجی بر اساس DTS. در حال حاضر، تنها برای فایلهای AVI دارای اندیس در دسترس است.
مقادیر ممکن برای فایلهای خروجی:
- autobsf
- اعمال خودکار فیلترهای جریان بیت بر اساس نیاز فرمت خروجی. به طور پیشفرض فعال است.
- bitexact
- تنها نوشتن دادههای مستقل از پلتفرم، بیلد و زمان. این امر تضمین میکند که چکسام فایل و دادهها بازتولیدپذیر بوده و میان پلتفرمها مطابقت داشته باشد. کاربرد اصلی آن برای تستهای رگرسیون است.
- flush_packets
- نوشتن فوری بستهها در خروجی.
- shortest
- توقف میکس در انتهای کوتاهترین استریم. ممکن است افزایش max_interleave_delta برای جلوگیری از خالی شدن استریمهای طولانیتر پیش از رسیدن به EOF نیاز باشد.
- seek2any integer (ورودی)
- اجازه پرش به فریمهای غیرکلیدی در سطح دیمکسر در صورت پشتیبانی، با تنظیم روی ۱. پیشفرض 0 است.
- analyzeduration integer (ورودی)
- مشخص کردن اینکه چند میکروثانیه برای پروب ورودی تجزیه و تحلیل شود. مقدار بالاتر شناسایی اطلاعات دقیقتر را ممکن میسازد، اما تاخیر را افزایش میدهد. پیشفرض 5,000,000 میکروثانیه = ۵ ثانیه است.
- cryptokey hexadecimal string (ورودی)
- تنظیم کلید رمزگشایی.
- indexmem integer (ورودی)
- تنظیم حداکثر حافظه مورد استفاده برای اندیس برچسب زمان (به ازای هر استریم).
- rtbufsize integer (ورودی)
- تنظیم حداکثر حافظه مورد استفاده برای بافر کردن فریمهای بلادرنگ (real-time).
- fdebug flags (ورودی/خروجی)
- چاپ
اطلاعات
خاص
اشکالزدایی.
مقادیر ممکن:
- max_delay integer (ورودی/خروجی)
- تنظیم حداکثر تاخیر میکس یا دیمکس بر حسب میکروثانیه.
- fpsprobesize integer (ورودی)
- تنظیم تعداد فریمهای مورد استفاده برای پروب fps.
- audio_preload integer (خروجی)
- تنظیم میکروثانیههایی که بستههای صوتی باید زودتر درهمبافته شوند.
- chunk_duration integer (خروجی)
- تنظیم میکروثانیهها برای هر چانک (قطعه).
- chunk_size integer (خروجی)
- تنظیم اندازه بر حسب بایت برای هر چانک.
- err_detect, f_err_detect flags (ورودی)
- تنظیم
پرچمهای
تشخیص خطا.
پرچم
"f_err_detect"
منسوخ شده
است و تنها
باید از
طریق ابزار
ffmpeg استفاده
شود.
مقادیر ممکن:
- crccheck
- تأیید صحت CRCهای تعبیهشده.
- bitstream
- تشخیص انحرافات از مشخصات جریان بیت.
- buffer
- تشخیص طول نامناسب جریان بیت.
- explode
- لغو دیکود هنگام تشخیص خطاهای جزئی.
- careful
- در نظر گرفتن مواردی که مشخصات استاندارد را نقض میکنند و در محیط عملیاتی دیده نشدهاند به عنوان خطا.
- compliant
- در نظر گرفتن تمامی موارد عدم انطباق با مشخصات استاندارد به عنوان خطا.
- aggressive
- در نظر گرفتن کارهایی که یک اینکودر عاقل نباید انجام دهد به عنوان خطا.
- max_interleave_delta integer (خروجی)
- تنظیم
حداکثر
مدتزمان
بافرینگ
برای
درهمبافی
(interleaving).
مدتزمان
بر حسب
میکروثانیه
بیان
میشود و
پیشفرض آن
10000000 (۱۰ ثانیه)
است.
برای اطمینان از اینکه تمامی استریمها به درستی درهمبافته میشوند، libavformat پیش از نوشتن هر بستهای در فایل خروجی، منتظر میماند تا دستکم یک بسته برای هر استریم در اختیار داشته باشد. هنگامی که برخی استریمها پراکنده (sparse) باشند (یعنی فاصلههای بزرگی بین بستههای پیاپی وجود داشته باشد)، این امر میتواند منجر به بافرینگ بیش از حد شود.
این فیلد حداکثر اختلاف میان برچسبهای زمانی نخستین و آخرین بسته موجود در صف میکس را تعیین میکند که بالاتر از آن، libavformat صرفنظر از اینکه آیا بستهای برای همه استریمها در صف قرار دارد یا خیر، یک بسته را در خروجی مینویسد.
اگر روی ۰ تنظیم شود، libavformat صرفنظر از حداکثر اختلاف برچسب زمان میان بستههای بافرشده، به بافر کردن بستهها تا زمانی که بستهای برای هر استریم داشته باشد ادامه میدهد.
- use_wallclock_as_timestamps integer (ورودی)
- استفاده از ساعت واقعی سیستم به عنوان برچسب زمان در صورت تنظیم روی ۱. پیشفرض 0 است.
- avoid_negative_ts integer (خروجی)
- مقادیر ممکن:
- make_non_negative
- شیفت دادن برچسبهای زمانی برای غیرمنفی کردن آنها. همچنین توجه داشته باشید که این گزینه تنها بر برچسبهای زمانی منفی ابتدایی تأثیر میگذارد، و نه برچسبهای زمانی منفی غیریکنواخت.
- make_zero
- شیفت دادن برچسبهای زمانی به گونهای که نخستین برچسب زمان 0 باشد.
- auto (پیشفرض)
- فعالسازی شیفت در صورت لزوم توسط فرمت مقصد.
- disabled
- غیرفعال کردن شیفت برچسبهای زمانی.
هنگامی که شیفت فعال باشد، تمامی برچسبهای زمانی خروجی به یک میزان شیفت داده میشوند. ناهماهنگیهای صوتی، ویدیویی و زیرنویس و اختلاف برچسبهای زمانی نسبی در مقایسه با وضعیت بدون شیفت حفظ میشوند.
- skip_initial_bytes integer (ورودی)
- تنظیم تعداد بایتهایی که پیش از خواندن هدر و فریمها باید نادیده گرفته شوند، در صورت تنظیم روی ۱. پیشفرض 0 است.
- correct_ts_overflow integer (ورودی)
- اصلاح سرریزهای تکی برچسب زمان در صورت تنظیم روی ۱. پیشفرض 1 است.
- flush_packets integer (خروجی)
- تخلیه استریم ورودی/خروجی زیرین پس از هر بسته. پیشفرض -1 (خودکار) است، که یعنی پروتکل زیرین تصمیم میگیرد؛ مقدار 1 آن را فعال میکند و اثر آن کاهش تاخیر است، مقدار 0 آن را غیرفعال میکند و ممکن است توان خروجی I/O را در برخی موارد افزایش دهد.
- output_ts_offset offset (خروجی)
- تنظیم آفست
زمانی
خروجی.
مقدار offset باید مشخصات مدتزمان باشد، بخش مدتزمان در راهنمای ffmpeg-utils(1) را ببینید.
آفست توسط میکسر به برچسبهای زمانی خروجی اضافه میشود.
مشخص کردن یک آفست مثبت بدان معناست که استریمهای متناظر به اندازه مدتزمان مشخصشده در offset به تاخیر انداخته میشوند. مقدار پیشفرض 0 است (به این معنی که هیچ آفستی اعمال نمیشود).
- format_whitelist list (ورودی)
- فهرستی از دیمکسرهای مجاز که با «,» از هم جدا شدهاند. به طور پیشفرض همه مجاز هستند.
- dump_separator string (ورودی)
- جداکننده
مورد
استفاده
برای تفکیک
فیلدهای
چاپشده در
خط فرمان
پیرامون
پارامترهای
استریم.
برای
نمونه، جهت
جداسازی
فیلدها با
خطوط جدید و
تورفتگی:
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg - max_streams integer (ورودی)
- حداکثر تعداد استریمها را مشخص میکند. این میتواند برای رد کردن فایلهایی که به دلیل تعداد زیاد استریمها به منابع بسیار زیادی نیاز دارند، استفاده شود.
- skip_estimate_duration_from_pts bool (ورودی)
- صرفنظر از تخمین مدتزمان ورودی در صورتی که نیازمند پروب اضافی برای PTS در انتهای فایل باشد. در حال حاضر برای MPEG-PS و MPEG-TS کاربرد دارد.
- duration_probesize integer (ورودی)
- تنظیم اندازه پروب، بر حسب بایت، برای تخمین مدتزمان ورودی هنگامی که در عمل نیازمند پروب اضافی برای PTS در انتهای فایل است (در حال حاضر: MPEG-PS و MPEG-TS). این گزینه برای کاربرانی در نظر گرفته شده است که مایل به پروب بهتر مدتزمان برای خود فایل، یا به صورت غیرمستقیم مثلاً به دلیل استفاده از دیمکسر concat هستند. مورد کاربرد معمول یک MPEG-TS CBR با بیتریت بالا، بافرینگ ویدیویی بالا و پایان تمیز با PTS مشابه برای ویدیو و صوت است: در چنین سناریویی، شکاف فیزیکی بزرگ میان آخرین بسته ویدیویی و آخرین بسته صوتی، خواندن بایتهای زیادی را برای به دست آوردن مدتزمان استریم ویدیو ضروری میسازد. مورد کاربرد دیگر جایی است که رفتار پروب پیشفرض تنها به یک فریم ویدیویی تکی میرسد که به دلیل مرتبسازی مجدد فریمها آخرین فریم استریم نیست، بنابراین مدتزمان دقیق نمیباشد. تنظیم این گزینه حتی برای فایلهای کوچک تأثیر عملکردی دارد زیرا اندازه پروب ثابت است. رفتار پیشفرض یک موازنه چندمنظوره و تا حد زیادی تطبیقی است، اما اندازه پروب برای به دست آوردن مدتزمان استریم به هر قیمتی افزایش نخواهد یافت. باید یک عدد صحیح نه کمتر از ۱، یا ۰ برای رفتار پیشفرض باشد.
- strict, f_strict integer (ورودی/خروجی)
- مشخص
میکند که
استانداردها
با چه شدتی
رعایت شوند.
گزینه
"f_strict"
منسوخ شده
است و تنها
باید از
طریق ابزار
ffmpeg استفاده
شود.
مقادیر ممکن:
- very
- انطباق دقیق با نسخهای قدیمیتر و سختگیرانهتر از مشخصات یا نرمافزار مرجع.
- strict
- انطباق دقیق با تمامی موارد موجود در مشخصات صرفنظر از هر پیامدی.
- normal
- unofficial
- اجازه استفاده از پسوندهای غیررسمی.
- experimental
- اجازه استفاده از موارد تجربی غیراستاندارد، دیکودرها و اینکودرهای تجربی (ناتمام/در حال توسعه/به خوبی تستنشده). نکته: دیکودرهای تجربی میتوانند خطر امنیتی ایجاد کنند، از این گزینه برای دیکود ورودیهای نامطمئن استفاده نکنید.
مشخصکنندههای استریم فرمت (Format stream specifiers)
مشخصکنندههای استریم فرمت امکان انتخاب یک یا چند استریم را که با ویژگیهای خاصی مطابقت دارند، فراهم میکنند.
معناشناسی دقیق مشخصکنندههای استریم توسط تابع avformat_match_stream_specifier() تعریف شده است که در هدر libavformat/avformat.h اعلان گردیده و در بخش مشخصکنندههای استریم در راهنمای ffmpeg(1) مستند شده است.
دیمکسرها (DEMUXERS)
دیمکسرها عناصر پیکربندیشدهای در FFmpeg هستند که میتوانند استریمهای چندرسانهای را از نوع خاصی از فایل بخوانند.
هنگامی که بیلد FFmpeg خود را پیکربندی میکنید، تمامی دیمکسرهای پشتیبانیشده به طور پیشفرض فعال هستند. میتوانید با استفاده از گزینه پیکربندی "--list-demuxers" فهرستی از تمامی موارد در دسترس را مشاهده کنید.
میتوانید تمام دیمکسرها را با استفاده از گزینه پیکربندی "--disable-demuxers" غیرفعال کنید، و یک دیمکسر منفرد را با گزینه "--enable-demuxer=DEMUXER" به صورت گزینشی فعال نمایید، یا با گزینه "--disable-demuxer=DEMUXER" آن را غیرفعال کنید.
گزینه "-demuxers" در ابزارهای ff* فهرستی از دیمکسرهای فعال را نمایش میدهد. از "-formats" برای مشاهده فهرست ترکیبی دیمکسرها و میکسرهای فعال استفاده کنید.
شرح برخی از دیمکسرهای فعلی در دسترس در ادامه آمده است.
aa
دیمکسر فرمتهای ۲، ۳ و ۴ شرکت Audible.
این دیمکسر برای دیمکس کردن فایلهای Audible Format 2, 3, and 4 (.aa) استفاده میشود.
aac
دیمکسر جریان انتقال دادههای صوتی خام (ADTS) از نوع AAC.
این دیمکسر برای دیمکس کردن یک ورودی ADTS حاوی یک استریم AAC منفرد به همراه هرگونه تگ ID3v1/2 یا APE در آن استفاده میشود.
apng
دیمکسر گرافیک شبکه متحرک و قابل حمل (APNG).
این دیمکسر برای دیمکس کردن فایلهای APNG استفاده میشود. تمامی هدرها، به جز امضای PNG، تا (اما نه شامل) نخستین چانک fcTL به عنوان extradata ارسال میشوند. سپس فریمها به صورت تمامی چانکهای میان دو چانک fcTL، یا میان آخرین چانک fcTL و چانکهای IEND تقسیم میشوند.
- -ignore_loop bool
- نادیده گرفتن متغیر حلقه در فایل در صورت تنظیم. پیشفرض فعال است.
- -max_fps int
- حداکثر نرخ فریم بر حسب فریم بر ثانیه. مقدار پیشفرض 0 هیچ محدودیتی اعمال نمیکند.
- -default_fps int
- نرخ فریم پیشفرض بر حسب فریم بر ثانیه در زمانی که هیچ مقداری در فایل مشخص نشده باشد (0 به معنای با حداکثر سرعت ممکن است). پیشفرض 15 است.
asf
دیمکسر فرمت پیشرفته سیستمها (Advanced Systems Format).
این دیمکسر برای دیمکس کردن فایلهای ASF و استریمهای تحت شبکه MMS استفاده میشود.
- -no_resync_search bool
- عدم تلاش برای همگامسازی مجدد از طریق جستجوی یک کد شروع اختیاری مشخص.
concat
دیمکسر اسکریپت الحاق مجازی (Virtual concatenation).
این دیمکسر فهرستی از فایلها و سایر دستورالعملها را از یک فایل متنی خوانده و آنها را یکی پس از دیگری دیمکس میکند، درست گویی تمام بستههای آنها با هم میکس شدهاند.
برچسبهای زمانی در فایلها به گونهای تنظیم میشوند که نخستین فایل از ۰ شروع شود و هر فایل بعدی از جایی که فایل قبلی به پایان رسیده است آغاز گردد. توجه داشته باشید که این کار به صورت سراسری انجام میشود و اگر همه استریمها دقیقاً طول یکسانی نداشته باشند ممکن است باعث ایجاد شکاف شود.
تمامی فایلها باید استریمهای یکسانی داشته باشند (کدکهای یکسان، مبنای زمان یکسان و غیره).
مدتزمان هر فایل برای تنظیم برچسبهای زمانی فایل بعدی استفاده میشود: اگر مدتزمان نادرست باشد (مثلاً به این دلیل که با استفاده از نرخ بیت محاسبه شده است یا فایل ناقص است)، میتواند باعث ایجاد آرتیفکت شود. دستورالعمل "duration" میتواند برای بازنویسی مدتزمان ذخیرهشده در هر فایل استفاده شود.
ساختار دستور (Syntax)
اسکریپت یک فایل متنی در استاندارد extended-ASCII است، با یک دستورالعمل در هر خط. خطوط خالی، فاصلههای ابتدایی و خطوطی که با '#' شروع میشوند نادیده گرفته میشوند. دستورالعملهای زیر شناخته میشوند:
- "file path"
- مسیر فایلی
که باید
خوانده
شود؛
نویسههای
ویژه و
فاصلهها
باید با
بکاسلش یا
نقلقول
تکی گریز (escape)
داده شوند.
تمامی دستورالعملهای بعدی مربوط به فایل برای آن فایل اعمال میشوند.
- "ffconcat version 1.0"
- شناسایی
نوع و نسخه
اسکریپت.
برای اینکه FFmpeg فرمت را به طور خودکار تشخیص دهد، این دستورالعمل باید دقیقاً همانگونه که هست (بدون فاصله اضافی یا علامت ترتیب بایت BOM) در نخستین خط اسکریپت قرار گیرد.
- "duration dur"
- مدتزمان
فایل. این
اطلاعات
میتواند
از فایل
مشخص شود؛
مشخص کردن
آن در اینجا
ممکن است
کارآمدتر
باشد یا در
صورتی که
اطلاعات
فایل در
دسترس یا
دقیق نباشد
کمک کند.
اگر مدتزمان برای همه فایلها تنظیم شده باشد، پرش (seek) در کل ویدیوی الحاقشده امکانپذیر است.
- "inpoint timestamp"
- نقطه ورود
فایل.
هنگامی که
دیمکسر
فایل را باز
میکند،
بلافاصله
به برچسب
زمان
مشخصشده
پرش میکند.
پرش به
گونهای
انجام
میشود که
تمامی
استریمها
بتوانند در
نقطه ورود
با موفقیت
ارائه شوند.
این دستورالعمل برای کدکهای فریم درونتصویری (intra frame) بهتر کار میکند، زیرا برای کدکهای غیر درونتصویری معمولاً بستههای اضافی قبل از نقطه ورود واقعی دریافت خواهید کرد و محتوای دیکودشده به احتمال زیاد شامل فریمهای قبل از نقطه ورود نیز خواهد بود.
برای هر فایل، بستههای قبل از نقطه ورود فایل برچسبهای زمانی کمتری نسبت به برچسب زمان شروع محاسبهشده فایل خواهند داشت (در مورد نخستین فایل منفی)، و مدتزمان فایلها (در صورت مشخص نشدن توسط دستورالعمل "duration") بر اساس نقطه ورود مشخصشده آنها کاهش مییابد.
به دلیل وجود بستههای احتمالی قبل از نقطه ورود مشخصشده، برچسبهای زمانی بسته ممکن است میان دو فایل الحاقشده همپوشانی داشته باشند.
- "outpoint timestamp"
- نقطه خروج
فایل.
هنگامی که
دیمکسر به
برچسب زمان
دیکود
مشخصشده
در هر یک از
استریمها
میرسد، آن
را به عنوان
شرایط
پایان فایل
مدیریت
کرده و بسته
فعلی و تمام
بستههای
باقیمانده
از همه
استریمها
را نادیده
میگیرد.
نقطه خروج مانعهالجمع است (exclusive)، به این معنی که دیمکسر بستههایی با برچسب زمان دیکود بزرگتر یا مساوی نقطه خروج را خروجی نمیدهد.
این دستورالعمل برای کدکهای intra frame و فرمتهایی که تمام استریمها در آنها به طور فشرده درهمبافته شدهاند، بهتر کار میکند. برای کدکهای غیر درونتصویری معمولاً بستههای اضافی با برچسب زمان ارائه پس از نقطه خروج دریافت خواهید کرد، بنابراین محتوای دیکودشده به احتمال زیاد شامل فریمهای پس از نقطه خروج نیز خواهد بود. اگر استریمهای شما به طور فشرده درهمبافته نشده باشند، ممکن است قبل از نقطه خروج همه بستهها را از همه استریمها دریافت نکنید و تنها قادر به دیکود کردن زودترین استریم تا نقطه خروج باشید.
مدتزمان فایلها (در صورت مشخص نشدن توسط دستورالعمل "duration") بر اساس نقطه خروج مشخصشده آنها کاهش خواهد یافت.
- "file_packet_metadata key=value"
- متادیتای بستههای فایل. متادیتای مشخصشده برای هر بسته فایل تنظیم خواهد شد. میتوانید این دستورالعمل را چند بار برای افزودن چندین مدخل متادیتا مشخص کنید. این دستورالعمل منسوخ شده است، به جای آن از "file_packet_meta" استفاده کنید.
- "file_packet_meta key value"
- متادیتای بستههای فایل. متادیتای مشخصشده برای هر بسته فایل تنظیم خواهد شد. میتوانید این دستورالعمل را چند بار برای افزودن چندین مدخل متادیتا مشخص کنید.
- "option key value"
- گزینهای برای دسترسی، باز کردن و پروب فایل. میتواند چندین بار وجود داشته باشد.
- "stream"
- معرفی یک استریم در فایل مجازی. تمامی دستورالعملهای بعدی مربوط به استریم، روی آخرین استریم معرفیشده اعمال میشوند. برخی ویژگیهای استریمها باید تنظیم شوند تا شناسایی استریمهای منطبق در زیرفایلها امکانپذیر باشد. اگر هیچ استریمی در اسکریپت تعریف نشده باشد، استریمها از نخستین فایل کپی میشوند.
- "exact_stream_id id"
- تنظیم شناسه (id) استریم. اگر این دستورالعمل داده شود، رشته با شناسه متناظر در زیرفایلها استفاده خواهد شد. این به ویژه برای فایلهای MPEG-PS (VOB) مفید است، جایی که ترتیب استریمها قابل اعتماد نیست.
- "stream_meta key value"
- متادیتا برای استریم. میتواند چندین بار وجود داشته باشد.
- "stream_codec value"
- کدک برای استریم.
- "stream_extradata hex_string"
- اطلاعات اضافی (extradata) برای رشته، کدگذاریشده به صورت هگزادسیمال.
- "chapter id start end"
- افزودن یک فصل (chapter). مقدار id یک شناسه منحصربهفرد، احتمالاً کوچک و متوالی است.
گزینهها (Options)
این دیمکسر گزینههای زیر را میپذیرد:
- safe
- اگر روی ۱
تنظیم شود،
مسیرهای
فایل و
دستورالعملهای
ناامن را رد
میکند. یک
مسیر فایل
زمانی امن
در نظر
گرفته
میشود که
شامل
مشخصات
پروتکل
نباشد،
نسبی باشد و
تمام اجزای
آن تنها
شامل
نویسههایی
از مجموعه
نویسههای
قابل حمل
(حروف،
ارقام،
نقطه،
زیرخط و خط
تیره) باشند
و در ابتدای
هیچ جزئی
نقطه وجود
نداشته
باشد.
اگر روی ۰ تنظیم شود، هر نام فایلی پذیرفته میشود.
پیشفرض 1 است.
- auto_convert
- اگر روی ۱
تنظیم شود،
تلاش
میکند
تبدیلات
خودکار را
روی
دادههای
بسته انجام
دهد تا
استریمها
قابل الحاق
شوند.
پیشفرض 1
است.
در حال حاضر، تنها تبدیل موجود افزودن فیلتر جریان بیت h264_mp4toannexb به استریمهای H.264 در فرمت MP4 است. این امر به ویژه در صورت وجود تغییرات رزولوشن ضروری است.
- segment_time_metadata
- اگر روی ۱ تنظیم شود، هر بسته شامل مقادیر متادیتای بسته lavf.concat.start_time و lavf.concat.duration خواهد بود که زمان شروع و مدتزمان بخشهای فایل مربوطه در خروجی الحاقشده بر حسب میکروثانیه هستند. متادیتای مدتزمان تنها در صورتی تنظیم میشود که بر اساس فایل concat شناخته شده باشد. پیشفرض 0 است.
نمونهها (Examples)
- استفاده از
نامهای
فایل مطلق و
گنجاندن
چند توضیح:
# my first filename file /mnt/share/file-1.wav # my second filename including whitespace file '/mnt/share/file 2.wav' # my third filename including whitespace plus single quote file '/mnt/share/file 3'\''.wav'
- امکان پروب
خودکار
فرمت
ورودی،
استفاده از
نامهای
فایل امن و
تنظیم
مدتزمان
نخستین
فایل:
ffconcat version 1.0 file file-1.wav duration 20.0 file subdir/file-2.wav
dash
دیمکسر پخش تطبیقی پویا روی پروتکل HTTP (DASH).
این دیمکسر تمامی AVStreamهای موجود در مانیفست را ارائه میدهد. با تنظیم پرچمهای دور انداختن روی AVStreamها، فراخواننده میتواند تصمیم بگیرد که در عمل کدام استریمها را دریافت کند. هر استریم ویژگیهای "id" و "bandwidth" را از "<Representation>" به عنوان کلیدهای متادیتا به ترتیب با نامهای "id" و "variant_bitrate" منعکس میکند.
گزینهها (Options)
این دیمکسر گزینههای زیر را میپذیرد:
- cenc_decryption_key
- کلید پیشفرض ۱۶ بایتی، در قالب هگزادسیمال، برای رمزگشایی فایلهای رمزگذاریشده با رمزنگاری مشترک ISO موسوم به (CENC/AES-128 CTR; ISO/IEC 23001-7).
- cenc_decryption_keys
- دیکشنری از شناسه کلید ۱۶ بایتی => کلید ۱۶ بایتی، هر دو در قالب هگزادسیمال، برای رمزگشایی فایلهای رمزگذاریشده با رمزنگاری مشترک ISO موسوم به (CENC/AES-128 CTR; ISO/IEC 23001-7).
dvdvideo
دیمکسر DVD-Video، مبتنی بر libdvdnav و libdvdread.
میتواند عناوین DVD، به ویژه PGCهای متوالی را مستقیماً وارد یک خطلوله تبدیل کند. داراییهای منو مانند ویدیوی پسزمینه یا صوت نیز میتوانند با داشتن مختصات منو (با بهترین تلاش ممکن) دیمکس شوند.
دستگاههای بلوکی (درایوهای DVD)، فایلهای ISO و ساختارهای دایرکتوری پذیرفته میشوند. با قرار دادن "-f dvdvideo" در برابر یکی از این ورودیها فعال میشود.
این دیمکسر فاقد هرگونه کد رمزگشایی حفاظتی است. کار با DVDهای رمزگذاریشده بر عهده خود شماست و نباید انتظار پشتیبانی در این زمینه داشته باشید.
پخش زیرین توسط libdvdnav و تجزیه ساختار توسط libdvdread انجام میشود. FFmpeg باید با پشتیبانی کتابخانه تحت مجوز GPL و همچنین سوییچهای پیکربندی "--enable-libdvdnav" و "--enable-libdvdread" ساخته شود.
شما باید «شماره عنوان» دلخواه یا مختصات دقیق PGC/PG را ارائه دهید. بسیاری از پخشکنندهها و ابزارهای منبعباز DVD میتوانند در ارائه این اطلاعات کمک کنند. در صورت عدم تعیین، دیمکسر به طور پیشفرض روی عنوان ۱ تنظیم میشود که برای بسیاری از دیسکها کار میکند. با این حال، به دلیل انعطافپذیری فرمت، توصیه میشود به صورت دستی بررسی شود. دیسکهای بسیاری وجود دارند که به شکل عجیبی ساخته شدهاند یا دارای هدرهای نامعتبر هستند.
اگر ورودی یک درایو واقعی DVD است، لطفاً توجه داشته باشید درایوهایی وجود دارند که ممکن است هنگام خواندن بخشهای آسیبدیده دیسک بدون اعلام خطا، بیتهای تصادفی بازگردانند که عملاً داده خراب محسوب میشود. این موضوع به ویژه در دیسکهای قدیمی یا خرابشده برجسته است. برای تشخیص خرابی به یک گذر دوم و بررسیهای صحت نیاز است. این مشکل مربوط به FFmpeg نیست.
پیشزمینه (Background)
قالب DVD-Video یک فرمت کانتینری مستقیماً قابل دسترسی و خطی به معنای سنتی نیست. در عوض، امکان پخش پیچیده و برنامهریزیشده استریمهای دقیقاً میکسشده MPEG-PS را که در فایلهای VOB بدون هدر ذخیره شدهاند، فراهم میکند. برای کاربر نهایی، این استریمها به سادگی به عنوان «عنوانها» (titles) شناخته میشوند، اما توالی پخش منطقی واقعی توسط یک یا چند «PGC» یا زنجیرههای گروه برنامه در داخل عنوان تعریف میشود. PGC به نوبه خود از چندین «PG» یا برنامه تشکیل شده است که بخشهای واقعی ویدیو هستند (و برای یک فیلم معمول، به صورت متوالی مرتب شدهاند). ساختار PGC، همراه با طرح استریم و متادیتا، در فایلهای IFO ذخیره میشوند که باید تجزیه شوند. PGCها را میتوان با عبارات سادهتر به عنوان لیستهای پخش در نظر گرفت.
یک پخشکننده واقعی DVD برای هدایت مسیر دیمکس کردن، به تعامل رابط کاربری کاربر از طریق منوها و یک ماشین مجازی (VM) داخلی متکی است. به طور کلی، کاربر یا پیمایش میکند (از طریق منوها) یا به طور خودکار به PGC انتخابی خود هدایت میشود. در طول این فرآیند و پخش پس از آن، ماشین مجازی داخلی پخشکننده DVD نیز وضعیتی را حفظ کرده و دستورالعملهایی را اجرا میکند که میتوانند پرشهایی به سکتورهای مختلف در حین پخش ایجاد کنند. به همین دلیل است که libdvdnav درگیر است، زیرا خواندن خطی دادههای MPEG-PS روی دیسک (فایلهای VOB) در بسیاری از موارد برای تولید توالی درست کافی نیست.
ساختارهای فراوان دیگری در DVD وجود دارد (موضوعی طولانی) که در اینجا به آنها پرداخته نمیشود. به ویژه بستههای NAV توسط این دیمکسر برای ایجاد زمانبندی دقیق مدیریت میشوند اما به عنوان یک استریم صادر نمیگردند. برای یک درک کلی و سطح بالا به پیوند زیر مراجعه کنید: https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures
گزینهها (Options)
این دیمکسر گزینههای زیر را میپذیرد:
- title int
- شماره عنوان برای پخش. در صورت عدم تنظیم pgc و pg باید تنظیم شود. برای منوها کاربرد ندارد. پیشفرض 0 (خودکار) است که در حال حاضر تنها نخستین عنوان موجود (عنوان ۱) را انتخاب کرده و پیامدهای آن را به کاربر اطلاع میدهد.
- chapter_start int
- شماره فصل، یا PTT (بخش عنوان)، برای شروع. برای منوها کاربرد ندارد. پیشفرض 1 است.
- chapter_end int
- شماره فصل، یا PTT، برای پایان. برای منوها کاربرد ندارد. پیشفرض 0 است، که یک مقدار ویژه برای علامتگذاری پایان در آخرین فصل ممکن است.
- angle int
- شماره زاویه ویدیو، که اشاره به یک استریم ویدیوی اساساً اضافی دارد که از فریمهای جایگزین درهمبافته در VOBها تشکیل شده است. برای منوها کاربرد ندارد. پیشفرض 1 است.
- region int
- کد منطقه برای استفاده در پخش. برخی دیسکها ممکن است از این برای پخش پیشفرض در یک زاویه خاص در مناطق مختلف استفاده کنند. این گزینه در صورت استفاده به عنوان ورودی، بر کد منطقه درایو واقعی DVD تأثیر نمیگذارد. برای منوها کاربرد ندارد. پیشفرض 0، "world" (جهانی) است.
- دیمکس کردن داراییهای منو به جای پیمایش یک عنوان. نیازمند مختصات دقیق منو است (menu_lu، menu_vts، pgc، pg). پیشفرض false است.
- زبان منو برای دیمکس. در DVD، منوها بر اساس زبان گروهبندی میشوند. پیشفرض 1، نخستین واحد زبان است.
- بخش VTS که منو در آن قرار دارد، یا ۰ در صورتی که یک منوی VMG (سطح ریشه) باشد. پیشفرض 1، منوی نخستین VTS است.
- pgc int
- واحد PGC ورودی برای شروع پخش، همراه با pg. جایگزینی برای تنظیم title. نشانگرهای فصل در حال حاضر پشتیبانی نمیشوند. باید برای منوها صراحتاً تنظیم شود. پیشفرض 0 است که به طور خودکار از مقدار title حل میشود.
- pg int
- واحد PG ورودی برای شروع پخش، همراه با pgc. جایگزینی برای تنظیم title. نشانگرهای فصل در حال حاضر پشتیبانی نمیشوند. پیشفرض 1، نخستین PG از PGC است.
- preindex bool
- فعالسازی این گزینه برای داشتن نشانگرهای دقیق فصل (PTT) و اندازهگیری دقیق مدتزمان است، که نیازمند خواندن آهسته در گذر دوم به منظور اندیسگذاری برچسبهای زمانی نشانگر فصل از بستههای NAV است. این یک کار اضافی غیر ایدهآل برای درایوهای نوری واقعی است. استفاده از این گزینه به همراه نسخه پشتیبان ساختار DVD ذخیرهشده روی هارد دیسک توصیه میشود و سریعتر است. با pgc و pg سازگار نیست. پیشفرض 0، false است.
- trim bool
- صرفنظر از سلولهای پدینگ (یعنی سلولهای کوتاهتر از ۱ ثانیه) از ابتدا. دیسکهای زیادی با بخشهای پرکننده در ابتدای PGC وجود دارند، که اغلب حاوی دادههای آشغال هستند و با هدف کنترل سرعت بافرینگ پخشکننده واقعی DVD طراحی شدهاند و هیچ ارزش دادهای دیگری ندارند. برای منوها کاربرد ندارد. پیشفرض 1، true است.
نمونهها (Examples)
- باز کردن
عنوان ۳ از
یک ساختار DVD
مشخص:
ffmpeg -f dvdvideo -title 3 -i <path to DVD> ...
- باز کردن
فصلهای ۳
تا ۶ از
عنوان ۱ از
یک ساختار DVD
مشخص:
ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ...
- تنها باز
کردن فصل ۵
از عنوان ۱
از یک
ساختار DVD
مشخص:
ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ...
- دیمکس کردن
منو با زبان
۱ از VTS 1، PGC 1،
شروع از PG 1:
ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
ea
دیمکسر فرمت چندرسانهای Electronic Arts.
این فرمت توسط بازیهای مختلف شرکت Electronic Arts استفاده میشود.
گزینهها (Options)
- merge_alpha bool
- معمولاً کانال آلفای VP6 (در صورت وجود) به عنوان استریم ویدیوی ثانویه بازگردانده میشود؛ با تنظیم این گزینه میتوانید دیمکسر را وادار کنید که یک استریم ویدیوی منفرد بازگرداند که علاوه بر ویدیوی معمولی، کانال آلفا را نیز شامل میشود.
imf
دیمکسر فرمت مستر با قابلیت تعامل (Interoperable Master Format).
این دیمکسر استریمهای صوتی و ویدیویی موجود در یک IMF Composition را طبق مشخصات https://doi.org/10.5594/SMPTE.ST2067-2.2020 ارائه میدهد.
ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...
اگر "-assetmaps" مشخص نشده باشد، دیمکسر به دنبال فایلی به نام ASSETMAP.xml در همان دایرکتوری فایل CPL میگردد.
flv, live_flv, kux
دیمکسر فرمت ویدیوی ادوبی فلش (Adobe Flash Video).
این دیمکسر برای دیمکس کردن فایلهای FLV و استریمهای شبکه RTMP استفاده میشود. در مورد استریمهای زنده شبکه، اگر فرمت را اجبار میکنید، میتوانید به جای flv از گزینه live_flv استفاده کنید تا در برابر ناپیوستگیهای برچسب زمان تاب بیاورد. فرمت KUX یک گونه از flv است که در پلتفرم Youku استفاده میشود.
ffmpeg -f flv -i myfile.flv ... ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
- -flv_metadata bool
- تخصیص استریمها مطابق با محتوای آرایه onMetaData.
- -flv_ignore_prevtag bool
- نادیده گرفتن مقدار اندازه تگ قبلی.
- -flv_full_metadata bool
- خروجی دادن تمامی محتوای onMetadata.
gif
دیمکسر GIF متحرک.
گزینههای زیر را میپذیرد:
- min_delay
- تنظیم حداقل تاخیر معتبر میان فریمها بر حسب صدم ثانیه. محدوده از 0 تا 6000 است. مقدار پیشفرض 2 است.
- max_gif_delay
- تنظیم حداکثر تاخیر معتبر میان فریمها بر حسب صدم ثانیه. محدوده از 0 تا 65535 است. مقدار پیشفرض 65535 (نزدیک به یازده دقیقه)، حداکثر مقدار مجاز طبق مشخصات استاندارد است.
- default_delay
- تنظیم تاخیر پیشفرض میان فریمها بر حسب صدم ثانیه. محدوده از 0 تا 6000 است. مقدار پیشفرض 10 است.
- ignore_loop
- فایلهای GIF میتوانند حاوی اطلاعاتی برای تکرار حلقه به تعداد دفعات مشخص (یا نامحدود) باشند. اگر ignore_loop روی ۱ تنظیم شود، تنظیمات حلقه از ورودی نادیده گرفته شده و حلقه رخ نخواهد داد. اگر روی ۰ تنظیم شود، چرخه رخ میدهد و تعداد دفعات چرخش طبق GIF خواهد بود. مقدار پیشفرض 1 است.
برای نمونه، با فیلتر overlay، قرار دادن یک GIF با تکرار نامحدود روی ویدیویی دیگر:
ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv
توجه داشته باشید که در مثال بالا گزینه shortest برای فیلتر overlay استفاده شده است تا ویدیوی خروجی به اندازه طول کوتاهترین فایل ورودی پایان یابد، که در این حالت input.mp4 است زیرا GIF در این مثال به طور نامحدود تکرار میشود.
hls
دیمکسر HLS.
دیمکسر پخش زنده روی پروتکل HTTP اپل (Apple HTTP Live Streaming).
این دیمکسر تمامی AVStreamها را از تمامی استریمهای متغیر ارائه میدهد. فیلد id روی شماره اندیس متغیر نرخ بیت تنظیم شده است. با تنظیم پرچمهای دور انداختن روی AVStreamها (با فشردن 'a' یا 'v' در ffplay)، فراخواننده میتواند تصمیم بگیرد که در عمل کدام استریمهای متغیر را دریافت کند. نرخ بیت کل متغیری که استریم به آن تعلق دارد، در یک کلید متادیتا به نام "variant_bitrate" در دسترس است.
گزینههای زیر را میپذیرد:
- live_start_index
- اندیس بخشی که استریمهای زنده از آن آغاز شوند (مقادیر منفی از انتها محاسبه میشوند).
- prefer_x_start
- ترجیح استفاده از #EXT-X-START در صورتی که در لیست پخش باشد به جای live_start_index.
- allowed_extensions
- فهرستی از پسوندهای فایل جداشده با ',' که hls مجاز به دسترسی به آنها است.
- extension_picky
- این گزینه پسوندهای غیرمجاز را از پروب کردن مسدود میکند. همچنین ایجاب میکند که تمام بخشهای موجود، پسوندهای منطبق با فرمت داشته باشند به جز mpegts که همیشه مجاز است. توصیه میشود به جای اتکا به پسوندها، لیستهای سفید را به درستی تنظیم کنید. به طور پیشفرض فعال است.
- max_reload
- حداکثر تعداد دفعاتی که تلاش میشود یک لیست ناکافی مجدداً بارگذاری شود. مقدار پیشفرض 1000 است.
- m3u8_hold_counters
- حداکثر تعداد دفعات بارگذاری m3u8 هنگامی که بدون بخشهای جدید بازخوانی میشود. مقدار پیشفرض 1000 است.
- http_persistent
- استفاده از اتصالات پایدار HTTP. تنها برای استریمهای HTTP کاربرد دارد. به طور پیشفرض فعال است.
- http_multiple
- استفاده از چندین اتصال HTTP برای دانلود بخشهای HTTP. به طور پیشفرض برای سرورهای HTTP/1.1 فعال است.
- http_seekable
- استفاده از درخواستهای جزئی HTTP برای دانلود بخشهای HTTP. 0 = غیرفعال، 1 = فعال، -1 = خودکار، پیشفرض خودکار است.
- seg_format_options
- تنظیم گزینهها برای دیمکسر بخشهای رسانهای با استفاده از فهرستی از جفتهای key=value که با ":" از هم جدا شدهاند.
- seg_max_retry
- حداکثر تعداد دفعات بارگذاری مجدد یک بخش در صورت بروز خطا، زمانی مفید است که صرفنظر از بخش در هنگام خطای شبکه مطلوب نباشد. مقدار پیشفرض 0 است.
image2
دیمکسر فایل تصویر.
این دیمکسر از فهرستی از فایلهای تصویر مشخصشده توسط یک الگو میخواند. نحو و معنای الگو توسط گزینه pattern_type مشخص میشود.
الگو ممکن است شامل پسوندی باشد که برای تعیین خودکار فرمت تصاویر موجود در فایلها استفاده میشود.
اندازه، فرمت پیکسل و فرمت هر تصویر باید برای تمامی فایلهای موجود در توالی یکسان باشد.
این دیمکسر گزینههای زیر را میپذیرد:
- framerate
- تنظیم نرخ فریم برای استریم ویدیو. پیشفرض آن 25 است.
- loop
- در صورت تنظیم روی ۱، روی ورودی حلقه میزند. مقدار پیشفرض 0 است.
- pattern_type
- نوع الگوی
مورد
استفاده
برای تفسیر
نام فایل
ارائهشده
را انتخاب
میکند.
گزینه pattern_type یکی از مقادیر زیر را میپذیرد:
- none
- غیرفعال کردن تطبیق الگو، بنابراین ویدیو تنها شامل تصویر مشخصشده خواهد بود. اگر نمیخواهید از چندین تصویر توالی بسازید و نام فایلهای شما ممکن است شامل نویسههای الگوی ویژه باشد، باید از این گزینه استفاده کنید.
- sequence
- انتخاب نوع
الگوی
توالی، که
برای مشخص
کردن توالی
فایلهای
اندیسگذاریشده
با اعداد
متوالی
استفاده
میشود.
یک الگوی توالی ممکن است شامل رشته "%d" یا "%0Nd" باشد که موقعیت نویسههای نمایانگر یک عدد متوالی را در هر نام فایل منطبق با الگو مشخص میکند. اگر فرم "%d0Nd" استفاده شود، رشته نمایانگر عدد در هر نام فایل با صفر پر میشود (0-padded) و N تعداد کل ارقام پرشده با صفر است که عدد را نشان میدهند. نویسه تحتاللفظی '%' میتواند در الگو با رشته "%%" مشخص شود.
اگر الگوی توالی شامل "%d" یا "%0Nd" باشد، نخستین نام فایل از فهرست فایل مشخصشده توسط الگو باید شامل عددی باشد که به طور فراگیر بین start_number و start_number+start_number_range-1 قرار داشته باشد، و تمامی اعداد بعدی باید متوالی باشند.
برای نمونه الگوی "img-%03d.bmp" با توالی نامهای فایلی به شکل img-001.bmp، img-002.bmp، ...، img-010.bmp و غیره مطابقت خواهد داشت؛ الگوی "i%%m%%g-%d.jpg" با توالی نامهای فایلی به شکل i%m%g-1.jpg، i%m%g-2.jpg، ...، i%m%g-10.jpg و غیره مطابقت خواهد داشت.
توجه داشته باشید که الگو لزوماً نباید شامل "%d" یا "%0Nd" باشد، مثلاً برای تبدیل یک فایل تصویر تکی img.jpeg میتوانید از دستور زیر استفاده کنید:
ffmpeg -i img.jpeg img.png
- glob
- انتخاب نوع
الگوی
نویسههای
عام (glob wildcard).
الگو مانند یک الگوی glob() تفسیر میشود. این گزینه تنها زمانی قابل انتخاب است که libavformat با پشتیبانی از globbing کامپایل شده باشد.
مقدار پیشفرض sequence است.
- pixel_format
- تنظیم فرمت پیکسل تصاویری که باید خوانده شوند. در صورت عدم تعیین، فرمت پیکسل از نخستین فایل تصویر در توالی حدس زده میشود.
- start_number
- تنظیم اندیس فایلی که با الگوی فایل تصویر مطابقت دارد تا خواندن از آن آغاز شود. مقدار پیشفرض 0 است.
- start_number_range
- تنظیم محدوده بازه اندیس برای بررسی هنگام جستجوی نخستین فایل تصویر در توالی، با شروع از start_number. مقدار پیشفرض 5 است.
- ts_from_file
- اگر روی ۱ تنظیم شود، برچسب زمان فریم را روی زمان اصلاح فایل تصویر تنظیم میکند. توجه داشته باشید که یکنواختی برچسبهای زمانی تضمین نمیشود: تصاویر با همان ترتیبی که بدون این گزینه دارند خوانده میشوند. مقدار پیشفرض 0 است. اگر روی ۲ تنظیم شود، برچسب زمان فریم را روی زمان اصلاح فایل تصویر با دقت نانوثانیه تنظیم میکند.
- video_size
- تنظیم اندازه ویدیوی تصاویری که باید خوانده شوند. در صورت عدم تعیین، اندازه ویدیو از نخستین فایل تصویر در توالی حدس زده میشود.
- export_path_metadata
- اگر روی ۱ تنظیم شود، دو فیلد اضافی به متادیتای یافتشده در ورودی اضافه میکند و آنها را برای سایر فیلترها نیز در دسترس قرار میدهد (برای نمونهها فیلتر drawtext را ببینید). مقدار پیشفرض 0 است. فیلدهای اضافی در زیر شرح داده شدهاند:
- lavf.image2dec.source_path
- متناظر با مسیر کامل فایل ورودی در حال خواندن است.
- lavf.image2dec.source_basename
- متناظر با نام پایه (basename) فایل در حال خواندن است.
نمونهها (Examples)
- استفاده از
ffmpeg برای
ایجاد یک
ویدیو از
تصاویر در
توالی فایل
img-001.jpeg، img-002.jpeg، ...،
با فرض نرخ
فریم ورودی
۱۰ فریم بر
ثانیه:
ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
- مانند
بالا، اما
شروع
خواندن از
فایلی با
اندیس ۱۰۰
در توالی:
ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
- خواندن
تصاویر
منطبق با
الگوی glob از
نوع "*.png"،
یعنی تمامی
فایلهایی
که با پسوند
".png" پایان
مییابند:
ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
libgme
کتابخانه Game Music Emu مجموعهای از شبیهسازهای فایلهای موسیقی بازیهای ویدیویی است.
برای اطلاعات بیشتر به https://bitbucket.org/mpyne/game-music-emu/overview مراجعه کنید.
گزینههای زیر را میپذیرد:
- track_index
- اندیس قطعهای (track) را که باید دیمکس شود تنظیم میکند. دیمکسر تنها میتواند یک قطعه را خروجی دهد. اندیس قطعهها از ۰ شروع میشود. پیشفرض انتخاب نخستین قطعه است. تعداد قطعهها به عنوان مدخل متادیتای tracks صادر میشود.
- sample_rate
- تنظیم نرخ نمونهبرداری قطعه صادرشده. محدوده از 1000 تا 999999 است. پیشفرض 44100 است.
- max_size (bytes)
- دیمکسر کل فایل را در حافظه بافر میکند. این مقدار را برای تنظیم حداکثر اندازه بافر تغییر دهید، که به نوبه خود به عنوان سقفی برای اندازه فایلهای قابل خواندن عمل میکند. پیشفرض 50 MiB است.
libmodplug
دیمکسر ماژول بر پایه ModPlug
ببینید: https://github.com/Konstanty/libmodplug
یک جریان صوتی ۲ کاناله ۱۶ بیتی با فرکانس 44.1 kHz صادر میکند. به صورت اختیاری، یک جریان ویدیویی ۱۶ رنگ "pal8" با یا بدون متاداده چاپشده میتواند صادر شود.
گزینههای زیر را میپذیرد:
- noise_reduction
- اعمال یک فیلتر پایینگذر ساده. میتواند 1 (روشن) یا 0 (خاموش) باشد. پیشفرض 0 است.
- reverb_depth
- تنظیم میزان طنین (Reverb). محدوده 0-100. پیشفرض 0 است.
- reverb_delay
- تنظیم تأخیر به میلیثانیه، محدود به 40-250 ms. پیشفرض 0 است.
- bass_amount
- اعمال تقویت بیس معروف به XBass یا megabass. محدوده از 0 (آرام) تا 100 (بلند). پیشفرض 0 است.
- bass_range
- تنظیم فرکانس قطع (حد بالای فرکانسهای بیس). محدوده 10-100 Hz است. پیشفرض 0 است.
- surround_depth
- اعمال جلوه صدای فراگیر Dolby Pro-Logic. محدوده از 0 (آرام) تا 100 (شدید). پیشفرض 0 است.
- surround_delay
- تنظیم تأخیر صدای فراگیر به میلیثانیه، محدود به 5-40 ms. پیشفرض 0 است.
- max_size
- دیمکسر تمام پرونده را در حافظه بافر میکند. این مقدار را برای تنظیم حداکثر اندازه بافر تغییر دهید، که به نوبه خود به عنوان سقف اندازه پروندههای قابل خواندن عمل میکند. محدوده از 0 تا 100 MiB است. مقدار 0 محدودیت اندازه بافر را حذف میکند (توصیه نمیشود). پیشفرض 5 MiB است.
- video_stream_expr
- رشتهای که با استفاده از eval API برای تخصیص رنگها به جریان ویدیویی تولیدشده ارزیابی میشود. متغیرهایی که میتوانند استفاده شوند عبارتند از "x"، "y"، "w"، "h"، "t"، "speed"، "tempo"، "order"، "pattern" و "row".
- video_stream
- تولید جریان ویدیویی. میتواند 1 (روشن) یا 0 (خاموش) باشد. پیشفرض 0 است.
- video_stream_w
- تنظیم عرض فریم ویدیو بر حسب 'chars' که در آن هر نویسه نشاندهنده ۸ پیکسل است. محدوده 20-512 است. پیشفرض 30 است.
- video_stream_h
- تنظیم ارتفاع فریم ویدیو بر حسب 'chars' که در آن هر نویسه نشاندهنده ۸ پیکسل است. محدوده 20-512 است. پیشفرض 30 است.
- video_stream_ptxt
- چاپ متاداده روی جریان ویدیو. شامل "speed"، "tempo"، "order"، "pattern"، "row" و "ts" (زمان به میلیثانیه). میتواند 1 (روشن) یا 0 (خاموش) باشد. پیشفرض 1 است.
libopenmpt
دیمکسر ماژول بر پایه libopenmpt
برای اطلاعات بیشتر https://lib.openmpt.org/libopenmpt را ببینید.
برخی پروندهها چندین زیرآهنگ (تراک) دارند که این مورد را میتوان با گزینه subsong تنظیم کرد.
گزینههای زیر را میپذیرد:
- subsong
- تنظیم
اندیس
زیرآهنگ.
این مقدار
میتواند
'all'، 'auto' یا
اندیس
زیرآهنگ
باشد.
اندیسهای
زیرآهنگ از
0 شروع
میشوند.
پیشفرض 'auto'
است.
مقدار پیشفرض این است که اجازه داده شود libopenmpt انتخاب کند.
- layout
- تنظیم چیدمان کانال. مقادیر معتبر چیدمانهای ۱، ۲ و ۴ کاناله هستند. مقدار پیشفرض STEREO است.
- sample_rate
- تنظیم نرخ نمونهبرداری برای خروجی libopenmpt. محدوده از 1000 تا INT_MAX است. مقدار پیشفرض 48000 است.
mcc
دیمکسر پروندههای MacCaption MCC، که از نسخههای 1.0 و 2.0 MCC پشتیبانی میکند. پروندههای MCC دادههای VANC را ذخیره میکنند، که میتواند شامل زیرنویسهای بستهبندیشده (EIA-608 و CEA-708)، کدهای زمانی کمکی، دادههای pan-scan و غیره باشد. به طور پیشفرض، برای سازگاری عقبرو، دیمکسر MCC فقط زیرنویسهای بستهبندیشده EIA-608 و CEA-708 را استخراج کرده و یک جریان "EIA_608" بازمیگرداند و تمام دادههای VANC دیگر را نادیده میگیرد. میتوانید با تنظیم -eia608_extract 0 آن را طوری تغییر دهید که تمام دادههای VANC را در یک جریان داده "SMPTE_436M_ANC" برگرداند.
مثالها
- تبدیل یک
پرونده MCC به
قالب Scenarist (SCC):
ffmpeg -i CC.mcc -c:s copy CC.scc
توجه داشته باشید که قالب SCC تنها از EIA-608 پشتیبانی میکند، بنابراین این کار تمام دادههای دیگر مانند پسوندهای CEA-708 را دور میریزد.
- ادغام یک
پرونده MCC در
یک پرونده MXF:
ffmpeg -i video_and_audio.mxf -eia608_extract 0 -i CC.mcc -c copy -map 0 -map 1 out.mxf
این کار تمام دادههای VANC را حفظ کرده و آن را به عنوان یک جریان داده "SMPTE_436M_ANC" درون پرونده MXF خروجی درج میکند.
mov/mp4/3gp
دیمکسر برای قالب پرونده QuickTime و قالب پرونده رسانهای پایه ISO/IEC (استاندارد ISO/IEC 14496-12 یا MPEG-4 Part 12 و ISO/IEC 15444-12 یا JPEG 2000 Part 12).
پسوندهای ثبتشده: mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v
گزینهها
این دیمکسر گزینههای زیر را میپذیرد:
- enable_drefs
- فعالسازی بارگیری تراکهای خارجی، به طور پیشفرض غیرفعال است. فعال کردن این گزینه در برخی موارد کاربردی از نظر تئوری میتواند اطلاعات را افشا کند.
- use_absolute_path
- اجازه بارگیری تراکهای خارجی از طریق مسیرهای مطلق، به طور پیشفرض غیرفعال است. فعال کردن این گزینه خطرات امنیتی به همراه دارد. تنها زمانی باید فعال شود که منبع ورودی کاملاً مطمئن و غیرمخرب باشد.
- seek_streams_individually
- هنگام پرش (seeking)، نزدیکترین نقطه در هر جریان را به صورت جداگانه شناسایی کرده و بستههای آن جریان را از نقطه شناساییشده دیمکس میکند. این میتواند منجر به توالی متفاوتی از بستهها در مقایسه با دیمکس کردن خطی از ابتدا شود. پیشفرض true است.
- ignore_editlist
- نادیده گرفتن اتمهای فهرست ویرایش (edit list). دیمکسر به طور پیشفرض اندیس جریان را به گونهای اصلاح میکند تا خط زمانی شرحدادهشده توسط فهرست ویرایش را منعکس کند. پیشفرض false است.
- advanced_editlist
- اصلاح اندیس جریان برای انعکاس خط زمانی شرحدادهشده توسط فهرست ویرایش. برای مؤثر بودن این گزینه، "ignore_editlist" باید روی false تنظیم شده باشد. اگر هر دوی "ignore_editlist" و این گزینه روی false تنظیم شوند، تنها ابتدای اندیس جریان اصلاح میشود تا زمان مکث اولیه یا برچسب زمانی شروع شرحدادهشده در فهرست ویرایش را منعکس کند. پیشفرض true است.
- ignore_chapters
- فصلها (chapters) تجزیه نشوند. این شامل برچسبها/لحظات 'HiLight' دوربینهای GoPro نیز میشود. توجه داشته باشید که فصلها تنها زمانی تجزیه میشوند که ورودی دارای قابلیت پرش (seekable) باشد. پیشفرض false است.
- use_mfra_for
- برای ورودی
قطعهبندیشده
(fragmented) با
قابلیت
پرش، برچسب
زمانی شروع
قطعه از
جعبه
دسترسی
تصادفی
قطعه رسانه
(mfra)، در صورت
وجود،
تنظیم شود.
گزینههای زیر در دسترس هستند:
- use_tfdt
- برای ورودی قطعهبندیشده، برچسب زمانی شروع قطعه را بر روی "baseMediaDecodeTime" از جعبه "tfdt" تنظیم کند. پیشفرض فعال است، که ترجیح میدهد از جعبه "tfdt" برای تنظیم DTS استفاده کند. غیرفعال کنید تا از "earliest_presentation_time" از جعبه "sidx" استفاده شود. در هر صورت، اگر برچسب زمانی از جعبه "mfra" موجود باشد و "use_mfra_for" روی pts یا dts تنظیم شده باشد، از آن استفاده خواهد شد.
- export_all
- صادر کردن جعبههای ناشناخته درون جعبه udta به عنوان ورودیهای متاداده. چهار نویسه اول نوع جعبه به عنوان کلید تنظیم میشوند. پیشفرض false است.
- export_xmp
- صادر کردن کل محتویات جعبه XMP_ و جعبه uuid به عنوان یک رشته با کلید "xmp". توجه داشته باشید که اگر "export_all" تنظیم شده باشد اما این گزینه تنظیم نشده باشد، محتویات جعبه XMP_ همچنان صادر میشود اما با کلید "XMP_". پیشفرض false است.
- activation_bytes
- کلید ۴ بایتی مورد نیاز برای رمزگشایی پروندههای Audible AAX و +AAX. به زیربخش Audible AAX در زیر مراجعه کنید.
- audible_fixed_key
- کلید ثابت استفادهشده برای رسیدگی به پروندههای Audible AAX/AAX+. این مقدار از پیش تنظیم شده است بنابراین نیازی به تعیین آن نیست.
- decryption_key
- کلید پیشفرض ۱۶ بایتی، در قالب هگز، برای رمزگشایی پروندههای رمزگذاریشده با رمزگذاری مشترک ISO (استاندارد CENC/AES-128 CTR؛ ISO/IEC 23001-7).
- decryption_keys
- دیکشنری از شناسه کلید ۱۶ بایتی => کلید ۱۶ بایتی، هر دو در قالب هگز، برای رمزگشایی پروندههای رمزگذاریشده با رمزگذاری مشترک ISO (استاندارد CENC/AES-128 CTR؛ ISO/IEC 23001-7).
- max_stts_delta
- دلتاهای
نمونه
بسیار بالا
که در جعبه stts
یک trak نوشته
شدهاند
ممکن است
گاهی
هدفمند
باشند اما
معمولاً به
اشتباه
نوشته
میشوند یا
برای ذخیره
یک مقدار
منفی برای
تصحیح dts در
هنگام
برخورد به
عنوان
اعداد صحیح
علامتدار
۳۲ بیتی
استفاده
میشوند.
این گزینه
به کاربر
اجازه
میدهد
سقفی تعیین
کند که
بالاتر از
آن دلتا به 1
محدود شود.
مقادیر
بزرگتر از
این حد در
صورتی که پس
از تبدیل به
int32 منفی
شوند، برای
تنظیم dts
بعدی
استفاده
میشوند.
واحد آن مقیاس زمانی تراک (time scale) است. محدوده از 0 تا UINT_MAX است. مقدار پیشفرض "UINT_MAX - 48000*10" است که تا ۱۰ ثانیه تصحیح dts را برای جریانهای صوتی 48 kHz امکانپذیر میکند و در عین حال ۹۹.۹٪ از محدوده "uint32" را پوشش میدهد.
- interleaved_read
- درهمآمیزی (Interleave) بستهها از چندین تراک در سطح دیمکسر. برای پروندههایی که درهمآمیزی نامناسبی دارند، این کار از مشکلات پخش ناشی از فاصلههای بزرگ بین بستهها در تراکهای مختلف جلوگیری میکند، زیرا MOV/MP4 الزامات جایگذاری بسته ندارند. با این حال، این کار میتواند به دلیل جستجو بین تراکها باعث پرشهای مکرر و بیش از حد در پروندههای بسیار بد درهمآمیخته شود؛ بنابراین غیرفعال کردن آن ممکن است از مشکلات ورودی/خروجی (I/O) به قیمت افت کیفیت پخش جلوگیری کند.
Audible AAX
پروندههای Audible AAX پروندههای M4B رمزگذاریشده هستند و میتوان آنها را با تعیین یک رمز فعالسازی ۴ بایتی رمزگشایی کرد.
ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4
mpegts
دیمکسر جریان انتقال (Transport Stream) MPEG-2.
این دیمکسر گزینههای زیر را میپذیرد:
- resync_size
- تنظیم سقف اندازه برای جستجوی یک همگامسازی جدید. مقدار پیشفرض 65536 است.
- skip_unknown_pmt
- رد کردن PMTها برای برنامههایی که در PAT تعریف نشدهاند. مقدار پیشفرض 0 است.
- fix_teletext_pts
- بازنویسی مقادیر PTS و DTS بستههای تلهتکست با برچسبهای زمانی محاسبهشده از PCR اولین برنامهای که جریان تلهتکست بخشی از آن است و دور ریخته نشده است. مقدار پیشفرض 1 است، این گزینه را روی 0 تنظیم کنید اگر میخواهید مقادیر PTS و DTS بستههای تلهتکست شما دستنخورده باقی بمانند.
- ts_packetsize
- گزینه خروجی که حامل اندازه بسته خام بر حسب بایت است. اندازه بسته خام شناساییشده را نشان میدهد، و توسط کاربر قابل تنظیم نیست.
- scan_all_pmts
- پویش و ترکیب تمام PMTها. مقدار یک عدد صحیح از -1 تا 1 است (-1 به معنای تنظیم خودکار، 1 به معنای فعال و 0 به معنای غیرفعال است). مقدار پیشفرض -1 است.
- merge_pmt_versions
- استفاده مجدد از جریانهای موجود هنگامی که نسخه یک PMT بهروزرسانی شده و جریانهای اولیه به PIDهای دیگری منتقل میشوند. مقدار پیشفرض 0 است.
- max_packet_size
- تنظیم حداکثر اندازه (بر حسب بایت) برای بستههای تولیدشده توسط دیمکسر. بارهای داده بالاتر از این اندازه به چندین بسته تقسیم میشوند. محدوده از 184 تا INT_MAX/2 است. پیشفرض 204800 بایت است.
mpjpeg
دیمکسر MJPEG کپسولهشده در MIME چندبخشی.
این دیمکسر خواندن MJPEG را ممکن میسازد، جایی که هر فریم به عنوان بخشی از یک جریان multipart/x-mixed-replace نمایش داده میشود.
- strict_mime_boundary
- پیادهسازی پیشفرض یک استاندارد آسانگیرانه را برای تشخیص مرز چندبخشی MIME اعمال میکند تا از ناسازگاری با نقاط انتهایی موجود متعددی که جریان MIME MJPEG مناسبی تولید نمیکنند جلوگیری شود. روشن کردن این گزینه با تنظیم آن روی 1 منجر به بررسی سختگیرانهتر مقدار مرز خواهد شد.
rawvideo
دیمکسر ویدیوی خام (Raw video).
این دیمکسر امکان خواندن دادههای ویدیوی خام را فراهم میکند. از آنجا که هیچ هدر یا سرآیندی برای مشخص کردن پارامترهای ویدیویی مفروض وجود ندارد، کاربر باید آنها را مشخص کند تا امکان دیکود صحیح دادهها وجود داشته باشد.
این دیمکسر گزینههای زیر را میپذیرد:
- framerate
- تنظیم نرخ فریم ویدیوی ورودی. مقدار پیشفرض 25 است.
- pixel_format
- تنظیم قالب پیکسلی ویدیوی ورودی. مقدار پیشفرض "yuv420p" است.
- stride
- تنظیم اندازه خط فریم بر حسب بایت، فقط در صورتی لازم است که لایه پرکننده (padding) اضافی وجود داشته باشد. برای قالبهای چندصفحهای (multiplane)، مقدار stride فهرستی از اندازه خط برای هر صفحه است.
- video_size
- تنظیم اندازه ویدیوی ورودی. این مقدار باید به صورت صریح مشخص شود.
به عنوان مثال، برای خواندن یک پرونده ویدیوی خام input.raw با ffplay، با فرض قالب پیکسلی "rgb24"، اندازه ویدیوی "320x240" و نرخ فریم ۱۰ تصویر در ثانیه، از دستور زیر استفاده کنید:
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
برای خواندن یک پرونده rawvideo با ffplay، با فرض قالب پیکسلی "yuv420p"، اندازه ویدیوی "1080x1920"، ۸ بایت پدینگ در هر خط صفحه Y و ۴ بایت پدینگ در صفحه UV:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1080x1920 -stride 1088,544,544 input.raw
rcwt
قالب RCWT (زیرنویسهای خام همراه با زمان - Raw Captions With Time) یک قالب بومی ابزار ccextractor است؛ ابزاری متنباز و پرکاربرد برای پردازش منابع زیرنویس بسته (CC) استانداردهای 608/708. برای اطلاعات بیشتر درباره این قالب، به مستندات آن مراجعه کنید.
این دیمکسر مشخصات فنی مارس ۲۰۲۴ را پیادهسازی میکند که از آوریل ۲۰۱۴ پایدار و بدون تغییر باقی مانده است.
مثالها
- رندر کردن CC
به ASS با
استفاده از
دیکودر
داخلی:
ffmpeg -i CC.rcwt.bin CC.ass
توجه داشته باشید که اگر خروجی شما خالی به نظر میرسد، ممکن است مجبور شوید گزینه data_field دیکودر را به صورت دستی تنظیم کنید تا زیرجریان CC مورد نظر انتخاب شود.
- تبدیل یک
نسخه
پشتیبان RCWT
به قالب Scenarist (SCC):
ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
توجه داشته باشید که قالب SCC از تمام پسوندهای ممکن CC که میتوانند در RCWT ذخیره شوند (مانند EIA-708) پشتیبانی نمیکند.
sbg
دیمکسر اسکریپت SBaGen.
این دیمکسر زبان اسکریپتنویسی مورد استفاده توسط SBaGen http://uazu.net/sbagen را برای تولید جلسات ضربانهای دوگوشی (binaural beats) میخواند. یک اسکریپت SBG به این صورت است:
-SE a: 300-2.5/3 440+4.5/0 b: 300-2.5/0 440+4.5/3 off: - NOW == a +0:07:00 == b +0:14:00 == a +0:21:00 == b +0:30:00 off
یک اسکریپت SBG میتواند برچسبهای زمانی مطلق و نسبی را با هم ترکیب کند. اگر اسکریپت فقط از برچسبهای زمانی مطلق (از جمله زمان شروع اسکریپت) یا فقط از برچسبهای نسبی استفاده کند، ساختار آن ثابت است و تبدیل ساده خواهد بود. از سوی دیگر، اگر اسکریپت هر دو نوع برچسب زمانی را ترکیب کند، مرجع NOW برای برچسبهای زمانی نسبی از ساعت جاری سیستم در زمان خوانده شدن اسکریپت گرفته میشود و ساختار اسکریپت طبق آن مرجع تثبیت خواهد شد. این بدان معناست که اگر اسکریپت مستقیماً پخش شود، زمانهای واقعی تا حد دقت ساعت کنترلکننده صدا با برچسبهای زمانی مطلق مطابقت خواهند داشت، اما اگر کاربر به نحوی پخش را متوقف کند یا پرش زمانی انجام دهد، تمام زمانها متناسب با آن جابهجا خواهند شد.
tedcaptions
زیرنویسهای JSON مورد استفاده برای http://www.ted.com.
سایت TED پیوندهایی به زیرنویسها ارائه نمیدهد، اما میتوان آنها را از صفحه حدس زد. پرونده tools/bookmarklets.html از درخت منبع FFmpeg حاوی بوکمارکلتی برای آشکارسازی آنها است.
این دیمکسر گزینه زیر را میپذیرد:
- start_time
- تنظیم زمان شروع سخنرانی TED، به میلیثانیه. پیشفرض 15000 (15 ثانیه) است. این مقدار برای همگامسازی زیرنویسها با ویدیوهای قابل بارگیری استفاده میشود، زیرا آنها شامل یک ویدیوی معرفی ۱۵ ثانیهای هستند.
مثال: تبدیل زیرنویسها به قالبی که اکثر پخشکنندهها متوجه میشوند:
ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
vapoursynth
پوششدهنده (Wrapper) برای Vapoursynth.
به دلایل امنیتی، اسکریپتهای Vapoursynth به صورت خودکار شناسایی نخواهند شد، بنابراین قالب ورودی باید اجبار شود. برای ابزارهای خط فرمان ff*، عبارت "-f vapoursynth" را قبل از ورودی "-i yourscript.vpy" اضافه کنید.
این دیمکسر گزینه زیر را میپذیرد:
- max_script_size
- دیمکسر تمام اسکریپت را در حافظه بافر میکند. این مقدار را برای تنظیم حداکثر اندازه بافر تغییر دهید که به نوبه خود به عنوان سقف اندازه اسکریپتهای قابل خواندن عمل میکند. پیشفرض 1 MiB است.
w64
دیمکسر صوتی Sony Wave64.
این دیمکسر گزینههای زیر را میپذیرد:
- max_size
- گزینه مشابه برای دیمکسر wav را ببینید.
wav
دیمکسر صوتی RIFF Wave.
این دیمکسر گزینههای زیر را میپذیرد:
- ignore_length bool
- در صورت تنظیم، اندازه چانک "data" را نادیده گرفته و خواندن را تا انتهای پرونده ادامه میدهد. میتواند برای خواندن پروندههای خراب یا ناقص که هدر آنها به درستی بهروزرسانی نشده است مفید باشد، اما پروندههایی که دارای چانکهای غیرصوتی پس از چانک "data" هستند را به اشتباه تفسیر میکند. پیشفرض غیرفعال است.
- max_size
- تعیین حداکثر اندازه بسته به بایت برای بستههای دیمکسشده. به طور پیشفرض روی 0 تنظیم شده است که به این معنی است که یک مقدار معقول بر اساس قالب ورودی انتخاب میشود.
webp
دیمکسر WebP متحرک.
گزینههای زیر را میپذیرد:
- -min_delay int
- تنظیم حداقل تأخیر معتبر بین فریمها به میلیثانیه. محدوده از 0 تا 60000 است. مقدار پیشفرض 10 است.
- -max_webp_delay int
- تنظیم حداکثر تأخیر معتبر بین فریمها به میلیثانیه. محدوده از 0 تا 16777215 است. مقدار پیشفرض 16777215 (بیش از چهار ساعت) است، یعنی حداکثر مقدار مجاز توسط مشخصات فنی.
- -default_delay int
- تنظیم تأخیر پیشفرض بین فریمها به میلیثانیه. محدوده از 0 تا 60000 است. مقدار پیشفرض 100 است.
- -ignore_loop bool
- پروندههای WebP میتوانند حاوی اطلاعاتی برای تکرار (حلقه) به تعداد دفعات مشخص (یا بینهایت) باشند. اگر ignore_loop روی true تنظیم شود، تنظیم حلقه از ورودی نادیده گرفته شده و حلقه تکرار رخ نخواهد داد. اگر روی false تنظیم شود، تکرار رخ خواهد داد و تعداد دفعات را مطابق با WebP چرخش میدهد. مقدار پیشفرض true است.
- usebgcolor bool
- پروندههای WebP حاوی یک راهنمای رنگ پسزمینه در چانک ANIM هستند، اما مشخصات فنی WebP میگوید برنامههای نمایشگر ملزم به استفاده از آن نیستند. اگر usebgcolor روی true تنظیم شود، از راهنمای رنگ پسزمینه استفاده میشود، در غیر این صورت از رنگ سیاه شفاف برای پسزمینه استفاده خواهد شد. مقدار پیشفرض false است.
متاداده (METADATA)
ابزار FFmpeg قادر است متادادهها را از پروندههای رسانهای در یک پرونده متنی ساده مشابه INI با کدگذاری UTF-8 استخراج کرده و سپس با استفاده از مکسر/دیمکسر metadata دوباره آن را بارگیری نماید.
فرمت پرونده به شرح زیر است:
- 1.
- یک پرونده شامل یک هدر و تعدادی تگ متاداده است که به بخشها تقسیم شدهاند و هر کدام در خط جداگانهای قرار دارند.
- 2.
- هدر یک رشته ;FFMETADATA است، که به دنبال آن شماره نسخه میآید (در حال حاضر 1).
- 3.
- تگهای متاداده به شکل key=value هستند.
- 4.
- بلافاصله پس از هدر، متادادههای سراسری (global) قرار میگیرند.
- 5.
- پس از متادادههای سراسری ممکن است بخشهایی با متادادههای مربوط به هر جریان/هر فصل وجود داشته باشد.
- 6.
- یک بخش با نام بخش با حروف بزرگ (یعنی STREAM یا CHAPTER) در داخل براکتها ([، ]) شروع میشود و با بخش بعدی یا پایان پرونده خاتمه مییابد.
- 7.
- در ابتدای
یک بخش فصل
ممکن است یک
پایه زمانی
(timebase) اختیاری
وجود داشته
باشد که
برای
مقادیر
شروع/پایان
استفاده
شود. این
مقدار باید
به فرم
TIMEBASE=num/den
باشد، که در
آن num و den
اعداد صحیح
هستند. اگر
پایه زمانی
وجود
نداشته
باشد،
زمانهای
شروع/پایان
بر حسب
نانوثانیه
فرض
میشوند.
سپس یک بخش فصل باید شامل زمانهای شروع و پایان فصل به شکل START=num، END=num باشد، که در آن num یک عدد صحیح مثبت است.
- 8.
- خطوط خالی و خطوطی که با ; یا # شروع میشوند نادیده گرفته میشوند.
- 9.
- کلیدها یا مقادیر متاداده حاوی نویسههای خاص (=، ;، #، \ و یک خط جدید) باید با یک بکاسلش \ گریز داده شوند.
- 10.
- توجه داشته باشید که فاصلههای خالی در متاداده (مثلاً foo = bar) بخشی از تگ در نظر گرفته میشوند (در مثال بالا کلید foo و مقدار bar است).
یک پرونده ffmetadata ممکن است شبیه این باشد:
;FFMETADATA1 title=bike\\shed ;this is a comment artist=FFmpeg troll team [CHAPTER] TIMEBASE=1/1000 START=0 #chapter ends at 0:01:00 END=60000 title=chapter \#1 [STREAM] title=multi\ line
با استفاده از مکسر و دیمکسر ffmetadata میتوان متاداده را از یک پرونده ورودی به یک پرونده ffmetadata استخراج کرد، و سپس پرونده را با پرونده ffmetadata ویرایششده به یک پرونده خروجی تبدیل کد نمود.
استخراج یک پرونده ffmetadata با ffmpeg به این صورت انجام میشود:
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
درج مجدد اطلاعات متاداده ویرایششده از پرونده FFMETADATAFILE میتواند به این صورت انجام شود:
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
گزینههای پروتکل (PROTOCOL OPTIONS)
کتابخانه libavformat برخی گزینههای سراسری عمومی را فراهم میکند که میتوانند روی تمامی پروتکلها تنظیم شوند. علاوه بر این، هر پروتکل ممکن است از گزینههای به اصطلاح اختصاصی (private options) پشتیبانی کند که مختص آن مؤلفه هستند.
گزینهها را میتوان با مشخص کردن -option value در ابزارهای FFmpeg، یا با تنظیم صریح مقدار در گزینههای "AVFormatContext" یا با استفاده از API پرونده libavutil/opt.h برای کاربردهای برنامهنویسی تنظیم نمود.
فهرست گزینههای پشتیبانیشده در ادامه آمده است:
- protocol_whitelist list (input)
- تنظیم یک فهرست جداشده با کاما (",") از پروتکلهای مجاز. "ALL" با تمام پروتکلها مطابقت دارد. پروتکلهایی که دارای پیشوند "-" هستند غیرفعال میشوند. تمام پروتکلها به طور پیشفرض مجاز هستند اما پروتکلهای استفادهشده توسط یک پروتکل دیگر (پروتکلهای تودرتو) به یک زیرمجموعه به ازای هر پروتکل محدود میشوند.
پروتکلها (PROTOCOLS)
پروتکلها عناصر پیکربندیشدهای در FFmpeg هستند که دسترسی به منابع نیازمند پروتکلهای خاص را امکانپذیر میسازند.
هنگامی که بیلد FFmpeg خود را پیکربندی میکنید، تمام پروتکلهای پشتیبانیشده به طور پیشفرض فعال هستند. میتوانید با استفاده از گزینه configure با عنوان "--list-protocols" فهرست تمام پروتکلهای موجود را مشاهده نمایید.
شما میتوانید با استفاده از گزینه configure با عنوان "--disable-protocols" تمامی پروتکلها را غیرفعال کنید، و به طور انتخابی یک پروتکل را با استفاده از گزینه "--enable-protocol=PROTOCOL" فعال نمایید، یا میتوانید یک پروتکل خاص را با استفاده از گزینه "--disable-protocol=PROTOCOL" غیرفعال سازید.
گزینه "-protocols" در ابزارهای *ff فهرست پروتکلهای پشتیبانیشده را نمایش خواهد داد.
تمام پروتکلها گزینههای زیر را میپذیرند:
- rw_timeout
- حداکثر زمان انتظار برای تکمیل عملیات خواندن/نوشتن (شبکه)، بر حسب میکروثانیه.
شرح پروتکلهای موجود در حال حاضر در ادامه آمده است.
amqp
پروتکل صفبندی پیشرفته پیام (AMQP) نسخه 0-9-1 یک پروتکل ارتباطی مبتنی بر کارگزار (broker) با الگوی نشر/اشتراک (publish-subscribe) است.
برای پشتیبانی از AMQP، ابزار FFmpeg باید با سوییچ --enable-librabbitmq کامپایل شود. همچنین یک کارگزار مستقل AMQP باید در حال اجرا باشد. یک نمونه کارگزار متنباز AMQP، نرمافزار RabbitMQ است.
پس از راهاندازی کارگزار، یک کلاینت FFmpeg میتواند با استفاده از دستور زیر دادهها را به کارگزار ارسال کند:
ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]
که در آن hostname و port (پیشفرض 5672) آدرس کارگزار است. کلاینت همچنین میتواند یک نام کاربری/رمز عبور برای احراز هویت تعیین کند. مقدار پیشفرض برای هر دو فیلد "guest" است. نام میزبان مجازی روی کارگزار میتواند با vhost تعیین شود. مقدار پیشفرض "/" است.
چندین مشترک میتوانند با استفاده از دستور زیر از کارگزار دادهها را دریافت کنند:
ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]
در RabbitMQ تمام دادههای منتشرشده به کارگزار از طریق یک اکسچنج (Exchange) خاص جریان مییابد، و هر کلاینت مشترک یک صف/بافر اختصاصیافته دارد. هنگامی که یک بسته به یک اکسچنج میرسد، ممکن است بسته به فیلدهای exchange و routing_key در صف کلاینت کپی شود.
گزینههای زیر پشتیبانی میشوند:
- exchange
- اکسچنج مورد استفاده در کارگزار را تعیین میکند. RabbitMQ چندین اکسچنج از پیش تعریفشده دارد: "amq.direct" اکسچنج پیشفرض است، که در آن ناشر و مشترک باید یک routing_key منطبق داشته باشند؛ "amq.fanout" مانند یک عملیات پخش همگانی است (یعنی دادهها فارغ از routing_key به تمام صفهای موجود در اکسچنج fanout ارسال میشوند)؛ و "amq.topic" مشابه "amq.direct" است، اما تطبیق الگوهای پیچیدهتر را امکانپذیر میسازد (به مستندات RabbitMQ مراجعه کنید).
- routing_key
- کلید مسیریابی (routing key) را تنظیم میکند. مقدار پیشفرض "amqp" است. کلید مسیریابی در اکسچنجهای "amq.direct" و "amq.topic" استفاده میشود تا تصمیم گرفته شود آیا بستهها در صف یک مشترک نوشته شوند یا خیر.
- pkt_size
- حداکثر اندازه هر بسته ارسالی/دریافتی به کارگزار. پیشفرض 131072 است. حداقل 4096 و حداکثر هر مقدار بزرگ (قابل نمایش با یک int) است. هنگام دریافت بستهها، این گزینه اندازه بافر داخلی را در FFmpeg تنظیم میکند. این مقدار باید برابر یا بزرگتر از اندازه بستههای منتشرشده به کارگزار باشد. در غیر این صورت پیام دریافتی ممکن است ناقص (truncate) شود و خطاهای دیکود به بار آورد.
- connection_timeout
- مهلت زمانی اتصال بر حسب ثانیه در حین برقراری اتصال اولیه به کارگزار. مقدار پیشفرض rw_timeout است، یا 5 ثانیه اگر rw_timeout تنظیم نشده باشد.
- delivery_mode mode
- حالت تحویل هر پیام ارسالی به کارگزار را تنظیم میکند. مقادیر زیر پذیرفته میشوند:
- persistent
- حالت تحویل روی "persistent" (2) تنظیم میشود. این مقدار پیشفرض است. پیامها ممکن است بسته به تنظیمات کارگزار در دیسک ذخیره شوند.
- non-persistent
- حالت تحویل روی "non-persistent" (1) تنظیم میشود. پیامها در حافظه کارگزار باقی میمانند مگر اینکه کارگزار تحت فشار کمبود حافظه قرار گیرد.
async
پوشش پرکننده ناهمگام داده برای جریان ورودی.
پر کردن دادهها در یک ریسه (thread) پسزمینه، به منظور جداسازی عملیات ورودی/خروجی (I/O) از ریسه دیمکس.
async:<URL> async:http://host/resource async:cache:http://host/resource
bluray
خواندن لیست پخش بلوری (BluRay).
گزینههای پذیرفتهشده عبارتند از:
- angle
- زاویه تصویر بلوری (angle)
- chapter
- فصل شروع (1...N)
- playlist
- لیست پخش برای خواندن (BDMV/PLAYLIST/?????.mpls)
مثالها:
خواندن طولانیترین لیست پخش از بلوری مانتشده در مسیر /mnt/bluray:
bluray:/mnt/bluray
خواندن زاویه ۲ از لیست پخش ۴ از بلوری مانتشده در /mnt/bluray، با شروع از فصل ۲:
-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
cache
پوشش حافظه پنهان (کش) برای جریان ورودی.
ذخیره موقت جریان ورودی در یک پرونده موقت. این قابلیت امکان جستجو (seeking) را برای جریانهای زنده فراهم میآورد.
گزینههای پذیرفتهشده عبارتند از:
- read_ahead_limit
- مقدار بر حسب بایت که در هنگام عدم پشتیبانی از جستجو میتواند پیشاپیش خوانده شود. محدوده از -1 تا INT_MAX است. مقدار -1 برای نامحدود است. مقدار پیشفرض 65536 است.
سینتکس URL به شرح زیر است:
cache:<URL>
concat
پروتکل الحاق فیزیکی (Concatenation).
خواندن و جستجو در چندین منبع به صورت متوالی به گونهای که گویی یک منبع واحد هستند.
یک URL پذیرفتهشده توسط این پروتکل دارای سینتکس زیر است:
concat:<URL1>|<URL2>|...|<URLN>
که در آن URL1، URL2، ...، URLN آدرسهای منابعی هستند که باید به یکدیگر متصل شوند، و هر یک ممکن است پروتکل متفاوتی را مشخص کند.
برای نمونه برای خواندن دنبالهای از پروندههای split1.mpeg، split2.mpeg، split3.mpeg با ffplay از دستور زیر استفاده کنید:
ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
توجه داشته باشید که ممکن است لازم باشد نویسه "|" را که برای بسیاری از پوستهها (shells) یک نویسه خاص است، گریز دهید.
concatf
پروتکل الحاق فیزیکی با استفاده از فهرستی از منابع جداشده با شکست خط (line break).
خواندن و جستجو در چندین منبع به صورت متوالی به گونهای که گویی یک منبع واحد هستند.
یک URL پذیرفتهشده توسط این پروتکل دارای سینتکس زیر است:
concatf:<URL>
که در آن URL آدرس حاوی فهرستی از منابع جداشده با خطوط جدید است که باید به هم متصل شوند، و هر یک میتواند مشخصکننده یک پروتکل متفاوت باشد. نویسههای خاص باید با بکاسلش یا کوتیشن تکی گریز داده شوند. به بخش "Quoting and escaping" در راهنمای ffmpeg-utils(1) مراجعه کنید.
به عنوان مثال برای خواندن دنبالهای از پروندههای split1.mpeg، split2.mpeg، split3.mpeg که در خطوط جداگانهای در یک پرونده split.txt فهرست شدهاند با ffplay از دستور زیر استفاده کنید:
ffplay concatf:split.txt
که در آن split.txt شامل خطوط زیر است:
split1.mpeg split2.mpeg split3.mpeg
crypto
پروتکل خواندن جریان رمزگذاریشده با AES.
گزینههای پذیرفتهشده عبارتند از:
- key
- تنظیم بلوک باینری کلید رمزگشایی AES از روی نمایش هگزادسیمال ارائهشده.
- iv
- تنظیم بلوک باینری بردار مقداردهی اولیه (IV) رمزگشایی AES از روی نمایش هگزادسیمال ارائهشده.
قالبهای URL پذیرفتهشده:
crypto:<URL> crypto+<URL>
data
دادههای درونخطی در URI. به http://en.wikipedia.org/wiki/Data_URI_scheme مراجعه کنید.
برای نمونه، جهت تبدیل یک پرونده GIF که به صورت درونخطی داده شده است با ffmpeg:
ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
fd
پروتکل دسترسی به توصیفکننده پرونده (File descriptor).
سینتکس پذیرفتهشده عبارت است از:
fd: -fd <file_descriptor>
اگر fd مشخص نشده باشد، به طور پیشفرض توصیفکننده پرونده stdout برای نوشتن، و stdin برای خواندن استفاده خواهد شد. بر خلاف پروتکل pipe، پروتکل fd در صورتی که مربوط به یک پرونده معمولی باشد، از قابلیت جستجو (seek) پشتیبانی میکند. پروتکل fd به دلایل امنیتی از ارسال توصیفکننده پرونده از طریق URL پشتیبانی نمیکند.
این پروتکل گزینههای زیر را میپذیرد:
- blocksize
- تنظیم حداکثر اندازه بلوک عملیات I/O، بر حسب بایت. مقدار پیشفرض "INT_MAX" است، که منجر به عدم محدودیت اندازه بلوک درخواستی میشود. تنظیم این مقدار روی یک مقدار معقول پایین، زمان واکنش به درخواست قطع عملیات توسط کاربر را بهبود میبخشد، که در صورت کند بودن انتقال دادهها ارزشمند است.
- fd
- تنظیم توصیفکننده پرونده.
file
پروتکل دسترسی به پرونده.
خواندن از یا نوشتن در یک پرونده.
یک URL پرونده میتواند به این فرم باشد:
file:<filename>
که در آن filename مسیر پرونده برای خواندن است.
یک URL که پیشوند پروتکل نداشته باشد، به عنوان یک URL پرونده در نظر گرفته میشود. بسته به نوع بیلد، یک URL که شبیه به یک مسیر ویندوزی با حرف درایو در ابتدا باشد نیز به عنوان یک URL پرونده در نظر گرفته خواهد شد (معمولاً در بیلدهای سیستمهای شبهیونیکس اینطور نیست).
برای نمونه جهت خواندن از یک پرونده input.mpeg با ffmpeg از دستور زیر استفاده کنید:
ffmpeg -i file:input.mpeg output.mpeg
این پروتکل گزینههای زیر را میپذیرد:
- truncate
- کوتاه کردن پروندههای موجود در هنگام نوشتن، در صورت تنظیم روی 1. مقدار 0 از کوتاهسازی جلوگیری میکند. مقدار پیشفرض 1 است.
- blocksize
- تنظیم حداکثر اندازه بلوک عملیات I/O، بر حسب بایت. مقدار پیشفرض "INT_MAX" است، که منجر به عدم محدودیت اندازه بلوک درخواستی میشود. تنظیم این مقدار روی یک اندازه معقول پایین، زمان واکنش به درخواست قطع عملیات توسط کاربر را بهبود میبخشد، که برای پروندههای روی رسانههای کند ارزشمند است.
- follow
- اگر روی 1 تنظیم شود، پروتکل خواندن را در انتهای پرونده مجدداً امتحان میکند، و اجازه میدهد پروندههایی که هنوز در حال نوشتن هستند خوانده شوند. برای پایان یافتن این کار، یا باید از گزینه rw_timeout استفاده کنید، یا از کالبک وقفه (برای کاربران API) بهره ببرید. تنظیم این گزینه همچنین اندازه پرونده گزارششده توسط سامانه پرونده را نادیده میگیرد.
- seekable
- کنترل
میکند که
آیا قابلیت
جستجو روی
پرونده
اعلام شود
یا خیر.
مقدار 0 به
معنی
غیرقابل
جستجو، و -1
به معنی
خودکار است
(قابل جستجو
برای
پروندههای
عادی،
غیرقابل
جستجو برای
لولههای
نامگذاریشده).
بسیاری از دیمکسرها با منابع قابل جستجو و غیرقابل جستجو رفتار متفاوتی دارند؛ بازنویسی این گزینه ممکن است سرعت باز کردن برخی پروندهها را افزایش دهد، البته به بهای از دست دادن برخی ویژگیها (مانند جستجوی دقیق).
- pkt_size
- تنظیم
حداکثر
اندازه
بسته
مورداستفاده
برای I/O
پرونده.
مقدار
کوچکتر
ممکن است
مصرف حافظه
را کاهش
دهد. مقدار
بالاتر
ممکن است
بازده را به
ویژه در
سامانههای
پرونده
شبکهای
افزایش دهد.
برای خواندن، در صورت تنظیم صریح، اندازه بافر داخلی پیشفرض (32 کیلوبایت) را بازنویسی میکند و حداکثر مقدار داده خواندهشده در هر عملیات را محدود میسازد.
برای نوشتن، این گزینه اندازه هر عملیات نوشتن را تعیین میکند. مقدار پیشفرض ۲۵۶ کیلوبایت برای پروندههای معمولی، و ۳۲ کیلوبایت برای سایر موارد است.
ftp
پروتکل انتقال پرونده (FTP).
خواندن از یا نوشتن در منابع راه دور با استفاده از پروتکل FTP.
سینتکس زیر الزامی است:
ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
این پروتکل گزینههای زیر را میپذیرد:
- timeout
- تنظیم مهلت زمانی بر حسب میکروثانیه برای عملیات سوکت I/O مورد استفاده توسط عملیات سطح پایین زیرین. مقدار پیشفرض -1 است، به این معنی که مهلت زمانی مشخص نشده است.
- ftp-user
- تنظیم کاربری که برای احراز هویت در سرور FTP استفاده میشود. این گزینه توسط کاربر مشخصشده در URL پروتکل FTP بازنویسی خواهد شد.
- ftp-password
- تنظیم رمز عبوری که برای احراز هویت در سرور FTP استفاده میشود. این گزینه توسط رمز عبور موجود در URL پروتکل FTP، یا توسط ftp-anonymous-password در صورت عدم تعیین کاربر، بازنویسی میشود.
- ftp-anonymous-password
- رمز عبور مورد استفاده هنگام ورود به عنوان کاربر ناشناس (anonymous). معمولاً یک آدرس ایمیل باید استفاده شود.
- ftp-write-seekable
- کنترل قابلیت جستجوی اتصال در طول کدگذاری. اگر روی 1 تنظیم شود، فرض میشود منبع قابلیت جستجو دارد، اگر روی 0 تنظیم شود، فرض میشود قابلیت جستجو ندارد. مقدار پیشفرض 0 است.
نکته: این پروتکل میتواند به عنوان خروجی استفاده شود، اما توصیه میشود این کار انجام نشود، مگر اینکه احتیاطهای خاصی لحاظ شده باشد (آزمایشها، پیکربندی سفارشی سرور و غیره). سرورهای مختلف FTP در حین عملیات جستجو رفتار متفاوتی از خود نشان میدهند. ابزارهای *ff ممکن است به دلیل محدودیتهای سرور، محتوای ناقصی تولید کنند.
gopher
پروتکل گوفر (Gopher).
gophers
پروتکل گوفرز (Gophers).
پروتکل گوفر با کپسولهسازی TLS.
http
پروتکل انتقال ابرمتن (HTTP).
این پروتکل گزینههای زیر را میپذیرد:
- seekable
- کنترل قابلیت جستجوی اتصال. اگر روی 1 تنظیم شود، منبع قابل جستجو در نظر گرفته میشود، اگر روی 0 تنظیم شود، غیرقابل جستجو فرض میشود، و اگر روی -1 تنظیم شود، تلاش میکند تا قابل جستجو بودن را به طور خودکار تشخیص دهد. مقدار پیشفرض -1 است.
- chunked_post
- در صورت تنظیم روی 1، از حالت قطعهبندیشده Transfer-Encoding برای ارسالهای post استفاده میکند، مقدار پیشفرض 1 است.
- http_proxy
- تنظیم پروکسی HTTP برای تونلزنی، به عنوان مثال http://example.com:1234
- headers
- تنظیم هدرهای سفارشی HTTP، میتواند هدرهای پیشفرض داخلی را بازنویسی کند. مقدار باید رشتهای باشد که هدرها را کدگذاری کرده است.
- content_type
- تنظیم یک نوع محتوای مشخص برای پیامهای POST یا برای حالت شنود (listen).
- user_agent
- بازنویسی هدر User-Agent. در صورت عدم تعیین، پروتکل از رشتهای که بیلد libavformat را توصیف میکند استفاده خواهد کرد ("Lavf/<version>").
- referer
- تنظیم هدر Referer. گنجاندن هدر 'Referer: URL' در درخواست HTTP.
- multiple_requests
- استفاده از اتصالات پایدار (Persistent connections) در صورت تنظیم روی 1، مقدار پیشفرض 0 است.
- request_size
- محدود کردن
اندازه
درخواستهای
ارسالشده.
این گزینه
برای برخی
سرورهای
ناهنجار که
درخواستهای
محدوده (range requests)
بدون کران
را با افت
سرعت (throttle)
مواجه
میکنند، و
همچنین
هنگام
انتظار
جستجوهای
مکرر، مفید
است. به طور
پیشفرض
غیرفعال
است (روی 0
تنظیم شده
است).
توجه داشته باشید که در صورت فعال کردن این گزینه، اکیداً توصیه میشود که گزینه multiple_requests نیز فعال شود و همچنین short_seek_size روی مقداری برابر یا بالاتر تنظیم گردد. انجام این کار به FFmpeg اجازه میدهد تا حد امکان از یک اتصال HTTP منفرد مجدداً استفاده کند.
- initial_request_size
- محدود کردن
اندازه
درخواستهای
اولیه.
مشابه
"request_size"،
اما فقط در
طول تجزیه
اولیه فرمت
استفاده
میشود.
برای
فرمتهایی
مانند MXF یا MOV
که در حین
تجزیه هدر
نیازمند
جستجوهای
مکرر
هستند،
مفید است.
تا زمانی
ادامه دارد
که دیمکسر
یک درخواست
خواندن
بزرگتر از
این اندازه
(بدون جستجو
در این بین)
انجام دهد،
و پس از آن
پیادهسازی
طبق معمول
به ارسال
درخواستها
ادامه
خواهد داد.
به طور
پیشفرض
غیرفعال
است (روی 0
تنظیم شده
است).
توجه داشته باشید که در صورت فعالسازی این گزینه، اکیداً توصیه میشود گزینه multiple_requests نیز فعال گردد، و short_seek_size روی مقداری برابر یا بیشتر تنظیم شود.
- post_data
- تنظیم دادههای سفارشی HTTP post.
- mime_type
- صادر کردن نوع MIME.
- http_version
- صادر کردن شماره نسخه پاسخ HTTP. معمولاً "1.0" یا "1.1".
- تنظیم کوکیهایی که باید در درخواستهای آتی ارسال شوند. فرمت هر کوکی همانند مقدار فیلد پاسخ HTTP با نام Set-Cookie است. کوکیهای متعدد میتوانند با یک نویسه خط جدید جدا شوند.
- icy
- اگر روی 1 تنظیم شود، متادادههای ICY (SHOUTcast) را از سرور درخواست میکند. اگر سرور از این ویژگی پشتیبانی کند، برنامه باید متاداده را با خواندن گزینههای icy_metadata_headers و icy_metadata_packet بازیابی نماید. مقدار پیشفرض 1 است.
- icy_metadata_headers
- اگر سرور از متادادههای ICY پشتیبانی کند، این گزینه حاوی هدرهای پاسخ HTTP ویژه ICY خواهد بود، که با نویسههای خط جدید جدا شدهاند.
- icy_metadata_packet
- اگر سرور از متادادههای ICY پشتیبانی کند و icy روی 1 تنظیم شده باشد، این گزینه شامل آخرین بسته متاداده غیرخالی ارسالشده توسط سرور خواهد بود. برنامههایی که مایل به دریافت بهروزرسانیهای متاداده در میان استریم هستند باید آن را در بازههای زمانی منظم بررسی کنند.
- metadata
- تنظیم یک دیکشنری صادرشده حاوی متاداده Icecast از بیتاستریم، در صورت وجود. فقط با API زبان C کاربرد دارد.
- auth_type
- تنظیم نوع احراز هویت HTTP. گزینهای برای روش احراز هویت Digest وجود ندارد، چرا که این روش ابتدا نیازمند دریافت پارامترهای nonce از سرور است و نمیتواند مانند Basic بلافاصله استفاده شود.
- none
- انتخاب خودکار نوع احراز هویت HTTP. این مقدار پیشفرض است.
- basic
- انتخاب
احراز هویت
پایه HTTP.
احراز هویت پایه یک رشته کدگذاریشده با Base64 ارسال میکند که شامل نام کاربری و رمز عبور کلاینت است. Base64 شکلی از رمزگذاری نیست و باید معادل ارسال نام کاربری و رمز عبور به صورت متن آشکار در نظر گرفته شود (Base64 یک کدگذاری برگشتپذیر است). اگر منبعی نیازمند محافظت است، اکیداً استفاده از یک طرح احراز هویت غیر از احراز هویت پایه را در نظر بگیرید. همراه با احراز هویت پایه باید از HTTPS/TLS استفاده شود. بدون این بهبودهای امنیتی تکمیلی، احراز هویت پایه نباید برای محافظت از اطلاعات حساس یا ارزشمند استفاده گردد.
- send_expect_100
- ارسال هدر Expect: 100-continue برای درخواستهای POST. اگر روی 1 تنظیم شود ارسال میکند، اگر روی 0 تنظیم شود ارسال نخواهد کرد، و اگر روی -1 تنظیم شود در صورت کاربردی بودن تلاش برای ارسال میکند. مقدار پیشفرض -1 است.
- location
- یک دیکشنری صادرشده حاوی مکان محتوا. فقط با API زبان C کاربرد دارد.
- offset
- تنظیم آفست بایت اولیه.
- end_offset
- تلاش برای محدود کردن درخواست به بایتهای قبل از این آفست.
- method
- هنگامی که
به عنوان
گزینه
کلاینت
استفاده
شود، متد HTTP
را برای
درخواست
تنظیم
میکند.
هنگامی که به عنوان گزینه سرور استفاده شود، متد HTTP مورد انتظار از کلاینت(ها) را تعیین میکند. اگر متد HTTP مورد انتظار و متد دریافتشده یکسان نباشند، پاسخ Bad Request به کلاینت داده خواهد شد. در صورت عدم تنظیم، در حال حاضر متد HTTP بررسی نمیشود. این مورد در آینده با تشخیص خودکار جایگزین خواهد شد.
- reconnect
- اتصال مجدد خودکار در صورت قطع ارتباط پیش از رسیدن به انتهای پرونده (EOF).
- reconnect_at_eof
- در صورت تنظیم، با EOF مانند یک خطا رفتار میشود و موجب اتصال مجدد میگردد؛ این گزینه برای استریمهای زنده / بیپایان کاربردی است.
- reconnect_on_network_error
- اتصال مجدد خودکار در صورت بروز خطاهای TCP/TLS در هنگام اتصال.
- reconnect_on_http_error
- فهرستی جداشده با کاما از کدهای وضعیت HTTP که در صورت وقوع آنها اتصال مجدد برقرار میشود. این فهرست میتواند شامل کدهای وضعیت خاص (مانند '503') یا رشتههای '4xx' / '5xx' باشد.
- reconnect_streamed
- در صورت تنظیم، حتی جریانهای جریانی/غیرقابل جستجو در صورت بروز خطا مجدداً متصل خواهند شد.
- reconnect_delay_max
- تنظیم حداکثر تأخیر به ثانیه که پس از آن از اتصال مجدد صرفنظر میشود.
- reconnect_max_retries
- تنظیم حداکثر تعداد دفعات تلاش مجدد برای برقراری اتصال. پیشفرض تنظیم نشده است.
- reconnect_delay_total_max
- تنظیم حداکثر تأخیر کل به ثانیه که پس از آن از اتصال مجدد صرفنظر میشود.
- respect_retry_after
- در صورت فعال بودن و مواجهه با هدر Retry-After، تأخیر اتصال مجدد درخواستشده در آن رعایت خواهد شد، به جای اینکه از عقبنشینی نمایی استفاده شود. برای خطاهای ۴۲۹ و ۵۰۳ مفید است. پیشفرض فعال است.
- listen
- اگر روی 1
تنظیم شود
سرور
آزمایشی HTTP
را فعال
میکند. این
گزینه
میتواند
برای ارسال
دادهها
هنگام
استفاده به
عنوان
گزینه
خروجی، یا
خواندن
دادهها از
یک کلاینت
با HTTP POST هنگام
استفاده به
عنوان
گزینه
ورودی به
کار رود.
اگر روی 2
تنظیم شود
سرور
آزمایشی
چندکلاینتی
HTTP را فعال
میکند. این
قابلیت
هنوز در ffmpeg.c
پیادهسازی
نشده است و
بنابراین
نباید به
عنوان یک
گزینه خط
فرمان به
کار گرفته
شود.
# Server side (sending): ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://<server>:<port> # Client side (receiving): ffmpeg -i http://<server>:<port> -c copy somefile.ogg # Client can also be done with wget: wget http://<server>:<port> -O somefile.ogg # Server side (receiving): ffmpeg -listen 1 -i http://<server>:<port> -c copy somefile.ogg # Client side (sending): ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://<server>:<port> # Client can also be done with wget: wget --post-file=somefile.ogg http://<server>:<port>
- resource
- منبع درخواستشده توسط یک کلاینت، زمانی که سرور آزمایشی HTTP در حال استفاده است.
- reply_code
- کد HTTP بازگرداندهشده به کلاینت، زمانی که سرور آزمایشی HTTP در حال استفاده است.
- short_seek_size
- تنظیم آستانه بر حسب بایت، برای زمانی که خواندن پیشاپیش (readahead) باید بر جستجو و درخواست جدید HTTP ترجیح داده شود. این به عنوان مثال برای اطمینان از این که از یک اتصال یکسان برای خواندن بستههای ویدیویی بزرگ با بستههای صوتی کوچک در میان آنها استفاده میشود، سودمند است.
کوکیهای HTTP (HTTP Cookies)
برخی درخواستهای HTTP رد خواهند شد مگر اینکه مقادیر کوکی همراه با درخواست ارسال گردند. گزینه cookies امکان مشخص کردن این کوکیها را فراهم میکند. حداقل، هر کوکی باید یک مقدار را به همراه مسیر و دامنه مشخص نماید. درخواستهای HTTP که هم با دامنه و هم با مسیر مطابقت داشته باشند، به طور خودکار مقدار کوکی را در فیلد هدر HTTP Cookie خواهند گنجاند. چندین کوکی را میتوان با یک خط جدید از هم تفکیک کرد.
سینتکس مورد نیاز برای پخش یک جریان با تعیین کوکی به این صورت است:
ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
Icecast
پروتکل Icecast (پخش جریانی به سرورهای Icecast)
این پروتکل گزینههای زیر را میپذیرد:
- ice_genre
- تنظیم سبک (genre) جریان.
- ice_name
- تنظیم نام جریان.
- ice_description
- تنظیم توضیحات جریان.
- ice_url
- تنظیم URL وبسایت جریان.
- ice_public
- تنظیم اینکه آیا جریان باید عمومی باشد یا خیر. مقدار پیشفرض 0 است (غیرعمومی).
- user_agent
- بازنویسی هدر User-Agent. در صورت عدم تعیین، رشتهای به فرم "Lavf/<version>" استفاده خواهد شد.
- password
- تنظیم رمز عبور نقطه اتصال (mountpoint) در Icecast.
- content_type
- تنظیم نوع محتوای جریان. در صورتی که متفاوت از audio/mpeg باشد، این گزینه باید تنظیم شود.
- legacy_icecast
- این گزینه پشتیبانی از نسخههای Icecast کمتر از 2.4.0 را فعال میکند، که از متد HTTP PUT پشتیبانی نکرده و از متد SOURCE استفاده میکنند.
- tls
- برقراری یک اتصال TLS (HTTPS) به Icecast.
icecast://[<username>[:<password>]@]<server>:<port>/<mountpoint>
ipfs
پشتیبانی از پروتکل سامانه پرونده بینسیارهای (IPFS). میتوان به پروندههای ذخیرهشده در شبکه IPFS از طریق درگاههای به اصطلاح گیتوی (gateways) دسترسی پیدا کرد. اینها نقاط پایانی http(s) هستند. این پروتکل، پروتکلهای بومی IPFS (یعنی ipfs:// و ipns://) را کپسوله میکند تا به چنین گیتویهایی ارسال شوند. کاربران میتوانند (و بهتر است) گره خود را میزبانی نمایند، که بدان معناست این پروتکل برای دسترسی به پروندههای موجود در شبکه IPFS از گیتوی محلی فرد استفاده خواهد کرد.
این پروتکل گزینههای زیر را میپذیرد:
- gateway
- گیتوی مورد استفاده را تعریف میکند. در صورت عدم تنظیم، پروتکل ابتدا با بررسی $IPFS_GATEWAY، $IPFS_PATH و "$HOME/.ipfs/" به ترتیب، تلاش میکند گیتوی محلی را پیدا کند.
میتوان از این پروتکل به ۲ روش استفاده کرد. با استفاده از IPFS:
ffplay ipfs://<hash>
یا پروتکل IPNS (که IPNS همان IPFS با قابلیت تغییر است):
ffplay ipns://<hash>
mmst
پروتکل MMS (سرور رسانه مایکروسافت) روی TCP.
mmsh
پروتکل MMS (سرور رسانه مایکروسافت) روی HTTP.
سینتکس الزامی عبارت است از:
mmsh://<server>[:<port>][/<app>][/<playpath>]
md5
پروتکل خروجی MD5.
هش MD5 دادههای در حال نوشتن را محاسبه میکند، و در زمان بستن، آن را در خروجی تعیینشده یا در stdout (در صورت عدم تعیین) مینویسد. میتواند برای آزمایش مکسرها بدون نوشتن یک پرونده واقعی به کار رود.
چند مثال در ادامه آمده است:
# Write the MD5 hash of the encoded AVI file to the file output.avi.md5. ffmpeg -i input.flv -f avi -y md5:output.avi.md5 # Write the MD5 hash of the encoded AVI file to stdout. ffmpeg -i input.flv -f avi -y md5:
توجه داشته باشید که برخی فرمتها (معمولاً MOV) نیاز دارند که پروتکل خروجی قابلیت جستجو داشته باشد، بنابراین با پروتکل خروجی MD5 با شکست مواجه خواهند شد.
pipe
پروتکل دسترسی به لوله یونیکس (UNIX pipe).
خواندن از و نوشتن در لولههای یونیکس.
سینتکس پذیرفتهشده عبارت است از:
pipe:[<number>]
اگر fd مشخص نشده باشد، number عددی است که با توصیفکننده پرونده لوله مطابقت دارد (مثلاً 0 برای stdin، 1 برای stdout، 2 برای stderr). اگر number مشخص نشده باشد، به طور پیشفرض توصیفکننده پرونده stdout برای نوشتن، و stdin برای خواندن استفاده خواهد شد.
برای مثال برای خواندن از stdin با ffmpeg:
cat test.wav | ffmpeg -i pipe:0 # ...this is the same as... cat test.wav | ffmpeg -i pipe:
برای نوشتن در stdout با ffmpeg:
ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi # ...this is the same as... ffmpeg -i test.wav -f avi pipe: | cat > test.avi
این پروتکل گزینههای زیر را میپذیرد:
- blocksize
- تنظیم حداکثر اندازه بلوک عملیات I/O، بر حسب بایت. مقدار پیشفرض "INT_MAX" است، که به معنی عدم محدود کردن اندازه بلوک درخواستی است. تنظیم این مقدار روی یک مقدار معقول پایین، زمان واکنش به درخواست توقف توسط کاربر را بهبود میبخشد، که در صورت کند بودن انتقال دادهها سودمند است.
- fd
- تنظیم توصیفکننده پرونده.
توجه داشته باشید که برخی فرمتها (معمولاً MOV) نیاز دارند که پروتکل خروجی قابلیت جستجو داشته باشد، بنابراین با پروتکل خروجی pipe با شکست مواجه خواهند شد.
prompeg
پروتکل FEC مطابق Pro-MPEG Code of Practice #3 Release 2.
پروتکل Pro-MPEG CoP#3 FEC یک سازوکار تصحیح خطای رو به جلو (FEC) با بررسی توازن ۲ بعدی برای جریانهای انتقال MPEG-2 ارسالشده روی RTP است.
این پروتکل باید در ارتباط با مکسر "rtp_mpegts" و پروتکل "rtp" استفاده شود.
سینتکس مورد نیاز به این شکل است:
-f rtp_mpegts -fec prompeg=<option>=<val>... rtp://<hostname>:<port>
پورتهای UDP مقصد برابر "port + 2" برای جریان FEC ستونی و "port + 4" برای جریان FEC سطری هستند.
این پروتکل گزینههای زیر را میپذیرد:
نمونه کاربرد:
-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://<hostname>:<port>
rist
پروتکل انتقال مطمئن جریان اینترنتی (RIST).
گزینههای پذیرفتهشده عبارتند از:
- rist_profile
- مقادیر پشتیبانیشده:
- buffer_size
- تنظیم اندازه بافر داخلی RIST بر حسب میلیثانیه برای ارسال مجدد دادهها. مقدار پیشفرض 0 است که به معنای پیشفرض librist (۱ ثانیه) میباشد. حداکثر مقدار ۳۰ ثانیه است.
- fifo_size
- اندازه بافر خروجی fifo گیرنده librist بر حسب تعداد بستهها. این مقدار باید توانی از ۲ باشد. پیشفرض 8192 است (در مقابل پیشفرض 1024 کتابخانه librist).
- overrun_nonfatal=1|0
- ادامه کار در صورت سرریز بافر fifo کتابخانه librist. مقدار پیشفرض 0 است.
- pkt_size
- تنظیم حداکثر اندازه بسته برای ارسال دادهها. به طور پیشفرض 1316 است.
- log_level
- تنظیم سطح ثبت وقایع (log level) برای پیامهای لاگ RIST. شما تنها زمانی به تنظیم این گزینه نیاز دارید که به طور صریح بخواهید پیامهای سطح دیباگ یا شبیهسازی از دست رفتن بسته را فعال کنید، در غیر این صورت سطح لاگ عادی رعایت میشود.
- secret
- تنظیم بازنویسی رمز اختصاصی رمزگذاری، به طور پیشفرض تنظیم نشده است.
- encryption
- تنظیم نوع رمزگذاری، به طور پیشفرض غیرفعال است. مقادیر قابل قبول 128 و 256 هستند.
rtmp
پروتکل پیامرسانی بلادرنگ (RTMP).
پروتکل پیامرسانی بلادرنگ (RTMP) برای پخش جریانی محتوای چندرسانهای در یک شبکه TCP/IP به کار میرود.
سینتکس مورد نیاز به شرح زیر است:
rtmp://[<username>:<password>@]<server>[:<port>][/<app>][/<instance>][/<playpath>]
پارامترهای پذیرفتهشده عبارتند از:
- username
- یک نام کاربری اختیاری (بیشتر برای انتشار محتوا).
- password
- یک رمز عبور اختیاری (بیشتر برای انتشار محتوا).
- server
- آدرس سرور RTMP.
- port
- شماره پورت TCP مورد استفاده (پیشفرض 1935 است).
- app
- نام برنامهای است که باید به آن دسترسی پیدا کرد. معمولاً با مسیری که برنامه روی سرور RTMP در آن نصب شده مطابقت دارد (مانند /ondemand/، /flash/live/ و غیره). شما میتوانید مقدار تجزیهشده از URI را از طریق گزینه "rtmp_app" نیز بازنویسی نمایید.
- playpath
- مسیر یا نام منبعی است که با ارجاع به برنامه مشخصشده در app باید پخش شود، و ممکن است پیشوند "mp4:" داشته باشد. شما میتوانید مقدار تجزیهشده از URI را از طریق گزینه "rtmp_playpath" نیز بازنویسی کنید.
- listen
- عمل به عنوان یک سرور، و گوش دادن به اتصالات ورودی.
- timeout
- حداکثر زمان انتظار برای اتصال ورودی. متضمن گزینه listen است.
علاوه بر این، پارامترهای زیر میتوانند از طریق گزینههای خط فرمان (یا در کد از طریق "AVOption"ها) تنظیم شوند:
- rtmp_app
- نام برنامه برای اتصال در سرور RTMP. این گزینه پارامتر مشخصشده در URI را بازنویسی میکند.
- rtmp_buffer
- تنظیم زمان بافر کلاینت بر حسب میلیثانیه. پیشفرض 3000 است.
- rtmp_conn
- پارامترهای اتصال دلخواه و اختیاری AMF، که از یک رشته تجزیه میشوند، مثلاً مانند "B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0". هر مقدار با یک نویسه تکی مشخصکننده نوع شروع میشود: B برای بولی، N برای عدد، S برای رشته، O برای شیء (object)، یا Z برای تهی (null)، که به دنبال آن یک دونقطه میآید. برای متغیرهای بولی دادهها باید 0 یا 1 به ترتیب برای نادرست (FALSE) یا درست (TRUE) باشند. به همین ترتیب برای شیء، دادهها باید 0 یا 1 به ترتیب برای پایان یا شروع یک شیء باشند. اقلام داده در اشیاء فرعی میتوانند نامگذاری شوند، با پیشوند کردن نوع با 'N' و مشخص کردن نام قبل از مقدار (یعنی "NB:myFlag:1"). این گزینه ممکن است چندین بار برای ساخت توالیهای دلخواه AMF استفاده شود.
- rtmp_enhanced_codecs
- مشخص کردن فهرستی از کدکهایی که کلاینت اعلام میکند در یک جریان بهبودیافته RTMP پشتیبانی میکند. این گزینه باید روی یک فهرست جداشده با کاما از مقادیر fourcc تنظیم شود، مانند "hvc1,av01,vp09" برای چند کدک یا "hvc1" برای فقط یک کدک. فهرست مشخصشده در مشخصه "fourCcLive" از پیام Connect Command Message ارائه خواهد شد.
- rtmp_flashver
- نسخه پلاگین فلش مورداستفاده برای اجرای پخشکننده SWF. مقدار پیشفرض LNX 9,0,124,2 است. (هنگام انتشار، مقدار پیشفرض FMLE/3.0 (compatible; <libavformat version>) است).
- rtmp_flush_interval
- تعداد بستههای تخلیهشده در یک درخواست مشترک (فقط در RTMPT). پیشفرض 10 است.
- rtmp_live
- مشخص کردن اینکه آیا رسانه یک جریان زنده است یا خیر. در جریانهای زنده ازسرگیری یا جستجو امکانپذیر نیست. مقدار پیشفرض "any" است، که به این معنی است مشترک ابتدا تلاش میکند جریان زنده مشخصشده در playpath را پخش کند. اگر جریان زندهای با آن نام پیدا نشود، جریان ضبطشده را پخش مینماید. مقادیر ممکن دیگر "live" و "recorded" هستند.
- rtmp_pageurl
- آدرس وبسایتی که رسانه در آن جاسازی شده است. به طور پیشفرض هیچ مقداری ارسال نخواهد شد.
- rtmp_playpath
- شناسه جریان برای پخش یا انتشار. این گزینه پارامتر مشخصشده در URI را بازنویسی میکند.
- rtmp_subscribe
- نام جریان زنده برای اشتراک. به طور پیشفرض هیچ مقداری ارسال نخواهد شد. این مقدار تنها در صورتی ارسال میشود که این گزینه مشخص شده باشد یا rtmp_live روی live تنظیم شده باشد.
- rtmp_swfhash
- هش SHA256 پرونده SWF غیرفشرده (۳۲ بایت).
- rtmp_swfsize
- اندازه پرونده SWF غیرفشرده، مورد نیاز برای SWFVerification.
- rtmp_swfurl
- نشانی اینترنتی پخشکننده SWF برای رسانه. به طور پیشفرض هیچ مقداری ارسال نخواهد شد.
- rtmp_swfverify
- نشانی اینترنتی پرونده swf پخشکننده، جهت محاسبه خودکار هش/اندازه.
- rtmp_tcurl
- نشانی اینترنتی جریان هدف. مقدار پیشفرض proto://host[:port]/app است.
- tcp_nodelay=1|0
- تنظیم TCP_NODELAY
برای
غیرفعال
کردن
الگوریتم Nagle.
مقدار
پیشفرض 0
است.
یادداشت: نوشتن روی سوکت در حال حاضر برای به حداقل رساندن فراخوانیهای سیستم بهینهسازی نشده است و بازدهی / اثر TCP_NODELAY را کاهش میدهد.
- tcp_keepalive=1|0
- فعال کردن
سازوکار TCP keepalive
برای
شناسایی
طرفهای
ارتباطی
غیرفعال و
کمک به حفظ
اتصالات
بیکار
طولانیمدت.
مقدار
پیشفرض 0
است.
تنها گزینه پایهای keepalive (SO_KEEPALIVE) میتواند فعال یا غیرفعال شود. پارامترهای تنظیم دقیق وابسته به پلتفرم مانند TCP_KEEPIDLE، TCP_KEEPINTVL یا TCP_KEEPCNT قابل پیکربندی نیستند و از مقادیر پیشفرض سیستم عامل استفاده خواهند کرد.
برای نمونه برای خواندن یک منبع چندرسانهای به نام "sample" از برنامه "vod" از سرور RTMP به نشانی "myserver" با ffplay:
ffplay rtmp://myserver/vod/sample
برای انتشار در سروری محافظتشده با رمز عبور، با ارسال جداگانه نامهای playpath و app:
ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
rtmpe
پروتکل پیامرسانی بلادرنگ رمزگذاریشده (RTMPE).
پروتکل پیامرسانی بلادرنگ رمزگذاریشده (RTMPE) برای پخش جریانی محتوای چندرسانهای در قالب مولفههای استاندارد رمزنگاری، متشکل از تبادل کلید دیفی-هلمن و HMACSHA256، و تولید یک جفت کلید RC4 استفاده میشود.
rtmps
پروتکل پیامرسانی بلادرنگ روی یک اتصال امن SSL.
پروتکل پیامرسانی بلادرنگ (RTMPS) برای پخش جریانی محتوای چندرسانهای در یک اتصال رمزگذاریشده استفاده میشود.
rtmpt
پروتکل پیامرسانی بلادرنگ تونلشده از طریق HTTP.
پروتکل پیامرسانی بلادرنگ تونلشده از طریق HTTP (RTMPT) برای پخش جریانی محتوای چندرسانهای در قالب درخواستهای HTTP به منظور عبور از فایروالها استفاده میشود.
rtmpte
پروتکل پیامرسانی بلادرنگ رمزگذاریشده تونلشده از طریق HTTP.
پروتکل پیامرسانی بلادرنگ رمزگذاریشده تونلشده از طریق HTTP (RTMPTE) برای پخش جریانی محتوای چندرسانهای درون درخواستهای HTTP به منظور عبور از فایروالها استفاده میشود.
rtmpts
پروتکل پیامرسانی بلادرنگ تونلشده از طریق HTTPS.
پروتکل پیامرسانی بلادرنگ تونلشده از طریق HTTPS (RTMPTS) برای پخش جریانی محتوای چندرسانهای درون درخواستهای HTTPS برای عبور از فایروالها استفاده میشود.
libsmbclient
کتابخانه libsmbclient به فرد امکان میدهد منابع شبکهای CIFS/SMB را مدیریت کند.
سینتکس زیر الزامی است:
smb://[[domain:]user[:password@]]server[/share[/path[/file]]]
این پروتکل گزینههای زیر را میپذیرد:
- timeout
- تنظیم مهلت زمانی بر حسب میلیثانیه برای عملیات سوکت I/O مورد استفاده توسط عملیات سطح پایین زیرین. مقدار پیشفرض -1 است، به این معنی که مهلت زمانی مشخص نشده است.
- truncate
- کوتاه کردن پروندههای موجود در هنگام نوشتن، در صورت تنظیم روی 1. مقدار 0 از کوتاهسازی جلوگیری میکند. مقدار پیشفرض 1 است.
- workgroup
- تنظیم workgroup مورد استفاده برای برقراری اتصالات. به طور پیشفرض workgroup مشخص نشده است.
برای اطلاعات بیشتر به http://www.samba.org مراجعه کنید.
libssh
پروتکل انتقال امن پرونده (SFTP) از طریق libssh
خواندن از یا نوشتن در منابع راهدور با استفاده از پروتکل SFTP.
سینتکس زیر الزامی است:
sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
این پروتکل گزینههای زیر را میپذیرد:
- timeout
- تنظیم مهلت زمانی عملیات ورودی/خروجی (I/O) سوکت مورد استفاده در عملیات سطح پایین زیرین. بهطور پیشفرض روی -1 تنظیم شده است، به این معنی که مهلت زمانی مشخص نشده است.
- truncate
- کوتاهسازی (Truncate) پروندههای موجود هنگام نوشتن، در صورتی که روی 1 تنظیم شود. مقدار 0 مانع از کوتاهسازی میشود. مقدار پیشفرض 1 است.
- private_key
- تعیین مسیر پرونده حاوی کلید خصوصی برای استفاده در احراز هویت. بهطور پیشفرض libssh کلیدها را در دایرکتوری ~/.ssh/ جستجو میکند.
مثال: پخش یک پرونده ذخیرهشده در یک سرور راهدور:
ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte
پروتکل پیامرسانی بلادرنگ (RTMP) و انواع آن که از طریق librtmp پشتیبانی میشوند.
نیازمند وجود هدرها و کتابخانه librtmp در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-librtmp" پیکربندی کنید. در صورت فعال بودن، این گزینه جایگزین پروتکل بومی RTMP خواهد شد.
این پروتکل اکثر توابع کلاینت و چند تابع سرور مورد نیاز برای پشتیبانی از RTMP، پروتکل RTMP تانلشده در HTTP (RTMPT)، پروتکل RTMP رمزگذاریشده (RTMPE)، پروتکل RTMP بر روی SSL/TLS (RTMPS) و انواع تانلشده این ساختارهای رمزگذاریشده (RTMPTE، RTMPTS) را فراهم میکند.
سینتکس الزامی به صورت زیر است:
<rtmp_proto>://<server>[:<port>][/<app>][/<playpath>] <options>
که در آن rtmp_proto یکی از رشتههای "rtmp"، "rtmpt"، "rtmpe"، "rtmps"، "rtmpte" یا "rtmpts" متناظر با هر نوع از پروتکل RTMP است، و server، port، app و playpath معنای یکسانی با آنچه برای پروتکل بومی RTMP مشخص شده است دارند. options شامل فهرستی از گزینهها به فرم key=val است که با فاصله از یکدیگر جدا شدهاند.
برای اطلاعات بیشتر به صفحه راهنمای librtmp (دستور man 3 librtmp) مراجعه کنید.
به عنوان مثال، برای پخش جریانی یک پرونده به صورت بلادرنگ به یک سرور RTMP با استفاده از ffmpeg:
ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
برای پخش همان جریان با استفاده از ffplay:
ffplay "rtmp://myserver/live/mystream live=1"
rtp
پروتکل انتقال بلادرنگ (RTP - Real-time Transport Protocol).
سینتکس الزامی برای نشانی (URL) در پروتکل RTP:
rtp://<hostname>[:<port>][?<options>]
شناسه port پورت RTP مورد استفاده را تعیین میکند.
شناسه options شامل فهرستی از گزینهها به فرم key=val است که با علامت & از یکدیگر جدا شدهاند. برای اسکیپ کردن کلیدها و مقادیر میتوان از کدگذاری درصدی استاندارد (percent-encoding) و علامت مثبت برای فاصله استفاده کرد.
گزینهها را میتوان از طریق گزینههای خط فرمان (یا در کد از طریق "AVOption"ها) نیز تعیین کرد.
فهرست گزینههای پشتیبانیشده به شرح زیر است:
- ttl=n
- تنظیم مقدار TTL (طول عمر) (تنها برای چندپخشی / مالتیکست).
- rtcpport=n
- تنظیم پورت RTCP راهدور روی n.
- localport, local_rtpport, localrtpport=n
- تنظیم پورت
RTP محلی روی n.
استفاده از نام گزینه localport منسوخ شده است و نباید استفاده شود.
- local_rtcpport, localrtcpport=n'
- تنظیم پورت RTCP محلی روی n.
- pkt_size=n
- تنظیم حداکثر اندازه بسته (به بایت) روی n.
- buffer_size=size
- تنظیم حداکثر اندازه بافر سوکت UDP به بایت.
- connect=0|1
- اجرای دستور connect() بر روی سوکت UDP (در صورت تنظیم روی 1) یا عدم اجرای آن (در صورت تنظیم روی 0).
- sources=ip[,ip]
- فهرست آدرسهای IP مجاز مبدأ.
- block=ip[,ip]
- فهرست آدرسهای IP مسدودشده (غیرمجاز) مبدأ.
- write_to_source=0|1
- ارسال بستهها به آدرس مبدأ آخرین بسته دریافتشده (در صورت تنظیم روی 1) یا به یک آدرس راهدور پیشفرض (در صورت تنظیم روی 0).
- localaddr=addr
- آدرس IP محلی رابط شبکهای که برای ارسال بستهها یا پیوستن به گروههای مالتیکست استفاده میشود.
- timeout=n
- تنظیم مهلت زمانی (به میکروثانیه) برای عملیات ورودی/خروجی سوکت روی n.
نکات مهم:
- 1.
- اگر rtcpport تنظیم نشده باشد، پورت RTCP روی مقدار پورت RTP به علاوه 1 تنظیم خواهد شد.
- 2.
- اگر localrtpport (پورت RTP محلی) تنظیم نشده باشد، هر پورت در دسترسی برای پورتهای محلی RTP و RTCP استفاده خواهد شد.
- 3.
- اگر localrtcpport (پورت RTCP محلی) تنظیم نشده باشد، روی مقدار پورت محلی RTP به علاوه 1 تنظیم خواهد شد.
rtsp
پروتکل جاریسازی بلادرنگ (RTSP - Real-Time Streaming Protocol).
از لحاظ فنی RTSP یک گرداننده پروتکل در libavformat نیست، بلکه یک دیماکسر و ماکسر است. دیماکسر از هر دو حالت RTSP استاندارد (با دادههای منتقلشده روی RTP؛ که به عنوان مثال توسط اپل و مایکروسافت استفاده میشود) و Real-RTSP (با دادههای منتقلشده روی RDT) پشتیبانی میکند.
ماکسر میتواند برای ارسال یک جریان با استفاده از دستور RTSP ANNOUNCE به سروری که از آن پشتیبانی میکند استفاده شود (در حال حاضر Darwin Streaming Server و سرور Mischa Spiegelmock به نشانی https://github.com/revmischa/rtsp-server).
سینتکس الزامی برای یک URL در پروتکل RTSP:
rtsp://<hostname>[:<port>]/<path>
گزینهها را میتوان در خط فرمان ffmpeg/ffplay، یا در کد از طریق "AVOption"ها یا در تابع "avformat_open_input" تنظیم کرد.
Muxer
گزینههای زیر پشتیبانی میشوند:
- rtsp_transport
- تنظیم
پروتکلهای
انتقال RTSP.
مقادیر زیر را میپذیرد:
- udp
- استفاده از UDP به عنوان پروتکل انتقال لایه زیرین.
- tcp
- استفاده از TCP (درهمتنیدگی درون کانال کنترلی RTSP) به عنوان پروتکل انتقال لایه زیرین.
مقدار پیشفرض 0 است.
- rtsp_flags
- تنظیم
فلگهای RTSP.
مقادیر زیر پذیرفته میشوند:
- latm
- استفاده از بستهبندی MP4A-LATM به جای MPEG4-GENERIC برای کدک صوتی AAC.
- rfc2190
- استفاده از بستهبندی RFC 2190 به جای RFC 4629 برای H.263.
- skip_rtcp
- گزارشهای فرستنده RTCP ارسال نشوند.
- h264_mode0
- استفاده از حالت 0 برای H.264 در پروتکل RTP.
- send_bye
- ارسال بستههای RTCP BYE هنگام اتمام کار.
مقدار پیشفرض 0 است.
- min_port
- تنظیم حداقل پورت محلی UDP. مقدار پیشفرض 5000 است.
- max_port
- تنظیم حداکثر پورت محلی UDP. مقدار پیشفرض 65000 است.
- buffer_size
- تنظیم حداکثر اندازه بافر سوکت به بایت.
- pkt_size
- تنظیم حداکثر اندازه بسته ارسالی (به بایت). مقدار پیشفرض 1472 است.
Demuxer
گزینههای زیر پشتیبانی میشوند:
- initial_pause
- در صورت تنظیم روی 1، پخش جریان بلافاصله آغاز نمیشود. مقدار پیشفرض 0 است.
- rtsp_transport
- تنظیم
پروتکلهای
انتقال RTSP.
مقادیر زیر را میپذیرد:
- udp
- استفاده از UDP به عنوان پروتکل انتقال لایه زیرین.
- tcp
- استفاده از TCP (درهمتنیدگی درون کانال کنترلی RTSP) به عنوان پروتکل انتقال لایه زیرین.
- udp_multicast
- استفاده از چندپخشی (مالتیکست) UDP به عنوان پروتکل انتقال لایه زیرین.
- http
- استفاده از تانل HTTP به عنوان پروتکل انتقال لایه زیرین، که برای عبور از پراکسیها مفید است.
- https
- استفاده از تانل HTTPS به عنوان پروتکل انتقال لایه زیرین، که برای عبور از پراکسیها مفید است و کاربرد گستردهای در ملاحظات امنیتی دارد.
میتوان چندین پروتکل انتقال زیرین را مشخص کرد؛ در این حالت آنها یکییکی امتحان میشوند (اگر برپایی یکی شکست بخورد، پروتکل بعدی امتحان میشود). برای ماکسر، فقط گزینههای tcp و udp پشتیبانی میشوند.
- rtsp_flags
- تنظیم
فلگهای RTSP.
مقادیر زیر پذیرفته میشوند:
- filter_src
- پذیرش بستهها صرفاً از آدرس و پورت همتای مذاکرهشده.
- listen
- عمل کردن به عنوان سرور و گوش دادن به اتصالات ورودی.
- prefer_tcp
- در صورتی که TCP برای انتقال RTP در RTSP در دسترس باشد، ابتدا TCP امتحان شود.
- satip_raw
- صدور جریان خام MPEG-TS به جای دیماکس کردن. این پرچم صرفاً جریان خام را با PAT/PMT/PIDهای دستنخورده اصلی مینویسد.
مقدار پیشفرض none است.
- allowed_media_types
- تنظیم
انواع
رسانه مجاز
برای پذیرش
از سرور.
فلگهای زیر پذیرفته میشوند:
بهطور پیشفرض تمام انواع رسانه پذیرفته میشوند.
- min_port
- تنظیم حداقل پورت محلی UDP. مقدار پیشفرض 5000 است.
- max_port
- تنظیم حداکثر پورت محلی UDP. مقدار پیشفرض 65000 است.
- listen_timeout
- تنظیم حداکثر مهلت زمانی (به ثانیه) برای برقراری اتصال اولیه. تنظیم مقدار بزرگتر از صفر برای listen_timeout باعث تنظیم گزینه rtsp_flags روی listen میشود. پیشفرض -1 است که به معنی مهلت زمانی نامحدود در هنگام فعال بودن حالت listen میباشد.
- reorder_queue_size
- تنظیم تعداد بستهها در بافر برای مدیریت بستههای نامرتبشده.
- timeout
- تنظیم مهلت زمانی ورودی/خروجی سوکت TCP به میکروثانیه.
- user_agent
- بازنویسی هدر User-Agent. اگر مشخص نشود، رشته شناسه libavformat به عنوان پیشفرض قرار میگیرد.
- buffer_size
- تنظیم حداکثر اندازه بافر سوکت به بایت.
هنگام دریافت داده روی UDP، دیماکسر تلاش میکند تا بستههای دریافتی را بازآرایی و مرتب کند (چرا که ممکن است نامرتب برسند یا کاملاً مفقود شوند). این رفتار را میتوان با تنظیم حداکثر تأخیر دیماکس روی صفر (از طریق فیلد "max_delay" در ساختار AVFormatContext) غیرفعال کرد.
هنگام تماشای جریانهای چندنرخبیتی Real-RTSP با استفاده از ffplay، جریانهای نمایشی را میتوان به ترتیب با "-vst" n و "-ast" n برای تصویر و صدا مشخص کرد، و میتوان با فشردن کلیدهای "v" و "a" آنها را در حین پخش تغییر داد.
مثالها (Examples)
مثالهای زیر همگی از ابزارهای ffplay و ffmpeg بهره میبرند:
- تماشای یک
جریان روی UDP
با حداکثر
تأخیر
بازآرایی 0.5
ثانیه:
ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
- تماشای یک
جریان
تانلشده
روی HTTP:
ffplay -rtsp_transport http rtsp://server/video.mp4
- ارسال یک
جریان به
صورت
بلادرنگ به
سرور RTSP، جهت
تماشای
دیگران:
ffmpeg -re -i <input> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
- دریافت یک
جریان به
صورت
بلادرنگ:
ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <output>
sap
پروتکل اعلان نشست یا Session Announcement Protocol (RFC 2974). این ساختار از نظر فنی یک گرداننده پروتکل در libavformat نیست، بلکه یک ماکسر و دیماکسر است. برای سیگنالدهی جریانهای RTP از طریق اعلان منظم فایلهای SDP برای جریانها روی یک پورت مجزا استفاده میشود.
Muxer
سینتکس یک URL پروتکل SAP دادهشده به ماکسر:
sap://<destination>[:<port>][?<options>]
بستههای RTP به نشانی destination روی پورت port، یا پورت 5004 در صورت عدم تعیین پورت ارسال میشوند. پارامتر options فهرستی جداشده با "&" است. گزینههای زیر پشتیبانی میشوند:
- announce_addr=address
- تعیین آدرس IP مقصد برای ارسال اعلانها به آن. در صورت حذف، اعلانها به آدرس مالتیکست متداول اعلان SAP یعنی 224.2.127.254 (sap.mcast.net)، یا ff0e::2:7ffe در صورتی که destination یک آدرس IPv6 باشد ارسال میشوند.
- announce_port=port
- تعیین پورت برای ارسال اعلانها؛ در صورت مشخص نشدن به طور پیشفرض 9875 است.
- ttl=ttl
- تعیین مقدار طول عمر (TTL) برای اعلانها و بستههای RTP؛ مقدار پیشفرض 255 است.
- same_port=0|1
- در صورت تنظیم روی 1، تمام جریانهای RTP روی یک جفت پورت مشترک ارسال میشوند. اگر روی صفر باشد (پیشفرض)، هر جریان روی پورتی یکتا ارسال میشود، به طوری که هر جریان روی پورتی با 2 شماره بالاتر از جریان قبلی ارسال میگردد. ابزارهای VLC/Live555 برای دریافت جریان نیازمند این هستند که این گزینه روی 1 تنظیم شده باشد. پشته RTP در libavformat جهت دریافت نیازمند آن است که تمام جریانها روی پورتهای یکتا ارسال شوند.
دستورات نمونه در ادامه آمده است:
پخش همگانی یک جریان روی زیرشبکه محلی جهت مشاهده در VLC:
ffmpeg -re -i <input> -f sap sap://224.0.0.255?same_port=1
به طور مشابه، برای تماشا در ffplay:
ffmpeg -re -i <input> -f sap sap://224.0.0.255
و برای تماشا در ffplay روی بستر IPv6:
ffmpeg -re -i <input> -f sap sap://[ff0e::1:2:3:4]
Demuxer
سینتکس یک URL پروتکل SAP دادهشده به دیماکسر:
sap://[<address>][:<port>]
پارامتر address آدرس مالتیکست برای گوش دادن به اعلانها است؛ در صورت حذف، آدرس پیشفرض 224.2.127.254 (sap.mcast.net) استفاده میشود. پارامتر port پورتی است که روی آن گوش داده میشود؛ در صورت حذف 9875 است.
دیماکسر روی آدرس و پورت مشخصشده به اعلانها گوش میدهد. به محض دریافت یک اعلان، سعی میکند آن جریان خاص را دریافت کند.
دستورات نمونه در ادامه آمده است:
پخش اولین جریان اعلانشده روی آدرس مالتیکست معمول SAP:
ffplay sap://
پخش اولین جریان اعلانشده روی آدرس مالتیکست پیشفرض IPv6 برای SAP:
ffplay sap://[ff0e::2:7ffe]
sctp
پروتکل انتقال کنترل جریان (SCTP - Stream Control Transmission Protocol).
سینتکس پذیرفتهشده URL:
sctp://<host>:<port>[?<options>]
شناسه options شامل فهرستی از گزینهها به فرم key=val است که با علامت & از یکدیگر جدا شدهاند. برای فرار کلیدها و مقادیر میتوان از کدگذاری استاندارد درصدی (و علامت مثبت برای فاصله) استفاده کرد.
گزینهها را میتوان از طریق گزینههای خط فرمان (یا در کد با "AVOption"ها) نیز تعیین نمود.
فهرست گزینههای پشتیبانیشده به شرح زیر است:
- listen
- در صورت تنظیم روی هر مقداری، برای اتصال ورودی گوش میدهد. اتصال خروجی به صورت پیشفرض انجام میشود.
- max_streams
- تنظیم حداکثر تعداد جریانها. بهطور پیشفرض هیچ محدودیتی تعیین نشده است.
shared
پوشش حافظه پنهان (کَش) امن از نظر ریسه (Thread-safe)، پایدار و بینفرایندی برای جریانهای ورودی. جریان ورودی را در پروندهای درون دایرکتوری مشخصشده کش میکند. این پروتکل شبیه به cache است، با این تفاوت که یک کش پایدار روی دیسک دارد که میتواند بین چندین فرایند یا دیماکسر حتی به صورت همزمان به اشتراک گذاشته شود.
نام پرونده کش از درهمسازی (هش کردن) URL ورودی به دست میآید؛ بنابراین اگر یک URL یکسان برای محتواهای مختلف استفاده شود (مثلاً در نتیجه استفاده از دادههای POST اضافی برای انتخاب شناسه جریان)، مقداری خطر تداخل وجود دارد. برای جلوگیری از این مشکل، اطمینان حاصل کنید که از این پروتکل صرفاً برای URLهایی استفاده میکنید که محتوا را به شکل یکتا شناسایی میکنند؛ در غیر این صورت ممکن است ترکیبی بههمریخته از منابع دریافت کنید.
گزینههای پذیرفتهشده عبارتند از:
- cache_dir
- مسیر دایرکتوری محل ذخیره پروندههای کش. این گزینه الزامی است.
- block_shift
- ضریب انتقال منطقی (log2) اندازه بلوک مورد استفاده برای خواندن/نوشتنهای داخلی. پیشفرض 15 است، یعنی بلوکهای 32 کیلوبایتی. اگر این مقدار با مقداری که هنگام ایجاد پرونده کش موجود مشخص شده مطابقت نداشته باشد، مقدار مشخصشده قبلی به جای آن استفاده خواهد شد.
- read_only
- اگر درست (true) باشد، از کش اشتراکی برای خواندن استفاده میکند اما هیچ بلوک جدیدی روی آن نمینویسد. پیشفرض نادرست (false) است. توجه داشته باشید که حتی با فعال بودن این گزینه، اگر پرونده کش از قبل وجود نداشته باشد، مقداردهی اولیه خواهد شد.
- cache_verify
- اگر درست (true) باشد، هر دادهای که از کش خوانده میشود را در برابر جریان ورودی زیرین اعتبارسنجی کرده و هرگونه عدم تطابق را گزارش میدهد. توجه داشته باشید که این کار عملاً لایه کش را بیفایده میسازد. این گزینه صرفاً برای اشکالزدایی است.
- cache_timeout
- در صورت
تنظیم روی
یک مقدار
غیرصفر،
حداکثر
زمان (به
میکروثانیه)
را برای
انتظار در
دسترس قرار
گرفتن
دادهها
مشخص
میکند، در
صورتی که
فرایند
دیگری
همزمان در
تلاش برای
دریافت و کش
کردن همان
بلوک باشد.
اگر این
مهلت به
پایان
برسد، فرض
میشود که
فرایند
دیگر ممکن
است در این
فاصله
متوقف شده
یا متلاشی
شده باشد.
اگر روی صفر تنظیم شود، هیچ انتظاری انجام نمیشود و تمام فرایندها بلافاصله برای واکشی همان بلوکهای گمشده توسط خودشان به رقابت میپردازند. پیشفرض 10000 (10 میلیثانیه) است.
- retry_errors
- اگر درست باشد (پیشفرض)، خطاهای موقت خواندن از جریان ورودی زیرین نادیده گرفته شده و مجدداً تلاش میشود. اگر نادرست باشد، هر بلوکی که خواندن از آن پیشتر ناموفق بوده به عنوان غیرقابل دسترسی دائمی در نظر گرفته میشود.
سینتکس URL به صورت زیر است:
shared:<URL>
srt
پروتکل انتقال مطمئن و امن هایویژن (SRT) از طریق libsrt.
سینتکس پشتیبانیشده برای نشانی اینترنتی SRT:
srt://<hostname>:<port>[?<options>]
بخش options شامل فهرستی از گزینهها به فرم key=val است که با علامت & از یکدیگر جدا شدهاند. برای گریز (اسکیپ) از کاراکترهای کلیدها و مقادیر میتوان از کدگذاری استاندارد درصدی (و استفاده از علامت مثبت برای فاصله) بهره برد.
گزینهها را میتوان از طریق گزینههای خط فرمان (یا در کد با استفاده از "AVOption"ها) نیز تعیین کرد.
فهرست گزینههای پشتیبانیشده به شرح زیر است:
- connect_timeout=milliseconds
- مهلت زمانی اتصال؛ پروتکل SRT با مهلت زمانی پیشفرض اتصال ۳ ثانیهای نمیتواند برای RTT بزرگتر از ۱۵۰۰ میلیثانیه (۲ تبادل دستتکانی) متصل شود. این گزینه بر حالتهای اتصال caller و rendezvous اعمال میگردد. مهلت زمانی اتصال ۱۰ برابر مقداری است که برای حالت rendezvous تنظیم شده است (که میتواند به عنوان یک راهکار موقت برای این مشکل اتصال در نسخههای قدیمیتر استفاده شود).
- ffs=bytes
- اندازه پرچم پرواز یا اندازه پنجره (Flight Flag Size)، بر حسب بایت. پارامتر FFS در واقع یک پارامتر داخلی است و نباید آن را کمتر از recv_buffer_size و mss تنظیم کنید. مقدار پیشفرض آن نسبتاً بزرگ است؛ بنابراین مگر در حالتی که بافر گیرنده بسیار بزرگی تنظیم کنید، نیازی به تغییر این گزینه نخواهید داشت. مقدار پیشفرض ۲۵۶۰۰ است.
- inputbw=bytes/seconds
- نرخ ورودی اسمی فرستنده، بر حسب بایت بر ثانیه. همراه با oheadbw زمانی که maxbw روی نسبی (0) تنظیم شده باشد برای محاسبه حداکثر نرخ ارسال در هنگام ارسال بستههای بازیابی در کنار جریان اصلی رسانه استفاده میشود: inputbw * (100 + oheadbw) / 100 اگر inputbw تعیین نشده باشد در حالی که maxbw روی نسبی (0) تنظیم است، نرخ ورودی واقعی درون کتابخانه محاسبه میگردد. مقدار پیشفرض 0 است.
- iptos=tos
- نوع سرویس IP (IP Type of Service). صرفاً بر فرستنده اعمال میشود. مقدار پیشفرض 0xB8 است.
- ipttl=ttl
- طول عمر IP (IP Time To Live). صرفاً بر فرستنده اعمال میشود. مقدار پیشفرض 64 است.
- latency=microseconds
- تأخیر تحویل بسته مبتنی بر برچسب زمان (Timestamp). برای مهار کردن جهشهای ارسال مجدد بستههای از دسترفته استفاده میشود. این پرچم هر دو گزینه rcvlatency و peerlatency را روی مقداری یکسان تنظیم میکند. توجه داشته باشید که پیش از نسخه 1.3.0 این تنها پرچم برای تنظیم تأخیر بود؛ با این حال این گزینه عملاً معادل تنظیم peerlatency در زمانی است که سمت مربوطه فرستنده باشد و rcvlatency زمانی که سمت مربوطه گیرنده باشد، و ارسال جریان دوطرفه پشتیبانی نمیشود.
- listen_timeout=microseconds
- تنظیم مهلت زمانی گوش دادن سوکت.
- maxbw=bytes/seconds
- حداکثر پهنای باند ارسال، بر حسب بایت بر ثانیه. -1 نامحدود (سقف CSRTCC برابر ۳۰ مگابیت بر ثانیه است) 0 نسبی با نرخ ورودی (به inputbw مراجعه کنید) >0 مقدار سقف مطلق مقدار پیشفرض 0 (نسبی) است.
- mode=caller|listener|rendezvous
- حالت اتصال. caller اتصال کلاینت را باز میکند. listener سرور را برای گوش دادن به اتصالات ورودی راهاندازی میکند. rendezvous از حالت اتصال دونقطهای Rendez-Vous استفاده میکند. مقدار پیشفرض caller است.
- mss=bytes
- حداکثر اندازه سگمنت (Maximum Segment Size)، بر حسب بایت. برای تخصیص بافر و محاسبه نرخ با استفاده از شمارنده بسته با فرض بستههای کاملاً پر استفاده میشود. کوچکترین MSS میان دو نقطه همتا استفاده خواهد شد. این مقدار در کل اینترنت به صورت پیشفرض 1500 است. این مقدار حداکثر اندازه بسته UDP است و تنها میتواند کاهش یابد، مگر اینکه از پیکربندیهای شبکه اختصاصی خاصی استفاده نمایید. مقدار پیشفرض 1500 است.
- nakreport=1|0
- اگر روی 1 تنظیم شود، گیرنده پیامهای `UMSG_LOSSREPORT` را به صورت دورهای ارسال میکند تا بسته مفقودشده مجدداً مخابره شود یا عمداً نادیده گرفته شود. مقدار پیشفرض 1 است.
- oheadbw=percents
- سربار پهنای باند بازیابی فراتر از نرخ ورودی، به درصد. به inputbw مراجعه کنید. مقدار پیشفرض 25% است.
- passphrase=string
- عبارت عبور رمزگذاری/رمزگشایی HaiCrypt، با طول ۱۰ تا ۷۹ نویسه. عبارت عبور یک راز مشترک میان فرستنده و گیرنده است. برای تولید کلید رمزنگاریِ کلید با بهرهگیری از PBKDF2 (تابع اشتقاق کلید مبتنی بر گذرواژه) استفاده میشود. تنها در صورتی به کار میرود که pbkeylen غیرصفر باشد. در گیرنده تنها زمانی استفاده میشود که دادههای دریافتی رمزنگاری شده باشند. عبارت عبور پیکربندیشده قابل بازیابی نیست (صرفاً نوشتنی است).
- enforced_encryption=1|0
- در صورت تعیین به عنوان درست (true)، هر دو طرف اتصال باید عبارت عبور یکسانی تنظیم کرده باشند (از جمله گذرواژه خالی، یعنی بدون رمزگذاری). اگر گذرواژه مطابقت نداشته باشد یا تنها یک سمت رمزگذارینشده باشد، اتصال رد میشود. پیشفرض درست (true) است.
- kmrefreshrate=packets
- تعداد بستههای ارسالی که پس از آن کلید رمزگذاری به یک کلید جدید سوئیچ میشود. پیشفرض -1 است. مقدار -1 به معنای خودکار است (0x1000000 در کتابخانه srt). دامنه این گزینه اعداد صحیح در بازه 0 تا "INT_MAX" میباشد.
- kmpreannounce=packets
- فاصله زمانی میان ارسال کلید رمزگذاری جدید و زمان رخداد سوئیچ به آن. این مقدار همچنین بر فاصله بعدی میان زمان سوئیچ و زمان منسوخ شدن کلید رمزگذاری قدیمی نیز اعمال میگردد. پیشفرض -1 است. مقدار -1 به معنای خودکار است (0x1000 در کتابخانه srt). دامنه این گزینه اعداد صحیح در بازه 0 تا "INT_MAX" میباشد.
- snddropdelay=microseconds
- تأخیر
اضافه
فرستنده
پیش از دور
انداختن
بستهها.
این تأخیر
به مقدار
فاصله
زمانی
پیشفرض
دور
انداختن
اضافه
میشود.
مقدار ویژه -1: بستهها به هیچ وجه در فرستنده دور انداخته نشوند.
- payload_size=bytes
- حداکثر اندازه اعلامشده بستهای را تعیین میکند که در طی یک فراخوانی واحد به تابع ارسال در حالت زنده (Live) منتقل میشود. اگر این مقدار استفاده نمیشود مقدار 0 را وارد کنید (که در حالت فایلی پیشفرض است). پیشفرض -1 (خودکار) است، که معمولاً نمایانگر MPEG-TS میباشد؛ اگر قصد دارید از SRT برای ارسال هر نوع دیگری از محتوا استفاده کنید، برای نمونه قرار دادن یک جریان زنده در فریمهای بسیار کوچک، میتوانید از حداکثر اندازه فریم بزرگتری استفاده کنید، هرچند نباید از 1456 بایت بیشتر باشد.
- pkt_size=bytes
- نام مستعار برای گزینه payload_size.
- peerlatency=microseconds
- مقدار تأخیر (مشابه آنچه در rcvlatency تشریح شد) که توسط سمت فرستنده به عنوان حداقل مقدار برای گیرنده تعیین میشود.
- pbkeylen=bytes
- طول کلید رمزنگاری فرستنده، بر حسب بایت. تنها میتواند روی 0، 16، 24 و 32 تنظیم شود. در صورتی که غیر از 0 باشد رمزگذاری فرستنده را فعال میکند. در گیرنده الزامی نیست (روی 0 تنظیم میشود)؛ اندازه کلید در دستتکانی HaiCrypt از فرستنده دریافت میگردد. مقدار پیشفرض 0 است.
- rcvlatency=microseconds
- زمانی که باید از لحظه ارسال بسته تا لحظه تحویل آن به برنامه گیرنده در تابع دریافت سپری گردد. این زمان باید بافری به قدر کافی بزرگ باشد تا زمان صرفشده برای ارسال، زمان RTT به شکلی نامنتظره افزایشیافته، و زمان لازم برای ارسال مجدد بسته گمشده UDP را پوشش دهد. مقدار تأخیر مؤثر برابر با بیشینه مقدار این گزینه و مقدار peerlatency تعیینشده توسط طرف مقابل خواهد بود. پیش از نسخه 1.3.0 این گزینه تنها با نام latency در دسترس بود.
- recv_buffer_size=bytes
- تنظیم اندازه بافر دریافت UDP، بر حسب بایت.
- send_buffer_size=bytes
- تنظیم اندازه بافر ارسال UDP، بر حسب بایت.
- timeout=microseconds
- تنظیم مهلتهای زمانی ایجاد خطا برای عملیات خواندن، نوشتن و اتصال. دقت کنید که کتابخانه SRT مهلتهای زمانی داخلی دارد که میتوانند به شکل مجزا کنترل شوند؛ مقدار تعیینشده در اینجا تنها یک سقف برای آنها است.
- tlpktdrop=1|0
- دور انداختن بستههای بیش از حد تأخیریافته (Too-late Packet Drop). در صورت فعال بودن در سمت گیرنده، بستههای گمشدهای را که به موقع تحویل داده نشدهاند نادیده میگیرد و به محض رسیدن زمان پخش بستههای بعدی، آنها را به برنامه تحویل میدهد. همچنین یک پاسخ تأیید ساختگی (fake ACK) به فرستنده ارسال میکند. هنگامی که در فرستنده فعال باشد و در همتای گیرنده نیز فعال گردد، فرستنده بستههای قدیمیتری را که شانسی برای رسیدن به موقع ندارند دور میاندازد. در صورتی که گیرنده از آن پشتیبانی کند، این قابلیت به طور خودکار در فرستنده فعال میشد.
- sndbuf=bytes
- تنظیم اندازه بافر ارسال، بر حسب بایت.
- rcvbuf=bytes
- تنظیم
اندازه
بافر
دریافت، بر
حسب بایت.
بافر دریافت نباید از ffs بزرگتر باشد.
- lossmaxttl=packets
- مقداری که تحمل بینظمی (Reorder Tolerance) میتواند تا آن رشد کند. هنگامی که تحمل بینظمی بزرگتر از 0 باشد، گزارش مفقودی بسته تا زمانی که آن تعداد بسته دریافت شوند به تأخیر میافتد. تحمل بینظمی هر بار که یک بسته "دیرهنگام" میرسد که به دلیل مخابره مجدد نبوده است (یعنی وقتی بستههای UDP معمولاً نامرتب میرسند)، به اندازه تفاوت میان آخرین شماره توالی و شماره توالی این بسته افزایش مییابد، و نباید بیشتر از مقدار این گزینه باشد. به صورت پیشفرض 0 است، به این معنی که این سازوکار غیرفعال بوده و گزارش مفقودی همیشه بلافاصله پس از بروز هرگونه "شکاف" در توالیها ارسال میشود.
- minversion
- حداقل نسخه
SRT که از سمت
همتا مورد
نیاز است.
اتصال به
همتایی که
این حداقل
نسخه را
برآورده
نکند
پذیرفته
نخواهد شد.
قالب نسخه در هگز به صورت 0xXXYYZZ برای x.y.z در شکل خوانای انسانی است.
- streamid=string
- رشتهای با حداکثر ۵۱۲ نویسه که میتواند پیش از اتصال روی سوکت تنظیم شود. این شناسه جریان میتواند توسط سمت شنونده از سوکتی که توسط srt_accept بازگردانده شده و توسط سوکتی با این شناسه متصل گردیده، بازیابی شود. پروتکل SRT هیچ تفسیر خاصی بر روی محتویات این رشته اعمال نمیکند. این گزینه در اتصال Rendezvous بیمعنی است؛ نتیجه ممکن است صرفاً این باشد که یکی از طرفین مقدار طرف دیگر را بازنویسی کند و این که کدام یک حفظ شود تصادفی است.
- srt_streamid=string
- نام مستعار برای streamid به منظور جلوگیری از تداخل با گزینه خط فرمان ffmpeg.
- smoother=live|file
- نوع هموارساز (Smoother) مورد استفاده برای انتقال روی آن سوکت، که مسئول انتقال و کنترل ازدحام است. نوع Smoother باید در هر دو طرف اتصال دقیقاً یکسان باشد، در غیر این صورت اتصال رد خواهد شد.
- messageapi=1|0
- در صورت
فعال بودن،
این سوکت از
رابط
کاربری
پیام (Message API)
استفاده
میکند، در
غیر این
صورت از
رابط بافر (Buffer
API) استفاده
خواهد کرد.
توجه داشته
باشید که در
حالت زنده
(به گزینه
transtype مراجعه
کنید) تنها Message
API موجود است.
در حالت
فایلی
میتوانید
یکی از دو
حالت زیر را
انتخاب
نمایید:
رابط کاربری جریان یا Stream API (حالت پیشفرض، زمانی که این گزینه نادرست باشد): در این حالت میتوانید با یک دستور ارسال به هر میزان که مایلید داده ارسال کنید، یا حتی از توابع اختصاصی برای خواندن مستقیم از فایل استفاده نمایید. سازوکار داخلی کنترل سرعت و ترافیک را مدیریت خواهد کرد. در هنگام دریافت نیز میتوانید هر اندازه داده را که مایلید واکشی کنید؛ دادههای استخراجنشده برای فراخوانی بعدی منتظر خواهند ماند. در حالت جریانی هیچ مرزی میان بخشهای داده وجود ندارد.
رابط کاربری پیام یا Message API: در این حالت تک دستور ارسالی شما دقیقاً یک قطعه داده دارای مرز مشخص (یک پیام) را منتقل میکند. بر خلاف حالت زنده، این پیام میتواند در میان چندین بسته UDP گسترش یابد و تنها محدودیت اندازه آن، جا شدن کامل آن در بافر ارسال است. گیرنده باید از بافری به قدر کافی بزرگ برای دریافت پیام بهره ببرد، در غیر این صورت پیام تحویل داده نخواهد شد. در صورتی که پیام ناقص باشد (تمام بستهها نرسیده باشند یا بستهای گم شده باشد) تحویل داده نخواهد شد.
- transtype=live|file
- تنظیم نوع
انتقال
برای سوکت؛
به ویژه
تعیین این
گزینه
چندین
پارامتر
دیگر را روی
مقادیر
پیشفرض
آنها
مطابق با
الزامات یک
نوع انتقال
خاص تنظیم
مینماید.
حالت live: گزینهها را مشابه انتقال زنده تنظیم میکند. در این حالت باید در هر دستور ارسال تنها به میزانی داده ارسال کنید که درون یک بسته UDP جا شود، و محدود به مقداری باشد که در ابتدا در payload_size تعریف شده است (مقدار 1316 در این حالت پیشفرض است). هیچ کنترل سرعتی در این حالت وجود ندارد و تنها کنترل پهنای باند وجود دارد، در صورتی که تنظیم شده باشد، تا پهنای باند فراتر از ارسالهای سربار (بستههای کنترلی و ارسال مجدد) نرود.
حالت file: گزینهها را برای انتقال غیرزنده تنظیم مینماید. برای توضیحات تکمیلی به messageapi مراجعه کنید.
- linger=seconds
- تعداد ثانیههایی که سوکت هنگام بسته شدن در انتظار دادههای ارسالنشده میماند. مقدار پیشفرض -1 است. مقدار -1 به مفهوم خودکار است (خاموش با 0 ثانیه در حالت زنده، روشن با 180 ثانیه در حالت فایلی). دامنه مقادیر برای این گزینه اعداد صحیح در بازه 0 تا "INT_MAX" میباشد.
- tsbpd=1|0
- در صورت فعال بودن، از حالت تحویل بسته مبتنی بر برچسب زمان (Timestamp-based Packet Delivery) استفاده میکند. رفتار پیشفرض وابسته به نوع انتقال است: در حالت زنده فعال و در حالت فایلی غیرفعال میباشد.
- ipv6only=1|0
- پذیرش یا عدم پذیرش IPv4 در زمان استفاده از آدرس همهپذیر (wildcard) در بستر IPv6. این مورد باید هنگام گوش دادن روی آدرس همهپذیر IPv6 تنظیم شود.
برای اطلاعات بیشتر ببینید: https://github.com/Haivision/srt.
srtp
پروتکل امن انتقال بلادرنگ (SRTP - Secure Real-time Transport Protocol).
گزینههای پذیرفتهشده عبارتند از:
- srtp_in_suite
- srtp_out_suite
- انتخاب
مجموعههای
رمزنگاری
ورودی و
خروجی.
مقادیر پشتیبانیشده:
- srtp_in_params
- srtp_out_params
- تنظیم پارامترهای رمزنگاری ورودی و خروجی، که توسط یک نمای کدگذاریشده با base64 از یک بلوک باینری بیان میشوند. ۱۶ بایت اول این بلوک باینری به عنوان کلید اصلی (master key) و ۱۴ بایت بعدی به عنوان سالت اصلی (master salt) استفاده میشوند.
subfile
استخراج مجازی بخشی از یک پرونده یا جریان دیگر. جریان زیرین باید قابلیت پرش و جستجو (seekable) را داشته باشد.
گزینههای پذیرفتهشده:
- start
- آفست شروع بخش استخراجشده، بر حسب بایت.
- end
- آفست پایان بخش استخراجشده، بر حسب بایت. در صورت تنظیم روی 0، تا انتهای پرونده استخراج میشود.
مثالها:
استخراج یک فصل از فایل VOB یک DVD (بخشهای شروع و پایان به صورت خارجی محاسبه شده و در 2048 ضرب شدهاند):
subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB
پخش یک فایل AVI مستقیماً از درون یک آرشیو TAR:
subfile,,start,183241728,end,366490624,,:archive.tar
پخش یک فایل MPEG-TS از آفست آغازین تا انتهای فایل:
subfile,,start,32815239,end,0,,:video.ts
tee
نوشتن خروجی روی چندین پروتکل. خروجیهای مجزا با علامت | از یکدیگر تفکیک میشوند.
tee:file://path/to/local/this.avi|file://path/to/local/that.avi
tcp
پروتکل کنترل انتقال (TCP - Transmission Control Protocol).
سینتکس الزامی برای یک نشانی اینترنتی (URL) در پروتکل TCP:
tcp://<hostname>:<port>[?<options>]
بخش options شامل فهرستی از گزینهها به فرم key=val است که با علامت & از یکدیگر تفکیک شدهاند. برای گریز (اسکیپ) از کاراکترها در کلیدها و مقادیر میتوان از کدگذاری استاندارد درصدی (و استفاده از علامت مثبت برای فاصله) استفاده کرد.
گزینهها را میتوان از طریق گزینههای خط فرمان (یا درون کد از طریق "AVOption"ها) نیز تعیین کرد.
فهرست گزینههای پشتیبانیشده به شرح زیر است:
- listen=2|1|0
- گوش دادن برای یک اتصال ورودی. مقدار 0 شنود را غیرفعال میکند، مقدار 1 شنود را در حالت تککلاینتی فعال میسازد، و مقدار 2 شنود را در حالت چندکلاینتی فعال میکند. مقدار پیشفرض 0 است.
- local_addr=addr
- آدرس IP محلی یک رابط شبکه که برای اتصال سوکت tcp استفاده میشود.
- local_port=port
- پورت محلی مورد استفاده برای اتصال سوکت tcp.
- timeout=microseconds
- تنظیم مهلت
زمانی صدور
خطا، بر حسب
میکروثانیه.
این گزینه تنها در حالت خواندن کاربرد دارد: چنانچه در بازه زمانی طولانیتر از این مقدار هیچ دادهای دریافت نشود، خطا صادر میشود.
- listen_timeout=milliseconds
- تنظیم مهلت زمانی شنود، بر حسب میلیثانیه.
- recv_buffer_size=bytes
- تنظیم اندازه بافر دریافت، بر حسب بایت.
- send_buffer_size=bytes
- تنظیم اندازه بافر ارسال، بر حسب بایت.
- tcp_nodelay=1|0
- تنظیم TCP_NODELAY
برای
غیرفعالسازی
الگوریتم
نیگل (Nagle's algorithm).
مقدار
پیشفرض 0
است.
تذکر: نوشتن روی سوکت در حال حاضر برای به حداقل رساندن فراخوانیهای سیستمی بهینهسازی نشده است و این امر بهرهوری / اثرگذاری TCP_NODELAY را کاهش میدهد.
- tcp_mss=bytes
- تنظیم حداکثر اندازه قطعه (MSS) برای بستههای خروجی TCP، بر حسب بایت.
مثال زیر چگونگی برپایی یک اتصال شنونده TCP را با ffmpeg نشان میدهد که سپس با ffplay مورد دسترسی قرار میگیرد:
ffmpeg -i <input> -f <format> tcp://<hostname>:<port>?listen ffplay tcp://<hostname>:<port>
tls
امنیت لایه انتقال (TLS - Transport Layer Security) / لایه سوکتهای امن (SSL - Secure Sockets Layer).
سینتکس الزامی برای یک URL در پروتکل TLS/SSL:
tls://<hostname>:<port>[?<options>]
بخش options شامل فهرستی از گزینهها به فرم key=val است که با علامت & از یکدیگر تفکیک شدهاند. برای گریز از کاراکترها در کلیدها و مقادیر میتوان از کدگذاری درصدی استاندارد (و علامت مثبت برای فاصله) استفاده کرد.
گزینهها را میتوان از طریق گزینههای خط فرمان (یا درون کد از طریق "AVOption"ها) نیز تعیین نمود.
فهرست گزینههای پشتیبانیشده به شرح زیر است:
- ca_file, cafile=filename
- پروندهای حاوی گواهیهای ریشه مرجع صدور گواهی (CA) که به عنوان گواهیهای مورد اعتماد در نظر گرفته میشوند. اگر کتابخانه پیوندشده TLS شامل یک پیشفرض باشد ممکن است نیازی به تعیین این گزینه برای کارکرد اعتبارسنجی نباشد، اما تمامی کتابخانهها و پیکربندیها حاوی پیشفرضهای داخلی نیستند. این پرونده باید در قالب OpenSSL PEM باشد.
- tls_verify, verify=1|0
- در صورت
فعال بودن،
تلاش
میکند
همتایی را
که با آن در
حال ارتباط
هستیم
تأیید
اعتبار کند.
توجه کنید
در صورت
استفاده از
OpenSSL، در حال
حاضر این
گزینه
صرفاً
اطمینان
حاصل
میکند که
گواهی همتا
توسط یکی از
گواهیهای
ریشه موجود
در پایگاه
داده CA امضا
شده باشد،
اما
اعتبارسنجی
نمیکند که
آیا گواهی
واقعاً با
نام
میزبانی که
قصد اتصال
به آن را
داریم
تطابق دارد
یا خیر (در
سایر
بکاندها،
نام میزبان
نیز
اعتبارسنجی
میشود).
این گزینه به صورت پیشفرض فعال است. اعتبارسنجی همتا نیازمند یک پایگاه داده CA است که در برخی حالات باید توسط فراخواننده ارائه گردد.
- cert_file, cert=filename
- پروندهای حاوی گواهی برای استفاده در دستتکانی (handshake) با طرف همتا. (هنگام عمل به عنوان سرور در حالت listen، این مورد معمولاً توسط طرف مقابل الزامی است، در حالی که گواهیهای کلاینت تنها در تنظیمات خاصی اجباری میباشند.)
- key_file, key=filename
- پروندهای حاوی کلید خصوصی متناظر با گواهی.
- listen=1|0
- در صورت فعال بودن، برای اتصالات ورودی روی پورت مشخصشده گوش فرا میدهد و در دستتکانی نقش سرور را به جای نقش کلاینت بر عهده میگیرد.
- http_proxy
- پراکسی HTTP جهت تانل زدن از طریق آن، به عنوان مثال "http://example.com:1234". پراکسی باید از متد CONNECT پشتیبانی کند.
خطوط فرمان نمونه:
برای ساخت یک سرور TLS/SSL که یک جریان ورودی را ارائه میدهد:
ffmpeg -i <input> -f <format> tls://<hostname>:<port>?listen&cert=<server.crt>&key=<server.key>
برای پخش یک جریان از سرور TLS/SSL با بهرهگیری از ffplay:
ffplay tls://<hostname>:<port>
dtls
امنیت لایه انتقال دیتاگرام (DTLS - Datagram Transport Layer Security).
سینتکس الزامی برای نشانی اینترنتی DTLS:
dtls://<hostname>:<port>[?<options>]
بخش options شامل فهرستی از گزینهها به فرم key=val است که با علامت & از یکدیگر تفکیک شدهاند. برای گریز از کاراکترها در کلیدها و مقادیر میتوان از کدگذاری استاندارد درصدی (و علامت مثبت برای فاصله) استفاده کرد.
گزینهها را میتوان از طریق گزینههای خط فرمان (یا درون کد با "AVOption"ها) نیز تنظیم نمود.
پروتکل DTLS اغلب گزینهها را با TLS به اشتراک دارد، اما به جای بستر TCP بر روی UDP عمل میکند.
فهرست گزینههای پشتیبانیشده به شرح زیر است:
- ca_file, cafile=filename
- پروندهای شامل گواهیهای ریشه مرجع صدور گواهی (CA) برای معتبر شناختن. اگر کتابخانه TLS پیوندشده دارای یک مقدار پیشفرض باشد شاید نیازی به تعیین این گزینه برای اعتبارسنجی نباشد، اما تمام کتابخانهها و تنظیمات پیشفرضهای تعبیهشده ندارند. این پرونده باید در قالب OpenSSL PEM باشد.
- tls_verify, verify=1|0
- در صورت
فعال بودن،
تلاش
میکند
همتایی را
که با آن
ارتباط
داریم
اعتبارسنجی
کند. توجه
داشته
باشید که با
استفاده از
OpenSSL، در حال
حاضر این
گزینه
صرفاً
اطمینان
مییابد که
گواهی همتا
توسط یکی از
گواهیهای
ریشه در
پایگاه
داده CA امضا
شده باشد،
اما
اعتبارسنجی
نمیکند که
آیا گواهی
با نام
میزبانی که
قصد اتصال
به آن را
داریم
تطابق دارد
یا خیر.
این گزینه به صورت پیشفرض فعال است. اعتبارسنجی همتا مستلزم وجود پایگاه داده CA است که در پارهای از موارد باید توسط فراخواننده تأمین شود.
- cert_file, cert=filename
- پروندهای حاوی یک گواهی جهت استفاده در فرایند دستتکانی با همتا. (هنگام عمل در نقش سرور در حالت شنود listen، این گزینه بیشتر توسط همتا الزامی است، در حالی که گواهیهای کلاینت تنها در شرایط خاصی اجباری میشوند.)
- key_file, key=filename
- پروندهای شامل کلید خصوصی مربوط به گواهی.
- cert_pem=string
- رشته PEM گواهی.
- key_pem=string
- رشته PEM کلید خصوصی.
- listen=1|0
- در صورت فعال بودن، برای اتصالات روی پورت ارائهشده گوش فرا میدهد و در دستتکانی نقش سرور را به جای نقش کلاینت به عهده میگیرد.
- mtu=size
- تنظیم واحد بیشینه انتقال (MTU) برای بستههای DTLS.
- use_srtp=1|0
- فعالسازی افزونه use_srtp در پروتکل DTLS. این گزینه در برنامههای کاربردی WebRTC برای برقراری کلیدهای رمزنگاری SRTP از طریق دستتکانی DTLS کاربرد دارد. پیشفرض غیرفعال است.
- external_sock=1|0
- استفاده از یک سوکت خارجی به جای ایجاد سوکتی جدید. ارسال این گزینه تنها هنگام تعامل با کد از طریق رابط برنامهنویسی کاربردی (API) منطقی است؛ فعال کردن این مورد از طریق رابط خط فرمان (CLI) موجب شکست فوری خواهد شد. پیشفرض غیرفعال است.
دستورات خط فرمان نمونه:
جهت ایجاد یک سرور DTLS:
ffmpeg -listen 1 -i dtls://<hostname>:<port> <output>
جهت ایجاد یک کلاینت DTLS و مخابره دادهها به سرور:
ffmpeg -i <input> -f <format> dtls://<hostname>:<port>
udp
پروتکل دیتاگرام کاربر (UDP - User Datagram Protocol).
سینتکس الزامی برای یک نشانی در پروتکل UDP:
udp://<hostname>:<port>[?<options>]
بخش options شامل فهرستی از گزینهها به فرم key=val است که با علامت & جدا شدهاند. برای گریز از کاراکترها در کلیدها و مقادیر میتوان از کدگذاری استاندارد درصدی (و علامت مثبت برای فاصله) استفاده کرد.
گزینهها را میتوان همچنین از طریق گزینههای خط فرمان (یا در کد با استفاده از "AVOption"ها) تعیین نمود.
در صورتی که چندریسمانی (threading) روی سیستم فعال باشد، یک بافر حلقوی برای ذخیره دادههای دریافتی استفاده میشود که باعث کاهش اتلاف داده در اثر سرریز بافر سوکت UDP میگردد. گزینههای fifo_size و overrun_nonfatal مربوط به این بافر میباشند.
فهرست گزینههای پشتیبانیشده در ادامه آمده است:
- buffer_size=size
- تنظیم حداکثر اندازه بافر سوکت UDP بر حسب بایت. این گزینه بسته به کاربرد سوکت، برای تعیین اندازه بافر دریافت یا ارسال استفاده میشود. مقدار پیشفرض برای خروجی 32 کیلوبایت و برای ورودی 384 کیلوبایت است. همچنین به fifo_size مراجعه کنید.
- bitrate=bitrate
- در صورت تنظیم روی مقداری غیرصفر، خروجی در صورتی که ورودی بستههای کافی برای تداوم آن را داشته باشد دارای نرخ بیت ثابت معین خواهد بود.
- burst_bits=bits
- در زمان استفاده از bitrate، این گزینه حداکثر تعداد بیتها را در جهشهای ناگهانی بسته (packet bursts) تعیین میکند.
- localport=port
- بازنویسی پورت UDP محلی جهت اتصال (bind).
- localaddr=addr
- آدرس IP محلی یک رابط شبکه که برای ارسال بستهها یا پیوستن به گروههای مالتیکست استفاده میشود.
- pkt_size=size
- تنظیم اندازه بستههای UDP بر حسب بایت.
- reuse=1|0
- مجاز دانستن یا ممنوع کردن صریح استفاده مجدد از سوکتهای UDP.
- ttl=ttl
- تنظیم مقدار طول عمر (TTL) (تنها برای بسترهای چندپخشی یا مالتیکست).
- dscp=dscp
- تنظیم فیلد ۶ بیتی DSCP برای بستههای خروجی.
- connect=1|0
- مقداردهی اولیه سوکت UDP با تابع connect(). در این حالت، آدرس مقصد نمیتواند بعداً با ff_udp_set_remote_url تغییر یابد. اگر آدرس مقصد در ابتدا مشخص نباشد، این گزینه میتواند در ff_udp_set_remote_url نیز مشخص گردد. این امر امکان پی بردن به آدرس مبدأ را برای بستهها توسط getsockname فراهم میسازد، و باعث میشود در صورت دریافت وضعیت "مقصد غیرقابل دسترس است"، عملیات نوشتن با کد خطای AVERROR(ECONNREFUSED) بازگردد. برای دریافت، این وضعیت این مزیت را ایجاد میکند که بستهها صرفاً از آدرس/پورت مشخصشده همتا دریافت شوند.
- sources=address[,address]
- دریافت بستهها صرفاً از آدرسهای مشخصشده. در حالت مالتیکست، تنها در ترافیک مالتیکست ناشی از این آدرسها مشترک میشود.
- block=address[,address]
- نادیده گرفتن بستههای ارسالشده از آدرسهای تعیینشده. در حالت مالتیکست، این آدرسهای مبدأ را از اشتراک مالتیکست مستثنی میسازد.
- fifo_size=units
- تنظیم اندازه بافر حلقوی دریافت UDP، که بر حسب تعداد بستههایی با اندازه ۱۸۸ بایت بیان میشود. در صورت عدم تعیین، مقدار پیشفرض 7*4096 خواهد بود.
- overrun_nonfatal=1|0
- تداوم بقا و ادامه کار در صورت رخداد سرریز بافر حلقوی دریافت UDP. مقدار پیشفرض 0 است.
- timeout=microseconds
- تنظیم مهلت
زمانی صدور
خطا، بر حسب
میکروثانیه.
این گزینه صرفاً در حالت خواندن مطرح است: اگر در بازه زمانی بیش از این مقدار هیچ دادهای نرسد، خطا صادر میشود.
- broadcast=1|0
- مجاز یا
غیرمجاز
ساختن صریح
ارسال
همگانی (broadcast)
در UDP.
توجه کنید که ارسال همگانی ممکن است در شبکههایی که مجهز به محافظت در برابر طوفان برودکست هستند به درستی کار نکند.
مثالها (Examples)
- استفاده از
ffmpeg جهت
ارسال
جریان بر
بستر UDP به یک
نقطه
پایانی
راهدور:
ffmpeg -i <input> -f <format> udp://<hostname>:<port>
- استفاده از
ffmpeg جهت
ارسال
جریان در
قالب mpegts بر
بستر UDP با
استفاده از
بستههای
۱۸۸ بایتی و
یک بافر
ورودی بزرگ:
ffmpeg -i <input> -f mpegts udp://<hostname>:<port>?pkt_size=188&buffer_size=65535
- استفاده از
ffmpeg جهت
دریافت
داده روی UDP
از یک نقطه
پایانی
راهدور:
ffmpeg -i udp://[<multicast-address>]:<port> ...
unix
سوکت محلی یونیکس (Unix local socket).
سینتکس الزامی برای یک URL سوکت یونیکس:
unix://<filepath>
پارامترهای زیر میتوانند از طریق گزینههای خط فرمان (یا درون کد از طریق "AVOption"ها) تنظیم شوند:
- timeout
- مهلت زمانی بر حسب میلیثانیه.
- listen
- ایجاد سوکت یونیکس در حالت شنود (listening).
- type
- انتخاب نوع سوکت.
- stream Corresponds to SOCK_STREAM (reliable stream-oriented)
- متناظر با SOCK_STREAM (جریانمحور و مطمئن).
- datagram Corresponds to SOCK_DGRAM (unreliable packet-oriented)
- متناظر با SOCK_DGRAM (بستهمحور و نامطمئن).
- seqpacket Corresponds to SOCK_SEQPACKET (reliable packet-oriented)
- متناظر با SOCK_SEQPACKET (بستهمحور و مطمئن).
- pkt_size
- حداکثر اندازه بسته برای سوکتهای بستهمحور (SOCK_DGRAM و SOCK_SEQPACKET). در صورت بزرگتر بودن از صفر، این مقدار به عنوان "max_packet_size" استفاده میشود. برای SOCK_STREAM نادیده گرفته میشود. مقدار پیشفرض 0 است.
zmq
پیامرسانی ناهمگام ZeroMQ با استفاده از کتابخانه libzmq.
این کتابخانه از ارسال جریانهای تکپخشی (unicast) به چندین کلاینت بدون وابستگی به یک سرور خارجی پشتیبانی میکند.
سینتکس الزامی برای ارسال جریان یا اتصال به یک جریان:
zmq:tcp://ip-address:port
مثال: ایجاد یک جریان محلی (localhost) روی پورت 5555:
ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555
چندین کلاینت میتوانند با دستور زیر به جریان متصل شوند:
ffplay zmq:tcp://127.0.0.1:5555
ارسال جریان به چندین کلاینت با استفاده از الگوی نشر/اشتراک (Pub-Sub) پروتکل ZeroMQ پیادهسازی شده است. سمت سرور به یک پورت پیوند خورده (bind) و دادهها را منتشر مینماید. کلاینتها (از طریق آدرس IP و پورت) به سرور وصل شده و در جریان مشترک میشوند. ترتیب روشن شدن سرور و کلاینت عموماً اهمیتی ندارد.
دستور ffmpeg برای پشتیبانی از این پروتکل باید با گزینه --enable-libzmq کامپایل شده باشد.
گزینهها را میتوان در خط فرمان ffmpeg/ffplay تنظیم کرد. گزینههای زیر پشتیبانی میشوند:
- pkt_size
- تحمیل حداکثر اندازه بسته برای ارسال/دریافت داده. مقدار پیشفرض ۱۳۱٬۰۷۲ بایت است. در سمت سرور، این مقدار حداکثر اندازه بستههای ارسالی از طریق ZeroMQ را مشخص میکند. در کلاینتها، این گزینه اندازه یک بافر داخلی را برای دریافت بستهها معین میسازد. دقت کنید که مقدار pkt_size در کلاینتها باید برابر یا بزرگتر از pkt_size در سرور باشد؛ در غیر این صورت پیام دریافتی ممکن است ناقص مانده و منجر به خطاهای دیکود شود.
گزینههای دستگاه (DEVICE OPTIONS)
کتابخانه libavdevice رابطی یکسان با libavformat ارائه میدهد. به بیان دیگر، یک دستگاه ورودی مشابه یک دیماکسر و یک دستگاه خروجی مشابه یک ماکسر انگاشته میشود، و رابط کاربری و گزینههای عمومی دستگاه نیز همان مواردی هستند که توسط libavformat ارائه شدهاند (به راهنمای ffmpeg-formats مراجعه کنید).
علاوه بر این، هر دستگاه ورودی یا خروجی ممکن است از گزینههای اصطلاحاً اختصاصی (private options) پشتیبانی کند که مختص آن مؤلفه به شمار میروند.
گزینهها ممکن است با تعیین -option value در ابزارهای FFmpeg، یا با تنظیم صریح مقدار در گزینههای "AVFormatContext" دستگاه، یا با بهرهگیری از رابط برنامهنویسی libavutil/opt.h برای مصارف برنامهنویسی تنظیم گردند.
دستگاههای ورودی (INPUT DEVICES)
دستگاههای ورودی عناصر پیکربندیشدهای در FFmpeg هستند که دسترسی به دادههای بهدستآمده از یک دستگاه چندرسانهای متصل به سیستم شما را ممکن میسازند.
هنگامی که بیلد FFmpeg خود را پیکربندی میکنید، تمامی دستگاههای ورودیِ پشتیبانیشده به صورت پیشفرض فعال هستند. میتوانید با استفاده از گزینه پیکربندی "--list-indevs" فهرستی از تمام موارد موجود را مشاهده کنید.
میتوانید با استفاده از گزینه پیکربندی "--disable-indevs" تمامی دستگاههای ورودی را غیرفعال کنید و با استفاده از گزینه "--enable-indev=INDEV" دستگاهی را به شکل گزینشی فعال نمایید، یا اینکه دستگاه ورودی خاصی را با گزینه "--disable-indev=INDEV" از کار بیندازید.
گزینه "-devices" در ابزارهای ff* فهرست دستگاههای ورودی پشتیبانیشده را نمایش خواهد داد.
شرح دستگاههای ورودی موجود در ادامه آورده شده است.
alsa
دستگاه ورودی ALSA (معماری پیشرفته صوتی لینوکس - Advanced Linux Sound Architecture).
جهت فعالسازی این دستگاه ورودی در هنگام پیکربندی، نیازمند بسته libasound نصبشده بر روی سیستم خود هستید.
این دستگاه امکان ضبط از یک دستگاه ALSA را فراهم میآورد. نام دستگاه مورد نظر برای ضبط باید شناسه کارت ALSA باشد.
یک شناسه ALSA دارای سینتکس زیر است:
hw:<CARD>[,<DEV>[,<SUBDEV>]]
که در آن مؤلفههای DEV و SUBDEV اختیاری میباشند.
سه آرگومان (به ترتیب: CARD، DEV و SUBDEV) شماره یا شناسه کارت، شماره دستگاه و شماره زیردستگاه را مشخص میکنند (-1 به معنی هر کدام است).
جهت مشاهده فهرست کارتهایی که در حال حاضر توسط سیستم شما شناسایی شدهاند پروندههای /proc/asound/cards و /proc/asound/devices را بررسی نمایید.
برای نمونه جهت ضبط با ffmpeg از یک دستگاه ALSA با شناسه کارت 0، میتوانید دستور زیر را اجرا کنید:
ffmpeg -f alsa -i hw:0 alsaout.wav
برای کسب اطلاعات بیشتر ببینید: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
گزینهها (Options)
- sample_rate
- تنظیم نرخ نمونهبرداری بر حسب هرتز. پیشفرض 48000 است.
- channels
- تنظیم تعداد کانالها. پیشفرض 2 است.
android_camera
دستگاه ورودی دوربین اندروید.
این دستگاه ورودی از واسط برنامهنویسی Camera2 NDK اندروید بهره میبرد که در دستگاههای دارای سطح API نسخه ۲۴ به بالا در دسترس است. دردسترس بودن android_camera حین پیکربندی به شکل خودکار تشخیص داده میشود.
این دستگاه امکان تصویربرداری از تمامی دوربینهای یک دستگاه اندرویدی را که در Camera2 NDK API یکپارچهسازی شدهاند مهیا میکند.
دوربینهای موجود به صورت داخلی شمارهگذاری میشوند و میتوان آنها را با شناسه camera_index برگزید. رشته نام پرونده ورودی نادیده گرفته میشود.
به طور کلی دوربین پشت دارای اندیس 0 و دوربین جلو دارای اندیس 1 میباشد.
گزینهها (Options)
- video_size
- تنظیم ابعاد ویدیو که به صورت رشتهای نظیر 640x480 یا hd720 داده میشود. در صورتی که ابعاد درخواستی موجود نباشد یا به طور پیشفرض، به نخستین پیکربندی در دسترس گزارششده توسط اندروید بازمیگردد.
- framerate
- تنظیم نرخ فریم ویدیو. در صورتی که نرخ فریم درخواستی در دسترس نباشد یا به طور پیشفرض (-1)، به نخستین پیکربندی در دسترس گزارششده توسط اندروید بازمیگردد.
- camera_index
- تنظیم اندیس دوربین مورد استفاده. پیشفرض 0 است.
- input_queue_size
- تنظیم حداکثر تعداد فریمها برای بافرسازی. پیشفرض 5 است.
avfoundation
دستگاه ورودی AVFoundation.
چارچوب AVFoundation چارچوب توصیهشده فعلی از سوی شرکت اپل برای دریافت جریانهای رسانهای در OSX >= 10.7 و همچنین iOS است.
نام پرونده ورودی باید با سینتکس زیر مشخص شود:
-i "[[VIDEO]:[AUDIO]]"
مدخل اول ورودی ویدیو و مدخل دوم ورودی صدا را انتخاب میکند. جریان باید از طریق نام دستگاه یا اندیس دستگاه، آنگونه که در فهرست دستگاهها نمایش داده شده است، مشخص شود. به عنوان جایگزین، دستگاه ورودی ویدیویی و/یا صوتی را میتوان بر اساس اندیس با استفاده از
B<-video_device_index E<lt>INDEXE<gt>>
و/یا
B<-audio_device_index E<lt>INDEXE<gt>>
انتخاب نمود، که این کار هر نام یا اندیس دستگاه مشخصشده در نام پرونده ورودی را بازنویسی میکند.
تمامی دستگاههای موجود را میتوان با استفاده از -list_devices true برشمرد که کلیه نامهای دستگاه و اندیسهای مربوطه را فهرست میکند.
دو نام مستعار برای نام دستگاه وجود دارد:
- "default"
- انتخاب دستگاه پیشفرض AVFoundation از نوع متناظر.
- "none"
- عدم ضبط نوع رسانه متناظر. این معادل مشخص کردن نام دستگاه یا اندیس خالی است.
گزینهها (Options)
چارچوب AVFoundation از گزینههای زیر پشتیبانی میکند:
- -list_devices <TRUE|FALSE>
- در صورت تنظیم روی true، فهرستی از تمامی دستگاههای ورودی در دسترس با نمایش کلیه نامها و اندیسهای دستگاه ارائه میشود.
- -video_device_index <INDEX>
- مشخص کردن دستگاه ویدیو از طریق اندیس آن. هر مقداری را که در نام پرونده ورودی تعیین شده باشد بازنویسی مینماید.
- -audio_device_index <INDEX>
- مشخص کردن دستگاه صوتی از طریق اندیس آن. هر مقداری را که در نام پرونده ورودی تعیین شده باشد بازنویسی مینماید.
- -pixel_format <FORMAT>
- درخواست از
دستگاه
ویدیو برای
استفاده از
یک قالب
پیکسلی خاص.
اگر قالب
مشخصشده
پشتیبانی
نشود،
فهرستی از
قالبهای
موجود
ارائه شده و
نخستین
مورد در این
لیست به جای
آن استفاده
میشود.
قالبهای
پیکسلی در
دسترس
عبارتند از:
"monob, rgb555be, rgb555le, rgb565be, rgb565le,
rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0,
bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10,
yuv420p, nv12, yuyv422, gray" - -framerate
- تنظیم نرخ فریم دریافت تصویر. پیشفرض "ntsc" است، متناظر با نرخ فریم "30000/1001".
- -video_size
- تنظیم ابعاد فریم ویدیو.
- -capture_cursor
- ضبط نشانگر ماوس. پیشفرض 0 است.
- -capture_mouse_clicks
- ضبط کلیکهای ماوس روی صفحه نمایش. پیشفرض 0 است.
- -capture_raw_data
- ضبط دادههای خام دستگاه. پیشفرض 0 است. استفاده از این گزینه ممکن است منجر به دریافت دادههای لایه زیرین ارائهشده به فریمورک AVFoundation شود. برای نمونه برای دستگاههای مالتیپلکسشده که دادههای خام DV را به فریمورک میفرستند (مانند دوربینهای مبتنی بر نوار)، تنظیم این گزینه روی false منجر به فریمهای ویدیویی استخراجشده منحصراً در قالب پیکسلی تعیینشده میشود. تنظیم این گزینه روی true منجر به دریافت دستنخورده جریان خام DV میگردد.
مثالها (Examples)
- چاپ فهرست
دستگاههای
پشتیبانیشده
توسط AVFoundation و
خروج:
$ ffmpeg -f avfoundation -list_devices true -i ""
- ضبط ویدیو
از دستگاه
ویدیویی 0 و
صدا از
دستگاه
صوتی 0 درون
out.avi:
$ ffmpeg -f avfoundation -i "0:0" out.avi
- ضبط ویدیو
از دستگاه
ویدیویی 2 و
صدا از
دستگاه
صوتی 1 درون
out.avi:
$ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
- ضبط ویدیو
از دستگاه
ویدیویی
پیشفرض
سیستم با
بهرهگیری
از قالب
پیکسلی bgr0
بدون ضبط
صدا درون out.avi:
$ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
- ضبط
دادههای
خام DV از یک
دستگاه
ورودی
مناسب و
نوشتن
خروجی درون
out.dv:
$ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
decklink
دستگاه ورودی decklink قابلیتهای دریافت و ضبط را برای دستگاههای DeckLink شرکت Blackmagic فراهم میآورد.
جهت فعالسازی این دستگاه ورودی، نیازمند DeckLink SDK شرکت Blackmagic هستید و باید پیکربندی را با فلگهای متناسب "--extra-cflags" و "--extra-ldflags" انجام دهید. در سیستمعامل ویندوز، باید فایلهای IDL را از طریق widl اجرا نمایید.
دکلینک در خصوص قالبهایی که پشتیبانی میکند بسیار حساس است. قالب پیکسلی ورودی را میتوان با گزینه raw_format تنظیم نمود. نرخ فریم و ابعاد ویدیو برای دستگاه شما باید با دستور -list_formats 1 مشخص گردد. نرخ نمونهبرداری صوتی همواره ۴۸ کیلوهرتز است و تعداد کانالها میتواند ۲، ۸ یا ۱۶ باشد. دقت فرمایید که تمام کانالهای صوتی درون یک قطعه (ترک) صوتی واحد بستهبندی میشوند.
گزینهها (Options)
- list_devices
- در صورت تنظیم روی true، فهرستی از دستگاهها را چاپ کرده و خارج میشود. پیشفرض false است. این گزینه منسوخ شده است؛ لطفاً از گزینه "-sources" در ffmpeg برای مشاهده دستگاههای ورودی موجود استفاده نمایید.
- list_formats
- در صورت تنظیم روی true، فهرستی از قالبهای پشتیبانیشده را چاپ کرده و خارج میشود. پیشفرض false است.
- format_code <FourCC>
- این گزینه قالب ویدیوی ورودی را روی قالبی که توسط کد FourCC مشخص شده تنظیم میکند. جهت مشاهده مقادیر پشتیبانیشده برای دستگاه(های) خود از گزینه list_formats بهره ببرید. توجه کنید کد FourCC به صورت 'pal ' وجود دارد که میتواند به فرم pal (سه حرفی) نیز به کار رود. رفتار پیشفرض، تشخیص خودکار قالب ویدیوی ورودی در صورت پشتیبانی سختافزار است.
- raw_format
- تنظیم قالب پیکسلی ویدیوی ضبطشده. مقادیر موجود عبارتند از:
- teletext_lines
- در صورت
تنظیم روی
مقداری
غیرصفر، یک
جریان
تلهتکست
اضافی از
دادههای
کمکی عمودی
(VANC) استخراج و
ضبط
میگردد. هر
دو منبع SD PAL (576i) و
HD (1080i یا 1080p)
پشتیبانی
میشوند. در
صورت
استفاده از
منابع HD،
بستههای OP47
دیکود
میشوند.
این گزینه یک بیتماسک از خطوط ضبطشده SD PAL VBI، به ویژه خطوط ۶ تا ۲۲ و ۳۱۸ تا ۳۳۵ است. خط ۶ کمارزشترین بیت (LSB) در ماسک میباشد. خطوط برگزیدهای که شامل اطلاعات تلهتکست نباشند نادیده گرفته میشوند. میتوانید از ثابت ویژه all برای انتخاب تمامی خطوط ممکن، یا standard برای رد کردن خطوط ۶، ۳۱۸ و ۳۱۹ (که با تمام گیرندهها سازگار نیستند) استفاده کنید.
برای منابع SD، ابزار ffmpeg باید با "--enable-libzvbi" کامپایل شده باشد. برای منابع HD، در مدلهای کارت قدیمیتر DeckLink (پیش از دوران 4K) باید در حالت ۱۰ بیتی اقدام به ضبط کنید.
- channels
- تعیین تعداد کانالهای صوتی برای ضبط. باید 2، 8 یا 16 باشد. پیشفرض 2 است.
- duplex_mode
- تنظیم حالت
دوطرفه/پروفایل
دستگاه
دکلینک.
باید یکی از
مقادیر unset،
half، full، one_sub_device_full،
one_sub_device_half، two_sub_device_full
یا four_sub_device_half
باشد.
پیشفرض unset
است.
نکته: از نسخه DeckLink SDK 11.0 ویژگی duplex با ویژگی profile جایگزین شده است. برای DeckLink Duo 2 و DeckLink Quad 2، یک پروفایل بین هر ۲ زیردستگاهی که از اتصالات یکسان استفاده میکنند به اشتراک گذاشته میشود. برای DeckLink 8K Pro، یک پروفایل میان هر ۴ زیردستگاه مشترک است؛ بنابراین DeckLink 8K Pro از چهار پروفایل پشتیبانی میکند.
حالتهای پروفایل معتبر برای DeckLink 8K Pro (با نسخه DeckLink SDK >= 11.0): one_sub_device_full، one_sub_device_half، two_sub_device_full و four_sub_device_half
حالتهای پروفایل معتبر برای DeckLink Quad 2 و DeckLink Duo 2: half و full
- timecode_format
- نوع کد
زمانی (Timecode)
برای درج در
متاداده
فریم و
جریان
ویدیو. باید
یکی از
مقادیر none،
rp188vitc، rp188vitc2، rp188ltc،
rp188hfr، rp188any، vitc،
vitc2 یا serial
باشد.
پیشفرض none
است (درج
نمیشود).
به منظور پشتیبانی صحیح از کدهای زمانی ۵۰/۶۰ فریم بر ثانیه، ترتیب انواع کدهای زمانی استعلامشده برای rp188any در محتواهای با نرخ بالاتر از ۳۰ فریم بر ثانیه برابر است با HFR، VITC1، VITC2 و LTC. توجه داشته باشید که این ترتیب با ترتیب مورد استفاده توسط رابط برنامهنویسی دکلینک که HFR، VITC1، LTC، VITC2 است اندکی تفاوت دارد.
- video_input
- تنظیم منبع ورودی ویدیو. باید یکی از مقادیر unset، sdi، hdmi، optical_sdi، component، composite یا s_video باشد. پیشفرض unset است.
- audio_input
- تنظیم منبع ورودی صدا. باید یکی از مقادیر unset، embedded، aes_ebu، analog، analog_xlr، analog_rca یا microphone باشد. پیشفرض unset است.
- video_pts
- تنظیم منبع برچسب زمان (PTS) بسته ویدیو. باید یکی از مقادیر video، audio، reference، wallclock یا abs_wallclock باشد. پیشفرض video است.
- audio_pts
- تنظیم منبع برچسب زمان بسته صدا. باید یکی از مقادیر video، audio، reference، wallclock یا abs_wallclock باشد. پیشفرض audio است.
- draw_bars
- در صورت تنظیم روی true، در زمان قطع سیگنال نوارهای رنگی رسم میشود. پیشفرض true است. این گزینه منسوخ شده است؛ لطفاً از گزینه "signal_loss_action" بهره بگیرید.
- signal_loss_action
- تنظیم اقدامی که باید در هنگام قطع سیگنال انجام پذیرد. یکی از مقادیر زیر را میپذیرد:
- 1, none
- عدم انجام هیچ کاری در زمان قطع سیگنال. این معمولاً منجر به فریمهای سیاه میشود.
- 2, bars
- رسم نوارهای رنگی هنگام قطع سیگنال. تنها برای سیگنالهای ورودی ۸ بیتی پشتیبانی میشود.
- 3, repeat
- تکرار آخرین فریم ویدیو هنگام قطع سیگنال.
پیشفرض bars است.
- queue_size
- تنظیم حداکثر اندازه بافر ورودی بر حسب بایت. چنانچه بافر به این مقدار برسد، فریمهای ورودی دور انداخته میشوند. پیشفرض 1073741824 است.
- audio_depth
- تنظیم عمق بیت نمونه صوتی. باید 16 یا 32 باشد. پیشفرض 16 است.
- decklink_copyts
- در صورت تنظیم روی true، برچسبهای زمانی همانگونه که هستند بدون حذف آفست اولیه به جلو هدایت میشوند. پیشفرض false است.
- timestamp_align
- همترازسازی زمان آغاز دریافت بر حسب ثانیه. در صورت تنظیم روی مقداری غیرصفر، فریمهای ورودی دور ریخته میشوند تا زمانی که برچسب زمانی سیستم با مقدار پیکربندیشده همتراز گردد. اختلاف همترازی تا اندازه مدتزمان یک فریم تحمل میشود. این مورد برای حفظ همگامسازی ورودی در میان N دستگاه سختافزاری مختلف که برای افزونگی "N-way" به کار گرفته شدهاند سودمند است. پیش از بهرهگیری از این گزینه، زمان سیستم دستگاههای سختافزاری مختلف باید با پروتکلهایی چون NTP یا PTP همگامسازی شده باشد. دقت فرمایید که این روش کاملاً بدون خطا نیست. در برخی شرایط مرزی به دلیل نوسانات زمانبندی ریسهها در سیستمعامل ممکن است همگامسازی ورودی محقق نشود. همگامسازی ممکن است به اندازه ۱ فریم یا در موارد نادرتر به اندازه timestamp_align ثانیه دچار خطا شود. پیشفرض 0 است.
- wait_for_tc (bool)
- دور ریختن فریمها تا زمانی که فریمی با کد زمانی دریافت گردد. گاهی اوقات کد زمانی سریال همراه با اولین فریم ورودی دریافت نمیشود. چنانچه این حالت رخ دهد، کد زمانی ذخیرهشده جریان نامعتبر خواهد بود. اگر این گزینه روی true تنظیم شود، فریمهای ورودی تا زمان رسیدن فریمی دارای کد زمانی دور انداخته میشوند. گزینه timecode_format باید مشخص شده باشد. پیشفرض false است.
- enable_klv(bool)
- در صورت تنظیم روی true، دادههای KLV را از خطوط VANC استخراج کرده و بستههای KLV را در خروجی منتشر میسازد. بستههای KLV VANC بر اساس فیلدهای MID و PSC با یکدیگر پیوند یافته و در یک بسته KLV واحد تجمیع میشوند. پیشفرض false است.
مثالها (Examples)
- فهرست کردن
دستگاههای
ورودی:
ffmpeg -sources decklink
- فهرست کردن
قالبهای
پشتیبانیشده:
ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
- ضبط کلیپ
ویدیویی در
1080i50:
ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
- ضبط کلیپ
ویدیویی در
1080i50 ده بیتی:
ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
- ضبط کلیپ
ویدیویی در
1080i50 با ۱۶
کانال صوتی:
ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
dshow
دستگاه ورودی DirectShow برای ویندوز.
در حال حاضر صرفاً دستگاههای صوتی و تصویری پشتیبانی میشوند.
میتوان چندین دستگاه را به عنوان ورودیهای مجزا باز کرد، اما میتوان آنها را بر روی یک ورودی مشترک نیز باز نمود که این امر باید همگامسازی میان آنها را بهبود ببخشد.
نام ورودی باید در قالب زیر باشد:
<TYPE>=<NAME>[:<TYPE>=<NAME>]
که در آن TYPE میتواند audio یا video باشد، و NAME نام دستگاه یا نام جایگزین آن است.
گزینهها (Options)
در صورت مشخص نشدن هیچ گزینهای، از مقادیر پیشفرض دستگاه استفاده میشود. اگر دستگاه از گزینههای درخواستی پشتیبانی نکند، باز کردن آن با شکست مواجه خواهد شد.
- video_size
- تنظیم ابعاد ویدیو در ویدیوی ضبطشده.
- framerate
- تنظیم نرخ فریم در ویدیوی ضبطشده.
- sample_rate
- تنظیم نرخ نمونهبرداری (بر حسب هرتز) برای صدای ضبطشده.
- sample_size
- تنظیم اندازه نمونه (بر حسب بیت) برای صدای ضبطشده.
- channels
- تنظیم تعداد کانالها در صدای ضبطشده.
- list_devices
- در صورت تنظیم روی true، فهرستی از دستگاهها را چاپ کرده و خارج میشود.
- list_options
- در صورت تنظیم روی true، فهرستی از گزینههای دستگاه انتخابشده را چاپ کرده و خارج میشود.
- video_device_number
- تنظیم شماره دستگاه ویدیو برای دستگاههای دارای نام یکسان (از 0 شروع میشود، پیشفرض 0 است).
- audio_device_number
- تنظیم شماره دستگاه صوتی برای دستگاههای دارای نام یکسان (از 0 شروع میشود، پیشفرض 0 است).
- pixel_format
- انتخاب قالب پیکسلی مورد استفاده توسط DirectShow. این گزینه تنها زمانی قابل تنظیم است که کدک ویدیو مشخص نشده باشد یا روی rawvideo تنظیم شده باشد.
- audio_buffer_size
- تنظیم اندازه بافر دستگاه صوتی بر حسب میلیثانیه (که بسته به دستگاه میتواند مستقیماً بر تأخیر اثر بگذارد). پیشفرض بر استفاده از بافر پیشفرض دستگاه صوتی است (معمولاً مضربی از ۵۰۰ میلیثانیه). تنظیم این مقدار روی رقمی بسیار کوچک میتواند کارایی را دچار افت کند. همچنین ببینید: http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx
- video_pin_name
- انتخاب پین ضبط ویدیو بر پایه نام یا نام جایگزین.
- audio_pin_name
- انتخاب پین ضبط صدا بر پایه نام یا نام جایگزین.
- crossbar_video_input_pin_number
- انتخاب شماره پین ورودی ویدیو برای دستگاه کراسبار (crossbar). این پین به پین خروجی دیکودر ویدیوی دستگاه کراسبار هدایت میشود. توجه کنید تغییر این مقدار میتواند بر فراخوانیهای بعدی اثر بگذارد (یک پیشفرض جدید تعیین میکند) تا زمانی که راهاندازی مجدد سیستم رخ دهد.
- crossbar_audio_input_pin_number
- انتخاب شماره پین ورودی صدا برای دستگاه کراسبار. این پین به پین خروجی دیکودر صدای دستگاه کراسبار هدایت میشود. توجه کنید تغییر این مقدار میتواند بر فراخوانیهای بعدی اثر بگذارد (یک پیشفرض جدید تعیین میکند) تا زمانی که راهاندازی مجدد سیستم رخ دهد.
- show_video_device_dialog
- در صورت تنظیم روی true، پیش از آغاز ضبط، یک کادر محاورهای برای کاربر نهایی ظاهر میشود که به وی امکان میدهد ویژگیها و پیکربندیهای فیلتر ویدیو را به صورت دستی تغییر دهد. توجه داشته باشید برای دستگاههای کراسبار، تنظیم مقادیر در این پنجره گاهی جهت جابجایی میان نرخهای فریم ورودی PAL (۲۵ فریم بر ثانیه) و NTSC (۲۹٫۹۷ فریم بر ثانیه)، ابعاد، درهمبافی و غیره الزامی است. تغییر این مقادیر میتواند نرخهای اسکن/فریم گوناگون را فعال کرده و مانع بروز نوارهای سبز در پایین تصویر یا خطوط اسکن لرزان گردد. توجه داشته باشید در برخی دستگاهها تغییر این خصوصیات همچنین میتواند بر فراخوانیهای آینده اثر بگذارد (پیشفرضهای جدید وضع میکند) تا زمانی که سیستم ریبوت شود.
- show_audio_device_dialog
- در صورت تنظیم روی true، پیش از آغاز ضبط، کادر محاورهای نمایشی برای کاربر گشوده میشود تا ویژگیها و تنظیمات فیلتر صوتی را به صورت دستی اعمال کند.
- show_video_crossbar_connection_dialog
- در صورت تنظیم روی true، پیش از آغاز ضبط، هنگام باز کردن یک دستگاه ویدیو، کادر محاورهای برای کاربر نمایش داده میشود تا مسیردهی پینهای کراسبار را دستی تغییر دهد.
- show_audio_crossbar_connection_dialog
- در صورت تنظیم روی true، پیش از آغاز ضبط، هنگام باز کردن یک دستگاه صدا، کادر محاورهای برای کاربر نمایش داده میشود تا مسیردهی پینهای کراسبار را دستی تغییر دهد.
- show_analog_tv_tuner_dialog
- در صورت تنظیم روی true، پیش از آغاز ضبط، کادری نمایشی برای کاربر باز میشود تا کانالها و فرکانسهای تلویزیون را دستی تغییر دهد.
- show_analog_tv_tuner_audio_dialog
- در صورت تنظیم روی true، پیش از آغاز ضبط، پنجرهای برای کاربر نمایش داده میشود تا صدای تلویزیون را دستی تنظیم نماید (نظیر مونو در برابر استریو، زبان A، B یا C).
- audio_device_load
- بارگذاری یک دستگاه فیلتر ضبط صدا از روی یک پرونده به جای جستجوی آن بر اساس نام. چنانچه فیلتر از سریالسازی خصوصیات خود پشتیبانی نماید، میتواند پارامترهای اضافی را نیز بارگذاری کند. جهت بهرهگیری از این، باید یک منبع ضبط صدا تعیین شود، هرچند میتواند هر چیزی حتی یک منبع ساختگی باشد.
- audio_device_save
- ذخیره دستگاه فیلتر ضبط صدای فعلی و پارامترهای آن (در صورت پشتیبانی فیلتر) درون یک پرونده. در صورت وجود پروندهای با نام مشابه، بازنویسی خواهد شد.
- video_device_load
- بارگذاری یک دستگاه فیلتر ضبط ویدیو از روی یک پرونده به جای جستجوی آن بر اساس نام. چنانچه فیلتر از سریالسازی ویژگیهای خود پشتیبانی کند، میتواند پارامترهای دیگر را نیز بارگذاری کند. برای استفاده باید یک منبع ضبط ویدیو مشخص شود، اما میتواند هر چیزی حتی یک منبع فرضی باشد.
- video_device_save
- ذخیره دستگاه فیلتر ضبط ویدیوی فعلی و پارامترهای آن (در صورت پشتیبانی فیلتر) درون یک پرونده. در صورت وجود پروندهای با همان نام، بازنویسی صورت میگیرد.
- use_video_device_timestamps
- در صورت تنظیم روی false، برچسب زمان برای فریمهای ویدیو به جای برچسب زمان تهیهشده توسط دستگاه ضبط، از زمان واقعی سیستم (wallclock) استخراج خواهد شد. این گزینه امکان دور زدن دستگاههایی را که برچسبهای زمانی غیرقابل اعتماد ارائه میدهند فراهم میسازد.
مثالها (Examples)
- چاپ فهرست
دستگاههای
پشتیبانیشده
توسط DirectShow و
خروج:
$ ffmpeg -list_devices true -f dshow -i dummy
- باز کردن
دستگاه
ویدیویی Camera:
$ ffmpeg -f dshow -i video="Camera"
- باز کردن
دومین
دستگاه
ویدیویی با
نام Camera:
$ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
- باز کردن
دستگاه
ویدیویی Camera
و دستگاه
صوتی Microphone:
$ ffmpeg -f dshow -i video="Camera":audio="Microphone"
- چاپ فهرست
گزینههای
پشتیبانیشده
در دستگاه
انتخابشده
و خروج:
$ ffmpeg -list_options true -f dshow -i video="Camera"
- تعیین نام
پینها
برای
دریافت با
نام یا نام
جایگزین،
تعیین نام
جایگزین
دستگاه:
$ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone" - پیکربندی
یک دستگاه
کراسبار،
با تعیین
پینهای
کراسبار،
و مجاز
ساختن
کاربر جهت
تنظیم
ویژگیهای
ضبط تصویر
در زمان
راهاندازی:
$ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0 -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
fbdev
دستگاه ورودی فریمبافر لینوکس (Linux framebuffer).
فریمبافر لینوکس یک لایه انتزاعی مستقل از سختافزار گرافیکی برای نمایش محتوای گرافیکی بر روی نمایشگر رایانه، معمولاً روی کنسول است. دسترسی به آن از طریق یک گره پرونده دستگاه، معمولاً /dev/fb0 صورت میگیرد.
برای کسب اطلاعات تفصیلیتر پرونده Documentation/fb/framebuffer.txt موجود در درخت سورس لینوکس را مطالعه کنید.
همچنین ببینید: http://linux-fbdev.sourceforge.net، و fbset(1).
برای ضبط از دستگاه فریمبافر /dev/fb0 با استفاده از ffmpeg:
ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi
میتوانید یک تصویر تکاسکرینشات را با دستور زیر بگیرید:
ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg
گزینهها (Options)
- framerate
- تنظیم نرخ فریم. پیشفرض 25 است.
gdigrab
دستگاه ضبط صفحه نمایش مبتنی بر Win32 GDI.
این دستگاه به شما امکان میدهد بخشی از نمایشگر را در ویندوز دریافت و ضبط کنید.
در میان گزینههای مربوط به نام پرونده ورودی چنین عناصری موجود هستند:
desktop
یا
title=<window_title>
یا
hwnd=<window_hwnd>
گزینه اول کل دسکتاپ یا ناحیه مشخصی از دسکتاپ را ضبط میکند. گزینههای دوم و سوم در عوض محتویات یک پنجره واحد را، صرفنظر از موقعیت مکانی آن بر روی صفحه نمایش، ضبط مینمایند.
برای مثال، جهت ضبط کل دسکتاپ با استفاده از ffmpeg:
ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
ضبط یک ناحیه 640x480 در مختصات "10,20":
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
ضبط محتویات پنجرهای با نام "Calculator":
ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
گزینهها (Options)
- draw_mouse
- مشخص میکند که آیا نشانگر ماوس ترسیم شود یا خیر. از مقدار 0 برای عدم ترسیم نشانگر استفاده کنید. مقدار پیشفرض 1 است.
- framerate
- تنظیم نرخ فریم دریافت. مقدار پیشفرض "ntsc" است، متناظر با نرخ فریم "30000/1001".
- show_region
- نمایش
ناحیه
ضبطشده
روی صفحه
نمایش.
اگر show_region با مقدار 1 مشخص گردد، ناحیه ضبط روی صفحه نمایش مشخص خواهد شد. با این گزینه، در صورتی که تنها بخشی از صفحه ضبط شود، به آسانی میتوان فهمید چه بخشی در حال ضبط است.
توجه کنید که گزینه show_region با ضبط محتویات یک پنجره تکی ناسازگار است.
برای مثال:
ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
- video_size
- تنظیم ابعاد فریم ویدیو. حالت پیشفرض در صورت انتخاب desktop، ضبط تمامصفحه است؛ و در صورت انتخاب title=window_title ابعاد کامل همان پنجره میباشد.
- offset_x
- هنگام ضبط
یک ناحیه با
video_size، فاصله
را از لبه
سمت چپ صفحه
نمایش یا
دسکتاپ
تعیین
میکند.
توجه داشته باشید که محاسبه آفست از گوشه سمت چپ بالای مانیتور اصلی در ویندوز انجام میگیرد. اگر مانیتوری در سمت چپ مانیتور اصلی خود قرار دادهاید، برای انتقال ناحیه به آن مانیتور باید از مقدار منفی offset_x استفاده نمایید.
- offset_y
- هنگام ضبط
یک ناحیه با
video_size، فاصله
را از لبه
بالایی
صفحه نمایش
یا دسکتاپ
تعیین
میکند.
توجه داشته باشید که محاسبه آفست از گوشه سمت چپ بالای مانیتور اصلی در ویندوز صورت میگیرد. اگر مانیتوری بالای مانیتور اصلی خود دارید، برای انتقال ناحیه به آن مانیتور باید از مقدار منفی offset_y بهره ببرید.
iec61883
دستگاه ورودی FireWire DV/HDV با بهرهگیری از libiec61883.
جهت فعالسازی این دستگاه ورودی، به کتابخانههای libiec61883، libraw1394 و libavc1394 نصبشده بر روی سیستم نیاز است. از گزینه پیکربندی "--enable-libiec61883" برای کامپایل همراه با این دستگاه استفاده کنید.
دستگاه ضبط iec61883 از دریافت تصویر از یک دستگاه ویدیویی متصل از طریق گذرگاه IEEE1394 (FireWire)، با بهرهگیری از libiec61883 و پشته جدید FireWire لینوکس (juju) پشتیبانی مینماید. از آنجا که پشته قدیمی FireWire از هسته حذف گردید، این سازوکار به عنوان روش ورودی پیشفرض DV/HDV در هسته لینوکس ۲٫۶٫۳۷ و بالاتر محسوب میشود.
پورت FireWire مورد نظر را به عنوان پرونده ورودی تعیین کنید، یا برای گزینش نخستین پورت متصل مقدار "auto" را قرار دهید.
گزینهها (Options)
- dvtype
- بازنویسی تشخیص خودکار قالب DV/HDV. این مورد تنها باید در صورتی استفاده شود که تشخیص خودکار کار نکند، یا استفاده از نوع دیگری از دستگاه باید ممنوع گردد. رفتار با دستگاه DV به عنوان HDV (یا برعکس) عمل نخواهد کرد و منجر به رفتارهای پیشبینینشده خواهد شد. مقادیر auto، dv و hdv پشتیبانی میشوند.
- dvbuffer
- تنظیم حداکثر اندازه بافر برای دادههای ورودی، بر حسب فریم. برای DV، این یک مقدار دقیق است. برای HDV، از نظر فریم دقیق نیست، چرا که HDV اندازه فریم ثابتی ندارد.
- dvguid
- انتخاب دستگاه ضبط از طریق تعیین GUID آن. عمل ضبط منحصراً از دستگاه مشخصشده انجام میپذیرد و در صورت پیدا نشدن دستگاهی با GUID دادهشده با شکست روبرو خواهد شد. این گزینه برای انتخاب ورودی در هنگامی که چندین دستگاه به طور همزمان متصل هستند سودمند است. جهت آگاهی از GUIDها مسیر /sys/bus/firewire/devices را بررسی فرمایید.
مثالها (Examples)
- دریافت و
نمایش
ورودی یک
دستگاه FireWire DV/HDV:
ffplay -f iec61883 -i auto
- دریافت و
ذخیره
ورودی یک
دستگاه FireWire DV/HDV،
با استفاده
از بافر
بستهای به
اندازه
۱۰۰٬۰۰۰
بسته
چنانچه
منبع از نوع
HDV باشد:
ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
jack
دستگاه ورودی JACK.
جهت فعالسازی این دستگاه ورودی در هنگام پیکربندی، نیازمند libjack نصبشده بر روی سیستم خود میباشید.
یک دستگاه ورودی JACK یک یا چند کلاینت قابل نوشتن JACK (برای هر کانال صوتی یکی) با نام client_name:input_N ایجاد میکند، که در آن client_name نام ارائهشده توسط برنامه و N عددی است که کانال را مشخص میسازد. هر کلاینت نوشتنی، دادههای دریافتشده را به دستگاه ورودی FFmpeg ارسال میدارد.
پس از ایجاد یک یا چند کلاینت خواندنی JACK، باید آنها را به یک یا چند کلاینت نوشتنی JACK متصل نمایید.
برای اتصال یا قطع ارتباط کلاینتهای JACK میتوانید از برنامههای jack_connect و jack_disconnect بهره ببرید، یا این کار را از طریق یک واسط گرافیکی مانند qjackctl به انجام برسانید.
جهت مشاهده فهرست کلاینتهای JACK و ویژگیهای آنها میتوانید دستور jack_lsp را اجرا کنید.
در ادامه مثالی آورده شده که نحوه ضبط از یک کلاینت خواندنی JACK را با ffmpeg نشان میدهد:
# ایجاد یک کلاینت نوشتنی JACK با نام "ffmpeg". $ ffmpeg -f jack -i ffmpeg -y out.wav # اجرای کلاینت نمونه خواندنی jack_metro. $ jack_metro -b 120 -d 0.2 -f 4000 # فهرست کردن کلاینتهای جاری JACK. $ jack_lsp -c system:capture_1 system:capture_2 system:playback_1 system:playback_2 ffmpeg:input_1 metro:120_bpm # اتصال کلاینت metro به کلاینت نوشتنی ffmpeg. $ jack_connect metro:120_bpm ffmpeg:input_1
برای اطلاعات بیشتر بخوانید: http://jackaudio.org
گزینهها (Options)
- channels
- تنظیم تعداد کانالها. پیشفرض 2 است.
kmsgrab
دستگاه ورودی ویدیویی KMS.
فریمبافر اسکن خروجی KMS متناظر با یک CRTC یا صفحه (plane) مشخص را به عنوان یک شیء DRM که قابلیت ارسال به سایر توابع سختافزاری را دارد دریافت و ضبط میکند.
برای اجرا مستلزم دسترسی DRM master یا مجوز CAP_SYS_ADMIN است.
اگر مفهوم این موارد را به روشنی متوجه نمیشوید، احتمالاً نیازی به این دستگاه ندارید؛ به جای آن گزینه x11grab را بررسی فرمایید.
گزینهها (Options)
- device
- دستگاه DRM برای ضبط بر روی آن. پیشفرض /dev/dri/card0 است.
- format
- قالب پیکسلی فریمبافر. چنانچه هسته لینوکس ۵٫۷ یا بالاتر را اجرا کنید این مقدار به صورت خودکار قابل تشخیص است، اما برای نسخههای پیشین باید به شکل صریح تعیین گردد. پیشفرض bgr0 است که متداولترین قالب مورد استفاده توسط کنسول لینوکس و کارساز Xorg X به شمار میرود.
- format_modifier
- اصلاحکننده قالب (format modifier) برای سیگنالدهی روی فریمهای خروجی. این مورد جهت درونریزی (import) صحیح به پارهای از واسطهای برنامهنویسی (APIها) الزامی است. در لینوکس ۵٫۷ و بالاتر میتواند به شکل خودکار تشخیص داده شود، اما در صورت نیاز در نسخههای پیشین باید به صراحت ارائه شود. برای مقادیر مجاز به مستندات libdrm مراجعه کنید.
- crtc_id
- شناسه KMS CRTC جهت تعریف منبع دریافت. اولین صفحه فعال موجود بر روی CRTC تعیینشده به کار گرفته خواهد شد.
- plane_id
- شناسه صفحه (plane) KMS جهت تعیین منبع دریافت. در صورتی که هیچیک از crtc_id یا plane_id مشخص نگردد، به صورت پیشفرض نخستین صفحه فعال پیدا شده مورد استفاده قرار میگیرد.
- framerate
- نرخ فریم ضبط. این گزینه با هیچگونه پرش صفحه (page flipping) یا تغییرات فریمبافر همگام نشده است - بلکه صرفاً فاصلهای را که در آن فریمبافر نمونهبرداری میشود تعیین میکند. نمونهبرداری سریعتر از نرخ نوسازی فریمبافر، فریمهای مستقلی با محتوای یکسان تولید خواهد کرد. پیشفرض 30 است.
مثالها (Examples)
- دریافت از
اولین صفحه
فعال،
بارگیری
نتیجه درون
فریمهای
عادی و
انکود کردن:
این کار
صرفاً در
صورتی جواب
میدهد که
فریمبافر
هم خطی و هم
قابل نگاشت
(mappable) باشد - در
غیر این
صورت خروجی
ممکن است به
هم ریخته
شود یا
بارگیری با
شکست روبرو
گردد:
ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
- دریافت از CRTC
با شناسه 42
در نرخ ۶۰
فریم بر
ثانیه،
نگاشت
نتیجه به VAAPI،
تبدیل به NV12 و
انکود با
فرمت H.264:
ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
- جهت ضبط
تنها بخشی
از یک صفحه
میتوان
خروجی را
کراپ (crop) کرد -
این تکنیک
میتواند
برای ضبط یک
پنجره
مجزا،
مشروط بر
اینکه
موقعیت
مطلق و
ابعاد آن
معلوم
باشد، مورد
استفاده
قرار گیرد.
برای نمونه
جهت ضبط و
انکود
یکچهارم
مرکزی یک
صفحه 1920x1080:
ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4
lavfi
دستگاه مجازی ورودی Libavfilter.
این دستگاه ورودی دادهها را از پدهای خروجی باز موجود در یک گراف فیلتر libavfilter میخواند.
برای هر خروجی باز گراف فیلتر، دستگاه ورودی یک جریان متناظر ایجاد میکند که به خروجی تولیدشده نگاشت میشود. گراف فیلتر از طریق گزینه graph معین میگردد.
گزینهها (Options)
- graph
- تعیین گراف
فیلتر برای
استفاده به
عنوان
ورودی. هر
پد باز
خروجی
ویدیو باید
توسط یک
رشته یکتا
به صورت "outN"
برچسبگذاری
شود، که در
آن N عددی
است که از 0
آغاز شده و
متناظر با
جریان
ورودی
نگاشتشده
تولیدی
توسط
دستگاه است.
نخستین
خروجی بدون
برچسب به
طور خودکار
به برچسب "out0"
تخصیص
مییابد،
اما سایر
خروجیها
باید به
صراحت مشخص
گردند.
پسوند "+subcc" میتواند به برچسب خروجی پیوست شود تا جریانی اضافی حاوی بستههای زیرنویس مخفی (closed captions) متصل به آن خروجی ایجاد کند (به صورت آزمایشی؛ در حال حاضر صرفاً برای EIA-608 / CEA-708). جریانهای subcc پس از تمام جریانهای عادی، به ترتیب جریانهای متناظر ساخته میشوند. برای نمونه چنانچه خروجیهای "out19+subcc"، "out7+subcc" و تا "out42" موجود باشند، جریان شماره ۴۳ زیرنویس subcc برای جریان شماره ۷ و جریان شماره ۴۴ زیرنویس subcc برای جریان شماره ۱۹ خواهد بود.
در صورت عدم تعیین، پیشفرض نام فایلی خواهد بود که برای دستگاه ورودی مشخص شده است.
- graph_file
- تنظیم نام پرونده گراف فیلتر برای خواندن و ارسال به سایر فیلترها. سینتکس گراف فیلتر همانند موردی است که توسط گزینه graph مشخص شده است.
- dumpgraph
- تخلیه گراف درون stderr.
مثالها (Examples)
- ایجاد یک
جریان
ویدیویی
رنگی و پخش
آن با ffplay:
ffplay -f lavfi -graph "color=c=pink [out0]" dummy
- مشابه مثال
پیشین، اما
با استفاده
از نام فایل
برای تعیین
توصیف
گراف، و حذف
برچسب "out0":
ffplay -f lavfi color=c=pink
- ایجاد سه
منبع
فیلترشده
آزمایشی
ویدیویی
گوناگون و
پخش آنها:
ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
- خواندن یک
جریان صوتی
از یک فایل
با استفاده
از منبع amovie و
پخش آن با ffplay:
ffplay -f lavfi "amovie=test.wav"
- خواندن یک
جریان صوتی
و یک جریان
تصویری و
پخش آن با ffplay:
ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
- تخلیه
فریمهای
دیکودشده
به تصویر و
ذخیره
زیرنویسهای
مخفی در یک
فایل
پشتیبان RCWT:
ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
libcdio
دستگاه ورودی CD صوتی بر پایه libcdio.
جهت فعالسازی این دستگاه ورودی در هنگام پیکربندی، به بسته libcdio نصبشده بر روی سیستم نیاز دارید. این ویژگی مستلزم گزینه پیکربندی "--enable-libcdio" است.
این دستگاه اجازه پخش و ضبط دادهها از یک Audio-CD را میدهد.
برای نمونه جهت کپی کردن تمام Audio-CD موجود در /dev/sr0 با استفاده از ffmpeg، میتوانید دستور زیر را اجرا کنید:
ffmpeg -f libcdio -i /dev/sr0 cd.wav
گزینهها (Options)
- speed
- تنظیم سرعت
خواندن
درایو.
مقدار
پیشفرض 0
است.
سرعت بر حسب واحدهای سرعت CD-ROM تعیین میشود. سرعت از طریق تابع "cdio_cddap_speed_set" در کتابخانه libcdio تنظیم میگردد. در بسیاری از درایوهای CD-ROM، تعیین مقداری بیش از حد بزرگ منجر به استفاده از حداکثر سرعت درایو خواهد شد.
- paranoia_mode
- تنظیم پرچمهای حالت بازیابی پارانویا (paranoia recovery mode). یکی از مقادیر زیر را میپذیرد:
مقدار پیشفرض disable است.
برای کسب اطلاعات بیشتر در خصوص حالات بازیابی در دسترس، به مستندات پروژه cdparanoia مراجعه فرمایید.
libdc1394
دستگاه ورودی IIDC1394 بر پایه کتابخانههای libdc1394 و libraw1394.
نیازمند گزینه پیکربندی "--enable-libdc1394" میباشد.
گزینهها (Options)
- framerate
- تنظیم نرخ فریم. مقدار پیشفرض "ntsc" است، متناظر با نرخ فریم "30000/1001".
- pixel_format
- انتخاب قالب پیکسلی. پیشفرض "uyvy422" است.
- video_size
- تنظیم ابعاد ویدیو به صورت رشتهای نظیر "640x480" یا "hd720". پیشفرض "qvga" است.
openal
دستگاه ورودی OpenAL امکان ضبط صدا را بر روی تمامی سیستمهای دارای پیادهسازی کارآمدی از OpenAL 1.1 مهیا میسازد.
جهت فعالسازی این دستگاه ورودی در هنگام پیکربندی، نیازمند هدرها و کتابخانههای OpenAL نصبشده روی سیستم هستید و باید FFmpeg را با "--enable-openal" پیکربندی نمایید.
هدرها و کتابخانههای OpenAL باید به عنوان بخشی از پیادهسازی OpenAL شما یا در قالب یک بسته دانلودی اضافی (یک SDK) تأمین شوند. بسته به نوع نصب، ممکن است لازم باشد فلگهای بیشتری از طریق "--extra-cflags" و "--extra-ldflags" تعیین کنید تا سیستم ساخت قادر به یافتن هدرها و کتابخانههای OpenAL باشد.
فهرستی ناقص از پیادهسازیهای OpenAL در ادامه آمده است:
- Creative
- پیادهسازی رسمی ویندوز، که شتابدهی سختافزاری را همراه با دستگاههای پشتیبانیشده و بازگشت نرمافزاری (fallback) ارائه میدهد. ببینید: http://openal.org.
- OpenAL Soft
- پیادهسازی نرمافزاری چندسکویی و متنباز (تحت پروانه LGPL). شامل بکاندهایی برای متداولترین رابطهای صوتی در سیستمهای عامل ویندوز، لینوکس، سولاریس و BSD. ببینید: http://kcat.strangesoft.net/openal.html.
- Apple
- در این پلتفرم، OpenAL بخشی از Core Audio، رابط صوتی رسمی Mac OS X است. ببینید: http://developer.apple.com/technologies/mac/audio-and-video.html
این دستگاه به فرد امکان میدهد تا از یک دستگاه ورودی صوتی که از طریق OpenAL مدیریت میشود صدا را ضبط نماید.
لازم است نام دستگاه مورد نظر برای ضبط را در نام پرونده ارائهشده مشخص نمایید. چنانچه یک رشته تهی ارائه شود، دستگاه به طور خودکار دستگاه پیشفرض را برمیگزیند. میتوانید با استفاده از گزینه list_devices فهرستی از دستگاههای پشتیبانیشده را به دست آورید.
گزینهها (Options)
- channels
- تنظیم تعداد کانالها در صدای ضبطشده. در حال حاضر تنها مقادیر 1 (مونو) و 2 (استریو) پشتیبانی میشوند. پیشفرض 2 است.
- sample_size
- تنظیم اندازه نمونه (بر حسب بیت) در صدای ضبطشده. در حال حاضر تنها مقادیر 8 و 16 پشتیبانی میشوند. پیشفرض 16 است.
- sample_rate
- تنظیم نرخ نمونهبرداری (بر حسب هرتز) در صدای ضبطشده. پیشفرض 44.1k است.
- list_devices
- در صورت تنظیم روی true، فهرستی از دستگاهها را چاپ کرده و خارج میشود. پیشفرض false است.
مثالها (Examples)
چاپ فهرست دستگاههای پشتیبانیشده OpenAL و خروج:
$ ffmpeg -list_devices true -f openal -i dummy out.ogg
ضبط از دستگاه OpenAL موسوم به DR-BT101 via PulseAudio:
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
ضبط از دستگاه پیشفرض (به رشته تهی '' به عنوان نام پرونده توجه فرمایید):
$ ffmpeg -f openal -i '' out.ogg
ضبط همزمان از دو دستگاه، با نوشتن در دو پرونده مجزا درون یک دستور ffmpeg واحد:
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
نکته: تمامی پیادهسازیهای OpenAL از دریافت همزمان از چند دستگاه پشتیبانی نمیکنند - در صورتی که دستور فوق کار نکرد، آخرین نسخه OpenAL Soft را بیازمایید.
oss
دستگاه ورودی سامانه صوتی باز (OSS - Open Sound System).
نام پرونده ارائهشده به دستگاه ورودی، گره پرونده دستگاه نمایانگر ورودی OSS است و معمولاً روی /dev/dsp تنظیم میگردد.
برای نمونه جهت دریافت صدا از /dev/dsp با استفاده از ffmpeg، دستور زیر را اجرا کنید:
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
برای کسب آگاهی بیشتر پیرامون OSS ببینید: http://manuals.opensound.com/usersguide/dsp.html
گزینهها (Options)
- sample_rate
- تنظیم نرخ نمونهبرداری بر حسب هرتز. پیشفرض 48000 است.
- channels
- تنظیم تعداد کانالها. پیشفرض 2 است.
pulse
دستگاه ورودی PulseAudio.
جهت فعالسازی این دستگاه در پیکربندی باید FFmpeg را با "--enable-libpulse" پیکربندی کنید.
نام پروندهای که به دستگاه ورودی داده میشود نام یک دستگاه مبدأ یا رشته "default" است.
برای مشاهده فهرست دستگاههای مبدأ PulseAudio و ویژگیهای آنها میتوانید دستور pactl list sources را اجرا نمایید.
اطلاعات بیشتر پیرامون PulseAudio را میتوان در http://www.pulseaudio.org یافت.
گزینهها (Options)
- server
- اتصال به یک کارساز مشخص PulseAudio، که توسط یک آدرس IP تعیین شده است. در صورت مشخص نشدن از سرور پیشفرض استفاده میشود.
- name
- تعیین نام برنامهای که PulseAudio هنگام نمایش کلاینتهای فعال نشان میدهد؛ به صورت پیشفرض رشته "LIBAVFORMAT_IDENT" است.
- stream_name
- تعیین نام جریانی که PulseAudio هنگام نمایش جریانهای فعال نشان میدهد؛ به طور پیشفرض "record" است.
- sample_rate
- تعیین نرخ نمونهبرداری بر حسب هرتز؛ به طور پیشفرض 48kHz به کار میرود.
- channels
- تعیین کانالهای مورد استفاده؛ به صورت پیشفرض روی 2 (استریو) تنظیم شده است.
- frame_size
- این گزینه هیچ عملی انجام نمیدهد و منسوخ شده است.
- fragment_size
- تعیین اندازه قطعه حداقل بافرسازی در PulseAudio بر حسب بایت، که بر میزان تأخیر صوتی اثرگذار است. به طور پیشفرض روی میزان دادهای معادل ۵۰ میلیثانیه تنظیم است.
- wallclock
- تنظیم مقدار اولیه PTS با استفاده از زمان جاری سیستم. پیشفرض 1 است.
مثالها (Examples)
ضبط یک جریان از دستگاه پیشفرض:
ffmpeg -f pulse -i default /tmp/pulse.wav
sndio
دستگاه ورودی sndio.
جهت فعالسازی این دستگاه ورودی در هنگام پیکربندی، نیازمند بسته libsndio نصبشده بر روی سیستم خود هستید.
نام پروندهای که به دستگاه ورودی ارائه میگردد گره دستگاه نمایانگر دستگاه ورودی sndio است و به طور معمول روی /dev/audio0 تنظیم میشود.
برای نمونه جهت ضبط از /dev/audio0 با بهرهگیری از ffmpeg دستور زیر را اجرا فرمایید:
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
گزینهها (Options)
- sample_rate
- تنظیم نرخ نمونهبرداری بر حسب هرتز. پیشفرض 48000 است.
- channels
- تنظیم تعداد کانالها. پیشفرض 2 است.
video4linux2, v4l2
دستگاه ویدیویی ورودی Video4Linux2.
نام "v4l2" میتواند به عنوان نام مستعار برای "video4linux2" استفاده گردد.
چنانچه FFmpeg با پشتیبانی از v4l-utils ساخته شده باشد (با استفاده از گزینه پیکربندی "--enable-libv4l2")، امکان بهرهگیری از آن همراه با گزینه دستگاه ورودی "-use_libv4l2" مهیا است.
نام دستگاه برای دریافت، یک گره پرونده دستگاه است؛ معمولاً سیستمهای لینوکس هنگام اتصال دستگاه (مانند یک وبکم USB) به سیستم چنین گرههایی را به شکل خودکار میسازند، و دارای نامی به شکل /dev/videoN است که در آن N عددی منتسب به دستگاه مربوطه میباشد.
دستگاههای Video4Linux2 عموماً از مجموعه محدودی از ابعاد widthxheight و نرخهای فریم پشتیبانی میکنند. میتوانید با استفاده از دستور -list_formats all برای دستگاههای Video4Linux2 بررسی کنید که کدام موارد پشتیبانی میشوند. برخی دستگاهها نظیر کارتهای تلویزیون از یک یا چند استاندارد پشتیبانی میکنند. امکان مشاهده تمامی استانداردهای پشتیبانیشده با استفاده از -list_standards all وجود دارد.
پایه زمانی (time base) برای برچسبهای زمانی ۱ میکروثانیه است. بسته به نسخه هسته و پیکربندی آن، برچسبهای زمانی ممکن است از ساعت زمان واقعی (با مبدأ مبنای زمانی یونیکس یا Unix Epoch) یا ساعت یکنواخت (monotonic - با مبدأ در زمان بوت سیستم، بدون تأثیرپذیری از پروتکل NTP یا تغییرات دستی ساعت) استخراج شوند. گزینه -timestamps abs یا -ts abs میتواند جهت اجبار تبدیل به ساعت زمان واقعی استفاده گردد.
چند مثال کاربردی از دستگاه video4linux2 با ابزارهای ffmpeg و ffplay:
- فهرست کردن
قالبهای
پشتیبانیشده
برای یک
دستگاه video4linux2:
ffplay -f video4linux2 -list_formats all /dev/video0
- دریافت و
نمایش
ورودی یک
دستگاه video4linux2:
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
- دریافت و
ذخیره
ورودی یک
دستگاه video4linux2،
با واگذاری
نرخ فریم و
ابعاد به
مقادیر
تنظیمشده
قبلی:
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
برای کسب اطلاعات تکمیلی در مورد Video4Linux ببینید: http://linuxtv.org.
گزینهها (Options)
- standard
- تنظیم استاندارد. باید نام یک استاندارد پشتیبانیشده باشد. برای به دست آوردن فهرستی از استانداردهای پشتیبانیشده از گزینه list_standards استفاده کنید.
- channel
- تنظیم شماره کانال ورودی. مقدار پیشفرض روی -1 است، به این معنی که از کانال انتخابشده پیشین استفاده میشود.
- video_size
- تنظیم ابعاد فریم ویدیو. شناسه باید رشتهای به فرم WIDTHxHEIGHT یا یک اختصار معتبر ابعاد باشد.
- pixel_format
- انتخاب قالب پیکسلی (صرفاً برای ورودی ویدیوی خام معتبر است).
- input_format
- تنظیم قالب پیکسلی ترجیحی (برای ویدیوی خام) یا نام یک کدک. این گزینه به فرد اجازه میدهد تا در زمانی که چندین گزینه موجود است، قالب ورودی را برگزیند.
- framerate
- تنظیم نرخ فریم ویدیوی ترجیحی.
- list_formats
- فهرست کردن
قالبهای
در دسترس
(قالبهای
پیکسلی،
کدکها و
ابعاد فریم
پشتیبانیشده)
و خروج.
مقادیر در دسترس عبارتند از:
- all
- نمایش تمام قالبهای در دسترس (فشرده و غیرفشرده).
- raw
- نمایش صرفاً قالبهای ویدیوی خام (غیرفشرده).
- compressed
- نمایش صرفاً قالبهای فشردهشده.
- list_standards
- فهرست کردن
استانداردهای
پشتیبانیشده
و خروج.
مقادیر در دسترس عبارتند از:
- all
- نمایش تمام استانداردهای پشتیبانیشده.
- timestamps, ts
- تنظیم نوع
برچسبهای
زمانی برای
فریمهای
ضبطشده.
مقادیر موجود عبارتند از:
مقدار پیشفرض "default" است.
- use_libv4l2
- استفاده از توابع تبدیل libv4l2 (v4l-utils). پیشفرض 0 است.
vfwcap
دستگاه ورودی دریافت تصویر VfW (Video for Windows).
نام پرونده ارائهشده به عنوان ورودی، شماره راهانداز (درایور) ضبط است که از 0 تا 9 متغیر است. میتوانید از "list" به عنوان نام پرونده استفاده کنید تا فهرستی از درایورها چاپ شود. هر نام پرونده دیگری به عنوان دستگاه شماره 0 تفسیر خواهد شد.
گزینهها (Options)
- video_size
- تنظیم اندازه فریم ویدیو.
- framerate
- تنظیم نرخ فریم دریافت. مقدار پیشفرض "ntsc" است، که با نرخ فریم "30000/1001" مطابقت دارد.
x11grab
دستگاه ورودی ویدیوی X11.
برای فعالسازی این دستگاه ورودی در هنگام پیکربندی، باید libxcb روی سیستم شما نصب باشد. این بسته بهطور خودکار در طول پیکربندی شناسایی خواهد شد.
این دستگاه امکان ضبط بخشی از یک نمایشگر X11 را فراهم میسازد.
نحو نام پرونده ارائهشده به عنوان ورودی به شکل زیر است:
[<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>]
عبارت hostname:display_number.screen_number نام نمایشگر X11 صفحهای که باید ضبط شود را تعیین میکند. hostname میتواند حذف شود، و پیشفرض آن "localhost" است. متغیر محیطی DISPLAY شامل نام نمایشگر پیشفرض است.
x_offset و y_offset آفستهای ناحیه ضبطشده را نسبت به گوشه بالا سمت چپ صفحه X11 مشخص میکنند. پیشفرض آنها 0 است.
برای اطلاعات دقیقتر، به مستندات X11 (مانند man X) مراجعه کنید.
از برنامه xdpyinfo برای دریافت اطلاعات اولیه درباره ویژگیهای نمایشگر X11 خود استفاده کنید (به عنوان مثال جستجوی "name" یا "dimensions" با grep).
برای مثال جهت ضبط از :0.0 با استفاده از ffmpeg:
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
ضبط در موقعیت "10,20":
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
گزینهها (Options)
- select_region
- تعیین اینکه آیا ناحیه ضبط به صورت گرافیکی و با استفاده از نشانگر ماوس انتخاب شود یا خیر. مقدار 1 از کاربر میخواهد که با کلیک و کشیدن (درگ کردن)، ناحیه ضبط را به صورت گرافیکی انتخاب کند. یک کلیک ساده بدون کشیدن، کل صفحه را انتخاب میکند. ناحیهای با پهنا یا ارتفاع صفر نیز کل صفحه را انتخاب مینماید. این گزینه بر گزینههای video_size، grab_x و grab_y بازنویسی میشود. مقدار پیشفرض 0 است.
- draw_mouse
- تعیین اینکه آیا نشانگر ماوس ترسیم شود یا خیر. مقدار 0 تعیین میکند که نشانگر ترسیم نشود. مقدار پیشفرض 1 است.
- follow_mouse
- پیروی
ناحیه
ضبطشده از
مکاننمای
ماوس. این
آرگومان
میتواند
"centered" یا
تعداد
پیکسل PIXELS
باشد.
هنگامی که با "centered" مشخص شود، ناحیه ضبط از نشانگر ماوس پیروی میکند و نشانگر را در مرکز ناحیه نگه میدارد؛ در غیر این صورت، ناحیه تنها زمانی دنبال میکند که نشانگر ماوس به فاصله کمتر از PIXELS (بزرگتر از صفر) از لبه ناحیه برسد.
به عنوان مثال:
ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
برای پیروی تنها زمانی که نشانگر ماوس به فاصله ۱۰۰ پیکسلی از لبه میرسد:
ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
- framerate
- تنظیم نرخ فریم دریافت. مقدار پیشفرض "ntsc" است، که با نرخ فریم "30000/1001" مطابقت دارد.
- show_region
- نمایش
ناحیه
ضبطشده
روی صفحه
نمایش.
اگر show_region برابر با 1 تعیین شود، ناحیه ضبط روی صفحه نمایش نشان داده خواهد شد. با این گزینه، در صورتی که فقط بخشی از صفحه ضبط شود، به آسانی میتوان دریافت که چه قسمتی در حال ضبط است.
- region_border
- تنظیم
ضخامت کادر
حاشیه
ناحیه در
صورت
استفاده از
-show_region 1. محدوده
مجاز بین 1
تا 128 است و
پیشفرض 3
میباشد
(تنها برای x11grab
مبتنی بر XCB).
به عنوان مثال:
ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
همراه با follow_mouse:
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
- window_id
- ضبط از این
پنجره، به
جای کل
صفحه. مقدار
پیشفرض 0
است که به
کل صفحه
(پنجره ریشه
/ root window) نگاشت
میشود.
شناسه یک پنجره را میتوان با استفاده از برنامه xwininfo پیدا کرد، احتمالاً همراه با گزینههای -tree و -root.
اگر بعداً اندازه پنجره بزرگتر شود، ناحیه جدید ضبط نمیشود. ویدیو زمانی به پایان میرسد که پنجره بسته شود، پنهان (unmapped، یعنی کمینهشده / iconified) گردد یا کوچکتر از اندازه ویدیو شود (که به طور پیشفرض همان اندازه اولیه پنجره است).
این گزینه گزینههای follow_mouse و select_region را غیرفعال میکند.
- video_size
- تنظیم اندازه فریم ویدیو. پیشفرض کل میزکار یا کل پنجره است.
- grab_x
- grab_y
- تنظیم مختصات ناحیه ضبط. این مقادیر به صورت آفست از گوشه بالا سمت چپ پنجره X11 بیان میشوند و با پارامترهای x_offset و y_offset در نام دستگاه مطابقت دارند. مقدار پیشفرض برای هر دو گزینه 0 است.
گزینههای تغییر نمونهبرداری (RESAMPLER OPTIONS)
تغییردهنده نمونهبرداری صدا از گزینههای نامبرده زیر پشتیبانی میکند.
گزینهها را میتوان با تعیین -گزینه مقدار در ابزارهای FFmpeg، گزینه=مقدار برای فیلتر aresample، با تنظیم مستقیم مقدار در گزینههای "SwrContext" یا با استفاده از API در libavutil/opt.h برای کاربردهای برنامهنویسی تنظیم کرد.
- uchl, used_chlayout
- تنظیم چینش کانال ورودیِ استفادهشده. پیشفرض تنظیمنشده (unset) است. این گزینه تنها برای بازنگاشت (remapping) ویژه استفاده میشود.
- isr, in_sample_rate
- تنظیم نرخ نمونهبرداری ورودی. مقدار پیشفرض 0 است.
- osr, out_sample_rate
- تنظیم نرخ نمونهبرداری خروجی. مقدار پیشفرض 0 است.
- isf, in_sample_fmt
- تعیین قالب نمونهبرداری ورودی. به طور پیشفرض روی "none" تنظیم شده است.
- osf, out_sample_fmt
- تعیین قالب نمونهبرداری خروجی. به طور پیشفرض روی "none" تنظیم شده است.
- tsf, internal_sample_fmt
- تنظیم قالب نمونهبرداری داخلی. مقدار پیشفرض "none" است. هنگامی که صراحتاً تنظیم نشود، این مورد به صورت خودکار انتخاب خواهد شد.
- ichl, in_chlayout
- ochl, out_chlayout
- تنظیم چینش
کانال
ورودی/خروجی.
برای نحو مورد نیاز به بخش چینش کانال در راهنمای ffmpeg-utils(1) مراجعه کنید.
- clev, center_mix_level
- تنظیم سطح ترکیب (میکس) کانال مرکزی. مقداری است بر حسب دسیبل و باید در بازه [-32,32] باشد.
- slev, surround_mix_level
- تنظیم سطح ترکیب کانال فراگیر (سوراند). مقداری است بر حسب دسیبل و باید در بازه [-32,32] باشد.
- lfe_mix_level
- تنظیم سطح ترکیب LFE در کانالهای غیر LFE. زمانی استفاده میشود که ورودی LFE وجود دارد اما خروجی LFE وجود ندارد. مقداری است بر حسب دسیبل و باید در بازه [-32,32] باشد.
- rmvol, rematrix_volume
- تنظیم حجم صدای بازترکیب (rematrix). مقدار پیشفرض 1.0 است.
- rematrix_maxval
- تنظیم حداکثر مقدار خروجی برای بازترکیب. این مورد میتواند برای جلوگیری از برش صدا (clipping) در برابر جلوگیری از کاهش حجم صدا استفاده شود. مقدار 1.0 از برش صدا جلوگیری میکند.
- flags, swr_flags
- تنظیم
پرچمهای
مورد
استفاده
مبدل. مقدار
پیشفرض 0
است.
از پرچمهای تکی زیر پشتیبانی میکند:
- res
- اجبار به تغییر نمونهبرداری؛ این پرچم تغییر نمونهبرداری را تحمیل میکند حتی زمانی که نرخ نمونهبرداری ورودی و خروجی یکسان باشد.
- dither_scale
- تنظیم مقیاس دیتر (dither). مقدار پیشفرض 1 است.
- dither_method
- تنظیم روش
دیتر. مقدار
پیشفرض 0
است.
مقادیر پشتیبانیشده:
- rectangular
- انتخاب دیتر مستطیلی
- triangular
- انتخاب دیتر مثلثی
- triangular_hp
- انتخاب دیتر مثلثی با فیلتر بالاگذر
- lipshitz
- انتخاب دیتر شکلدهی نوفه لیپشیتز (Lipshitz).
- shibata
- انتخاب دیتر شکلدهی نوفه شیباتا (Shibata).
- low_shibata
- انتخاب دیتر شکلدهی نوفه شیباتای پایین.
- high_shibata
- انتخاب دیتر شکلدهی نوفه شیباتای بالا.
- f_weighted
- انتخاب دیتر شکلدهی نوفه با وزندهی f
- modified_e_weighted
- انتخاب دیتر شکلدهی نوفه با وزندهی modified-e
- improved_e_weighted
- انتخاب دیتر شکلدهی نوفه با وزندهی improved-e
- resampler
- تنظیم
موتور
تغییر
نمونهبرداری.
مقدار
پیشفرض swr
است.
مقادیر پشتیبانیشده:
- filter_size
- تنها برای swr؛ تنظیم اندازه فیلتر تغییر نمونهبرداری، مقدار پیشفرض 32 است.
- phase_shift
- تنها برای swr؛ تنظیم شیفت فاز تغییر نمونهبرداری، مقدار پیشفرض 10 است و باید در بازه [0,30] باشد.
- linear_interp
- استفاده از درونیابی خطی در صورت فعال بودن (پیشفرض). اگر میخواهید هنگام شکست exact_rational به جای کیفیت، سرعت حفظ شود، آن را غیرفعال کنید.
- exact_rational
- تنها برای swr؛ در صورت فعال بودن، تلاش میکند بر اساس نرخ نمونهبرداری ورودی و خروجی از phase_count دقیق استفاده کند. با این حال، اگر بزرگتر از "1 << phase_shift" باشد، مقدار phase_count به عنوان جایگزین برابر با "1 << phase_shift" خواهد شد. پیشفرض فعال است.
- cutoff
- تنظیم نسبت فرکانس قطع (swr: نقطه 6dB؛ soxr: نقطه 0dB)؛ باید یک مقدار اعشاری بین 0 و 1 باشد. مقدار پیشفرض با swr برابر 0.97 و با soxr برابر 0.91 است (که در نرخ نمونهبرداری 44100، کل باند صوتی را تا 20kHz حفظ میکند).
- precision
- تنها برای soxr؛ دقت بر حسب بیت که سیگنال تغییر نمونهیافته با آن محاسبه خواهد شد. مقدار پیشفرض 20 (که با دیترینگ مناسب برای عمق بیت مقصد 16 مناسب است) کیفیت بالای SoX ('High Quality') را به دست میدهد؛ مقدار 28 کیفیت بسیار بالای SoX ('Very High Quality') را ارائه میکند.
- cheby
- تنها برای soxr؛ انتخاب رولآف باند گذر بدون افت (چبیشف / Chebyshev) و تقریب با دقت بالاتر برای نسبتهای «گنگ». مقدار پیشفرض 0 است.
- async
- تنها برای swr؛ همگامسازی ساده صوتی ۱ پارامتری با برچسبهای زمانی با استفاده از کشیدن، فشردهسازی، پر کردن و برش دادن. تنظیم این مقدار روی 1 پر کردن و برش دادن را فعال میکند؛ مقادیر بزرگتر نشاندهنده حداکثر مقدار بر حسب نمونه است که دادهها ممکن است در هر ثانیه کشیده یا فشرده شوند. مقدار پیشفرض 0 است، بنابراین هیچ جبرانی برای تطبیق نمونهها با برچسبهای زمانی صدا اعمال نمیشود.
- first_pts
- تنها برای swr؛ فرض میکند که اولین pts باید این مقدار باشد. واحد زمان 1 / نرخ نمونهبرداری است. این امکان پدگذاری/برش در آغاز جریان را فراهم میسازد. به طور پیشفرض، هیچ فرضی درباره pts مورد انتظار اولین فریم وجود ندارد، بنابراین هیچ پدگذاری یا برشی صورت نمیگیرد. به عنوان مثال، در صورتی که یک جریان صوتی پس از جریان ویدیو آغاز شود، میتوان این مقدار را روی 0 تنظیم کرد تا ابتدای آن با سکوت پر شود، یا نمونههایی که به دلیل تأخیر انکودر pts منفی دارند بریده شوند.
- min_comp
- تنها برای swr؛ تنظیم حداقل اختلاف میان برچسبهای زمانی و دادههای صوتی (بر حسب ثانیه) برای آغاز کشیدن/فشردهسازی/پر کردن یا برش دادهها به منظور تطبیق با برچسبهای زمانی. پیشفرض این است که کشیدن/فشردهسازی/پر کردن و برش غیرفعال است (min_comp = "FLT_MAX").
- min_hard_comp
- تنها برای swr؛ تنظیم حداقل اختلاف میان برچسبهای زمانی و دادههای صوتی (بر حسب ثانیه) برای آغاز افزودن/انداختن نمونهها به منظور تطبیق با برچسبهای زمانی. این گزینه در واقع آستانهای برای انتخاب میان جبران سخت (برش/پر کردن) و نرم (فشردهسازی/کشیدگی) است. توجه داشته باشید که تمامی جبرانها به طور پیشفرض از طریق min_comp غیرفعال هستند. پیشفرض 0.1 است.
- comp_duration
- تنها برای swr؛ تنظیم مدتزمان (بر حسب ثانیه) که دادهها در طول آن کشیده/فشرده میشوند تا با برچسبهای زمانی مطابقت یابند. باید یک مقدار اعشاری ممیز شناور مضاعف غیرمنفی باشد؛ مقدار پیشفرض 1.0 است.
- max_soft_comp
- تنها برای swr؛ تنظیم حداکثر ضریبی که دادهها با آن کشیده/فشرده میشوند تا با برچسبهای زمانی مطابقت یابند. باید یک مقدار اعشاری ممیز شناور مضاعف غیرمنفی باشد؛ مقدار پیشفرض 0 است.
- matrix_encoding
- انتخاب
انکودینگ
استریوی
ماتریسی.
مقادیر زیر را میپذیرد:
مقدار پیشفرض "none" است.
- filter_type
- تنها برای
swr؛ انتخاب
نوع فیلتر
تغییر
نمونهبرداری.
این گزینه
تنها بر
عملیات
تغییر
نمونهبرداری
تأثیر
میگذارد.
مقادیر زیر را میپذیرد:
- cubic
- انتخاب مکعبی (cubic)
- blackman_nuttall
- انتخاب سینک با پنجره بلکمن-ناتال (Blackman Nuttall)
- kaiser
- انتخاب سینک با پنجره کایزر (Kaiser)
- kaiser_beta
- تنها برای swr؛ تنظیم مقدار بتای پنجره کایزر. باید یک مقدار اعشاری در بازه [2,16] باشد؛ مقدار پیشفرض 9 است.
- output_sample_bits
- تنها برای swr؛ تنظیم تعداد بیتهای نمونه خروجی مورد استفاده برای دیترینگ. باید یک عدد صحیح در بازه [0,64] باشد؛ مقدار پیشفرض 0 است، که به معنای عدم استفاده است.
گزینههای مقیاسبندی (SCALER OPTIONS)
مقیاسبخش ویدیو از گزینههای نامبرده زیر پشتیبانی میکند.
گزینهها را میتوان با تعیین -گزینه مقدار در ابزارهای FFmpeg تنظیم کرد، به جز چند مورد استثنا که فقط مختص API هستند و در زیر ذکر شدهاند. برای کاربردهای برنامهنویسی، میتوان آنها را صراحتاً در گزینههای "SwsContext" یا از طریق API موجود در libavutil/opt.h تنظیم نمود.
- scaler, scaler_sub
- انتخاب الگوریتم مقیاسبندی مورد استفاده. مقدار پیشفرض برای هر دو auto است. مقادیر زیر را میپذیرد:
- auto
- انتخاب خودکار. برای scaler_sub، این به معنای همان الگوریتم scaler است. برای scaler، پیشفرض روی پرچم مقیاسبخش انتخابشده توسط sws_flags قرار میگیرد.
- bilinear
- فیلتر دوخطی (Bilinear؛ معروف به فیلتر مثلثی).
- bicubic
- اسپلاین دومکعبی BC با ۲ تپ (معروف به اسپلاین Mitchell-Netravali). پارامترهای B و C را میتوان با تنظیم "param0" و "param1" پیکربندی کرد، که به ترتیب پیشفرض 0.0 و 0.6 دارند.
- point, neighbor
- نمونهبرداری نقطهای (معروف به نزدیکترین همسایه / nearest neighbor).
- area
- میانگینگیری مساحتی. برای بزرگنمایی (upscaling) معادل bilinear است.
- gaussian
- تقریب فیلتر گوسی با ۲ تپ. پارامتر وضوح (sharpness) را میتوان با تنظیم "param0" پیکربندی کرد، که پیشفرض 3.0 است.
- sinc
- فیلتر sinc بدون پنجره.
- lanczos
- تغییر نمونهبرداری لنتسوش (Lanczos؛ سینک با پنجره سینک). تعداد تپهای فیلتر را میتوان با تنظیم "param0" پیکربندی کرد، که پیشفرض 3 است.
- spline
- اسپلاین طبیعی دومکعبی بدون پنجره.
- sws_flags
- تنظیم
پرچمهای
مقیاسبخش.
از این
گزینه برای
تعیین
الگوریتم
مقیاسبندی
نیز
استفاده
میشود،
اگرچه این
کاربرد به
نفع تنظیم
scaler منسوخ
شده است.
تنها یک
الگوریتم
واحد
میتواند
انتخاب شود.
مقدار
پیشفرض bicubic
است.
مقادیر زیر را میپذیرد:
- fast_bilinear
- انتخاب الگوریتم مقیاسبندی دوخطی سریع. (منسوخ)
- bilinear
- انتخاب الگوریتم مقیاسبندی دوخطی. (منسوخ)
- bicubic
- انتخاب الگوریتم مقیاسبندی دومکعبی. (منسوخ)
- experimental
- انتخاب الگوریتم مقیاسبندی آزمایشی. (منسوخ)
- neighbor
- انتخاب الگوریتم تغییر مقیاس نزدیکترین همسایه. (منسوخ)
- area
- انتخاب الگوریتم تغییر مقیاس میانگینگیری مساحت. (منسوخ)
- bicublin
- انتخاب الگوریتم مقیاسبندی دومکعبی برای مؤلفه روشنایی (luma) و دوخطی برای مؤلفههای رنگ (chroma). (منسوخ)
- gauss
- انتخاب الگوریتم تغییر مقیاس گوسی. (منسوخ)
- sinc
- انتخاب الگوریتم تغییر مقیاس sinc. (منسوخ)
- lanczos
- انتخاب الگوریتم تغییر مقیاس لنتسوش (Lanczos). پهنای پیشفرض (آلفا) 3 است و میتواند با تنظیم "param0" تغییر یابد. (منسوخ)
- spline
- انتخاب الگوریتم تغییر مقیاس اسپلاین طبیعی دومکعبی. (منسوخ)
- print_info
- فعالسازی چاپ اطلاعات / ثبت وقایع اشکالزدایی.
- accurate_rnd
- فعالسازی گرد کردن دقیق.
- full_chroma_int
- فعالسازی درونیابی کامل کروما.
- full_chroma_inp
- انتخاب ورودی کامل کروما.
- bitexact
- فعالسازی خروجی دقیق بیتبهبیت (bitexact).
- unstable
- اجازه استفاده از کدهای جدید آزمایشی. ممکن است اندکی بر خروجی تأثیر بگذارد یا حتی نتایج نادرست تولید کند. تنها برای آزمایش.
- srcw (تنها API)
- تنظیم عرض مبدأ.
- srch (تنها API)
- تنظیم ارتفاع مبدأ.
- dstw (تنها API)
- تنظیم عرض مقصد.
- dsth (تنها API)
- تنظیم ارتفاع مقصد.
- src_format (تنها API)
- تنظیم قالب پیکسلی مبدأ (باید به صورت یک عدد صحیح بیان شود).
- dst_format (تنها API)
- تنظیم قالب پیکسلی مقصد (باید به صورت یک عدد صحیح بیان شود).
- src_range (بولی)
- اگر مقدار روی 1 تنظیم شود، نشاندهنده دامنه کامل (full range) بودن مبدأ است. مقدار پیشفرض 0 است که نشاندهنده دامنه محدود (limited range) بودن مبدأ است.
- dst_range (بولی)
- اگر مقدار روی 1 تنظیم شود، دامنه کامل را برای مقصد فعال میکند. مقدار پیشفرض 0 است که دامنه محدود را فعال میسازد.
- gamma (بولی)
- اگر مقدار روی 1 تنظیم شود، مقیاسبندی با تصحیح گاما فعال میشود. مقدار پیشفرض 0 است.
- param0, param1
- تنظیم پارامترهای الگوریتم مقیاسبندی. مقادیر تعیینشده مختص برخی الگوریتمهای مقیاسبندی هستند و توسط سایرین نادیده گرفته میشوند. مقادیر تعیینشده مقادیر عددی ممیز شناور هستند.
- sws_dither
- تنظیم الگوریتم دیترینگ. یکی از مقادیر زیر را میپذیرد. مقدار پیشفرض auto است.
- alphablend
- تنظیم ترکیب آلفا هنگامی که ورودی دارای آلفا است اما خروجی فاقد آن است. مقدار پیشفرض none است.
- uniform_color
- ترکیب روی یک رنگ پسزمینه یکنواخت
- checkerboard
- ترکیب روی صفحه شطرنجی
- none
- بدون ترکیب
- sws_backends
- تنظیم بکاندهای مجاز swscale. این یک گزینه پرچمی است، بنابراین چندین بکاند میتوانند با یکدیگر ترکیب شوند.
- auto
- انتخاب خودکار. بسته به اینکه پرچم unstable تنظیم شده باشد یا خیر، برابر با stable یا all خواهد بود. این مقدار پیشفرض است.
- stable
- تمامی بکاندهای پایدار.
- unstable
- تمامی بکاندهای ناپایدار.
- all
- تمامی بکاندهای در دسترس.
- legacy
- کد موروثی و قدیمی swscale.
- c
- کد مرجع مبتنی بر الگو (Template-based).
- memcpy
- مسیر سریع با استفاده از "memcpy" در libc.
- x86
- کرنلهای SIMD معماری x86.
- aarch64
- کرنلهای NEON معماری AArch64.
- spirv
- بکاند Vulkan SPIR-V.
مقدمه فیلترگذاری (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 DESCRIPTION)
یک گراف فیلتر (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" تنظیم شود.
- s, 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 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 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.
کتابخانههای خارجی (EXTERNAL LIBRARIES)
ابزار FFmpeg میتواند به منظور افزودن پشتیبانی از قالبهای بیشتر، به تعدادی از کتابخانههای خارجی متصل شود. هیچیک از آنها به طور پیشفرض استفاده نمیشوند، و استفاده از آنها باید صراحتاً با ارسال پرچمهای مناسب به ./configure درخواست شود.
Alliance for Open Media (AOM)
ابزار FFmpeg میتواند از کتابخانه AOM برای رمزگشایی و کدگذاری AV1 استفاده کند.
به http://aomedia.org مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libaom" را به configure ارسال کنید تا فعال شود.
AMD AMF/VCE
ابزار FFmpeg میتواند از کتابخانه AMD Advanced Media Framework برای کدگذاری شتابیافته H.264 و HEVC (تنها در ویندوز) بر روی سختافزارهای مجهز به موتور کدگذاری ویدیو (VCE) استفاده کند.
برای فعالسازی پشتیبانی باید فایلهای سرآیند فریمورک AMF (نسخه 1.4.9 یا بالاتر) را از https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git دریافت کنید.
یک پوشه به نام "AMF/" در مسیر include سیستم ایجاد کنید. محتویات "AMF/amf/public/include/" را درون آن پوشه کپی نمایید. سپس FFmpeg را با گزینه "--enable-amf" پیکربندی کنید.
مقداردهی اولیه کدگذار amf به این ترتیب صورت میگیرد: 1) تلاش برای مقداردهی از طریق dx11 (تنها در ویندوز) 2) تلاش برای مقداردهی از طریق dx9 (تنها در ویندوز) 3) تلاش برای مقداردهی از طریق vulkan
برای استفاده از کدگذار h.264 (AMD VCE) در لینوکس، نسخه 19.20 یا بالاتر amdgpu-pro و بسته amf-amdgpu-pro (در amdgpu-pro موجود است اما به طور خودکار نصب نمیشود) مورد نیاز است.
این درایور را میتوان با استفاده از اسکریپت amdgpu-pro-install در آرشیو رسمی درایور amd نصب کرد.
AviSynth
ابزار FFmpeg میتواند اسکریپتهای AviSynth را به عنوان ورودی بخواند. برای فعالسازی پشتیبانی، پس از نصب هدرهای ارائهشده توسط https://github.com/AviSynth/AviSynthPlus، گزینه "--enable-avisynth" را به configure ارسال کنید. AviSynth+ را میتوان طوری پیکربندی کرد که فقط هدرها را یا با ارسال "-DHEADERS_ONLY:bool=on" به سیستم ساخت مبتنی بر CMake، یا با استفاده از "GNUmakefile" ارائهشده نصب نماید.
برای ویندوز، نسخههای پشتیبانیشده AviSynth عبارتند از http://avisynth.nl برای ساختهای 32 بیتی و <http://avisynth.nl/index.php/AviSynth+> برای ساختهای 32 بیتی و 64 بیتی.
برای لینوکس، macOS و BSD، تنها نسخه پشتیبانیشده AviSynth، https://github.com/AviSynth/AviSynthPlus است که از نسخه 3.5 آغاز میشود.
به طور پیشفرض، FFmpeg سازگاری با ساختهای 32 بیتی MSVC از AviSynth+ را فرض میکند زیرا این پیکربندی پرکاربردترین و تثبیتشدهترین پیکربندی ساخت است. کاربران میتوانند با ارسال "-DAVSC_WIN32_GCC32" به "--extra-cflags" در هنگام پیکربندی FFmpeg، این رفتار را بازنویسی کرده و پشتیبانی از ساختهای 32 بیتی GCC از AviSynth+ را فعال کنند.
ساختهای 64 بیتی FFmpeg تحت تأثیر قرار نمیگیرند و میتوانند از ساختهای MSVC یا GCC از AviSynth+ بدون هیچ پرچم خاصی استفاده کنند.
Chromaprint
ابزار FFmpeg میتواند از کتابخانه Chromaprint برای تولید اثر انگشت صوتی استفاده کند. برای فعالسازی آن گزینه "--enable-chromaprint" را به configure ارسال کنید. https://acoustid.org/chromaprint را ببینید.
codec2
ابزار FFmpeg میتواند از کتابخانه codec2 برای رمزگشایی و کدگذاری codec2 استفاده کند. در حال حاضر هیچ رمزگشای بومی وجود ندارد، بنابراین libcodec2 باید برای رمزگشایی استفاده شود.
به http://freedv.org بروید و "Codec 2 source archive" را دانلود کنید. با استفاده از CMake بسازید و نصب کنید. کاربران دبیان میتوانند به جای آن بسته libcodec2-dev را نصب کنند. پس از نصب libcodec2 میتوانید "--enable-libcodec2" را به configure بفرستید تا فعال شود.
سادهترین راه برای استفاده از codec2 با پروندههای .c2 است، زیرا آنها حاوی اطلاعات حالت مورد نیاز برای رمزگشایی هستند. برای کدگذاری چنین پروندهای، از پسوند پرونده .c2 استفاده کرده و گزینه -mode را به کدگذار libcodec2 بدهید: "ffmpeg -i input.wav -mode 700C output.c2". پخش آن به سادگی اجرای "ffplay output.c2" است. برای مشاهده فهرستی از حالتهای پشتیبانیشده، دستور "ffmpeg -h encoder=libcodec2" را اجرا کنید. پروندههای خام codec2 نیز پشتیبانی میشوند. برای قابل فهم شدن آنها، حالت مورد استفاده باید به عنوان یک گزینه قالب تعیین شود: "ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav".
dav1d
ابزار FFmpeg میتواند از کتابخانه dav1d برای رمزگشایی ویدیوی AV1 استفاده کند.
به https://code.videolan.org/videolan/dav1d بروید و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libdav1d" را به configure ارسال نمایید تا فعال شود.
davs2
ابزار FFmpeg میتواند از کتابخانه davs2 برای رمزگشایی ویدیوی AVS2-P2/IEEE1857.4 استفاده کند.
به https://github.com/pkuvcl/davs2 بروید و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libdavs2" را به configure بفرستید تا فعال شود.
uavs3d
ابزار FFmpeg میتواند از کتابخانه uavs3d برای رمزگشایی ویدیوی AVS3-P2/IEEE1857.10 استفاده کند.
به https://github.com/uavs3/uavs3d مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libuavs3d" را به configure ارسال نمایید تا فعال شود.
Game Music Emu
ابزار FFmpeg میتواند از کتابخانه Game Music Emu برای خواندن صدا از قالبهای پرونده موسیقی بازیهای ویدیویی پشتیبانیشده استفاده کند. برای فعالسازی آن گزینه "--enable-libgme" را به configure ارسال کنید. https://bitbucket.org/mpyne/game-music-emu/overview را ببینید.
Intel QuickSync Video
ابزار FFmpeg میتواند از Intel QuickSync Video (QSV) برای شتاببخشی به رمزگشایی و کدگذاری چندین کدک استفاده کند. برای استفاده از QSV، ابزار FFmpeg باید به توزیعکننده (dispatcher) "libmfx" پیوند داده شود، که کتابخانههای رمزگشایی واقعی را بارگذاری میکند.
این توزیعکننده متنباز است و میتوان آن را از https://github.com/lu-zero/mfx_dispatch.git دانلود کرد. ابزار FFmpeg باید با گزینه "--enable-libmfx" پیکربندی شود و ابزار "pkg-config" باید بتواند پروندههای ".pc" توزیعکننده را بیابد.
Kvazaar
ابزار FFmpeg میتواند از کتابخانه Kvazaar برای کدگذاری HEVC استفاده کند.
به https://github.com/ultravideo/kvazaar بروید و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس گزینه "--enable-libkvazaar" را به configure ارسال کنید تا فعال شود.
LAME
ابزار FFmpeg میتواند از کتابخانه LAME برای کدگذاری MP3 استفاده کند.
به http://lame.sourceforge.net مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libmp3lame" را به configure بفرستید تا فعال شود.
LCEVCdec
ابزار FFmpeg میتواند از کتابخانه liblcevc_dec برای رمزگشایی لایه ارتقادهنده LCEVC در بیتاستریمهای پشتیبانیشده استفاده کند.
به https://github.com/v-novaltd/LCEVCdec بروید و دستورالعملهای نصب کتابخانه را دنبال نمایید. سپس "--enable-liblcevc-dec" را به configure ارسال کنید تا فعال شود.
libilbc
کدک iLBC یک کدک صوتی گفتاری باند باریک است که توسط گوگل به عنوان بخشی از پروژه WebRTC به طور رایگان عرضه شده است. کتابخانه libilbc نسخهای مناسب برای بستهبندی از کدک iLBC است. ابزار FFmpeg میتواند از کتابخانه libilbc برای رمزگشایی و کدگذاری iLBC استفاده کند.
به https://github.com/TimothyGu/libilbc مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libilbc" را به configure ارسال کنید تا فعال شود.
libjxl
قالب JPEG XL یک قالب تصویری است که هدف آن جایگزینی کامل JPEG سنتی برای یک بازه زمانی طولانی است. برای اطلاعات بیشتر https://jpegxl.info و برای سورس کتابخانه https://github.com/libjxl/libjxl را ببینید. میتوانید "--enable-libjxl" را به configure بفرستید تا لفاف libjxl فعال شود.
libvpx
ابزار FFmpeg میتواند از کتابخانه libvpx برای رمزگشایی و کدگذاری VP8/VP9 استفاده کند.
به http://www.webmproject.org بروید و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libvpx" را به configure ارسال کنید تا فعال شود.
ModPlug
ابزار FFmpeg میتواند از این کتابخانه، با منشأ در Modplug-XMMS، برای خواندن از پروندههای موسیقی شبه-MOD استفاده کند. https://github.com/Konstanty/libmodplug را ببینید. گزینه "--enable-libmodplug" را به configure بفرستید تا فعال گردد.
ONNX Runtime
ابزار FFmpeg میتواند از کتابخانه ONNX Runtime به عنوان یک بکاند برای فیلترهای مبتنی بر DNN استفاده کند.
به https://onnxruntime.ai مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال نمایید. بستههای از پیش ساختهشده برای پلتفرمهای مختلف در دسترس هستند.
پیکربندی FFmpeg با پشتیبانی از ONNX Runtime:
./configure \
--enable-libonnxruntime \
--extra-cflags="-I/path/to/onnxruntime/include" \
--extra-ldflags="-L/path/to/onnxruntime/lib"
در سیستمهای مبتنی بر ELF (لینوکس، BSD) ممکن است بخواهید مسیر جستجوی کتابخانه را تعبیه کنید تا فایل اجرایی ffmpeg نصبشده بتواند کتابخانه اشتراکی را در زمان اجرا بدون تنظیم LD_LIBRARY_PATH پیدا کند:
./configure \
--enable-libonnxruntime \
--extra-cflags="-I/path/to/onnxruntime/include" \
--extra-ldflags="-L/path/to/onnxruntime/lib -Wl,-rpath,/path/to/onnxruntime/lib"
پرچم "-Wl,-rpath" ویژه سیستمهای ELF است و باید در سایر پلتفرمها (ویندوز، macOS) حذف شود.
برای ساختهای MinGW GCC، پرچم "-D_stdcall=__stdcall" را برای سازگاری با هدرهای ONNX Runtime اضافه کنید.
OpenCORE, VisualOn, and Fraunhofer libraries
کتابخانههای OpenCore، VisualOn و Fraunhofer که از سورسهای اندروید گوگل منشعب شدهاند، کدگذارهایی را برای تعدادی از کدکهای صوتی ارائه میدهند.
مجوز کتابخانه Fraunhofer AAC با مجوز GPL ناسازگار است. بنابراین، برای ساختهای GPL، باید گزینه "--enable-nonfree" را به configure بفرستید تا بتوانید از آن استفاده کنید. تا آنجا که ما میدانیم، این مجوز با LGPL سازگار است.
OpenCORE AMR
ابزار FFmpeg میتواند از کتابخانههای OpenCORE برای کدگذاری/رمزگشایی AMR-NB و رمزگشایی AMR-WB استفاده کند.
به http://sourceforge.net/projects/opencore-amr مراجعه کرده و دستورالعملهای نصب کتابخانهها را دنبال نمایید. سپس "--enable-libopencore-amrnb" و/یا "--enable-libopencore-amrwb" را به configure بفرستید تا فعال شوند.
VisualOn AMR-WB encoder library
ابزار FFmpeg میتواند از کتابخانه VisualOn AMR-WBenc برای کدگذاری AMR-WB استفاده کند.
به http://sourceforge.net/projects/opencore-amr بروید و دستورالعملهای نصب کتابخانه را دنبال نمایید. سپس "--enable-libvo-amrwbenc" را به configure ارسال نمایید تا فعال شود.
Fraunhofer AAC library
ابزار FFmpeg میتواند از کتابخانه Fraunhofer AAC برای رمزگشایی و کدگذاری AAC استفاده کند.
به http://sourceforge.net/projects/opencore-amr بروید و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libfdk-aac" را به configure بفرستید تا فعال شود.
Fraunhofer MPEG-H 3D Audio decoder library
ابزار FFmpeg میتواند از کتابخانه رمزگشای Fraunhofer MPEG-H برای رمزگشایی MPEG-H 3DA استفاده کند.
به https://github.com/Fraunhofer-IIS/mpeghdec مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال نمایید. سپس "--enable-libmpeghdec --enable-nonfree" را به configure ارسال کنید تا فعال شود.
LC3 library
ابزار FFmpeg میتواند از کتابخانه Google LC3 برای رمزگشایی و کدگذاری LC3 استفاده کند.
به https://github.com/google/liblc3 مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-liblc3" را به configure بفرستید تا فعال شود.
OpenH264
ابزار FFmpeg میتواند از کتابخانه OpenH264 برای رمزگشایی و کدگذاری H.264 استفاده کند.
به http://www.openh264.org مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال نمایید. سپس "--enable-libopenh264" را به configure بفرستید تا فعال شود.
برای رمزگشایی، این کتابخانه بسیار محدودتر از دیکودر داخلی در libavcodec است؛ در حال حاضر این کتابخانه فاقد پشتیبانی از رمزگشایی فریمهای B و برخی ویژگیهای دیگر پروفایل main/high است. (در حال حاضر تنها از constrained baseline profile و CABAC پشتیبانی میکند.) استفاده از آن بیشتر برای آزمایش و بهرهمندی از مجوز پرتفوی حق اختراع سیسکو (http://www.openh264.org/BINARY_LICENSE.txt) مفید است.
OpenJPEG
ابزار FFmpeg میتواند از کتابخانههای OpenJPEG برای رمزگشایی/کدگذاری ویدیوهای J2K استفاده کند. به http://www.openjpeg.org مراجعه کرده تا کتابخانهها را دریافت کنید و دستورالعملهای نصب را دنبال نمایید. برای فعالسازی استفاده از OpenJPEG در FFmpeg، گزینه "--enable-libopenjpeg" را به ./configure ارسال کنید.
rav1e
ابزار FFmpeg میتواند از rav1e (کدگذار AV1 با Rust) از طریق اتصالات C آن برای کدگذاری ویدیوها استفاده کند. به https://github.com/xiph/rav1e بروید و دستورالعملها را برای ساخت کتابخانه C دنبال کنید. برای فعالسازی استفاده از rav1e در FFmpeg، گزینه "--enable-librav1e" را به ./configure ارسال کنید.
SVT-AV1
ابزار FFmpeg میتواند از کتابخانه Scalable Video Technology for AV1 برای کدگذاری AV1 استفاده کند.
به https://gitlab.com/AOMediaCodec/SVT-AV1 مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libsvtav1" را به configure ارسال نمایید تا فعال شود.
SVT-JPEG-XS
ابزار FFmpeg میتواند از کتابخانه Scalable Video Technology for JPEG-XS برای رمزگشایی و کدگذاری JPEG-XS استفاده کند.
به https://github.com/OpenVisualCloud/SVT-JPEG-XS مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libsvtjpegxs" را به configure ارسال کنید تا فعال شود.
TwoLAME
ابزار FFmpeg میتواند از کتابخانه TwoLAME برای کدگذاری MP2 استفاده کند.
به http://www.twolame.org مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال کنید. سپس "--enable-libtwolame" را به configure ارسال کنید تا فعال شود.
VapourSynth
ابزار FFmpeg میتواند اسکریپتهای VapourSynth را به عنوان ورودی بخواند. برای فعالسازی پشتیبانی، گزینه "--enable-vapoursynth" را به configure ارسال کنید. Vapoursynth از طریق "pkg-config" شناسایی میشود. نسخههای 42 یا بالاتر پشتیبانی میشوند. http://www.vapoursynth.com را ببینید.
به دلایل امنیتی، اسکریپتهای Vapoursynth به طور خودکار شناسایی نخواهند شد، بنابراین قالب ورودی باید اجبار شود. برای ابزارهای خط فرمان *ff، عبارت "-f vapoursynth" را قبل از ورودی "-i yourscript.vpy" اضافه کنید.
x264
ابزار FFmpeg میتواند از کتابخانه x264 برای کدگذاری H.264 استفاده کند.
به http://www.videolan.org/developers/x264.html مراجعه کرده و دستورالعملهای نصب کتابخانه را دنبال نمایید. سپس "--enable-libx264" را به configure ارسال کنید تا فعال شود.
x265
ابزار FFmpeg میتواند از کتابخانه x265 برای کدگذاری HEVC استفاده کند.
به http://x265.org/developers.html بروید و دستورالعملها را برای نصب کتابخانه دنبال کنید. سپس "--enable-libx265" را به configure ارسال کنید تا فعال شود.
xavs
ابزار FFmpeg میتواند از کتابخانه xavs برای کدگذاری AVS استفاده کند.
به http://xavs.sf.net مراجعه کرده و دستورالعملها را برای نصب کتابخانه دنبال کنید. سپس "--enable-libxavs" را به configure ارسال نمایید تا فعال شود.
xavs2
ابزار FFmpeg میتواند از کتابخانه xavs2 برای کدگذاری ویدیوی AVS2-P2/IEEE1857.4 استفاده کند.
به https://github.com/pkuvcl/xavs2 بروید و دستورالعملها را برای نصب کتابخانه دنبال نمایید. سپس "--enable-libxavs2" را به configure ارسال کنید تا فعال شود.
eXtra-fast Essential Video Encoder (XEVE)
ابزار FFmpeg میتواند از کتابخانه XEVE برای کدگذاری ویدیوی EVC استفاده کند.
به https://github.com/mpeg5/xeve مراجعه کرده و دستورالعملهای نصب کتابخانه XEVE را دنبال نمایید. سپس "--enable-libxeve" را به configure ارسال کنید تا فعال گردد.
eXtra-fast Essential Video Decoder (XEVD)
ابزار FFmpeg میتواند از کتابخانه XEVD برای رمزگشایی ویدیوی EVC استفاده کند.
به https://github.com/mpeg5/xevd مراجعه کرده و دستورالعملهای نصب کتابخانه XEVD را دنبال نمایید. سپس "--enable-libxevd" را به configure بفرستید تا فعال شود.
ZVBI
کتابخانه ZVBI یک کتابخانه رمزگشایی VBI است که میتواند توسط FFmpeg برای رمزگشایی صفحات تلهتکست DVB و زیرنویسهای تلهتکست DVB استفاده شود.
به http://sourceforge.net/projects/zapping بروید و دستورالعملها را برای نصب کتابخانه دنبال نمایید. سپس "--enable-libzvbi" را به configure ارسال کنید تا فعال شود.
قالبهای پرونده پشتیبانیشده (SUPPORTED FILE FORMATS)
میتوانید از گزینههای "-formats" و "-codecs" برای دریافت یک فهرست کامل استفاده کنید.
قالبهای پرونده (File Formats)
ابزار FFmpeg از قالبهای پرونده زیر از طریق کتابخانه "libavformat" پشتیبانی میکند:
- Name : Encoding @tab Decoding @tab Comments
- 3dostr : @tab X
- 4xm : @tab X
-
@tab قالب 4X Technologies، استفادهشده در برخی بازیها.
- 8088flex TMV : @tab X
- AAX : @tab X
-
@tab قالب صوتی پیشرفته Audible، استفادهشده در کتابهای صوتی.
- AA : @tab X
-
@tab قالبهای Audible نسخه 2، 3 و 4، استفادهشده در کتابهای صوتی.
- ACT Voice : @tab X
-
@tab شامل صدای G.729
- Adobe Filmstrip : X @tab X
- Audio IFF (AIFF) : X @tab X
- American Laser Games MM : @tab X
-
@tab قالب چندرسانهای استفادهشده در بازیهایی مانند Mad Dog McCree.
- 3GPP AMR : X @tab X
- Amazing Studio Packed Animation File : @tab X
-
@tab قالب چندرسانهای استفادهشده در بازی Heart Of Darkness.
- Apple HTTP Live Streaming : @tab X
- Artworx Data Format : @tab X
- Interplay ACM : @tab X
-
@tab قالب صرفاً صوتی استفادهشده در برخی بازیهای Interplay.
- ADP : @tab X
-
@tab قالب صوتی استفادهشده در Nintendo Gamecube.
- AFC : @tab X
-
@tab قالب صوتی استفادهشده در Nintendo Gamecube.
- ADS/SS2 : @tab X
-
@tab قالب صوتی استفادهشده در PS2.
- APNG : X @tab X
- ASF : X @tab X
-
@tab قالب استریم پیشرفته / فعال (ASF).
- AST : X @tab X
-
@tab قالب صوتی استفادهشده در Nintendo Wii.
- AVI : X @tab X
- AviSynth : @tab X
- AVR : @tab X
-
@tab قالب صوتی استفادهشده در مک (Mac).
- AVS : @tab X
-
@tab قالب چندرسانهای استفادهشده در بازی Creature Shock.
- Beam Software SIFF : @tab X
-
@tab قالب صوتی و تصویری استفادهشده در برخی بازیهای Beam Software.
- Bethesda Softworks VID : @tab X
-
@tab استفادهشده در برخی بازیهای Bethesda Softworks.
- Binary text : @tab X
- Bink : @tab X
-
@tab قالب چندرسانهای استفادهشده توسط بسیاری از بازیها.
- Bink Audio : @tab X
-
@tab قالب چندرسانهای صرفاً صوتی استفادهشده در برخی بازیها.
- Bitmap Brothers JV : @tab X
-
@tab استفادهشده در بازیهای Z و Z95.
- BRP : @tab X
-
@tab قالب بازیهای Argonaut.
- Brute Force & Ignorance : @tab X
-
@tab استفادهشده در بازی Flash Traffic: City of Angels.
- BFSTM : @tab X
-
@tab قالب صوتی استفادهشده در Nintendo WiiU (بر پایه BRSTM).
- BRSTM : @tab X
-
@tab قالب صوتی استفادهشده در Nintendo Wii.
- BW64 : @tab X
-
@tab قالب Broadcast Wave 64bit.
- BWF : X @tab X
- codec2 (raw) : X @tab X
-
@tab برای رمزگشایی صحیح باید گزینه قالب -mode به آن داده شود.
- codec2 (.c2 files) : X @tab X
-
@tab شامل سرآیند با اطلاعات نسخه و حالت، که پخش را سادهتر میکند.
- CRI ADX : X @tab X
-
@tab قالب صرفاً صوتی استفادهشده در بازیهای ویدیویی کنسول.
- CRI AIX : @tab X
- CRI HCA : @tab X
-
@tab قالب صرفاً صوتی استفادهشده در بازیهای ویدیویی کنسول.
- Discworld II BMV : @tab X
- Interplay C93 : @tab X
-
@tab استفادهشده در بازی Cyberia از شرکت Interplay.
- Delphine Software International CIN : @tab X
-
@tab قالب چندرسانهای استفادهشده در بازیهای Delphine Software.
- Digital Speech Standard (DSS) : @tab X
- CD+G : @tab X
-
@tab قالب ویدیویی استفادهشده در دیسکهای کارائوکه +CD
- Phantom Cine : @tab X
- Commodore CDXL : @tab X
-
@tab قالب ویدیویی Amiga CD
- Core Audio Format : X @tab X
-
@tab قالب صوتی Apple Core Audio
- CRC testing format : X @tab
- Creative Voice : X @tab X
-
@tab ساختهشده برای Sound Blaster Pro.
- CRYO APC : @tab X
-
@tab قالب صوتی استفادهشده در برخی بازیهای CRYO Interactive Entertainment.
- D-Cinema audio : X @tab X
- Deluxe Paint Animation : @tab X
- DCSTR : @tab X
- DFA : @tab X
-
@tab این قالب در بازی Chronomaster استفاده شده است
- DirectDraw Surface : @tab X
- DSD Stream File (DSF) : @tab X
- DV video : X @tab X
- DXA : @tab X
-
@tab این قالب در نسخه غیر ویندوزی بازی Feeble Files استفاده شده است game and different game cutscenes repacked for use with ScummVM. - Electronic Arts cdata : @tab X
- Electronic Arts Multimedia : @tab X
-
@tab استفادهشده در بازیهای مختلف EA؛ پروندهها پسوندهایی مانند WVE و UV2 دارند.
- Ensoniq Paris Audio File : @tab X
- FFM (FFserver live feed) : X @tab X
- Flash (SWF) : X @tab X
- Flash 9 (AVM2) : X @tab X
-
@tab تنها صدای جاسازیشده رمزگشایی میشود.
- FLI/FLC/FLX animation : @tab X
-
@tab پروندههای .fli/.flc
- Flash Video (FLV) : X @tab X
-
@tab پروندههای ویدیویی Macromedia Flash
- framecrc testing format : X @tab
- FunCom ISS : @tab X
-
@tab قالب صوتی استفادهشده در بازیهای گوناگون FunCom مانند The Longest Journey.
- G.723.1 : X @tab X
- G.726 : @tab X @tab Both left- and right-justified.
- G.729 BIT : X @tab X
- G.729 raw : @tab X
- GENH : @tab X
-
@tab قالب صوتی برای بازیهای گوناگون.
- GIF Animation : X @tab X
- GXF : X @tab X
-
@tab قالب General eXchange Format SMPTE 360M، استفادهشده توسط Thomson Grass Valley playout servers. - HNM : @tab X
-
@tab تنها نسخه 4 پشتیبانی میشود، استفادهشده در برخی بازیهای Cryo Interactive
- iCEDraw File : @tab X
- ICO : X @tab X
-
@tab قالب آیکون مایکروسافت ویندوز (ICO)
- id Quake II CIN video : @tab X
- id RoQ : X @tab X
-
@tab استفادهشده در Quake III، Jedi Knight 2 و سایر بازیهای رایانهای.
- IEC61937 encapsulation : X @tab X
- IFF : @tab X
-
@tab قالب پرونده مبادلهای (IFF)
- IFV : @tab X
-
@tab قالبی مورد استفاده در برخی دستگاههای DVR قدیمی دوربین مداربسته.
- iLBC : X @tab X
- Interplay MVE : @tab X
-
@tab قالب استفادهشده در بازیهای رایانهای گوناگون Interplay.
- Iterated Systems ClearVideo : @tab X
-
@tab تنها فریمهای I
- IV8 : @tab X
-
@tab قالبی تولیدشده توسط سرور ویدیویی IndigoVision 8000.
- IVF (On2) : X @tab X
-
@tab قالبی مورد استفاده توسط libvpx
- Internet Video Recording : @tab X
- IRCAM : X @tab X
- LAF : @tab X
-
@tab قالب صوتی Limitless Audio Format
- LATM : X @tab X
- LMLM4 : @tab X
-
@tab استفادهشده توسط بردهای MPEG-4 PCI شرکت Linux Media Labs
- LOAS : @tab X
-
@tab شامل صدای AAC مالتیپلکسشده با LATM
- LRC : X @tab X
- LVF : @tab X
- LXF : @tab X
-
@tab قالب استریم بومی VR، استفادهشده توسط سرورهای ویدیویی Leitch/Harris.
- Magic Lantern Video (MLV) : @tab X
- Matroska : X @tab X
- Matroska audio : X @tab
- FFmpeg metadata : X @tab X
-
@tab فراداده به قالب متنی.
- MAXIS XA : @tab X
-
@tab استفادهشده در Sim City 3000؛ پسوند پرونده .xa.
- MCA : @tab X
-
@tab استفادهشده در برخی بازیهای Capcom؛ پسوند پرونده .mca.
- MD Studio : @tab X
- Metal Gear Solid: The Twin Snakes : @tab X
- Megalux Frame : @tab X
-
@tab استفادهشده توسط Megalux Ultimate Paint
- MobiClip MODS : @tab X
- MobiClip MOFLEX : @tab X
- Mobotix .mxg : @tab X
- Monkey's Audio : @tab X
- Motion Pixels MVI : @tab X
- MOV/QuickTime/MP4 : X @tab X
-
@tab گونههای 3GP، 3GP2، PSP و iPod پشتیبانی میشوند
- MP2 : X @tab X
- MP3 : X @tab X
- MPEG-1 System : X @tab X
-
@tab صدا و تصویر میکسشده، قالب VCD پشتیبانی میشود
- MPEG-PS (program stream) : X @tab X
-
@tab همچنین به عنوان پرونده C<VOB> شناخته میشود، قالبهای SVCD و DVD پشتیبانی میشوند
- MPEG-TS (transport stream) : X @tab X
-
@tab همچنین به عنوان DVB Transport Stream شناخته میشود
- MPEG-4 : X @tab X
-
@tab قالب MPEG-4 گونهای از QuickTime است.
- MSF : @tab X
-
@tab قالب صوتی استفادهشده در PS3.
- Mirillis FIC video : @tab X
-
@tab بدون رندر نشانگر مکاننما.
- MIDI Sample Dump Standard : @tab X
- MIME multipart JPEG : X @tab
- MSN TCP webcam : @tab X
-
@tab استفادهشده توسط استریمهای وبکم MSN Messenger.
- MTV : @tab X
- Musepack : @tab X
- Musepack SV8 : @tab X
- Material eXchange Format (MXF) : X @tab X
-
@tab استاندارد SMPTE 377M، مورد استفاده در سینمای دیجیتال (D-Cinema) و صنعت پخش.
- Material eXchange Format (MXF), D-10 Mapping : X @tab X
-
@tab استاندارد SMPTE 386M، نگاشت D-10/IMX.
- NC camera feed : @tab X
-
@tab استریمهای دوربین NC (AVIP NC4600)
- NIST SPeech HEader REsources : @tab X
- Computerized Speech Lab NSP : @tab X
- NTT TwinVQ (VQF) : @tab X
-
@tab قالب TwinVQ شرکت تلگراف و تلفن نیپون (NTT).
- Nullsoft Streaming Video : @tab X
- NuppelVideo : @tab X
- NUT : X @tab X
-
@tab قالب کانتینر باز NUT
- Ogg : X @tab X
- Playstation Portable PMP : @tab X
- Portable Voice Format : @tab X
- RK Audio (RKA) : @tab X
- TechnoTrend PVA : @tab X
-
@tab استفادهشده توسط بردهای TechnoTrend DVB PCI.
- QCP : @tab X
- raw ADTS (AAC) : X @tab X
- raw AC-3 : X @tab X
- raw AMR-NB : @tab X
- raw AMR-WB : @tab X
- raw APAC : @tab X
- raw APV : X @tab X
- raw aptX : X @tab X
- raw aptX HD : X @tab X
- raw Bonk : @tab X
- raw Chinese AVS video : X @tab X
- raw DFPWM : X @tab X
- raw Dirac : X @tab X
- raw DNxHD : X @tab X
- raw DTS : X @tab X
- raw DTS-HD : @tab X
- raw E-AC-3 : X @tab X
- raw EVC : X @tab X
- raw FLAC : X @tab X
- raw G.728 : @tab X
- raw GSM : @tab X
- raw H.261 : X @tab X
- raw H.263 : X @tab X
- raw H.264 : X @tab X
- raw HEVC : X @tab X
- raw Ingenient MJPEG : @tab X
- raw MJPEG : X @tab X
- raw MLP : @tab X
- raw MPEG : @tab X
- raw MPEG-1 : @tab X
- raw MPEG-2 : @tab X
- raw MPEG-4 : X @tab X
- raw NULL : X @tab
- raw video : X @tab X
- raw id RoQ : X @tab
- raw OBU : X @tab X
- raw OSQ : @tab X
- raw SBC : X @tab X
- raw Shorten : @tab X
- raw TAK : @tab X
- raw TrueHD : X @tab X
- raw VC-1 : X @tab X
- raw PCM A-law : X @tab X
- raw PCM mu-law : X @tab X
- raw PCM Archimedes VIDC : X @tab X
- raw PCM signed 8 bit : X @tab X
- raw PCM signed 16 bit big-endian : X @tab X
- raw PCM signed 16 bit little-endian : X @tab X
- raw PCM signed 24 bit big-endian : X @tab X
- raw PCM signed 24 bit little-endian : X @tab X
- raw PCM signed 32 bit big-endian : X @tab X
- raw PCM signed 32 bit little-endian : X @tab X
- raw PCM signed 64 bit big-endian : X @tab X
- raw PCM signed 64 bit little-endian : X @tab X
- raw PCM unsigned 8 bit : X @tab X
- raw PCM unsigned 16 bit big-endian : X @tab X
- raw PCM unsigned 16 bit little-endian : X @tab X
- raw PCM unsigned 24 bit big-endian : X @tab X
- raw PCM unsigned 24 bit little-endian : X @tab X
- raw PCM unsigned 32 bit big-endian : X @tab X
- raw PCM unsigned 32 bit little-endian : X @tab X
- raw PCM 16.8 floating point little-endian : @tab X
- raw PCM 24.0 floating point little-endian : @tab X
- raw PCM floating-point 32 bit big-endian : X @tab X
- raw PCM floating-point 32 bit little-endian : X @tab X
- raw PCM floating-point 64 bit big-endian : X @tab X
- raw PCM floating-point 64 bit little-endian : X @tab X
- RDT : @tab X
- REDCODE R3D : @tab X
-
@tab قالب پرونده مورد استفاده توسط دوربینهای دیجیتال RED، شامل فریمهای JPEG 2000 و صدای PCM.
- RealMedia : X @tab X
- Redirector : @tab X
- RedSpark : @tab X
- Renderware TeXture Dictionary : @tab X
- Resolume DXV : X @tab X
-
@tab کدگذاری تنها برای قالب بافت DXT1 (کیفیت عادی، بدون آلفا) پشتیبانی میشود.
- RF64 : @tab X
- RL2 : @tab X
-
@tab قالب صوتی و تصویری استفادهشده در برخی بازیهای Entertainment Software Partners.
- RPL/ARMovie : @tab X
- Lego Mindstorms RSO : X @tab X
- RSD : @tab X
- RTMP : X @tab X
-
@tab خروجی از طریق انتشار استریم به سرور RTMP انجام میشود
- RTP : X @tab X
- RTSP : X @tab X
- Sample Dump eXchange : @tab X
- SAP : X @tab X
- SBG : @tab X
- SDNS : @tab X
- SDP : @tab X
- SER : @tab X
- Digital Pictures SGA : @tab X
- Sega FILM/CPK : X @tab X
-
@tab استفادهشده در بسیاری از بازیهای کنسول Sega Saturn.
- Silicon Graphics Movie : @tab X
- Sierra SOL : @tab X
-
@tab پروندههای .sol استفادهشده در بازیهای Sierra Online.
- Sierra VMD : @tab X
-
@tab استفادهشده در بازیهای Sierra CD-ROM.
- Smacker : @tab X
-
@tab قالب چندرسانهای استفادهشده توسط بسیاری از بازیها.
- SMJPEG : X @tab X
-
@tab استفادهشده در پورتهای بازیهای خاص Loki.
- SMPTE 337M encapsulation : @tab X
- Smush : @tab X
-
@tab قالب چندرسانهای استفادهشده در برخی بازیهای LucasArts.
- Sony OpenMG (OMA) : X @tab X
-
@tab قالب صوتی استفادهشده در Sony Sonic Stage و Sony Vegas.
- Sony PlayStation STR : @tab X
- Sony Wave64 (W64) : X @tab X
- SoX native format : X @tab X
- SUN AU format : X @tab X
- SUP raw PGS subtitles : X @tab X
- SVAG : @tab X
-
@tab قالب صوتی استفادهشده در بازیهای Konami PS2.
- TDSC : @tab X
- Text files : @tab X
- THP : @tab X
-
@tab استفادهشده در Nintendo GameCube.
- Tiertex Limited SEQ : @tab X
-
@tab پروندههای Tiertex .seq استفادهشده در نسخه داس CD-ROM بازی Flashback.
- True Audio : X @tab X
- VAG : @tab X
-
@tab قالب صوتی استفادهشده در بسیاری از بازیهای سونی PS2.
- VC-1 test bitstream : X @tab X
- Vidvox Hap : X @tab X
- Vivo : @tab X
- VPK : @tab X
-
@tab قالب صوتی استفادهشده در بازیهای سونی PS.
- Marble WADY : @tab X
- WAV : X @tab X
- Waveform Archiver : @tab X
- WavPack : X @tab X
- WebM : X @tab X
- Windows Televison (WTV) : X @tab X
- Wing Commander III movie : @tab X
-
@tab قالب چندرسانهای استفادهشده در بازی رایانهای Wing Commander III از شرکت Origin.
- Westwood Studios audio : X @tab X
-
@tab قالب چندرسانهای استفادهشده در بازیهای Westwood Studios.
- Westwood Studios VQA : @tab X
-
@tab قالب چندرسانهای استفادهشده در بازیهای Westwood Studios.
- Wideband Single-bit Data (WSD) : @tab X
- WVE : @tab X
- Konami XMD : @tab X
- XMV : @tab X
-
@tab کانتینر ویدیویی مایکروسافت استفادهشده در بازیهای Xbox.
- XVAG : @tab X
-
@tab قالب صوتی استفادهشده در PS3.
- xWMA : @tab X
-
@tab کانتینر صوتی مایکروسافت استفادهشده توسط XAudio 2.
- eXtended BINary text (XBIN) : @tab X
- YUV4MPEG pipe : X @tab X
- Psygnosis YOP : @tab X
"X" به این معنی است که قابلیت آن ستون (کدگذاری / رمزگشایی) پشتیبانی میشود.
قالبهای تصویر (Image Formats)
ابزار FFmpeg میتواند تصاویر را برای هر فریم از یک توالی ویدیویی بخواند و بنویسد. قالبهای تصویر زیر پشتیبانی میشوند:
- Name : Encoding @tab Decoding @tab Comments
- .Y.U.V : X @tab X
-
@tab یک پرونده خام به ازای هر مولفه
- Alias PIX : X @tab X
-
@tab قالب تصویر Alias/Wavefront PIX
- animated GIF : X @tab X
- APNG : X @tab X
-
@tab قالب تصاویر متحرک شبکه (APNG)
- BMP : X @tab X
-
@tab تصویر بیتمپ مایکروسافت (BMP)
- BRender PIX : @tab X
-
@tab قالب تصویر موتور سهبعدی Argonaut BRender.
- CRI : @tab X
-
@tab قالب Cintel RAW
- DPX : X @tab X
-
@tab تبادل تصاویر دیجیتال (DPX)
- EXR : @tab X
-
@tab قالب OpenEXR
- FITS : X @tab X
-
@tab سامانه منعطف انتقال تصویر (FITS)
- HDR : X @tab X
-
@tab قالب تصویر Radiance HDR RGBE
- IMG : @tab X
-
@tab تصویر شطرنجی (رستر) GEM
- JPEG : X @tab X
-
@tab قالب Progressive JPEG پشتیبانی نمیشود.
- JPEG 2000 : X @tab X
- JPEG-LS : X @tab X
- JPEG-XS : E @tab E
-
@tab پشتیبانیشده از طریق کتابخانه خارجی libsvtjpegxs
- LJPEG : X @tab
-
@tab قالب JPEG بدون افت (Lossless)
- Media 100 : @tab X
- MSP : @tab X
-
@tab تصویر مایکروسافت پینت (MSP)
- PAM : X @tab X
-
@tab قالب PAM یک پسوند PNM با پشتیبانی از کانال آلفا است.
- PBM : X @tab X
-
@tab قالب تصویر بیتمپ قابلحمل (PBM)
- PCD : @tab X
-
@tab قالب PhotoCD
- PCX : X @tab X
-
@tab قالب تصویر PC Paintbrush
- PFM : X @tab X
-
@tab قالب تصویر FloatMap قابلحمل (PFM)
- PGM : X @tab X
-
@tab قالب تصویر GrayMap قابلحمل (PGM)
- PGMYUV : X @tab X
-
@tab قالب PGM به همراه مولفههای U و V در YUV 4:2:0
- PGX : @tab X
-
@tab دیکودر پروندههای PGX
- PHM : X @tab X
-
@tab قالب تصویر HalfFloatMap قابلحمل (PHM)
- PIC : @tab X
-
@tab قالب Pictor/PC Paint
- PNG : X @tab X
-
@tab قالب تصویر گرافیک شبکهای قابلحمل (PNG)
- PPM : X @tab X
-
@tab قالب تصویر PixelMap قابلحمل (PPM)
- PSD : @tab X
-
@tab قالب ادوبی فتوشاپ (PSD)
- PTX : @tab X
-
@tab قالب V.Flash PTX
- QOI : X @tab X
-
@tab قالب تصویر Quite OK Image (QOI)
- SGI : X @tab X
-
@tab قالب تصویر RGB متعلق به SGI
- Sun Rasterfile : X @tab X
-
@tab قالب تصویر Sun RAS
- TIFF : X @tab X
-
@tab قالبهای YUV، JPEG و برخی پسوندها هنوز پشتیبانی نمیشوند.
- Truevision Targa : X @tab X
-
@tab قالب تصویر Targa (.TGA)
- VBN : X @tab X
-
@tab قالب تصویر باینری Vizrt
- WBMP : X @tab X
-
@tab قالب تصویر بیتمپ پروتکل برنامههای بیسیم (WBMP)
- WebP : E @tab X
-
@tab قالب تصویر WebP، کدگذاری از طریق کتابخانه خارجی libwebp پشتیبانی میشود
- XBM : X @tab X
-
@tab قالب تصویر X BitMap (XBM)
- XFace : X @tab X
-
@tab قالب تصویر X-Face
- XPM : @tab X
-
@tab قالب تصویر X PixMap (XPM)
- XWD : X @tab X
-
@tab قالب تصویر X Window Dump (XWD)
علامت "X" به این معنی است که قابلیت موجود در آن ستون (کدگذاری / رمزگشایی) پشتیبانی میشود.
علامت "E" به این معنی است که پشتیبانی از طریق یک کتابخانه خارجی فراهم میشود.
کدکهای ویدیو (Video Codecs)
- Name : Encoding @tab Decoding @tab Comments
- 4X Movie : @tab X
-
@tab مورد استفاده در برخی بازیهای رایانهای.
- 8088flex TMV : @tab X
- A64 multicolor : X @tab
-
@tab ویدیوی مناسب برای پخش روی کمودور ۶۴ (حالت چندرنگ) ایجاد میکند.
- Amazing Studio PAF Video : @tab X
- American Laser Games MM : @tab X
-
@tab مورد استفاده در بازیهایی مانند Mad Dog McCree.
- Amuse Graphics Movie : @tab X
- AMV Video : X @tab X
-
@tab مورد استفاده در پخشکنندههای MP3 چینی.
- ANSI/ASCII art : @tab X
- Apple Intermediate Codec : @tab X
- Apple MJPEG-B : @tab X
- Apple Pixlet : @tab X
- Apple ProRes : X @tab X
-
@tab شناسه fourcc: apch,apcn,apcs,apco,ap4h,ap4x
- Apple QuickDraw : @tab X
-
@tab شناسه fourcc: qdrw
- APV : @tab X
- Argonaut Video : @tab X
-
@tab مورد استفاده در برخی بازیهای شرکت Argonaut.
- Asus v1 : X @tab X
-
@tab شناسه fourcc: ASV1
- Asus v2 : X @tab X
-
@tab شناسه fourcc: ASV2
- ATI VCR1 : @tab X
-
@tab شناسه fourcc: VCR1
- ATI VCR2 : @tab X
-
@tab شناسه fourcc: VCR2
- Auravision Aura : @tab X
- Auravision Aura 2 : @tab X
- Autodesk Animator Flic video : @tab X
- Autodesk RLE : @tab X
-
@tab شناسه fourcc: AASC
- AV1 : E @tab E
-
@tab پشتیبانیشده از طریق کتابخانههای خارجی libaom، libdav1d، librav1e و libsvtav1
- Avid 1:1 10-bit RGB Packer : X @tab X
-
@tab شناسه fourcc: AVrp
- AVS (Audio Video Standard) video : @tab X
-
@tab کدگذاری ویدیویی مورد استفاده در بازی Creature Shock.
- AVS2-P2/IEEE1857.4 : E @tab E
-
@tab پشتیبانیشده از طریق کتابخانههای خارجی libxavs2 و libdavs2
- AVS3-P2/IEEE1857.10 : @tab E
-
@tab پشتیبانیشده از طریق کتابخانه خارجی libuavs3d
- AYUV : X @tab X
-
@tab قالب فشردهنشده بستهبندیشده 4:4:4:4 مایکروسافت
- Beam Software VB : @tab X
- Bethesda VID video : @tab X
-
@tab مورد استفاده در برخی بازیهای استودیو Bethesda Softworks.
- Bink Video : @tab X
- BitJazz SheerVideo : @tab X
- Bitmap Brothers JV video : @tab X
- y41p Brooktree uncompressed 4:1:1 12-bit : X @tab X
- Brooktree ProSumer Video : @tab X
-
@tab شناسه fourcc: BT20
- Brute Force & Ignorance : @tab X
-
@tab مورد استفاده در بازی Flash Traffic: City of Angels.
- C93 video : @tab X
-
@tab کدک مورد استفاده در بازی Cyberia.
- CamStudio : @tab X
-
@tab شناسه fourcc: CSCD
- CD+G : @tab X
-
@tab کدک ویدیو برای دیسکهای کارائوکه CD+G
- CDXL : @tab X
-
@tab کدک ویدیویی Amiga CD
- Chinese AVS video : E @tab X
-
@tab استاندارد AVS1-P2، نمایه JiZhun، کدگذاری از طریق کتابخانه خارجی libxavs
- Delphine Software International CIN video : @tab X
-
@tab کدک مورد استفاده در بازیهای شرکت Delphine Software International.
- Discworld II BMV Video : @tab X
- CineForm HD : X @tab X
- Canopus HQ : @tab X
- Canopus HQA : @tab X
- Canopus HQX : @tab X
- Canopus Lossless Codec : @tab X
- CDToons : @tab X
-
@tab کدک مورد استفاده در بازیهای مختلف شرکت Broderbund.
- Cinepak : @tab X
- Cirrus Logic AccuPak : X @tab X
-
@tab شناسه fourcc: CLJR
- CPiA Video Format : @tab X
- Creative YUV (CYUV) : @tab X
- DFA : @tab X
-
@tab کدک مورد استفاده در بازی Chronomaster.
- Dirac : E @tab X
-
@tab پشتیبانیشده از طریق کدگذار توکار vc2 (Dirac Pro)
- Deluxe Paint Animation : @tab X
- DNxHD : X @tab X
-
@tab همچنین شناختهشده با عنوان SMPTE VC3
- Duck TrueMotion 1.0 : @tab X
-
@tab شناسه fourcc: DUCK
- Duck TrueMotion 2.0 : @tab X
-
@tab شناسه fourcc: TM20
- Duck TrueMotion 2.0 RT : @tab X
-
@tab شناسه fourcc: TR20
- DV (Digital Video) : X @tab X
- Dxtory capture format : @tab X
- Feeble Files/ScummVM DXA : @tab X
-
@tab کدک مورد استفاده اولیه در بازی Feeble Files.
- Electronic Arts CMV video : @tab X
-
@tab مورد استفاده در بازی NHL 95.
- Electronic Arts Madcow video : @tab X
- Electronic Arts TGV video : @tab X
- Electronic Arts TGQ video : @tab X
- Electronic Arts TQI video : @tab X
- Escape 124 : @tab X
- Escape 130 : @tab X
- EVC / MPEG-5 Part 1 : E @tab E
-
@tab کدگذاری و رمزگشایی از طریق کتابخانههای خارجی libxeve و libxevd پشتیبانی میشود
- FFmpeg video codec #1 : X @tab X
-
@tab کدک بدون افت (شناسه fourcc: FFV1)
- Flash Screen Video v1 : X @tab X
-
@tab شناسه fourcc: FSV1
- Flash Screen Video v2 : X @tab X
- Flash Video (FLV) : X @tab X
-
@tab کدک Sorenson H.263 مورد استفاده در Flash
- FM Screen Capture Codec : @tab X
- Forward Uncompressed : @tab X
- Fraps : @tab X
- Go2Meeting : @tab X
-
@tab شناسه fourcc: G2M2, G2M3
- Go2Webinar : @tab X
-
@tab شناسه fourcc: G2M4
- Gremlin Digital Video : @tab X
- H.261 : X @tab X
- H.263 / H.263-1996 : X @tab X
- H.263+ / H.263-1998 / H.263 version 2 : X @tab X
- H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 : E @tab X
-
@tab کدگذاری از طریق کتابخانههای خارجی libx264 و OpenH264 پشتیبانی میشود
- HEVC : X @tab X
-
@tab کدگذاری از طریق کتابخانههای خارجی libx265 و libkvazaar پشتیبانی میشود
- HNM version 4 : @tab X
- HuffYUV : X @tab X
- HuffYUV FFmpeg variant : X @tab X
- IBM Ultimotion : @tab X
-
@tab شناسه fourcc: ULTI
- id Cinematic video : @tab X
-
@tab مورد استفاده در بازی Quake II.
- id RoQ video : X @tab X
-
@tab مورد استفاده در بازیهای Quake III، Jedi Knight 2 و سایر بازیهای رایانهای.
- IFF ILBM : @tab X
-
@tab بیتمپ درهمتنیده IFF
- IFF ByteRun1 : @tab X
-
@tab بیتمپ کدگذاریشده با طول اجرا (RLE) در IFF
- Infinity IMM4 : @tab X
- Intel H.263 : @tab X
- Intel Indeo 2 : @tab X
- Intel Indeo 3 : @tab X
- Intel Indeo 4 : @tab X
- Intel Indeo 5 : @tab X
- Interplay C93 : @tab X
-
@tab مورد استفاده در بازی Cyberia از شرکت Interplay.
- Interplay MVE video : @tab X
-
@tab مورد استفاده در پروندههای .MVE شرکت Interplay.
- J2K : X @tab X
- Karl Morton's video codec : @tab X
-
@tab کدک مورد استفاده در مجموعه بازیهای Worms.
- Kega Game Video (KGV1) : @tab X
-
@tab کدک ضبط تصویر صفحه برای شبیهساز Kega.
- Lagarith : @tab X
- LCEVC / MPEG-5 LCEVC / MPEG-5 Part 2 : @tab E
-
@tab رمزگشایی از طریق کتابخانه خارجی liblcevc-dec پشتیبانی میشود
- LCL (LossLess Codec Library) MSZH : @tab X
- LCL (LossLess Codec Library) ZLIB : E @tab E
- LEAD MCMP : @tab X
- LOCO : @tab X
- LucasArts SANM/Smush : @tab X
-
@tab مورد استفاده در بازیهای LucasArts و انیمیشنهای SMUSH.
- lossless MJPEG : X @tab X
- MagicYUV Video : X @tab X
- Mandsoft Screen Capture Codec : @tab X
- Microsoft ATC Screen : @tab X
-
@tab همچنین با عنوان Microsoft Screen 3 شناخته میشود.
- Microsoft Expression Encoder Screen : @tab X
-
@tab همچنین با عنوان Microsoft Titanium Screen 2 شناخته میشود.
- Microsoft RLE : X @tab X
- Microsoft Screen 1 : @tab X
-
@tab همچنین با عنوان Windows Media Video V7 Screen شناخته میشود.
- Microsoft Screen 2 : @tab X
-
@tab همچنین با عنوان Windows Media Video V9 Screen شناخته میشود.
- Microsoft Video 1 : @tab X
- Mimic : @tab X
-
@tab مورد استفاده در استریمهای وبکم MSN Messenger.
- Miro VideoXL : @tab X
-
@tab شناسه fourcc: VIXL
- MJPEG (Motion JPEG) : X @tab X
- Mobotix MxPEG video : @tab X
- Motion Pixels video : @tab X
- MPEG-1 video : X @tab X
- MPEG-2 video : X @tab X
- MPEG-4 part 2 : X @tab X
-
@tab برای کدگذاری میتوان به عنوان جایگزین از libxvidcore استفاده کرد.
- MPEG-4 part 2 Microsoft variant version 1 : @tab X
- MPEG-4 part 2 Microsoft variant version 2 : X @tab X
- MPEG-4 part 2 Microsoft variant version 3 : X @tab X
- Newtek SpeedHQ : X @tab X
- Nintendo Gamecube THP video : @tab X
- NotchLC : @tab X
- NuppelVideo/RTjpeg : @tab X
-
@tab کدگذاری ویدیویی مورد استفاده در پروندههای NuppelVideo.
- On2 VP3 : @tab X
-
@tab هنوز آزمایشی است
- On2 VP4 : @tab X
-
@tab شناسه fourcc: VP40
- On2 VP5 : @tab X
-
@tab شناسه fourcc: VP50
- On2 VP6 : @tab X
-
@tab شناسه fourcc: VP60,VP61,VP62
- On2 VP7 : @tab X
-
@tab شناسه fourcc: VP70,VP71
- VP8 : E @tab X
-
@tab شناسه fourcc: VP80، کدگذاری از طریق کتابخانه خارجی libvpx پشتیبانی میشود
- VP9 : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libvpx پشتیبانی میشود
- Pinnacle TARGA CineWave YUV16 : @tab X
-
@tab شناسه fourcc: Y216
- Q-team QPEG : @tab X
-
@tab شناسههای fourcc: QPEG, Q1.0, Q1.1
- QuickTime 8BPS video : @tab X
- QuickTime Animation (RLE) video : X @tab X
-
@tab شناسه fourcc: 'rle '
- QuickTime Graphics (SMC) : X @tab X
-
@tab شناسه fourcc: 'smc '
- QuickTime video (RPZA) : X @tab X
-
@tab شناسه fourcc: rpza
- R10K AJA Kona 10-bit RGB Codec : X @tab X
- R210 Quicktime Uncompressed RGB 10-bit : X @tab X
- Raw Video : X @tab X
- RealVideo 1.0 : X @tab X
- RealVideo 2.0 : X @tab X
- RealVideo 3.0 : @tab X
-
@tab هنوز تا وضعیت مطلوب فاصله زیادی دارد
- RealVideo 4.0 : @tab X
- RealVideo 6.0 : @tab X
- Renderware TXD (TeXture Dictionary) : @tab X
-
@tab فرهنگهای بافت مورد استفاده در موتور Renderware.
- RivaTuner Video : @tab X
-
@tab شناسه fourcc: 'RTV1'
- RL2 video : @tab X
-
@tab مورد استفاده در برخی بازیهای شرکت Entertainment Software Partners
- ScreenPressor : @tab X
- Screenpresso : @tab X
- Screen Recorder Gold Codec : @tab X
- Sierra VMD video : @tab X
-
@tab مورد استفاده در پروندههای VMD شرکت Sierra.
- Silicon Graphics Motion Video Compressor 1 (MVC1) : @tab X
- Silicon Graphics Motion Video Compressor 2 (MVC2) : @tab X
- Silicon Graphics RLE 8-bit video : @tab X
- Smacker video : @tab X
-
@tab کدگذاری ویدیویی مورد استفاده در Smacker.
- SMPTE VC-1 : @tab X
- Snow : X @tab X
-
@tab کدک موجک آزمایشی (شناسه fourcc: SNOW)
- Sony PlayStation MDEC (Motion DECoder) : @tab X
- Sorenson Vector Quantizer 1 : X @tab X
-
@tab شناسه fourcc: SVQ1
- Sorenson Vector Quantizer 3 : @tab X
-
@tab شناسه fourcc: SVQ3
- Sunplus JPEG (SP5X) : @tab X
-
@tab شناسه fourcc: SP5X
- TechSmith Screen Capture Codec : @tab X
-
@tab شناسه fourcc: TSCC
- TechSmith Screen Capture Codec 2 : @tab X
-
@tab شناسه fourcc: TSC2
- Theora : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libtheora پشتیبانی میشود
- Tiertex Limited SEQ video : @tab X
-
@tab کدک مورد استفاده در نسخه DOS CD-ROM بازی FlashBack.
- Ut Video : X @tab X
- v210 QuickTime uncompressed 4:2:2 10-bit : X @tab X
- v308 QuickTime uncompressed 4:4:4 : X @tab X
- v408 QuickTime uncompressed 4:4:4:4 : X @tab X
- v410 QuickTime uncompressed 4:4:4 10-bit : X @tab X
- VBLE Lossless Codec : @tab X
- vMix Video : @tab X
-
@tab شناسه fourcc: 'VMX1'
- VMware Screen Codec / VMware Video : @tab X
-
@tab کدک مورد استفاده در ویدیوهای ضبطشده توسط VMware.
- Westwood Studios VQA (Vector Quantized Animation) video : @tab X
- Windows Media Image : @tab X
- Windows Media Video 7 : X @tab X
- Windows Media Video 8 : X @tab X
- Windows Media Video 9 : @tab X
-
@tab عملکرد آن هنوز کامل نیست
- Wing Commander III / Xan : @tab X
-
@tab مورد استفاده در پروندههای .MVE بازی Wing Commander III.
- Wing Commander IV / Xan : @tab X
-
@tab مورد استفاده در بازی Wing Commander IV.
- Winnov WNV1 : @tab X
- WMV7 : X @tab X
- YAMAHA SMAF : X @tab X
- Psygnosis YOP Video : @tab X
- yuv4 : X @tab X
-
@tab قالب غیرفشرده بستهبندیشده 4:2:0 در libquicktime
- ZeroCodec Lossless Video : @tab X
- ZLIB : X @tab X
-
@tab بخشی از LCL، کدگذار آزمایشی است
- Zip Motion Blocks Video : X @tab X
-
@tab کدگذار فقط در حالت PAL8 کار میکند.
علامت "X" به این معنی است که قابلیت موجود در آن ستون (کدگذاری / رمزگشایی) پشتیبانی میشود.
علامت "E" به این معنی است که پشتیبانی از طریق یک کتابخانه خارجی فراهم میشود.
کدکهای صوتی (Audio Codecs)
- Name : Encoding @tab Decoding @tab Comments
- 8SVX exponential : @tab X
- 8SVX fibonacci : @tab X
- AAC : EX @tab X
-
@tab کدگذاری از طریق کدگذار داخلی و کتابخانه خارجی libfdk-aac پشتیبانی میشود
- AAC+ : E @tab IX
-
@tab کدگذاری از طریق کتابخانه خارجی libfdk-aac پشتیبانی میشود
- AC-3 : IX @tab IX
- ACELP.KELVIN : @tab X
- ADPCM 4X Movie : @tab X
- ADPCM Yamaha AICA : @tab X
- ADPCM AmuseGraphics Movie : @tab X
- ADPCM Argonaut Games : X @tab X
- ADPCM CDROM XA : @tab X
- ADPCM Creative Technology : @tab X
-
@tab 16 -E<gt> 4, 8 -E<gt> 4, 8 -E<gt> 3, 8 -E<gt> 2
- ADPCM Electronic Arts : @tab X
-
@tab مورد استفاده در عناوین مختلف شرکت EA.
- ADPCM Electronic Arts Maxis CDROM XS : @tab X
-
@tab مورد استفاده در بازی Sim City 3000.
- ADPCM Electronic Arts R1 : @tab X
- ADPCM Electronic Arts R2 : @tab X
- ADPCM Electronic Arts R3 : @tab X
- ADPCM Electronic Arts XAS : @tab X
- ADPCM G.722 : X @tab X
- ADPCM G.726 : X @tab X
- ADPCM IMA Acorn Replay : @tab X
- ADPCM IMA AMV : X @tab X
-
@tab مورد استفاده در پروندههای AMV
- ADPCM IMA Cunning Developments : @tab X
- ADPCM IMA Electronic Arts EACS : @tab X
- ADPCM IMA Electronic Arts SEAD : @tab X
- ADPCM IMA Funcom : @tab X
- ADPCM IMA High Voltage Software ALP : X @tab X
- ADPCM IMA Mobiclip MOFLEX : @tab X
- ADPCM IMA QuickTime : X @tab X
- ADPCM IMA Simon & Schuster Interactive : X @tab X
- ADPCM IMA Ubisoft APM : X @tab X
- ADPCM IMA Loki SDL MJPEG : @tab X
- ADPCM IMA WAV : X @tab X
- ADPCM IMA Westwood : @tab X
- ADPCM ISS IMA : @tab X
-
@tab مورد استفاده در بازیهای شرکت FunCom.
- ADPCM IMA Dialogic : @tab X
- ADPCM IMA Duck DK3 : @tab X
-
@tab مورد استفاده در برخی بازیهای کنسول Sega Saturn.
- ADPCM IMA Duck DK4 : @tab X
-
@tab مورد استفاده در برخی بازیهای کنسول Sega Saturn.
- ADPCM IMA Radical : @tab X
- ADPCM IMA Xbox : @tab X
- ADPCM Microsoft : X @tab X
- ADPCM MS IMA : X @tab X
- ADPCM Nintendo Gamecube AFC : @tab X
- ADPCM Nintendo Gamecube DTK : @tab X
- ADPCM Nintendo THP : @tab X
- ADPCM Playstation : @tab X
- ADPCM QT IMA : X @tab X
- ADPCM Sanyo : @tab X
- ADPCM SEGA CRI ADX : X @tab X
-
@tab مورد استفاده در بازیهای کنسول Sega Dreamcast.
- ADPCM Shockwave Flash : X @tab X
- ADPCM Sound Blaster Pro 2-bit : @tab X
- ADPCM Sound Blaster Pro 2.6-bit : @tab X
- ADPCM Sound Blaster Pro 4-bit : @tab X
- ADPCM VIMA : @tab X
-
@tab مورد استفاده در انیمیشنهای SMUSH شرکت LucasArts.
- ADPCM Konami XMD : @tab X
- ADPCM Westwood Studios IMA : X @tab X
-
@tab مورد استفاده در بازیهای شرکت Westwood Studios مانند Command and Conquer.
- ADPCM Yamaha : X @tab X
- ADPCM Zork : @tab X
- AMR-NB : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libopencore-amrnb پشتیبانی میشود
- AMR-WB : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libvo-amrwbenc پشتیبانی میشود
- Amazing Studio PAF Audio : @tab X
- Apple lossless audio : X @tab X
-
@tab شناسه fourcc در کوئیکتایم: 'alac'
- aptX : X @tab X
-
@tab مورد استفاده در نمایه بلوتوث A2DP
- aptX HD : X @tab X
-
@tab مورد استفاده در نمایه بلوتوث A2DP
- ATRAC1 : @tab X
- ATRAC3 : @tab X
- ATRAC3+ : @tab X
- ATRAC9 : @tab X
- Bink Audio : @tab X
-
@tab مورد استفاده در پروندههای Bink و Smacker در بازیهای بسیار.
- Bonk audio : @tab X
- codec2 : E @tab E
-
@tab کدگذاری/رمزگشایی از طریق کتابخانه خارجی libcodec2 پشتیبانی میشود
- CRI HCA : @tab X
- Delphine Software International CIN audio : @tab X
-
@tab کدک مورد استفاده در بازیهای شرکت Delphine Software International.
- DFPWM : X @tab X
- Digital Speech Standard - Standard Play mode (DSS SP) : @tab X
- Discworld II BMV Audio : @tab X
- COOK : @tab X
-
@tab تمام نسخهها به جز 5.1 پشتیبانی میشوند.
- DCA (DTS Coherent Acoustics) : X @tab X
-
@tab پسوندهای پشتیبانیشده: XCh, XXCH, X96, XBR, XLL, LBR (به صورت جزئی)
- Dolby E : @tab X
- DPCM Cuberoot-Delta-Exact : @tab X
-
@tab مورد استفاده در شمار اندکی از بازیها.
- DPCM Gremlin : @tab X
- DPCM id RoQ : X @tab X
-
@tab مورد استفاده در بازیهای Quake III، Jedi Knight 2 و سایر بازیهای رایانهای.
- DPCM Marble WADY : @tab X
- DPCM Interplay : @tab X
-
@tab مورد استفاده در بازیهای رایانهای مختلف شرکت Interplay.
- DPCM Squareroot-Delta-Exact : @tab X
-
@tab مورد استفاده در بازیهای گوناگون.
- DPCM Sierra Online : @tab X
-
@tab مورد استفاده در پروندههای صوتی بازیهای شرکت Sierra Online.
- DPCM Sol : @tab X
- DPCM Xan : @tab X
-
@tab مورد استفاده در پروندههای AVI بازی Wing Commander IV از استودیو Origin.
- DPCM Xilam DERF : @tab X
- DSD (Direct Stream Digital), least significant bit first : @tab X
- DSD (Direct Stream Digital), most significant bit first : @tab X
- DSD (Direct Stream Digital), least significant bit first, planar : @tab X
- DSD (Direct Stream Digital), most significant bit first, planar : @tab X
- DSP Group TrueSpeech : @tab X
- DST (Direct Stream Transfer) : @tab X
- DV audio : @tab X
- Enhanced AC-3 : X @tab X
- EVRC (Enhanced Variable Rate Codec) : @tab X
- FLAC (Free Lossless Audio Codec) : X @tab IX
- FTR Voice : @tab X
- G.723.1 : X @tab X
- G.728 : @tab X
- G.729 : @tab X
- GSM : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libgsm پشتیبانی میشود
- GSM Microsoft variant : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libgsm پشتیبانی میشود
- IAC (Indeo Audio Coder) : @tab X
- iLBC (Internet Low Bitrate Codec) : E @tab EX
-
@tab کدگذاری و رمزگشایی از طریق کتابخانه خارجی libilbc پشتیبانی میشود
- IMC (Intel Music Coder) : @tab X
- Interplay ACM : @tab X
- LC3 : E @tab E
-
@tab پشتیبانیشده از طریق کتابخانه خارجی liblc3
- MACE (Macintosh Audio Compression/Expansion) 6:1 : @tab X
- Marian's A-pac audio : @tab X
- MI-SC4 (Micronas SC-4 Audio) : @tab X
- MLP (Meridian Lossless Packing) : X @tab X
-
@tab مورد استفاده در دیسکهای DVD-Audio.
- Monkey's Audio : @tab X
- MP1 (MPEG audio layer 1) : @tab IX
- MP2 (MPEG audio layer 2) : IX @tab IX
-
@tab کدگذاری همچنین از طریق کتابخانه خارجی TwoLAME پشتیبانی میشود
- MP3 (MPEG audio layer 3) : E @tab IX
-
@tab کدگذاری از طریق کتابخانه خارجی LAME پشتیبانی میشود، حالتهای ADU MP3 و MP3onMP4 نیز پشتیبانی میشوند
- MPEG-4 Audio Lossless Coding (ALS) : @tab X
- MPEG-H 3D Audio : @tab E
-
@tab رمزگشایی از طریق کتابخانه خارجی libmpeghdec پشتیبانی میشود
- MobiClip FastAudio : @tab X
- Musepack SV7 : @tab X
- Musepack SV8 : @tab X
- Nellymoser Asao : X @tab X
- On2 AVC (Audio for Video Codec) : @tab X
- Opus : E @tab X
-
@tab کدگذاری از طریق کتابخانه خارجی libopus پشتیبانی میشود
- OSQ (Original Sound Quality) : @tab X
- PCM A-law : X @tab X
- PCM mu-law : X @tab X
- PCM Archimedes VIDC : X @tab X
- PCM signed 8-bit planar : X @tab X
- PCM signed 16-bit big-endian planar : X @tab X
- PCM signed 16-bit little-endian planar : X @tab X
- PCM signed 24-bit little-endian planar : X @tab X
- PCM signed 32-bit little-endian planar : X @tab X
- PCM 32-bit floating point big-endian : X @tab X
- PCM 32-bit floating point little-endian : X @tab X
- PCM 64-bit floating point big-endian : X @tab X
- PCM 64-bit floating point little-endian : X @tab X
- PCM D-Cinema audio signed 24-bit : X @tab X
- PCM signed 8-bit : X @tab X
- PCM signed 16-bit big-endian : X @tab X
- PCM signed 16-bit little-endian : X @tab X
- PCM signed 24-bit big-endian : X @tab X
- PCM signed 24-bit little-endian : X @tab X
- PCM signed 32-bit big-endian : X @tab X
- PCM signed 32-bit little-endian : X @tab X
- PCM signed 16/20/24-bit big-endian in MPEG-TS : @tab X
- PCM unsigned 8-bit : X @tab X
- PCM unsigned 16-bit big-endian : X @tab X
- PCM unsigned 16-bit little-endian : X @tab X
- PCM unsigned 24-bit big-endian : X @tab X
- PCM unsigned 24-bit little-endian : X @tab X
- PCM unsigned 32-bit big-endian : X @tab X
- PCM unsigned 32-bit little-endian : X @tab X
- PCM SGA : @tab X
- QCELP / PureVoice : @tab X
- QDesign Music Codec 1 : @tab X
- QDesign Music Codec 2 : @tab X
-
@tab هنوز مقداری اعوجاج صوتی وجود دارد.
- RealAudio 1.0 (14.4K) : X @tab X
-
@tab کدک Real با نرخ ۱۴۴۰۰ بیت بر ثانیه
- RealAudio 2.0 (28.8K) : @tab X
-
@tab کدک Real با نرخ ۲۸۸۰۰ بیت بر ثانیه
- RealAudio 3.0 (dnet) : IX @tab X
-
@tab کدک صوتی AC-3 با نرخ بیت پایین Real
- RealAudio Lossless : @tab X
- RealAudio SIPR / ACELP.NET : @tab X
- RK Audio (RKA) : @tab X
- SBC (low-complexity subband codec) : X @tab X
-
@tab مورد استفاده در نمایه بلوتوث A2DP
- Shorten : @tab X
- Sierra VMD audio : @tab X
-
@tab مورد استفاده در پروندههای VMD شرکت Sierra.
- Smacker audio : @tab X
- SMPTE 302M AES3 audio : X @tab X
- Sonic : X @tab X
-
@tab کدک آزمایشی
- Sonic lossless : X @tab X
-
@tab کدک آزمایشی
- Speex : E @tab EX
-
@tab پشتیبانیشده از طریق کتابخانه خارجی libspeex
- TAK (Tom's lossless Audio Kompressor) : @tab X
- True Audio (TTA) : X @tab X
- TrueHD : X @tab X
-
@tab مورد استفاده در دیسکهای HD-DVD و Blu-Ray.
- TwinVQ (VQF flavor) : @tab X
- VIMA : @tab X
-
@tab مورد استفاده در انیمیشنهای SMUSH شرکت LucasArts.
- ViewQuest VQC : @tab X
- Vorbis : E @tab X
-
@tab یک کدگذار توکار اما بسیار ابتدایی موجود است.
- Voxware MetaSound : @tab X
- Waveform Archiver : @tab X
- WavPack : X @tab X
- Westwood Audio (SND1) : @tab X
- Windows Media Audio 1 : X @tab X
- Windows Media Audio 2 : X @tab X
- Windows Media Audio Lossless : @tab X
- Windows Media Audio Pro : @tab X
- Windows Media Audio Voice : @tab X
- Xbox Media Audio 1 : @tab X
- Xbox Media Audio 2 : @tab X
علامت "X" به این معنی است که قابلیت موجود در آن ستون (کدگذاری / رمزگشایی) پشتیبانی میشود.
علامت "E" به این معنی است که پشتیبانی از طریق یک کتابخانه خارجی فراهم میشود.
علامت "I" به این معنی است که نسخه صرفاً عدد صحیح (integer-only) نیز در دسترس است (عملکرد بالا را در سیستمهای فاقد پشتیبانی سختافزاری ممیز شناور تضمین میکند).
قالبهای زیرنویس (Subtitle Formats)
- Name : Muxing @tab Demuxing @tab Encoding @tab Decoding
- 3GPP Timed Text : @tab @tab X @tab X
- AQTitle : @tab X @tab @tab X
- DVB : X @tab X @tab X @tab X
- DVB teletext : @tab X @tab @tab E
- DVD : X @tab X @tab X @tab X
- JACOsub : X @tab X @tab @tab X
- MicroDVD : X @tab X @tab @tab X
- MPL2 : @tab X @tab @tab X
- MPsub (MPlayer) : @tab X @tab @tab X
- PGS : @tab @tab @tab X
- PJS (Phoenix) : @tab X @tab @tab X
- RealText : @tab X @tab @tab X
- SAMI : @tab X @tab @tab X
- Spruce format (STL) : @tab X @tab @tab X
- SSA/ASS : X @tab X @tab X @tab X
- SubRip (SRT) : X @tab X @tab X @tab X
- SubViewer v1 : @tab X @tab @tab X
- SubViewer : @tab X @tab @tab X
- TED Talks captions : @tab X @tab @tab X
- TTML : X @tab @tab X @tab
- VobSub (IDX+SUB) : @tab X @tab @tab X
- VPlayer : @tab X @tab @tab X
- WebVTT : X @tab X @tab X @tab X
- XSUB : @tab @tab X @tab X
علامت "X" به این معنی است که این قابلیت پشتیبانی میشود.
علامت "E" به این معنی است که پشتیبانی از طریق یک کتابخانه خارجی فراهم میشود.
پروتکلهای شبکه (Network Protocols)
- Name : Support
- AMQP : E
- file : X
- FTP : X
- Gopher : X
- Gophers : X
- HLS : X
- HTTP : X
- HTTPS : X
- Icecast : X
- MMSH : X
- MMST : X
- pipe : X
- Pro-MPEG FEC : X
- RTMP : X
- RTMPE : X
- RTMPS : X
- RTMPT : X
- RTMPTE : X
- RTMPTS : X
- RTP : X
- SAMBA : E
- SCTP : X
- SFTP : E
- TCP : X
- TLS : X
- UDP : X
- ZMQ : E
علامت "X" به این معنی است که پروتکل پشتیبانی میشود.
علامت "E" به این معنی است که پشتیبانی از طریق یک کتابخانه خارجی فراهم میشود.
دستگاههای ورودی/خروجی (Input/Output Devices)
- Name : Input @tab Output
- ALSA : X @tab X
- BKTR : X @tab
- caca : @tab X
- DV1394 : X @tab
- Lavfi virtual device : X @tab
- Linux framebuffer : X @tab X
- JACK : X @tab
- LIBCDIO : X
- LIBDC1394 : X @tab
- OpenAL : X
- OpenGL : @tab X
- OSS : X @tab X
- PulseAudio : X @tab X
- SDL : @tab X
- Video4Linux2 : X @tab X
- VfW capture : X @tab
- X11 grabbing : X @tab
- Win32 grabbing : X @tab
علامت "X" به این معنی است که ورودی/خروجی پشتیبانی میشود.
کد زمانی (Timecode)
همچنین ببینید (SEE ALSO)
ffplay(1), ffmpeg(1), ffprobe(1), ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1), ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1), ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)
نویسندگان (AUTHORS)
توسعهدهندگان FFmpeg.
برای جزئیات درباره نویسندگی، تاریخچه گیت پروژه (https://git.ffmpeg.org/ffmpeg) را مشاهده کنید، برای نمونه با وارد کردن دستور git log در دایرکتوری کد منبع FFmpeg، یا مرور مخزن آنلاین در https://git.ffmpeg.org/ffmpeg.
نگهدارندههای مؤلفههای خاص در پرونده MAINTAINERS در درخت کد منبع فهرست شدهاند.
| FFmpeg |