| FFMPEG-ALL(1) | FFMPEG-ALL(1) |
نام (NAME)
ffmpeg-all - مبدل و پردازشگر چندرسانهای همهکاره و راهنمای جامع FFmpeg
خلاصه دستور (SYNOPSIS)
ffmpeg [گزینههای_عمومی] {[گزینههای_فایل_ورودی] -i آدرس_ورودی} ... {[گزینههای_فایل_خروجی] آدرس_خروجی} ...
توضیحات (DESCRIPTION)
دستور ffmpeg یک مبدل و پردازشگر چندرسانهای همهکاره است. این ابزار قادر است طیف وسیعی از ورودیها - از جمله دستگاههای ضبط زنده و پخش مستقیم - را بخواند، فیلتر کند و آنها را به خیل عظیمی از قالبهای خروجی تبدیل (Transcode) نماید.
دستور ffmpeg از تعداد دلخواهی ورودی (که میتوانند فایلهای معمولی، لولهها یا پایپها، جریانهای شبکه، دستگاههای ضبط و غیره باشند) که توسط گزینه "-i" مشخص میشوند میخواند و در تعداد دلخواهی خروجی که با یک آدرس ساده خروجی تعیین میگردند مینویسد. هر چیزی در خط فرمان که نتواند به عنوان گزینه تفسیر شود، به عنوان یک آدرس خروجی تلقی میگردد.
هر ورودی یا خروجی در اصل میتواند شامل هر تعداد جریان مقدماتی (استریم) از انواع گوناگون (ویدیو/صدا/زیرنویس/پیوست/داده) باشد، اگرچه تعداد یا انواع مجاز استریمها ممکن است توسط قالب ظرف (کانتینر) محدود شود. انتخاب اینکه کدام استریمها از کدام ورودیها به کدام خروجی منتقل شوند، یا به صورت خودکار صورت میگیرد یا با استفاده از گزینه "-map" تعیین میشود (به بخش انتخاب استریم (Stream selection) مراجعه کنید).
برای ارجاع به ورودیها یا خروجیها در گزینهها، باید از اندیسهای آنها (بر پایه صفر) استفاده نمایید. برای نمونه، اولین ورودی 0، دومی 1 و به همین ترتیب است. به طور مشابه، استریمهای درون یک ورودی یا خروجی نیز با اندیسهایشان مورد ارجاع قرار میگیرند؛ به عنوان مثال "2:3" به چهارمین استریم در سومین ورودی یا خروجی اشاره دارد. همچنین به بخش مشخصکنندههای استریم (Stream specifiers) مراجعه کنید.
به عنوان یک قاعده کلی، گزینهها بر روی فایل مشخصشده بعدی اعمال میشوند. بنابراین، ترتیب قرارگیری بسیار مهم است و میتوانید یک گزینه یکسان را چندین بار در خط فرمان تکرار کنید. هر بار تکرار بر روی فایل ورودی یا خروجی بعدی اعمال میگردد. استثنای این قاعده گزینههای عمومی هستند (مانند سطح گزارشدهی یا لاگ)، که باید در ابتدا مشخص شوند.
فایلهای ورودی و خروجی را با یکدیگر ترکیب نکنید -- ابتدا تمامی فایلهای ورودی و سپس تمامی فایلهای خروجی را تعیین نمایید. همچنین گزینههای متعلق به فایلهای مختلف را با هم نیامیزید. تمامی گزینهها منحصراً بر روی فایل ورودی یا خروجی بعدی اعمال میشوند و میان فایلها ریست میگردند.
در ادامه چند مثال ساده آورده شده است.
- تبدیل یک
فایل
رسانهای
ورودی به
قالبی دیگر
از طریق
انکود مجدد
جریانهای
رسانه:
ffmpeg -i input.avi output.mp4
- تنظیم نرخ
بیت (bitrate)
ویدیوی
فایل خروجی
روی 64
کیلوبیت بر
ثانیه:
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.mp4
- اجبار نرخ
فریم فایل
خروجی به 24
فریم بر
ثانیه:
ffmpeg -i input.avi -r 24 output.mp4
- اجبار نرخ
فریم فایل
ورودی (تنها
برای
قالبهای
خام معتبر
است) به 1
فریم بر
ثانیه و نرخ
فریم فایل
خروجی به 24
فریم بر
ثانیه:
ffmpeg -r 1 -i input.m2v -r 24 output.mp4
گزینه قالب (-f) ممکن است برای فایلهای ورودی خام مورد نیاز باشد.
توضیحات تفصیلی (DETAILED DESCRIPTION)
دستور ffmpeg یک پایپلاین (خط لوله) ترنسکدینگ را از مؤلفههای فهرستشده در زیر میسازد. روند کار برنامه شامل قطعات داده ورودی است که از منابع از طریق لولهها به سمت مقاصد جاری میشوند، در حالی که در طول مسیر توسط مؤلفههایی که با آنها مواجه میشوند، دگرگون میگردند.
انواع مؤلفههای زیر در دسترس هستند:
- •
- دیماکسرها (Demuxers) (کوتاهشدهی "demultiplexers") یک منبع ورودی را به منظور استخراج موارد زیر میخوانند:
- ویژگیهای عمومی مانند فراداده (متادیتا) یا فصلها؛
- فهرست جریانهای مقدماتی (استریمهای اولیه) ورودی و مشخصات آنها.
به ازای هر گزینه -i یک نمونه دیماکسر ایجاد میشود و بستهها (packets) انکودشده را به دیکودرها یا ماکسرها ارسال میکند.
در ادبیات فنی گاهی به دیماکسرها splitters (جداکنندهها) نیز گفته میشود، زیرا وظیفه اصلی آنها تفکیک یک فایل به استریمهای مجزا است (اگرچه برخی فایلها تنها شامل یک جریان مقدماتی هستند).
نمایش شماتیک یک دیماکسر به صورت زیر است:
┌──────────┬───────────────────────┐
│ demuxer │ │ packets for stream 0
╞══════════╡ elementary stream 0 ├──────────────────────►
│ │ │
│ global ├───────────────────────┤
│properties│ │ packets for stream 1
│ and │ elementary stream 1 ├──────────────────────►
│ metadata │ │
│ ├───────────────────────┤
│ │ │
│ │ ........... │
│ │ │
│ ├───────────────────────┤
│ │ │ packets for stream N
│ │ elementary stream N ├──────────────────────►
│ │ │
└──────────┴───────────────────────┘
▲
│
│ read from file, network stream,
│ grabbing device, etc.
│
- دیکودرها
(Decoders)
بستههای
انکودشده
(فشردهشده)
را برای یک
جریان
مقدماتی
صوتی،
ویدیویی یا
زیرنویس
دریافت
کرده و
آنها را به
فریمهای
خام (raw frames)
(آرایههای
پیکسلی
برای ویدیو
و داده PCM
برای صدا)
دیکود
میکنند. یک
دیکودر
معمولاً به
یک جریان
مقدماتی در
یک
دیماکسر
وابسته است
(و ورودی
خود را از
آن دریافت
میکند)،
اما گاهی
نیز ممکن
است به صورت
مستقل عمل
نماید (به
بخش
دیکودرهای
بازگشتی (Loopback
decoders) مراجعه
کنید).
نمایش شماتیک یک دیکودر به صورت زیر است:
┌─────────┐ packets │ │ raw frames ─────────►│ decoder ├────────────► │ │ └─────────┘ - گرافهای
فیلتر (Filtergraphs)
فریمهای
خام صوت یا
تصویر را
پردازش و
تبدیل
میکنند. یک
فیلترگراف
شامل یک یا
چند فیلتر
منفرد متصل
به هم در
قالب یک
گراف است.
فیلترگرافها
در دو نوع
ارائه
میشوند -
ساده (simple) و
پیچیده (complex)،
که به ترتیب
با
گزینههای
-filter و -filter_complex
پیکربندی
میگردند.
یک فیلترگراف ساده به یک جریان مقدماتی خروجی وابسته است؛ ورودی جهت فیلتر شدن را از یک دیکودر دریافت کرده و خروجی فیلترشده را به انکودر آن جریان خروجی ارسال مینماید.
یک فیلترگراف ساده ویدیویی که عملیات حذف خطوط درهمبافته (deinterlacing با استفاده از فیلتر "yadif") و سپس تغییر اندازه (با استفاده از فیلتر "scale") را انجام میدهد میتواند به شکل زیر باشد:
┌────────────────────────┐ │ simple filtergraph │ frames from ╞════════════════════════╡ frames for a decoder │ ┌───────┐ ┌───────┐ │ an encoder ────────────►├─►│ yadif ├─►│ scale ├─►│────────────► │ └───────┘ └───────┘ │ └────────────────────────┘یک فیلترگراف پیچیده مستقل است و به هیچ جریان خاصی وابسته نیست. این نوع فیلترگراف میتواند چندین (یا صفر) ورودی داشته باشد، که احتمالاً از انواع مختلف (صدا یا تصویر) هستند و هر یک از آنها دادهها را از یک دیکودر یا خروجی فیلترگراف پیچیده دیگری دریافت میکنند. همچنین دارای یک یا چند خروجی است که یک انکودر یا ورودی فیلترگراف پیچیده دیگر را تغذیه مینمایند.
نمودار مثال زیر یک فیلترگراف پیچیده با ۳ ورودی و ۲ خروجی (همگی ویدیو) را نشان میدهد:
┌─────────────────────────────────────────────────┐ │ complex filtergraph │ ╞═════════════════════════════════════════════════╡ frames ├───────┐ ┌─────────┐ ┌─────────┐ ┌────────┤ frames ─────────►│input 0├─►│ overlay ├─────►│ overlay ├─►│output 0├────────► ├───────┘ │ │ │ │ └────────┤ frames ├───────┐╭►│ │ ╭►│ │ │ ─────────►│input 1├╯ └─────────┘ │ └─────────┘ │ ├───────┘ │ │ frames ├───────┐ ┌─────┐ ┌─────┬─╯ ┌────────┤ frames ─────────►│input 2├►│scale├►│split├───────────────►│output 1├────────► ├───────┘ └─────┘ └─────┘ └────────┤ └─────────────────────────────────────────────────┘فریمهای ورودی دوم بر روی فریمهای ورودی اول همپوشانی (overlay) میشوند. فریمهای ورودی سوم تغییر مقیاس یافته و سپس به دو جریان یکسان تکثیر (duplicate) میگردند. یکی از آنها بر روی ترکیب دو ورودی اول همپوشانی میشود و نتیجه به عنوان اولین خروجی فیلترگراف ارائه میگردد. نسخه تکثیرشده دیگر به عنوان دومین خروجی فیلترگراف قرار میگیرد.
- انکودرها
(Encoders)
فریمهای
خام صوت،
تصویر یا
زیرنویس را
دریافت
کرده و
آنها را در
قالب
بستههای
انکودشده
کدگذاری
میکنند.
فرایند
انکودینگ
(فشردهسازی)
معمولاً
اتلافی (lossy)
است - کیفیت
جریان را
کاهش
میدهد تا
حجم خروجی
کوچکتر
شود؛ برخی
انکودرها
بدون
اتلاف (lossless)
هستند، اما
به بهای حجم
خروجی
بسیار
بالاتر. یک
انکودر
ویدیو یا
صدا ورودی
خود را از
خروجی یک
فیلترگراف
دریافت
میکند؛
انکودرهای
زیرنویس
ورودی را از
یک دیکودر
دریافت
مینمایند
(زیرا فیلتر
کردن
زیرنویس
هنوز
پشتیبانی
نمیشود).
هر انکودر
با یک
جریان
مقدماتی
خروجی از
یک ماکسر
مرتبط است و
خروجی خود
را به آن
ماکسر
ارسال
میکند.
نمایش شماتیک یک انکودر به صورت زیر است:
┌─────────┐ raw frames │ │ packets ────────────►│ encoder ├─────────► │ │ └─────────┘ - ماکسرها (Muxers)
(کوتاهشدهی
"multiplexers")
بستههای
انکودشده
را برای
جریانهای
مقدماتی
خود از
انکودرها
(مسیر
ترنسکدینگ)
یا
مستقیماً
از
دیماکسرها
(مسیر کپی
استریم)
دریافت
کرده،
آنها را با
هم
درمیآمیزند
(interleave، در
صورتی که
بیش از یک
جریان
مقدماتی
وجود داشته
باشد)، و
بایتهای
حاصل را در
فایل خروجی
(یا لوله،
جریان شبکه
و غیره)
مینویسند.
نمایش شماتیک یک ماکسر به صورت زیر است:
┌──────────────────────┬───────────┐ packets for stream 0 │ │ muxer │ ──────────────────────►│ elementary stream 0 ╞═══════════╡ │ │ │ ├──────────────────────┤ global │ packets for stream 1 │ │properties │ ──────────────────────►│ elementary stream 1 │ and │ │ │ metadata │ ├──────────────────────┤ │ │ │ │ │ ........... │ │ │ │ │ ├──────────────────────┤ │ packets for stream N │ │ │ ──────────────────────►│ elementary stream N │ │ │ │ │ └──────────────────────┴─────┬─────┘ │ write to file, network stream, │ grabbing device, etc. │ │ ▼
Streamcopy
سادهترین خط لوله در ffmpeg عملیات کپی استریم (streamcopy) تکاستریمی است، یعنی کپی کردن بستههای یک جریان مقدماتی ورودی بدون دیکود کردن، فیلتر کردن یا انکود مجدد آنها. به عنوان مثال، یک فایل ورودی به نام INPUT.mkv با ۳ جریان مقدماتی را در نظر بگیرید که دومین جریان آن را برداشته و در فایل OUTPUT.mp4 مینویسیم. نمایش شماتیک چنین خط لولهای به صورت زیر است:
┌──────────┬─────────────────────┐ │ demuxer │ │ unused ╞══════════╡ elementary stream 0 ├────────╳ │ │ │ │INPUT.mkv ├─────────────────────┤ ┌──────────────────────┬───────────┐ │ │ │ packets │ │ muxer │ │ │ elementary stream 1 ├─────────►│ elementary stream 0 ╞═══════════╡ │ │ │ │ │OUTPUT.mp4 │ │ ├─────────────────────┤ └──────────────────────┴───────────┘ │ │ │ unused │ │ elementary stream 2 ├────────╳ │ │ │ └──────────┴─────────────────────┘
خط لوله فوق را میتوان با خط فرمان زیر ایجاد کرد:
ffmpeg -i INPUT.mkv -map 0:1 -c copy OUTPUT.mp4
در این خط فرمان:
- یک ورودی منفرد INPUT.mkv وجود دارد؛
- هیچ گزینه ورودی برای این ورودی تعیین نشده است؛
- یک خروجی منفرد OUTPUT.mp4 وجود دارد؛
- دو گزینه خروجی برای این خروجی وجود دارد:
- گزینه "-map 0:1" استریم ورودی مورد استفاده را انتخاب میکند - از ورودی با اندیس 0 (یعنی نخستین ورودی) استریم با اندیس 1 (یعنی دومین استریم)؛
- گزینه "-c copy" انکودر "copy" را انتخاب میکند، یعنی کپی استریم بدون هیچ دیکود یا انکود مجدد.
کپی استریم برای تغییر تعداد جریانهای مقدماتی، قالب کانتینر، یا اصلاح متادیتای سطح کانتینر مفید است. از آنجا که هیچ دیکود یا انکودی صورت نمیگیرد، این فرایند بسیار سریع است و هیچ افت کیفیتی رخ نمیدهد. با این حال، ممکن است به دلایل گوناگون در برخی موارد کار نکند (مثلاً برخی اطلاعات مورد نیاز کانتینر مقصد در منبع موجود نباشد). بدیهی است اعمال فیلترها نیز غیرممکن است، زیرا فیلترها بر روی فریمهای دیکودشده عمل میکنند.
سناریوهای پیچیدهتر کپی استریم را نیز میتوان ایجاد کرد - برای مثال ترکیب استریمها از دو فایل ورودی درون یک خروجی واحد:
┌──────────┬────────────────────┐ ┌────────────────────┬───────────┐ │ demuxer 0│ │ packets │ │ muxer │ ╞══════════╡elementary stream 0 ├────────►│elementary stream 0 ╞═══════════╡ │INPUT0.mkv│ │ │ │OUTPUT.mp4 │ └──────────┴────────────────────┘ ├────────────────────┤ │ ┌──────────┬────────────────────┐ │ │ │ │ demuxer 1│ │ packets │elementary stream 1 │ │ ╞══════════╡elementary stream 0 ├────────►│ │ │ │INPUT1.aac│ │ └────────────────────┴───────────┘ └──────────┴────────────────────┘
که با خط فرمان زیر قابل ساخت است:
ffmpeg -i INPUT0.mkv -i INPUT1.aac -map 0:0 -map 1:0 -c copy OUTPUT.mp4
گزینه خروجی -map در اینجا دو بار استفاده شده است و دو استریم در فایل خروجی ایجاد میکند - یکی از اولین ورودی و دیگری از دومی تغذیه میشود. یک نمونه منفرد از گزینه -c عملیات کپی استریم را برای هر دوی این استریمها انتخاب مینماید. شما همچنین میتوانید از چندین نمونه از این گزینه به همراه مشخصکنندههای استریم (Stream specifiers) استفاده کنید تا مقادیر متفاوتی را روی هر استریم اعمال نمایید، همانطور که در بخشهای بعدی نشان داده خواهد شد.
یک سناریوی معکوس، تفکیک چندین استریم از یک ورودی منفرد به چندین فایل خروجی مجزا است:
┌──────────┬─────────────────────┐ ┌───────────────────┬───────────┐
│ demuxer │ │ packets │ │ muxer 0 │
╞══════════╡ elementary stream 0 ├─────────►│elementary stream 0╞═══════════╡
│ │ │ │ │OUTPUT0.mp4│
│INPUT.mkv ├─────────────────────┤ └───────────────────┴───────────┘
│ │ │ packets ┌───────────────────┬───────────┐
│ │ elementary stream 1 ├─────────►│ │ muxer 1 │
│ │ │ │elementary stream 0╞═══════════╡
└──────────┴─────────────────────┘ │ │OUTPUT1.mp4│
└───────────────────┴───────────┘
که با دستور زیر ساخته میشود:
ffmpeg -i INPUT.mkv -map 0:0 -c copy OUTPUT0.mp4 -map 0:1 -c copy OUTPUT1.mp4
توجه کنید که چگونه برای هر فایل خروجی به یک نمونه مجزا از گزینه -c نیاز است، حتی اگر مقادیر آنها یکسان باشد. این امر به این دلیل است که گزینههای غیرعمومی (که اکثر گزینهها را تشکیل میدهند) تنها در حیطه فایلی اعمال میشوند که پیش از آن قرار گرفتهاند.
این مثالها البته میتوانند به نگاشتهای دلخواه از هر تعداد ورودی به هر تعداد خروجی تعمیم یابند.
Transcoding
ترنسکدینگ فرایند دیکود کردن یک استریم و سپس انکود مجدد آن است. از آنجا که انکودینگ معمولاً از نظر محاسباتی سنگین است و در اکثر موارد کیفیت استریم را کاهش میدهد (یعنی اتلافی است)، باید تنها در صورت نیاز ترنسکد کنید و در غیر این صورت از کپی استریم بهره ببرید. دلایل معمول برای ترنسکد کردن عبارتند از:
- اعمال فیلترها - مانند تغییر اندازه، حذف خطوط درهمبافته (deinterlacing)، یا همپوشانی ویدیو؛ تغییر نرخ نمونهبرداری (resampling) یا میکس و ترکیب صدا؛
- تمایل به ارسال استریم به سامانهای که قادر به دیکود کردن کدک اصلی نیست.
توجه داشته باشید که ffmpeg تمام استریمهای صدا، تصویر و زیرنویس را ترنسکد خواهد کرد مگر اینکه برای آنها گزینه -c copy را مشخص نمایید.
یک خط لوله نمونه را در نظر بگیرید که یک فایل ورودی با یک استریم صوتی و یک استریم ویدیویی را میخواند، ویدیو را ترنسکد کرده و صدا را در یک فایل خروجی واحد کپی میکند. این فرایند را میتوان به صورت شماتیک به شکل زیر نشان داد:
┌──────────┬─────────────────────┐
│ demuxer │ │ audio packets
╞══════════╡ stream 0 (audio) ├─────────────────────────────────────╮
│ │ │ │
│INPUT.mkv ├─────────────────────┤ video ┌─────────┐ raw │
│ │ │ packets │ video │ video frames │
│ │ stream 1 (video) ├─────────►│ decoder ├──────────────╮ │
│ │ │ │ │ │ │
└──────────┴─────────────────────┘ └─────────┘ │ │
▼ ▼
│ │
┌──────────┬─────────────────────┐ video ┌─────────┐ │ │
│ muxer │ │ packets │ video │ │ │
╞══════════╡ stream 0 (video) │◄─────────┤ encoder ├──────────────╯ │
│ │ │ │(libx264)│ │
│OUTPUT.mp4├─────────────────────┤ └─────────┘ │
│ │ │ │
│ │ stream 1 (audio) │◄────────────────────────────────────╯
│ │ │
└──────────┴─────────────────────┘
و با خط فرمان زیر پیادهسازی میگردد:
ffmpeg -i INPUT.mkv -map 0:v -map 0:a -c:v libx264 -c:a copy OUTPUT.mp4
توجه کنید که چگونه از مشخصکنندههای استریم ":v" و ":a" برای انتخاب استریمهای ورودی و اعمال مقادیر متفاوت گزینه -c به آنها استفاده شده است؛ برای جزئیات بیشتر به بخش مشخصکنندههای استریم (Stream specifiers) مراجعه کنید.
Filtering
هنگام ترنسکدینگ، جریانهای صوتی و تصویری میتوانند پیش از انکود با استفاده از یک فیلترگراف ساده یا پیچیده فیلتر شوند.
فیلترگرافهای ساده (Simple filtergraphs)
فیلترگرافهای ساده آنهایی هستند که دقیقاً یک ورودی و یک خروجی دارند و هر دو از یک نوع (صدا یا ویدیو) هستند. آنها با گزینه بهازایهراستریم -filter پیکربندی میشوند (با نامهای مستعار -vf و -af به ترتیب برای -filter:v (ویدیو) و -filter:a (صدا)). توجه داشته باشید که فیلترگرافهای ساده به جریان خروجی خود وابسته هستند، بنابراین برای مثال اگر چندین جریان صوتی داشته باشید، -af برای هر یک فیلترگراف جداگانهای ایجاد میکند.
با در نظر گرفتن مثال ترنسکدینگ فوق، افزودن فیلترینگ (و حذف صدا جهت وضوح بیشتر) آن را به شکل زیر درمیآورد:
┌──────────┬───────────────┐
│ demuxer │ │ ┌─────────┐
╞══════════╡ video stream │ packets │ video │ frames
│INPUT.mkv │ ├─────────►│ decoder ├─────►───╮
│ │ │ └─────────┘ │
└──────────┴───────────────┘ │
╭───────────◄───────────╯
│ ┌────────────────────────┐
│ │ simple filtergraph │
│ ╞════════════════════════╡
│ │ ┌───────┐ ┌───────┐ │
╰──►├─►│ yadif ├─►│ scale ├─►├╮
│ └───────┘ └───────┘ ││
└────────────────────────┘│
│
│
┌──────────┬───────────────┐ video ┌─────────┐ │
│ muxer │ │ packets │ video │ │
╞══════════╡ video stream │◄─────────┤ encoder ├───────◄───────╯
│OUTPUT.mp4│ │ │ │
│ │ │ └─────────┘
└──────────┴───────────────┘
فیلترگرافهای پیچیده (Complex filtergraphs)
فیلترگرافهای پیچیده آنهایی هستند که نمیتوان آنها را به سادگی به عنوان یک زنجیره پردازش خطی اعمالشده بر روی یک استریم توصیف کرد. این حالت برای مثال زمانی رخ میدهد که گراف بیش از یک ورودی و/یا خروجی داشته باشد، یا زمانی که نوع استریم خروجی با ورودی متفاوت باشد. فیلترگرافهای پیچیده با گزینه -filter_complex پیکربندی میشوند. توجه کنید که این گزینه عمومی است، زیرا یک فیلترگراف پیچیده ماهیتاً نمیتواند به طور بدون ابهام به یک استریم یا فایل منفرد مرتبط شود. هر نمونه از -filter_complex یک فیلترگراف پیچیده جدید ایجاد میکند، و هر تعداد از آنها میتواند وجود داشته باشد.
یک مثال ساده از فیلترگراف پیچیده، فیلتر "overlay" است که دو ورودی ویدیو و یک خروجی ویدیو دارد و شامل یک ویدیو همپوشانیشده بر روی ویدیوی دیگر است. معادل صوتی آن فیلتر "amix" میباشد.
Loopback decoders
در حالی که دیکودرها معمولاً با استریمهای دیماکسر مرتبط هستند، همچنین امکان ایجاد دیکودرهای "بازگشتی" (loopback) وجود دارد که خروجی یک انکودر را رمزگشایی کرده و اجازه میدهند تا دوباره به فیلترگرافهای پیچیده تغذیه شود. این کار با دستورالعمل "-dec" انجام میگیرد، که اندیس استریم خروجی که باید دیکود شود را به عنوان پارامتر میپذیرد. هر یک از این دستورالعملها یک دیکودر بازگشتی جدید ایجاد میکند که با اعداد صحیح متوالی با شروع از صفر شمارهگذاری میشوند. این اندیسها سپس باید برای ارجاع به دیکودرهای بازگشتی در برچسبهای پیوند فیلترگرافهای پیچیده استفاده شوند، همانگونه که در مستندات -filter_complex توضیح داده شده است.
گزینههای AVOptions دیکودینگ را میتوان با قرار دادن آنها پیش از "-dec" به دیکودرهای بازگشتی ارسال نمود، مشابه با گزینههای ورودی/خروجی.
برای مثال، دستور زیر:
ffmpeg -i INPUT \ -map 0:v:0 -c:v libx264 -crf 45 -f null - \ -threads 3 -dec 0:0 \ -filter_complex '[0:v][dec:0]hstack[stack]' \ -map '[stack]' -c:v ffv1 OUTPUT
یک ویدیوی ورودی را میخواند و:
- (خط ۲) آن را با "libx264" با کیفیت پایین انکود میکند؛
- (خط ۳) این استریم انکودشده را با استفاده از ۳ ریسه (threads) دیکود مینماید؛
- (خط ۴) ویدیوی دیکودشده را در کنار ویدیوی ورودی اصلی قرار میدهد؛
- (خط ۵) ویدیوی ترکیبی سپس به صورت بدون اتلاف (lossless) انکود شده و در OUTPUT نوشته میشود.
چنین پایپلاین ترنسکدینگی را میتوان با نمودار زیر نمایش داد:
┌──────────┬───────────────┐
│ demuxer │ │ ┌─────────┐ ┌─────────┐ ┌────────────────────┐
╞══════════╡ video stream │ │ video │ │ video │ │ null muxer │
│ INPUT │ ├──►│ decoder ├──┬────────►│ encoder ├─┬─►│(discards its input)│
│ │ │ └─────────┘ │ │(libx264)│ │ └────────────────────┘
└──────────┴───────────────┘ │ └─────────┘ │
╭───────◄──╯ ┌─────────┐ │
│ │loopback │ │
│ ╭─────◄──────┤ decoder ├────◄──╯
│ │ └─────────┘
│ │
│ │
│ │ ┌───────────────────┐
│ │ │complex filtergraph│
│ │ ╞═══════════════════╡
│ │ │ ┌─────────────┐ │
╰─╫─►├─►│ hstack ├─►├╮
╰─►├─►│ │ ││
│ └─────────────┘ ││
└───────────────────┘│
│
┌──────────┬───────────────┐ ┌─────────┐ │
│ muxer │ │ │ video │ │
╞══════════╡ video stream │◄─┤ encoder ├───────◄──────────╯
│ OUTPUT │ │ │ (ffv1) │
│ │ │ └─────────┘
└──────────┴───────────────┘
انتخاب استریم (STREAM SELECTION)
دستور ffmpeg گزینه "-map" را برای کنترل دستی انتخاب استریمها در هر فایل خروجی فراهم ساخته است. کاربران میتوانند از "-map" صرفنظر کنند تا ffmpeg انتخاب خودکار استریمها را به شرح زیر انجام دهد. گزینههای "-vn / -an / -sn / -dn" میتوانند برای صرفنظر کردن از گنجاندن استریمهای ویدیو، صدا، زیرنویس و داده استفاده شوند، خواه به صورت دستی نگاشت شده باشند یا به صورت خودکار انتخاب شده باشند؛ به جز استریمهایی که خروجی فیلترگرافهای پیچیده هستند.
توضیحات (Description)
زیربخشهای زیر قواعد مختلف دخیل در انتخاب استریم را تشریح میکنند. مثالهای پس از آن نشان میدهند که چگونه این قواعد در عمل به کار گرفته میشوند.
اگرچه نهایت تلاش برای بازتاب دقیق رفتار برنامه صورت گرفته است، اما FFmpeg به طور مداوم در حال توسعه است و ممکن است کد از زمان نگارش این متن تغییر کرده باشد.
انتخاب خودکار استریم (Automatic stream selection)
در صورت عدم وجود هرگونه گزینه map برای یک فایل خروجی خاص، ffmpeg قالب خروجی را بررسی میکند تا ببیند چه انواعی از استریمها میتوانند در آن گنجانده شوند، یعنی ویدیو، صدا و/یا زیرنویس. برای هر نوع استریم قابل قبول، ffmpeg در صورت وجود، یک استریم را از میان تمام ورودیها برمیگزیند.
برنامه آن استریم را بر اساس معیارهای زیر انتخاب خواهد کرد:
- برای ویدیو، استریمی است که بالاترین وضوح (resolution) را دارد،
- برای صدا، استریمی است که بیشترین تعداد کانال را دارد،
- برای زیرنویس، اولین استریم زیرنویس یافتشده است، اما یک نکته وجود دارد: انکودر پیشفرض زیرنویسِ قالب خروجی میتواند مبتنی بر متن یا تصویر باشد، و تنها یک استریم زیرنویس از همان نوع برگزیده خواهد شد.
در حالتی که چندین استریم از یک نوع دارای رتبه برابر باشند، استریمی که کمترین اندیس را دارد انتخاب میشود.
استریمهای داده یا پیوستها به صورت خودکار انتخاب نمیشوند و تنها میتوانند با استفاده از "-map" گنجانده شوند.
انتخاب دستی استریم (Manual stream selection)
هنگامی که از "-map" استفاده میشود، منحصراً استریمهای نگاشتشده توسط کاربر در آن فایل خروجی گنجانده میشوند، با یک استثنای احتمالی برای خروجیهای فیلترگراف که در ادامه شرح داده شده است.
فیلترگرافهای پیچیده (Complex filtergraphs)
چنانچه خروجیهای فیلترگراف پیچیدهای دارای پایههای (pads) بدون برچسب باشند، به اولین فایل خروجی اضافه خواهند شد. اگر نوع استریم توسط قالب خروجی پشتیبانی نشود، این امر منجر به خطای مرگبار (fatal error) میگردد. در صورت عدم وجود گزینه map، گنجاندن این استریمها سبب صرفنظر کردن از انتخاب خودکار استریمهای همنوع آنها میشود. اگر گزینههای map حضور داشته باشند، این استریمهای فیلترگراف علاوه بر استریمهای نگاشتشده افزوده میگردند.
استریمهای خروجی فیلترگراف پیچیده با پایههای برچسبدار باید دقیقاً یک بار نگاشت شوند.
مدیریت استریم (Stream handling)
مدیریت استریم مستقل از انتخاب استریم است، به استثنای زیرنویسها که در زیر توضیح داده شده است. مدیریت استریم از طریق گزینه "-codec" که به استریمهای درون یک فایل خروجی خاص اشاره دارد تنظیم میشود. به ویژه، گزینههای کدک توسط ffmpeg پس از فرایند انتخاب استریم اعمال میگردند و بنابراین تأثیری بر انتخاب ندارند. اگر هیچ گزینه "-codec" برای یک نوع استریم مشخص نشده باشد، ffmpeg انکودر پیشفرض ثبتشده توسط ماکسر فایل خروجی را برمیگزیند.
یک استثنا برای زیرنویسها وجود دارد. اگر یک انکودر زیرنویس برای یک فایل خروجی تعیین شود، نخستین استریم زیرنویس یافتشده از هر نوع (متنی یا تصویری) گنجانده خواهد شد. ابزار ffmpeg بررسی نمیکند که آیا انکودر مشخصشده قادر به تبدیل استریم انتخابشده است یا اینکه آیا استریم تبدیلشده درون قالب خروجی قابل قبول است یا خیر. این نکته به طور کلی نیز صدق میکند: هنگامی که کاربر انکودری را به صورت دستی تنظیم میکند، فرایند انتخاب استریم نمیتواند بررسی کند که آیا استریم انکودشده میتواند درون فایل خروجی ماکس (mux) شود یا نه. اگر نتواند، ffmpeg متوقف خواهد شد و پردازش تمامی فایلهای خروجی با شکست مواجه میشود.
مثالها (Examples)
مثالهای زیر رفتار، ظرافتها و محدودیتهای روشهای انتخاب استریم در ffmpeg را به تصویر میکشند.
این مثالها سه فایل ورودی زیر را مفروض میدارند.
input file 'A.avi'
stream 0: video 640x360
stream 1: audio 2 channels
input file 'B.mp4'
stream 0: video 1920x1080
stream 1: audio 2 channels
stream 2: subtitles (text)
stream 3: audio 5.1 channels
stream 4: subtitles (text)
input file 'C.mkv'
stream 0: video 1280x720
stream 1: audio 2 channels
stream 2: subtitles (image)
مثال: انتخاب خودکار استریم (automatic stream selection)
ffmpeg -i A.avi -i B.mp4 out1.mkv out2.wav -map 1:a -c:a copy out3.mov
سه فایل خروجی مشخص شده است، و برای دو فایل نخست، هیچ گزینه "-map" تنظیم نشده است، بنابراین ffmpeg استریمها را برای این دو فایل به صورت خودکار انتخاب میکند.
فایل out1.mkv یک فایل کانتینر ماتروشکا است و استریمهای ویدیو، صدا و زیرنویس را میپذیرد، بنابراین ffmpeg تلاش میکند از هر نوع یک استریم برگزیند. برای ویدیو، "stream 0" از B.mp4 را انتخاب خواهد کرد که بالاترین رزولوشن را در میان تمام استریمهای ویدیوی ورودی داراست. برای صدا، "stream 3" از B.mp4 را برمیگزیند، زیرا بیشترین تعداد کانال را دارد. برای زیرنویس، "stream 2" از B.mp4 را انتخاب خواهد کرد که نخستین استریم زیرنویس از میان A.avi و B.mp4 است.
فایل out2.wav تنها استریمهای صوتی را میپذیرد، بنابراین فقط "stream 3" از B.mp4 انتخاب میگردد.
برای out3.mov، از آنجا که گزینه "-map" تنظیم شده است، هیچ انتخاب خودکار استریمی رخ نخواهد داد. گزینه "-map 1:a" تمام استریمهای صوتی را از دومین ورودی یعنی B.mp4 انتخاب میکند. هیچ استریم دیگری در این فایل خروجی گنجانده نخواهد شد.
برای دو خروجی اول، تمامی استریمهای گنجاندهشده ترنسکد خواهند شد. انکودرهای برگزیدهشده همان موارد پیشفرضی خواهند بود که توسط هر قالب خروجی ثبت شدهاند، که ممکن است با کدک استریمهای ورودی انتخابشده مطابقت نداشته باشند.
برای خروجی سوم، گزینه کدک برای استریمهای صوتی روی "copy" تنظیم شده است، بنابراین هیچ عملیات دیکود-فیلتر-انکودی انجام نخواهد شد، یا نمیتواند انجام شود. بستههای استریمهای انتخابشده از فایل ورودی منتقل شده و درون فایل خروجی ماکس میشوند.
مثال: انتخاب خودکار زیرنویسها (automatic subtitles selection)
ffmpeg -i C.mkv out1.mkv -c:s dvdsub -an out2.mkv
اگرچه out1.mkv یک فایل کانتینر ماتروشکا است که استریمهای زیرنویس را میپذیرد، تنها یک استریم ویدیو و یک استریم صدا انتخاب خواهند شد. استریم زیرنویسِ C.mkv تصویری است و انکودر پیشفرض زیرنویس در ماکسر ماتروشکا متنی است، بنابراین انتظار میرود عملیات ترنسکد برای زیرنویس با شکست مواجه شود و در نتیجه این استریم انتخاب نمیشود. با این حال، در out2.mkv، یک انکودر زیرنویس در خط فرمان مشخص شده است و بنابراین، استریم زیرنویس علاوه بر استریم ویدیو انتخاب میگردد. حضور گزینه "-an" انتخاب استریم صوتی را برای out2.mkv غیرفعال میسازد.
مثال: خروجیهای بدون برچسب فیلترگراف (unlabeled filtergraph outputs)
ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt
در اینجا یک فیلترگراف با استفاده از گزینه "-filter_complex" برپا شده است و از یک فیلتر ویدیویی منفرد تشکیل میشود. فیلتر "overlay" دقیقاً به دو ورودی ویدیویی نیاز دارد، اما هیچ ورودی مشخص نشده است، بنابراین از دو استریم ویدیویی در دسترس نخست استفاده میشود، یعنی استریمهای مربوط به A.avi و C.mkv. پایه خروجی فیلتر برچسبی ندارد و بنابراین به نخستین فایل خروجی یعنی out1.mp4 ارسال میگردد. به همین دلیل، از انتخاب خودکار استریم ویدیو که استریم موجود در B.mp4 را برمیگزید صرفنظر میشود. استریم صوتی با بیشترین کانال یعنی "stream 3" در B.mp4 به صورت خودکار انتخاب میشود. با این حال هیچ استریم زیرنویسی انتخاب نمیشود، زیرا قالب MP4 انکودر پیشفرضی برای زیرنویس ثبت نکرده است و کاربر نیز انکودر زیرنویس تعیین ننموده است.
فایل خروجی دوم، out2.srt، تنها استریمهای زیرنویس متنی را میپذیرد. بنابراین، اگرچه اولین استریم زیرنویسِ در دسترس متعلق به C.mkv است، اما تصویری بوده و از آن صرفنظر میشود. استریم انتخابشده، یعنی "stream 2" در B.mp4، نخستین استریم زیرنویس متنی است.
مثال: خروجیهای برچسبدار فیلترگراف (labeled filtergraph outputs)
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0[outv];overlay;aresample" \
-map '[outv]' -an out1.mp4 \
out2.mkv \
-map '[outv]' -map 1:a:0 out3.mkv
دستور بالا شکست خواهد خورد، زیرا پایه خروجی برچسبگذاریشده با "[outv]" دو بار نگاشت شده است. هیچیک از فایلهای خروجی پردازش نخواهند شد.
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0[outv];overlay;aresample" \
-an out1.mp4 \
out2.mkv \
-map 1:a:0 out3.mkv
این دستور بالا نیز شکست خواهد خورد چرا که خروجی فیلتر hue دارای برچسب "[outv]" است و به هیچ مقصدی نگاشت نشده است.
دستور باید به شکل زیر اصلاح شود:
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" \
-map '[outv1]' -an out1.mp4 \
out2.mkv \
-map '[outv2]' -map 1:a:0 out3.mkv
استریم ویدیو از B.mp4 به فیلتر hue فرستاده میشود که خروجی آن با استفاده از فیلتر split یک بار کلون (تکثیر) شده و هر دو خروجی برچسبگذاری میشوند. سپس یک نسخه به فایل خروجی اول و نسخه دیگر به فایل خروجی سوم نگاشت میگردد.
فیلتر overlay که نیازمند دو ورودی ویدیو است، از دو استریم ویدیویی استفادهنشده اول بهره میگیرد. اینها استریمهای مربوط به A.avi و C.mkv هستند. خروجی overlay برچسبی ندارد، بنابراین صرفنظر از حضور گزینه "-map" به نخستین فایل خروجی یعنی out1.mp4 ارسال میشود.
به فیلتر aresample نخستین استریم صوتی استفادهنشده، یعنی استریم متعلق به A.avi ارسال میگردد. از آنجا که این خروجی فیلتر نیز بدون برچسب است، آن نیز به نخستین فایل خروجی نگاشت میشود. حضور گزینه "-an" تنها مانع از انتخاب خودکار یا دستی استریمهای صوتی میشود، نه خروجیهای ارسالی از فیلترگرافها. هر دوی این استریمهای نگاشتشده پیش از استریم نگاشتشده در out1.mp4 مرتب خواهند شد.
استریمهای ویدیو، صدا و زیرنویس نگاشتشده به "out2.mkv" کاملاً بر اساس انتخاب خودکار استریم تعیین میشوند.
out3.mkv شامل خروجی ویدیویی کلونشده از فیلتر hue و نخستین استریم صوتی از B.mp4 است.
گزینهها (OPTIONS)
تمامی گزینههای عددی، در صورتی که به گونه دیگری مشخص نشده باشند، یک رشته به عنوان عدد را در ورودی میپذیرند که میتواند با یکی از پیشوندهای یکای SI دنبال شود، برای مثال: 'K'، 'M'، یا 'G'.
اگر 'i' به پیشوند یکای SI اضافه شود، کل پیشوند به عنوان پیشوند یکا برای مضارب دودویی تفسیر میگردد که بر پایه توانهای ۱۰۲۴ به جای توانهای ۱۰۰۰ هستند. افزودن 'B' به پیشوند یکای SI مقدار را در ۸ ضرب میکند. این امکان استفاده از پسوندهای عددی مانند: 'KB'، 'MiB'، 'G' و 'B' را فراهم میسازد.
گزینههایی که آرگومان دریافت نمیکنند، گزینههای بولی (boolean) هستند و مقدار متناظر را روی true تنظیم مینمایند. میتوان آنها را با افزودن پیشوند "no" به ابتدای نام گزینه روی false تنظیم کرد. برای نمونه، استفاده از "-nofoo" گزینه بولی با نام "foo" را روی false قرار میدهد.
گزینههایی که آرگومان میپذیرند، از ساختار ویژهای پشتیبانی میکنند که در آن آرگومان ارائهشده در خط فرمان به عنوان مسیر فایلی تفسیر میشود که مقدار واقعی آرگومان از آن بارگذاری میگردد. برای استفاده از این قابلیت، یک اسلش '/' بلافاصله پیش از نام گزینه (پس از خطتیره ابتدایی) اضافه کنید. برای مثال:
ffmpeg -i INPUT -/filter:v filter.script OUTPUT
شرح فیلترگراف را از فایل با نام filter.script بارگذاری خواهد کرد.
مشخصکنندههای استریم (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
- با
استریمهای
دارای
پیکربندی
قابل
استفاده
مطابقت
مییابد؛
کدک باید
تعریف شده
باشد و
اطلاعات
اساسی
مانند
ابعاد
تصویر یا
نرخ
نمونهبرداری
صدا باید
موجود
باشند.
توجه داشته باشید که در ffmpeg، تطابق بر اساس متادیتا تنها برای فایلهای ورودی به درستی کار خواهد کرد.
گزینههای عمومی (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)
- -f fmt (input/output)
- اجبار قالب فایل ورودی یا خروجی. قالب معمولاً برای فایلهای ورودی به طور خودکار تشخیص داده میشود و برای فایلهای خروجی از پسوند فایل حدس زده میشود، بنابراین این گزینه در بیشتر موارد مورد نیاز نیست.
- -i url (input)
- آدرس یا مسیر فایل ورودی
- -y (global)
- بازنویسی فایلهای خروجی بدون پرسش از کاربر.
- -n (global)
- عدم بازنویسی فایلهای خروجی، و خروج فوری در صورتی که فایل خروجی مشخصشده از قبل وجود داشته باشد.
- -stream_loop number (input)
- تنظیم تعداد دفعاتی که استریم ورودی باید تکرار (loop) شود. مقدار 0 به معنای عدم تکرار و -1 به معنای حلقه نامحدود است.
- -recast_media (global)
- امکان اجبار یک دیکودر از نوع رسانهای متفاوت با آنچه توسط دیماکسر شناسایی یا تعیین شده است. برای دیکود کردن دادههای رسانهای که به عنوان استریمهای داده ماکس شدهاند مفید است.
- -c[:stream_specifier] codec (input/output,per-stream)
- -codec[:stream_specifier] codec (input/output,per-stream)
- انتخاب یک
انکودر
(هنگامی که
پیش از یک
فایل خروجی
استفاده
شود) یا یک
دیکودر
(هنگامی که
پیش از یک
فایل ورودی
استفاده
شود) برای
یک یا چند
استریم.
پارامتر codec
نام یک
دیکودر/انکودر
است یا
مقدار ویژه
"copy" (تنها
در خروجی)
برای
اینکه
مشخص کند
استریم
نباید
مجدداً
انکود شود.
برای مثال
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
تمام استریمهای ویدیو را با libx264 انکود کرده و تمام استریمهای صوتی را کپی میکند.
برای هر استریم، آخرین گزینه "c" منطبق اعمال میشود، بنابراین
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
تمامی استریمها را به جز دومین استریم ویدیو (که با libx264 انکود میشود) و صد و سی و هشتمین استریم صوتی (که با libvorbis انکود میگردد) کپی خواهد کرد.
- -t duration (input/output)
- هنگامی که
به عنوان
گزینه
ورودی
استفاده
شود (پیش از
"-i")،
مدتزمان
داده
خواندهشده
از فایل
ورودی را
محدود
میکند.
هنگامی که به عنوان گزینه خروجی استفاده شود (پیش از آدرس خروجی)، پس از رسیدن مدتزمان آن به duration نوشتن خروجی را متوقف میسازد.
پارامتر duration باید مشخصکننده مدتزمان باشد، به بخش Time duration در راهنمای ffmpeg-utils(1) مراجعه کنید.
گزینههای -to و -t مانعهالجمع هستند و -t اولویت دارد.
- -to position (input/output)
- توقف نوشتن
خروجی یا
خواندن
ورودی در
موقعیت
زمانی position.
پارامتر position
باید
مشخصکننده
مدتزمان
باشد، به
بخش Time duration در
راهنمای
ffmpeg-utils(1) مراجعه
کنید.
گزینههای -to و -t مانعهالجمع هستند و -t اولویت دارد.
- -fs limit_size (output)
- تنظیم سقف حجم فایل خروجی بر حسب بایت. پس از فراتر رفتن از این سقف، هیچ بخش داده دیگری نوشته نمیشود. حجم فایل خروجی اندکی بیشتر از حجم درخواستی فایل خواهد بود.
- -ss position (input/output)
- هنگام
استفاده به
عنوان
گزینه
ورودی (پیش
از "-i")،
در فایل
ورودی به
موقعیت position
پرش زمانی (seek)
انجام
میدهد.
توجه داشته
باشید که در
بیشتر
قالبها
پرش زمانی
دقیق ممکن
نیست،
بنابراین
ffmpeg به
نزدیکترین
نقطه پرش
پیش از position
میرود.
هنگام
ترنسکدینگ
و زمانی که
-accurate_seek فعال
باشد
(پیشفرض)،
این بخش
اضافی میان
نقطه پرش و
position دیکود
شده و دور
ریخته
میشود.
هنگام کپی
استریم یا
زمانی که
-noaccurate_seek
استفاده
شود، حفظ
خواهد شد.
هنگام استفاده به عنوان گزینه خروجی (پیش از آدرس خروجی)، ورودی را دیکود کرده اما دادهها را دور میریزد تا برچسبهای زمانی به position برسند.
پارامتر position باید مشخصکننده مدتزمان باشد، به بخش Time duration در راهنمای ffmpeg-utils(1) مراجعه کنید.
- -sseof position (input)
- مشابه با گزینه "-ss" اما نسبت به "انتهای فایل". به این معنا که مقادیر منفی نقاط پیش از پایان فایل هستند و 0 دقیقاً در انتهای فایل است.
- -isync input_index (input)
- تعیین یک
ورودی به
عنوان منبع
همگامسازی
(sync source).
این گزینه تفاوت میان زمانهای آغازین ورودیهای هدف و مرجع را محاسبه کرده و برچسبهای زمانی فایل هدف را با آن تفاوت آفست میدهد. برچسبهای زمانی منبع دو ورودی برای نتایج مورد انتظار باید از یک منبع ساعت مشتق شوند. اگر "copyts" تنظیم شده باشد، "start_at_zero" نیز باید تنظیم گردد. اگر هر یک از ورودیها فاقد برچسب زمانی آغازین باشند، هیچ تنظیم همگامسازی انجام نمیگیرد.
مقادیر قابل قبول مواردی هستند که به یک اندیس معتبر ورودی در ffmpeg اشاره دارند. اگر مرجع همگامسازی خود اندیس هدف یا -1 باشد، هیچ تنظیمی روی برچسبهای زمانی هدف صورت نمیگیرد. یک مرجع همگامسازی نباید خود با هیچ ورودی دیگری همگام شده باشد.
مقدار پیشفرض -1 است.
- -itsoffset offset (input)
- تنظیم آفست
زمانی
ورودی.
پارامتر offset باید مشخصکننده مدتزمان باشد، به بخش Time duration در راهنمای ffmpeg-utils(1) مراجعه کنید.
این آفست به برچسبهای زمانی فایلهای ورودی اضافه میشود. تعیین یک آفست مثبت به این معناست که استریمهای متناظر به میزان مدتزمان تعیینشده در offset به تأخیر میافتند.
- -itsscale scale (input,per-stream)
- تغییر مقیاس برچسبهای زمانی ورودی. پارامتر scale باید یک عدد ممیز شناور باشد.
- -timestamp date (output)
- تنظیم
برچسب
زمانی ضبط
در کانتینر.
پارامتر date باید مشخصکننده تاریخ باشد، به بخش Date در راهنمای ffmpeg-utils(1) مراجعه کنید.
- -metadata[:metadata_specifier] key=value (output,per-metadata)
- تنظیم یک
جفت
کلید/مقدار
در متادیتا.
پارامتر اختیاری metadata_specifier میتواند برای تنظیم متادیتا روی استریمها، فصلها یا برنامهها داده شود. برای جزئیات به مستندات "-map_metadata" مراجعه کنید.
این گزینه بر متادیتای تنظیمشده با "-map_metadata" اولویت دارد و آن را لغو میکند. همچنین حذف متادیتا با استفاده از یک مقدار خالی امکانپذیر است.
برای مثال، جهت تنظیم عنوان در فایل خروجی:
ffmpeg -i in.avi -metadata title="my title" out.flv
جهت تنظیم زبان نخستین استریم صوتی:
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT
- -disposition[:stream_specifier] value (output,per-stream)
- تنظیم
فلگهای
وضعیت (disposition)
برای یک
استریم.
مقدار پیشفرض: به طور پیشفرض، تمامی فلگهای disposition از استریم ورودی کپی میشوند، مگر اینکه استریم خروجی که این گزینه بر آن اعمال میشود از یک فیلترگراف پیچیده تغذیه شود - در این صورت هیچ فلگی به طور پیشفرض تنظیم نمیگردد.
پارامتر value دنبالهای از فلگهای disposition جداشده با '+' یا '-' است. یک پیشوند '+' فلگ دادهشده را اضافه میکند و '-' آن را حذف مینماید. اگر فلگ اول نیز دارای پیشوند '+' یا '-' باشد، وضعیت حاصل همان مقدار پیشفرض بهروزشده با value است. اگر فلگ اول پیشوند نداشته باشد، وضعیت حاصل همان value خواهد بود. همچنین میتوان با تنظیم آن روی 0 وضعیت را پاک کرد.
اگر هیچ گزینه "-disposition" برای یک فایل خروجی مشخص نشده باشد، ffmpeg به طور خودکار فلگ 'default' را روی نخستین استریم از هر نوع تنظیم میکند، زمانی که چندین استریم از این نوع در فایل خروجی وجود داشته باشند و هیچ استریمی از آن نوع از قبل به عنوان پیشفرض علامتگذاری نشده باشد.
گزینه "-dispositions" فلگهای disposition شناختهشده را فهرست میکند.
برای مثال، جهت قرار دادن دومین استریم صوتی به عنوان استریم پیشفرض:
ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv
جهت پیشفرض قرار دادن دومین استریم زیرنویس و حذف وضعیت پیشفرض از نخستین استریم زیرنویس:
ffmpeg -i in.mkv -c copy -disposition:s:0 0 -disposition:s:1 default out.mkv
جهت افزودن یک طرح جلد/تصویر بندانگشتی تعبیهشده:
ffmpeg -i in.mp4 -i IMAGE -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4
جهت افزودن فلگ 'original' و حذف فلگ 'comment' از نخستین استریم صوتی بدون حذف سایر فلگهای آن:
ffmpeg -i in.mkv -c copy -disposition:a:0 +original-comment out.mkv
جهت حذف فلگ 'original' و افزودن فلگ 'comment' به نخستین استریم صوتی بدون حذف سایر فلگهای آن:
ffmpeg -i in.mkv -c copy -disposition:a:0 -original+comment out.mkv
جهت تنظیم انحصاری فلگهای 'original' و 'comment' بر روی نخستین استریم صوتی (و حذف سایر فلگهای آن):
ffmpeg -i in.mkv -c copy -disposition:a:0 original+comment out.mkv
جهت حذف تمام فلگهای disposition از نخستین استریم صوتی:
ffmpeg -i in.mkv -c copy -disposition:a:0 0 out.mkv
همه ماکسرها از تصاویر بندانگشتی تعبیهشده پشتیبانی نمیکنند، و آنهایی هم که پشتیبانی میکنند تنها تعداد معدودی فرمت مانند JPEG یا PNG را میپذیرند.
- -program [title=title:][program_num=program_num:]st=stream[:st=stream...] (output)
- یک برنامه با title و program_num مشخصشده ایجاد کرده و stream(های) تعیینشده را به آن اضافه میکند.
- -stream_group [map=input_file_id=stream_group][type=type:]st=stream[:st=stream][:stg=stream_group][:id=stream_group_id...] (output)
- یک گروه
استریم از
type و stream_group_id
مشخصشده،
یا از طریق
mapping یک گروه
ورودی، و
افزودن
stream(ها) و/یا
stream_group(های)
قبلاً
تعریفشده
به آن ایجاد
میکند.
پارامتر type میتواند یکی از موارد زیر باشد:
- iamf_audio_element
- گروهبندی
streamهایی که
متعلق به یک
Audio Element یکسان در
IAMF هستند
برای این type گروه، گزینههای زیر در دسترس است:
- audio_element_type
- نوع Audio Element. مقادیر زیر پشتیبانی میشوند:
- demixing
- اطلاعات دیمیکس مورد استفاده برای بازسازی نمایش صوتی کانال مقیاسپذیر. این گزینه باید با یک ',' از سایرین جدا شود و گزینههای key=value زیر را میپذیرد:
- parameter_id
- شناسهای که بلوکهای پارامتر در فریمها ممکن است به آن ارجاع دهند
- dmixp_mode
- ترکیب از پیش تعریفشدهای از پارامترهای دیمیکس
- recon_gain
- اطلاعات بهره بازسازی (recon gain) مورد استفاده برای بازسازی نمایش صوتی کانال مقیاسپذیر. این گزینه باید با یک ',' از سایرین جدا شود و گزینههای key=value زیر را میپذیرد:
- parameter_id
- شناسهای که بلوکهای پارامتر در فریمها ممکن است به آن ارجاع دهند
- layer
- لایهای که
یک چیدمان
کانال را در
Audio Element تعریف
میکند. این
گزینه باید
با یک ',' از
سایرین جدا
شود. چندین
ورودی
جداشده با ','
میتواند
تعریف شود،
و حداقل یک
ورودی باید
تنظیم گردد.
گزینههای key=value جداشده با ":" زیر را میپذیرد:
- recon_gain
- تعیین اینکه آیا وجود recon_gain به عنوان متادیتا در بلوکهای پارامتر درون فریمها سیگنال داده شود یا خیر
- output_gain
- output_gain_flags
- کانالهایی که output_gain بر آنها اعمال میشود. فلگهای زیر در دسترس هستند:
- ambisonics_mode
- حالت ambisonics. اگر
audio_element_type روی channel
تنظیم شده
باشد، اثری
ندارد.
مقادیر زیر پشتیبانی میشوند:
- mono
- هر کانال ambisonics به عنوان یک استریم مونو منفرد در گروه کدگذاری میشود
- default_w
- مقدار وزن پیشفرض
- iamf_mix_presentation
- گروهبندی
streamهایی که
به تمامی
عناصر صوتی
IAMF مرتبط با
ارجاع Mix Presentation
یکسان در IAMF
تعلق دارند
برای این type گروه، گزینههای زیر در دسترس هستند:
- submix
- یک زیرمیکس
درون Mix Presentation.
این گزینه
باید با یک ','
از سایرین
جدا شود.
چندین
ورودی
جداشده با ','
میتواند
تعریف شود،
و حداقل یک
ورودی باید
تنظیم گردد.
گزینههای key=value جداشده با ":" زیر را میپذیرد:
- parameter_id
- شناسهای که بلوکهای پارامتر در فریمها ممکن است برای پسپردازش سیگنال صوتی میکسشده جهت تولید سیگنال صوتی برای پخش به آن ارجاع دهند
- parameter_rate
- فیلدهای مدت نرخ نمونه در بلوکهای پارامتر درون فریمها که به این parameter_id ارجاع میدهند بر اساس آن بیان میشوند
- default_mix_gain
- مقدار بهره میکس پیشفرض برای اعمال زمانی که هیچ بلوک پارامتری دارای همان parameter_id برای یک فریم دادهشده نباشد
- element
- ارجاع به یک
Audio Element مورد
استفاده در
این Mix Presentation برای
تولید
سیگنال
صوتی خروجی
نهایی جهت
پخش. این
گزینه باید
با یک '|' از
سایرین جدا
شود. چندین
ورودی
جداشده با '|'
میتواند
تعریف شود،
و حداقل یک
ورودی باید
تنظیم گردد.
گزینههای key=value جداشده با ":" زیر را میپذیرد:
- stg
- شناسه stream_group_id برای یک Audio Element که این زیرمیکس به آن ارجاع میدهد
- parameter_id
- شناسهای که بلوکهای پارامتر در فریمها برای اعمال هرگونه پردازش بر روی Audio Element ارجاع دادهشده و رندرشده پیش از جمع شدن با سایر عناصر صوتی پردازششده ممکن است به آن ارجاع دهند
- parameter_rate
- فیلدهای مدت نرخ نمونه در بلوکهای پارامتر درون فریمها که به این parameter_id ارجاع میدهند بر اساس آن بیان میشوند
- default_mix_gain
- مقدار بهره میکس پیشفرض برای اعمال در زمانی که هیچ بلوک پارامتری با همان parameter_id برای یک فریم دادهشده وجود ندارد
- annotations
- یک رشته key=value که عنصر زیرمیکس را توصیف میکند که در آن "key" رشتهای منطبق بر BCP-47 است که زبان رشته "value" را مشخص میسازد. "key" باید همانند مقدار موجود در annotations میکس باشد
- headphones_rendering_mode
- نشان
میدهد که
آیا عنصر
صوتی مبتنی
بر کانال
ورودی به
بلندگوهای
استریو
رندر
میشود یا
هنگام پخش
روی هدفون
با یک
رندرساز
دوگوشی (binaural)
فضاسازی (spatialize)
میگردد.
اگر audio_element_type
مربوط به
عنصر صوتی
ارجاع داده
شده روی channel
تنظیم شده
باشد، اثری
ندارد.
مقادیر زیر پشتیبانی میشوند:
- layout
- چیدمانهایی
را برای این
زیرمیکس
مشخص
میکند که
اطلاعات
بلندی صدا
بر روی
آنها
اندازهگیری
شده است.
این گزینه
باید با یک '|'
از سایرین
جدا شود.
چندین
ورودی
جداشده با '|'
میتواند
تعریف شود،
و حداقل یک
ورودی باید
تنظیم گردد.
گزینههای key=value جداشده با ":" زیر را میپذیرد:
- loudspeakers
- چیدمان از استاندارد سیستم صوتی بلندگوی ITU-2051-3 پیروی میکند.
- binaural
- چیدمان دوگوشی (binaural) است.
- sound_system
- چیدمان کانال مطابق با یکی از سیستمهای صوتی A تا J در ITU-2051-3، به علاوه 7.1.2 و 3.1.2. اگر layout_type روی binaural تنظیم شده باشد، اثری ندارد.
- integrated_loudness
- اطلاعات بلندی یکپارچه برنامه، طبق تعریف ITU-1770-4.
- digital_peak
- مقدار پیک دیجیتال (نمونهبرداریشده) سیگنال صوتی، طبق تعریف ITU-1770-4.
- true_peak
- پیک واقعی سیگنال صوتی، طبق تعریف ITU-1770-4.
- dialog_anchored_loudness
- اطلاعات بلندی گفتوگو، طبق تعریف ITU-1770-4.
- album_anchored_loudness
- اطلاعات بلندی آلبوم، طبق تعریف ITU-1770-4.
- annotations
- یک رشته key=value که میکس را توصیف میکند که در آن "key" رشتهای منطبق بر BCP-47 است که زبان رشته "value" را مشخص میسازد. "key" باید با مقادیر موجود در تمامی annotationsهای عناصر زیرمیکس یکسان باشد.
برای مثال جهت ایجاد یک فایل مقیاسپذیر 5.1 IAMF از چند فایل ورودی WAV:
ffmpeg -i front.wav -i back.wav -i center.wav -i lfe.wav -map 0:0 -map 1:0 -map 2:0 -map 3:0 -c:a opus -stream_group type=iamf_audio_element:id=1:st=0:st=1:st=2:st=3, demixing=parameter_id=998, recon_gain=parameter_id=101, layer=ch_layout=stereo, layer=ch_layout=5.1(side), -stream_group type=iamf_mix_presentation:id=2:stg=0:annotations=en-us=Mix_Presentation, submix=parameter_id=100:parameter_rate=48000|element=stg=0:parameter_id=100:annotations=en-us=Scalable_Submix|layout=sound_system=stereo|layout=sound_system=5.1(side) -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 output.iamf
جهت کپی دو گروه استریم (Audio Element و Mix Presentation) از یک فایل ورودی IAMF با چهار استریم درون یک خروجی mp4:
ffmpeg -i input.iamf -c:a copy -stream_group map=0=0:st=0:st=1:st=2:st=3 -stream_group map=0=1:stg=0 -streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 output.mp4
- -target type (output)
- تعیین نوع
فایل هدف
("vcd",
"svcd",
"dvd",
"dv",
"dv50").
مقدار type
میتواند
با "pal-",
"ntsc-" یا
"film-"
پیشوندگذاری
شود تا
استاندارد
متناظر را
به کار
گیرد. تمام
گزینههای
قالب (نرخ
بیت،
کدکها،
اندازه
بافرها) به
طور خودکار
تنظیم
میشوند.
کافی است
دستور زیر
را وارد
کنید:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
با این وجود میتوانید گزینههای اضافی را مشخص کنید تا زمانی که میدانید با استاندارد تداخلی ندارند، مانند:
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
پارامترهای تنظیمشده برای هر هدف به شرح زیر هستند.
VCD
<pal>: -f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324 -s 352x288 -r 25 -codec:v mpeg1video -g 15 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680 -ar 44100 -ac 2 -codec:a mp2 -b:a 224k <ntsc>: -f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324 -s 352x240 -r 30000/1001 -codec:v mpeg1video -g 18 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680 -ar 44100 -ac 2 -codec:a mp2 -b:a 224k <film>: -f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324 -s 352x240 -r 24000/1001 -codec:v mpeg1video -g 18 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680 -ar 44100 -ac 2 -codec:a mp2 -b:a 224k
SVCD
<pal>: -f svcd -packetsize 2324 -s 480x576 -pix_fmt yuv420p -r 25 -codec:v mpeg2video -g 15 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1 -ar 44100 -codec:a mp2 -b:a 224k <ntsc>: -f svcd -packetsize 2324 -s 480x480 -pix_fmt yuv420p -r 30000/1001 -codec:v mpeg2video -g 18 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1 -ar 44100 -codec:a mp2 -b:a 224k <film>: -f svcd -packetsize 2324 -s 480x480 -pix_fmt yuv420p -r 24000/1001 -codec:v mpeg2video -g 18 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1 -ar 44100 -codec:a mp2 -b:a 224k
DVD
<pal>: -f dvd -muxrate 10080k -packetsize 2048 -s 720x576 -pix_fmt yuv420p -r 25 -codec:v mpeg2video -g 15 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008 -ar 48000 -codec:a ac3 -b:a 448k <ntsc>: -f dvd -muxrate 10080k -packetsize 2048 -s 720x480 -pix_fmt yuv420p -r 30000/1001 -codec:v mpeg2video -g 18 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008 -ar 48000 -codec:a ac3 -b:a 448k <film>: -f dvd -muxrate 10080k -packetsize 2048 -s 720x480 -pix_fmt yuv420p -r 24000/1001 -codec:v mpeg2video -g 18 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008 -ar 48000 -codec:a ac3 -b:a 448k
DV
<pal>: -f dv -s 720x576 -pix_fmt yuv420p -r 25 -ar 48000 -ac 2 <ntsc>: -f dv -s 720x480 -pix_fmt yuv411p -r 30000/1001 -ar 48000 -ac 2 <film>: -f dv -s 720x480 -pix_fmt yuv411p -r 24000/1001 -ar 48000 -ac 2
هدف "dv50" کاملاً مشابه هدف "dv" است، به جز اینکه فرمت پیکسل برای هر سه استاندارد روی "yuv422p" تنظیم میشود.
هر مقدار تعیینشده توسط کاربر برای پارامترهای بالا، مقدار پیشتنظیم هدف را بازنویسی میکند. در این حالت، خروجی ممکن است با استاندارد هدف مطابقت نداشته باشد.
- -dn (input/output)
- به عنوان یک
گزینه
ورودی،
مانع از
فیلتر شدن
یا انتخاب
خودکار یا
نگاشت تمام
استریمهای
داده یک
فایل برای
هر خروجی
میشود. به
گزینه
"-discard"
برای
غیرفعالسازی
جداگانه
استریمها
مراجعه
کنید.
به عنوان یک گزینه خروجی، ضبط داده را غیرفعال میسازد، یعنی از انتخاب خودکار یا نگاشت هر استریم داده جلوگیری میکند. برای کنترل کامل دستی به گزینه "-map" مراجعه نمایید.
- -dframes number (output)
- تنظیم تعداد فریمهای داده برای خروجی. این یک نام مستعار منسوخ برای "-frames:d" است، که باید به جای آن استفاده شود.
- -frames[:stream_specifier] framecount (output,per-stream)
- توقف نوشتن در استریم پس از framecount فریم.
- -q[:stream_specifier] q (output,per-stream)
- -qscale[:stream_specifier] q (output,per-stream)
- استفاده از مقیاس کیفیت ثابت (VBR). معنای q/qscale وابسته به کدک است. اگر qscale بدون stream_specifier استفاده شود، تنها بر استریم ویدیو اعمال میگردد؛ این امر جهت حفظ سازگاری با رفتار پیشین است و از آنجا که تعیین مقدار مشخص کدک یکسان برای دو کدک مختلف صدا و تصویر عموماً زمانی که هیچ stream_specifier مشخص نشده مد نظر نیست.
- -filter[:stream_specifier] filtergraph (output,per-stream)
- ایجاد
فیلترگراف
مشخصشده
با filtergraph و
استفاده از
آن برای
فیلتر کردن
استریم.
پارامتر filtergraph توصیف فیلترگراف برای اعمال بر روی استریم است، و باید دارای یک ورودی منفرد و یک خروجی منفرد از همان نوع استریم باشد. در فیلترگراف، ورودی به برچسب "in" و خروجی به برچسب "out" متصل است. برای اطلاعات بیشتر درباره قواعد فیلترگراف به راهنمای ffmpeg-filters مراجعه کنید.
اگر میخواهید فیلترگرافهایی با چندین ورودی و/یا خروجی بسازید، به گزینه -filter_complex مراجعه نمایید.
- -reinit_filter[:stream_specifier] integer (input,per-stream)
- این گزینه بولی مشخص میکند که آیا فیلترگراف(هایی) که این استریم به آنها تغذیه میشود در صورت تغییر پارامترهای فریم ورودی در میانه استریم مجدداً راهاندازی شوند یا خیر. این گزینه به طور پیشفرض فعال است زیرا اکثر فیلترهای ویدیو و تمام فیلترهای صوتی نمیتوانند انحراف در مشخصات فریم ورودی را مدیریت نمایند. پس از راهاندازی مجدد، وضعیت فیلتر موجود از دست میرود، مانند مرجع تعداد فریم "n" که در برخی فیلترها موجود است. هر فریمی که در زمان راهاندازی مجدد بافر شده باشد از بین میرود. مشخصاتی که تغییر آنها سبب راهاندازی مجدد میشود عبارتند از: برای ویدیو: رزولوشن فریم یا فرمت پیکسل؛ برای صدا: فرمت نمونه، نرخ نمونهبرداری، تعداد کانال یا چیدمان کانال.
- -drop_changed[:stream_specifier] integer (input,per-stream)
- این گزینه بولی تعیین میکند که آیا یک فریم با پارامترهای متفاوت در میانه استریم به جای راهاندازی مجدد فیلترگراف دور ریخته شود یا خیر، چرا که راهاندازی مجدد به از دست رفتن وضعیت فیلتر میانجامد. عموماً برای جلوگیری از بستههای خراب اما قابل دیکود در ورودیهای پخش زنده سودمند است. مقدار پیشفرض false است.
- -filter_threads nb_threads (global)
- تعداد ریسههای مورد استفاده برای پردازش خط لوله فیلتر را تعیین میکند. هر خط لوله یک استخر ریسه با این تعداد ریسه برای پردازش موازی ایجاد مینماید. پیشفرض تعداد پردازندههای در دسترس است.
- -filter_buffered_frames nb_frames (global)
- حداکثر تعداد فریمهای بافرشده مجاز در یک فیلترگراف را تعیین میکند. در شرایط عادی، یک فیلترگراف نباید بیش از چند فریم بافر کند، به ویژه اگر فریمها به صورت متوازن به آن داده شده و از آن خوانده شوند (که رفتار مطلوب در ffmpeg است). با این حال، این گزینه به شما اجازه میدهد مجموع فریمهای بافرشده در تمام پیوندهای یک فیلترگراف را محدود کنید. اگر فریمهای بیشتری تولید شود، فیلترینگ لغو شده و خطایی بازگردانده میشود. مقدار پیشفرض 0 است، یعنی بدون محدودیت.
- -pre[:stream_specifier] preset_name (output,per-stream)
- تعیین پیشتنظیم (preset) برای استریم(های) منطبق.
- -stats (global)
- ثبت آمار و پیشرفت انکود به صورت لاگ سطح "info" (به "-loglevel" مراجعه کنید). به طور پیشفرض روشن است، برای غیرفعالسازی صریح آن باید "-nostats" را مشخص کنید.
- -stats_period time (global)
- تنظیم بازه زمانی بهروزرسانی پیشرفت/آمار انکود. پیشفرض 0.5 ثانیه است.
- -print_graphs (global)
- چاپ جزئیات گراف اجرا در stderr بر اساس قالبی که از طریق -print_graphs_format تنظیم شده است.
- -print_graphs_file filename (global)
- نوشتن جزئیات گراف اجرا در فایل مشخصشده بر اساس قالبی که از طریق -print_graphs_format تنظیم شده است.
- -print_graphs_format format (global)
- تنظیم قالب خروجی (قالبهای موجود عبارتند از: default, compact, csv, flat, ini, json, xml, mermaid, mermaidhtml). قالب پیشفرض json است.
- -progress url (global)
- ارسال
اطلاعات
پیشرفت
مناسب برای
برنامهها
به url.
اطلاعات پیشرفت به صورت دورهای و در پایان فرایند انکود نوشته میشوند. این اطلاعات از خطوط "key=value" تشکیل شده است. key تنها از نویسههای حرفی-عددی تشکیل میشود. آخرین کلید در توالی اطلاعات پیشرفت همواره "progress" با مقدار "continue" یا "end" است.
بازه بهروزرسانی با استفاده از "-stats_period" تنظیم میگردد.
برای مثال، لاگ اطلاعات پیشرفت در stdout:
ffmpeg -progress pipe:1 -i in.mkv out.mkv
- -stdin
- فعالسازی
تعامل روی
ورودی
استاندارد.
به طور
پیشفرض
روشن است
مگر ورودی
استاندارد
به عنوان یک
ورودی
استفاده
شده باشد.
برای
غیرفعالسازی
صریح تعامل
باید
"-nostdin" را
مشخص کنید.
غیرفعالسازی تعامل روی ورودی استاندارد زمانی مفید است که برای مثال ffmpeg در گروه فرایندهای پسزمینه اجرا شود. تقریباً همان نتیجه را میتوان با "ffmpeg ... < /dev/null" به دست آورد اما این کار نیازمند پوسته (shell) است.
- -debug_ts (global)
- چاپ
اطلاعات
برچسب
زمانی /
تاخیر (latency). به
طور
پیشفرض
خاموش است.
این گزینه
عمدتاً
برای اهداف
آزمایش و
اشکالزدایی
مفید است و
قالب خروجی
ممکن است از
یک نسخه به
نسخه دیگر
تغییر کند،
بنابراین
نباید توسط
اسکریپتهای
پرتابل
استفاده
شود.
همچنین به گزینه "-fdebug ts" مراجعه کنید.
- -attach filename (output)
- افزودن یک
پیوست به
فایل خروجی.
این قابلیت
توسط چند
قالب مانند
ماتروشکا
برای
مواردی
مانند
فونتهای
مورد
استفاده در
رندر
زیرنویسها
پشتیبانی
میشود.
پیوستها
به عنوان
نوع خاصی از
استریم
پیادهسازی
شدهاند،
بنابراین
این گزینه
یک استریم
جدید به
فایل اضافه
خواهد کرد.
سپس
میتوان
گزینههای
بهازایهراستریم
را روی این
استریم به
شیوه معمول
اعمال کرد.
استریمهای
پیوست
ایجادشده
با این
گزینه پس از
تمام
استریمهای
دیگر ساخته
خواهند شد
(یعنی پس از
استریمهای
ایجادشده
با "-map" یا
نگاشتهای
خودکار).
توجه داشته باشید که برای ماتروشکا همچنین باید تگ متادیتای mimetype را تنظیم کنید:
ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
(با فرض اینکه استریم پیوست سومین استریم در فایل خروجی خواهد بود).
- -dump_attachment[:stream_specifier] filename (input,per-stream)
- استخراج
استریم
پیوست
منطبق در
فایلی با
نام filename. اگر
filename خالی
باشد،
مقدار تگ
متادیتای
"filename"
استفاده
خواهد شد.
برای مثال جهت استخراج نخستین پیوست در فایلی با نام 'out.ttf':
ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
جهت استخراج تمام پیوستها در فایلهایی که توسط تگ "filename" تعیین شدهاند:
ffmpeg -dump_attachment:t "" -i INPUT
نکته فنی -- پیوستها به عنوان extradata کدک پیادهسازی شدهاند، بنابراین از این گزینه در واقع میتوان برای استخراج extradata از هر استریمی استفاده کرد، نه فقط پیوستها.
گزینههای ویدیو (Video Options)
- -vframes number (output)
- تنظیم تعداد فریمهای ویدیو برای خروجی. این یک نام مستعار منسوخ برای "-frames:v" است، که باید به جای آن استفاده شود.
- -r[:stream_specifier] fps (input/output,per-stream)
- تنظیم نرخ
فریم (مقدار
بر حسب
هرتز، کسر
یا مخفف).
به عنوان یک گزینه ورودی، هرگونه برچسب زمانی ذخیرهشده در فایل را نادیده میگیرد و در عوض برچسبهای زمانی را با فرض نرخ فریم ثابت fps تولید مینماید. این مشابه گزینه -framerate مورد استفاده برای برخی قالبهای ورودی مانند image2 یا v4l2 نیست (در نسخههای قدیمیتر FFmpeg یکسان بود). در صورت شک، به جای گزینه ورودی -r از -framerate استفاده کنید.
به عنوان یک گزینه خروجی:
- video encoding
- فریمها را دقیقاً پیش از انکود کردن تکثیر یا حذف میکند تا به نرخ فریم خروجی ثابت fps دست یابد.
- video streamcopy
- به ماکسر اعلام میکند که fps نرخ فریم استریم است. در این حالت هیچ دادهای حذف یا تکثیر نمیشود. اگر fps با نرخ فریم واقعی استریم که توسط برچسبهای زمانی بستهها تعیین شده مطابقت نداشته باشد، این امر ممکن است فایلهای نامعتبری تولید کند. همچنین به فیلتر بیتاستریم "setts" مراجعه کنید.
- -fpsmax[:stream_specifier] fps (output,per-stream)
- تنظیم
حداکثر نرخ
فریم (مقدار
هرتز، کسر
یا مخفف).
هنگامی که نرخ فریم خروجی به صورت خودکار تنظیم شود و بالاتر از این مقدار باشد، نرخ فریم خروجی را محدود (clamp) میکند. در پردازش دستهای یا هنگامی که نرخ فریم ورودی به اشتباه بسیار بالا تشخیص داده شود مفید است. نمیتواند همراه با "-r" تنظیم گردد. در طول کپی استریم نادیده گرفته میشود.
- -s[:stream_specifier] size (input/output,per-stream)
- تنظیم
اندازه
فریم.
به عنوان یک گزینه ورودی، این یک میانبر برای گزینه اختصاصی video_size است، که توسط برخی دیماکسرها شناسایی میشود که اندازه فریم برای آنها یا در فایل ذخیره نشده یا قابل پیکربندی است -- مانند ویدیوی خام یا کارتهای کپچر ویدیو.
به عنوان یک گزینه خروجی، فیلتر ویدیویی "scale" را به انتهای فیلترگراف متناظر درج میکند. لطفاً از فیلتر "scale" مستقیماً برای درج آن در ابتدا یا مکان دیگری استفاده کنید.
فرمت به صورت wxh است (پیشفرض - همانند منبع).
- -aspect[:stream_specifier] aspect (output,per-stream)
- تنظیم نسبت
ابعاد
نمایش
ویدیو که
توسط aspect
مشخص شده
است.
پارامتر aspect میتواند یک رشته عدد ممیز شناور، یا رشتهای به شکل num:den باشد که در آن num و den صورت و مخرج نسبت ابعاد هستند. برای مثال "4:3"، "16:9"، "1.3333" و "1.7777" مقادیر معتبر آرگومان هستند.
اگر همراه با -vcodec copy استفاده شود، بر نسبت ابعاد ذخیرهشده در سطح کانتینر تأثیر میگذارد، اما بر نسبت ابعاد ذخیرهشده در فریمهای انکودشده (در صورت وجود) تأثیری ندارد.
- -display_rotation[:stream_specifier] rotation (input,per-stream)
- تنظیم
متادیتای
چرخش ویدیو.
پارامتر rotation یک عدد اعشاری است که میزان چرخش در جهت پادساعتگرد (بر حسب درجه) را پیش از نمایش ویدیو مشخص میکند.
این گزینه متادیتای تبدیل چرخش/نمایش ذخیرهشده در فایل (در صورت وجود) را بازنویسی میکند. هنگامی که ویدیو در حال ترنسکد شدن است (به جای کپی) و "-autorotate" فعال است، ویدیو در مرحله فیلترینگ چرخانده میشود. در غیر این صورت، اگر ماکسر از آن پشتیبانی کند، متادیتا در فایل خروجی نوشته خواهد شد.
اگر گزینههای "-display_hflip" و/یا "-display_vflip" داده شوند، پس از چرخش مشخصشده توسط این گزینه اعمال میگردند.
- -display_hflip[:stream_specifier] (input,per-stream)
- تنظیم
اینکه آیا
تصویر در
هنگام
نمایش باید
به صورت
افقی معکوس
(flip) شود یا خیر.
به گزینه "-display_rotation" برای جزئیات بیشتر مراجعه کنید.
- -display_vflip[:stream_specifier] (input,per-stream)
- تنظیم
اینکه آیا
تصویر در
هنگام
نمایش باید
به صورت
عمودی
معکوس (flip) شود
یا خیر.
به گزینه "-display_rotation" برای جزئیات بیشتر مراجعه کنید.
- -mastering_display[:stream_specifier] G(%u,%u)B(%u,%u)R(%u,%u)WP(%u,%u)L(%u,%u) (input,per-stream)
- تنظیم
متادیتای
نمایش
مسترینگ
ویدیو (Mastering display metadata).
پارامتر G(%u,%u)B(%u,%u)R(%u,%u)WP(%u,%u)L(%u,%u) رشتهای است که مختصات اصلی نمایش X,Y را برای کانالهای GBR و نقطه سفید (WP) در واحدهای 0.00002، و مقادیر حداکثر-حداقل درخشندگی (L) را در واحدهای 0.0001 کاندلا بر متر مربع مشخص میسازد. این مقادیر اعداد صحیح بدون علامت هستند که صورت یک عدد کسری با مخرج ضمنی 50000 برای GBR و (WP)، و مخرج ضمنی 10000 برای (L) را نشان میدهند.
این گزینه متادیتای نمایش مسترینگ ذخیرهشده در فایل (در صورت وجود) را بازنویسی میکند.
- -content_light[:stream_specifier] %u,%u (input,per-stream)
- تنظیم
متادیتای
روشنایی
محتوای
ویدیو (Content light metadata).
مقدار %u,%u رشتهای است که حداکثر سطح روشنایی محتوا و حداکثر سطح روشنایی میانگین تصویر را مشخص میسازد.
این گزینه متادیتای روشنایی محتوای ذخیرهشده در فایل (در صورت وجود) را بازنویسی میکند.
- -vn (input/output)
- به عنوان یک
گزینه
ورودی،
مانع از
فیلتر شدن
یا انتخاب
خودکار یا
نگاشت تمام
استریمهای
ویدیوی یک
فایل برای
هر خروجی
میشود. به
گزینه
"-discard"
برای
غیرفعالسازی
جداگانه
استریمها
مراجعه
نمایید.
به عنوان یک گزینه خروجی، ضبط ویدیو را غیرفعال میسازد، یعنی از انتخاب خودکار یا نگاشت هر استریم ویدیو جلوگیری میکند. برای کنترل کامل دستی به گزینه "-map" مراجعه نمایید.
- -vcodec codec (output)
- تنظیم کدک ویدیو. این یک نام مستعار برای "-codec:v" است.
- -pass[:stream_specifier] n (output,per-stream)
- انتخاب
شماره
مرحله (1 یا 2).
برای انجام
انکود دو
مرحلهای
ویدیو (two-pass)
استفاده
میشود.
آمار ویدیو
در مرحله
نخست درون
یک فایل لاگ
ثبت
میگردد
(همچنین به
گزینه -passlogfile
مراجعه
کنید)، و در
مرحله دوم
آن فایل لاگ
برای تولید
ویدیو با
نرخ بیت
دقیقاً
درخواستی
استفاده
میشود. در
مرحله 1،
میتوانید
صدا را
غیرفعال
کرده و
خروجی را
روی null قرار
دهید،
مثالها
برای
ویندوز و
یونیکس:
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
- -passlogfile[:stream_specifier] prefix (output,per-stream)
- تنظیم پیشوند نام فایل لاگ دو مرحلهای به prefix، پیشوند نام فایل پیشفرض ``ffmpeg2pass'' است. نام کامل فایل به صورت PREFIX-N.log خواهد بود، که در آن N عددی مختص استریم خروجی است.
- -vf filtergraph (output)
- ایجاد
فیلترگراف
مشخصشده
توسط filtergraph و
استفاده از
آن برای
فیلتر کردن
استریم.
این یک نام مستعار برای "-filter:v" است، به گزینه -filter مراجعه کنید.
- -autorotate
- چرخاندن خودکار ویدیو بر اساس متادیتای فایل. به طور پیشفرض فعال است، از -noautorotate برای غیرفعالسازی آن استفاده کنید.
- -autoscale
- مقیاسبندی خودکار ویدیو بر اساس رزولوشن نخستین فریم. به طور پیشفرض فعال است، از -noautoscale برای غیرفعال کردن آن استفاده کنید. هنگامی که autoscale غیرفعال باشد، ممکن است تمام فریمهای خروجی فیلترگراف دارای رزولوشن یکسانی نباشند و برای برخی انکودرها/ماکسرها نامناسب باشند. بنابراین، غیرفعال کردن آن توصیه نمیشود مگر اینکه واقعاً بدانید چه کاری انجام میدهید. با مسئولیت خودتان autoscale را غیرفعال کنید.
گزینههای پیشرفته ویدیو (Advanced Video options)
- -pix_fmt[:stream_specifier] format (input/output,per-stream)
- تنظیم فرمت پیکسل. از "-pix_fmts" برای نمایش تمام فرمتهای پیکسل پشتیبانیشده استفاده کنید. اگر فرمت پیکسل انتخابشده قابل انتخاب نباشد، ffmpeg یک هشدار چاپ کرده و بهترین فرمت پیکسل پشتیبانیشده توسط انکودر را برمیگزیند. اگر pix_fmt با یک "+" پیشوندگذاری شود، چنانچه فرمت پیکسل درخواستی قابل انتخاب نباشد ffmpeg با یک خطا خارج خواهد شد، و تبدیلهای خودکار درون فیلترگرافها غیرفعال میگردند. اگر pix_fmt یک "+" تنها باشد، ffmpeg همان فرمت پیکسل ورودی (یا خروجی گراف) را انتخاب میکند و تبدیلهای خودکار غیرفعال میشوند.
- -sws_flags flags (input/output)
- تنظیم
فلگهای
پیشفرض
برای
کتابخانه
libswscale. این
فلگها
توسط
فیلترهای
"scale"
درجشده
خودکار و
فیلترهای
درون
فیلترگرافهای
ساده
استفاده
میشوند،
چنانچه در
تعریف
فیلترگراف
لغو نشده
باشند.
برای فهرستی از گزینههای مقیاسبندی به راهنمای ffmpeg-scaler مراجعه کنید.
- -rc_override[:stream_specifier] override (output,per-stream)
- لغو کنترل نرخ بیت (Rate control override) برای بازههای مشخص، با ساختار فهرستی از "int,int,int" جداشده با اسلش. دو مقدار اول شمارههای فریم آغازین و پایانی هستند، و آخرین مقدار در صورت مثبت بودن ضریب کوانتیزهسازی (quantizer) مورد استفاده و در صورت منفی بودن ضریب کیفیت است.
- -vstats
- ثبت آمار کدگذاری ویدیو در vstats_HHMMSS.log. برای شرح فرمت به بخش قالب فایل vstats مراجعه نمایید.
- -vstats_file file
- ثبت آمار کدگذاری ویدیو در file. برای شرح فرمت به بخش قالب فایل vstats مراجعه نمایید.
- -vstats_version file
- تعیین اینکه از کدام نسخه قالب vstats استفاده شود. پیشفرض 2 است. برای شرح فرمت به بخش قالب فایل vstats مراجعه نمایید.
- -vtag fourcc/tag (output)
- اجبار تگ ویدیو/fourcc. این یک نام مستعار برای "-tag:v" است.
- -force_key_frames[:stream_specifier] time[,time...] (output,per-stream)
- -force_key_frames[:stream_specifier] expr:expr (output,per-stream)
- -force_key_frames[:stream_specifier] source (output,per-stream)
- -force_key_frames[:stream_specifier] scd_metadata (output,per-stream)
- پارامتر force_key_frames میتواند آرگومانهایی به شکلهای زیر دریافت کند:
- time[,time...]
- اگر
آرگومان از
برچسبهای
زمانی
تشکیل شده
باشد، ffmpeg
زمانهای
مشخصشده
را بر اساس
پایه زمانی
انکودر به
نزدیکترین
برچسب
زمانی
خروجی گرد
میکند و در
نخستین
فریمی که
برچسب
زمانی آن
برابر یا
بزرگتر از
برچسب
زمانی
محاسبهشده
باشد، یک
فریم کلیدی
(keyframe) را اجبار
مینماید.
توجه داشته
باشید که
اگر پایه
زمانی
انکودر بیش
از حد درشت
باشد، ممکن
است
فریمهای
کلیدی روی
فریمهایی
با
برچسبهای
زمانی کمتر
از زمان
مشخصشده
اجبار شوند.
پایه زمانی
پیشفرض
انکودر
معکوس نرخ
فریم خروجی
است اما
میتوان آن
را از طریق
"-enc_time_base"
تغییر داد.
اگر یکی از زمانها ""chapters"[delta]" باشد، به زمان آغاز تمامی فصلهای موجود در فایل گسترش مییابد که به میزان delta (بر حسب ثانیه) شیفت یافته است. این گزینه میتواند برای اطمینان از اینکه یک نقطه پرش زمانی در نشانگر فصل یا هر مکان مشخص دیگری در فایل خروجی وجود دارد مفید باشد.
برای مثال، جهت درج یک فریم کلیدی در دقیقه 5، به علاوه فریمهای کلیدی 0.1 ثانیه پیش از آغاز هر فصل:
-force_key_frames 0:05:00,chapters-0.1
- expr:expr
- اگر
آرگومان
دارای
پیشوند
"expr:"
باشد، رشته
expr همانند
یک عبارت
ریاضی
تفسیر شده و
برای هر
فریم
ارزیابی
میگردد. در
صورتی که
نتیجه
ارزیابی
غیرصفر
باشد، یک
فریم کلیدی
اجبار
میشود.
عبارت موجود در expr میتواند شامل ثابتهای زیر باشد:
- n
- شماره فریم جاری در حال پردازش، با شروع از 0
- n_forced
- تعداد فریمهای کلیدی اجبارشده
- prev_forced_n
- شماره فریم کلیدی اجبارشده قبلی؛ زمانی که هنوز هیچ فریم کلیدی اجبار نشده "NAN" است
- prev_forced_t
- زمان فریم کلیدی اجبارشده قبلی؛ زمانی که هنوز فریم کلیدی اجبار نشده "NAN" است
- t
- زمان فریم جاری در حال پردازش
برای مثال جهت اجبار یک فریم کلیدی در هر 5 ثانیه، میتوانید مشخص کنید:
-force_key_frames expr:gte(t,n_forced*5)
جهت اجبار یک فریم کلیدی 5 ثانیه پس از زمان آخرین فریم اجبارشده، با شروع از ثانیه 13:
-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
- source
- اگر آرگومان "source" باشد، ffmpeg در صورتی که فریم جاری در حال انکود در منبع خود به عنوان فریم کلیدی علامتگذاری شده باشد، یک فریم کلیدی را اجبار خواهد کرد. در مواردی که این فریم منبع خاص باید دور ریخته شود، فریم موجود بعدی را به جای آن مجبور میکند تا به فریم کلیدی تبدیل شود.
- scd_metadata
- اگر آرگومان "scd_metadata" باشد، ffmpeg در صورتی که فریم جاری حاوی یک ورودی متادیتا با کلید "lavfi.scd.time" باشد فریم کلیدی را اجبار میکند. این متادیتا میتواند توسط فیلترهایی مانند "scdet" و "scdet_vulkan" اضافه شود. از درج فیلترهایی که فریمها را تکثیر میکنند پس از "scdet" خودداری نمایید، زیرا این امر میتواند سبب ایجاد متادیتای تکراری برای چندین فریم و درج مکرر فریمهای کلیدی شود.
توجه داشته باشید که اجبار تعداد بسیار زیادی فریم کلیدی برای الگوریتمهای lookahead برخی انکودرها بسیار مضر است: استفاده از گزینههای fixed-GOP یا مشابه آن کارآمدتر خواهد بود.
- -apply_cropping[:stream_specifier] source (input,per-stream)
- برش خودکار (crop) ویدیو پس از دیکود بر اساس متادیتای فایل. مقدار پیشفرض all است.
- none (0)
- عدم اعمال هرگونه متادیتای برش.
- all (1)
- اعمال برش در هر دو سطح کدک و کانتینر. این حالت پیشفرض است.
- codec (2)
- اعمال برش در سطح کدک.
- container (3)
- اعمال برش در سطح کانتینر.
- -copyinkf[:stream_specifier] (output,per-stream)
- هنگام انجام کپی استریم، فریمهای غیرکلیدی موجود در ابتدا را نیز کپی میکند.
- -init_hw_device type[=name][:device[,key=value...]]
- راهاندازی
یک دستگاه
سختافزاری
جدید از نوع
type با نام name،
با استفاده
از
پارامترهای
دستگاه
دادهشده.
اگر نامی
مشخص نشود
نام
پیشفرضی
به صورت
"type%d"
دریافت
خواهد کرد.
معنای device و آرگومانهای پس از آن وابسته به نوع دستگاه است:
- cuda
- پارامتر device
شماره
دستگاه CUDA
است.
گزینههای زیر شناخته شده هستند:
- primary_ctx
- اگر روی 1 تنظیم شود، به جای ایجاد کانتکست جدید از primary device context استفاده میکند.
مثالها:
- -init_hw_device cuda:1
- انتخاب دومین دستگاه روی سیستم.
- -init_hw_device cuda:0,primary_ctx=1
- انتخاب نخستین دستگاه و استفاده از primary device context.
- dxva2
- پارامتر device شماره آداپتور نمایشگر Direct3D 9 است.
- d3d11va
- پارامتر device
شماره
آداپتور
نمایشگر Direct3D 11
است. در
صورت عدم
تعیین،
تلاش
میکند از
آداپتور
نمایشگر Direct3D 11
پیشفرض یا
نخستین
آداپتور
نمایشگر Direct3D 11
که VendorId
سختافزاری
آن با vendor_id
مشخص شده
استفاده
کند.
مثالها:
- -init_hw_device d3d11va
- ایجاد یک دستگاه d3d11va روی آداپتور نمایشگر پیشفرض Direct3D 11.
- -init_hw_device d3d11va:1
- ایجاد یک دستگاه d3d11va روی آداپتور نمایشگر Direct3D 11 مشخصشده با اندیس 1.
- -init_hw_device d3d11va:,vendor_id=0x8086
- ایجاد یک دستگاه d3d11va روی نخستین آداپتور نمایشگر Direct3D 11 که VendorId سختافزاری آن 0x8086 است.
- vaapi
- پارامتر device
یا یک نام
نمایشگر X11،
یک DRM render node یا
اندیس
آداپتور DirectX
است. در
صورت عدم
تعیین،
تلاش
میکند
نمایشگر
پیشفرض X11
($DISPLAY) و
سپس نخستین
DRM render node (/dev/dri/renderD128)، یا
آداپتور
پیشفرض DirectX
در ویندوز
را باز کند.
گزینههای زیر شناخته شده هستند:
- kernel_driver
- هنگامی که device مشخص نشده باشد، از این گزینه برای تعیین نام درایور کربل مرتبط با دستگاه مورد نظر استفاده کنید. این گزینه تنها زمانی در دسترس است که روش شتابدهی سختافزاری drm و vaapi فعال باشند.
- vendor_id
- هنگامی که device و kernel_driver مشخص نشده باشند، از این گزینه برای تعیین vendor id مرتبط با دستگاه مورد نظر استفاده کنید. این گزینه تنها زمانی در دسترس است که روش شتابدهی سختافزاری drm و vaapi فعال باشند و kernel_driver مشخص نشده باشد.
مثالها:
- -init_hw_device vaapi
- ایجاد یک دستگاه vaapi روی دستگاه پیشفرض.
- -init_hw_device vaapi:/dev/dri/renderD129
- ایجاد یک دستگاه vaapi روی DRM render node /dev/dri/renderD129.
- -init_hw_device vaapi:1
- ایجاد یک دستگاه vaapi روی آداپتور شماره 1 در DirectX.
- -init_hw_device vaapi:,kernel_driver=i915
- ایجاد یک دستگاه vaapi روی دستگاه مرتبط با درایور کرنل i915.
- -init_hw_device vaapi:,vendor_id=0x8086
- ایجاد یک دستگاه vaapi روی دستگاه مرتبط با vendor id 0x8086.
- vdpau
- پارامتر device یک نام نمایشگر X11 است. در صورت عدم تعیین، تلاش میکند نمایشگر پیشفرض X11 ($DISPLAY) را باز کند.
- qsv
- پارامتر device مقداری را در MFX_IMPL_* انتخاب میکند. مقادیر مجاز عبارتند از:
در صورت عدم تعیین، auto_any استفاده میشود. (توجه داشته باشید که دستیابی به نتیجه مطلوب برای QSV ممکن است با ایجاد زیردستگاه مناسب پلتفرم (dxva2 یا d3d11va یا vaapi) و سپس مشتق کردن یک دستگاه QSV از آن آسانتر باشد.)
گزینههای زیر شناخته شده هستند:
- child_device
- تعیین یک DRM render node در لینوکس یا آداپتور DirectX در ویندوز.
- child_device_type
- انتخاب نوع زیردستگاه مناسب پلتفرم. در ویندوز هنگامی که "--enable-libvpl" در زمان پیکربندی مشخص شده باشد d3d11va به عنوان نوع پیشفرض زیردستگاه استفاده میشود، و هنگامی که "--enable-libmfx" مشخص شده باشد dxva2 به کار میرود. در لینوکس کاربر تنها میتواند از vaapi به عنوان نوع زیردستگاه استفاده کند.
مثالها:
- -init_hw_device qsv:hw,child_device=/dev/dri/renderD129
- ایجاد یک دستگاه QSV با MFX_IMPL_HARDWARE روی DRM render node /dev/dri/renderD129.
- -init_hw_device qsv:hw,child_device=1
- ایجاد یک دستگاه QSV با MFX_IMPL_HARDWARE روی آداپتور شماره 1 در DirectX.
- -init_hw_device qsv:hw,child_device_type=d3d11va
- انتخاب زیردستگاه GPU با نوع d3d11va و ایجاد دستگاه QSV با MFX_IMPL_HARDWARE.
- -init_hw_device qsv:hw,child_device_type=dxva2
- انتخاب زیردستگاه GPU با نوع dxva2 و ایجاد دستگاه QSV با MFX_IMPL_HARDWARE.
- -init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va
- ایجاد یک دستگاه QSV با MFX_IMPL_HARDWARE روی آداپتور 1 در DirectX با نوع زیردستگاه d3d11va.
- -init_hw_device vaapi=va:/dev/dri/renderD129 -init_hw_device qsv=hw1@va
- ایجاد یک دستگاه VAAPI با نام va روی /dev/dri/renderD129، سپس مشتق کردن یک دستگاه QSV به نام hw1 از دستگاه va.
- opencl
- پارامتر device
پلتفرم و
دستگاه را
به صورت
platform_index.device_index
انتخاب
میکند.
مجموعه دستگاهها همچنین میتوانند با استفاده از جفتهای کلید-مقدار فیلتر شوند تا تنها دستگاههای منطبق با رشتههای پلتفرم یا دستگاه خاص یافت گردند.
رشتههای قابل استفاده به عنوان فیلتر عبارتند از:
اندیسها و فیلترها باید با یکدیگر به طور یکتا یک دستگاه را انتخاب نمایند.
مثالها:
- -init_hw_device opencl:0.1
- انتخاب دومین دستگاه در اولین پلتفرم.
- -init_hw_device opencl:,device_name=Foo9000
- انتخاب دستگاهی با نام حاوی رشته Foo9000.
- -init_hw_device opencl:1,device_type=gpu,device_extensions=cl_khr_fp16
- انتخاب دستگاه GPU در دومین پلتفرم که از اکستنشن cl_khr_fp16 پشتیبانی میکند.
- vulkan
- اگر device یک
عدد صحیح
باشد،
دستگاه را
بر اساس
اندیس آن در
فهرستی
وابسته به
سیستم از
دستگاهها
انتخاب
میکند. اگر
device هر رشته
دیگری
باشد،
نخستین
دستگاهی را
برمیگزیند
که نام آن
حاوی آن
رشته به
عنوان
زیررشته
باشد.
گزینههای زیر شناخته شده هستند:
- debug
- اگر روی 1 تنظیم شود، validation layer را در صورت نصب فعال میسازد.
- linear_images
- اگر روی 1 تنظیم شود، تصاویر تخصیصیافته توسط hwcontext به صورت خطی و قابل نگاشت محلی خواهند بود.
- instance_extensions
- فهرستی جداشده با مثبت از اکستنشنهای instance اضافی جهت فعالسازی.
- device_extensions
- فهرستی جداشده با مثبت از اکستنشنهای دستگاه اضافی جهت فعالسازی.
مثالها:
- -init_hw_device vulkan:1
- انتخاب دومین دستگاه روی سیستم.
- -init_hw_device vulkan:RADV
- انتخاب نخستین دستگاه با نام حاوی رشته RADV.
- -init_hw_device vulkan:0,instance_extensions=VK_KHR_wayland_surface+VK_KHR_xcb_surface
- انتخاب نخستین دستگاه و فعالسازی اکستنشنهای نمونه Wayland و XCB.
- -init_hw_device type[=name]@source
- راهاندازی یک دستگاه سختافزاری جدید از نوع type با نام name، با اشتقاق آن از دستگاه موجود با نام source.
- -init_hw_device list
- فهرست کردن تمامی انواع دستگاههای سختافزاری پشتیبانیشده در این ساخت ffmpeg.
- -filter_hw_device name
- ارسال
دستگاه
سختافزاری
با نام name به
تمام
فیلترها در
هر
فیلترگراف.
این
میتواند
برای تنظیم
دستگاه جهت
آپلود با
فیلتر
"hwupload"، یا
دستگاه جهت
نگاشت با
فیلتر
"hwmap"
استفاده
شود. سایر
فیلترها
نیز ممکن
است در صورت
نیاز به یک
دستگاه
سختافزاری
از این
پارامتر
بهره گیرند.
توجه داشته
باشید که
این گزینه
معمولاً
تنها زمانی
مورد نیاز
است که
ورودی از
قبل در
فریمهای
سختافزاری
نباشد - در
حالتی که
باشد،
فیلترها
دستگاه
مورد نیاز
خود را از
کانتکست
فریمهایی
که به عنوان
ورودی
دریافت
میکنند
استخراج
خواهند کرد.
این یک تنظیم عمومی است، بنابراین تمامی فیلترها همان دستگاه یکسان را دریافت خواهند کرد.
- -hwaccel[:stream_specifier] hwaccel (input,per-stream)
- استفاده از شتاب سختافزاری برای دیکود کردن استریم(های) منطبق. مقادیر مجاز hwaccel عبارتند از:
- none
- عدم استفاده از هیچ شتاب سختافزاری (پیشفرض).
- auto
- انتخاب خودکار روش شتابدهی سختافزاری.
- vdpau
- استفاده از شتاب سختافزاری VDPAU (رابط برنامهنویسی دیکود و نمایش ویدیو برای یونیکس).
- dxva2
- استفاده از شتاب سختافزاری DXVA2 (DirectX Video Acceleration).
- d3d11va
- استفاده از شتاب سختافزاری D3D11VA (DirectX Video Acceleration).
- vaapi
- استفاده از شتاب سختافزاری VAAPI (Video Acceleration API).
- qsv
- استفاده از
شتاب
ویدیویی Intel QuickSync
برای
ترنسکدینگ
ویدیو.
بر خلاف اکثر مقادیر دیگر، این گزینه دیکودینگ شتابیافته را فعال نمیکند (که هر زمان دیکودر qsv انتخاب شود به طور خودکار به کار میرود)، بلکه ترنسکدینگ شتابیافته را بدون کپی کردن فریمها در حافظه سیستم فعال میسازد.
برای کارکرد آن، هم دیکودر و هم انکودر باید از شتاب QSV پشتیبانی نمایند و نباید از هیچ فیلتری استفاده شود.
- videotoolbox
- استفاده از شتاب سختافزاری Video Toolbox.
اگر hwaccel انتخابشده در دسترس نباشد یا توسط دیکودر انتخابشده پشتیبانی نگردد، این گزینه اثری ندارد.
توجه داشته باشید که بیشتر روشهای شتابدهی برای پخش (playback) در نظر گرفته شدهاند و بر روی پردازندههای امروزی سریعتر از دیکودینگ نرمافزاری نخواهند بود. علاوه بر این، ffmpeg معمولاً نیازمند کپی کردن فریمهای دیکودشده از حافظه GPU به حافظه سیستم خواهد بود، که به افت بیشتر کارایی میانجامد. بنابراین این گزینه عمدتاً برای اهداف آزمایشی مفید است.
- -hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)
- انتخاب یک
دستگاه
برای
استفاده در
شتاب
سختافزاری.
این گزینه تنها زمانی معنا دارد که گزینه -hwaccel نیز مشخص شده باشد. این گزینه میتواند یا به یک دستگاه موجود ایجادشده با -init_hw_device از طریق نام ارجاع دهد، یا میتواند یک دستگاه جدید ایجاد کند به گونهای که گویی -init_hw_device type:hwaccel_device بلافاصله پیش از آن فراخوانی شده است.
- -hwaccels
- فهرست کردن تمامی مؤلفههای شتاب سختافزاری فعالشده در این ساخت ffmpeg. در دسترس بودن واقعی در زمان اجرا بستگی به سختافزار و نصب درایور مناسب آن دارد.
- -fix_sub_duration_heartbeat[:stream_specifier]
- تنظیم یک
استریم
ویدیویی
خروجی خاص
به عنوان
استریم
ضربان قلب
(heartbeat) که بر
اساس آن،
زیرنویس در
حال پردازش
جاری پس از
دریافت یک
بسته
دسترسی
تصادفی،
تقسیم شده و
ارسال گردد.
این گزینه تأخیر (latency) زیرنویسهایی را که هنوز بسته پایانی یا زیرنویس بعدی آنها دریافت نشده است کاهش میدهد. به عنوان یک نقص، این کار به احتمال زیاد منجر به تکثیر رویدادهای زیرنویس جهت پوشش کل مدتزمان خواهد شد، بنابراین در مواردی که تأخیر ارسال رویداد زیرنویس به خروجی اهمیتی ندارد، این گزینه نباید مورد استفاده قرار گیرد.
برای اینکه این گزینه اثری داشته باشد، لازم است -fix_sub_duration برای استریم زیرنویس ورودی مربوطه تنظیم شده باشد، و همچنین استریم زیرنویس ورودی باید مستقیماً به همان خروجی که استریم heartbeat در آن قرار دارد نگاشت شده باشد.
گزینههای صدا (Audio Options)
- -aframes number (خروجی)
- تنظیم تعداد فریمهای صوتی خروجی. این یک نام مستعار منسوخشده برای "-frames:a" است که باید به جای آن استفاده کنید.
- -ar[:stream_specifier] freq (ورودی/خروجی،بهازای هر استریم)
- تنظیم فرکانس نمونهبرداری صوتی. برای استریمهای خروجی، بهطور پیشفرض روی فرکانس استریم ورودی مربوطه تنظیم میشود. برای استریمهای ورودی، این گزینه فقط برای دستگاههای ضبط صدا و دیماکسرهای خام معنی دارد و به گزینههای دیماکسر مربوطه نگاشت میشود.
- -aq q (خروجی)
- تنظیم کیفیت صدا (وابسته به کدک، VBR). این یک نام مستعار برای -q:a است.
- -ac[:stream_specifier] channels (ورودی/خروجی،بهازای هر استریم)
- تنظیم تعداد کانالهای صوتی. برای استریمهای خروجی، بهطور پیشفرض روی تعداد کانالهای صوتی ورودی تنظیم میشود. برای استریمهای ورودی، این گزینه فقط برای دستگاههای ضبط صدا و دیماکسرهای خام معنی دارد و به گزینههای دیماکسر مربوطه نگاشت میشود.
- -an (ورودی/خروجی)
- به عنوان یک
گزینه
ورودی، از
فیلتر شدن
یا انتخاب
خودکار یا
نگاشت همه
استریمهای
صوتی یک
پرونده
برای هر
خروجی
جلوگیری
میکند.
برای
غیرفعال
کردن
استریمها
به صورت
جداگانه،
گزینهٔ
"-discard" را
ببینید.
به عنوان یک گزینه خروجی، ضبط صدا یعنی انتخاب یا نگاشت خودکار هر استریم صوتی را غیرفعال میکند. برای کنترل کامل دستی، گزینهٔ "-map" را ببینید.
- -acodec codec (ورودی/خروجی)
- تنظیم کدک صوتی. این یک نام مستعار برای "-codec:a" است.
- -sample_fmt[:stream_specifier] sample_fmt (خروجی،بهازای هر استریم)
- تنظیم قالب نمونه صوتی. برای دریافت فهرستی از قالبهای نمونه پشتیبانیشده، از "-sample_fmts" استفاده کنید.
- -af filtergraph (خروجی)
- ایجاد
فیلترگراف
مشخصشده
با filtergraph و
استفاده از
آن برای
فیلتر کردن
استریم.
این یک نام مستعار برای "-filter:a" است، گزینهٔ -filter را ببینید.
گزینههای پیشرفتهٔ صدا (Advanced Audio options)
- -atag fourcc/tag (خروجی)
- اجبار تگ صوتی/fourcc. این یک نام مستعار برای "-tag:a" است.
- -ch_layout[:stream_specifier] layout (ورودی/خروجی،بهازای هر استریم)
- نام مستعار برای "-channel_layout".
- -channel_layout[:stream_specifier] layout (ورودی/خروجی،بهازای هر استریم)
- تنظیم چینش کانالهای صوتی. برای استریمهای خروجی، بهطور پیشفرض روی چینش کانال ورودی تنظیم میشود. برای استریمهای ورودی، چینش کانال ورودی را بازنویسی میکند. همه رمزگشاها از چینش کانال بازنویسیشده پیروی نمیکنند. این گزینه همچنین چینش کانال را برای دستگاههای ضبط صدا و دیماکسرهای خام تنظیم میکند و به گزینهٔ دیماکسر مربوطه نگاشت میشود.
- -guess_layout_max channels (ورودی،بهازای هر استریم)
- اگر چینش کانال ورودی نامشخص باشد، فقط در صورتی برای حدس زدن تلاش میشود که حداکثر با تعداد کانالهای مشخصشده مطابقت داشته باشد. برای مثال، ۲ به ffmpeg میگوید که ۱ کانال را مونو و ۲ کانال را استریو تشخیص دهد، اما ۶ کانال را به عنوان ۵.۱ در نظر نگیرد. مقدار پیشفرض تلاش همیشگی برای حدس زدن است. برای غیرفعال کردن کامل حدس زدن از 0 استفاده کنید. استفاده از گزینهٔ "-channel_layout" برای تعیین صریح چینش ورودی نیز حدس زدن را غیرفعال میکند.
گزینههای زیرنویس (Subtitle options)
- -scodec codec (ورودی/خروجی)
- تنظیم کدک زیرنویس. این یک نام مستعار برای "-codec:s" است.
- -sn (ورودی/خروجی)
- به عنوان یک
گزینه
ورودی، از
فیلتر شدن
یا انتخاب
خودکار یا
نگاشت همه
استریمهای
زیرنویس یک
پرونده
برای هر
خروجی
جلوگیری
میکند.
برای
غیرفعال
کردن
استریمها
به صورت
جداگانه،
گزینهٔ
"-discard" را
ببینید.
به عنوان یک گزینه خروجی، ضبط زیرنویس یعنی انتخاب یا نگاشت خودکار هر استریم زیرنویس را غیرفعال میکند. برای کنترل کامل دستی، گزینهٔ "-map" را ببینید.
گزینههای پیشرفتهٔ زیرنویس (Advanced Subtitle options)
- -fix_sub_duration
- اصلاح
مدتزمان
نمایش
زیرنویسها.
برای هر
زیرنویس،
منتظر بسته
بعدی در
همان
استریم
میماند و
مدتزمان
اولی را
برای
جلوگیری از
همپوشانی
تنظیم
میکند. این
کار برای
برخی
کدکهای
زیرنویس،
به ویژه
زیرنویسهای
DVB ضروری
است، زیرا
مدتزمان
در بسته
اصلی صرفاً
یک تخمین
تقریبی است
و پایان آن
در واقع با
یک فریم
زیرنویس
خالی مشخص
میشود. عدم
استفاده از
این گزینه
در صورت
لزوم
میتواند
منجر به
مدتزمانهای
بیش از حد
طولانی یا
خرابی در
ماکس کردن
به دلیل
برچسبهای
زمانی
غیریکنواخت
شود.
توجه داشته باشید که این گزینه خروجی تمام دادهها را تا زمان رمزگشایی بسته زیرنویس بعدی به تأخیر میاندازد: این امر ممکن است مصرف حافظه و تاخیر را بسیار افزایش دهد.
- -canvas_size size
- تنظیم اندازه بوم (canvas) مورد استفاده برای رندر کردن زیرنویسها.
گزینههای پیشرفته (Advanced options)
- -map [-]input_file_id[:stream_specifier][:view_specifier][:?] | [linklabel] (خروجی)
- ایجاد یک یا
چند استریم
در پرونده
خروجی. این
گزینه دو
شیوه برای
تعیین منبع
(یا منابع)
داده دارد:
شیوه اول یک
یا چند
استریم را
از یک
پرونده
ورودی
(مشخصشده
با "-i")
انتخاب
میکند، و
شیوه دوم
خروجی را از
یک
فیلترگراف
پیچیده
(مشخصشده
با "-filter_complex")
دریافت
میکند.
در شیوه اول، برای هر استریم از پرونده ورودی با شناسه input_file_id یک استریم خروجی ایجاد میشود. اگر stream_specifier داده شود، فقط آن دسته از استریمهایی که با مشخصکننده مطابقت دارند استفاده میشوند (برای نحو stream_specifier بخش مشخصکنندههای استریم (Stream specifiers) را ببینید).
یک نویسهٔ "-" قبل از شناسه استریم یک نگاشت "منفی" ایجاد میکند. این کار استریمهای منطبق را از نگاشتهای ایجادشده قبلی غیرفعال و حذف مینماید.
یک view_specifier اختیاری میتواند پس از مشخصکننده استریم قرار گیرد که برای ویدیوی چندنمایی (multiview)، نمای مورد استفاده را مشخص میکند. مشخصکننده نما میتواند یکی از قالبهای زیر را داشته باشد:
- view:view_id
- انتخاب یک نما بر اساس شناسه آن؛ view_id میتواند برابر با 'all' باشد تا از همه نماها به صورت درهمتنیده در یک استریم استفاده شود؛
- vidx:view_idx
- انتخاب یک نما بر اساس نمایه (index) آن؛ یعنی 0 نمای پایه است، 1 اولین نمای غیرپایه است، و غیره.
- vpos:position
- انتخاب یک نما بر اساس موقعیت نمایش آن؛ position میتواند "left" یا "right" باشد
پیشفرض برای تبدیل و ترنسکود فقط استفاده از نمای پایه است، یعنی معادل "vidx:0". برای رونوشت استریم (streamcopy)، مشخصکنندههای نما پشتیبانی نمیشوند و تمام نماها همواره رونوشت میشوند.
قراردادن یک "?" پایانی بعد از نمایه استریم، این نگاشت را اختیاری میکند: اگر نگاشت با هیچ استریمی مطابقت نداشته باشد، به جای ایجاد خطا نادیده گرفته میشود. توجه داشته باشید که اگر از نمایه پرونده ورودی نامعتبر استفاده شود (مانند ارجاع نگاشت به یک ورودی ناموجود)، همچنان خطا رخ خواهد داد.
شکل جایگزین [linklabel] خروجیهای حاصل از فیلترگرافهای پیچیده (گزینهٔ -filter_complex را ببینید) را به پرونده خروجی نگاشت میکند. linklabel باید با یک برچسب پیوند خروجی تعریفشده در گراف مطابقت داشته باشد.
این گزینه میتواند چندین بار مشخص شود که هر بار استریمهای بیشتری به پرونده خروجی اضافه میکند. هر استریم ورودی معین میتواند به هر تعداد بار به عنوان منبع برای استریمهای خروجی مختلف نگاشت شود، مثلاً برای استفاده از گزینههای انکود و/یا فیلترهای متفاوت. استریمها در خروجی به همان ترتیبی ایجاد میشوند که گزینههای "-map" در خط فرمان وارد شدهاند.
استفاده از این گزینه نگاشتهای پیشفرض را برای این پرونده خروجی غیرفعال میکند.
مثالها:
- map everything
- برای نگاشت
تمام
استریمها
از اولین
پرونده
ورودی به
خروجی:
ffmpeg -i INPUT -map 0 output
- select specific stream
- اگر دو
استریم
صوتی در
پرونده
ورودی اول
داشته
باشید، این
استریمها
با 0:0 و 0:1
مشخص
میشوند.
میتوانید
از "-map"
برای
انتخاب
استریمهای
مورد نظر
برای قرار
گرفتن در
پرونده
خروجی
استفاده
کنید. برای
مثال:
ffmpeg -i INPUT -map 0:1 out.wav
استریم ورودی دوم در INPUT را به (تک) استریم خروجی در out.wav نگاشت میکند.
- create multiple streams
- برای
انتخاب
استریم با
نمایه 2 از
پرونده
ورودی a.mov
(مشخصشده
با شناسه
0:2)، و
استریم با
نمایه 6 از
ورودی b.mov
(مشخصشده
با شناسه
1:6)، و
رونوشت
آنها به
پرونده
خروجی out.mov:
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
- create multiple streams 2
- برای
انتخاب
تمام ویدیو
و سومین
استریم
صوتی از یک
پرونده
ورودی:
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
- negative map
- برای نگاشت
تمام
استریمها
به جز
استریم
صوتی دوم،
از
نگاشتهای
منفی
استفاده
کنید:
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
- optional map
- برای نگاشت
استریمهای
ویدیویی و
صوتی از
ورودی اول،
و استفاده
از "?"
پایانی جهت
نادیده
گرفتن
نگاشت صدا
در صورتی که
هیچ استریم
صوتی در
ورودی اول
وجود
نداشته
باشد:
ffmpeg -i INPUT -map 0:v -map 0:a? OUTPUT
- map by language
- برای
انتخاب
استریم
صوتی
انگلیسی:
ffmpeg -i INPUT -map 0:m:language:eng OUTPUT
- -ignore_unknown
- نادیده گرفتن استریمهای ورودی با نوع ناشناخته به جای خطا دادن در هنگام تلاش برای رونوشت چنین استریمهایی.
- -copy_unknown
- اجازه به رونوشت استریمهای ورودی با نوع ناشناخته به جای خطا دادن در هنگام تلاش برای رونوشت چنین استریمهایی.
- -map_metadata[:metadata_spec_out] infile[:metadata_spec_in] (خروجی،بهازای هر متاداده)
- تنظیم اطلاعات متادادهٔ پرونده خروجی بعدی از infile. توجه داشته باشید که اینها نمایههای پرونده (بر پایه صفر) هستند، نه نام پروندهها. پارامترهای اختیاری metadata_spec_in/out مشخص میکنند کدام متاداده رونوشت شود. یک مشخصکننده متاداده میتواند قالبهای زیر را داشته باشد:
- g
- متادادهٔ سراسری (global)، یعنی متادادهای که برای کل پرونده اعمال میشود
- s[:stream_spec]
- متاداده بهازای هر استریم. stream_spec یک مشخصکننده استریم همانطور که در فصل مشخصکنندههای استریم توضیح داده شده است میباشد. در مشخصکننده متاداده ورودی، اولین استریم منطبق منبع رونوشت است. در مشخصکننده متاداده خروجی، به تمام استریمهای منطبق رونوشت میشود.
- c:chapter_index
- متاداده بهازای هر فصل (chapter). مقدار chapter_index نمایه فصل بر پایه صفر است.
- p:program_index
- متاداده بهازای هر برنامه (program). مقدار program_index نمایه برنامه بر پایه صفر است.
اگر مشخصکننده متاداده حذف شود، بهطور پیشفرض سراسری (global) در نظر گرفته میشود.
بهطور پیشفرض، متادادهٔ سراسری از اولین پرونده ورودی رونوشت میشود، متادادهٔ هر استریم و هر فصل همراه با استریمها/فصلها رونوشت میگردد. این نگاشتهای پیشفرض با ایجاد هر نگاشتی از نوع مربوطه غیرفعال میشوند. از یک نمایه پرونده منفی میتوان برای ایجاد یک نگاشت ساختگی استفاده کرد که فقط رونوشت خودکار را غیرفعال میکند.
برای مثال برای رونوشت متاداده از اولین استریم پرونده ورودی به متاداده سراسری پرونده خروجی:
ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
برای انجام برعکس، یعنی رونوشت متاداده سراسری به تمام استریمهای صوتی:
ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
توجه داشته باشید که نوشتن ساده 0 نیز در این مثال کار میکند، زیرا متاداده سراسری بهطور پیشفرض در نظر گرفته میشود.
- -map_chapters input_file_index (خروجی)
- رونوشت فصلها از پرونده ورودی با نمایه input_file_index به پرونده خروجی بعدی. اگر هیچ نگاشت فصلی مشخص نشود، فصلها از اولین پرونده ورودی دارای حداقل یک فصل رونوشت میشوند. از یک نمایه پرونده منفی برای غیرفعال کردن هرگونه رونوشت فصل استفاده کنید.
- -benchmark (عمومی)
- نمایش اطلاعات محکزنی (benchmarking) در پایان عملیات انکود. زمان واقعی، سیستم و کاربر مصرفشده و حداکثر مصرف حافظه را نمایش میدهد. حداکثر مصرف حافظه در تمام سیستمها پشتیبانی نمیشود و در صورت عدم پشتیبانی معمولاً 0 نمایش داده میشود.
- -benchmark_all (عمومی)
- نمایش اطلاعات محکزنی در حین عملیات انکود. زمان واقعی، سیستم و کاربر مصرفشده در مراحل مختلف (انکود/دیکود صوتی و تصویری) را نمایش میدهد.
- -timelimit duration (عمومی)
- خروج پس از اینکه ffmpeg به میزان duration ثانیه در زمان پردازنده (CPU user time) اجرا شد.
- -dump (عمومی)
- تخلیه (dump) هر بسته ورودی در خروجی استاندارد خطا (stderr).
- -hex (عمومی)
- هنگام تخلیه بستهها، بار داده (payload) آنها را نیز به صورت هگزادسیمال تخلیه میکند.
- -readrate speed (ورودی)
- محدود کردن
سرعت
خواندن
ورودی.
مقدار آن یک عدد اعشاری مثبت است که حداکثر مدتزمان رسانه (به ثانیه) را نشان میدهد که باید در یک ثانیه از زمان واقعی ساعت دیواری خوانده شود. مقدار پیشفرض صفر است و نشاندهنده عدم اعمال محدودیت بر سرعت خواندن است. مقدار 1 نشاندهنده سرعت زمانواقعی (real-time) است و معادل "-re" میباشد.
عمدتاً برای شبیهسازی یک دستگاه ضبط یا استریم زنده ورودی (مثلاً هنگام خواندن از یک پرونده) استفاده میشود. هنگامی که ورودی یک دستگاه ضبط واقعی یا استریم زنده است نباید با مقدار کم استفاده شود زیرا ممکن است باعث از دست رفتن بستهها گردد.
این گزینه زمانی که سرعت جریان بستههای خروجی اهمیت دارد (مانند پخش زنده)، مفید است.
- -re (ورودی)
- خواندن ورودی با نرخ فریم بومی آن. این معادل تنظیم "-readrate 1" است.
- -readrate_initial_burst seconds
- تنظیم زمان اولیه برای انفجار خواندن (burst)، به ثانیه، که پس از آن -re/-readrate اعمال خواهد شد.
- -readrate_catchup speed (ورودی)
- اگر ورودی یا خروجی مسدود شده و منجر به عقب افتادن سرعت خواندن واقعی از نرخ تعیینشده شود، این نرخ اعمال میشود تا ورودی به نرخ تعیینشده برسد. نباید از نرخ اصلی خواندن کمتر باشد.
- -fps_mode[:stream_specifier] parameter (خروجی،بهازای هر استریم)
- تنظیم روش همگامسازی ویدیو / حالت نرخ فریم.
- passthrough
- هر فریم همراه با برچسب زمانی خود از دیماکسر به ماکسر منتقل میشود.
- cfr
- فریمها برای دستیابی دقیق به نرخ فریم ثابتِ درخواستشده، تکرار یا دور ریخته میشوند.
- vfr
- فریمها همراه با برچسب زمانی خود عبور داده میشوند یا دور ریخته میشوند تا از یکسان شدن برچسب زمانی ۲ فریم جلوگیری شود.
- auto
- بسته به تواناییهای ماکسر، میان cfr و vfr انتخاب میکند. این روش پیشفرض است.
توجه داشته باشید که برچسبهای زمانی ممکن است پس از این مرحله، توسط ماکسر بیشتر تغییر داده شوند. برای مثال در حالتی که گزینه قالب avoid_negative_ts فعال باشد.
با استفاده از -map میتوانید انتخاب کنید که برچسبهای زمانی از کدام استریم گرفته شوند. میتوانید ویدیو یا صدا را بدون تغییر باقی بگذارید و استریم(های) باقیمانده را با استریم دستنخورده همگام نمایید.
- -frame_drop_threshold parameter
- آستانه دور انداختن فریم، که مشخص میکند فریمهای ویدیویی چه مقدار میتوانند عقب بیفتند پیش از اینکه دور ریخته شوند. بر حسب واحدهای نرخ فریم بیان میشود، بنابراین 1.0 معادل یک فریم است. مقدار پیشفرض -1.1 است. یک کاربرد احتمالی برای جلوگیری از دور انداختن فریم در هنگام وجود نویز در برچسبهای زمانی، یا افزایش دقت حذف فریم در صورت وجود برچسبهای زمانی دقیق است.
- -apad parameters (خروجی،بهازای هر استریم)
- پر کردن (Padding) استریم(های) صوتی خروجی. این همانند اعمال "-af apad" است. آرگومان یک رشته از پارامترهای فیلتر است که همانند فیلتر "apad" ترکیب شده است. برای اعمال این گزینه، باید "-shortest" برای این خروجی تنظیم شده باشد.
- -copyts
- عدم پردازش
برچسبهای
زمانی
ورودی و
نگهداشتن
مقادیر
آنها بدون
تلاش برای
پاکسازی یا
اصلاح
آنها.
بهویژه،
مقدار آفست
زمان شروع
اولیه حذف
نمیشود.
توجه داشته باشید که بسته به گزینهٔ fps_mode یا پردازشهای خاص ماکسر (مثلاً در صورتی که گزینهٔ قالب avoid_negative_ts فعال باشد)، برچسبهای زمانی خروجی ممکن است حتی با انتخاب این گزینه نیز با برچسبهای زمانی ورودی مغایرت داشته باشند.
- -start_at_zero
- هنگام
استفاده با
copyts،
برچسبهای
زمانی
ورودی را
طوری شیفت
میدهد که
از صفر شروع
شوند.
این بدان معناست که استفاده از مثلاً "-ss 50" باعث میشود برچسبهای زمانی خروجی از ۵۰ ثانیه شروع شوند، صرفنظر از اینکه پرونده ورودی از چه برچسب زمانی آغاز شده است.
- -copytb mode
- مشخص کردن چگونگی تنظیم مبنای زمانی (timebase) انکودر هنگام رونوشت استریم. mode یک مقدار عددی صحیح است و میتواند یکی از مقادیر زیر باشد:
- 1
- استفاده از
مبنای
زمانی
دیماکسر.
مبنای زمانی از دیماکسر ورودی مربوطه به انکودر خروجی رونوشت میشود. این کار گاهی برای جلوگیری از برچسبهای زمانی غیریکنواخت هنگام رونوشت استریمهای ویدیویی با نرخ فریم متغیر ضروری است.
- 0
- استفاده از
مبنای
زمانی
رمزگشا
(دیکودر).
مبنای زمانی از دیکودر ورودی مربوطه به انکودر خروجی رونوشت میشود.
- -1
- تلاش برای انتخاب خودکار به منظور تولید یک خروجی معقول و سالم.
مقدار پیشفرض -1 است.
- -enc_time_base[:stream_specifier] timebase (خروجی،بهازای هر استریم)
- تنظیم مبنای زمانی انکودر. timebase میتواند یکی از مقادیر زیر باشد:
- 0
- تخصیص یک
مقدار
پیشفرض با
توجه به نوع
رسانه.
برای ویدیو - از 1/framerate و برای صدا - از 1/samplerate استفاده میکند.
- demux
- استفاده از مبنای زمانی حاصل از دیماکسر.
- filter
- استفاده از مبنای زمانی حاصل از فیلترگراف.
- a positive number
- استفاده از
عدد
ارائهشده
به عنوان
مبنای
زمانی.
این فیلد میتواند به صورت نسبت دو عدد صحیح (مانند 1:24 یا 1:48000) یا به صورت یک عدد اعشاری (مانند 0.04166 یا 2.0833e-5) ارائه شود.
مقدار پیشفرض 0 است.
- -bitexact (ورودی/خروجی)
- فعال کردن حالت دقیق بیتی (bitexact) برای (دی)ماکسر و (دیکودر/انکودر).
- -shortest (خروجی)
- پایان دادن
به انکود
زمانی که
کوتاهترین
استریم
خروجی به
پایان
میرسد.
توجه داشته باشید که این گزینه ممکن است نیازمند بافر کردن فریمها باشد که باعث ایجاد تأخیر اضافی میشود. حداکثر میزان این تأخیر میتواند با گزینهٔ "-shortest_buf_duration" کنترل شود.
- -shortest_buf_duration duration (خروجی)
- گزینهٔ
"-shortest"
ممکن است
هنگام وجود
حداقل یک
استریم با
دادههای
پراکنده (sparse)
(یعنی دارای
فاصلههای
زمانی بزرگ
میان
فریمها --
که معمولاً
برای
زیرنویسها
اینگونه
است)، نیاز
به بافر
کردن حجم
زیادی از
دادهها
داشته باشد.
این گزینه حداکثر مدتزمان فریمهای بافرشده را بر حسب ثانیه کنترل میکند. مقادیر بزرگتر ممکن است به گزینهٔ "-shortest" اجازه دهد نتایج دقیقتری تولید کند، اما مصرف حافظه و تاخیر را افزایش میدهد.
مقدار پیشفرض ۱۰ ثانیه است.
- -dts_delta_threshold threshold
- آستانه
دلتای
ناپیوستگی
برچسب
زمانی،
بیانشده
به عنوان یک
عدد اعشاری
از
ثانیهها.
اصلاح ناپیوستگی برچسب زمانی که توسط این گزینه فعال میشود، تنها برای قالبهای ورودی اعمال میگردد که ناپیوستگی برچسب زمانی را میپذیرند (که برای آنها پرچم "AVFMT_TS_DISCONT" فعال است)، مانند MPEG-TS و HLS، و هنگام استفاده از گزینهٔ "-copyts" بهطور خودکار غیرفعال میشود (مگر اینکه سرریز یا دور زدن برچسب زمانی شناسایی شود).
اگر ناپیوستگی برچسب زمانی شناسایی شود که مقدار مطلق آن بزرگتر از threshold باشد، ffmpeg ناپیوستگی را با کاهش/افزایش DTS و PTS فعلی به میزان مقدار دلتای مربوطه برطرف میکند.
مقدار پیشفرض 10 است.
- -dts_error_threshold threshold
- آستانه
دلتای خطای
برچسب
زمانی،
بیانشده
به عنوان یک
عدد اعشاری
از
ثانیهها.
اصلاح برچسب زمانی که توسط این گزینه فعال میشود، تنها برای قالبهای ورودی اعمال میگردد که ناپیوستگی برچسب زمانی را نمیپذیرند (که برای آنها پرچم "AVFMT_TS_DISCONT" فعال نیست).
اگر ناپیوستگی برچسب زمانی شناسایی شود که مقدار مطلق آن بزرگتر از threshold باشد، ffmpeg مقدار برچسب زمانی PTS/DTS را دور میاندازد.
مقدار پیشفرض "3600*30" (۳۰ ساعت) است که به صورت دلخواه و نسبتاً محافظهکارانه انتخاب شده است.
- -muxdelay seconds (خروجی)
- تنظیم حداکثر تأخیر دیماکس-دیکود.
- -muxpreload seconds (خروجی)
- تنظیم تأخیر اولیه دیماکس-دیکود.
- -streamid output-stream-index:new-value (خروجی)
- تخصیص یک
مقدار
شناسهٔ
استریم (stream-id)
جدید به یک
استریم
خروجی. این
گزینه باید
قبل از نام
پرونده
خروجی که
برای آن
اعمال
میشود
مشخص گردد.
برای
شرایطی که
چندین
پرونده
خروجی وجود
دارد، یک streamid
میتواند
به یک مقدار
متفاوت
تخصیص داده
شود.
برای مثال، برای تنظیم PID استریم 0 روی 33 و PID استریم 1 روی 36 برای یک پرونده خروجی mpegts:
ffmpeg -i inurl -streamid 0:33 -streamid 1:36 out.ts
- -bsf[:stream_specifier] bitstream_filters (ورودی/خروجی،بهازای هر استریم)
- اعمال
فیلترهای
جریان بیتی
(Bitstream Filters) به
استریمهای
منطبق.
فیلترها به
محض دریافت
هر بسته از
دیماکسر
(هنگامی که
به عنوان
گزینه
ورودی
استفاده
شود) یا قبل
از ارسال آن
به ماکسر
(هنگامی که
به عنوان
گزینه
خروجی
استفاده
شود) اعمال
میشوند.
bitstream_filters یک فهرست با کاما جداشده از مشخصات فیلتر جریان بیتی است که هر کدام به صورت زیر است:
<filter>[=<optname0>=<optval0>:<optname1>=<optval1>:...]
هر یک از نویسههای ',=:' که قرار است بخشی از مقدار یک گزینه باشند باید با یک بکاسلش اسکیپ شوند.
برای دریافت فهرست فیلترهای جریان بیتی از گزینهٔ "-bsfs" استفاده کنید.
برای مثال:
ffmpeg -bsf:v h264_mp4toannexb -i h264.mp4 -c:v copy -an out.h264
فیلتر جریان بیتی "h264_mp4toannexb" (که استریم H.264 محصور در MP4 را به Annex B تبدیل میکند) را روی استریم ویدیویی ورودی اعمال میکند.
از سوی دیگر،
ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
فیلتر جریان بیتی "mov2textsub" (که متن را از زیرنویسهای MOV استخراج میکند) را روی استریم زیرنویس خروجی اعمال میکند. توجه داشته باشید که از آنجا که هر دو مثال از "-c copy" استفاده میکنند، اهمیت چندانی ندارد که فیلترها روی ورودی یا خروجی اعمال شوند - این موضوع در صورت ترنسکود کردن تغییر میکرد.
- -tag[:stream_specifier] codec_tag (ورودی/خروجی،بهازای هر استریم)
- اجبار تگ/fourcc برای استریمهای منطبق.
- -timecode hh:mm:ssSEPff
- مشخص کردن
کد زمانی (Timecode)
برای نوشتن.
SEP برای کد
زمانی بدون
افت فریم ':' و
برای حالت
دارای افت
فریم (drop) ';' (یا '.')
است.
ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
- -filter_complex filtergraph (عمومی)
- تعریف یک
فیلترگراف
پیچیده،
یعنی گراف
با تعداد
دلخواهی از
ورودیها
و/یا
خروجیها.
برای
گرافهای
ساده --
آنهایی که
یک ورودی و
یک خروجی از
همان نوع
دارند --
گزینههای
-filter را
ببینید. filtergraph
توضیحی از
فیلترگراف
است،
همانطور
که در بخش
"سینتکس
فیلترگراف"
در راهنمای
ffmpeg-filters توضیح
داده شده
است. این
گزینه
میتواند
چندین بار
مشخص شود -
هر بار
استفاده یک
فیلترگراف
پیچیده
جدید ایجاد
میکند.
ورودیهای یک فیلترگراف پیچیده میتوانند از انواع منابع مختلف بیایند که با قالب برچسب پیوند مربوطه متمایز میشوند:
- برای اتصال یک استریم ورودی، از "[file_index:stream_specifier]" استفاده کنید (یعنی همان سینتکس -map). اگر stream_specifier با چندین استریم مطابقت داشته باشد، از اولین استریم استفاده خواهد شد. برای ویدیوی چندنمایی، مشخصکننده استریم میتواند با مشخصکننده نما دنبال شود؛ برای سینتکس آن به مستندات گزینهٔ -map مراجعه کنید.
- برای اتصال یک دیکودر لوپبک (loopback decoder) از [dec:dec_idx] استفاده کنید، که در آن dec_idx نمایه دیکودر لوپبک برای اتصال به ورودی دادهشده است. برای ویدیوی چندنمایی، نمایه دیکودر میتواند با مشخصکننده نما دنبال شود؛ برای سینتکس آن مستندات گزینهٔ -map را ببینید.
- برای اتصال
یک خروجی از
یک
فیلترگراف
پیچیده
دیگر، از
برچسب
پیوند آن
استفاده
کنید. برای
نمونه مثال
زیر:
ffmpeg -i input.mkv \ -filter_complex '[0:v]scale=size=hd1080,split=outputs=2[for_enc][orig_scaled]' \ -c:v libx264 -map '[for_enc]' output.mkv \ -dec 0:0 \ -filter_complex '[dec:0][orig_scaled]hstack[stacked]' \ -map '[stacked]' -c:v ffv1 comparison.mkv
یک ویدیوی ورودی را میخواند و
- (خط ۲) از یک فیلترگراف پیچیده با یک ورودی و دو خروجی برای مقیاسبندی ویدیو به 1920x1080 و تکثیر نتیجه در هر دو خروجی استفاده میکند؛
- (خط ۳) یک خروجی مقیاسشده را با "libx264" انکود کرده و نتیجه را در output.mkv مینویسد؛
- (خط ۴) این استریم انکودشده را با یک دیکودر لوپبک رمزگشایی میکند؛
- (خط ۵) خروجی دیکودر لوپبک (یعنی ویدیوی انکودشده با "libx264") را در کنار ورودی اصلیِ مقیاسشده قرار میدهد؛
- (خط ۶) ویدیوی ترکیبی سپس به صورت بدوناتلاف (lossless) انکود شده و در comparison.mkv نوشته میشود.
توجه داشته باشید که دو فیلترگراف نمیتوانند در یکی ترکیب شوند، زیرا در آن صورت یک چرخه در خط لوله ترنسکود وجود خواهد داشت (خروجی فیلترگراف به انکود میرود، از آنجا به دیکود، سپس بازگشت به همان گراف)، و چنین چرخههایی مجاز نیستند.
یک ورودی بدون برچسب به اولین استریم ورودیِ استفادهنشده از نوع منطبق متصل خواهد شد.
به برچسبهای پیوند خروجی با -map ارجاع داده میشود. خروجیهای بدون برچسب به اولین پرونده خروجی اضافه میشوند.
توجه داشته باشید که با این گزینه میتوان فقط از منابع lavfi بدون پروندههای ورودی عادی استفاده کرد.
برای مثال، برای قرار دادن یک تصویر روی ویدیو (overlay):
ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map '[out]' out.mkv
در اینجا "[0:v]" به اولین استریم ویدیویی در پرونده ورودی اول اشاره دارد که به اولین ورودی (اصلی) فیلتر overlay متصل شده است. به همین ترتیب، اولین استریم ویدیویی در ورودی دوم به ورودی دوم فیلتر overlay متصل میشود.
با فرض اینکه فقط یک استریم ویدیویی در هر پرونده ورودی وجود دارد، میتوانیم برچسبهای ورودی را حذف کنیم، بنابراین دستور بالا معادل است با:
ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map '[out]' out.mkv
علاوه بر این میتوانیم برچسب خروجی را نیز حذف کنیم و تکخروجی فیلترگراف بهطور خودکار به پرونده خروجی اضافه خواهد شد، بنابراین میتوان به سادگی نوشت:
ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
به عنوان یک استثنای ویژه، میتوانید از یک استریم زیرنویس تصویربیت (bitmap) به عنوان ورودی استفاده کنید: این استریم به یک ویدیو با اندازه بزرگترین ویدیو در پرونده، یا 720x576 در صورت عدم وجود ویدیو، تبدیل میشود. توجه داشته باشید که این یک راهحل آزمایشی و موقت است و به محض پشتیبانی مناسب libavfilter از زیرنویسها حذف خواهد شد.
برای مثال، برای چسباندن دائمی زیرنویسها (hardcode) روی یک ضبط DVB-T ذخیرهشده در قالب MPEG-TS، با ۱ ثانیه تأخیر در زیرنویس:
ffmpeg -i input.ts -filter_complex \ '[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \ -sn -map '#0x2dc' output.mkv
(0x2d0 و 0x2dc و 0x2ef به ترتیب PIDهای MPEG-TS استریمهای ویدیو، صدا و زیرنویس هستند؛ استفاده از 0:0، 0:3 و 0:7 نیز کار میکرد)
برای تولید ۵ ثانیه ویدیوی قرمز خالص با استفاده از منبع "color" در lavfi:
ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
- -filter_complex_threads nb_threads (عمومی)
- تعداد رشتههای اجرایی (threads) مورد استفاده برای پردازش گراف filter_complex را مشخص میکند. مشابه filter_threads است اما فقط برای گرافهای "-filter_complex" استفاده میشود. مقدار پیشفرض تعداد CPUهای موجود است.
- -lavfi filtergraph (عمومی)
- تعریف یک فیلترگراف پیچیده، یعنی گراف با تعداد دلخواهی از ورودیها و/یا خروجیها. معادل با -filter_complex.
- -accurate_seek (ورودی)
- این گزینه پرش دقیق (accurate seeking) در پروندههای ورودی را با گزینهٔ -ss فعال یا غیرفعال میکند. بهطور پیشفرض فعال است، بنابراین پرش هنگام ترنسکود کردن دقیق است. برای غیرفعال کردن آن از -noaccurate_seek استفاده کنید که مثلاً هنگام رونوشت برخی استریمها و انکود مجدد سایرین میتواند مفید باشد.
- -seek_timestamp (ورودی)
- این گزینه پرش بر اساس برچسب زمانی را در پروندههای ورودی با گزینهٔ -ss فعال یا غیرفعال میکند. بهطور پیشفرض غیرفعال است. در صورت فعال بودن، آرگومان گزینهٔ -ss به عنوان یک برچسب زمانی واقعی در نظر گرفته میشود و با زمان شروع پرونده آفست نمیشود. این فقط برای پروندههایی که از برچسب زمانی 0 شروع نمیشوند، مانند transport streams، تفاوت ایجاد میکند.
- -thread_queue_size size (ورودی/خروجی)
- برای
ورودی، این
گزینه
حداکثر
تعداد
بستههای
صفبندیشده
هنگام
خواندن از
پرونده یا
دستگاه را
تنظیم
میکند. در
استریمهای
زنده با
تاخیر کم /
نرخ بالا،
بستهها در
صورتی که به
موقع
خوانده
نشوند ممکن
است دور
ریخته
شوند؛
تنظیم این
مقدار
میتواند ffmpeg
را مجبور
کند از یک
رشته ورودی
جداگانه
استفاده
کند و
بستهها را
به محض
رسیدن
بخواند.
بهطور
پیشفرض ffmpeg
تنها در
صورتی این
کار را
انجام
میدهد که
چندین
ورودی مشخص
شده باشد.
برای خروجی، این گزینه حداکثر تعداد بستههایی را مشخص میکند که ممکن است برای هر رشتهٔ ماکس کردن در صف قرار گیرند.
- -sdp_file file (عمومی)
- چاپ اطلاعات sdp برای یک استریم خروجی در file. این امکان تخلیه اطلاعات sdp را در حالتی که حداقل یکی از خروجیها استریم rtp نیست فراهم میکند (نیازمند آن است که حداقل یکی از قالبهای خروجی rtp باشد).
- -discard (ورودی)
- اجازه دور انداختن استریمها یا فریمهای خاصی از استریمها را میدهد. هر استریم ورودی میتواند با استفاده از مقدار "all" کاملاً دور انداخته شود، در حالی که دور انداختن انتخابی فریمها از یک استریم در دیماکسر رخ میدهد و توسط همه دیماکسرها پشتیبانی نمیشود.
- -abort_on flags (عمومی)
- توقف و لغو عملیات در شرایط مختلف. پرچمهای زیر در دسترس هستند:
- empty_output
- هیچ بستهای به ماکسر تحویل داده نشد، خروجی خالی است.
- empty_output_stream
- هیچ بستهای به ماکسر در برخی از استریمهای خروجی تحویل داده نشد.
- -max_error_rate (عمومی)
- کسری از خطاهای رمزگشایی فریم در تمام ورودیها را تنظیم میکند که با عبور از آن، ffmpeg کد خروج 69 را بازمیگرداند. عبور از این آستانه پردازش را متوقف نمیکند. محدوده یک عدد اعشاری بین 0 تا 1 است. پیشفرض 2/3 است.
- -xerror (عمومی)
- توقف و خروج به محض بروز خطا.
- -max_muxing_queue_size packets (خروجی،بهازای هر استریم)
- هنگام
ترنسکود
استریمهای
صوتی و/یا
تصویری، ffmpeg
نوشتن در
خروجی را تا
زمانی که
حداقل یک
بسته برای
هر یک از
این
استریمها
داشته باشد
شروع
نمیکند. در
حین انتظار
برای این
رخداد،
بستههای
استریمهای
دیگر بافر
میشوند.
این گزینه
اندازه این
بافر را بر
حسب بسته
برای
استریم
خروجی
منطبق
تنظیم
میکند.
مقدار پیشفرض این گزینه برای بیشتر کاربردها باید به اندازه کافی بالا باشد، بنابراین فقط در صورتی که مطمئن هستید به آن نیاز دارید این گزینه را تغییر دهید.
- -muxing_queue_data_threshold bytes (خروجی،بهازای هر استریم)
- این یک حداقل آستانه است که تا پیش از آن اندازه صف ماکس کردن در نظر گرفته نمیشود. پیشفرض ۵۰ مگابایت بهازای هر استریم است و بر اساس اندازه کلی بستههای ارائهشده به ماکسر محاسبه میشود.
- -auto_conversion_filters (عمومی)
- فعالسازی درج خودکار فیلترهای تبدیل قالب در تمام فیلترگرافها، از جمله موارد تعریفشده توسط -vf، -af، -filter_complex و -lavfi. اگر مذاکره قالب فیلتر به تبدیل نیاز داشته باشد، مقداردهی اولیه فیلترها با شکست مواجه میشود. تبدیلها همچنان میتوانند با درج دستی فیلتر تبدیل مربوطه (scale, aresample) در گراف انجام شوند. بهطور پیشفرض فعال است؛ برای غیرفعال کردن صریح آن باید "-noauto_conversion_filters" را مشخص کنید.
- -bits_per_raw_sample[:stream_specifier] value (خروجی،بهازای هر استریم)
- اعلام تعداد بیتها بهازای هر نمونه خام در استریم خروجی معین برابر با value. توجه داشته باشید که این گزینه اطلاعات ارائهشده به انکودر/ماکسر را تنظیم میکند و استریم را برای انطباق با این مقدار تغییر نمیدهد. تنظیم مقادیری که با ویژگیهای استریم مطابقت ندارند ممکن است منجر به شکست انکود یا پروندههای خروجی نامعتبر شود.
- -stats_enc_pre[:stream_specifier] path (خروجی،بهازای هر استریم)
- -stats_enc_post[:stream_specifier] path (خروجی،بهازای هر استریم)
- -stats_mux_pre[:stream_specifier] path (خروجی،بهازای هر استریم)
- نوشتن
اطلاعات
انکود
بهازای هر
فریم
درباره
استریمهای
منطبق در
پرونده
مشخصشده
توسط path.
گزینهٔ -stats_enc_pre اطلاعات مربوط به فریمهای خام ویدیویی یا صوتی را درست قبل از ارسال آنها برای انکود مینویسد، در حالی که -stats_enc_post اطلاعات مربوط به بستههای انکودشده را به محض دریافت از انکودر مینویسد. گزینهٔ -stats_mux_pre اطلاعات مربوط به بستهها را درست هنگامی که قرار است به ماکسر ارسال شوند مینویسد. هر فریم یا بسته یک خط در پرونده مشخصشده ایجاد میکند. قالب این خط توسط -stats_enc_pre_fmt / -stats_enc_post_fmt / -stats_mux_pre_fmt کنترل میشود.
هنگامی که آمار چندین استریم در یک پرونده واحد نوشته میشود، خطوط مربوط به استریمهای مختلف به صورت درهمتنیده خواهند بود. ترتیب دقیق این درهمتنیدگی مشخص نیست و پایداری آن میان فراخوانیهای مختلف برنامه حتی با گزینههای یکسان تضمین نمیشود.
- -stats_enc_pre_fmt[:stream_specifier] format_spec (خروجی،بهازای هر استریم)
- -stats_enc_post_fmt[:stream_specifier] format_spec (خروجی،بهازای هر استریم)
- -stats_mux_pre_fmt[:stream_specifier] format_spec (خروجی،بهازای هر استریم)
- تعیین قالب
خطوط
نوشتهشده
با -stats_enc_pre / -stats_enc_post /
-stats_mux_pre.
format_spec رشتهای است که میتواند شامل دستورالعملهایی به شکل {fmt} باشد. مقدار format_spec با بکاسلش اسکیپ میشود ---- از \{، \} و \\ برای نوشتن نویسههای واقعی {, } یا \ در خروجی استفاده کنید.
دستورالعملهای دادهشده با fmt میتوانند یکی از موارد زیر باشند:
- fidx
- نمایه پرونده خروجی.
- sidx
- نمایه استریم خروجی در پرونده.
- n
- شماره فریم. پیش از انکود: تعداد فریمهای ارسالشده به انکودر تاکنون. پس از انکود: تعداد بستههای دریافتشده از انکودر تاکنون. ماکس کردن: تعداد بستههای ارائهشده به ماکسر برای این استریم تاکنون.
- ni
- شماره فریم ورودی. نمایه فریم ورودی (یعنی خروجی دادهشده توسط یک دیکودر) که با این فریم یا بسته خروجی مطابقت دارد. در صورت عدم دسترسی -1 است.
- tb
- مبنای زمانی که برچسبهای زمانی این فریم/بسته بر پایه آن بیان شدهاند، به صورت یک عدد کسری گویا num/den. توجه داشته باشید که انکودر و ماکسر ممکن است از مبناهای زمانی متفاوتی استفاده کنند.
- tbi
- مبنای زمانی برای ptsi، به صورت یک عدد کسری گویا num/den. زمانی که ptsi در دسترس باشد موجود است، در غیر این صورت 0/1.
- pts
- برچسب زمانی نمایش (PTS) فریم یا بسته، به صورت یک عدد صحیح. برای محاسبه زمان نمایش باید در مبنای زمانی ضرب شود.
- ptsi
- برچسب زمانی نمایش فریم ورودی (ni را ببینید)، به صورت یک عدد صحیح. برای محاسبه زمان نمایش باید در tbi ضرب شود. در صورت عدم دسترسی به صورت (2^63 - 1 = 9223372036854775807) چاپ میشود.
- t
- زمان نمایش فریم یا بسته، به صورت یک عدد اعشاری. برابر با ضرب pts در tb.
- ti
- زمان نمایش فریم ورودی (ni را ببینید)، به صورت یک عدد اعشاری. برابر با ضرب ptsi در tbi. در صورت عدم دسترسی به صورت inf چاپ میشود.
- dts (packet)
- برچسب زمانی رمزگشایی (DTS) بسته، به صورت یک عدد صحیح. برای محاسبه زمان رمزگشایی باید در مبنای زمانی ضرب شود.
- dt (packet)
- زمان رمزگشایی فریم یا بسته، به صورت یک عدد اعشاری. برابر با ضرب dts در tb.
- sn (frame,audio)
- تعداد نمونههای صوتی ارسالشده به انکودر تاکنون.
- samp (frame,audio)
- تعداد نمونههای صوتی در فریم.
- size (packet)
- اندازه بسته انکودشده بر حسب بایت.
- br (packet)
- نرخ بیت فعلی بر حسب بیت در ثانیه.
- abr (packet)
- نرخ بیت میانگین برای کل استریم تاکنون، بر حسب بیت در ثانیه، در صورتی که در این نقطه قابل تعیین نباشد -1.
- key (packet)
- نویسهٔ 'K' اگر بسته شامل یک فریم کلیدی باشد، در غیر این صورت نویسهٔ 'N'.
دستورالعملهای برچسبگذاریشده با packet فقط با -stats_enc_post_fmt و -stats_mux_pre_fmt قابل استفاده هستند.
دستورالعملهای برچسبگذاریشده با frame فقط با -stats_enc_pre_fmt قابل استفاده هستند.
دستورالعملهای برچسبگذاریشده با audio فقط با استریمهای صوتی قابل استفاده هستند.
رشتههای قالب پیشفرض عبارتند از:
- pre-encoding
- {fidx} {sidx} {n} {t}
- post-encoding
- {fidx} {sidx} {n} {t}
در آینده ممکن است موارد جدیدی به انتهای رشتههای قالببندی پیشفرض اضافه شوند. کاربرانی که به ثابت ماندن دقیق قالب وابستهاند، باید آن را به صورت دستی تعیین نمایند.
توجه داشته باشید که آمار مربوط به استریمهای مختلف که در یک پرونده یکسان نوشته میشوند ممکن است قالبهای متفاوتی داشته باشند.
پروندههای پیشتنظیم (Preset files)
یک پرونده پیشتنظیم حاوی توالیای از جفتهای option=value در هر خط است که مجموعهای از گزینهها را مشخص میکند که نوشتن آنها در خط فرمان دشوار یا طولانی خواهد بود. خطوطی که با نویسهٔ هش ('#') آغاز میشوند نادیده گرفته شده و برای ارائه توضیحات (کامنت) استفاده میشوند. برای نمونهها دایرکتوری presets را در درخت منبع FFmpeg بررسی کنید.
دو نوع پرونده پیشتنظیم وجود دارد: پروندههای ffpreset و پروندههای avpreset.
پروندههای ffpreset
پروندههای ffpreset با گزینههای "vpre"، "apre"، "spre" و "fpre" مشخص میشوند. گزینهٔ "fpre" نام پرونده پیشتنظیم را به جای نام پیشتنظیم به عنوان ورودی میگیرد و میتواند برای هر نوع کدکی استفاده شود. برای گزینههای "vpre"، "apre" و "spre"، گزینههای مشخصشده در پرونده پیشتنظیم برای کدک انتخابشده فعلی از همان نوع اعمال میشوند.
آرگومان ارائهشده به گزینههای پیشتنظیم "vpre"، "apre" و "spre"، پرونده پیشتنظیم مورد استفاده را بر اساس قواعد زیر شناسایی میکند:
ابتدا ffmpeg به دنبال پروندهای به نام arg.ffpreset در دایرکتوریهای $FFMPEG_DATADIR (در صورت تنظیم)، و $HOME/.ffmpeg، و در datadir تعریفشده در زمان پیکربندی (معمولاً PREFIX/share/ffmpeg) یا در یک پوشهٔ ffpresets در کنار فایل اجرایی در win32، به همان ترتیب میگردد. برای مثال، اگر آرگومان "libvpx-1080p" باشد، به دنبال پروندهٔ libvpx-1080p.ffpreset خواهد گشت.
اگر چنین پروندهای پیدا نشود، ffmpeg به دنبال پروندهای به نام codec_name-arg.ffpreset در دایرکتوریهای فوقالذکر میگردد، که در آن codec_name نام کدکی است که گزینههای پرونده پیشتنظیم روی آن اعمال خواهد شد. برای مثال، اگر کدک ویدیو را با "-vcodec libvpx" انتخاب کرده و از "-vpre 1080p" استفاده کنید، به دنبال پروندهٔ libvpx-1080p.ffpreset میگردد.
پروندههای avpreset
پروندههای avpreset با گزینهٔ "pre" مشخص میشوند. عملکرد آنها شبیه به پروندههای ffpreset است، اما تنها گزینههای خاص انکودر را مجاز میدانند. بنابراین، یک جفت option=value که انکودر را مشخص کند نمیتواند استفاده شود.
هنگامی که گزینهٔ "pre" مشخص شود، ffmpeg به دنبال پروندههایی با پسوند avpreset. در دایرکتوریهای $AVCONV_DATADIR (در صورت تنظیم)، و $HOME/.avconv، و در datadir تعریفشده در زمان پیکربندی (معمولاً PREFIX/share/ffmpeg)، به همان ترتیب میگردد.
ابتدا ffmpeg به دنبال پروندهای به نام codec_name-arg.avpreset در دایرکتوریهای فوقالذکر میگردد، که در آن codec_name نام کدکی است که گزینههای پرونده پیشتنظیم روی آن اعمال خواهد شد. برای مثال، اگر کدک ویدیو را با "-vcodec libvpx" انتخاب کنید و از "-pre 1080p" استفاده نمایید، به دنبال پروندهٔ libvpx-1080p.avpreset خواهد گشت.
اگر چنین پروندهای پیدا نشود، ffmpeg به دنبال پروندهای به نام arg.avpreset در همان دایرکتوریها میگردد.
قالب پرونده vstats (vstats file format)
گزینههای "-vstats" و "-vstats_file" ایجاد پروندهای حاوی آمار درباره خروجیهای ویدیویی تولیدشده را فعال میکنند.
گزینهٔ "-vstats_version" نسخه قالب پرونده تولیدشده را کنترل میکند.
در نسخهٔ 1 قالب به صورت زیر است:
frame= <FRAME> q= <FRAME_QUALITY> PSNR= <PSNR> f_size= <FRAME_SIZE> s_size= <STREAM_SIZE>kB time= <TIMESTAMP> br= <BITRATE>kbits/s avg_br= <AVERAGE_BITRATE>kbits/s
در نسخهٔ 2 قالب به صورت زیر است:
out= <OUT_FILE_INDEX> st= <OUT_FILE_STREAM_INDEX> frame= <FRAME_NUMBER> q= <FRAME_QUALITY>f PSNR= <PSNR> f_size= <FRAME_SIZE> s_size= <STREAM_SIZE>kB time= <TIMESTAMP> br= <BITRATE>kbits/s avg_br= <AVERAGE_BITRATE>kbits/s
مقدار مربوط به هر کلید در زیر شرح داده شده است:
- avg_br
- نرخ بیت میانگین بیانشده بر حسب Kbits/s
- br
- نرخ بیت بیانشده بر حسب Kbits/s
- frame
- شماره فریم انکودشده
- out
- نمایه پرونده خروجی
- PSNR
- نسبت بیشینه سیگنال به نویز (Peak Signal to Noise Ratio)
- q
- کیفیت فریم
- f_size
- اندازه بسته انکودشده بیانشده بر حسب تعداد بایتها
- s_size
- اندازه استریم بیانشده بر حسب KiB
- st
- نمایه استریم پرونده خروجی
- time
- زمان بسته
- type
- نوع تصویر (picture type)
همچنین گزینههای -stats_enc را برای روشی جایگزین جهت نمایش آمار انکود ببینید.
مثالها (EXAMPLES)
ضبط ویدیو و صدا (Video and Audio grabbing)
اگر قالب ورودی و دستگاه را مشخص کنید، ffmpeg میتواند صدا و تصویر را مستقیماً ضبط کند:
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
یا با یک منبع صوتی ALSA (ورودی مونو، شناسه کارت 1) به جای OSS:
ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
توجه داشته باشید که باید منبع ویدیویی و کانال مناسب را قبل از اجرای ffmpeg با یک برنامهی نمایشگر تلویزیون مانند http://linux.bytesex.org/xawtv اثر Gerd Knorr فعال کرده باشید. همچنین باید سطوح ضبط صدا را به درستی با یک میکسر استاندارد تنظیم کنید.
ضبط از X11 (X11 grabbing)
ضبط صفحه نمایش X11 با ffmpeg از طریق:
ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg
مقدار 0.0 شماره display.screen کارساز X11 شماست، همانند متغیر محیطی DISPLAY.
ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
مقدار 0.0 شماره display.screen کارساز X11 شماست، همانند متغیر محیطی DISPLAY. مقدار 10 آفست x و 20 آفست y برای ضبط است.
تبدیل قالب پروندههای ویدیویی و صوتی (Video and Audio file format conversion)
هر قالب پرونده و پروتکل پشتیبانیشده میتواند به عنوان ورودی برای ffmpeg استفاده شود:
مثالها:
- میتوانید
از
پروندههای
YUV به عنوان
ورودی
استفاده
کنید:
ffmpeg -i /tmp/test%d.Y -i /tmp/out.mpg
از پروندههای زیر استفاده خواهد شد:
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
پروندههای Y از دو برابر وضوح پروندههای U و V استفاده میکنند. آنها پروندههای خام بدون هدر هستند. این پروندهها میتوانند توسط تمام رمزگشاهای ویدیویی مناسب تولید شوند. اگر ffmpeg نتواند اندازه تصویر را حدس بزند، باید اندازه را با گزینهٔ -s مشخص کنید.
- میتوانید
از یک
پرونده خام
YUV420P ورودی
بگیرید:
ffmpeg -i /tmp/test.yuv /tmp/out.avi
پروندهٔ test.yuv پروندهای شامل دادههای صفحهای (planar) خام YUV است. هر فریم از صفحهٔ Y و به دنبال آن صفحههای U و V در نصف وضوح عمودی و افقی تشکیل شده است.
- میتوانید
به یک
پرونده خام
YUV420P خروجی
بگیرید:
ffmpeg -i mydivx.avi hugefile.yuv
- میتوانید
چندین
پرونده
ورودی و
خروجی
تعیین کنید:
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
پرونده صوتی a.wav و پرونده ویدیویی خام YUV به نام a.yuv را به پرونده MPEG به نام a.mpg تبدیل میکند.
- میتوانید
تبدیلات
صوتی و
تصویری را
همزمان
انجام دهید:
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
پرونده a.wav را با نرخ نمونهبرداری 22050 هرتز به صدای MPEG تبدیل میکند.
- میتوانید
همزمان به
چندین قالب
انکود کنید
و یک نگاشت
از
استریمهای
ورودی به
استریمهای
خروجی
تعریف
نمایید:
ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
پرونده a.wav را با نرخ ۶۴ کیلوبیت به a.mp2 و با نرخ ۱۲۸ کیلوبیت به b.mp2 تبدیل میکند. عبارت '-map file:index' مشخص میکند کدام استریم ورودی برای هر استریم خروجی استفاده شود، به ترتیب تعریف استریمهای خروجی.
- میتوانید
VOBهای
رمزگشاییشده
را ترنسکود
کنید:
ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
این یک مثال متداول ریپ کردن DVD است؛ ورودی یک پرونده VOB است و خروجی یک پرونده AVI با ویدیوی MPEG-4 و صدای MP3. توجه داشته باشید که در این دستور از فریمهای B استفاده میکنیم تا استریم MPEG-4 با DivX5 سازگار باشد، و اندازه GOP برابر با ۳۰۰ است که به معنی یک فریم اینترا در هر ۱۰ ثانیه برای ویدیوی ورودی 29.97 فریم بر ثانیه است. علاوه بر این، استریم صوتی با MP3 انکود شده است بنابراین باید پشتیبانی از LAME را با ارسال "--enable-libmp3lame" به اسکریپت پیکربندی فعال کرده باشید. نگاشت به ویژه برای ترنسکود کردن DVD جهت دریافت زبان صوتی دلخواه بسیار مفید است.
نکته: برای مشاهده قالبهای ورودی پشتیبانیشده، از "ffmpeg -demuxers" استفاده کنید.
- میتوانید
تصاویر را
از یک ویدیو
استخراج
کنید، یا از
چندین
تصویر یک
ویدیو
ایجاد
نمایید:
برای استخراج تصاویر از یک ویدیو:
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
این دستور یک فریم ویدیویی در هر ثانیه از ویدیو استخراج کرده و آنها را در پروندههایی به نامهای foo-001.jpeg، foo-002.jpeg و غیره خروجی میدهد. تصاویر برای انطباق با مقادیر WxH جدید تغییر اندازه داده میشوند.
اگر میخواهید تنها تعداد محدودی فریم استخراج کنید، میتوانید دستور بالا را در ترکیب با گزینهٔ "-frames:v" یا "-t"، یا در ترکیب با -ss برای شروع استخراج از یک نقطه زمانی خاص استفاده کنید.
برای ایجاد یک ویدیو از تصاویر متعدد:
ffmpeg -f image2 -framerate 12 -i foo-%03d.jpeg -s WxH foo.avi
سینتکس "foo-%03d.jpeg" استفاده از یک عدد دهدهی متشکل از سه رقم با پیشپرکردن صفر برای بیان شماره توالی را مشخص میکند. این همان سینتکس پشتیبانیشده توسط تابع printf در زبان C است، اما تنها قالبهایی که یک عدد صحیح معمولی را میپذیرند مناسب هستند.
هنگام وارد کردن یک توالی تصویر، -i همچنین از گسترش الگوهای عام شبیه به پوسته (globbing) در داخل خود، با انتخاب گزینهٔ مخصوص image2 یعنی "-pattern_type glob" پشتیبانی میکند.
برای مثال، جهت ساخت یک ویدیو از نام پروندههایی که با الگوی glob تطبیق دارند: "foo-*.jpeg":
ffmpeg -f image2 -pattern_type glob -framerate 12 -i 'foo-*.jpeg' -s WxH foo.avi
- میتوانید
چندین
استریم از
همان نوع را
در خروجی
قرار دهید:
ffmpeg -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nut
پرونده خروجی حاصل test12.nut شامل چهار استریم اول از پروندههای ورودی به ترتیب معکوس خواهد بود.
- برای تحمیل
خروجی
ویدیوی با
نرخ بیت
ثابت (CBR):
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
- چهار
گزینهٔ lmin، lmax،
mblmin و mblmax از
واحدهای 'lambda'
استفاده
میکنند،
اما
میتوانید
از ثابت QP2LAMBDA
برای تبدیل
آسان از
واحدهای 'q'
استفاده
کنید:
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
سینتکس و قالبها (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 است.
ENCODERS
انکودرها عناصر پیکربندیشدهای در FFmpeg هستند که امکان انکود (کدگذاری فشرده) جریانهای چندرسانهای را فراهم میآورند.
هنگام پیکربندی بیلد FFmpeg، تمامی انکودرهای بومی (native) پشتیبانیشده به صورت پیشفرض فعال هستند. انکودرهایی که به یک کتابخانه خارجی نیاز دارند باید به صورت دستی از طریق گزینه مربوطه "--enable-lib" فعال گردند. میتوانید فهرستی از تمامی انکودرهای موجود را با استفاده از گزینه پیکربندی "--list-encoders" مشاهده کنید.
میتوانید تمامی انکودرها را با استفاده از گزینه پیکربندی "--disable-encoders" غیرفعال کنید و انکودرهای تکی را به صورت گزینشی با گزینههای "--enable-encoder=ENCODER" / "--disable-encoder=ENCODER" فعال یا غیرفعال نمایید.
گزینه "-encoders" در ابزارهای *ff فهرست انکودرهای فعالشده را نمایش خواهد داد.
AUDIO ENCODERS
توضیحات مربوط به برخی از انکودرهای صوتی در دسترس در ادامه آمده است.
aac
انکودر کدگذاری پیشرفته صدا (AAC).
این انکودر، انکودر پیشفرض AAC است که به صورت بومی درون FFmpeg پیادهسازی شده است.
گزینهها (Options)
- b
- تنظیم نرخ بیت بر حسب بیت بر ثانیه (bits/s). تنظیم این گزینه به طور خودکار حالت نرخ بیت ثابت (CBR) را فعال میکند. اگر این گزینه تعیین نشود، بر روی 128kbps تنظیم میگردد.
- q
- تنظیم کیفیت برای حالت نرخ بیت متغیر (VBR). این گزینه تنها هنگام استفاده از ابزار خط فرمان ffmpeg معتبر است. برای کاربران رابط برنامهنویسی کتابخانهای، از global_quality استفاده کنید.
- cutoff
- تنظیم فرکانس قطع (Cutoff Frequency). در صورت عدم تعیین، به انکودر اجازه داده میشود تا فرکانس قطع را به صورت پویا تنظیم کند تا شفافیت صدا در نرخهای بیت پایین بهبود یابد.
- aac_coder
- تنظیم روش کدگذاری انکودر AAC. مقادیر ممکن:
- twoloop
- روش جستجوی
دو حلقهای
(TLS). این روش
پیشفرض
است.
این روش ابتدا کوانتیایزرها را بر اساس آستانههای باند تنظیم میکند و سپس تلاش مینماید با افزودن یا کاستن یک مقدار مشخص از تمام کوانتیایزرها و اندکی تغییر در برخی کوانتیایزرهای منفرد، ترکیب بهینه را بیابد. بر اساس اینکه گزینههای aac_is، aac_ms و aac_pns فعال باشند، خود را تنظیم میکند.
- anmr
- راهکار
مبتنی بر
داربست (Trellis)
نسبت
میانگین
نویز به
ماسک (ANMR).
این یک کدگذار آزمایشی است که در حال حاضر کیفیت پایینتری تولید میکند، ناپایدارتر و کندتر از کدگذار پیشفرض twoloop است، اما دارای پتانسیل است. در حال حاضر از گزینههای aac_is یا aac_pns پشتیبانی نمیکند. در حال حاضر توصیه نمیشود.
- fast
- روش
کوانتیایزر
ثابت.
از نسخه سبکتری از الگوریتم twoloop استفاده میکند که سعی در انجام تنظیمات هوشمندانه زیادی ندارد. در نرخهای بیت پایین (کمتر از 64kbps) ضعیفتر است، اما در نرخهای بیت بالاتر بهتر و به مراتب سریعتر عمل میکند.
- aac_ms
- تنظیم حالت کدگذاری میانی/جانبی (M/S). مقدار پیشفرض "auto" به طور خودکار در باندهایی که از این کدگذاری بهره میبرند از M/S استفاده میکند. با مقدار "enable" میتوان آن را برای تمامی باندها اجبار کرد (که عمدتاً برای اشکالزدایی مفید است) یا با "disable" میتوان آن را غیرفعال نمود.
- aac_is
- تنظیم استفاده از ابزار استریوی شدتی (Intensity Stereo). به طور پیشفرض فعال است و در صورت سودمند بودن، IS را برای جفتباندهای استریوی مشابه به طور خودکار فعال میکند. برای مقاصد اشکالزدایی با تنظیم مقدار روی "disable" میتوان آن را غیرفعال کرد.
- aac_pns
- از جایگزینی نویز ادراکی (PNS) برای جایگزینی باندهای فرکانس بالای آنتروپی پایین با نویز سفید نامحسوس در طول فرایند دیکود استفاده میکند. به طور پیشفرض فعال است، اما برای اهداف اشکالزدایی میتوان با "disable" آن را غیرفعال ساخت.
- aac_tns
- استفاده از یک فیلتر چندشاخه FIR را فعال میکند که باندهای فرکانس بالا را در بر میگیرد تا نویز کوانتیزاسیون را در طول فرایند انکود پنهان کند و توسط دیکودر بازگردانده میشود. علاوه بر کاهش آرتیفکتهای ناخوشایند در محدوده فرکانس بالا، آنتروپی را در باندهای بالا کاهش داده و اجازه میدهد بیتهای بیشتری توسط باندهای میانی-پایینی استفاده شوند. به طور پیشفرض فعال است اما برای اشکالزدایی با تنظیم روی "disable" میتوان آن را غیرفعال کرد.
- aac_ltp
- استفاده از افزونه پیشبینی بلندمدت (LTP) را فعال میکند که کارایی کدگذاری را در شرایط پهنای باند بسیار پایین (مانند کدگذاری صدا یا پیانوی تکنوازی) با امتداد پیکهای هارمونیک ثابت در باندها در طول فریمها افزایش میدهد. این گزینه توسط profile:a aac_low اعمال میشود. در ترکیب با -ar برای کاهش نرخ نمونهبرداری استفاده کنید.
- profile
- تنظیم پروفایل انکودینگ؛ مقادیر ممکن:
- aac_low
- پیشفرض؛ پروفایل "پیچیدگی پایین" (Low-complexity) کدک AAC. بیشترین سازگاری را دارد و کیفیت مناسبی تولید میکند.
- mpeg2_aac_low
- معادل "-profile:a aac_low -aac_pns 0". قابلیت PNS با مشخصات MPEG4 معرفی شد.
- aac_ltp
- پروفایل پیشبینی بلندمدت؛ توسط گزینه aac_ltp فعال میشود و آن را نیز فعال خواهد کرد. معرفیشده در MPEG4.
اگر این گزینه مشخص نشود، بر روی aac_low تنظیم میشود.
ac3 and ac3_fixed
انکودرهای صوتی AC-3.
این انکودرها بخشی از ATSC A/52:2010 و ETSI TS 102 366 را پیادهسازی میکنند.
انکودر ac3 از محاسبات ممیز شناور بهره میبرد، در حالی که انکودر ac3_fixed تنها از محاسبات اعداد صحیح ممیز ثابت استفاده میکند. این بدان معنا نیست که یکی همیشه سریعتر است، بلکه هر یک ممکن است برای سیستمی خاص مناسبتر باشد. انکودر ac3_fixed کدک پیشفرض برای هیچیک از قالبهای خروجی نیست، بنابراین برای استفاده از آن باید صراحتاً با گزینه "-acodec ac3_fixed" مشخص شود.
متادیتای AC-3 (AC-3 Metadata)
گزینههای متادیتای AC-3 برای تنظیم پارامترهایی استفاده میشوند که صدا را توصیف میکنند، اما در اغلب موارد خود فرایند انکود صدا را تحت تاثیر قرار نمیدهند. برخی از این گزینهها مستقیماً بر دیکود و بازپخش استریم بیت حاصل تاثیر میگذارند یا بر آن موثر هستند، در حالی که برخی دیگر صرفاً برای اهداف اطلاعرسانی هستند. تعداد کمی از گزینهها بیتهایی به جریان خروجی اضافه میکنند که در غیر این صورت میتوانستند برای دادههای صوتی استفاده شوند، و بنابراین بر کیفیت خروجی اثر خواهند گذاشت. این موارد به تناسب با یادداشتی در فهرست گزینههای زیر مشخص شدهاند.
این پارامترها در چندین سند عمومی به تفصیل شرح داده شدهاند:
- *<http://www.atsc.org/cms/standards/a_52-2010.pdf>
- *<http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf>
- *<http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf>
- *<http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf>
گزینههای کنترل متادیتا (Metadata Control Options)
- -per_frame_metadata boolean
- مجاز دانستن متادیتا بهازای هر فریم. مشخص میکند آیا انکودر باید تغییرات متادیتا را برای هر فریم بررسی کند یا خیر.
- 0
- مقادیر متادیتا که در زمان مقداردهی اولیه تنظیم شدهاند برای تمامی فریمهای استریم استفاده خواهند شد (پیشفرض).
- 1
- مقادیر متادیتا میتوانند پیش از انکود هر فریم تغییر داده شوند.
سطوح تفکیک صدا (Downmix Levels)
- -center_mixlev level
- سطح میکس کانال مرکزی. میزان بهرهای (Gain) که دیکودر هنگام دانمیکس به استریو باید بر کانال مرکزی اعمال کند. این فیلد تنها زمانی در استریم بیت نوشته میشود که کانال مرکزی وجود داشته باشد. مقدار به عنوان یک ضریب مقیاس مشخص میشود. ۳ مقدار معتبر وجود دارد:
- 0.707
- اعمال بهره -3dB
- 0.595
- اعمال بهره -4.5dB (پیشفرض)
- 0.500
- اعمال بهره -6dB
- -surround_mixlev level
- سطح میکس کانالهای فراگیر. میزان بهرهای که دیکودر هنگام دانمیکس به استریو باید بر کانال(های) فراگیر اعمال کند. این فیلد تنها در صورت وجود یک یا چند کانال فراگیر در استریم بیت نوشته میشود. مقدار به عنوان ضریب مقیاس مشخص میگردد. ۳ مقدار معتبر وجود دارد:
- 0.707
- اعمال بهره -3dB
- 0.500
- اعمال بهره -6dB (پیشفرض)
- 0.000
- بیصدا کردن کانال(های) فراگیر
اطلاعات تولید صدا (Audio Production Information)
اطلاعات تولید صدا، اطلاعاتی اختیاری است که محیط میکس را توصیف میکند. در استریم بیت یا هیچیک از فیلدها نوشته نمیشوند یا هر دوی آنها نوشته میشوند.
- -mixing_level number
- سطح میکس. سطح اوج فشار صوت (SPL) را در محیط تولید هنگام مسترینگ میکس مشخص میکند. مقادیر معتبر از 80 تا 111، یا -1 برای حالت ناشناخته یا عدم تعیین است. مقدار پیشفرض -1 است، اما اگر اطلاعات تولید صدا در استریم بیت نوشته شود نمیتوان از این مقدار استفاده کرد. بنابراین اگر گزینه "room_type" روی مقدار پیشفرض نباشد، گزینه "mixing_level" نباید -1 باشد.
- -room_type type
- نوع اتاق. اکولایزاسیون استفادهشده در طول نشست نهایی میکس در استودیو یا صحنه دوبلاژ را توصیف میکند. یک اتاق بزرگ صحنه دوبلاژی با اکولایزاسیون استاندارد صنعتی منحنی X (X-curve) است؛ یک اتاق کوچک دارای اکولایزاسیون مسطح (Flat) است. اگر هر دو گزینه "mixing_level" و "room_type" دارای مقادیر پیشفرض باشند، این فیلد در استریم بیت نوشته نخواهد شد.
- 0
- notindicated
- تعییننشده (پیشفرض)
- 1
- large
- اتاق بزرگ
- 2
- small
- اتاق کوچک
سایر گزینههای متادیتا (Other Metadata Options)
- -copyright boolean
- نشانگر حق نشر (کپیرایت). مشخص میکند آیا حق نشر برای این اثر صوتی وجود دارد یا خیر.
- -dialnorm value
- نرمالسازی گفتگو (Dialogue Normalization). نشان میدهد میانگین سطح گفتگوی برنامه تا چه اندازه زیر مقیاس کامل دیجیتال ۱۰۰٪ (0 dBFS) قرار دارد. این پارامتر جابجایی سطحی را در حین بازتولید صدا تعیین میکند که بلندی میانگین صدای گفتگو را در یک سطح از پیش تعیینشده قرار میدهد. هدف تطبیق سطح بلندی صدا میان منابع برنامهای مختلف است. مقدار -31dB منجر به هیچ تغییری در سطح بلندی نسبت به صدای منبع در حین بازتولید نخواهد شد. مقادیر معتبر اعداد صحیح در محدوده -31 تا -1 هستند که -31 مقدار پیشفرض است.
- -dsur_mode mode
- حالت دالبی سراند (Dolby Surround Mode). مشخص میکند آیا سیگنال استریو از Dolby Surround (Pro Logic) استفاده میکند یا خیر. این فیلد تنها زمانی در جریان بیت نوشته میشود که استریم صوتی استریو باشد. استفاده از این گزینه به این معنا نیست که انکودر پردازش Dolby Surround را به صورت واقعی اعمال خواهد کرد.
- 0
- notindicated
- تعییننشده (پیشفرض)
- 1
- off
- با دالبی سراند انکود نشده است
- 2
- on
- با دالبی سراند انکود شده است
- -original boolean
- نشانگر استریم بیت اصلی. مشخص میکند آیا این صدا از منبع اصلی است و یک کپی نیست.
اطلاعات تفصیلی استریم بیت (Extended Bitstream Information)
گزینههای استریم بیت تفصیلی بخشی از نحو استریم بیت متناوب (Alternate Bit Stream Syntax) هستند که در ضمیمه D استاندارد A/52:2010 مشخص شده است. این اطلاعات در ۲ بخش دستهبندی شدهاند. اگر هر پارامتری از یک گروه تعیین شود، تمامی مقادیر آن گروه در استریم بیت نوشته خواهند شد. برای مواردی که نوشته میشوند اما مقدارشان تعیین نشده، مقادیر پیشفرض استفاده میگردد. در صورت نوشته شدن سطوح میکس، دیکودر در صورت پشتیبانی از نحو Alternate Bit Stream، به جای مقادیر مشخصشده در گزینههای "center_mixlev" و "surround_mixlev" از این مقادیر استفاده خواهد کرد.
اطلاعات تفصیلی استریم بیت - بخش ۱ (Extended Bitstream Information - Part 1)
- -dmix_mode mode
- حالت ارجح دانمیکس استریو. به کاربر اجازه میدهد Lt/Rt (دالبی سراند) یا Lo/Ro (استریوی معمولی) را به عنوان حالت ارجح دانمیکس استریو انتخاب کند.
- 0
- notindicated
- تعییننشده (پیشفرض)
- 1
- ltrt
- دانمیکس Lt/Rt ترجیح داده میشود
- 2
- loro
- دانمیکس Lo/Ro ترجیح داده میشود
- -ltrt_cmixlev level
- سطح میکس مرکزی Lt/Rt. میزان بهرهای که دیکودر در هنگام دانمیکس به استریو در حالت Lt/Rt باید بر کانال مرکزی اعمال کند.
- 1.414
- اعمال بهره +3dB
- 1.189
- اعمال بهره +1.5dB
- 1.000
- اعمال بهره 0dB
- 0.841
- اعمال بهره -1.5dB
- 0.707
- اعمال بهره -3.0dB
- 0.595
- اعمال بهره -4.5dB (پیشفرض)
- 0.500
- اعمال بهره -6.0dB
- 0.000
- بیصدا کردن کانال مرکزی
- -ltrt_surmixlev level
- سطح میکس فراگیر Lt/Rt. میزان بهرهای که دیکودر در هنگام دانمیکس به استریو در حالت Lt/Rt باید بر کانال(های) فراگیر اعمال کند.
- 0.841
- اعمال بهره -1.5dB
- 0.707
- اعمال بهره -3.0dB
- 0.595
- اعمال بهره -4.5dB
- 0.500
- اعمال بهره -6.0dB (پیشفرض)
- 0.000
- بیصدا کردن کانال(های) فراگیر
- -loro_cmixlev level
- سطح میکس مرکزی Lo/Ro. میزان بهرهای که دیکودر در هنگام دانمیکس به استریو در حالت Lo/Ro باید بر کانال مرکزی اعمال کند.
- 1.414
- اعمال بهره +3dB
- 1.189
- اعمال بهره +1.5dB
- 1.000
- اعمال بهره 0dB
- 0.841
- اعمال بهره -1.5dB
- 0.707
- اعمال بهره -3.0dB
- 0.595
- اعمال بهره -4.5dB (پیشفرض)
- 0.500
- اعمال بهره -6.0dB
- 0.000
- بیصدا کردن کانال مرکزی
- -loro_surmixlev level
- سطح میکس فراگیر Lo/Ro. میزان بهرهای که دیکودر هنگام دانمیکس به استریو در حالت Lo/Ro باید بر کانال(های) فراگیر اعمال کند.
- 0.841
- اعمال بهره -1.5dB
- 0.707
- اعمال بهره -3.0dB
- 0.595
- اعمال بهره -4.5dB
- 0.500
- اعمال بهره -6.0dB (پیشفرض)
- 0.000
- بیصدا کردن کانال(های) فراگیر
اطلاعات تفصیلی استریم بیت - بخش ۲ (Extended Bitstream Information - Part 2)
- -dsurex_mode mode
- حالت دالبی سراند EX. مشخص میکند آیا استریم از دالبی سراند EX (ماتریس 7.1 به 5.1) استفاده میکند یا خیر. استفاده از این گزینه به معنای این نیست که انکودر واقعاً پردازش Dolby Surround EX را اعمال میکند.
- 0
- notindicated
- تعییننشده (پیشفرض)
- 1
- on
- دالبی سراند EX خاموش
- 2
- off
- دالبی سراند EX روشن
- -dheadphone_mode mode
- حالت هدفون دالبی. مشخص میکند آیا استریم از کدگذاری هدفون دالبی (چندکاناله ماتریسشده به 2.0 برای استفاده با هدفون) استفاده میکند یا خیر. استفاده از این گزینه به معنای اعمال واقعی پردازش Dolby Headphone توسط انکودر نیست.
- 0
- notindicated
- تعییننشده (پیشفرض)
- 1
- on
- هدفون دالبی خاموش
- 2
- off
- هدفون دالبی روشن
- -ad_conv_type type
- نوع مبدل A/D. مشخص میکند آیا صدا از تبدیل A/D مربوط به HDCD عبور کرده است یا خیر.
- 0
- standard
- مبدل استاندارد A/D (پیشفرض)
- 1
- hdcd
- مبدل A/D نوع HDCD
سایر گزینههای انکود AC-3 (Other AC-3 Encoding Options)
- -stereo_rematrixing boolean
- ماتریسبندی مجدد استریو (Stereo Rematrixing). فعال/غیرفعالسازی استفاده از ماتریسبندی مجدد برای ورودی استریو. این یک قابلیت اختیاری AC-3 است که با انکود انتخابی کانالهای چپ/راست به عنوان میانی/جانبی، کیفیت را افزایش میدهد. این گزینه به صورت پیشفرض فعال است و اکیداً توصیه میشود مگر برای اهداف تست به صورت فعال باقی بماند.
- cutoff frequency
- تنظیم فرکانس قطع پایینگذر. در صورت عدم تعیین، انکودر یک مقدار پیشفرض بر اساس پارامترهای مختلف انکود انتخاب میکند.
گزینههای اختصاصی انکود ممیز شناور AC-3 (Floating-Point-Only AC-3 Encoding Options)
این گزینهها تنها برای انکودر ممیز شناور معتبر هستند و به دلیل پیادهسازی نشدن ویژگیهای متناظر در ممیز ثابت، برای انکودر ممیز ثابت وجود ندارند.
- -channel_coupling boolean
- فعال/غیرفعالسازی استفاده از جفتسازی کانالها؛ یک ویژگی اختیاری AC-3 که با ترکیب اطلاعات فرکانس بالای چندین کانال در یک کانال واحد، کیفیت را بهبود میبخشد. اطلاعات فرکانس بالای هر کانال با دقت کمتری در هر دو حوزه فرکانس و زمان ارسال میشود. این امر اجازه میدهد بیتهای بیشتری برای فرکانسهای پایینتر استفاده شوند در حالی که اطلاعات کافی برای بازسازی فرکانسهای بالا باقی میماند. این گزینه به طور پیشفرض برای انکودر ممیز شناور فعال است و معمولاً باید فعال باقی بماند مگر برای تست یا افزایش سرعت انکود.
- -cpl_start_band number
- باند شروع جفتسازی. باند شروع جفتسازی کانالها را از 1 تا 15 تنظیم میکند. اگر مقداری بیشتر از پهنای باند استفاده شود، به 1 واحد کمتر از باند پایانی جفتسازی کاهش مییابد. در صورت استفاده از auto، باند شروع توسط انکودر بر اساس نرخ بیت، نرخ نمونهبرداری و چیدمان کانال تعیین میشود. این گزینه در صورت غیرفعال بودن جفتسازی کانالها هیچ اثری ندارد.
- -1
- auto
- انتخاب توسط انکودر (پیشفرض)
flac
انکودر FLAC (کدک صوتی بدوناتلاف آزاد).
گزینهها (Options)
گزینههای زیر توسط انکودر flac در FFmpeg پشتیبانی میشوند.
- compression_level
- تنظیم سطح فشردهسازی؛ مقادیر پیشفرض بسیاری از گزینههای دیگر را در صورتی که صراحتاً تنظیم نشده باشند تعیین میکند. مقادیر معتبر از 0 تا 12 هستند و 5 مقدار پیشفرض است.
- frame_size
- تنظیم اندازه فریمها بر حسب تعداد نمونه بهازای هر کانال.
- lpc_coeff_precision
- تنظیم دقت ضرایب LPC؛ مقادیر معتبر از 1 تا 15 هستند و 15 مقدار پیشفرض است.
- lpc_type
- تنظیم الگوریتم مرحله اول LPC.
- lpc_passes
- تعداد گذرها (Passes) برای استفاده در فاکتورگیری چولسکی (Cholesky) حین تحلیل LPC.
- min_partition_order
- حداقل مرتبه بخشبندی.
- max_partition_order
- حداکثر مرتبه بخشبندی.
- prediction_order_method
- روش تعیین مرتبه پیشبینی.
- estimation
- 2level
- 4level
- 8level
- search
- جستجوی جامع (Bruteforce search)
- log
- ch_mode
- حالت کانال.
- auto
- حالت به طور خودکار برای هر فریم انتخاب میشود
- indep
- کانالها به صورت مستقل کدگذاری میشوند
- left_side
- right_side
- mid_side
- exact_rice_parameters
- مشخص میکند آیا پارامترهای رایس به صورت دقیق یا تقریبی محاسبه شوند. در صورت تنظیم روی 1، به طور دقیق محاسبه میشوند که کد را اندکی کندتر کرده اما فشردهسازی را کمی ارتقا میدهد.
- multi_dim_quant
- کوانتیزاسیون چندبعدی. اگر روی 1 تنظیم شود، الگوریتم مرحله دوم LPC پس از مرحله اول اعمال میشود تا ضرایب دقیقتر تنظیم شوند. این فرایند نسبتاً کند است و فشردهسازی را اندکی بهبود میبخشد.
opus
انکودر Opus.
این یک انکودر بومی در FFmpeg برای قالب Opus است. در حال حاضر در مرحله توسعه قرار دارد و تنها بخش CELT از این کدک را پیادهسازی میکند. کیفیت آن معمولاً ضعیفتر بوده و در بهترین حالت با انکودر libopus برابری میکند.
گزینهها (Options)
- b
- تنظیم نرخ بیت بر حسب بیت بر ثانیه. در صورت عدم تعیین، از تعداد کانالها و چیدمان آنها برای انجام یک تخمین مناسب استفاده میکند.
- opus_delay
- تنظیم حداکثر تاخیر بر حسب میلیثانیه. تاخیرهای کمتر از 20 میلیثانیه کیفیت را با سرعت بالایی کاهش میدهند.
libfdk_aac
پوشش انکودر کدک صوتی پیشرفته libfdk-aac AAC.
کتابخانه libfdk-aac بر پایه کد Fraunhofer FDK AAC از پروژه اندروید ساخته شده است.
نیازمند وجود هدرها و کتابخانه libfdk-aac در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libfdk-aac" پیکربندی کنید. این کتابخانه همچنین با مجوز GPL ناسازگار است، بنابراین اگر استفاده از GPL را مجاز میدانید، باید با "--enable-gpl --enable-nonfree --enable-libfdk-aac" پیکربندی را انجام دهید.
این انکودر از پروفایلهای AAC-HE پشتیبانی میکند.
انکود VBR که از طریق گزینههای vbr یا flags +qscale فعال میشود، آزمایشی است و تنها با برخی از ترکیبهای پارامتری کار میکند.
پشتیبانی از انکود صدای 7.1 تنها در libfdk-aac نسخه 0.1.3 یا بالاتر در دسترس است.
برای کسب اطلاعات بیشتر پروژه fdk-aac را در http://sourceforge.net/p/opencore-amr/fdk-aac ببینید.
گزینهها (Options)
گزینههای زیر بر روی گزینههای مشترک کدکهای FFmpeg نگاشت شدهاند.
- b
- تنظیم نرخ
بیت بر حسب
بیت بر
ثانیه. اگر
نرخ بیت
صراحتاً
تعیین
نشود، بسته
به پروفایل
انتخابی به
طور خودکار
روی مقداری
مناسب
تنظیم
میشود.
در صورتی که حالت VBR فعال باشد، این گزینه نادیده گرفته میشود.
- ar
- تنظیم نرخ نمونهبرداری صدا (بر حسب هرتز).
- channels
- تنظیم تعداد کانالهای صوتی.
- flags +qscale
- فعالسازی حالت کیفیت ثابت، نرخ بیت متغیر (VBR). توجه داشته باشید که با مثبت بودن مقدار vbr، حالت VBR به صورت ضمنی فعال میشود.
- cutoff
- تنظیم فرکانس قطع. اگر مشخص نشود (یا صراحتاً روی 0 تنظیم شود)، از مقداری که به صورت خودکار توسط کتابخانه محاسبه شده استفاده خواهد کرد. مقدار پیشفرض 0 است.
- profile
- تنظیم
پروفایل
صوتی.
پروفایلهای زیر شناسایی میشوند:
در صورت عدم تعیین، روی aac_low تنظیم میگردد.
موارد زیر گزینههای اختصاصی انکودر libfdk_aac هستند.
- afterburner
- اگر روی 1
تنظیم شود
قابلیت afterburner
را فعال و
در صورت
تنظیم روی 0
غیرفعال
میکند. این
ویژگی
کیفیت را
بهبود
میبخشد
اما توان
پردازشی
مورد نیاز
را نیز بالا
میبرد.
مقدار پیشفرض 1 است.
- eld_sbr
- در صورت
تنظیم بر
روی 1،
قابلیت SBR
(شبیهسازی
باند طیفی)
را برای ELD
فعال
میکند و در
صورت 0
غیرفعال
میسازد.
مقدار پیشفرض 0 است.
- eld_v2
- در صورت
تنظیم بر
روی 1،
قابلیت ELDv2
(افزونه LD-MPS
برای
سیگنالهای
استریوی ELD)
را برای ELDv2
فعال کرده و
در صورت
تنظیم روی 0
غیرفعال
مینماید.
توجه داشته باشید که این گزینه زمانی در دسترس است که نسخه fdk-aac بالاتر از (4.0.0) باشد: (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0).
مقدار پیشفرض 0 است.
- signaling
- تنظیم شیوه
سیگنالدهی
SBR/PS.
میتواند یکی از مقادیر زیر را بپذیرد:
- default
- انتخاب سیگنالدهی به صورت ضمنی (به طور پیشفرض سلسلهمراتبی صریح، و در صورت غیرفعال بودن هدر عمومی به صورت ضمنی)
- implicit
- سیگنالدهی ضمنی با سازگاری رو به عقب
- explicit_sbr
- سیگنالدهی SBR صریح، سیگنالدهی PS ضمنی
- explicit_hierarchical
- سیگنالدهی صریح سلسلهمراتبی
مقدار پیشفرض default است.
- latm
- در صورت
تنظیم روی
1، خروجی
دادهها را
به صورت
کپسولهشده
در LATM/LOAS قرار
میدهد و در
صورت 0
غیرفعال
است.
مقدار پیشفرض 0 است.
- header_period
- تنظیم دوره
تکرار StreamMuxConfig و PCE
(بر حسب
فریم) جهت
ارسال
بافرهای
پیکربندی
درونباندی
در لایه
انتقال LATM/LOAS.
باید یک عدد صحیح غیرمنفی ۱۶ بیتی باشد.
مقدار پیشفرض 0 است.
- vbr
- تنظیم حالت
VBR از 1 تا 5.
مقدار 1
کمترین
کیفیت (گرچه
همچنان
بسیار خوب)
و 5
بالاترین
کیفیت است.
مقدار 0
حالت VBR را
غیرفعال
کرده و CBR (نرخ
بیت ثابت)
فعال
میشود.
در حال حاضر تنها پروفایل aac_low از انکود VBR پشتیبانی میکند.
حالتهای VBR از 1 تا 5 تقریباً متناظر با نرخهای بیت میانگین زیر هستند:
- 1
- 32 kbps بهازای هر کانال
- 2
- 40 kbps بهازای هر کانال
- 3
- 48-56 kbps بهازای هر کانال
- 4
- 64 kbps بهازای هر کانال
- 5
- حدود 80-96 kbps بهازای هر کانال
مقدار پیشفرض 0 است.
- frame_length
- تنظیم طول فریم صوتی بر حسب تعداد نمونه. مقدار پیشفرض، مقدار پیشفرض داخلی کتابخانه است. برای اطلاعات پیرامون مقادیر پشتیبانیشده به مستندات کتابخانه مراجعه نمایید.
مثالها (Examples)
- استفاده از
ffmpeg برای
تبدیل یک
فایل صوتی
به VBR AAC در یک
کانتینر M4A (MP4):
ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
- استفاده از
ffmpeg برای
تبدیل یک
فایل صوتی
به CBR 64k kbps AAC با
استفاده از
پروفایل High-Efficiency
AAC:
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
liblc3
پوشش انکودر liblc3 LC3 (کدک ارتباطی کمپیدگی).
نیازمند حضور هدرها و کتابخانه liblc3 در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-liblc3" پیکربندی کنید.
این انکودر از کدک Bluetooth SIG LC3 برای پروتکل LE Audio و ویژگیهای زیر از LC3plus پشتیبانی میکند:
- مدت فریم 2.5 و 5 میلیثانیه.
- حالت وضوح بالا (High-Resolution)، نرخهای نمونهبرداری 48 کیلوهرتز و 96 کیلوهرتز.
برای اطلاعات بیشتر به پروژه liblc3 در https://github.com/google/liblc3 مراجعه نمایید.
گزینهها (Options)
گزینههای زیر بر روی گزینههای مشترک کدک FFmpeg نگاشت شدهاند.
- b bitrate
- تنظیم نرخ بیت بر حسب بیت بر ثانیه. این گزینه اندازه ثابت فریمهای انکودشده را برای یک مدت فریم انتخابی تعیین خواهد کرد.
- ar frequency
- تنظیم نرخ نمونهبرداری صدا (بر حسب هرتز).
- channels
- تنظیم تعداد کانالهای صوتی.
- frame_duration
- تنظیم
مدتزمان
فریم صوتی
بر حسب
میلیثانیه.
مقدار
پیشفرض 10ms
است. مدت
فریمهای
مجاز
عبارتند از
2.5ms، 5ms، 7.5ms و 10ms. کدک
LC3 (بلوتوث LE Audio)
مقادیر 7.5ms و 10ms
را مجاز
میداند؛ و
LC3plus مقادیر 2.5ms، 5ms
و 10ms را
پشتیبانی
میکند.
مدت فریم 10ms در هر دو استاندارد LC3 و LC3plus در دسترس است. در این حالت، استریم بیت تولیدشده میتواند به عنوان LC3 یا LC3plus مرجع قرار گیرد.
- high_resolution boolean
- در صورت
تنظیم بر
روی 1 حالت
وضوح بالا
را فعال
میکند.
حالت وضوح
بالا با
تمامی مدت
فریمهای LC3plus
و برای
نرخهای
نمونهبرداری
48 کیلوهرتز
و 96
کیلوهرتز
در دسترس
است.
انکودر در نرخهای نمونهبرداری پایینتر این حالت را به صورت خودکار خاموش کرده و در 96 کیلوهرتز فعال میسازد.
این حالت باید در نرخهای بیت بالا ترجیح داده شود. در این حالت، پهنای باند صدا همواره تا فرکانس نایکوئیست گسترش مییابد، در مقایسه با LC3 در 48 کیلوهرتز که پهنای باند را به 20 کیلوهرتز محدود میکند.
libmp3lame
پوشش انکودر MP3 تحت LAME (Lame Ain't an MP3 Encoder).
نیازمند وجود هدرها و کتابخانه libmp3lame در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libmp3lame" پیکربندی کنید.
برای انکودر MP3 ممیز ثابت (هرچند با کیفیت پایینتر)، به libshine مراجعه کنید.
گزینهها (Options)
گزینههای زیر توسط پوشش libmp3lame پشتیبانی میشوند. معادلهای این گزینهها در ابزار lame درون پرانتز درج شدهاند.
- b (-b)
- تنظیم نرخ بیت بر حسب بیت بر ثانیه برای CBR یا ABR. مقدار "bitrate" در LAME بر حسب کیلوبیت بر ثانیه بیان میشود.
- q (-V)
- تنظیم کیفیت ثابت برای VBR. این گزینه تنها هنگام استفاده از ابزار خط فرمان ffmpeg معتبر است. برای کاربران رابط کتابخانهای، از global_quality استفاده کنید.
- compression_level (-q)
- تنظیم کیفیت الگوریتم. آرگومانهای معتبر اعداد صحیح در محدوده 0 تا 9 هستند؛ 0 به معنای بالاترین کیفیت اما کندترین حالت، و 9 به معنای سریعترین حالت با پایینترین کیفیت است.
- cutoff (--lowpass)
- تنظیم فرکانس قطع پایینگذر. در صورت عدم تعیین، انکودر به صورت پویا فرکانس قطع را تنظیم میکند.
- reservoir
- در صورت تنظیم بر روی 1، استفاده از مخزن بیت (Bit Reservoir) را فعال میکند. مقدار پیشفرض 1 است. در LAME این ویژگی به طور پیشفرض فعال است، اما با استفاده از گزینه --nores میتوان آن را بازنویسی کرد.
- joint_stereo (-m j)
- به انکودر اجازه میدهد (به ازای هر فریم) از استریوی چپ/راست یا استریوی میانی/جانبی استفاده کند. مقدار پیشفرض 1 است.
- abr (--abr)
- در صورت تنظیم بر روی 1 به انکودر امکان میدهد از ABR استفاده کند. سوییچ --abr در lame نرخ بیت هدف را تنظیم میکند، در حالی که این گزینه در FFmpeg صرفاً دستور به استفاده از ABR میدهد و تعیین نرخ بیت همچنان به b وابسته است.
- copyright (-c)
- در صورت تنظیم بر روی 1 پرچم حق نشر صوتی MPEG را فعال میکند. مقدار پیشفرض 0 است (غیرفعال).
- original (-o)
- در صورت تنظیم بر روی 1 پرچم اصالت صدای MPEG را فعال میسازد. مقدار پیشفرض 1 است (فعال).
libopencore-amrnb
انکودر باند باریک چندنرخی تطبیقی OpenCORE (Adaptive Multi-Rate Narrowband).
نیازمند هدرها و کتابخانه libopencore-amrnb در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libopencore-amrnb --enable-version3" پیکربندی کنید.
این انکودر صرفاً از حالت مونو پشتیبانی میکند. به طور رسمی تنها از نرخ نمونهبرداری 8000 هرتز پشتیبانی به عمل میآورد، اما میتوانید با تنظیم strict بر روی unofficial یا پایینتر آن را بازنویسی کنید.
گزینهها (Options)
- b
- تنظیم نرخ بیت بر حسب بیت بر ثانیه. تنها نرخهای بیت زیر پشتیبانی میشوند، در غیر این صورت libavcodec آن را به نزدیکترین نرخ بیت معتبر گرد خواهد کرد:
- 4750
- 5150
- 5900
- 6700
- 7400
- 7950
- 10200
- 12200
- dtx
- در صورت تنظیم روی 1، مخابره ناپیوسته (تولید نویز آسایش) را مجاز میسازد. مقدار پیشفرض 0 است (غیرفعال).
libopus
پوشش انکودر کدک صوتی تعاملی libopus Opus.
نیازمند وجود هدرها و کتابخانه libopus در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libopus" پیکربندی کنید.
نگاشت گزینهها (Option Mapping)
بیشتر گزینههای libopus بر اساس ابزار کاربردی opusenc از مجموعه opus-tools الگوبرداری شدهاند. نمودار نگاشت گزینههای زیر گزینههای پشتیبانیشده توسط پوشش libopus و معادل آنها در opusenc را درون پرانتز شرح میدهد.
- b (bitrate)
- تنظیم نرخ بیت بر حسب بیت بر ثانیه. گزینه b در FFmpeg بر حسب بیت بر ثانیه و bitrate در opusenc بر حسب کیلوبیت بر ثانیه بیان میشود.
- vbr (vbr, hard-cbr, and cvbr)
- تنظیم حالت VBR. گزینه vbr در FFmpeg دارای آرگومانهای معتبر زیر است که گزینههای معادل opusenc درون پرانتز آمدهاند:
- off (hard-cbr)
- استفاده از کدگذاری نرخ بیت ثابت (CBR).
- on (vbr)
- استفاده از کدگذاری نرخ بیت متغیر (پیشفرض).
- constrained (cvbr)
- استفاده از کدگذاری نرخ بیت متغیر مقید.
- compression_level (comp)
- تنظیم پیچیدگی الگوریتم کدگذاری. گزینههای معتبر اعداد صحیح در محدوده 0 تا 10 هستند. مقدار 0 سریعترین انکود اما کیفیت پایینتر را میدهد، در حالی که 10 بالاترین کیفیت اما کندترین انکود را ارائه مینماید. مقدار پیشفرض 10 است.
- frame_duration (framesize)
- تنظیم حداکثر اندازه فریم، یا مدت فریم بر حسب میلیثانیه. آرگومان باید دقیقاً یکی از مقادیر زیر باشد: 2.5, 5, 10, 20, 40, 60. اندازههای فریم کوچکتر تاخیر کمتری ایجاد میکنند اما کیفیت کمتری در یک نرخ بیت معین به همراه دارند. اندازههای بزرگتر از 20ms تنها در نرخهای بیت نسبتاً پایین قابل توجه هستند. مقدار پیشفرض 20ms است.
- packet_loss (expect-loss)
- تنظیم درصد اتلاف بسته مورد انتظار. مقدار پیشفرض 0 است.
- fec (n/a)
- فعالسازی تصحیح خطای رو به جلو درونباندی (Inband FEC). مقدار packet_loss باید غیرصفر باشد تا از این قابلیت بهره گرفته شود - بسامد دادههای جانبی FEC متناسب با میزان اتلاف بسته مورد انتظار خواهد بود. به طور پیشفرض غیرفعال است.
- application (N.A.)
- تنظیم نوع کاربرد مد نظر. گزینههای معتبر در زیر آمده است:
- cutoff (N.A.)
- تنظیم پهنای باند قطع بر حسب هرتز. آرگومان باید دقیقاً یکی از مقادیر روبرو باشد: 4000، 6000، 8000، 12000 یا 20000 که به ترتیب متناظر با باند باریک، باند متوسط، باند پهن، باند فوق پهن و باند کامل هستند. مقدار پیشفرض 0 است (فرکانس قطع غیرفعال). توجه داشته باشید که libopus برای نرخهای بیت کمتر از 15 kbps فرکانس قطع باند پهن را اجبار میکند، مگر اینکه از حالت فقط CELT (گزینه application روی lowdelay) استفاده شود.
- mapping_family (mapping_family)
- تنظیم
خانواده
نگاشت
کانال برای
استفاده
توسط
انکودر.
مقدار
پیشفرض -1
برای
ورودیهای
مونو و
استریو از
خانواده
نگاشت 0 و در
غیر این
صورت از
خانواده 1
استفاده
میکند.
همچنین
مقدار
پیشفرض،
بهینهسازیهای
ماسکگذاری
سراند و
پهنای باند
LFE در libopus را
غیرفعال
کرده و
الزام
میدارد که
ورودی شامل
۸ کانال یا
کمتر باشد.
سایر مقادیر عبارتند از: 0 برای مونو و استریو، 1 برای صدای سراند با بهینهسازیهای ماسکگذاری و پهنای باند LFE، و 255 برای جریانهای مستقل با چیدمان کانال نامشخص.
- dtx (N.A.)
- در صورت تنظیم بر روی 1 مخابره ناپیوسته را مجاز میسازد. مقدار پیشفرض 0 است (غیرفعال).
- apply_phase_inv (N.A.) (requires libopus >= 1.2)
- اگر روی 0 تنظیم شود، استفاده از وارونگی فاز برای استریوی شدتی را غیرفعال میکند که کیفیت دانمیکسهای مونو را بهبود میبخشد، اما کیفیت استریوی عادی را اندکی کاهش میدهد. مقدار پیشفرض 1 است (وارونگی فاز فعال).
libshine
پوشش انکودر MP3 ممیز ثابت Shine.
کتابخانه Shine یک انکودر MP3 ممیز ثابت است. در پلتفرمهای فاقد واحد ممیز شناور (FPU) مانند پردازندههای armel و برخی گوشیها و تبلتها عملکرد بسیار بهتری دارد. با این حال، از آنجا که بیش از کیفیت بر عملکرد تمرکز دارد، از نظر کیفیت همتراز با LAME و سایر انکودرهای مناسب استفاده در سطح تولید نیست. همچنین بر اساس صفحه خانگی پروژه، ممکن است این انکودر عاری از باگ نباشد زیرا کد آن سالها پیش نوشته شده و پروژه حداقل برای ۵ سال متوقف بوده است.
این انکودر تنها از ورودی استریو و مونو پشتیبانی میکند و فقط از حالت CBR پشتیبانی به عمل میآورد.
پروژه اصلی (آخرین بار در اوایل ۲۰۰۷ بهروزرسانی شد) در http://sourceforge.net/projects/libshine-fxp قرار دارد. ما تنها از فورک بهروزشده توسط پروژه Savonet/Liquidsoap در https://github.com/savonet/shine پشتیبانی میکنیم.
نیازمند هدرها و کتابخانه libshine در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-libshine" پیکربندی کنید.
همچنین به libmp3lame مراجعه نمایید.
گزینهها (Options)
گزینههای زیر توسط پوشش libshine پشتیبانی میشوند. معادل این گزینهها در shineenc درون پرانتز آمده است.
- b (-b)
- تنظیم نرخ بیت بر حسب بیت بر ثانیه برای CBR. گزینه -b در shineenc بر حسب کیلوبیت بر ثانیه بیان میشود.
libtwolame
پوشش انکودر TwoLAME MP2.
نیازمند وجود هدرها و کتابخانه libtwolame در حین پیکربندی است. باید بیلد را صراحتاً با "--enable-libtwolame" پیکربندی کنید.
گزینهها (Options)
گزینههای زیر توسط پوشش libtwolame پشتیبانی میشوند. گزینههای معادل در twolame بعد از گزینههای FFmpeg و درون پرانتز آمدهاند.
- b (-b)
- تنظیم نرخ بیت بر حسب بیت بر ثانیه برای CBR. گزینه b در twolame بر حسب کیلوبیت بر ثانیه بیان میشود. مقدار پیشفرض 128k است.
- q (-V)
- تنظیم کیفیت برای پشتیبانی آزمایشی از VBR. حداکثر محدوده مقادیر از -50 تا 50 است و محدوده مفید از -10 تا 10 میباشد؛ هر چه مقدار بالاتر باشد، کیفیت بهتر است. این گزینه تنها هنگام استفاده از ابزار خط فرمان ffmpeg معتبر است. برای کاربران رابط کتابخانهای، از global_quality استفاده کنید.
- mode (--mode)
- تنظیم حالت صدای خروجی. مقادیر ممکن:
- auto
- انتخاب حالت به صورت خودکار بر اساس ورودی. این حالت پیشفرض است.
- stereo
- استریو
- joint_stereo
- استریوی مشترک
- dual_channel
- دوکاناله مستقل
- mono
- مونو
- psymodel (--psyc-mode)
- تنظیم مدل آکوستیک روانی برای استفاده در انکود. آرگومان باید یک عدد صحیح بین -1 تا 4 (شامل هر دو) باشد. هرچه مقدار بالاتر باشد، کیفیت بهتر خواهد بود. مقدار پیشفرض 3 است.
- energy_levels (--energy)
- در صورت تنظیم بر روی 1 افزونه سطوح انرژی را فعال میکند. مقدار پیشفرض 0 است (غیرفعال).
- error_protection (--protect)
- در صورت تنظیم روی 1 حفاظت در برابر خطای CRC را فعال میکند. مقدار پیشفرض 0 است (غیرفعال).
- copyright (--copyright)
- در صورت تنظیم بر روی 1 پرچم حق نشر صوتی MPEG را فعال میسازد. مقدار پیشفرض 0 است (غیرفعال).
- original (--original)
- در صورت تنظیم روی 1 پرچم صدای اصلی MPEG را فعال میکند. مقدار پیشفرض 0 است (غیرفعال).
libvo-amrwbenc
انکودر باند پهن چندنرخی تطبیقی VisualOn (Adaptive Multi-Rate Wideband).
نیازمند هدرها و کتابخانه libvo-amrwbenc در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libvo-amrwbenc --enable-version3" پیکربندی کنید.
این انکودر تنها مونو است. به طور رسمی تنها از نرخ نمونهبرداری 16000 هرتز پشتیبانی میکند، اما میتوانید با تنظیم strict بر روی unofficial یا پایینتر آن را بازنویسی کنید.
گزینهها (Options)
- b
- تنظیم نرخ بیت بر حسب بیت بر ثانیه. تنها نرخهای بیت زیر پشتیبانی میشوند، در غیر این صورت libavcodec آن را به نزدیکترین نرخ بیت معتبر گرد خواهد کرد:
- 6600
- 8850
- 12650
- 14250
- 15850
- 18250
- 19850
- 23050
- 23850
- dtx
- در صورت تنظیم روی 1 مخابره ناپیوسته (تولید نویز آسایش) را مجاز میداند. مقدار پیشفرض 0 است (غیرفعال).
libvorbis
پوشش انکودر libvorbis.
نیازمند هدرها و کتابخانه libvorbisenc در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libvorbis" پیکربندی کنید.
گزینهها (Options)
گزینههای زیر توسط پوشش libvorbis پشتیبانی میشوند. معادل این گزینهها در oggenc در پرانتز درج شده است.
برای دریافت مستندات دقیقتر و جامعتر درباره گزینههای libvorbis، به مستندات libvorbisenc و oggenc مراجعه کنید. به http://xiph.org/vorbis، http://wiki.xiph.org/Vorbis-tools و oggenc(1) مراجعه نمایید.
- b (-b)
- تنظیم نرخ بیت بر حسب بیت بر ثانیه برای ABR. در oggenc گزینه -b بر حسب کیلوبیت بر ثانیه بیان میشود.
- q (-q)
- تنظیم
کیفیت ثابت
برای VBR.
مقدار باید
یک عدد
اعشاری در
محدوده -1.0 تا
10.0 باشد. هرچه
مقدار
بالاتر
باشد،
کیفیت بهتر
خواهد بود.
مقدار
پیشفرض 3.0
است.
این گزینه تنها با ابزار خط فرمان ffmpeg معتبر است. برای کاربران رابط کتابخانهای، از global_quality استفاده نمایید.
- cutoff (--advanced-encode-option lowpass_frequency=N)
- تنظیم پهنای باند قطع بر حسب هرتز؛ مقدار 0 فرکانس قطع را غیرفعال میکند. گزینه متناظر در oggenc بر حسب کیلوهرتز بیان میشود. مقدار پیشفرض 0 است (قطع غیرفعال).
- minrate (-m)
- تنظیم حداقل نرخ بیت بر حسب بیت بر ثانیه. در oggenc گزینه -m بر حسب کیلوبیت بر ثانیه بیان میشود.
- maxrate (-M)
- تنظیم حداکثر نرخ بیت بر حسب بیت بر ثانیه. در oggenc سوییچ -M بر حسب کیلوبیت بر ثانیه بیان میشود. این گزینه تنها در حالت ABR تاثیرگذار است.
- iblock (--advanced-encode-option impulse_noisetune=N)
- تنظیم سوگیری کف نویز برای بلوکهای ضربه. مقدار یک عدد اعشاری از -15.0 تا 0.0 است. سوگیری منفی به انکودر دستور میدهد توجه ویژهای به شفافیت گذارها در صدای انکودشده داشته باشد. مصالحه برای پاسخ گذار بهتر، نرخ بیت بالاتر خواهد بود.
mjpeg
انکودر Motion JPEG.
گزینهها (Options)
- huffman
- تنظیم راهبرد کدگذاری هافمن. مقادیر ممکن:
wavpack
انکودر صوتی بدوناتلاف WavPack.
گزینهها (Options)
گزینههای معادل برای ابزار خط فرمان wavpack درون پرانتز فهرست شدهاند.
گزینههای مشترک (Shared options)
گزینههای مشترک زیر برای این انکودر اعمال میشوند. در اینجا تنها نکات ویژه درباره این انکودر خاص مستند میشوند. برای مفهوم کلی گزینهها به فصل گزینههای کدک (Codec Options) مراجعه کنید.
- frame_size (--blocksize)
- برای این
انکودر،
محدوده این
گزینه بین 128
تا 131072 است.
مقدار
پیشفرض به
صورت
خودکار بر
اساس نرخ
نمونهبرداری
و تعداد
کانالها
تعیین
میشود.
برای فرمول کامل محاسبه پیشفرض، به libavcodec/wavpackenc.c مراجعه کنید.
- compression_level (-f, -h, -hh, and -x)
گزینههای اختصاصی (Private options)
- joint_stereo (-j)
- تنظیم فعال بودن یا نبودن استریوی مشترک. مقادیر معتبر عبارتند از:
- optimize_mono
- تنظیم فعالسازی بهینهسازی برای مونو. این گزینه تنها برای استریمهای غیرمونو موثر است. مقادیر در دسترس:
VIDEO ENCODERS
توضیحات مربوط به برخی از انکودرهای ویدیویی در دسترس در ادامه آمده است.
a64_multi, a64_multi5
انکودر مجموعه نویسههای چندرنگ A64 / کمودور ۶۴ (Commodore 64). گزینه "a64_multi5" با رنگ پنجم (colram) گسترش یافته است.
Cinepak
انکودر Cinepak با نام مستعار CVID. سازگار با ویندوز 3.1 و MacOS کلاسیک (Vintage).
گزینهها (Options)
- g integer
- فاصله فریمهای کلیدی. حداقل به ازای هر "-g" فریم یک فریم کلیدی درج میشود، گاهی اوقات زودتر.
- q:v integer
- فاکتور کیفیت. مقدار کمتر بهتر است؛ مقدار بالاتر نرخ بیت کمتری میدهد. جدول زیر نرخهای بیت را هنگام انکود akiyo_cif.y4m به ازای مقادیر مختلف "-q:v" با "-g 100" فهرست میکند:
- "-q:v 1" 1918 kb/s
- "-q:v 2" 1735 kb/s
- "-q:v 4" 1500 kb/s
- "-q:v 10" 1041 kb/s
- "-q:v 20" 826 kb/s
- "-q:v 40" 553 kb/s
- "-q:v 100" 394 kb/s
- "-q:v 200" 312 kb/s
- "-q:v 400" 266 kb/s
- "-q:v 1000" 237 kb/s
- max_extra_cb_iterations integer
- حداکثر دفعات گذر اضافی برای محاسبه مجدد کتاب کد (Codebook)؛ مقدار بیشتر کیفیت بهتری میدهد اما کندتر است.
- skip_empty_cb boolean
- جلوگیری از هدررفت بایتها، نادیده گرفتن دیکودر نسخه قدیمی MacOS.
- max_strips integer
- min_strips integer
- حداقل و حداکثر تعداد نوارهایی که استفاده میشود. دامنه وسیعتر گاهی اوقات کیفیت را بهبود میبخشد. نوارهای بیشتر عموماً کیفیت بهتری دارند اما بیتهای بیشتری مصرف میکنند. نوارهای کمتر تمایل به تولید فریمهای کلیدی بیشتری دارد. مقدار سازگار با نسخههای قدیمی 1..3 است.
- strip_number_adaptivity integer
- میزان مجاز تغییر تعداد نوارها میان فریمها. مقادیر بالاتر بهتر اما کندتر است.
ffv1
انکودر FFv1
گزینهها (Options)
گزینههای زیر توسط انکودر FFv1 در FFmpeg پشتیبانی میشوند.
- slicecrc
- مقدار -1 (پیشفرض، خودکار)، 1 استفاده از crc با حالت اولیه و نهایی صفر، 2 استفاده از crc با حالت اولیه و نهایی غیر صفر
- qtable
- default
- پیشفرض، خودکار
- 8bit
- استفاده از پیشفرض ۸ بیتی
- greater8bit
- استفاده از پیشفرض >۸ بیتی
- remap_optimizer
- مقداری بین 0 تا 5، پیشفرض 3؛ میزان تلاشی که انکودر برای بهینهسازی جدول نگاشت مجدد صرف میکند.
GIF
انکودر تصویر/پویانمایی GIF.
گزینهها (Options)
- gifflags integer
- تنظیم پرچمهای مورد استفاده برای انکود GIF.
- offsetting
- جابجایی
تصویر (Picture Offsetting)
را فعال
میکند.
پیشفرض فعال است.
- transdiff
- تشخیص
شفافیت
میان
فریمها را
فعال
میسازد.
پیشفرض فعال است.
- gifimage integer
- انکود یک
تصویر GIF
کامل
بهازای هر
فریم را به
جای یک GIF
متحرک
پویانماییشده
فعال
میکند.
مقدار پیشفرض 0 است.
- global_palette integer
- در صورت
امکان،
پالتی را در
هدر سراسری
GIF مینویسد.
در صورت غیرفعال بودن، در هر فریم همواره یک پالت نوشته خواهد شد، حتی اگر یک پالت سراسری فراهم شده باشد.
مقدار پیشفرض 1 است.
Hap
انکودر ویدیوی Vidvox Hap.
گزینهها (Options)
- format integer
- تعیین قالب Hap برای انکود.
مقدار پیشفرض hap است.
- chunks integer
- تعداد
تکهها
(چانکها)
را برای
تقسیم
فریمها
بین 1 و 64 مشخص
میکند. این
ویژگی
امکان
دیکود
چندنخی
فریمهای
بزرگ را،
احتمالاً
به بهای
افزایش نرخ
دادهها،
فراهم
میسازد.
انکودر
ممکن است
این مقدار
را تغییر
دهد تا
فریمها به
طور مساوی
تقسیم شوند.
مقدار پیشفرض 1 است.
- compressor integer
- فشردهساز مرحله دوم را برای استفاده مشخص میکند. اگر روی none تنظیم شود، chunks به 1 محدود خواهد شد، زیرا فریمهای غیرفشرده تکهتکهشده فاقد هرگونه مزیتی هستند.
مقدار پیشفرض snappy است.
jpeg2000
انکودر بومی jpeg 2000 به صورت پیشفرض بااتلاف است؛ از گزینه "-q:v" میتوان برای تنظیم کیفیت انکود استفاده کرد. انکود بدوناتلاف را میتوان با "-pred 1" انتخاب نمود.
گزینهها (Options)
- format integer
- میتواند روی "j2k" یا "jp2" (پیشفرض) تنظیم شود که ذخیره قالبهای پیکسلی غیر rgb را ممکن میسازد.
- tile_width integer
- تنظیم عرض تایل. محدوده از 1 تا 1073741824 است. پیشفرض 256 میباشد.
- tile_height integer
- تنظیم ارتفاع تایل. محدوده از 1 تا 1073741824 است. پیشفرض 256 میباشد.
- pred integer
- امکان تنظیم نوع تبدیل موجک گسسته (DWT) را فراهم میکند:
پیشفرض "dwt97int" است.
- sop boolean
- این گزینه را برای افزودن نشانگر SOP در ابتدای هر بسته فعال کنید. به طور پیشفرض غیرفعال است.
- eph boolean
- این گزینه را برای افزودن نشانگر EPH در انتهای هدر هر بسته فعال نمایید. به صورت پیشفرض غیرفعال است.
- prog integer
- ترتیب پیشرفت (Progression Order) را برای استفاده توسط انکودر تنظیم میکند. مقادیر ممکن:
به صورت پیشفرض روی "lrcp" تنظیم شده است.
- layer_rates string
- به طور
پیشفرض
هنگامی که
از این
گزینه
استفاده
نمیشود،
فشردهسازی
با استفاده
از معیار
کیفیت صورت
میگیرد.
این گزینه
امکان
فشردهسازی
با استفاده
از نسبت
فشردهسازی
را فراهم
میآورد.
نسبت
فشردهسازی
را میتوان
برای هر سطح
مشخص نمود.
نسبت
فشردهسازی
یک لایه
"l" مشخص
میکند چه
نسبتی از
اندازه کل
فایل در
"l" لایه
اول
گنجانده
شده است.
مثال کاربردی:
ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k
این دستور تصویر را طوری فشرده میکند که شامل ۳ لایه باشد، جایی که دادههای موجود در لایه اول ۱۰۰۰ برابر فشرده میشوند، در دو لایه اول ۱۰۰ برابر فشرده میشوند، و با استفاده از هر ۳ لایه شامل تمامی دادهها خواهد بود.
librav1e
پوشش انکودر rav1e AV1.
نیازمند وجود هدرها و کتابخانه rav1e در هنگام پیکربندی است. باید بیلد را صراحتاً با "--enable-librav1e" پیکربندی کنید.
گزینهها (Options)
- qmax
- حداکثر کوانتیایزر را برای استفاده در حالت نرخ بیت تعیین میکند.
- qmin
- حداقل کوانتیایزر را برای استفاده در حالت نرخ بیت تنظیم میکند.
- qp
- از حالت کوانتیایزر برای انکود با کوانتیایزر مشخصشده (0-255) استفاده میکند.
- speed
- پریست سرعت (0-10) را برای انکود انتخاب میکند.
- tiles
- مشخص میکند انکود با چه تعداد تایل انجام شود.
- tile-rows
- تعداد سطرهای تایلها را برای انکود انتخاب میکند.
- tile-columns
- تعداد ستونهای تایلها را برای انکود انتخاب میکند.
- rav1e-params
- تنظیم
گزینههای
rav1e با
استفاده از
فهرستی از
جفتهای
key=value جداشده
با ":". برای
مشاهده
فهرستی از
گزینهها
به rav1e --help
مراجعه
کنید.
به عنوان مثال برای تعیین گزینههای انکود librav1e با -rav1e-params:
ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4
libaom-av1
پوشش انکودر libaom AV1.
نیازمند وجود هدرها و کتابخانه libaom در زمان پیکربندی است. باید بیلد را صراحتاً با "--enable-libaom" پیکربندی کنید.
گزینهها (Options)
این پوشش از گزینههای استاندارد libavcodec زیر پشتیبانی میکند:
- b
- تنظیم نرخ بیت هدف بر حسب بیت بر ثانیه. به طور پیشفرض از حالت نرخ بیت متغیر استفاده خواهد کرد. اگر maxrate و minrate نیز بر روی مقدار یکسانی تنظیم شوند، از حالت نرخ بیت ثابت استفاده میکند، در غیر این صورت اگر crf نیز تنظیم شده باشد از حالت کیفیت مقید استفاده مینماید.
- g keyint_min
- تنظیم محل قرارگیری فریمهای کلیدی. اندازه GOP حداکثر فاصله بین فریمهای کلیدی را تعیین میکند؛ اگر صفر باشد استریم خروجی فقط شامل فریمهای درونتصویری (Intra-only) خواهد بود. حداقل فاصله نادیده گرفته میشود مگر اینکه با اندازه GOP یکسان باشد که در این صورت فریمهای کلیدی همیشه در فواصل ثابتی ظاهر میشوند. به طور پیشفرض تنظیم نشده است، بنابراین بدون این گزینه کتابخانه برای تعیین محل قرارگیری فریمهای کلیدی کاملاً آزاد است.
- qmin qmax
- تنظیم مقادیر حداقل/حداکثر کوانتیزاسیون. محدوده معتبر از 0 تا 63 است (هشدار: این مقدار با مقادیر کوانتیایزر که در عمل توسط AV1 استفاده میشود مطابقت ندارد - برای نگاشت مقادیر واقعی کوانتیایزر به این محدوده آن را بر چهار تقسیم کنید). پیشفرض بر روی min/max (بدون قید) است.
- minrate maxrate bufsize rc_init_occupancy
- تنظیم پارامترهای بافرینگ کنترل نرخ. در صورت عدم تنظیم استفاده نمیشود - پیشفرض بر روی نرخ بیت متغیر بدون قید است.
- threads
- تنظیم تعداد نخهای پردازشی برای استفاده در حین انکود. این ممکن است نیازمند تنظیم گزینههای tiles یا row-mt باشد تا از تعداد نخهای مشخصشده به طور کامل استفاده شود. پیشفرض برابر با تعداد نخهای سختافزاری پشتیبانیشده توسط سیستم میزبان است.
- profile
- تنظیم پروفایل انکودینگ. پیشفرض استفاده از پروفایلی است که با عمق بیت و زیرنمونهبرداری رنگی (Chroma subsampling) ورودی مطابقت دارد.
این پوشش همچنین دارای برخی گزینههای اختصاصی است:
- cpu-used
- تنظیم مصالحه بین کیفیت و سرعت انکود. محدوده معتبر از 0 تا 8 است؛ اعداد بالاتر نشاندهنده سرعت بیشتر و کیفیت پایینتر هستند. مقدار پیشفرض 1 است که کند و باکیفیت بالا خواهد بود.
- auto-alt-ref
- فعالسازی استفاده از فریمهای مرجع متناوب. پیشفرض به تنظیم داخلی کتابخانه برمیگردد.
- arnr-max-frames (frames)
- تنظیم حداکثر تعداد فریمهای کاهش نویز altref. مقدار پیشفرض -1 است.
- arnr-strength (strength)
- تنظیم شدت فیلتر کاهش نویز altref. محدوده از -1 تا 6 است. مقدار پیشفرض -1 است.
- aq-mode (aq-mode)
- تنظیم حالت کوانتیزاسیون تطبیقی. مقادیر ممکن:
- none (0)
- غیرفعال.
- variance (1)
- مبتنی بر واریانس.
- complexity (2)
- مبتنی بر پیچیدگی.
- cyclic (3)
- تازهسازی چرخهای.
- tune (tune)
- تنظیم معیار اعوجاجی که انکودر بر اساس آن بهینهسازی (Tune) میشود. پیشفرض "psnr" است.
- psnr (0)
- ssim (1)
- lag-in-frames
- تنظیم حداکثر تعداد فریمهایی که انکودر میتواند در هر لحظه جهت پیشنگری در جریان نگه دارد. پیشفرض به تنظیم داخلی کتابخانه بازمیگردد.
- error-resilience
- فعالسازی ویژگیهای تابآوری در برابر خطا:
- default
- بهبود تابآوری در برابر از دست رفتن کل فریمها.
به طور پیشفرض فعال نیست.
- crf
- تنظیم مصالحه بین کیفیت و اندازه برای حالتهای کیفیت ثابت (بدون نرخ بیت هدف) و کیفیت مقید (با سقف نرخ بیت هدف). محدوده معتبر 0 تا 63 است؛ اعداد بالاتر نشاندهنده کیفیت پایینتر و حجم خروجی کوچکتر هستند. تنها در صورت تنظیم شدن استفاده میشود؛ به صورت پیشفرض تنها نرخ بیت هدف به کار میرود.
- static-thresh
- تنظیم آستانه تغییر روی بلوکها که پایینتر از آن، بلوکها توسط انکودر نادیده گرفته میشوند. بر حسب واحدهای دلخواه به صورت یک عدد صحیح غیرمنفی تعریف میشود و پیشفرض صفر است (هیچ بلوکی نادیده گرفته نمیشود).
- drop-threshold
- تنظیم آستانه برای انداختن فریمها در زمان نزدیکی به محدودههای کنترل نرخ. به صورت درصدی از بافر هدف تعریف میشود - زمانی که بافر کنترل نرخ به زیر این درصد سقوط کند، فریمها انداخته میشوند تا زمانی که بافر به بالای آستانه پر شود. مقدار پیشفرض صفر است (هیچ فریمی انداخته نمیشود).
- denoise-noise-level (level)
- میزان نویزی که باید برای سنتز گرین فیلم حذف شود. اگر این گزینه تنظیم نشود یا برابر با 0 باشد، سنتز گرین غیرفعال است.
- denoise-block-size (pixels)
- اندازه بلوک مورد استفاده جهت کاهش نویز برای سنتز گرین فیلم. در صورت عدم تنظیم، کدک AV1 از مقدار پیشفرض 32 استفاده میکند.
- undershoot-pct (pct)
- تنظیم درصد کمتر از حد بودن نرخ دادهها (حداقل) نسبت به نرخ بیت هدف. محدوده از -1 تا 100 است. مقدار پیشفرض -1 است.
- overshoot-pct (pct)
- تنظیم درصد فراتر رفتن نرخ دادهها (حداکثر) نسبت به نرخ بیت هدف. محدوده از -1 تا 1000 است. مقدار پیشفرض -1 است.
- minsection-pct (pct)
- حداقل درصد تغییرات نرخ بیت GOP نسبت به نرخ بیت هدف. اگر minsection-pct تنظیم نشود، پوشش libaomenc آن را به این صورت محاسبه میکند: "(minrate * 100 / bitrate)". محدوده از -1 تا 100 است. پیشفرض -1 است (تنظیمنشده).
- maxsection-pct (pct)
- حداکثر درصد تغییرات نرخ بیت GOP نسبت به نرخ بیت هدف. اگر maxsection-pct تنظیم نشود، پوشش libaomenc آن را بدین صورت محاسبه مینماید: "(maxrate * 100 / bitrate)". محدوده از -1 تا 5000 است. پیشفرض -1 است (تنظیمنشده).
- frame-parallel (boolean)
- فعالسازی قابلیتهای رمزگشاییپذیری موازی فریمها. مقدار پیشفرض true است.
- tiles
- تنظیم تعداد تایلها برای انکود ویدیوی ورودی، به صورت ستون x سطر. مقادیر بزرگتر امکان موازیسازی بیشتری را در هر دو فرایند انکود و دیکود فراهم میسازند، اما ممکن است کارایی کدگذاری را کاهش دهند. پیشفرض به حداقل تعداد تایلهای مورد نیاز بر اساس اندازه ویدیوی ورودی برمیگردد (که برای ابعاد تا 4K و خود 4K برابر با 1x1، یعنی یک تایل منفرد است).
- tile-columns tile-rows
- تنظیم تعداد تایلها به صورت log2 از تعداد سطرها و ستونهای تایل. جهت سازگاری با libvpx/VP9 فراهم شده است.
- row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2)
- فعالسازی چندنخی مبتنی بر سطر. به طور پیشفرض غیرفعال است.
- enable-cdef (boolean)
- فعالسازی فیلتر بهبود جهتی مقید (CDEF). انکودر libaom-av1 فیلتر CDEF را به صورت پیشفرض فعال میکند.
- enable-restoration (boolean)
- فعالسازی فیلتر بازسازی حلقه (Loop Restoration Filter). برای libaom-av1 پیشفرض true است.
- enable-global-motion (boolean)
- فعالسازی استفاده از حرکت سراسری برای پیشبینی بلوک. مقدار پیشفرض true است.
- enable-intrabc (boolean)
- فعالسازی حالت کپی بلوک برای پیشبینی درونبلوکی. این حالت برای محتوای صفحه نمایشگر (Screen Content) سودمند است. مقدار پیشفرض true است.
- enable-rect-partitions (boolean) (Requires libaom >= v2.0.0)
- فعالسازی افرازهای مستطیلی. مقدار پیشفرض true است.
- enable-1to4-partitions (boolean) (Requires libaom >= v2.0.0)
- فعالسازی افرازهای ۱:۴/۴:۱. مقدار پیشفرض true است.
- enable-ab-partitions (boolean) (Requires libaom >= v2.0.0)
- فعالسازی افرازهای با شکل AB. مقدار پیشفرض true است.
- enable-angle-delta (boolean) (Requires libaom >= v2.0.0)
- فعالسازی پیشبینی درونی دلتای زاویه. مقدار پیشفرض true است.
- enable-cfl-intra (boolean) (Requires libaom >= v2.0.0)
- فعالسازی کروما پیشبینیشده از پیشبینی درونی لوما (CfL). مقدار پیشفرض true است.
- enable-filter-intra (boolean) (Requires libaom >= v2.0.0)
- فعالسازی پیشبینیکننده فیلتر درونی. مقدار پیشفرض true است.
- enable-intra-edge-filter (boolean) (Requires libaom >= v2.0.0)
- فعالسازی فیلتر لبه درونی. مقدار پیشفرض true است.
- enable-smooth-intra (boolean) (Requires libaom >= v2.0.0)
- فعالسازی حالت پیشبینی درونی هموار. مقدار پیشفرض true است.
- enable-paeth-intra (boolean) (Requires libaom >= v2.0.0)
- فعالسازی پیشبینیکننده پائت در پیشبینی درونی. مقدار پیشفرض true است.
- enable-palette (boolean) (Requires libaom >= v2.0.0)
- فعالسازی حالت پیشبینی پالت. مقدار پیشفرض true است.
- enable-flip-idtx (boolean) (Requires libaom >= v2.0.0)
- فعالسازی انواع تبدیل گسترشیافته، شامل FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST, IDTX, V_DCT, H_DCT, V_ADST, H_ADST, V_FLIPADST, H_FLIPADST. مقدار پیشفرض true است.
- enable-tx64 (boolean) (Requires libaom >= v2.0.0)
- فعالسازی تبدیل ۶۴ نقطهای (64-pt). مقدار پیشفرض true است.
- reduced-tx-type-set (boolean) (Requires libaom >= v2.0.0)
- استفاده از مجموعه کاهشیافته انواع تبدیل. مقدار پیشفرض false است.
- use-intra-dct-only (boolean) (Requires libaom >= v2.0.0)
- استفاده از DCT تنها برای حالتهای INTRA. مقدار پیشفرض false است.
- use-inter-dct-only (boolean) (Requires libaom >= v2.0.0)
- استفاده از DCT تنها برای حالتهای INTER. مقدار پیشفرض false است.
- use-intra-default-tx-only (boolean) (Requires libaom >= v2.0.0)
- استفاده از تبدیل پیشفرض تنها برای حالتهای INTRA. مقدار پیشفرض false است.
- enable-ref-frame-mvs (boolean) (Requires libaom >= v2.0.0)
- فعالسازی پیشبینی زمانی بردار حرکت. مقدار پیشفرض true است.
- enable-reduced-reference-set (boolean) (Requires libaom >= v2.0.0)
- استفاده از مجموعه کاهشیافته مراجع تکی و ترکیبی. مقدار پیشفرض false است.
- enable-obmc (boolean) (Requires libaom >= v2.0.0)
- فعالسازی جبران حرکت بلوک همپوشان (OBMC). مقدار پیشفرض true است.
- enable-dual-filter (boolean) (Requires libaom >= v2.0.0)
- فعالسازی فیلتر دوگانه. مقدار پیشفرض true است.
- enable-diff-wtd-comp (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب با وزن تفاضلی. مقدار پیشفرض true است.
- enable-dist-wtd-comp (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب با وزن فاصلهای. مقدار پیشفرض true است.
- enable-onesided-comp (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب یکطرفه. مقدار پیشفرض true است.
- enable-interinter-wedge (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب گُوهای بین-فریمی. مقدار پیشفرض true است.
- enable-interintra-wedge (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب گُوهای درون-بین فریمی. مقدار پیشفرض true است.
- enable-masked-comp (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب ماسکدار. مقدار پیشفرض true است.
- enable-interintra-comp (boolean) (Requires libaom >= v2.0.0)
- فعالسازی ترکیب درون-بین فریمی. مقدار پیشفرض true است.
- enable-smooth-interintra (boolean) (Requires libaom >= v2.0.0)
- فعالسازی حالت درون-بین فریمی هموار. مقدار پیشفرض true است.
- aom-params
- تنظیم
گزینههای
libaom با
استفاده از
فهرستی از
جفتهای
key=value جداشده
با ":". برای
مشاهده
فهرستی از
گزینههای
پشتیبانیشده،
به بخش "AV1 Specific Options"
در دستور aomenc
--help مراجعه
کنید.
برای مثال جهت تعیین گزینههای انکود libaom با -aom-params:
ffmpeg -i input -c:v libaom-av1 -b:v 500K -aom-params tune=psnr:enable-tpl-model=1 output.mp4
liboapv
پوششدهنده انکودر کدک ویدیویی پیشرفته حرفهای (Advanced Professional Video).
این انکودر نیازمند حضور سرآیندها و کتابخانه liboapv در زمان پیکربندی است. باید ساخت را صراحتاً با --enable-liboapv پیکربندی کنید.
وبسایت پروژه apv در https://github.com/AcademySoftwareFoundation/openapv قرار دارد.
گزینهها (Options)
گزینههای زیر توسط پوششدهنده liboapv پشتیبانی میشوند.
- preset
- تنظیم موازنه میان کیفیت و سرعت [fastest, fast, medium, slow, placebo, default]
- qp
- تنظیم مقدار پارامتر کوانتیزاسیون برای حالت کنترل نرخ CQP.
- oapv-params (parse_apv_params)
- تنظیم گزینههای liboapvenc با استفاده از فهرستی از جفتهای key=value که با «:» از هم جدا شدهاند. برای مشاهده فهرست پارامترهای پذیرفتهشده، به راهنمای کاربری انکودر liboapv مراجعه کنید.
libsvtav1
پوششدهنده انکودر SVT-AV1.
نیازمند حضور سرآیندها و کتابخانه SVT-AV1 در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libsvtav1" پیکربندی کنید.
گزینهها (Options)
- profile
- تنظیم پروفایل انکود.
- level
- تنظیم سطح نقطه عملکرد (operating point level). برای نمونه: '4.0'
- hielevel
- تنظیم سطوح پیشبینی سلسلهمراتبی.
- 3level
- 4level
- این مقدار پیشفرض است.
- tier
- تنظیم رده نقطه عملکرد (operating point tier).
- qmax
- تنظیم حداکثر کوانتیایزر مورد استفاده هنگام استفاده از یک حالت نرخ بیت.
- qmin
- تنظیم حداقل کوانتیایزر مورد استفاده هنگام استفاده از یک حالت نرخ بیت.
- crf
- مقدار فاکتور نرخ ثابت مورد استفاده در حالت کنترل نرخ crf (از 0 تا 63).
- qp
- تنظیم کوانتیایزر مورد استفاده در حالت کنترل نرخ cqp (از 0 تا 63).
- sc_detection
- فعالسازی تشخیص تغییر صحنه.
- la_depth
- تنظیم تعداد فریمها برای نگاه به جلو (0-120).
- preset
- تنظیم موازنه میان کیفیت و سرعت در بازه 0 تا 13. مقادیر بالاتر سریعتر اما با کیفیت پایینتر هستند.
- tile_rows
- تنظیم log2 تعداد سطرهای کاشیها برای استفاده (0-6).
- tile_columns
- تنظیم log2 تعداد ستونهای کاشیها برای استفاده (0-4).
- svtav1-params
- تنظیم گزینههای SVT-AV1 با استفاده از فهرستی از جفتهای key=value که با «:» از هم جدا شدهاند. برای مشاهده فهرست پارامترهای پذیرفتهشده، به راهنمای کاربری انکودر SVT-AV1 مراجعه کنید.
libsvtjpegxs
پوششدهنده انکودر SVT-JPEG-XS.
نیازمند حضور سرآیندها و کتابخانه SVT-JPEG-XS در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libsvtjpegxs" پیکربندی کنید.
گزینهها (Options)
- decomp_v
- تنظیم سطح تجزیه عمودی
- decomp_h
- تنظیم سطح تجزیه افقی
- quantization
- تنظیم الگوریتم کوانتیزاسیون.
- coding-signs
- فعالسازی راهبرد مدیریت نشانهها
- coding-sigf
- فعالسازی کدگذاری اهمیت
- coding-vpred
- فعالسازی کدگذاری پیشبینی عمودی
libjxl
پوششدهنده انکودر JPEG XL کتابخانه libjxl.
نیازمند حضور سرآیندها و کتابخانه libjxl در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libjxl" پیکربندی کنید.
گزینهها (Options)
پوششدهنده libjxl از گزینههای زیر پشتیبانی میکند:
- distance
- تنظیم فاصله هدف Butteraugli. این یک تنظیم کیفیت است: فاصله کمتر کیفیت بالاتری ارائه میدهد، بهطوری که distance=1.0 تقریباً با کیفیت ۹۰ در libjpeg برای محتوای عکاسی قابل مقایسه است. تنظیم distance=0.0 انکود کاملاً بدوناتلاف را ارائه میدهد. مقادیر معتبر بین 0.0 و 15.0 هستند و مقادیر معقول بهندرت از 5.0 فراتر میروند. تنظیم distance=0.1 معمولاً برای بیشتر ورودیها شفافیت بصری فراهم میکند. مقدار پیشفرض 1.0 است.
- effort
- تنظیم میزان تلاش (effort) انکود مورد استفاده. مقادیر بالاتر تلاش کیفیت یکدستتری تولید کرده و معمولاً منحنی کیفیت بر بیت در هر پیکسل (quality/bpp) بهتری را به بهای زمان بیشتر پردازنده فراهم میسازند. مقادیر معتبر از 1 تا 9 بوده و مقدار پیشفرض 7 است.
- modular
- اجبار انکودر به استفاده از حالت چندبخشی (Modular) بهجای انتخاب خودکار. حالت پیشفرض استفاده از VarDCT برای انکود بااتلاف و Modular برای بدوناتلاف است. VarDCT عموماً برای انکود بااتلاف نسبت به Modular برتری دارد اما از انکود بدوناتلاف پشتیبانی نمیکند.
libkvazaar
انکودر Kvazaar H.265/HEVC.
نیازمند حضور سرآیندها و کتابخانه libkvazaar در زمان پیکربندی است. باید ساخت را صراحتاً با --enable-libkvazaar پیکربندی کنید.
گزینهها (Options)
- b
- تنظیم نرخ بیت ویدیوی هدف به بیت بر ثانیه و فعالسازی کنترل نرخ.
- kvazaar-params
- تنظیم پارامترهای kvazaar بهصورت فهرستی از جفتهای name=value که با ویرگول (,) از هم جدا شدهاند. برای مشاهده فهرست گزینهها، به مستندات kvazaar مراجعه کنید.
libopenh264
پوششدهنده انکودر Cisco libopenh264 H.264/MPEG-4 AVC.
این انکودر نیازمند حضور سرآیندها و کتابخانه libopenh264 در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libopenh264" پیکربندی کنید. کتابخانه با استفاده از pkg-config شناسایی میشود.
برای اطلاعات بیشتر درباره کتابخانه به http://www.openh264.org مراجعه کنید.
گزینهها (Options)
گزینههای سراسری FFmpeg زیر بر پیکربندیهای انکودر libopenh264 تأثیر میگذارند.
- b
- تنظیم نرخ بیت (بهصورت تعداد بیت بر ثانیه).
- g
- تنظیم اندازه GOP.
- maxrate
- تنظیم حداکثر نرخ بیت (بهصورت تعداد بیت بر ثانیه).
- flags +global_header
- تنظیم سرایند سراسری در جریان بیتی.
- slices
- تنظیم تعداد برشها (slices)، مورد استفاده در انکود موازیسازیشده. مقدار پیشفرض 0 است. این گزینه تنها زمانی استفاده میشود که slice_mode روی fixed تنظیم شده باشد.
- loopfilter
- فعالسازی فیلتر حلقه (loop filter)، در صورت تنظیم روی 1 (بهطور خودکار فعال است). برای غیرفعالسازی مقدار را روی 0 تنظیم کنید.
- profile
- تنظیم محدودیتهای پروفایل. در صورت تنظیم روی مقدار main، حالت CABAC فعال میشود (تنظیم فلگ "SEncParamExt.iEntropyCodingModeFlag" روی 1).
- max_nal_size
- تنظیم حداکثر اندازه NAL به بایت.
- allow_skip_frames
- اجازه پرش از فریمها برای رسیدن به نرخ بیت هدف در صورت تنظیم روی 1.
libtheora
پوششدهنده انکودر libtheora Theora.
نیازمند حضور سرآیندها و کتابخانه libtheora در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libtheora" پیکربندی کنید.
برای اطلاعات بیشتر درباره پروژه libtheora به http://www.theora.org مراجعه کنید.
گزینهها (Options)
گزینههای سراسری زیر به گزینههای داخلی libtheora نگاشت میشوند که بر کیفیت و نرخ بیت استریم انکودشده تأثیر میگذارند.
- b
- تنظیم نرخ بیت ویدیو به بیت بر ثانیه برای حالت CBR (نرخ بیت ثابت). در صورتی که حالت VBR (نرخ بیت متغیر) فعال باشد این گزینه نادیده گرفته میشود.
- flags
- برای فعالسازی انکود با حالت کیفیت ثابت (VBR) از طریق فلگ qscale، و همچنین فعالسازی حالتهای "pass1" و "pass2" استفاده میشود.
- g
- تنظیم اندازه GOP.
- global_quality
- تنظیم
کیفیت
سراسری
بهصورت یک
عدد صحیح در
واحدهای
لاندا (lambda units).
تنها زمانی مرتبط است که حالت VBR با "flags +qscale" فعال شده باشد. این مقدار با تقسیم بر "FF_QP2LAMBDA" به واحدهای QP تبدیل شده، در بازه [0 - 10] محدود میشود، و سپس در 6.3 ضرب میگردد تا مقداری در بازه بومی libtheora یعنی [0-63] به دست آید. مقدار بالاتر با کیفیت بالاتری متناظر است.
- q
- فعالسازی
حالت VBR در
صورت تنظیم
روی یک
مقدار
غیرمنفی، و
تنظیم
مقدار
کیفیت ثابت
بهصورت یک
مقدار ممیز
شناور با
دقت مضاعف
در واحدهای
QP.
این مقدار در بازه [0-10] محدود شده و سپس در 6.3 ضرب میشود تا مقداری در بازه بومی libtheora یعنی [0-63] به دست آید.
این گزینه تنها هنگام استفاده از ابزار خط فرمان ffmpeg معتبر است. برای کاربران رابط برنامهنویسی کتابخانه، از global_quality استفاده کنید.
نمونهها (Examples)
- تنظیم
انکود با
حداکثر
کیفیت ثابت
(VBR) با ffmpeg:
ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
- استفاده از
ffmpeg برای
تبدیل یک
استریم
ویدیویی Theora
با CBR 1000 kbps:
ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
libvpx
پشتیبانی از فرمتهای VP8/VP9 از طریق libvpx.
نیازمند حضور سرآیندها و کتابخانه libvpx در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libvpx" پیکربندی کنید.
گزینهها (Options)
گزینههای زیر توسط پوششدهنده libvpx پشتیبانی میشوند. گزینهها یا مقادیر معادل در vpxenc درون پرانتز برای مهاجرت آسانتر فهرست شدهاند.
برای کاهش تکرار در مستندات، تنها گزینههای اختصاصی و برخی گزینههای دیگر که نیازمند توجه ویژه هستند در اینجا مستند شدهاند. برای مشاهده مستندات گزینههای عمومی مستندنشده، به فصل گزینههای کدک (Codec Options) مراجعه کنید.
برای دریافت مستندات بیشتر درباره گزینههای libvpx، دستور ffmpeg -h encoder=libvpx، ffmpeg -h encoder=libvpx-vp9 یا vpxenc --help را اجرا کنید. اطلاعات بیشتر در مستندات رابط برنامهنویسی (API) کتابخانه libvpx در دسترس است.
- b (target-bitrate)
- تنظیم نرخ بیت به بیت بر ثانیه. توجه داشته باشید که گزینه b در FFmpeg بر حسب بیت بر ثانیه بیان میشود، در حالی که target-bitrate در vpxenc بر حسب کیلوبیت بر ثانیه است.
- g (kf-max-dist)
- keyint_min (kf-min-dist)
- qmin (min-q)
- حداقل کوانتیایزر (بهترین کیفیت).
- qmax (max-q)
- حداکثر کوانتیایزر (بدترین کیفیت). میتواند بهازای هر فریم تغییر کند.
- bufsize (buf-sz, buf-optimal-sz)
- تنظیم اندازه بافر کنترل نرخ (به بیت). توجه داشته باشید که گزینههای vpxenc بر حسب میلیثانیه مشخص میشوند؛ پوششدهنده libvpx این مقدار را به این صورت تبدیل میکند: "buf-sz = bufsize * 1000 / bitrate"، "buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6".
- rc_init_occupancy (buf-initial-sz)
- تنظیم تعداد بیتهایی که باید پیش از آغاز دیکود در بافر rc بارگذاری شوند. توجه داشته باشید که گزینه vpxenc بر حسب میلیثانیه مشخص میشود؛ پوششدهنده libvpx این مقدار را به این صورت تبدیل میکند: "rc_init_occupancy * 1000 / bitrate".
- undershoot-pct
- تنظیم درصد حداقل کاهش نرخ داده (undershoot) نسبت به نرخ بیت هدف.
- overshoot-pct
- تنظیم درصد حداکثر افزایش نرخ داده (overshoot) نسبت به نرخ بیت هدف.
- skip_threshold (drop-frame)
- qcomp (bias-pct)
- maxrate (maxsection-pct)
- تنظیم حداکثر نرخ بیت GOP به بیت بر ثانیه. توجه داشته باشید که گزینه vpxenc بهصورت درصدی از نرخ بیت هدف مشخص میشود؛ پوششدهنده libvpx این مقدار را به این صورت تبدیل میکند: "(maxrate * 100 / bitrate)".
- minrate (minsection-pct)
- تنظیم حداقل نرخ بیت GOP به بیت بر ثانیه. توجه داشته باشید که گزینه vpxenc بهصورت درصدی از نرخ بیت هدف مشخص میشود؛ پوششدهنده libvpx این مقدار را به این صورت تبدیل میکند: "(minrate * 100 / bitrate)".
- minrate, maxrate, b end-usage=cbr
- "(minrate == maxrate == bitrate)".
- crf (end-usage=cq, cq-level)
- tune (tune)
- psnr (psnr)
- ssim (ssim)
- best
- استفاده از ضربالاجل بهترین کیفیت. نامگذاری نامناسبی دارد و بسیار کند است؛ از این گزینه باید اجتناب شود زیرا ممکن است خروجی با کیفیتی بدتر از good ارائه دهد.
- good
- استفاده از ضربالاجل کیفیت خوب. این موازنه مناسبی میان سرعت و کیفیت هنگام استفاده همراه با گزینه cpu-used است.
- realtime
- استفاده از ضربالاجل کیفیت بلادرنگ (realtime).
- speed, cpu-used (cpu-used)
- تنظیم اصلاحکننده نسبت کیفیت/سرعت. مقادیر بالاتر انکود را به بهای کیفیت تسریع میکنند.
- nr (noise-sensitivity)
- static-thresh
- تنظیم آستانه تغییرات در بلوکها که کمتر از آن توسط انکودر نادیده گرفته (skip) میشوند.
- slices (token-parts)
- توجه داشته باشید که گزینه slices در FFmpeg تعداد کل پارتیشنها را مشخص میکند، در حالی که token-parts در vpxenc بهصورت log2(partitions) ارائه میشود.
- max-intra-rate
- تنظیم حداکثر نرخ بیت فریم I بهصورت درصدی از نرخ بیت هدف. مقدار 0 به معنای نامحدود است.
- force_key_frames
- "VPX_EFLAG_FORCE_KF"
- Alternate reference frame related
- auto-alt-ref
- فعالسازی استفاده از فریمهای مرجع جایگزین (تنها در دو مرحلهای 2-pass). مقادیر بزرگتر از ۱ فریمهای مرجع جایگزین چندلایهای را فعال میکنند (فقط VP9).
- arnr-maxframes
- تنظیم حداکثر تعداد فریمهای کاهش نویز altref.
- arnr-type
- تنظیم نوع فیلتر کاهش نویز altref: backward، forward، centered.
- arnr-strength
- تنظیم شدت فیلتر کاهش نویز altref.
- rc-lookahead, lag-in-frames (lag-in-frames)
- تنظیم تعداد فریمها برای نگاه به جلو جهت تعیین نوع فریم و کنترل نرخ.
- min-gf-interval
- تنظیم حداقل فاصله فریم مرجع طلایی/جایگزین (فقط VP9).
- error-resilient
- فعالسازی ویژگیهای پایداری در برابر خطا (error resiliency).
- افزایش وضوح و تیزی تصویر (sharpness) به بهای کاهش PSNR. بازه معتبر [0, 7] است.
- ts-parameters
- تنظیم
پیکربندی
مقیاسپذیری
زمانی با
استفاده از
فهرستی از
جفتهای key=value
جداشده با
«:». برای
نمونه، جهت
تعیین
پارامترهای
مقیاسپذیری
زمانی با
"ffmpeg":
ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\ ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\ ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT
در زیر توضیح مختصری از هر یک از پارامترها آمده است؛ لطفاً برای جزئیات بیشتر به "struct vpx_codec_enc_cfg" در "vpx/vpx_encoder.h" مراجعه کنید.
- ts_number_layers
- تعداد لایههای کدگذاری زمانی.
- ts_target_bitrate
- نرخ بیت هدف برای هر لایه زمانی (به کیلوبیت بر ثانیه). (نرخ بیت باید شامل لایه زمانی پایینتر نیز باشد).
- ts_rate_decimator
- ضریب کاهش نرخ فریم برای هر لایه زمانی.
- ts_periodicity
- طول توالی تعیینکننده عضویت لایه زمانی فریمها.
- ts_layer_id
- الگوی مشخصکننده عضویت فریمها در لایههای زمانی.
- ts_layering_mode
- (اختیاری) انتخاب ساختار زمانی از میان مجموعهای از حالتهای لایهبندی زمانی از پیش تعریفشده. در حال حاضر از گزینههای زیر پشتیبانی میکند.
- 0
- هیچ فلگ لایهبندی زمانی بهطور داخلی ارائه نمیشود، متکی بر فلگهایی است که با استفاده از فیلد "metadata" در "AVFrame" با کلیدهای زیر منتقل میشوند.
- vp8-flags
- تنظیم فلگهای ارسالی به انکودر برای نشان دادن طرح ارجاعدهی برای فریم فعلی. برای جزئیات بیشتر به تابع "vpx_codec_encode" در "vpx/vpx_encoder.h" مراجعه کنید.
- temporal_id
- شناسه زمانی فریم فعلی برای انکود را بهصراحت مشخص میکند.
- 2
- دو لایه زمانی. 0-1...
- 3
- سه لایه زمانی. 0-2-1-2...؛ با یک فریم مرجع منفرد.
- 4
- مشابه گزینه "3"، به جز اینکه وابستگی میان دو فریم لایه زمانی ۲ در طول دوره زمانی وجود دارد.
- screen-content-mode
- حالت محتوای صفحه نمایش، یکی از: 0 (خاموش)، 1 (صفحه نمایش)، 2 (صفحه نمایش با کنترل نرخ تهاجمیتر).
- lossless
- فعالسازی حالت بدوناتلاف.
- tile-columns
- تنظیم تعداد ستونهای کاشی برای استفاده. توجه داشته باشید که این مقدار بهصورت log2(tile_columns) ارائه میشود. برای نمونه، ۸ ستون کاشی با تنظیم گزینه tile-columns روی ۳ درخواست میشود.
- tile-rows
- تنظیم تعداد سطرهای کاشی برای استفاده. توجه داشته باشید که این مقدار بهصورت log2(tile_rows) ارائه میشود. برای نمونه، ۴ سطر کاشی با تنظیم گزینه tile-rows روی ۲ درخواست میشود.
- frame-parallel
- فعالسازی قابلیتهای دیکودپذیری موازی فریم.
- aq-mode
- تنظیم حالت کوانتیزاسیون تطبیقی (0: خاموش (پیشفرض)، 1: واریانس، 2: پیچیدگی، 3: نوسازی چرخهای cyclic refresh، 4: equator360).
- colorspace color-space
- تنظیم فضای رنگ ورودی. جریان بیتی VP9 از سیگنالدهی فضاهای رنگ زیر پشتیبانی میکند:
- row-mt boolean
- فعالسازی چندنخی مبتنی بر سطر.
- tune-content
- تنظیم نوع محتوا: پیشفرض (0)، صفحه نمایش (1)، فیلم (2).
- corpus-complexity
- حالت Corpus VBR
گونهای از
VBR
استاندارد
است که در
آن نقطه
میانی
توزیع
پیچیدگی
بهجای
محاسبه
برای یک
کلیپ یا
چانک خاص،
مستقیماً
وارد
میشود.
بازه معتبر [0, 10000] است. مقدار 0 (پیشفرض) از VBR استاندارد استفاده میکند.
- enable-tpl boolean
- فعالسازی مدل وابستگی زمانی.
- ref-frame-config
- با استفاده
از
متادیتای
بهازای هر
فریم،
اعضای
ساختار
"vpx_svc_ref_frame_config_t"
در "vpx/vp8cx.h"
را برای
کنترل دقیق
طرحهای
ارجاعدهی
و مدیریت
بافر فریم
تنظیم کنید.
از فهرستی
از جفتهای
key=value جداشده
با «:»
استفاده
کنید. برای
نمونه،
av_dict_set(&av_frame->metadata, "ref-frame-config", \ "rfc_update_buffer_slot=7:rfc_lst_fb_idx=0:rfc_gld_fb_idx=1:rfc_alt_fb_idx=2:rfc_reference_last=0:rfc_reference_golden=0:rfc_reference_alt_ref=0");
- rfc_update_buffer_slot
- شماره اسلات بافر را برای بهروزرسانی مشخص میکند
- rfc_update_last
- مشخص میکند که آیا فریم LAST بهروزرسانی شود یا خیر
- rfc_update_golden
- مشخص میکند که آیا فریم GOLDEN بهروزرسانی شود یا خیر
- rfc_update_alt_ref
- مشخص میکند که آیا فریم ALT_REF بهروزرسانی شود یا خیر
- rfc_lst_fb_idx
- شاخص بافر فریم LAST
- rfc_gld_fb_idx
- شاخص بافر فریم GOLDEN
- rfc_alt_fb_idx
- شاخص بافر فریم ALT_REF
- rfc_reference_last
- مشخص میکند که آیا به فریم LAST ارجاع داده شود یا خیر
- rfc_reference_golden
- مشخص میکند که آیا به فریم GOLDEN ارجاع داده شود یا خیر
- rfc_reference_alt_ref
- مشخص میکند که آیا به فریم ALT_REF ارجاع داده شود یا خیر
- rfc_reference_duration
- مدت زمان فریم را مشخص میکند
برای اطلاعات بیشتر درباره libvpx به این نشانی مراجعه کنید: http://www.webmproject.org
libvvenc
پوششدهنده انکودر VVenC H.266/VVC.
این انکودر نیازمند حضور سرآیندها و کتابخانه libvvenc در زمان پیکربندی است. باید ساخت را صراحتاً با --enable-libvvenc پیکربندی کنید.
وبسایت پروژه VVenC در https://github.com/fraunhoferhhi/vvenc قرار دارد.
فرمتهای پیکسل پشتیبانیشده (Supported Pixel Formats)
کتابخانه VVenC تنها از فضاهای رنگی ۱۰ بیتی بهعنوان ورودی پشتیبانی میکند. اما عمق بیتی داخلی (انکودشده) میتواند در زمان اجرا روی ۸ بیتی یا ۱۰ بیتی تنظیم شود.
گزینهها (Options)
- b
- تنظیم نرخ بیت ویدیوی هدف.
- g
- تنظیم اندازه GOP. در حال حاضر برای g=1 (فقط درونفریمی Intra only) یا مقدار پیشفرض پشتیبانی میشود.
- preset
- تنظیم پیشتنظیم VVenC.
- levelidc
- تنظیم level idc.
- tier
- تنظیم tier برای vvc.
- qp
- تنظیم پارامتر کوانتیزاسیون ثابت.
- subopt boolean
- تنظیم بهینهسازی ذهنی (مبتنی بر ادراک بصری). پیشفرض 1 (روشن) است.
- bitdepth8 boolean
- تنظیم حالت کدگذاری ۸ بیتی بهجای استفاده از ۱۰ بیتی. پیشفرض 0 (خاموش) است.
- period
- تنظیم دوره نوسازی درونفریمی (intra refresh) بر حسب ثانیه.
- vvenc-params
- تنظیم
گزینههای
vvenc با
استفاده از
فهرستی از
زوجهای
key=value که با
«:» از هم
جدا
شدهاند.
برای
مشاهده
فهرست
گزینهها،
vvencapp --fullhelp یا vvencFFapp --fullhelp
را ببینید.
برای نمونه، گزینهها میتوانند به این صورت ارائه شوند:
intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8
برای نمونه گزینههای انکود میتوانند با -vvenc-params ارائه شوند:
ffmpeg -i input -c:v libvvenc -b 1M -vvenc-params intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8 output.mp4
libwebp
پوششدهنده انکودر تصویر libwebp WebP
کتابخانه libwebp انکودر رسمی گوگل برای تصاویر WebP است. این کتابخانه میتواند در هر دو حالت بااتلاف (lossy) یا بدوناتلاف (lossless) انکود کند. تصاویر بااتلاف در اصل پوششی در اطراف یک فریم VP8 هستند. تصاویر بدوناتلاف یک کدک جداگانه توسعهیافته توسط گوگل میباشند.
فرمت پیکسل (Pixel Format)
در حال حاضر libwebp به دلیل محدودیتهای فرمت و libwebp، تنها از YUV420 برای حالت بااتلاف و RGB برای حالت بدوناتلاف پشتیبانی میکند. کانال آلفا برای هر دو حالت پشتیبانی میشود. به دلیل محدودیتهای API، اگر هنگام انکود بااتلاف فرمت RGB ارسال شود یا هنگام انکود بدوناتلاف فرمت YUV ارسال گردد، فرمت پیکسل بهطور خودکار با استفاده از توابع libwebp تبدیل خواهد شد. این حالت ایدهآل نیست و تنها برای راحتی کار انجام شده است.
گزینهها (Options)
- -lossless boolean
- فعال/غیرفعال کردن استفاده از حالت بدوناتلاف. پیشفرض 0 است.
- -compression_level integer
- برای بااتلاف، این موازنه کیفیت/سرعت است. مقادیر بالاتر کیفیت بهتری را برای یک اندازه مشخص به قیمت افزایش زمان انکود ارائه میدهند. برای بدوناتلاف، این موازنه اندازه/سرعت است. مقادیر بالاتر اندازه کوچکتری را به قیمت افزایش زمان انکود ارائه میدهند. بهطور خاصتر، تعداد الگوریتمهای اضافی و ابزارهای فشردهسازی مورد استفاده را کنترل کرده و ترکیب این ابزارها را تغییر میدهد. این گزینه به گزینه method در libwebp نگاشت میشود. بازه معتبر 0 تا 6 است. پیشفرض 4 است.
- -quality float
- برای انکود بااتلاف، این گزینه کیفیت تصویر را کنترل میکند. برای انکود بدوناتلاف، میزان تلاش و زمان صرفشده در فشردهسازی را کنترل میکند. بازه 0 تا 100 است. پیشفرض 75 است.
- -preset type
- پیشتنظیم پیکربندی. این گزینه برخی تنظیمات خودکار را بر اساس نوع کلی تصویر اعمال میکند.
libx264, libx264rgb
پوششدهنده انکودر x264 H.264/MPEG-4 AVC.
این انکودر نیازمند حضور سرآیندها و کتابخانه libx264 در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libx264" پیکربندی کنید.
کتابخانه libx264 از تعداد چشمگیری از ویژگیها پشتیبانی میکند، از جمله تبدیل مکانی تطبیقی 8x8 و 4x4، جایگذاری تطبیقی فریمهای B، کدگذاری آنتروپی CAVLC/CABAC، درهمبافی (MBAFF)، حالت بدوناتلاف، و بهینهسازیهای روانشناسی بصری (psy) برای حفظ جزئیات (کوانتیزاسیون تطبیقی، psy-RD، psy-trellis).
بسیاری از گزینههای انکودر libx264 به گزینههای سراسری کدک در FFmpeg نگاشت شدهاند، در حالی که گزینههای منحصربهفرد انکودر از طریق گزینههای اختصاصی ارائه میشوند. علاوه بر این، گزینههای اختصاصی x264opts و x264-params امکان ارسال فهرستی از چندتاییهای key=value پذیرفتهشده توسط تابع "x264_param_parse" در libx264 را فراهم میکنند.
وبسایت پروژه x264 در http://www.videolan.org/developers/x264.html قرار دارد.
انکودر libx264rgb همانند libx264 است، با این تفاوت که بهجای YUV، فرمتهای پیکسلی RGB بستهبندیشده (packed) را بهعنوان ورودی میپذیرد.
فرمتهای پیکسل پشتیبانیشده (Supported Pixel Formats)
کتابخانه x264 از فضاهای رنگی ۸ تا ۱۰ بیتی پشتیبانی میکند. عمق بیت دقیق در زمان پیکربندی x264 کنترل میشود.
گزینهها (Options)
گزینههای زیر توسط پوششدهنده libx264 پشتیبانی میشوند. گزینهها یا مقادیر معادل در x264 درون پرانتز برای مهاجرت آسانتر فهرست شدهاند.
برای کاهش تکرار در مستندات، تنها گزینههای اختصاصی و برخی گزینههای دیگر که نیازمند توجه ویژه هستند در اینجا مستند شدهاند. برای مشاهده مستندات گزینههای عمومی مستندنشده، به فصل گزینههای کدک (Codec Options) مراجعه کنید.
برای دریافت مستندات دقیقتر و جامعتر درباره گزینههای libx264، دستور x264 --fullhelp را اجرا کنید یا به مستندات libx264 مراجعه نمایید.
در فهرست زیر، توجه داشته باشید که نام گزینه در x264 در صورت وجود نگاشت مستقیم، درون پرانتز پس از نام متناظر در libavcodec نشان داده شده است.
- b (bitrate)
- تنظیم نرخ بیت به بیت بر ثانیه. توجه داشته باشید که گزینه b در FFmpeg بر حسب بیت بر ثانیه بیان میشود، در حالی که bitrate در x264 بر حسب کیلوبیت بر ثانیه است.
- bf (bframes)
- تعداد فریمهای B میان فریمهای I و P
- g (keyint)
- حداکثر اندازه GOP
- qmin (qpmin)
- حداقل مقیاس کوانتیایزر
- qmax (qpmax)
- حداکثر مقیاس کوانتیایزر
- qdiff (qpstep)
- حداکثر تفاوت میان مقیاسهای کوانتیایزر
- qblur (qblur)
- تاری منحنی کوانتیایزر
- qcomp (qcomp)
- ضریب فشردهسازی منحنی کوانتیایزر
- refs (ref)
- تعداد فریمهای مرجع که هر فریم P میتواند استفاده کند. بازه 0-16 است.
- level (level)
- تنظیم
مقدار
"x264_param_t.i_level_idc"
در صورتی که
مقدار مثبت
باشد؛ در
غیر این
صورت
نادیده
گرفته
میشود.
این مقدار میتواند با استفاده از API ساختار "AVCodecContext" تنظیم شود (مثلاً با تنظیم مستقیم مقدار "AVCodecContext")، و بهصورت یک عدد صحیح نگاشتشده روی سطح متناظر مشخص میشود (مثلاً مقدار 31 به سطح IDC «3.1» در H.264 نگاشت میشود، همانطور که در جدول "x264_levels" تعریف شده است). در صورت تنظیم روی یک مقدار غیرمثبت نادیده گرفته میشود.
بهعنوان روش جایگزین، میتواند بهعنوان یک گزینه اختصاصی تنظیم شود که مقدار تنظیمشده در "AVCodecContext" را بازنویسی میکند، و در این حالت باید بهصورت شناسه سطح IDC (مانند «3.1»)، همانطور که در پیوست A استاندارد H.264 تعریف شده، مشخص شود.
- sc_threshold (scenecut)
- تنظیم آستانه برای تشخیص تغییر صحنه.
- trellis (trellis)
- انجام کوانتیزاسیون Trellis برای افزایش بهرهوری. بهطور پیشفرض فعال است.
- nr (nr)
- کاهش نویز
- me_range (merange)
- حداکثر برد جستجوی حرکت به پیکسل.
- me_method (me)
- تنظیم روش تخمین حرکت. مقادیر ممکن به ترتیب نزولی سرعت:
- dia (dia)
- epzs (dia)
- جستجوی لوزی با شعاع ۱ (سریعترین). epzs یک نام مستعار برای dia است.
- hex (hex)
- جستجوی ششضلعی با شعاع ۲.
- umh (umh)
- جستجوی نامتقارن چندششضلعی.
- esa (esa)
- جستجوی جامع.
- tesa (tesa)
- جستجوی جامع هادامارد (کندترین).
- forced-idr
- معمولاً هنگام اجبار نوع فریم I، انکودر میتواند هر نوع فریم I را انتخاب کند. این گزینه آن را مجبور به انتخاب یک فریم IDR میکند.
- subq (subme)
- روش تخمین حرکت در سطح زیرپیکسل.
- b_strategy (b-adapt)
- الگوریتم تصمیمگیری جایگذاری تطبیقی فریمهای B. تنها در مرحله اول (first-pass) استفاده شود.
- keyint_min (min-keyint)
- حداقل اندازه GOP.
- coder
- تنظیم انکودر آنتروپی. مقادیر ممکن:
- cmp
- تنظیم الگوریتم مقایسه تخمین حرکت در سطح پیکسل کامل. مقادیر ممکن:
- threads (threads)
- تعداد نخهای انکود.
- thread_type
- تنظیم روش چندنخی. مقادیر ممکن:
- flags
- تنظیم فلگهای انکود. میتواند برای غیرفعال کردن GOP بسته و فعالسازی GOP باز با تنظیم آن روی "-cgop" استفاده شود. نتیجه مشابه رفتار گزینه --open-gop در x264 است.
- rc_init_occupancy (vbv-init)
- اشغال اولیه بافر VBV
- preset (preset)
- تنظیم پیشتنظیم انکود.
- tune (tune)
- تنظیم کوک پارامترهای انکود.
- profile (profile)
- تنظیم محدودیتهای پروفایل.
- fastfirstpass
- فعالسازی تنظیمات سریع هنگام انکود مرحله اول، در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه --slow-firstpass در x264 دارد.
- crf (crf)
- تنظیم کیفیت برای حالت کیفیت ثابت.
- crf_max (crf-max)
- در حالت CRF، از کاهش کیفیت توسط VBV فراتر از این نقطه جلوگیری میکند.
- qp (qp)
- تنظیم پارامتر روش کنترل نرخ کوانتیزاسیون ثابت.
- aq-mode (aq-mode)
- تنظیم روش AQ. مقادیر ممکن:
- none (0)
- غیرفعال.
- variance (1)
- واریانس AQ (ماسک پیچیدگی).
- autovariance (2)
- واریانس خودکار AQ (آزمایشی).
- aq-strength (aq-strength)
- تنظیم شدت AQ، کاهش بلوکبندی و تاری در نواحی صاف و دارای بافت.
- psy
- استفاده از بهینهسازیهای روانشناسی بصری در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه --no-psy در x264 دارد.
- psy-rd (psy-rd)
- تنظیم شدت بهینهسازی روانشناسی بصری، در قالب psy-rd:psy-trellis.
- rc-lookahead (rc-lookahead)
- تنظیم تعداد فریمها برای نگاه به جلو جهت تعیین نوع فریم و کنترل نرخ.
- weightb
- فعالسازی پیشبینی وزندار برای فریمهای B در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه --no-weightb در x264 دارد.
- weightp (weightp)
- تنظیم روش پیشبینی وزندار برای فریمهای P. مقادیر ممکن:
- none (0)
- غیرفعال
- simple (1)
- تنها فعالسازی مراجع وزندار
- smart (2)
- فعالسازی هم مراجع وزندار و هم موارد تکراری
- ssim (ssim)
- فعالسازی محاسبه و چاپ آمار SSIM پس از انکود.
- intra-refresh (intra-refresh)
- فعالسازی استفاده از نوسازی دورهای درونفریمی بهجای فریمهای IDR در صورت تنظیم روی 1.
- avcintra-class (class)
- پیکربندی انکودر برای تولید AVC-Intra. مقادیر معتبر 50، 100 و 200 هستند.
- bluray-compat (bluray-compat)
- پیکربندی انکودر جهت سازگاری با استاندارد دیسک بلوری. این گزینه یک میانبر برای تنظیم "bluray-compat=1 force-cfr=1" است.
- b-bias (b-bias)
- تنظیم میزان اثرگذاری بر دفعات استفاده از فریمهای B.
- b-pyramid (b-pyramid)
- تنظیم روش نگهداری برخی فریمهای B بهعنوان مرجع. مقادیر ممکن:
- none (none)
- غیرفعال.
- strict (strict)
- هرم کاملاً سلسلهمراتبی.
- normal (normal)
- غیرسختگیرانه (ناسازگار با بلوری).
- mixed-refs
- فعالسازی استفاده از یک مرجع بهازای هر پارتیشن، در مقایسه با یک مرجع بهازای هر مکروبلوک در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه --no-mixed-refs در x264 دارد.
- 8x8dct
- فعالسازی تبدیل مکانی تطبیقی (تبدیل 8x8 پروفایل بالا) در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه x264's --no-8x8dct دارد.
- fast-pskip
- فعالسازی تشخیص زودهنگام SKIP در فریمهای P در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه x264's --no-fast-pskip دارد.
- aud (aud)
- فعالسازی استفاده از جداکنندههای واحد دسترسی در صورت تنظیم روی 1.
- mbtree
- فعالسازی استفاده از کنترل نرخ درخت مکروبلوک در صورت تنظیم روی 1. در صورت تنظیم روی 0، اثری مشابه با گزینه x264's --no-mbtree دارد.
- deblock (deblock)
- تنظیم پارامترهای فیلتر حلقه، در قالب alpha:beta.
- cplxblur (cplxblur)
- تنظیم کاهش نوسانات در QP (پیش از فشردهسازی منحنی).
- partitions (partitions)
- تنظیم پارتیشنهای مورد بررسی بهصورت فهرستی از مقادیر جداشده با ویرگول. مقادیر ممکن در فهرست:
- p8x8
- پارتیشن 8x8 فریم P.
- p4x4
- پارتیشن 4x4 فریم P.
- b8x8
- پارتیشن 4x4 فریم B.
- i8x8
- پارتیشن 8x8 فریم I.
- i4x4
- پارتیشن 4x4 فریم I. (فعالسازی p4x4 نیازمند فعال بودن p8x8 است. فعالسازی i8x8 نیازمند فعال بودن تبدیل مکانی تطبیقی (گزینه 8x8dct) است.)
- none (none)
- هیچ پارتیشنی را در نظر نگیر.
- all (all)
- تمام پارتیشنها را در نظر بگیر.
- direct-pred (direct)
- تنظیم حالت پیشبینی مستقیم بردار حرکت. مقادیر ممکن:
- none (none)
- غیرفعال کردن پیشبینی بردار حرکت.
- spatial (spatial)
- فعالسازی پیشبینی مکانی.
- temporal (temporal)
- فعالسازی پیشبینی زمانی.
- auto (auto)
- تصمیمگیری خودکار.
- slice-max-size (slice-max-size)
- تنظیم سقف اندازه هر برش به بایت. اگر مشخص نشده باشد اما اندازه بار مفید RTP (ps) مشخص باشد، از آن استفاده میشود.
- stats (stats)
- تنظیم نام فایل برای آمار انکود چندمرحلهای.
- nal-hrd (nal-hrd)
- تنظیم سیگنالدهی اطلاعات HRD (نیازمند تنظیم بودن vbv-bufsize است). مقادیر ممکن:
- none (none)
- غیرفعالسازی سیگنالدهی اطلاعات HRD.
- vbr (vbr)
- نرخ بیت متغیر.
- cbr (cbr)
- نرخ بیت ثابت (در کانتینر MP4 مجاز نیست).
- x264opts opts
- x264-params opts
- بازنویسی
پیکربندی x264
با استفاده
از فهرستی
از
گزینههای
key=value جداشده
با «:».
آرگومان هر دو گزینه فهرستی از زوجهای key=value جداشده با «:» است. با x264opts مقدار میتواند حذف شود که در این حالت مقدار 1 فرض میشود.
برای مقادیر گزینههای filter و psy-rd که خود از «:» بهعنوان جداکننده استفاده میکنند، بهجای آن از «,» استفاده کنید. آنها از دیرباز این حالت را نیز میپذیرند اما بنا به دلایلی مستند نشده باقی مانده است.
برای نمونه، گزینهها میتوانند به این صورت ارائه شوند:
level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0
برای نمونه جهت تعیین گزینههای انکود libx264 با ffmpeg:
ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
برای دریافت فهرست کامل گزینههای libx264، دستور x264 --fullhelp را اجرا کنید یا به مستندات libx264 مراجعه نمایید.
- a53cc boolean
- وارد کردن زیرنویسهای بستهبندیشده (که باید فرمت سازگار با ATSC داشته باشند) به خروجی. تنها دیکودرهای mpeg2 و h264 اینها را ارائه میدهند. پیشفرض 1 (روشن) است.
- udu_sei boolean
- وارد کردن دادههای کاربری ثبتنشده SEI در صورت موجود بودن به خروجی. پیشفرض 0 (خاموش) است.
- mb_info boolean
- تنظیم دادههای mb_info از طریق AVFrameSideData، تنها در صورت استفاده از طریق API مفید است. پیشفرض 0 (خاموش) است.
پیشتنظیمهای ffpresets برای کاربردهای رایج ارائه شدهاند تا بتوانند با سیستم عمومی پیشتنظیمها استفاده شوند (مثلاً ارسال گزینه pre).
libx265
پوششدهنده انکودر x265 H.265/HEVC.
این انکودر نیازمند حضور سرآیندها و کتابخانه libx265 در زمان پیکربندی است. باید ساخت را صراحتاً با --enable-libx265 پیکربندی کنید.
گزینهها (Options)
- b
- تنظیم نرخ بیت ویدیوی هدف.
- bf
- g
- تنظیم اندازه GOP.
- keyint_min
- حداقل اندازه GOP.
- refs
- تعداد فریمهای مرجع که هر فریم P میتواند استفاده کند. بازه از 1-16 است.
- preset
- تنظیم پیشتنظیم x265.
- tune
- تنظیم پارامتر کوک x265.
- profile
- تنظیم محدودیتهای پروفایل.
- crf
- تنظیم کیفیت برای حالت کیفیت ثابت.
- qp
- تنظیم پارامتر روش کنترل نرخ کوانتیزاسیون ثابت.
- qmin
- حداقل مقیاس کوانتیایزر.
- qmax
- حداکثر مقیاس کوانتیایزر.
- qdiff
- حداکثر تفاوت میان مقیاسهای کوانتیایزر.
- qblur
- تاری منحنی کوانتیایزر
- qcomp
- ضریب فشردهسازی منحنی کوانتیایزر
- i_qfactor
- b_qfactor
- forced-idr
- معمولاً هنگام اجبار نوع فریم I، انکودر میتواند هر نوع فریم I را انتخاب کند. این گزینه آن را مجبور به انتخاب فریم IDR میکند.
- x265-stats
- تعیین نام فایل برای آمار انکود دو مرحلهای (2-pass). این مقدار هنگام استفاده از گزینه -passlogfile بهطور خودکار تنظیم میشود.
- udu_sei boolean
- وارد کردن دادههای کاربری ثبتنشده SEI در صورت موجود بودن به خروجی. پیشفرض 0 (خاموش) است.
- x265-params
- تنظیم
گزینههای
x265 با
استفاده از
فهرستی از
زوجهای
key=value جداشده
با «:». برای
مشاهده
فهرست
گزینهها،
x265 --help را
ببینید.
برای نمونه جهت تعیین گزینههای انکود libx265 با -x265-params:
ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4
libxavs2
پوششدهنده انکودر xavs2 AVS2-P2/IEEE1857.4.
این انکودر نیازمند حضور سرآیندها و کتابخانه libxavs2 در زمان پیکربندی است. باید ساخت را صراحتاً با --enable-libxavs2 پیکربندی کنید.
گزینههای استاندارد libavcodec زیر استفاده میشوند:
- b / bit_rate
- g / gop_size
- bf / max_b_frames
این انکودر همچنین گزینههای اختصاصی خود را دارد:
گزینهها (Options)
- lcu_row_threads
- تنظیم تعداد نخهای موازی برای سطرها از 1 تا 8 (پیشفرض 5).
- initial_qp
- تنظیم پارامتر کوانتیزاسیون xavs2 از 1 تا 63 (پیشفرض 34). این مقدار برای تنظیم qp اولیه برای نخستین فریم استفاده میشود.
- qp
- تنظیم پارامتر کوانتیزاسیون xavs2 از 1 تا 63 (پیشفرض 34). این مقدار برای تنظیم مقدار qp تحت حالت QP ثابت (constant-QP) استفاده میشود.
- max_qp
- تنظیم حداکثر qp برای کنترل نرخ از 1 تا 63 (پیشفرض 55).
- min_qp
- تنظیم حداقل qp برای کنترل نرخ از 1 تا 63 (پیشفرض 20).
- speed_level
- تنظیم سطح سرعت از 0 تا 9 (پیشفرض 0). مقادیر بالاتر کیفیت بهتری دارند اما کندتر هستند.
- log_level
- تنظیم سطح گزارشگیری از -1 تا 3 (پیشفرض 0). مقادیر: -1: هیچ، 0: خطا، 1: هشدار، 2: اطلاعات، 3: اشکالزدایی.
- xavs2-params
- تنظیم
گزینههای
xavs2 با
استفاده از
فهرستی از
زوجهای
key=value جداشده
با «:».
برای نمونه جهت تعیین گزینههای انکود libxavs2 با -xavs2-params:
ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2
libxeve
پوششدهنده انکودر MPEG-5 EVC با انکودر ویدیویی فوقسریع ضروری (XEVE). گزینهها یا مقادیر معادل در xeve درون پرانتز برای مهاجرت آسانتر فهرست شدهاند.
این انکودر نیازمند حضور سرآیندها و کتابخانه libxeve در زمان پیکربندی است. باید ساخت را صراحتاً با --enable-libxeve پیکربندی کنید.
وبسایت پروژه xeve در https://github.com/mpeg5/xeve قرار دارد.
گزینهها (Options)
گزینههای زیر توسط پوششدهنده libxeve پشتیبانی میشوند. گزینهها یا مقادیر معادل در xeve درون پرانتز برای مهاجرت آسانتر فهرست شدهاند.
- b (bitrate)
- تنظیم نرخ بیت ویدیوی هدف به بیت بر ثانیه. توجه داشته باشید که گزینه b در FFmpeg بر حسب بیت بر ثانیه بیان میشود، در حالی که نرخ بیت در xeve بر حسب کیلوبیت بر ثانیه است.
- bf (bframes)
- تنظیم حداکثر تعداد فریمهای B (شامل 1, 3, 7, 15).
- g (keyint)
- تنظیم اندازه GOP (دوره تصویر I).
- preset (preset)
- تنظیم پیشتنظیم xeve. تنظیم مقدار پیشتنظیم انکودر برای تعیین سرعت انکود [fast, medium, slow, placebo]
- tune (tune)
- تنظیم پارامتر کوک انکودر [psnr, zerolatency]
- profile (profile)
- تنظیم پروفایل انکودر [0: پایه baseline؛ 1: اصلی main]
- crf (crf)
- تنظیم کیفیت برای حالت کیفیت ثابت. فاکتور نرخ ثابت <10..49> [پیشفرض: 32]
- qp (qp)
- تنظیم پارامتر روش کنترل نرخ کوانتیزاسیون ثابت. پارامتر کوانتیزاسیون qp بین <0..51> [پیشفرض: 32]
- threads (threads)
- اجبار به استفاده از تعداد مشخصی از نخها
libxvid
پوششدهنده انکودر Xvid MPEG-4 Part 2.
این انکودر نیازمند حضور سرآیندها و کتابخانه libxvidcore در زمان پیکربندی است. باید ساخت را صراحتاً با "--enable-libxvid --enable-gpl" پیکربندی کنید.
انکودر بومی "mpeg4" از فرمت MPEG-4 Part 2 پشتیبانی میکند، بنابراین کاربران میتوانند بدون این کتابخانه به این فرمت انکود کنند.
گزینهها (Options)
گزینههای زیر توسط پوششدهنده libxvid پشتیبانی میشوند. برخی از گزینههای زیر فهرست شدهاند اما مستند نشدهاند و به گزینههای مشترک کدک مربوط میشوند. برای مشاهده مستندات آنها به فصل گزینههای کدک (Codec Options) مراجعه کنید. سایر گزینههای مشترک که فهرست نشدهاند تأثیری بر انکودر libxvid ندارند.
- b
- g
- qmin
- qmax
- mpeg_quant
- threads
- bf
- b_qfactor
- b_qoffset
- flags
- تنظیم فلگهای اختصاصی انکود. مقادیر ممکن:
- mv4
- استفاده از چهار بردار حرکت بهازای هر مکروبلوک.
- aic
- فعالسازی پیشبینی AC با کیفیت بالا.
- gray
- تنها انکود بهصورت مقیاس خاکستری (سیاهوسفید).
- qpel
- فعالسازی جبران حرکت یکچهارم پیکسل.
- cgop
- فعالسازی GOP بسته.
- global_header
- قرار دادن سرایندهای سراسری در دادههای الحاقی (extradata) بهجای هر فریم کلیدی.
- gmc
- فعالسازی استفاده از جبران حرکت سراسری (GMC). پیشفرض 0 (غیرفعال) است.
- me_quality
- تنظیم سطح کیفیت تخمین حرکت. مقادیر ممکن به ترتیب نزولی سرعت و صعودی کیفیت:
- 0
- عدم استفاده از تخمین حرکت (پیشفرض).
- 1, 2
- فعالسازی جستجوی ناحیهای لوزی پیشرفته برای بلوکهای 16x16 و پالایش نیمپیکسل برای بلوکهای 16x16.
- 3, 4
- فعالسازی تمامی موارد فوق، بهعلاوه جستجوی ناحیهای لوزی پیشرفته برای بلوکهای 8x8 و پالایش نیمپیکسل برای بلوکهای 8x8، و همچنین فعالسازی تخمین حرکت روی صفحههای کروما برای فریمهای P و B.
- 5, 6
- فعالسازی تمامی موارد فوق، بهعلاوه جستجوی گسترشیافته بلوکهای 16x16 و 8x8.
- mbd
- تنظیم الگوریتم تصمیمگیری مکروبلوک. مقادیر ممکن به ترتیب صعودی کیفیت:
- simple
- استفاده از الگوریتم تابع مقایسه مکروبلوک (پیشفرض).
- bits
- فعالسازی پالایش نیمپیکسل و یکچهارم پیکسل مبتنی بر اعوجاج نرخ برای بلوکهای 16x16.
- rd
- فعالسازی تمامی موارد فوق، بهعلاوه پالایش نیمپیکسل و یکچهارم پیکسل مبتنی بر اعوجاج نرخ برای بلوکهای 8x8، و جستجوی مبتنی بر اعوجاج نرخ با استفاده از الگوی مربعی.
- lumi_aq
- فعالسازی کوانتیزاسیون تطبیقی ماسک روشنایی (lumi masking) در صورت تنظیم روی 1. پیشفرض 0 (غیرفعال) است.
- variance_aq
- فعالسازی
کوانتیزاسیون
تطبیقی
واریانس در
صورت تنظیم
روی 1.
پیشفرض 0
(غیرفعال)
است.
هنگام ترکیب با lumi_aq، کیفیت حاصل بهتر از هیچیک از دو مورد بهتنهایی نخواهد بود. به عبارت دیگر، کیفیت حاصل اثر بدتر میان این دو خواهد بود.
- trellis
- تنظیم کوانتیزاسیون بهینه اعوجاج نرخ.
- ssim
- تنظیم روش نمایش شاخص شباهت ساختاری (SSIM). مقادیر ممکن:
- off
- غیرفعال کردن نمایش اطلاعات SSIM.
- avg
- خروجی
میانگین SSIM
در پایان
انکود به stdout.
قالب نمایش
میانگین SSIM
بهصورت
زیر است:
Average SSIM: %f
برای کاربرانی که با C آشنایی ندارند، %f به معنای یک عدد اعشاری ممیز شناور است (مانند 0.939232).
- frame
- خروجی هم
دادههای SSIM
بهازای هر
فریم در حین
انکود و هم
میانگین SSIM
در پایان
انکود به stdout.
قالب
اطلاعات
بهازای هر
فریم
بهصورت
زیر است:
SSIM: avg: %1.3f min: %1.3f max: %1.3f
برای کاربرانی که با C آشنایی ندارند، %1.3f به معنای یک عدد ممیز شناور گردشده تا ۳ رقم بعد از اعشار است (مانند 0.932).
- ssim_acc
- تنظیم دقت SSIM. گزینههای معتبر اعداد صحیح در بازه 0-4 هستند؛ مقدار 0 دقیقترین نتیجه را ارائه میدهد و 4 سریعترین محاسبه را انجام میدهد.
MediaCodec
پوششدهنده انکودر MediaCodec امکان انکود ویدیویی با شتاب سختافزاری را روی دستگاههای اندروید فراهم میکند. این انکودر از کدگذاری H.264، H.265 (HEVC)، VP8، VP9، MPEG-4 و AV1 پشتیبانی میکند (اینکه کار کند یا خیر به دستگاه بستگی دارد).
اندروید دو مجموعه API ارائه میدهد: Java MediaCodec و NDK MediaCodec. پوششدهنده انکودر MediaCodec از هر دو پشتیبانی میکند. توجه داشته باشید که API اندیکی MediaCodec بدون نیاز به JVM عمل میکند، اما ممکن است به دلیل وابستگی به سرویسهای چارچوب سیستم، بهویژه پس از اندروید ۱۵، خارج از محیط JVM کار نکند.
- ndk_codec boolean
- استفاده از API اندیکی MediaCodec بهجای API جاوا. در صورتی که av_jni_get_java_vm() مقدار NULL برگرداند بهطور پیشفرض فعال است.
- ndk_async boolean
- استفاده از NDK MediaCodec در حالت ناهمگام (async). حالت ناهمگام نسبت به نظرسنجی (poll) در یک حلقه در حالت همگام، سربار کمتری دارد. نقص حالت ناهمگام این است که AV_CODEC_FLAG_GLOBAL_HEADER در آن کار نمیکند (در صورت لزوم از bsf فیلتر extract_extradata استفاده کنید). این قابلیت روی دستگاههای پایینتر از اندروید ۸.۰ کار نمیکند و بهطور خودکار غیرفعال خواهد شد.
- codec_name string
- یک نوع کدک میتواند پیادهسازیهای متعددی روی یک دستگاه واحد داشته باشد؛ این گزینه مشخص میکند کدام backend استفاده شود (از طریق API ساخت createCodecByName در MediaCodec). این گزینه بهطور پیشفرض NULL است و انکودر توسط createEncoderByType ایجاد میشود.
- bitrate_mode integer
- مقادیر ممکن:
- pts_as_dts boolean
- استفاده از PTS بهعنوان DTS. این یک راهحل موقت است زیرا API مدیاکدک زمانبندی دیکود ارائه نمیدهد. در صورتی که فریم B برابر 0 باشد بهطور خودکار فعال میشود.
- operating_rate integer
- نرخ عملیاتی مطلوبی که کدک باید در آن فعالیت کند؛ صفر به معنای نامشخص است. این گزینه برای مواردی مانند ضبط ویدیوی سرعتبالا/حرکتآهسته استفاده میشود، جایی که فرمت انکودر ویدیو شامل نرخ پخش هدف است (مثلاً 30fps)، اما مؤلفه باید توانایی مدیریت نرخ بالای ضبط عملیاتی را داشته باشد (مثلاً 240fps). این نرخ توسط کدک برای برنامهریزی منابع و تنظیم نقاط عملکرد استفاده خواهد شد.
- qp_i_min integer
- حداقل پارامتر کوانتیزاسیون برای فریم I.
- qp_p_min integer
- حداقل پارامتر کوانتیزاسیون برای فریم P.
- qp_b_min integer
- حداقل پارامتر کوانتیزاسیون برای فریم B.
- qp_i_max integer
- حداکثر پارامتر کوانتیزاسیون برای فریم I.
- qp_p_max integer
- حداکثر پارامتر کوانتیزاسیون برای فریم P.
- qp_b_max integer
- حداکثر پارامتر کوانتیزاسیون برای فریم B.
MediaFoundation
پوششدهندههای زیر برای انکودرها در چارچوب MediaFoundation در دسترس هستند:
- *<h264_mf>
- *<hevc_mf>
- *<av1_mf>
اینها از هر دو نوع انکود نرمافزاری و سختافزاری پشتیبانی میکنند.
انکودرهای ویدیو میتوانند ورودی را در هر یک از قالبهای nv12 یا yuv420p دریافت کنند (برخی انکودرها از هر دو پشتیبانی میکنند، برخی تنها از یکی — در عمل، nv12 انتخاب امنتری است، بهویژه در میان انکودرهای سختافزاری).
انکود شتابیافته سختافزاری نیازمند D3D11 است، از جمله قابلیتهای تغییر اندازه سختافزاری از طریق فیلتر scale_d3d11.
برای مشاهده فهرست تمام گزینههای موجود برای انکودرهای MediaFoundation، استفاده کنید از: ffmpeg -h encoder=<encoder> بهعنوان نمونه ffmpeg -h encoder=h264_mf
گزینهها (Options)
- rate_control
- انتخاب حالت کنترل نرخ. حالتهای موجود:
- scenario
- انتخاب سناریوی کاربرد. سناریوهای موجود:
- default
- سناریوی پیشفرض
- display_remoting
- سناریوی ریموت تصویر (نمایش از راه دور)
- video_conference
- سناریوی ویدیو کنفرانس
- archive
- سناریوی آرشیو
- live_streaming
- سناریوی پخش زنده
- camera_record
- سناریوی ضبط دوربین
- display_remoting_with_feature_map
- سناریوی ریموت تصویر با نقشه ویژگیها
- quality
- تنظیم کیفیت انکود (0-100). مقدار -1 به معنای کیفیت پیشفرض است.
- hw_encoding
- اجبار انکود سختافزاری (0-1). پیشفرض 0 (غیرفعال) است.
نمونهها (Examples)
انکود سختافزاری:
ffmpeg -i input.mp4 -c:v h264_mf -hw_encoding 1 output.mp4
دیکود شتابیافته سختافزاری همراه با انکود سختافزاری:
ffmpeg -hwaccel d3d11va -i input.mp4 -c:v h264_mf -hw_encoding 1 output.mp4
دیکود شتابیافته سختافزاری، تغییر اندازه سختافزاری و انکود با تنظیم کیفیت:
ffmpeg -hwaccel d3d11va -hwaccel_output_format d3d11 -i input.mp4 -vf scale_d3d11=1920:1080 -c:v hevc_mf -hw_encoding 1 -quality 80 output.mp4
Microsoft RLE
انکودر Microsoft RLE معروف به MSRLE. تنها از حالت پالت ۸ بیتی پشتیبانی میشود. سازگار با Windows 3.1 و Windows 95.
گزینهها (Options)
- g integer
- فاصله فریمهای کلیدی. یک فریم کلیدی حداقل هر "-g" فریم یکبار درج میشود، گاهی زودتر.
mpeg2
انکودر ویدیوی MPEG-2.
گزینهها (Options)
- profile
- انتخاب پروفایل mpeg2 برای انکود:
- level
- انتخاب سطح mpeg2 برای انکود:
- seq_disp_ext integer
- مشخص میکند که آیا انکودر باید یک sequence_display_extension در خروجی بنویسد یا خیر.
- video_format integer
- مشخصکننده video_format نوشتهشده در افزونه نمایش توالی (sequence display extension) است که نشاندهنده منبع تصاویر ویدیو میباشد. مقدار پیشفرض unspecified است، میتواند component، pal، ntsc، secam یا mac باشد. برای حداکثر سازگاری، از component استفاده کنید.
- a53cc boolean
- وارد کردن زیرنویسهای بستهبندیشده (که باید فرمت سازگار با ATSC داشته باشند) به خروجی. پیشفرض 1 (روشن) است.
png
انکودر تصویر PNG.
گزینهها (Options)
- compression_level
- تنظیم سطح فشردهسازی، از 0 تا 9 (پیشفرض)
گزینههای اختصاصی (Private options)
- dpi integer
- تنظیم چگالی فیزیکی پیکسلها، بر حسب نقطه در اینچ (DPI)، بهطور پیشفرض تنظیمنشده
- dpm integer
- تنظیم چگالی فیزیکی پیکسلها، بر حسب نقطه در متر (DPM)، بهطور پیشفرض تنظیمنشده
- pred method
- تنظیم روش پیشبینی (none, sub, up, avg, paeth, mixed)، پیشفرض paeth است
ProRes
انکودر Apple ProRes.
کتابخانه FFmpeg شامل ۲ انکودر ProRes است: انکودر prores-aw و prores-ks. انکودر مورد استفاده میتواند با گزینه "-vcodec" انتخاب شود.
گزینههای اختصاصی برای prores-ks (Private Options for prores-ks)
- profile integer
- انتخاب پروفایل ProRes برای انکود
- quant_mat integer
- انتخاب ماتریس کوانتیزاسیون.
در صورت تنظیم روی auto، ماتریس متناسب با پروفایل انتخاب خواهد شد. در صورت عدم تنظیم، ماتریسی که بالاترین کیفیت را فراهم میکند، یعنی default، انتخاب خواهد شد.
- bits_per_mb integer
- تعداد بیتهای اختصاصیافته برای کدگذاری یک مکروبلوک. پروفایلهای مختلف بین ۲۰۰ تا ۲۴۰۰ بیت بهازای هر مکروبلوک استفاده میکنند؛ حداکثر مقدار ۸۰۰۰ است.
- mbs_per_slice integer
- تعداد مکروبلوکها در هر برش (1-8)؛ مقدار پیشفرض (8) تقریباً در تمامی شرایط مناسب است.
- vendor string
- بازنویسی شناسه سازنده ۴ بایتی. یک شناسه سفارشی مانند apl0 ادعا میکند که استریم توسط انکودر اپل تولید شده است.
- alpha_bits integer
- مشخص کردن تعداد بیتها برای مؤلفه آلفا. مقادیر ممکن 0، 8 و 16 هستند. از 0 برای غیرفعالسازی کدگذاری صفحه آلفا استفاده کنید.
ملاحظات سرعت (Speed considerations)
در حالت پیشفرض عملکرد، انکودر باید قیدهای فریم را رعایت کند (یعنی فریمهایی با اندازه بزرگتر از مقدار درخواستشده تولید نکند) در حالی که همچنان تصویر خروجی را تا حد امکان باکیفیت بسازد. فریمی که حاوی جزئیات کوچک زیادی باشد فشردهسازی آن دشوارتر است و انکودر زمان بیشتری را صرف جستجوی کوانتیایزرهای مناسب برای هر برش خواهد کرد.
تنظیم یک سقف بالاتر برای bits_per_mb سرعت را بهبود میبخشد.
برای سریعترین سرعت انکود، پارامتر qscale را تنظیم کنید (مقدار ۴ مقدار توصیه شده است) و هیچ قید اندازهای تعیین نکنید.
QSV Encoders
خانواده انکودرهای Intel QuickSync Video شامل (MPEG-2, H.264, HEVC, JPEG/MJPEG, VP9, AV1)
روش کنترل نرخ (Ratecontrol Method)
روش کنترل نرخ به شرح زیر انتخاب میشود:
- •
- هنگامی که global_quality مشخص شود، از یک حالت مبتنی بر کیفیت استفاده میشود. بهطور خاص این به معنای یکی از موارد زیر است:
- CQP - مقیاس کوانتیایزر ثابت، هنگامی که فلگ کدک qscale نیز تنظیم شده باشد (گزینه -qscale در ffmpeg).
- LA_ICQ - کیفیت ثابت هوشمند با نگاه به جلو (lookahead)، هنگامی که گزینه look_ahead نیز تنظیم شده باشد.
- ICQ -- کیفیت ثابت هوشمند در غیر این صورت. برای حالتهای ICQ، بازه کیفیت سراسری ۱ تا ۵۱ است که ۱ بهترین کیفیت میباشد.
- •
- در غیر این صورت، هنگامی که نرخ بیت میانگین مطلوب با گزینه b مشخص شود، از یک حالت مبتنی بر نرخ بیت استفاده میشود:
- LA - حالت VBR با نگاه به جلو، هنگامی که گزینه look_ahead مشخص شده باشد.
- VCM - حالت ویدیو کنفرانس، هنگامی که گزینه vcm تنظیم شده باشد.
- CBR - نرخ بیت ثابت، هنگامی که maxrate مشخص شده و برابر با نرخ بیت میانگین باشد.
- VBR - نرخ بیت متغیر، هنگامی که maxrate مشخص شده اما بالاتر از نرخ بیت میانگین باشد.
- AVBR - حالت VBR میانگین، هنگامی که maxrate مشخص نشده و هر دو گزینه avbr_accuracy و avbr_convergence روی مقادیر غیرصفر تنظیم شده باشند. این حالت برای H264 و HEVC در ویندوز در دسترس است.
- •
- در غیر این صورت از روش کنترل نرخ پیشفرض CQP استفاده میشود.
توجه داشته باشید که بسته به سیستم شما، ممکن است حالتی متفاوت از آنچه مشخص کردهاید توسط انکودر انتخاب شود. سطح پرگویی (verbosity) را روی verbose یا بالاتر تنظیم کنید تا تنظیمات واقعی مورد استفاده توسط زمان اجرای QSV را مشاهده نمایید.
گزینههای سراسری -> گزینههای MSDK (Global Options -> MSDK Options)
گزینههای سراسری اضافی libavcodec به گزینههای MSDK به شرح زیر نگاشت میشوند:
- g/gop_size -> GopPicSize
- bf/max_b_frames+1 -> GopRefDist
- rc_init_occupancy/rc_initial_buffer_occupancy -> InitialDelayInKB
- slices -> NumSlice
- refs -> NumRefFrame
- b_strategy/b_frame_strategy -> BRefType
- فلگ کدک cgop/CLOSED_GOP -> GopOptFlag
- برای حالت CQP، گزینههای i_qfactor/i_qoffset و b_qfactor/b_qoffset اختلاف میان QPP و QPI، و همچنین QPP و QPB را به ترتیب تعیین میکنند.
- تنظیم گزینه coder روی مقدار vlc باعث میشود انکودر H.264 بهجای CABAC از CAVLC استفاده کند.
گزینههای مشترک (Common Options)
گزینههای زیر توسط تمامی انکودرهای qsv استفاده میشوند.
- async_depth
- مشخص میکند که یک برنامه کاربردی چه تعداد عملیات ناهمگام را پیش از همگامسازی صریح نتیجه انجام میدهد. اگر صفر باشد، مقدار مشخص نشده است.
- preset
- این گزینه بازهای از گزینهها را از veryfast (بهترین سرعت) تا veryslow (بهترین کیفیت) برمیشمارد.
- forced_idr
- اجبار فریمهای I بهعنوان فریمهای IDR.
- low_power
- برای انکودرها، این فلگ را روی ON قرار دهید تا مصرف توان و استفاده از GPU کاهش یابد.
گزینههای زمان اجرا (Runtime Options)
گزینههای زیر میتوانند در حین انکود qsv استفاده شوند.
- global_quality
- i_quant_factor
- i_quant_offset
- b_quant_factor
- b_quant_offset
- در h264_qsv و hevc_qsv پشتیبانی میشود. این مقادیر را تغییر دهید تا پیکربندی qp در کدک qsv بازنشانی شود.
- max_frame_size
- در h264_qsv و hevc_qsv پشتیبانی میشود. این مقدار را تغییر دهید تا پیکربندی MaxFrameSize در کدک qsv بازنشانی شود.
- gop_size
- این مقدار را تغییر دهید تا پیکربندی gop در کدک qsv بازنشانی شود.
- int_ref_type
- int_ref_cycle_size
- int_ref_qp_delta
- int_ref_cycle_dist
- در h264_qsv و hevc_qsv پشتیبانی میشود. این مقادیر را تغییر دهید تا پیکربندی نوسازی درونفریمی (Intra Refresh) در کدک qsv بازنشانی شود.
- qmax
- qmin
- max_qp_i
- min_qp_i
- max_qp_p
- min_qp_p
- max_qp_b
- min_qp_b
- در h264_qsv پشتیبانی میشود. این مقادیر را تغییر دهید تا پیکربندی max/min qp در کدک qsv بازنشانی شود.
- low_delay_brc
- در h264_qsv، hevc_qsv و av1_qsv پشتیبانی میشود. این مقدار را تغییر دهید تا پیکربندی low_delay_brc در کدک qsv بازنشانی شود.
- framerate
- این مقدار را تغییر دهید تا پیکربندی framerate در کدک qsv بازنشانی شود.
- bit_rate
- rc_buffer_size
- rc_initial_buffer_occupancy
- rc_max_rate
- این مقادیر را تغییر دهید تا پیکربندی کنترل نرخ بیت در کدک qsv بازنشانی شود.
- pic_timing_sei
- در h264_qsv و hevc_qsv پشتیبانی میشود. این مقدار را تغییر دهید تا پیکربندی pic_timing_sei در کدک qsv بازنشانی شود.
- qsv_params
- تنظیم
پارامترهای
انکودر QSV
بهصورت
فهرستی از
جفتهای
کلید-مقدار
جداشده با
دونقطه.
مقدار qsv_params باید بهصورت "key1=value1:key2=value2:..." قالببندی شود.
این پارامترها با استفاده از تابع MFXSetParameter مستقیماً به انکودر زیرین Intel Quick Sync Video (QSV) منتقل میشوند.
نمونه:
ffmpeg -i input.mp4 -c:v h264_qsv -qsv_params "CodingOption1=1:CodingOption2=2" output.mp4
این گزینه امکان کنترل دقیق بر تنظیمات گوناگون اختصاصی انکودر ارائهشده توسط انکودر QSV را فراهم میسازد.
گزینههای H264 (H264 options)
این گزینهها توسط h264_qsv استفاده میشوند
- extbrc
- کنترل نرخ بیت توسعهیافته.
- recovery_point_sei
- این فلگ را تنظیم کنید تا پیام SEI نقطه بازیابی در ابتدای هر چرخه نوسازی درونفریمی درج شود.
- rdo
- فعالسازی بهینهسازی اعوجاج نرخ.
- max_frame_size
- حداکثر اندازه فریم انکودشده به بایت.
- max_frame_size_i
- حداکثر اندازه فریم انکودشده برای فریمهای I به بایت. اگر این مقدار بزرگتر از صفر تنظیم شود، برای فریمهای I مقدار تنظیمشده توسط max_frame_size نادیده گرفته میشود.
- max_frame_size_p
- حداکثر اندازه فریم انکودشده برای فریمهای P به بایت. اگر این مقدار بزرگتر از صفر تنظیم شود، برای فریمهای P مقدار تنظیمشده توسط max_frame_size نادیده گرفته میشود.
- max_slice_size
- حداکثر اندازه برش انکودشده به بایت.
- bitrate_limit
- تغییر وضعیت محدودیتهای نرخ بیت. نرخ بیت را طوری تغییر میدهد که در بازه تحمیلشده توسط انکودر QSV قرار گیرد. خاموش کردن این فلگ ممکن است منجر به نقض انطباق با HRD شود. توجه داشته باشید که تعیین نرخ بیت پایینتر از بازه انکودر QSV ممکن است تأثیر چشمگیری بر کیفیت بگذارد. در صورت روشن بودن، این گزینه در حالتهای غیر CQP اعمال میشود: اگر نرخ بیت در بازه تحمیلشده توسط انکودر QSV نباشد، تغییر داده میشود تا در آن بازه قرار گیرد.
- mbbrc
- تنظیم این فلگ، کنترل نرخ بیت در سطح مکروبلوک را فعال میکند که عموماً کیفیت بصری ذهنی را بهبود میبخشد. فعالسازی این فلگ ممکن است اثر منفی بر کارایی و معیارهای سنجش کیفیت بصری عینی بگذارد.
- low_delay_brc
- تنظیم این فلگ ویژگی LowDelayBRC را در افزونه qsv روشن یا خاموش میکند، که کنترل دقیقتری بر نرخ بیت ارائه میدهد تا نوسانات اندازه فریم به فریم جریان بیتی به حداقل برسد. مقادیر: -1-پیشفرض 0-خاموش 1-روشن
- adaptive_i
- این فلگ درج فریمهای I توسط انکودر QSV را کنترل میکند. این فلگ را روشن (ON) کنید تا امکان تغییر نوع فریم از P و B به I فراهم شود.
- adaptive_b
- این فلگ تغییر نوع فریم از B به P را کنترل میکند.
- p_strategy
- فعالسازی هرم P: مقدار 0-پیشفرض 1-ساده 2-هرمی (bf باید روی 0 تنظیم شود).
- b_strategy
- این گزینه استفاده از فریمهای B را بهعنوان مرجع کنترل میکند.
- dblk_idc
- این گزینه فیلتر فشردهزدایی (deblocking) را غیرفعال میکند. مقداری در بازه 0~2 دارد.
- cavlc
- در صورت تنظیم، از CAVLC استفاده میشود؛ در صورت عدم تنظیم، از CABAC برای انکود استفاده میشود.
- vcm
- حالت ویدیو کنفرانس، لطفاً بخش روش کنترل نرخ را مشاهده کنید.
- idr_interval
- فاصله (بر حسب فریمهای I) میان فریمهای IDR.
- pic_timing_sei
- درج SEI زمانبندی تصویر با عنصر نحوی pic_struct_syntax.
- single_sei_nal_unit
- قرار دادن تمام پیامهای SEI در یک واحد NALU منفرد.
- max_dec_frame_buffering
- حداکثر تعداد فریمهای بافرشده در DPB.
- look_ahead
- استفاده از الگوریتم VBR با نگاه به جلو.
- look_ahead_depth
- عمق نگاه به جلو بر حسب تعداد فریمها.
- look_ahead_downsampling
- ضریب کاهش مقیاس فریمهای ذخیرهشده برای تحلیل نگاه به جلو.
- int_ref_type
- مشخصکننده نوع نوسازی درونفریمی (intra refresh). هدف اصلی نوسازی درونفریمی بهبود پایداری در برابر خطا بدون تأثیر چشمگیر بر اندازه جریان بیتی انکودشده ناشی از فریمهای I است. انکودر SDK با انکود بخشی از هر فریم در چرخه نوسازی با استفاده از MBهای درونفریمی به این مهم دست مییابد. مقدار none به معنای عدم نوسازی است. مقدار vertical به معنای نوسازی عمودی بر اساس ستونهای MBها است. مقدار horizontal به معنای نوسازی افقی بر اساس سطرهای MBها است. مقدار slice به معنای نوسازی افقی بر اساس برشها بدون همپوشانی است. در حالت slice، مقدار in_ref_cycle_size نادیده گرفته میشود. برای فعالسازی نوسازی درونفریمی، فریم B باید روی 0 تنظیم شود.
- int_ref_cycle_size
- تعداد تصاویر درون چرخه نوسازی را با شروع از ۲ مشخص میکند. مقادیر ۰ و ۱ نامعتبر هستند.
- int_ref_qp_delta
- اختلاف QP را برای MBهای درونفریمی درجشده مشخص میکند. اگر عمق بیت انکود هدف برای نمونههای روشنایی ۸ باشد، این یک مقدار علامتدار در بازه [-51, 51] است و این بازه برای عمق بیت ۱۰ برابر [-63, 63] و برای عمق بیت ۱۲ برابر [-75, 75] خواهد بود.
- int_ref_cycle_dist
- فاصله میان آغاز چرخههای نوسازی درونفریمی بر حسب فریم.
- profile
- a53cc
- استفاده از زیرنویسهای بستهبندیشده A53 Closed Captions (در صورت موجود بودن).
- aud
- درج NAL جداکننده واحد دسترسی.
- mfmode
- حالت چندفریمی (Multi-Frame Mode).
- repeat_pps
- تکرار pps بهازای هر فریم.
- max_qp_i
- حداکثر مقیاس کوانتیایزر ویدیو برای فریم I.
- min_qp_i
- حداقل مقیاس کوانتیایزر ویدیو برای فریم I.
- max_qp_p
- حداکثر مقیاس کوانتیایزر ویدیو برای فریم P.
- min_qp_p
- حداقل مقیاس کوانتیایزر ویدیو برای فریم P.
- max_qp_b
- حداکثر مقیاس کوانتیایزر ویدیو برای فریم B.
- min_qp_b
- حداقل مقیاس کوانتیایزر ویدیو برای فریم B.
- scenario
- ارائه یک راهنمایی به انکودر درباره سناریوی نشست انکود.
- avbr_accuracy
- دقت کنترل نرخ AVBR (واحد یکدهم درصد).
- avbr_convergence
- همگرایی
کنترل نرخ AVBR
(واحد ۱۰۰
فریم)
پارامترهای avbr_accuracy و avbr_convergence برای الگوریتم کنترل نرخ بیت متغیر میانگین (AVBR) هستند. این الگوریتم بر کیفیت کلی انکود تمرکز دارد در حالی که نرخ بیت مشخصشده یعنی target_bitrate را در بازه دقت avbr_accuracy، پس از دوره avbr_Convergence تأمین میکند. این روش از HRD پیروی نمیکند و نرخ بیت لحظهای محدود یا اضافه نمیشود.
- skip_frame
- استفاده از متادیتای "qsv_skip_frame" بهازای هر فریم برای پرش از فریم هنگام انکود. این گزینه نحوه استفاده از این متادیتا را تعریف میکند.
- no_skip
- پرش فریم غیرفعال است.
- insert_dummy
- انکودر فریمی را در جریان بیتی درج میکند که تمام مکروبلوکهای آن بهصورت ردشده (skipped) انکود شدهاند.
- insert_nothing
- مشابه insert_dummy، اما انکودر هیچچیزی در جریان بیتی درج نمیکند. فریمهای ردشده همچنان در brc استفاده میشوند؛ برای نمونه، gop همچنان شامل فریمهای ردشده است و فریمهای بعد از فریمهای ردشده اندازه بزرگتری خواهند داشت.
- brc_only
- متادیتای skip_frame تعداد فریمهای از دست رفته پیش از فریم فعلی را نشان میدهد.
گزینههای HEVC (HEVC Options)
این گزینهها توسط hevc_qsv استفاده میشوند
- extbrc
- کنترل نرخ بیت توسعهیافته.
- recovery_point_sei
- این فلگ را تنظیم کنید تا پیام SEI نقطه بازیابی در ابتدای هر چرخه نوسازی درونفریمی درج شود.
- rdo
- فعالسازی بهینهسازی اعوجاج نرخ.
- max_frame_size
- حداکثر اندازه فریم انکودشده به بایت.
- max_frame_size_i
- حداکثر اندازه فریم انکودشده برای فریمهای I به بایت. اگر این مقدار بزرگتر از صفر تنظیم شود، برای فریمهای I مقدار تنظیمشده توسط max_frame_size نادیده گرفته میشود.
- max_frame_size_p
- حداکثر اندازه فریم انکودشده برای فریمهای P به بایت. اگر این مقدار بزرگتر از صفر تنظیم شود، برای فریمهای P مقدار تنظیمشده توسط max_frame_size نادیده گرفته میشود.
- max_slice_size
- حداکثر اندازه برش انکودشده به بایت.
- mbbrc
- تنظیم این فلگ، کنترل نرخ بیت در سطح مکروبلوک را فعال میکند که عموماً کیفیت بصری ذهنی را بهبود میبخشد. فعالسازی این فلگ ممکن است اثر منفی بر کارایی و معیارهای سنجش کیفیت بصری عینی بگذارد.
- low_delay_brc
- تنظیم این فلگ ویژگی LowDelayBRC را در افزونه qsv روشن یا خاموش میکند، که کنترل دقیقتری بر نرخ بیت ارائه میدهد تا نوسانات اندازه فریم به فریم جریان بیتی به حداقل برسد. مقادیر: -1-پیشفرض 0-خاموش 1-روشن
- adaptive_i
- این فلگ درج فریمهای I توسط انکودر QSV را کنترل میکند. این فلگ را روشن (ON) کنید تا امکان تغییر نوع فریم از P و B به I فراهم شود.
- adaptive_b
- این فلگ تغییر نوع فریم از B به P را کنترل میکند.
- p_strategy
- فعالسازی هرم P: مقدار 0-پیشفرض 1-ساده 2-هرمی (bf باید روی 0 تنظیم شود).
- b_strategy
- این گزینه استفاده از فریمهای B را بهعنوان مرجع کنترل میکند.
- dblk_idc
- این گزینه فیلتر فشردهزدایی (deblocking) را غیرفعال میکند. مقداری در بازه 0~2 دارد.
- idr_interval
- فاصله (بر حسب فریمهای I) میان فریمهای IDR.
- begin_only
- خروجی دادن یک فریم IDR تنها در ابتدای جریان.
- load_plugin
- یک افزونه کاربری برای بارگذاری در نشست داخلی.
- load_plugins
- فهرستی از شناسههای یکتای (UID) هگزادسیمال افزونهها که با «:» جدا شدهاند جهت بارگذاری در یک نشست داخلی.
- look_ahead_depth
- عمق نگاه به جلو بر حسب تعداد فریم، در دسترس هنگام فعال بودن گزینه extbrc.
- profile
- تنظیم پروفایل انکود (گزینه scc نیازمند libmfx >= 1.32 است).
- tier
- تنظیم رده انکود (تنها سطح level >= 4 میتواند از رده بالا high tier پشتیبانی کند). این گزینه تنها زمانی اعمال میشود که گزینه level مشخص شده باشد.
- gpb
- مقدار 1: GPB
(فریم
تعمیمیافته
P/B)
مقدار 0: فریم معمولی P.
- tile_cols
- تعداد ستونها برای انکود کاشیبندیشده (tiled encoding).
- tile_rows
- تعداد سطرها برای انکود کاشیبندیشده.
- aud
- درج NAL جداکننده واحد دسترسی.
- pic_timing_sei
- درج SEI زمانبندی تصویر با عنصر نحوی pic_struct_syntax.
- transform_skip
- این گزینه را روی ON قرار دهید تا transformskip فعال شود. این ویژگی روی پلتفرمهای همرده یا جدیدتر از ICL پشتیبانی میشود.
- int_ref_type
- مشخصکننده نوع نوسازی درونفریمی (intra refresh). هدف اصلی نوسازی درونفریمی بهبود پایداری در برابر خطا بدون تأثیر چشمگیر بر اندازه جریان بیتی انکودشده ناشی از فریمهای I است. انکودر SDK با انکود بخشی از هر فریم در چرخه نوسازی با استفاده از MBهای درونفریمی به این مهم دست مییابد. مقدار none به معنای عدم نوسازی است. مقدار vertical به معنای نوسازی عمودی بر اساس ستونهای MBها است. مقدار horizontal به معنای نوسازی افقی بر اساس سطرهای MBها است. مقدار slice به معنای نوسازی افقی بر اساس برشها بدون همپوشانی است. در حالت slice، مقدار in_ref_cycle_size نادیده گرفته میشود. برای فعالسازی نوسازی درونفریمی، فریم B باید روی 0 تنظیم شود.
- int_ref_cycle_size
- تعداد تصاویر درون چرخه نوسازی را با شروع از ۲ مشخص میکند. مقادیر ۰ و ۱ نامعتبر هستند.
- int_ref_qp_delta
- اختلاف QP را برای MBهای درونفریمی درجشده مشخص میکند. اگر عمق بیت انکود هدف برای نمونههای روشنایی ۸ باشد، این یک مقدار علامتدار در بازه [-51, 51] است و این بازه برای عمق بیت ۱۰ برابر [-63, 63] و برای عمق بیت ۱۲ برابر [-75, 75] خواهد بود.
- int_ref_cycle_dist
- فاصله میان آغاز چرخههای نوسازی درونفریمی بر حسب فریم.
- max_qp_i
- حداکثر مقیاس کوانتیایزر ویدیو برای فریم I.
- min_qp_i
- حداقل مقیاس کوانتیایزر ویدیو برای فریم I.
- max_qp_p
- حداکثر مقیاس کوانتیایزر ویدیو برای فریم P.
- min_qp_p
- حداقل مقیاس کوانتیایزر ویدیو برای فریم P.
- max_qp_b
- حداکثر مقیاس کوانتیایزر ویدیو برای فریم B.
- min_qp_b
- حداقل مقیاس کوانتیایزر ویدیو برای فریم B.
- scenario
- ارائه یک راهنمایی به انکودر درباره سناریوی نشست انکود.
- avbr_accuracy
- دقت کنترل نرخ AVBR (واحد یکدهم درصد).
- avbr_convergence
- همگرایی
کنترل نرخ AVBR
(واحد ۱۰۰
فریم)
پارامترهای avbr_accuracy و avbr_convergence برای الگوریتم کنترل نرخ بیت متغیر میانگین (AVBR) هستند. این الگوریتم بر کیفیت کلی انکود تمرکز دارد در حالی که نرخ بیت مشخصشده یعنی target_bitrate را در بازه دقت avbr_accuracy، پس از دوره avbr_Convergence تأمین میکند. این روش از HRD پیروی نمیکند و نرخ بیت لحظهای محدود یا اضافه نمیشود.
- skip_frame
- استفاده از متادیتای "qsv_skip_frame" بهازای هر فریم برای پرش از فریم هنگام انکود. این گزینه نحوه استفاده از این متادیتا را تعریف میکند.
- no_skip
- پرش فریم غیرفعال است.
- insert_dummy
- انکودر فریمی را در جریان بیتی درج میکند که تمام مکروبلوکهای آن بهصورت ردشده (skipped) انکود شدهاند.
- insert_nothing
- مشابه insert_dummy، اما انکودر هیچچیزی در جریان بیتی درج نمیکند. فریمهای ردشده همچنان در brc استفاده میشوند؛ برای نمونه، gop همچنان شامل فریمهای ردشده است و فریمهای بعد از فریمهای ردشده اندازه بزرگتری خواهند داشت.
- brc_only
- متادیتای skip_frame تعداد فریمهای از دست رفته پیش از فریم فعلی را نشان میدهد.
گزینههای MPEG2 (MPEG2 Options)
این گزینهها توسط mpeg2_qsv استفاده میشوند
گزینههای VP9 (VP9 Options)
این گزینهها توسط vp9_qsv استفاده میشوند
- tile_cols
- تعداد ستونها برای انکود کاشیبندیشده (نیازمند libmfx >= 1.29).
- tile_rows
- تعداد سطرها برای انکود کاشیبندیشده (نیازمند libmfx >= 1.29).
گزینههای AV1 (AV1 Options)
این گزینهها توسط av1_qsv استفاده میشوند (نیازمند libvpl).
- tile_cols
- تعداد ستونها برای انکود کاشیبندیشده.
- tile_rows
- تعداد سطرها برای انکود کاشیبندیشده.
- adaptive_i
- این فلگ درج فریمهای I توسط انکودر QSV را کنترل میکند. این فلگ را روشن (ON) کنید تا امکان تغییر نوع فریم از P و B به I فراهم شود.
- adaptive_b
- این فلگ تغییر نوع فریم از B به P را کنترل میکند.
- b_strategy
- این گزینه استفاده از فریمهای B را بهعنوان مرجع کنترل میکند.
- extbrc
- کنترل نرخ بیت توسعهیافته.
- look_ahead_depth
- عمق نگاه به جلو بر حسب تعداد فریم، در دسترس هنگام فعال بودن گزینه extbrc.
- low_delay_brc
- تنظیم این فلگ ویژگی LowDelayBRC را در افزونه qsv روشن یا خاموش میکند، که کنترل دقیقتری بر نرخ بیت ارائه میدهد تا نوسانات اندازه فریم به فریم جریان بیتی به حداقل برسد. مقادیر: -1-پیشفرض 0-خاموش 1-روشن
- max_frame_size
- تنظیم حداکثر اندازه مجاز به بایت برای هر فریم. اگر اندازه فریم از این محدودیت فراتر رود، انکودر مقدار QP را برای کنترل اندازه فریم تنظیم خواهد کرد. در حالت کنترل نرخ CQP نامعتبر است.
- max_frame_size_i
- حداکثر اندازه فریم انکودشده برای فریمهای I به بایت. اگر این مقدار بزرگتر از صفر تنظیم شود، برای فریمهای I مقدار تنظیمشده توسط max_frame_size نادیده گرفته میشود.
- max_frame_size_p
- حداکثر اندازه فریم انکودشده برای فریمهای P به بایت. اگر این مقدار بزرگتر از صفر تنظیم شود، برای فریمهای P مقدار تنظیمشده توسط max_frame_size نادیده گرفته میشود.
snow
گزینهها (Options)
- iterative_dia_size
- اندازه لوزی (dia size) برای تخمین حرکت تکرارشونده.
اینکودرهای VAAPI (VAAPI encoders)
پوششدهندههایی برای اینکودرهای سختافزاری قابل دسترسی از طریق VAAPI.
این اینکودرها ورودی را تنها در سطوح سختافزاری VAAPI میپذیرند. اگر ورودی شما در فریمهای نرمافزاری است، از فیلتر hwupload برای بارگذاری آنها روی GPU استفاده کنید.
گزینههای استاندارد libavcodec زیر استفاده میشوند:
- g / gop_size
- bf / max_b_frames
- profile
در صورت عدم تنظیم، این مقدار به صورت خودکار از فرمت فریمهای ورودی و پروفایلهای پشتیبانیشده توسط درایور تعیین میشود.
- level
- b / bit_rate
- maxrate / rc_max_rate
- bufsize / rc_buffer_size
- rc_init_occupancy / rc_initial_buffer_occupancy
- compression_level
موازنه سرعت / کیفیت: مقادیر بالاتر سریعتر / کیفیت پایینتر هستند.
- q / global_quality
موازنه حجم / کیفیت: مقادیر بالاتر حجم کمتر / کیفیت پایینتر هستند.
- qmin
- qmax
- i_qfactor / i_quant_factor
- i_qoffset / i_quant_offset
- b_qfactor / b_quant_factor
- b_qoffset / b_quant_offset
- slices
تمامی اینکودرها از گزینههای زیر پشتیبانی میکنند:
- low_power
- برخی درایورها/پلتفرمها اینکودر دومی برای برخی کدکها با هدف مصرف توان کمتر نسبت به اینکودر پیشفرض ارائه میدهند؛ تنظیم این گزینه تلاش میکند از آن اینکودر استفاده کند. توجه داشته باشید که ممکن است مجموعه ویژگیهای محدودتری را پشتیبانی کند، بنابراین ممکن است برخی گزینههای دیگر در این حالت در دسترس نباشند.
- idr_interval
- تنظیم تعداد فریمهای درونتصویری (intra) عادی میان فریمهای تازهسازی کامل (IDR) در حالت open-GOP. فریمهای intra همچنان IRAP هستند، اما هدرهای سراسری را شامل نمیشوند و ممکن است تصاویر آغازین غیرقابل رمزگشایی داشته باشند.
- b_depth
- تنظیم عمق ارجاع فریم B. هنگامی که روی ۱ (پیشفرض) تنظیم شود، تمامی فریمهای B تنها به فریمهای P یا I ارجاع میدهند. با تنظیم مقادیر بزرگتر، چندین لایه از فریمهای B وجود خواهد داشت و فریمها در هر لایه تنها به فریمهای لایههای بالاتر ارجاع خواهند داد.
- async_depth
- حداکثر موازیسازی پردازش. این مقدار را برای بهبود عملکرد تککاناله افزایش دهید. این گزینه در صورتی که درایور تابع vaSyncBuffer را پیادهسازی نکرده باشد کار نمیکند. لطفاً مطمئن شوید در صورت استفاده از مقدار بزرگ async_depth، به اندازه کافی hw_frames تخصیص داده شده باشد.
- max_frame_size
- تنظیم حداکثر اندازه مجاز بر حسب بایت برای هر فریم. اگر اندازه فریم از این محدودیت فراتر رود، اینکودر مقدار QP را برای کنترل اندازه فریم تنظیم میکند. در حالت کنترل نرخ CQP نامعتبر است.
- rc_mode
- تنظیم حالت
کنترل نرخ
مورد
استفاده. یک
درایور
مشخص ممکن
است تنها از
زیرمجموعهای
از این
حالتها
پشتیبانی
کند.
حالتهای ممکن:
- auto
- انتخاب خودکار حالت بر اساس پشتیبانی درایور و سایر گزینهها. این مقدار پیشفرض است.
- CQP
- کیفیت ثابت (Constant-quality).
- CBR
- نرخ بیت ثابت (Constant-bitrate).
- VBR
- نرخ بیت متغیر (Variable-bitrate).
- ICQ
- کیفیت ثابت هوشمند (Intelligent constant-quality).
- QVBR
- نرخ بیت متغیر با کیفیت معین (Quality-defined variable-bitrate).
- AVBR
- نرخ بیت متغیر میانگین (Average variable bitrate).
- blbrc
- فعالسازی کنترل نرخ در سطح بلوک، که نرخ بیت متفاوتی را بلوک به بلوک اختصاص میدهد. برای حالت CQP نامعتبر است.
هر اینکودر گزینههای اختصاصی خود را نیز دارد:
- av1_vaapi
- گزینه profile مقدار seq_profile را تنظیم میکند. گزینه tier مقدار seq_tier را تنظیم میکند. گزینه level مقدار seq_level_idx را تنظیم میکند.
- tiles
- تنظیم تعداد تایلها (tiles) برای انکود ویدیوی ورودی، به صورت columns x rows. (پیشفرض auto است که به معنی استفاده از حداقل تعداد سطر/ستون تایل است).
- tile_groups
- تنظیم تعداد گروههای تایل. تمامی تایلها تا حد امکان به طور یکنواخت در هر گروه تایل توزیع خواهند شد. (پیشفرض ۱ است).
- h264_vaapi
- گزینه profile مقدار profile_idc و constraint_set*_flagها را تنظیم میکند. گزینه level مقدار level_idc را تنظیم میکند.
- coder
- تنظیم اینکودر انتروپی (پیشفرض cabac است). مقادیر ممکن:
- aud
- گنجاندن جداکنندههای واحد دسترسی (access unit delimiters) در استریم (بهطور پیشفرض گنجانده نمیشود).
- sei
- تنظیم انواع پیامهای SEI برای گنجاندن. ترکیبی از مقادیر زیر:
- identifier
- گنجاندن یک پیام user_data_unregistered حاوی اطلاعاتی درباره اینکودر.
- timing
- گنجاندن پارامترهای زمانبندی تصویر (پیامهای buffering_period و pic_timing).
- recovery_point
- گنجاندن نقاط بازیابی در صورت لزوم (پیامهای recovery_point).
- hevc_vaapi
- گزینههای profile و level به ترتیب مقادیر general_profile_idc و general_level_idc را تنظیم میکنند.
- aud
- گنجاندن جداکنندههای واحد دسترسی در استریم (بهطور پیشفرض گنجانده نمیشود).
- tier
- تنظیم general_tier_flag. این ممکن است بر سطح (level) انتخابشده برای استریم در صورتی که صراحتاً مشخص نشده باشد تأثیر بگذارد.
- sei
- تنظیم انواع پیامهای SEI برای گنجاندن. ترکیبی از مقادیر زیر:
- hdr
- گنجاندن متادیتای HDR در صورتی که فریمهای ورودی آن را داشته باشند (پیامهای mastering_display_colour_volume و content_light_level).
- tiles
- تنظیم تعداد تایلها برای انکود ویدیوی ورودی، به صورت columns x rows. مقادیر بزرگتر موازیسازی بیشتری در هر دو بخش انکود و دیکود فراهم میکنند، اما ممکن است بهرهوری انکود را کاهش دهند.
- mjpeg_vaapi
- تنها از
انکود خط
پایه DCT
پشتیبانی
میشود.
اینکودر
همیشه از
جدولهای
استاندارد
کوانتیزاسیون
و هافمن
استفاده
میکند -
گزینه global_quality
جدول
کوانتیزاسیون
استاندارد
را
مقیاسبندی
میکند
(محدوده
۱-۱۰۰).
برای YUV، حالتهای نمونهبرداری فرعی 4:2:0، 4:2:2 و 4:4:4 پشتیبانی میشوند. RGB نیز پشتیبانی میشود و یک تصویر JPEG از نوع RGB ایجاد میکند.
- jfif
- گنجاندن هدر JFIF در هر فریم (بهطور پیشفرض گنجانده نمیشود).
- huffman
- گنجاندن جدولهای استاندارد هافمن (بهطور پیشفرض فعال است). غیرفعال کردن این گزینه چند صد بایت در هر فریم خروجی صرفهجویی میکند، اما ممکن است سازگاری با برخی دیکودرهای JPEG را که MJPEG را به طور کامل مدیریت نمیکنند از بین ببرد.
- mpeg2_vaapi
- گزینههای profile و level مقدار profile_and_level_indication را تعیین میکنند.
- vp8_vaapi
- فریمهای B
پشتیبانی
نمیشوند.
گزینه global_quality مقدار q_idx مورد استفاده برای فریمهای غیرکلیدی را تنظیم میکند (محدوده ۰-۱۲۷).
- loop_filter_level
- loop_filter_sharpness
- تنظیم دستی پارامترهای فیلتر حلقه (loop filter).
- vp9_vaapi
- گزینه global_quality مقدار q_idx مورد استفاده برای فریمهای P را تنظیم میکند (محدوده ۰-۲۵۵).
- loop_filter_level
- loop_filter_sharpness
- تنظیم دستی پارامترهای فیلتر حلقه.
فریمهای B پشتیبانی میشوند، اما استریم خروجی همواره به ترتیب انکود است تا ترتیب نمایش. در صورت فعال بودن فریمهای B، ممکن است استفاده از فیلتر جریان بیت vp9_raw_reorder برای اصلاح استریم خروجی جهت نمایش فریمها به ترتیب درست ضروری باشد.
تنها فریمهای عادی تولید میشوند - ممکن است برای تولید استریمی قابل استفاده با همه دیکودرها، به فیلتر جریان بیت vp9_superframe نیاز باشد.
vbn
اینکودر تصویر باینری Vizrt (Vizrt Binary Image).
این فرمت توسط شرکت پخش Vizrt برای پخش سریع بافتها (texture streaming) استفاده میشود. ویژگیهای پیشرفته این فرمت از قبیل فشردهسازی LZW دادههای بافت یا ایجاد mipmapها پشتیبانی نمیشوند.
گزینهها (Options)
- format string
- فشردهسازی بافت مورد استفاده در فایل VBN را تنظیم میکند. میتواند dxt1، dxt5 یا raw باشد. پیشفرض dxt5 است.
vc2
فرمت SMPTE VC-2 (پیشتر BBC Dirac Pro). این کدک در اصل برای پخش حرفهای طراحی شده بود اما از آنجا که از yuv420، yuv422 و yuv444 در عمقهای ۸ (محدوده محدود یا کامل)، ۱۰ یا ۱۲ بیت پشتیبانی میکند، برای سایر کارهایی که به سربار و فشردهسازی کم نیاز دارند (مانند ضبط صفحهنمایش) مناسب است.
گزینهها (Options)
- b
- نرخ بیت ویدیوی هدف را تنظیم میکند. معمولاً این مقدار حدود ۱:۶ نرخ بیت ویدیوی فشردهنشده است (مثلاً برای 1920x1080 50fps yuv422p10 حدود 400Mbps است). مقادیر بالاتر (نزدیک به نرخ بیت فشردهنشده) حالت فشردهسازی بدون اتلاف را فعال میکنند.
- field_order
- کدگذاری میدانی را در صورت تنظیم برای ورودیهای درهمبافته (interlaced) فعال میکند (مثلاً tt - ابتدا فیلد بالایی). با محتوای درهمبافته باید فشردهسازی را افزایش دهد زیرا فیلدها را جدا کرده و هر یک را جداگانه انکود میکند.
- wavelet_depth
- تعداد کل تبدیلهای موجک (wavelet transforms) را برای اعمال تعیین میکند، بین ۱ تا ۵ (پیشفرض). مقادیر کمتر فشردهسازی و کیفیت را کاهش میدهند. دیکودرهای ضعیفتر ممکن است قادر به مدیریت مقادیر wavelet_depth بیش از ۳ نباشند.
- wavelet_type
- نوع تبدیل را تنظیم میکند. در حال حاضر تنها 5_3 (LeGall) و 9_7 (Deslauriers-Dubuc) پیادهسازی شدهاند که 9_7 فشردهسازی بهتری دارد و بنابراین پیشفرض است.
- slice_width
- slice_height
- اندازه هر برش (slice) را تعیین میکند. مقادیر بزرگتر به فشردهسازی بهتر منجر میشوند. برای سازگاری با سایر دیکودرهای محدودتر از slice_width برابر با ۳۲ و slice_height برابر با ۸ استفاده کنید.
- tolerance
- میزان تلورانس کاهش نرخ سیستم کنترل نرخ را بر حسب درصد تعیین میکند. این کار برای جلوگیری از اجرای یک جستجوی سنگین است.
- qm
- پیشتنظیم ماتریس کوانتیزاسیون مورد استفاده را به صورت پیشفرض یا زمانی که wavelet_depth روی ۵ تنظیم شده است تعیین میکند.
- default از ماتریس کوانتیزاسیون پیشفرض مشخصات استفاده میکند که با مقادیری برای سطح پنجم گسترش یافته است. این گزینه تعادل خوبی بین حفظ جزئیات و حذف آرتیفکتها فراهم میکند.
- flat از یک ماتریس کوانتیزاسیون کاملاً صفرشده استفاده میکند. این گزینه PSNR را افزایش میدهد اما ممکن است ادراک بصری را کاهش دهد. در بنچمارکهای غیرواقعی استفاده میشود.
- color جزئیات را کاهش میدهد اما در نرخهای بیت بسیار پایین تلاش میکند رنگ را حفظ کند.
اینکودرهای زیرنویس (SUBTITLES ENCODERS)
dvbsub
این کدک فرمت زیرنویس بیتی (bitmap) را که در پخش و ضبطهای DVB استفاده میشود، انکود میکند. بیتمپها معمولاً در یک کانتینر مانند MPEG-TS به عنوان یک استریم مجزا جاسازی میشوند.
گزینهها (Options)
- min_bpp integer (2, 4, or 8)
- تنظیم
حداقل
مقدار بیت
بر پیکسل (bits-per-pixel)
برای
جدولهای
تطبیق رنگ (color
lookup tables) زیرنویس.
سامانه DVB از جدولهای تطبیق رنگ ۲، ۴ و ۸ بیت بر پیکسل پشتیبانی میکند. این گزینه امکان اجبار یک مقدار مشخص بیت بر پیکسل را صرفنظر از تعداد رنگها فراهم میسازد. از آنجا که همه پخشکنندهها از ۲ بیت بر پیکسل پشتیبانی نمیکنند یا آن را به درستی پشتیبانی نمینمایند، این مقدار به طور پیشفرض روی ۴ تنظیم است.
dvdsub
این کدک فرمت زیرنویس بیتی مورد استفاده در DVDها را انکود میکند. معمولاً آنها در جفتفایلهای VOBSUB ذخیره میشوند (*.idx + *.sub)، و همچنین میتوانند در فایلهای Matroska استفاده شوند.
گزینهها (Options)
- palette
- مشخص کردن
پالت
سراسری
مورد
استفاده
توسط
بیتمپها.
فرمت این گزینه رشتهای شامل ۱۶ عدد هگزادسیمال ۲۴ بیتی (بدون پیشوند 0x) است که با کاما از هم جدا شدهاند، برای نمونه "0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b".
- even_rows_fix
- هنگامی که
روی ۱ تنظیم
شود،
راهکاری
جانبی را
فعال
میکند که
تعداد
سطرهای
پیکسل را در
تمام
زیرنویسها
زوج میکند.
این کار
مشکلی را در
برخی
پخشکنندهها
که در صورت
فرد بودن
سطر آخر را
قطع
میکنند
رفع میکند.
این راهکار
در صورت
نیاز تنها
یک سطر
کاملاً
شفاف اضافه
میکند.
سربار آن
اندک است و
معمولاً به
طور
میانگین یک
بایت به
ازای هر
زیرنویس
است.
به طور پیشفرض، این راهکار غیرفعال است.
lrc
این کدک فرمت متن ترانه LRC را انکود میکند.
گزینهها (Options)
- precision
- دقت بخش
کسری برچسب
زمان (timestamp) را
مشخص
میکند.
مبنای زمان
(Time base) بر اساس
این مقدار
تعیین
میشود.
پیشفرض برابر ۲ برای صدم ثانیه (centiseconds) است.
فیلترهای جریان بیت (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 است.
مکسرها (MUXERS)
مکسرها عناصر پیکربندیشدهای در FFmpeg هستند که امکان نوشتن جریانهای چندرسانهای را در نوع خاصی از پرونده فراهم میکنند.
هنگامی که بیلد FFmpeg خود را پیکربندی میکنید، تمام مکسرهای پشتیبانیشده به طور پیشفرض فعال هستند. میتوانید فهرست تمام مکسرهای موجود را با استفاده از گزینه configure به نام "--list-muxers" مشاهده کنید.
میتوانید تمام مکسرها را با گزینه پیکربندی "--disable-muxers" غیرفعال کنید و مکسرهای تکی را به طور انتخابی با گزینههای "--enable-muxer=MUXER" / "--disable-muxer=MUXER" فعال یا غیرفعال نمایید.
گزینه "-muxers" در ابزارهای ff* فهرست مکسرهای فعال را نمایش میدهد. از "-formats" برای مشاهده فهرست ترکیبی دیمکسرها و مکسرهای فعال استفاده کنید.
در ادامه شرحی از برخی مکسرهای در دسترس فعلی آمده است.
مکسرهای خام (Raw muxers)
این بخش مکسرهای خام را پوشش میدهد. آنها یک جریان تکی مطابق با کدک تعیینشده را میپذیرند. آنها برچسبهای زمانی یا متاداده را ذخیره نمیکنند. پسوند شناساییشده همان نام مکسر است مگر اینکه خلاف آن ذکر شده باشد.
شامل مکسرهای زیر است. نوع رسانه و پسوندهای احتمالی مورد استفاده برای انتخاب خودکار مکسر از روی پسوندهای خروجی نیز نشان داده شده است.
- ac3 audio
- صدای Dolby Digital، همچنین معروف به AC-3.
- adx audio
- صدای CRI Middleware ADX.
این مکسر تعداد کل نمونهها را نزدیک به شروع اولین بسته زمانی که خروجی قابل جستجو (seekable) باشد و تعداد بتواند در ۳۲ بیت ذخیره شود، مینویسد.
- aptx audio
- صدای aptX (فناوری پردازش صوتی برای بلوتوث).
- aptx_hd audio (aptxdh)
- صدای aptX HD (فناوری پردازش صوتی برای بلوتوث).
- avs2 video (avs, avs2)
- ویدیوی AVS2-P2 (استاندارد صوتی تصویری - نسل دوم - بخش ۲) / استاندارد IEEE 1857.4
- avs3 video (avs3)
- ویدیوی AVS3-P2 (استاندارد صوتی تصویری - نسل سوم - بخش ۲) / استاندارد IEEE 1857.10
- cavsvideo video (cavs)
- استاندارد AVS چینی (استاندارد صوتی تصویری - نسل اول)
- codec2raw audio
- صدای Codec 2.
هیچ پسوندی ثبت نشده است، بنابراین نام قالب باید ارائه شود، به عنوان مثال با ابزار خط فرمان ffmpeg به صورت "-f codec2raw".
- data any
- مکسر داده
عمومی.
این مکسر یک جریان تکی با هر کدک از هر نوع را میپذیرد. جریان ورودی باید با استفاده از گزینه "-map" با ابزار خط فرمان ffmpeg انتخاب شود.
هیچ پسوندی ثبت نشده است، بنابراین نام قالب باید مشخص شود، به عنوان مثال با ابزار خط فرمان ffmpeg به صورت "-f data".
- dfpwm audio (dfpwm)
- مکسر صوتی خام DFPWM1a (مدولاسیون عرض پالس فیلتر پویا).
- dirac video (drc, vc2)
- ویدیوی BBC Dirac.
کدک Dirac Pro زیرمجموعهای از آن است و به عنوان SMPTE VC-2 استاندارد شده است.
- dnxhd video (dnxhd, dnxhr)
- ویدیوی Avid DNxHD.
به عنوان SMPTE VC-3 استاندارد شده است. جریانهای DNxHR را میپذیرد.
- dts audio
- صدای DTS Coherent Acoustics (DCA).
- eac3 audio
- صدای Dolby Digital Plus، همچنین معروف به Enhanced AC-3.
- evc video (evc)
- ویدیوی MPEG-5 Essential Video Coding (EVC) / EVC / MPEG-5 Part 1 EVC.
- g722 audio
- صدای ITU-T G.722.
- g723_1 audio (tco, rco)
- صدای ITU-T G.723.1.
- g726 audio
- صدای ITU-T G.726 با
ترتیب
بایتی بزرگ
(Big-endian یا "تراز
چپ").
هیچ پسوندی ثبت نشده است، بنابراین نام قالب باید مشخص شود، به عنوان مثال با ابزار خط فرمان ffmpeg به صورت "-f g726".
- g726le audio
- صدای ITU-T G.726 با
ترتیب
بایتی کوچک
(Little-endian یا "تراز
راست").
هیچ پسوندی ثبت نشده است، بنابراین نام قالب باید مشخص شود، به عنوان مثال با ابزار خط فرمان ffmpeg به صورت "-f g726le".
- gsm audio
- صدای Global System for Mobile Communications (GSM).
- h261 video
- ویدیوی ITU-T H.261.
- h263 video
- ویدیوی ITU-T H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2.
- h264 video (h264, 264)
- ویدیوی ITU-T H.264 / MPEG-4 Part 10 AVC. جریان بیت باید به نحو Annex B تبدیل شود اگر در حالت پیشوند طول باشد.
- hevc video (hevc, h265, 265)
- ویدیوی ITU-T H.265 / MPEG-H Part 2 HEVC. جریان بیت باید به نحو Annex B تبدیل شود اگر در حالت پیشوند طول باشد.
- m4v video
- ویدیوی MPEG-4 Part 2.
- mjpeg video (mjpg, mjpeg)
- ویدیوی Motion JPEG.
- mlp audio
- صدای Meridian Lossless Packing، همچنین معروف به Packed PCM.
- mp2 audio (mp2, m2a, mpa)
- صدای MPEG-1 Audio Layer II.
- mpeg1video video (mpg, mpeg, m1v)
- ویدیوی MPEG-1 Part 2.
- mpeg2video video (m2v)
- ویدیوی ITU-T H.262 / MPEG-2 Part 2.
- obu video
- مکسر
واحدهای
جریان بیت
باز
کمسربار AV1 (Open
Bitstream Units).
واحدهای OBU تحدیدکننده زمانی در تمام واحدهای زمانی جریان درج خواهند شد.
- rawvideo video (yuv, rgb)
- ویدیوی فشردهنشده خام.
- sbc audio (sbc, msbc)
- صدای کدک زیرباندی با پیچیدگی پایین Bluetooth SIG (SBC).
- truehd audio (thd)
- صدای Dolby TrueHD.
- vc1 video
- ویدیوی SMPTE 421M / VC-1.
مثالها
- •
- ذخیره
فریمهای
ویدیوی خام
با مکسر rawvideo
با استفاده
از ffmpeg:
ffmpeg -f lavfi -i testsrc -t 10 -s hd1080p testsrc.yuv
از آنجا که مکسر rawvideo اطلاعات مربوط به اندازه و قالب را ذخیره نمیکند، این اطلاعات باید هنگام دیمکس کردن پرونده ارائه شوند:
ffplay -video_size 1920x1080 -pixel_format rgb24 -f rawvideo testsrc.rgb
مکسرهای خام پیسیام (Raw PCM muxers)
این بخش مکسرهای صوتی خام PCM (مدولاسیون کد پالس) را پوشش میدهد.
آنها یک جریان تکی مطابق با کدک تعیینشده را میپذیرند. آنها برچسبهای زمانی یا متاداده را ذخیره نمیکنند. پسوند شناساییشده همان نام مکسر است.
شامل مکسرهای زیر است. پسوند اختیاری اضافی مورد استفاده برای انتخاب خودکار مکسر از روی پسوند خروجی نیز در پرانتز نشان داده شده است.
- alaw (al)
- پیسیام A-law
- f32be
- پیسیام ۳۲ بیتی ممیز شناور با ترتیب بایتی بزرگ (Big-endian)
- f32le
- پیسیام ۳۲ بیتی ممیز شناور با ترتیب بایتی کوچک (Little-endian)
- f64be
- پیسیام ۶۴ بیتی ممیز شناور با ترتیب بایتی بزرگ (Big-endian)
- f64le
- پیسیام ۶۴ بیتی ممیز شناور با ترتیب بایتی کوچک (Little-endian)
- mulaw (ul)
- پیسیام mu-law
- s16be
- پیسیام ۱۶ بیتی علامتدار با ترتیب بایتی بزرگ (Big-endian)
- s16le
- پیسیام ۱۶ بیتی علامتدار با ترتیب بایتی کوچک (Little-endian)
- s24be
- پیسیام ۲۴ بیتی علامتدار با ترتیب بایتی بزرگ (Big-endian)
- s24le
- پیسیام ۲۴ بیتی علامتدار با ترتیب بایتی کوچک (Little-endian)
- s32be
- پیسیام ۳۲ بیتی علامتدار با ترتیب بایتی بزرگ (Big-endian)
- s32le
- پیسیام ۳۲ بیتی علامتدار با ترتیب بایتی کوچک (Little-endian)
- s8 (sb)
- پیسیام ۸ بیتی علامتدار
- u16be
- پیسیام ۱۶ بیتی بدون علامت با ترتیب بایتی بزرگ (Big-endian)
- u16le
- پیسیام ۱۶ بیتی بدون علامت با ترتیب بایتی کوچک (Little-endian)
- u24be
- پیسیام ۲۴ بیتی بدون علامت با ترتیب بایتی بزرگ (Big-endian)
- u24le
- پیسیام ۲۴ بیتی بدون علامت با ترتیب بایتی کوچک (Little-endian)
- u32be
- پیسیام ۳۲ بیتی بدون علامت با ترتیب بایتی بزرگ (Big-endian)
- u32le
- پیسیام ۳۲ بیتی بدون علامت با ترتیب بایتی کوچک (Little-endian)
- u8 (ub)
- پیسیام ۸ بیتی بدون علامت
- vidc
- پیسیام Archimedes VIDC
مکسرهای جریان برنامه MPEG-1/MPEG-2
این بخش قالبهای متعلق به خانواده سیستمهای MPEG-1 و MPEG-2 را پوشش میدهد.
قالب سیستمهای MPEG-1 (همچنین معروف به ISO/IEEC 11172-1 یا جریان برنامه MPEG-1) برای قالب تراکهای رسانهای ذخیرهشده در VCD (دیسک فشرده ویدیویی) پذیرفته شده است.
استاندارد سیستمهای MPEG-2 (همچنین معروف به ISO/IEEC 13818-1) دو قالب کانتینر را پوشش میدهد، یکی معروف به جریان انتقال (Transport Stream) و دیگری جریان برنامه (Program Stream)؛ در اینجا تنها مورد دوم پوشش داده میشود.
قالب جریان برنامه MPEG-2 (همچنین به دلیل پسوند پرونده مربوطه معروف به VOB) توسعهای از جریان برنامه MPEG-1 است: علاوه بر پشتیبانی از کدکهای مختلف برای جریانهای صوتی و تصویری، زیرنویسها و متاداده ناوبری را نیز ذخیره میکند. جریان برنامه MPEG-2 برای ذخیره جریانهای رسانهای در دستگاههای ذخیرهسازی SVCD و DVD پذیرفته شده است.
این بخش شامل مکسرهای زیر است.
- mpeg (mpg,mpeg)
- مکسر سیستمهای MPEG-1 / جریان برنامه MPEG-1.
- vcd
- مکسر
سیستمهای
MPEG-1 / جریان
برنامه MPEG-1 (VCD).
این مکسر میتواند برای تولید تراکها در قالب پذیرفتهشده توسط دستگاههای ذخیرهسازی VCD (دیسک فشرده ویدیویی) استفاده شود.
همانند مکسر mpeg است با چند تفاوت جزئی.
- vob
- مکسر جریان برنامه MPEG-2 (VOB).
- dvd
- مکسر جریان
برنامه MPEG-2 (DVD VOB).
این مکسر میتواند برای تولید تراکها در قالب پذیرفتهشده توسط دستگاههای ذخیرهسازی DVD (دیسک چندمنظوره دیجیتال) استفاده شود.
همانند مکسر vob است با چند تفاوت جزئی.
- svcd (vob)
- مکسر جریان
برنامه MPEG-2 (SVCD VOB).
این مکسر میتواند برای تولید تراکها در قالب پذیرفتهشده توسط دستگاههای ذخیرهسازی SVCD (دیسک فشرده ویدیویی برتر) استفاده شود.
همانند مکسر vob است با چند تفاوت جزئی.
گزینهها
- muxrate rate
- تنظیم نرخ مکس تعریفشده توسط کاربر بر حسب تعداد بیت بر ثانیه. اگر مشخص نشود، نرخ مکس محاسبهشده به طور خودکار به کار گرفته میشود. مقدار پیشفرض 0 است.
- preload delay
- تنظیم تأخیر دیمکس-دیکود اولیه بر حسب میکروثانیه. مقدار پیشفرض 500000 است.
مکسرهای MOV/MPEG-4/ISOMBFF
این بخش قالبهای متعلق به خانواده QuickTime / MOV، از جمله قالب MPEG-4 Part 14 و قالب پرونده رسانهای پایه ISO (ISOBMFF) را پوشش میدهد. این قالبها ساختار مشترکی بر اساس قالب پرونده رسانهای پایه ISO (ISOBMFF) دارند.
قالب MOV در ابتدا برای استفاده با Apple QuickTime توسعه داده شد. بعدها به عنوان پایهای برای قالب MPEG-4 Part 1 (بعدها Part 14)، که با عنوان ISO/IEC 14496-1 نیز شناخته میشود، به کار رفت. سپس آن قالب به ISOBMFF تعمیم یافت، که همچنین با نامهای قالب MPEG-4 Part 12، استاندارد ISO/IEC 14496-12 یا ISO/IEC 15444-12 نامیده میشود.
این بخش شامل مکسرهای زیر است.
- 3gp
- قالب پروژه مشارکت نسل سوم (3GPP) برای سرویسهای چندرسانهای 3G UMTS
- 3g2
- قالب پروژه مشارکت ۲ نسل سوم (3GP2 یا 3GPP2) برای سرویسهای چندرسانهای 3G CDMA2000، مشابه با 3gp با افزونهها و محدودیتها
- f4v
- قالب ویدیویی Adobe Flash
- ipod
- قالب پرونده صوتی MPEG-4، همانند MOV/MP4 اما محدود به اینکه تنها شامل جریانهای صوتی باشد، معمولاً با دستگاه iPod اپل پخش میشود
- ismv
- قالب صوتی/تصویری استریم روان Microsoft IIS (خدمات اطلاعات اینترنتی) (ISMV یا ISMA). این قالب بر پایه قالب MPEG-4 Part 14 با چند نوع ناسازگار است که برای استریم پروندههای رسانهای برای سرور Microsoft IIS استفاده میشود.
- mov
- قالب پخشکننده QuickTime که با پسوند ".mov" شناسایی میشود
- mp4
- قالب MP4 یا MPEG-4 Part 14
- psp
- گونه قالب PlayStation Portable MP4/MPEG-4 Part 14. این قالب بر پایه قالب MPEG-4 Part 14 با چند نوع ناسازگار است که برای پخش پروندهها در دستگاههای PlayStation استفاده میشود.
قطعهبندی (Fragmentation)
مکسرهای mov، mp4 و ismv از قطعهبندی پشتیبانی میکنند. به طور معمول، یک پرونده MOV/MP4 تمام متادادههای مربوط به تمام بستهها را در یک مکان ذخیره میکند.
این دادهها معمولاً در انتهای پرونده نوشته میشوند، اما میتوان با افزودن "+faststart" به "-movflags"، یا با استفاده از ابزار qt-faststart، آنها را برای پخش بهتر به ابتدای پرونده منتقل کرد.
یک پرونده قطعهبندیشده شامل تعدادی قطعه (fragment) است، که در آن بستهها و متادادههای مربوط به آن بستهها در کنار هم ذخیره میشوند. نوشتن یک پرونده قطعهبندیشده این مزیت را دارد که پرونده حتی در صورت قطع شدن فرایند نوشتن نیز قابل دیکود است (در حالی که یک MOV/MP4 معمولی اگر به درستی خاتمه نیابد غیرقابل دیکود خواهد بود)، و هنگام نوشتن پروندههای بسیار طولانی به حافظه کمتری نیاز دارد (زیرا نوشتن پروندههای معمولی MOV/MP4 اطلاعات مربوط به تکتک بستهها را تا زمان بسته شدن پرونده در حافظه نگه میدارد). نقطه ضعف آن این است که سازگاری کمتری با سایر برنامهها دارد.
قطعهبندی با تنظیم یکی از گزینههایی که نحوه برش پرونده به قطعات را مشخص میکنند، فعال میشود:
اگر بیش از یک شرط مشخص شود، قطعات هنگامی که یکی از شرایط تعیینشده برآورده شود برش داده میشوند. استثنای این قاعده گزینه min_frag_duration است که باید برای اعمال هر یک از شرایط دیگر برآورده شود.
گزینهها
- brand brand_string
- بازنویسی نشان تجاری اصلی (major brand).
- empty_hdlr_name bool
- فعالسازی برای صرفنظر از نوشتن نام درون جعبه "hdlr". پیشفرض "false" است.
- encryption_key key
- تنظیم کلید رمزگذاری رسانه در قالب هگزادسیمال
- encryption_kid kid
- تنظیم شناسه کلید رمزگذاری رسانه در قالب هگزادسیمال
- encryption_scheme scheme
- پیکربندی طرح رمزگذاری، مقادیر مجاز عبارتند از none و cenc-aes-ctr
- frag_duration duration
- ایجاد قطعاتی با طول duration میکروثانیه.
- frag_interleave number
- درهمآمیزی (Interleave) نمونهها درون قطعات (حداکثر تعداد نمونههای متوالی؛ مقدار کمتر درهمآمیزی فشردهتری ایجاد میکند اما سربار بیشتری دارد). به طور پیشفرض روی 0 تنظیم شده است.
- frag_size size
- ایجاد قطعاتی که حداکثر تا size بایت داده بار مفید (payload) دارند
- iods_audio_profile profile
- مشخص کردن شماره iods برای اتم پروفایل صوتی (از -1 تا 255)، پیشفرض -1 است
- iods_video_profile profile
- مشخص کردن شماره iods برای اتم پروفایل ویدیویی (از -1 تا 255)، پیشفرض -1 است
- ism_lookahead num_entries
- مشخص کردن تعداد ورودیهای پیشنگری (lookahead) برای پروندههای ISM (از 0 تا 255)، پیشفرض 0 است
- min_frag_duration duration
- عدم ایجاد قطعات کوتاهتر از duration میکروثانیه
- moov_size bytes
- رزرو فضا برای اتم moov در ابتدای پرونده به جای قرار دادن اتم moov در انتها. اگر فضای رزرو شده ناکافی باشد، عملیات مکس با شکست مواجه میشود.
- mov_gamma gamma
- تعیین مقدار گاما برای اتم gama (به عنوان یک عدد اعشاری از 0 تا 10)، پیشفرض 0.0 است، باید همراه با "+ movflags" تنظیم شود
- movflags flags
- تنظیم سوییچهای مختلف مکس. فلگهای زیر میتوانند استفاده شوند:
- cmaf
- نوشتن خروجی MP4 قطعهبندیشده سازگار با CMAF (قالب برنامه رسانهای مشترک)
- dash
- نوشتن خروجی MP4 قطعهبندیشده سازگار با DASH (استریم تطبیقی پویا روی HTTP)
- default_base_moof
- مشابه با فلگ omit_tfhd_offset، این فلگ از نوشتن فیلد مطلق base_data_offset در اتمهای tfhd اجتناب میکند، اما این کار را با استفاده از فلگ جدید default-base-is-moof انجام میدهد. این فلگ از استاندارد 14496-12:2012 جدید است. این ممکن است در شرایط خاص تجزیه قطعات را سادهتر کند (با اجتناب از پایهگذاری محاسبات مکان قطعه تراک بر اساس انتهای ضمنی قطعه تراک قبلی).
- delay_moov
- به تأخیر انداختن نوشتن moov اولیه تا زمانی که اولین قطعه برش داده شود، یا تا اولین تخلیه (flush) قطعه
- disable_chpl
- غیرفعالسازی نشانگرهای فصل Nero (اتم chpl). به طور معمول، هم فصلهای Nero و هم یک تراک فصل QuickTime در پرونده نوشته میشوند. با تنظیم این گزینه، تنها تراک فصل QuickTime نوشته خواهد شد. فصلهای Nero میتوانند هنگام پردازش مجدد پرونده با برخی برنامههای برچسبگذاری، مانند mp3Tag 2.61a و iTunes 11.3، باعث خرابی شوند، و احتمالاً نسخههای دیگر نیز تحت تأثیر قرار میگیرند.
- faststart
- اجرای یک دور دوم برای انتقال اندیس (اتم moov) به ابتدای پرونده. این عملیات میتواند مدتی طول بکشد و در موقعیتهای مختلف مانند خروجی قطعهبندیشده کار نخواهد کرد، بنابراین به طور پیشفرض فعال نیست.
- frag_custom
- اجازه به فراخوانکننده برای انتخاب دستی زمان برش قطعات، با فراخوانی "av_write_frame(ctx, NULL)" جهت نوشتن یک قطعه با بستههای نوشتهشده تا آن لحظه. (این تنها با سایر برنامههایی که libavformat را ادغام میکنند مفید است، نه از طریق ffmpeg.)
- frag_discont
- اعلام اینکه قطعه بعدی نسبت به قطعات قبلی ناپیوسته است
- frag_every_frame
- قطعهبندی در هر فریم
- frag_keyframe
- شروع یک قطعه جدید در هر فریم کلیدی ویدیو
- global_sidx
- نوشتن یک اندیس sidx سراسری در ابتدای پرونده
- isml
- ایجاد یک فید استریم روان زنده (برای ارسال به نقطه انتشار)
- negative_cts_offsets
- فعالسازی
استفاده از
نسخه ۱ جعبه
CTTS، که در آن
آفستهای CTS
میتوانند
منفی باشند.
این ویژگی
به نمونه
اولیه
اجازه
میدهد که DTS/CTS
برابر با
صفر داشته
باشد، و
نیاز به
فهرستهای
ویرایش را
برای برخی
موارد
مانند
تراکهای
ویدیویی
دارای
فریمهای B
کاهش
میدهد.
علاوه بر
این،
انطباق با
دستورالعملهای
تعاملپذیری
DASH-IF را
آسانتر
میکند.
این گزینه هنگام نوشتن پروندههای ismv (استریم روان) به طور ضمنی تنظیم میشود.
- omit_tfhd_offset
- عدم نوشتن هیچ base_data_offset مطلقی در اتمهای tfhd. این کار از پیوند دادن قطعات به موقعیتهای بایتی مطلق در پرونده/جریانها جلوگیری میکند.
- prefer_icc
- در صورت نوشتن اتم colr، اولویت دادن به استفاده از پروفایل ICC در صورت وجود در دادههای جانبی بسته جریان.
- rtphint
- افزودن تراکهای راهنمای RTP (hinting) به پرونده خروجی
- separate_moof
- نوشتن یک اتم moof (قطعه فیلم) جداگانه برای هر تراک. به طور معمول، بستهها برای تمام تراکها در یک اتم moof نوشته میشوند (که کمی کارآمدتر است)، اما با تنظیم این گزینه، مکسر یک جفت moof/mdat برای هر تراک مینویسد که تفکیک تراکها را آسانتر میسازد.
- skip_sidx
- صرفنظر از نوشتن اتم sidx. هنگامی که سربار بیتریت ناشی از اتم sidx زیاد است، این گزینه میتواند برای مواردی که اتم sidx اجباری نیست استفاده شود. هنگامی که فلگ global_sidx فعال باشد، این گزینه نادیده گرفته میشود.
- skip_trailer
- صرفنظر از نوشتن دنباله mfra/tfra/mfro برای پروندههای قطعهبندیشده
- استفاده از اتم mdta برای متاداده
- write_colr
- نوشتن اتم colr حتی اگر اطلاعات رنگ نامشخص باشد. این فلگ آزمایشی است، ممکن است نام آن تغییر کند یا اصلاح شود؛ در اسکریپتها استفاده نکنید.
- write_gama
- نوشتن اتم منسوخشده gama
- hybrid_fragmented
- برای
قابلیت
بازیابی -
نوشتن
پرونده
خروجی به
صورت یک
پرونده
قطعهبندیشده.
این امکان
را میدهد
تا پرونده
میانی در
حین نوشته
شدن قابل
خواندن
باشد (به
ویژه اگر
فرایند
نوشتن به
طور
ناگهانی
متوقف شود).
پس از پایان
نوشتن،
پرونده به
یک پرونده
معمولی و
غیرقطعهبندیشده
تبدیل
میشود که
سازگارتر
است و
جستجوی
آسانتر و
سریعتری
را ممکن
میسازد.
در صورت قطع فرایند نوشتن، پرونده میانی را میتوان به صورت دستی بازسازی (remux) کرد تا یک پرونده معمولی و غیرقطعهبندیشده از آنچه در پرونده ناتمام نوشته شده بود به دست آید.
- movie_timescale scale
- تنظیم مقیاس زمانی نوشتهشده در جعبه هدر فیلم ("mvhd"). محدوده از 1 تا INT_MAX است. پیشفرض 1000 است.
- rtpflags flags
- افزودن
تراکهای
راهنمای RTP
به پرونده
خروجی.
فلگهای زیر میتوانند استفاده شوند:
- h264_mode0
- استفاده از حالت 0 برای H.264 در RTP
- latm
- استفاده از بستهبندی MP4A-LATM به جای MPEG4-GENERIC برای AAC
- rfc2190
- استفاده از بستهبندی RFC 2190 به جای RFC 4629 برای H.263
- send_bye
- ارسال بستههای RTCP BYE هنگام اتمام
- skip_rtcp
- عدم ارسال گزارشهای ارسالکننده RTCP
- skip_iods bool
- صرفنظر از نوشتن اتم iods (مقدار پیشفرض "true" است)
- use_editlist bool
- استفاده از فهرست ویرایش (مقدار پیشفرض "auto" است)
- use_stream_ids_as_track_ids bool
- استفاده از شناسههای جریان به عنوان شناسههای تراک (مقدار پیشفرض "false" است)
- video_track_timescale scale
- تنظیم مقیاس زمانی استفادهشده برای تراکهای ویدیویی. محدوده از 0 تا INT_MAX است. اگر روی 0 تنظیم شود، مقیاس زمانی به طور خودکار بر اساس پایه زمانی جریان بومی تنظیم میشود. پیشفرض 0 است.
- write_btrt bool
- اجبار یا غیرفعال کردن نوشتن جعبه بیتریت درون جعبه stsd یک تراک. این جعبه شامل اندازه بافر دیکود (بر حسب بایت)، حداکثر بیتریت و بیتریت متوسط برای تراک است. اگر هیچیک از این مقادیر قابل محاسبه نباشد، از نوشتن جعبه صرفنظر میشود. پیشفرض -1 یا "auto" است که جعبه را تنها در حالت MP4 مینویسد.
- write_prft option
- نوشتن جعبه مرجع زمانی تولیدکننده (PRFT) با یک منبع زمانی مشخص برای فیلد NTP در جعبه PRFT. مقدار را به صورت wallclock تنظیم کنید تا منبع زمانی به عنوان زمان ساعت دیواری (wallclock) تعیین شود و pts تا منبع زمانی به عنوان مقادیر PTS بستههای ورودی تعیین گردد.
- write_tmcd bool
- تعیین
"on" برای
اجبار به
نوشتن تراک
کد زمانی،
"off" برای
غیرفعال
کردن آن و
"auto" برای
نوشتن تراک
کد زمانی
تنها برای
خروجی mov و mp4
(پیشفرض).
تنظیم مقدار روی pts تنها برای موارد کاربردی انکودینگ زنده که در آن مقادیر PTS به عنوان زمان ساعت دیواری در مبدأ تنظیم شدهاند قابل اعمال است. به عنوان مثال، یک کاربرد انکودینگ با منبع ضبط decklink که در آن video_pts و audio_pts روی abs_wallclock تنظیم شدهاند.
مثالها
- •
- ارسال
محتوای Smooth Streaming
به صورت
بلادرنگ به
یک نقطه
انتشار در IIS
با مکسر ismv
با استفاده
از ffmpeg:
ffmpeg -re <<normal input/transcoding options>> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
a64
مکسر ویدیوی Commodore 64 قالب A64.
این مکسر یک جریان ویدیویی با کدک "a64_multi" یا "a64_multi5" را میپذیرد.
ac4
مکسر صوتی خام AC-4.
این مکسر یک جریان صوتی "ac4" را میپذیرد.
گزینهها
- write_crc bool
- در صورت فعال بودن، یک مجموع مقابلهای (checksum) از نوع CRC برای هر بسته در خروجی مینویسد، پیشفرض "false" است
adts
مکسر جریان انتقال دادههای صوتی (ADTS - Audio Data Transport Stream).
این مکسر یک جریان AAC را میپذیرد.
گزینهها
- write_id3v2 bool
- فعالسازی نوشتن برچسبهای ID3v2.4 در ابتدای جریان. پیشفرض غیرفعال است.
- write_apetag bool
- فعالسازی نوشتن برچسبهای APE در انتهای جریان. پیشفرض غیرفعال است.
- write_mpeg2 bool
- فعالسازی تنظیم بیت نسخه MPEG در هدر فریم ADTS روی 1 که نشاندهنده MPEG-2 است. پیشفرض 0 است که نشاندهنده MPEG-4 است.
aea
مکسر صوتی MD STUDIO.
این مکسر یک جریان صوتی ATRAC1 را با یک یا دو کانال و نرخ نمونهبرداری 44100Hz میپذیرد.
از آنجا که AEA از ذخیره عنوان تراک پشتیبانی میکند، این مکسر همچنین عنوان را از متاداده جریان در کانتینر مینویسد.
aiff
مکسر قالب پرونده تبادل صوتی (AIFF - Audio Interchange File Format).
گزینهها
- write_id3v2 bool
- فعالسازی نوشتن برچسبهای ID3v2 در صورت تنظیم روی 1. پیشفرض 0 (غیرفعال) است.
- id3v2_version bool
- انتخاب نسخه ID3v2 برای نوشتن. در حال حاضر فقط نسخههای ۳ و ۴ (معروف به ID3v2.3 و ID3v2.4) پشتیبانی میشوند. پیشفرض نسخه ۴ است.
alp
مکسر صوتی بازی Lego Racers متعلق به High Voltage Software.
یک جریان تک ADPCM_IMA_ALP با حداکثر ۲ کانال و نرخ نمونهبرداری نه بیشتر از 44100 Hz را میپذیرد.
پسوندها: "tun"، "pcm"
گزینهها
- type type
- تنظیم نوع
پرونده.
مقدار type مقادیر زیر را میپذیرد:
amr
مکسر صوتی 3GPP AMR (چندنرخی تطبیقی).
یک جریان صوتی تکی حاوی جریان AMR NB را میپذیرد.
amv
مکسر قالب AMV (ویدیوی رسانهای Actions).
apm
مکسر صوتی Rayman 2 APM شرکت Ubisoft.
یک جریان صوتی تکی ADPCM IMA APM را میپذیرد.
apng
مکسر گرافیک شبکهای متحرک قابل حمل (APNG).
یک جریان ویدیویی تکی APNG را میپذیرد.
گزینهها
- final_delay delay
- اجبار به ایجاد تأخیر بر حسب ثانیه پس از آخرین فریم در هر تکرار. مقدار پیشفرض 0.0 است.
- plays repetitions
- مشخص کردن تعداد دفعات پخش محتوا؛ مقدار 0 باعث ایجاد یک حلقه تکرار بینهایت میشود و با 1 هیچ تکراری وجود نخواهد داشت.
مثالها
- •
- استفاده از
ffmpeg برای
تولید یک
خروجی APNG با ۲
تکرار، و با
تأخیر نیم
ثانیهای
پس از اولین
تکرار:
ffmpeg -i INPUT -final_delay 0.5 -plays 2 out.apng
argo_asf
مکسر صوتی ASF شرکت Argonaut Games.
یک جریان صوتی تکی ADPCM را میپذیرد.
گزینهها
- version_major version
- بازنویسی نسخه اصلی (major) پرونده، مشخصشده به عنوان یک عدد صحیح، مقدار پیشفرض 2 است
- version_minor version
- بازنویسی نسخه فرعی (minor) پرونده، مشخصشده به عنوان یک عدد صحیح، مقدار پیشفرض 1 است
- name name
- جاسازی نام پرونده درون پرونده؛ اگر مشخص نشود، از نام پرونده خروجی استفاده میشود. نام تا ۸ نویسه بریده میشود.
argo_cvg
مکسر صوتی CVG شرکت Argonaut Games.
یک جریان صوتی تکی یککاناله ADPCM با نرخ 22050Hz را میپذیرد.
گزینههای loop و reverb فلگهای مربوطه را در هدر تنظیم میکنند که بعداً میتوانند برای پردازش متناسب جریان صوتی بازیابی شوند.
گزینهها
- skip_rate_check bool
- صرفنظر از بررسی نرخ نمونهبرداری (پیشفرض "false" است)
- loop bool
- تنظیم فلگ حلقه تکرار (پیشفرض "false" است)
- reverb boolean
- تنظیم فلگ طنین (reverb) (پیشفرض "true" است)
asf, asf_stream
مکسر صوتی قالب سیستمهای پیشرفته / فعال (یا استریمینگ) (ASF).
گونه asf_stream باید برای استریم انتخاب شود.
توجه داشته باشید که Windows Media Audio (wma) و Windows Media Video (wmv) نیز از این مکسر استفاده میکنند.
گزینهها
- packet_size size
- تنظیم اندازه بسته مکسر بر حسب بایت. با تنظیم این مقدار میتوانید بر اساس منبع خود، تکهتکه شدن دادهها یا سربار مکسر را کاهش دهید. مقدار پیشفرض 3200، حداقل 100 و حداکثر "64Ki" است.
ass
مکسر زیرنویس ASS/SSA (SubStation Alpha).
یک جریان زیرنویس تکی ASS را میپذیرد.
گزینهها
- ignore_readorder bool
- نوشتن فوری رخدادهای دیالوگ، حتی اگر خارج از ترتیب باشند؛ پیشفرض "false" است، در غیر این صورت آنها تا زمانی که رخداد زمانی مورد انتظار یافت شود در حافظه موقت (cache) نگه داشته میشوند.
ast
مکسر جریان صوتی AST (Audio Stream).
این قالب برای پخش صدا در برخی از بازیهای Nintendo Wii استفاده میشود.
یک جریان صوتی تکی را میپذیرد.
گزینههای loopstart و loopend میتوانند برای تعریف بخشی از پرونده جهت تکرار حلقه برای پخشکنندههایی که از این گزینهها پشتیبانی میکنند استفاده شوند.
گزینهها
- loopstart start
- مشخص کردن موقعیت شروع حلقه بر حسب میلیثانیه، از -1 تا "INT_MAX"؛ در صورتی که روی -1 تنظیم شود، هیچ حلقهای مشخص نمیشود (پیشفرض -1) و مقدار loopend نادیده گرفته میشود.
- loopend end
- مشخص کردن موقعیت پایان حلقه بر حسب میلیثانیه، از 0 تا "INT_MAX"؛ پیشفرض 0 است، در صورتی که روی 0 تنظیم شود، کل مدت زمان جریان فرض میگردد.
au
مکسر صوتی SUN AU.
یک جریان صوتی تکی را میپذیرد.
avi
مکسر صوتی تصویری درهمآمیخته (AVI - Audio Video Interleaved).
قالب AVI یک قالب اختصاصی توسعهیافته توسط مایکروسافت است که بعدها به طور رسمی از طریق مشخصات فنی Open DML مشخص شد.
به دلیل تفاوت در پیادهسازی پخشکنندهها، ممکن است تنظیم برخی گزینهها لازم باشد تا اطمینان حاصل شود که خروجی تولیدشده میتواند به درستی توسط پخشکننده مورد نظر پخش شود.
گزینهها
- flipped_raw_rgb bool
- اگر روی "true" تنظیم شود، ارتفاع مثبت را برای بیتمپهای RGB خام ذخیره میکند که نشان میدهد بیتمپ از پایین به بالا ذخیره شده است. توجه داشته باشید که این گزینه خود بیتمپ را معکوس نمیکند و این کار باید از قبل به صورت دستی انجام شود، به عنوان مثال با استفاده از فیلتر vflip. پیشفرض "false" است و نشان میدهد بیتمپ از بالا به پایین ذخیره شده است.
- reserve_index_space size
- رزرو مقدار
مشخصی بایت
برای اندیس
اصلی OpenDML هر
جریان در
هدر پرونده.
به طور
پیشفرض،
اگر در
اولین
اندیس اصلی
فضایی باقی
نمانده
باشد،
اندیسهای
اصلی اضافی
درون
بستههای
داده
جاسازی
میشوند و
به عنوان
زنجیرهای
از
اندیسها
به یکدیگر
پیوند
میخورند.
این ساختار
اندیس
میتواند
برای برخی
موارد
کاربردی
مشکلاتی
ایجاد کند،
به عنوان
مثال
نرمافزارهای
شخص ثالثی
که به شدت
به مشخصات
اندیس OpenDML
متکی هستند
یا زمانی که
پرش پرونده
کُند است.
رزرو فضای
کافی برای
اندیس در
هدر پرونده
از این
مشکلات
جلوگیری
میکند.
فضای اندیس مورد نیاز به اندازه پرونده خروجی بستگی دارد و باید حدود ۱۶ بایت به ازای هر گیگابایت باشد. هنگامی که این گزینه حذف شود یا روی صفر تنظیم شود، فضای اندیس لازم تخمین زده میشود.
مقدار پیشفرض 0 است.
- write_channel_mask bool
- نوشتن ماسک
چیدمان
کانال در
هدر جریان
صوتی.
این گزینه به طور پیشفرض فعال است. غیرفعال کردن ماسک کانال میتواند در سناریوهای خاص مفید باشد، به عنوان مثال هنگام ادغام چندین جریان صوتی در یک جریان برای سازگاری با نرمافزاری که تنها از یک جریان صوتی منفرد در AVI پشتیبانی میکند (به بخش "amerge" در راهنمای ffmpeg-filters مراجعه کنید).
avif
مکسر قالب تصویر AV1 (کدک ویدیویی ۱ اتحاد برای رسانه باز).
این مکسر تصاویر انکودشده با استفاده از کدک AV1 را ذخیره میکند.
یک یا دو جریان ویدیویی را میپذیرد. در صورتی که دو جریان ویدیویی ارائه شود، جریان دوم باید شامل یک صفحه منفرد باشد که ماسک آلفا را ذخیره میکند.
در صورتی که بیش از یک تصویر ارائه شود، خروجی تولیدشده به عنوان یک AVIF متحرک در نظر گرفته میشود و تعداد دورهای حلقه تکرار را میتوان با گزینه loop مشخص کرد.
این مکسر بر اساس مشخصات فنی ارائه شده توسط Alliance for Open Media در آدرس https://aomediacodec.github.io/av1-avif است.
گزینهها
- loop count
- تعداد دفعات تکرار حلقه در AVIF متحرک؛ مقدار 0 یک حلقه بینهایت را مشخص میکند، پیشفرض 0 است
- movie_timescale timescale
- تنظیم مقیاس زمانی نوشتهشده در جعبه هدر فیلم ("mvhd"). محدوده از 1 تا INT_MAX است. پیشفرض 1000 است.
avm2
مکسر قالب ShockWave Flash (SWF) / ماشین مجازی ۲ اکشناسکریپت (AVM2).
یک جریان صوتی، یک جریان ویدیویی یا هر دو را میپذیرد.
bit
مکسر قالب پرونده G.729 (.bit).
یک جریان صوتی تکی G.729 را میپذیرد.
caf
مکسر Apple CAF (قالب صوتی پایه - Core Audio Format).
یک جریان صوتی تکی را میپذیرد.
codec2
مکسر صوتی Codec2.
یک جریان صوتی تکی codec2 را میپذیرد.
chromaprint
مکسرهای اثرانگشتنگار Chromaprint.
برای فعالسازی کامپایل این فیلتر باید FFmpeg را با "--enable-chromaprint" پیکربندی کنید.
این مکسر دادههای صوتی را به کتابخانه Chromaprint ارسال میکند، که برای دادههای صوتی ارائهشده یک اثر انگشت تولید میکند. ببینید: https://acoustid.org/chromaprint
یک جریان صوتی خام ۱۶ بیتی علامتدار با ترتیب بایتی محلی (native-endian) با حداکثر ۲ کانال دریافت میکند.
گزینهها
- algorithm version
- انتخاب نسخه الگوریتم برای اثرانگشتنگاری. محدوده از 0 تا 4 است. نسخه 3 تشخیص سکوت را فعال میکند. پیشفرض 1 است.
- fp_format format
- قالبی که اثر انگشت در آن صادر میشود. گزینههای زیر را میپذیرد:
- base64
- اثر انگشت فشردهشده Base64 (پیشفرض)
- compressed
- اثر انگشت فشردهشده باینری
- raw
- اثر انگشت خام باینری
- silence_threshold threshold
- آستانه
تشخیص سکوت.
محدوده از
-1 تا 32767
است، که در
آن -1
تشخیص سکوت
را غیرفعال
میکند.
تشخیص سکوت
تنها با
نسخه 3
این
الگوریتم
قابل
استفاده
است.
تشخیص سکوت برای استفاده با سرویس AcoustID باید غیرفعال باشد. پیشفرض -1 است.
crc
مکسر بررسی افزونگی چرخهای (CRC - Cyclic Redundancy Check).
این مکسر CRC از نوع Adler-32 تمام فریمهای صوتی و تصویری ورودی را محاسبه و چاپ میکند. به طور پیشفرض، فریمهای صوتی به صوتی خام ۱۶ بیتی علامتدار و فریمهای ویدیویی به ویدیوی خام قبل از محاسبه CRC تبدیل میشوند.
خروجی مکسر شامل یک خط منفرد به این شکل است: CRC=0xCRC، که در آن CRC یک عدد هگزادسیمال با صفر پرشده تا ۸ رقم شامل CRC تمام فریمهای ورودی دیکودشده است.
همچنین مکسر framecrc را ببینید.
مثالها
- استفاده از
ffmpeg برای
محاسبه CRC
ورودی و
ذخیره آن در
پرونده out.crc:
ffmpeg -i INPUT -f crc out.crc
- استفاده از
ffmpeg برای چاپ
CRC در خروجی
استاندارد
با دستور:
ffmpeg -i INPUT -f crc -
- میتوانید
قالب خروجی
هر فریم را
در ffmpeg با
تعیین کدک و
قالب صوتی و
تصویری
انتخاب
کنید. به
عنوان
مثال، برای
محاسبه CRC
صدای ورودی
تبدیلشده
به PCM بدون
علامت ۸
بیتی و
ویدیوی
ورودی
تبدیلشده
به ویدیوی
MPEG-2، از دستور
زیر
استفاده
کنید:
ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
dash
مکسر استریم تطبیقی پویا روی HTTP (DASH - Dynamic Adaptive Streaming over HTTP).
این مکسر قطعات و پروندههای مانیفست را مطابق با استاندارد MPEG-DASH استاندارد ISO/IEC 23009-1:2014 و بهروزرسانیهای بعدی استاندارد ایجاد میکند.
برای اطلاعات بیشتر ببینید:
- مشخصات فنی ISO DASH: http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
- مشخصات فنی WebM DASH: https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
این مکسر یک پرونده مانیفست MPD (شرح ارائه رسانه) و پروندههای قطعه را برای هر جریان ایجاد میکند. پروندههای قطعه در همان پوشه پرونده مانیفست MPD قرار میگیرند.
نام پرونده قطعه ممکن است حاوی شناسههای از پیش تعریفشده باشد که در بخش "SegmentTemplate" مانیفست طبق بخش 5.3.9.4.4 استاندارد تعریف شده است.
شناسههای در دسترس عبارتند از "$RepresentationID$"، "$Number$"، "$Bandwidth$" و "$Time$". علاوه بر شناسههای استاندارد، شناسه مخصوص ffmpeg با نام "$ext$" نیز پشتیبانی میشود. در صورت تعیین، ffmpeg مقدار "$ext$" را در نام پرونده با پسوندهای قالب مکس مانند "mp4"، "webm" و غیره جایگزین میکند.
گزینهها
- adaptation_sets adaptation_sets
- تخصیص
جریانها
به
مجموعههای
تطبیق (Adaptation Sets)،
مشخصشده
در بخش
"AdaptationSets"
مانیفست MPD.
یک مجموعه تطبیق شامل مجموعهای از یک یا چند جریان است که به عنوان یک زیرمجموعه واحد در دسترس قرار میگیرند، به عنوان مثال جریانهای متناظری که با اندازههای مختلف انکود شدهاند و توسط کاربر بسته به پهنای باند موجود قابل انتخاب هستند، یا جریانهای صوتی مختلف با زبانهای متفاوت.
هر مجموعه تطبیق با نحو زیر مشخص میشود:
id=<index>,streams=<streams>
که در آن index باید یک اندیس عددی باشد، و streams توالیای از اندیسهای جریان است که با "," جدا شدهاند. چندین مجموعه تطبیق را میتوان با فاصله (space) از هم جدا و مشخص کرد.
برای نگاشت تمام جریانهای ویدیویی (یا صوتی) به یک مجموعه تطبیق، میتوان از "v" (یا "a") به عنوان شناسه جریان به جای شناسهها استفاده کرد.
هنگامی که هیچ تخصیصی تعریف نشده باشد، به طور پیشفرض یک مجموعه تطبیق برای هر جریان در نظر گرفته میشود.
فیلدهای اختیاری زیر نیز میتوانند مشخص شوند:
- descriptor
- تعریف
توصیفگر
همانطور
که در ISO/IEC 23009-1:2014/Amd.2:2015
تعریف شده
است.
به عنوان مثال:
<SupplementalProperty schemeIdUri=\"urn:mpeg:dash:srd:2014\" value=\"0,0,0,1,1,2,2\"/>
رشته توصیفگر باید یک برچسب XML خودبسته (self-closing) باشد.
- frag_duration
- بازنویسی مدت زمان قطعه سراسری مشخصشده با گزینه frag_duration.
- frag_type
- بازنویسی نوع قطعه سراسری مشخصشده با گزینه frag_type.
- seg_duration
- بازنویسی مدت زمان بخش (segment) سراسری مشخصشده با گزینه seg_duration.
- trick_id
- علامتگذاری یک مجموعه تطبیق به عنوان حاوی جریانهایی که قرار است برای حالت ترفند (Trick Mode) برای مجموعه تطبیق ارجاعشده استفاده شوند.
چند مثال از مقادیر ممکن برای گزینه adaptation_sets در ادامه آمده است:
id=0,seg_duration=2,frag_duration=1,frag_type=duration,streams=v id=1,seg_duration=2,frag_type=none,streams=a id=0,seg_duration=2,frag_type=none,streams=0 id=1,seg_duration=10,frag_type=none,trick_id=0,streams=1
- dash_segment_type type
- تنظیم نوع
پروندههای
قطعه DASH.
مقادیر ممکن:
- extra_window_size size
- تنظیم حداکثر تعداد قطعاتی که خارج از مانیفست قبل از حذف از دیسک نگه داشته میشوند.
- format_options options_list
- تنظیم گزینههای قالب کانتینر (mp4/webm) با استفاده از فهرستی از پارامترهای key=value که با ":" از هم جدا شدهاند. مقادیر حاوی نویسههای خاص ":" باید گریز داده (escape) شوند.
- frag_duration duration
- تنظیم طول قطعات درون بخشها بر حسب ثانیه؛ مقدار اعشاری نیز قابل تنظیم است.
- frag_type type
- تنظیم نوع
بازه زمانی
برای
قطعهبندی.
مقادیر ممکن:
- auto
- تنظیم یک قطعه به ازای هر بخش
- every_frame
- قطعهبندی در هر فریم
- duration
- قطعهبندی در بازههای زمانی مشخص
- pframes
- قطعهبندی در فریمهای کلیدی و به دنبال بازآرایی P-Frame (فقط ویدیو، آزمایشی)
- global_sidx bool
- نوشتن اتم سراسری "SIDX". فقط برای خروجی mp4 تکپروندهای در حالت غیر استریمینگ قابل اعمال است.
- hls_master_name file_name
- نام لیست پخش اصلی HLS. پیشفرض master.m3u8 است.
- hls_playlist bool
- تولید پروندههای لیست پخش HLS. لیست پخش اصلی با نام پرونده مشخصشده توسط گزینه hls_master_name تولید میشود. یک پرونده لیست پخش رسانه برای هر جریان با نامهای پرونده media_0.m3u8، media_1.m3u8 و غیره تولید میشود.
- http_opts http_opts
- مشخص کردن فهرستی از گزینههای key=value که با ":" از هم جدا شدهاند تا به پروتکل HTTP زیرین ارسال شوند. فقط برای خروجی HTTP قابل اعمال است.
- http_persistent bool
- استفاده از اتصالات پایدار HTTP (Persistent). فقط برای خروجی HTTP قابل اعمال است.
- http_user_agent user_agent
- بازنویسی فیلد User-Agent در هدر HTTP. فقط برای خروجی HTTP قابل اعمال است.
- ignore_io_errors bool
- نادیده گرفتن خطاهای ورودی/خروجی (IO) هنگام باز کردن و نوشتن. برای اجراهای طولانیمدت با خروجی شبکه مفید است. این گزینه به طور پیشفرض غیرفعال است.
- index_correction bool
- فعال یا
غیرفعال
کردن منطق
تصحیح
اندیس بخش.
فقط زمانی
قابل اعمال
است که use_template
فعال و use_timeline
غیرفعال
باشد. این
گزینه به
طور
پیشفرض
غیرفعال
است.
هنگامی که فعال باشد، منطق جریان اندیسهای بخش را زیر نظر میگیرد. اگر مقدار اندیس بخش یک جریان در موقعیت زمانی واقعی مورد انتظار نباشد، این منطق مقدار اندیس را تصحیح میکند.
معمولاً این منطق در موارد کاربردی استریمینگ زنده مورد نیاز است. نوسانات پهنای باند شبکه در طول استریمینگ طولانیمدت رایج است. هر نوسان میتواند باعث شود اندیسهای بخش از موقعیت زمانی واقعی مورد انتظار عقب بیفتند.
- init_seg_name init_name
- نام مبتنی بر الگوی DASH برای استفاده در بخش مقداردهی اولیه (initialization segment). پیشفرض "init-stream$RepresentationID$.$ext$" است. عبارت "$ext$" با پسوند پرونده مخصوص قالب بخش جایگزین میشود.
- ldash bool
- فعالسازی Dash با تاخیر کم (Low-latency Dash) با محدود کردن وجود و مقادیر برخی عناصر. به طور پیشفرض غیرفعال است.
- lhls bool
- فعالسازی
HLS با تاخیر
کم (LHLS). افزودن
برچسب
"#EXT-X-PREFETCH" با URI
بخش فعلی.
توسعهدهندگان
پخشکننده
hls.js در حال
تلاش برای
استانداردسازی
مشخصات فنی
باز LHLS هستند.
پیشنویس
مشخصات فنی
در
https://github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md
در دسترس
است.
این گزینه تلاش میکند با مشخصات فنی باز فوق مطابقت داشته باشد. این گزینه به طور خودکار گزینههای streaming و hls_playlist را فعال میکند. این یک ویژگی آزمایشی است.
نکته: این نسخه LHLS اپل نیست. ببینید: https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis
- master_m3u8_publish_rate segment_intervals_count
- انتشار مکرر لیست پخش اصلی پس از تعداد مشخصی بازه زمانی بخش.
- max_playback_rate rate
- تنظیم حداکثر نرخ پخش که برای اهداف تنظیم خودکار تأخیر پخش و اشغال بافر در طول پخش عادی توسط کلاینتها مناسب اعلام شده است.
- media_seg_name segment_name
- نام مبتنی بر الگوی DASH برای استفاده در بخشهای رسانه. پیشفرض "chunk-stream$RepresentationID$-$Number%05d$.$ext$" است. عبارت "$ext$" با پسوند پرونده مخصوص قالب بخش جایگزین میشود.
- method method
- استفاده از متد HTTP ارائهشده برای ایجاد پروندههای خروجی. معمولاً روی "PUT" یا "POST" تنظیم میشود.
- min_playback_rate rate
- تنظیم حداقل نرخ پخش که برای اهداف تنظیم خودکار تأخیر پخش و اشغال بافر در طول پخش عادی توسط کلاینتها مناسب اعلام شده است.
- mpd_profile flags
- تنظیم یک یا
چند
پروفایل
مانیفست MPD.
مقادیر ممکن:
- dash
- پروفایل زنده قالب پرونده رسانهای پایه ISO در MPEG-DASH
- dvb_dash
- پروفایل DVB-DASH
مقدار پیشفرض "dash" است.
- remove_at_exit bool
- فعال یا غیرفعال کردن حذف تمام بخشها در زمان اتمام کار. به طور پیشفرض غیرفعال است.
- seg_duration duration
- تنظیم طول
بخش بر حسب
ثانیه
(مقدار
اعشاری
قابل تنظیم
است). این
مقدار
هنگامی که
گزینه use_template
فعال و
گزینه use_timeline
غیرفعال
باشد به
عنوان
میانگین
مدت زمان
بخش، و برای
سایر موارد
کاربردی به
عنوان
حداقل مدت
زمان بخش در
نظر گرفته
میشود.
مقدار پیشفرض 5 است.
- single_file bool
- فعال یا
غیرفعال
کردن ذخیره
تمام
بخشها در
یک پرونده
واحد، که با
استفاده از
محدودههای
بایتی (byte ranges)
قابل
دسترسی است.
به طور
پیشفرض
غیرفعال
است.
نام پرونده منفرد را میتوان با گزینه single_file_name مشخص کرد؛ اگر مشخص نشود، نام پایه پرونده مانیفست با پسوند قالب خروجی در نظر گرفته میشود.
- single_file_name file_name
- نام مبتنی بر الگوی DASH برای استفاده در عنصر "baseURL" مانیفست. مستلزم آن است که گزینه single_file روی true تنظیم شده باشد. در الگو، عبارت "$ext$" با پسوند پرونده مخصوص قالب بخش جایگزین میشود.
- availability_start_time_ms milliseconds
- تنظیم صفت "availabilityStartTime" در MPD به صورت زمان یونیکس (Unix epoch) بر حسب میلیثانیه. اگر روی 0 تنظیم شود، زمان ساعت دیواری هنگام نوشتن اولین بسته استفاده میشود. این گزینه برای خروجیهای زندهای مفید است که نیاز به یک زمان شروع دسترسی پایدار در طول راهاندازیهای مجدد دارند.
- streaming bool
- فعال یا غیرفعال کردن حالت استریمینگ چانک خروجی. در حالت استریمینگ چانک، هر فریم یک قطعه "moof" خواهد بود که یک چانک را تشکیل میدهد. این گزینه به طور پیشفرض غیرفعال است.
- suggested_presentation_delay duration
- تنظیم صفت "suggestedPresentationDelay" در MPD. اگر روی 0 تنظیم شود، مدت زمان آخرین بخش استفاده میشود.
- target_latency target_latency
- تنظیم تأخیر هدف مورد نظر بر حسب ثانیه برای ارائه سرویس (مقدار اعشاری قابل تنظیم است). فقط زمانی قابل اعمال است که گزینههای streaming و write_prft فعال باشند. این یک فیلد اطلاعرسانی است که کلاینتها میتوانند برای سنجش میزان تأخیر سرویس از آن استفاده کنند.
- timeout timeout
- تنظیم زمان انقضا (timeout) برای عملیات سوکت ورودی/خروجی بر حسب ثانیه (مقدار اعشاری قابل تنظیم است). فقط برای خروجی HTTP قابل اعمال است.
- update_period period
- تنظیم دوره
بهروزرسانی
MPD، برای
محتوای
پویا. واحد
آن ثانیه
است. اگر
روی 0
تنظیم شود،
دوره به طور
خودکار
محاسبه
میشود.
مقدار پیشفرض 0 است.
- use_template bool
- فعال یا غیرفعال کردن استفاده از "SegmentTemplate" به جای "SegmentList" در مانیفست. این گزینه به طور پیشفرض فعال است.
- use_timeline bool
- فعال یا غیرفعال کردن استفاده از "SegmentTimeline" در بخش مانیفست "SegmentTemplate". این گزینه به طور پیشفرض فعال است.
- utc_timing_url url
- آدرس صفحهای که برچسب زمانی UTC را در قالب ISO برمیگرداند، به عنوان مثال "https://time.akamai.com/?iso"
- window_size size
- تنظیم
حداکثر
تعداد
بخشهای
نگهداشتهشده
در
مانیفست، و
دور
انداختن
قدیمیترین
بخش. این
ویژگی برای
استریمینگ
زنده مفید
است.
اگر مقدار 0 باشد، تمام بخشها در مانیفست نگه داشته میشوند. مقدار پیشفرض 0 است.
- write_prft write_prft
- نوشتن عناصر Producer Reference Time در جریانهای پشتیبانیشده. این کار همچنین نوشتن جعبههای prft را در مکسر زیرین فعال میکند. فقط زمانی قابل اعمال است که گزینه utc_url فعال باشد. به طور پیشفرض روی auto تنظیم شده است که در این حالت مکسر تلاش میکند آن را تنها در حالتهایی که به آن نیاز دارند فعال کند.
مثال
تولید یک خروجی DASH با خواندن از یک منبع ورودی به صورت بلادرنگ با استفاده از ffmpeg.
دو جریان چندرسانهای از پرونده ورودی تولید میشوند، که هر دو شامل یک جریان ویدیویی انکودشده از طریق libx264 و یک جریان صوتی انکودشده با libfdk_aac هستند. اولین جریان چندرسانهای حاوی ویدیویی با بیتریت 800k و صدا با نرخ پیشفرض است، دومی حاوی ویدیویی با ابعاد مقیاسبندیشده 320x170 پیکسل با بیتریت 300k و صدای بازنمونهبرداریشده در 22005 Hz است.
گزینه window_size تنها ۵ بخش اخیر را با مدت زمان پیشفرض ۵ ثانیه نگه میدارد.
ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \ -b:v:0 800k -profile:v:0 main \ -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline -ar:a:1 22050 \ -bf 1 -keyint_min 120 -g 120 -sc_threshold 0 -b_strategy 0 \ -use_timeline 1 -use_template 1 -window_size 5 \ -adaptation_sets "id=0,streams=v id=1,streams=a" \ -f dash /path/to/out.mpd
daud
مکسر صوتی سینمای دیجیتال (D-Cinema).
یک جریان صوتی تکی ۶ کاناله بازنمونهبرداریشده در فرکانس 96000 Hz انکودشده با کدک pcm_24daud را میپذیرد.
مثال
استفاده از ffmpeg برای مکس صدای ورودی به چیدمان کانال 5.1 با بازنمونهبرداری در فرکانس 96000Hz:
ffmpeg -i INPUT -af aresample=96000,pan=5.1 slow.302
برای نسخههای ffmpeg پیش از 7.0 ممکن است مجبور شوید از فیلتر asetnsamples برای محدود کردن اندازه بستههای مکسشده استفاده کنید، زیرا این قالب از مکس بستههای بزرگتر از ۶۵۵۳۵ بایت (۳۶۴۰ نمونه) پشتیبانی نمیکند. در نسخههای جدیدتر ffmpeg صدا به طور خودکار به بستههای ۳۶۰۰۰ بایتی (۲۰۰۰ نمونه) بستهبندی میشود.
dv
مکسر ویدیوی دیجیتال (DV - Digital Video).
دقیقاً یک جریان ویدیویی dvvideo و حداکثر دو جریان صوتی pcm_s16 را میپذیرد. محدودیتهای بیشتری توسط ویژگیهای ویدیو (که باید مطابق با یک پروفایل پشتیبانیشده ویدیوی DV باشد) و نرخ فریم تعیین میشود.
مثال
استفاده از ffmpeg برای تبدیل ورودی:
ffmpeg -i INPUT -s:v 720x480 -pix_fmt yuv411p -r 29.97 -ac 2 -ar 48000 -y out.dv
ffmetadata
مکسر متاداده FFmpeg.
این مکسر متاداده جریانها را در قالب ffmetadata مینویسد.
برای اطلاعات درباره قالب، به فصل متاداده (Metadata) مراجعه کنید.
مثال
استفاده از ffmpeg برای استخراج متاداده از یک پرونده ورودی به یک پرونده metadata.ffmeta در قالب ffmetadata:
ffmpeg -i INPUT -f ffmetadata metadata.ffmeta
fifo
مکسر صف ورودی اول خروجی اول (FIFO).
شبهمکسر fifo با استفاده از یک صف ورودی اول خروجی اول و اجرای مکسر واقعی در یک رشته (thread) جداگانه، امکان تفکیک انکودینگ و مکس را فراهم میکند.
این ویژگی به ویژه در ترکیب با مکسر tee سودمند است و میتواند برای ارسال دادهها به چندین مقصد با قابلیت اطمینان، سرعت نوشتن و تأخیرهای متفاوت استفاده شود.
مکسر هدف یا از نام خروجی انتخاب میشود یا از طریق گزینه fifo_format تعیین میگردد.
رفتار مکسر fifo در صورت پر شدن صف یا در صورت شکست خروجی (به عنوان مثال اگر یک بسته نتواند در خروجی نوشته شود) قابل انتخاب است:
- خروجی میتواند به صورت شفاف با تأخیر قابل تنظیم بین تلاشهای مجدد بر اساس زمان واقعی یا زمان جریان پردازششده دوباره راهاندازی شود.
- انکودینگ میتواند در طول خطای موقت مسدود شود، یا در صورتی که صف FIFO پر شود به صورت شفاف با دور انداختن بستهها ادامه یابد.
کاربران API باید توجه داشته باشند که توابع بازخوانی ("interrupt_callback"، "io_open" و "io_close") مورد استفاده درون "AVFormatContext" آن باید چندنخی امن (thread-safe) باشند.
گزینهها
- attempt_recovery bool
- در صورت بروز خطا، تلاش برای بازیابی خروجی انجام شود. این گزینه به ویژه هنگام استفاده با خروجی شبکه مفید است، زیرا راهاندازی مجدد استریم را به صورت شفاف ممکن میسازد. به طور پیشفرض این گزینه روی "false" تنظیم شده است.
- drop_pkts_on_overflow bool
- در صورت تنظیم روی "true"، در صورتی که صف fifo پر شود، بستهها به جای مسدود کردن انکودر دور ریخته میشوند. این امر ادامهیافتن استریم را بدون ایجاد تأخیر در ورودی ممکن میسازد، هرچند به قیمت نادیده گرفتن بخشی از جریان تمام میشود. به طور پیشفرض این گزینه روی "false" تنظیم شده است، بنابراین در چنین مواردی انکودر مسدود میشود تا زمانی که مکسر برخی از بستهها را پردازش کند و هیچیک از آنها از بین نرود.
- fifo_format format_name
- تعیین نام قالب. زمانی مفید است که نتوان آن را از پسوند نام خروجی حدس زد.
- format_opts options
- تعیین گزینههای قالب برای مکسر زیرین. گزینههای مکسر میتوانند به عنوان فهرستی از جفتهای key=value جداشده با ':' مشخص شوند.
- max_recovery_attempts count
- تنظیم حداکثر تعداد تلاشهای متوالی ناموفق برای بازیابی که پس از آن خروجی به طور دائمی با شکست مواجه میشود. به طور پیشفرض این گزینه روی 0 (نامحدود) تنظیم شده است.
- queue_size size
- تعیین اندازه صف به عنوان تعداد بستهها. مقدار پیشفرض 60 است.
- recover_any_error bool
- اگر روی "true" تنظیم شود، بازیابی صرفنظر از نوع خطای ایجادکننده شکست تلاش خواهد شد. به طور پیشفرض این گزینه روی "false" تنظیم شده است و در صورت بروز برخی خطاهای خاص (معمولاً دائمی)، حتی در صورت تنظیم گزینه attempt_recovery روی "true" نیز برای بازیابی تلاشی صورت نمیگیرد.
- recovery_wait_streamtime bool
- اگر روی
"false"
تنظیم شود،
زمان واقعی
هنگام
انتظار
برای تلاش
بازیابی
استفاده
میشود
(یعنی
بازیابی پس
از زمان
مشخصشده
توسط گزینه
recovery_wait_time انجام
میشود).
اگر روی "true" تنظیم شود، زمان جریان پردازششده به جای آن در نظر گرفته میشود (یعنی بازیابی پس از دور ریختن بستههای متناظر با گزینه recovery_wait_time انجام میشود).
به طور پیشفرض این گزینه روی "false" تنظیم شده است.
- recovery_wait_time duration
- تعیین زمان انتظار به ثانیه قبل از تلاش بازیابی بعدی پس از تلاش ناموفق قبلی. مقدار پیشفرض 5 است.
- restart_with_keyframe bool
- تعیین اینکه آیا پس از بازیابی از سرریز صف یا شکست، منتظر فریم کلیدی بماند یا خیر. این گزینه به طور پیشفرض روی "false" تنظیم شده است.
- timeshift duration
- بافر کردن مقدار مشخصی از بستهها و به تأخیر انداختن نوشتن خروجی. توجه داشته باشید که مقدار گزینه queue_size باید به اندازه کافی بزرگ باشد تا بستهها را برای انتقال زمانی (timeshift) ذخیره کند. در پایان ورودی، بافر fifo با سرعت بلادرنگ تخلیه میشود.
مثال
استفاده از ffmpeg برای استریم به یک سرور RTMP، ادامه پردازش جریان با نرخ بلادرنگ حتی در صورت بروز خطای موقت (قطعی شبکه) و تلاش برای بازیابی استریم در هر ثانیه به طور نامحدود:
ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv \ -drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 \ -map 0:v -map 0:a rtmp://example.com/live/stream_name
film_cpk
مکسر فیلم سگا (.cpk).
این قالب به عنوان قالب داخلی برای چندین بازی سگا استفاده میشد.
برای اطلاعات بیشتر در مورد قالب پرونده فیلم سگا، به http://wiki.multimedia.cx/index.php?title=Sega_FILM مراجعه کنید.
حداکثر یک جریان ویدیویی cinepak یا ویدیوی خام، و حداکثر یک جریان صوتی را میپذیرد.
filmstrip
مکسر Adobe Filmstrip.
این قالب توسط چندین ابزار Adobe برای ذخیره خروجی فیلماستریپ تولیدشده استفاده میشود. این مکسر یک جریان ویدیوی خام تکی را میپذیرد.
fits
مکسر سیستم انتقال تصویر منعطف (FITS - Flexible Image Transport System).
این قالب تصویری برای ذخیره دادههای نجومی استفاده میشود.
برای اطلاعات بیشتر در مورد این قالب، به https://fits.gsfc.nasa.gov مراجعه کنید.
flac
مکسر صوتی خام FLAC.
این مکسر دقیقاً یک جریان صوتی FLAC را میپذیرد. علاوه بر این، امکان افزودن تصاویر با آرایش (disposition) به نام attached_pic وجود دارد.
گزینهها
- write_header bool
- نوشتن هدر پرونده در صورت تنظیم روی "true"، پیشفرض "true" است
مثال
استفاده از ffmpeg برای ذخیره جریان صوتی از یک پرونده ورودی، به همراه چندین تصویر با آرایش attached_pic:
ffmpeg -i INPUT -i pic1.png -i pic2.jpg -map 0:a -map 1 -map 2 -disposition:v attached_pic OUTPUT
flv
مکسر قالب ویدیویی Adobe Flash (FLV).
گزینهها
- flvflags flags
- مقادیر ممکن:
- aac_seq_header_detect
- قرار دادن هدر توالی AAC بر اساس دادههای جریان صوتی.
- no_sequence_end
- غیرفعال کردن برچسب پایان توالی.
- no_metadata
- غیرفعال کردن برچسب متاداده.
- no_duration_filesize
- غیرفعال کردن مدت زمان و اندازه پرونده در متاداده زمانی که در انتهای جریان برابر با صفر هستند. (برای جریان زنده غیرقابل پرش استفاده میشود).
- add_keyframe_index
- برای تسهیل جستجو و پرش زمانی؛ به ویژه برای شبهاستریمینگ HTTP.
framecrc
قالب آزمایش CRC به ازای هر بسته.
این مکسر CRC از نوع Adler-32 را برای هر بسته صوتی و تصویری محاسبه و چاپ میکند. به طور پیشفرض، فریمهای صوتی به صوتی خام ۱۶ بیتی علامتدار و فریمهای ویدیویی به ویدیوی خام قبل از محاسبه CRC تبدیل میشوند.
خروجی مکسر شامل یک خط برای هر بسته صوتی و تصویری به شکل زیر است:
<stream_index>, <packet_dts>, <packet_pts>, <packet_duration>, <packet_size>, 0x<CRC>
عبارت CRC یک عدد هگزادسیمال پرشده با صفر تا ۸ رقم است که حاوی CRC آن بسته میباشد.
مثالها
به عنوان مثال، برای محاسبه CRC فریمهای صوتی و تصویری در INPUT که به بستههای صوتی و تصویری خام تبدیل شدهاند، و ذخیره آن در پرونده out.crc:
ffmpeg -i INPUT -f framecrc out.crc
برای چاپ اطلاعات در خروجی استاندارد (stdout)، از دستور زیر استفاده کنید:
ffmpeg -i INPUT -f framecrc -
با ffmpeg میتوانید قالبی را که فریمهای صوتی و تصویری قبل از محاسبه CRC برای هر بسته به آن انکود میشوند، با تعیین کدک صوتی و تصویری انتخاب کنید. به عنوان مثال، برای محاسبه CRC هر فریم صوتی ورودی دیکودشده تبدیلشده به PCM بدون علامت ۸ بیتی و هر فریم ویدیویی ورودی دیکودشده تبدیلشده به ویدیوی MPEG-2، از دستور زیر استفاده کنید:
ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
همچنین مکسر crc را ببینید.
framehash
قالب آزمایش هش به ازای هر بسته.
این مکسر یک هش رمزنگاری برای هر بسته صوتی و تصویری محاسبه و چاپ میکند. این میتواند برای بررسی برابری بسته به بسته بدون نیاز به مقایسه باینری تکتک آنها استفاده شود.
به طور پیشفرض، فریمهای صوتی به صوتی خام ۱۶ بیتی علامتدار و فریمهای ویدیویی به ویدیوی خام قبل از محاسبه هش تبدیل میشوند، اما خروجی تبدیلهای صریح به سایر کدکها نیز میتواند استفاده شود. این مکسر به طور پیشفرض از تابع هش رمزنگاری SHA-256 استفاده میکند، اما از چندین الگوریتم دیگر نیز پشتیبانی مینماید.
خروجی مکسر شامل یک خط برای هر بسته صوتی و تصویری به شکل زیر است:
<stream_index>, <packet_dts>, <packet_pts>, <packet_duration>, <packet_size>, <hash>
عبارت hash یک عدد هگزادسیمال است که نشاندهنده هش محاسبهشده برای بسته میباشد.
- hash algorithm
- استفاده از تابع هش رمزنگاری مشخصشده توسط رشته algorithm. مقادیر پشتیبانیشده عبارتند از "MD5"، "murmur3"، "RIPEMD128"، "RIPEMD160"، "RIPEMD256"، "RIPEMD320"، "SHA160"، "SHA224"، "SHA256" (پیشفرض)، "SHA512/224"، "SHA512/256"، "SHA384"، "SHA512"، "CRC32" و "adler32".
مثالها
برای محاسبه هش SHA-256 فریمهای صوتی و تصویری در INPUT که به بستههای صوتی و تصویری خام تبدیل شدهاند، و ذخیره آن در پرونده out.sha256:
ffmpeg -i INPUT -f framehash out.sha256
برای چاپ اطلاعات در خروجی استاندارد با استفاده از تابع هش MD5، از دستور زیر استفاده کنید:
ffmpeg -i INPUT -f framehash -hash md5 -
همچنین مکسر hash را ببینید.
framemd5
قالب آزمایش MD5 به ازای هر بسته.
این یک گونه از مکسر framehash است. بر خلاف آن مکسر، این مورد به طور پیشفرض از تابع هش MD5 استفاده میکند.
مثالها
برای محاسبه هش MD5 فریمهای صوتی و تصویری در INPUT که به بستههای صوتی و تصویری خام تبدیل شدهاند، و ذخیره آن در پرونده out.md5:
ffmpeg -i INPUT -f framemd5 out.md5
برای چاپ اطلاعات در stdout، از دستور زیر استفاده کنید:
ffmpeg -i INPUT -f framemd5 -
همچنین مکسرهای framehash و md5 را ببینید.
gif
مکسر GIF متحرک.
توجه داشته باشید که قالب GIF پایه زمانی بسیار بزرگی دارد: بنابراین تأخیر بین دو فریم نمیتواند کمتر از یک صدم ثانیه (centisecond) باشد.
گزینهها
- loop bool
- تنظیم تعداد دفعات تکرار حلقه خروجی. از -1 برای بدون حلقه و از 0 برای تکرار بینهایت (پیشفرض) استفاده کنید.
- final_delay delay
- اجبار تأخیر (بر حسب صدم ثانیه) پس از آخرین فریم. هر فریم با یک تأخیر تا فریم بعدی پایان مییابد. پیشفرض -1 است، که یک مقدار ویژه برای اعلام به مکسر جهت استفاده مجدد از تأخیر قبلی است. در صورت وجود حلقه، ممکن است بخواهید این مقدار را برای مشخص کردن یک مکث سفارشی کنید.
مثال
انکود یک gif با ۱۰ بار تکرار حلقه، همراه با ۵ ثانیه تأخیر بین دورهای تکرار:
ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
نکته ۱: اگر مایل به استخراج فریمها در پروندههای GIF جداگانه هستید، باید مکسر image2 را اجبار کنید:
ffmpeg -i INPUT -c:v gif -f image2 "out%d.gif"
gxf
مکسر قالب تبادل عمومی (GXF - General eXchange Format).
قالب GXF توسط گروه Grass Valley توسعه داده شد، سپس توسط SMPTE به عنوان SMPTE 360M استاندارد شد و در SMPTE RDD 14-2007 برای دربرگرفتن وضوحهای ویدیویی با تفکیکپذیری بالا (HD) گسترش یافت.
حداکثر یک جریان ویدیویی با کدک mjpeg، یا mpeg1video، یا mpeg2video، یا dvvideo با وضوح 512x480 یا 608x576، و چندین جریان صوتی با نرخ 48000Hz و کدک pcm16_le را میپذیرد.
hash
قالب آزمایش هش.
این مکسر یک هش رمزنگاری از تمام فریمهای صوتی و تصویری ورودی محاسبه و چاپ میکند. این میتواند برای بررسیهای برابری بدون نیاز به مقایسه باینری کامل استفاده شود.
به طور پیشفرض فریمهای صوتی به صوتی خام ۱۶ بیتی علامتدار و فریمهای ویدیویی به ویدیوی خام قبل از محاسبه هش تبدیل میشوند، اما از خروجی تبدیلهای صریح به سایر کدکها نیز میتوان استفاده کرد. برچسبهای زمانی نادیده گرفته میشوند. به طور پیشفرض از تابع هش رمزنگاری SHA-256 استفاده میکند، اما از چندین الگوریتم دیگر نیز پشتیبانی مینماید.
خروجی مکسر شامل یک خط منفرد به شکل زیر است: algo=hash، که در آن algo یک رشته کوتاه نشاندهنده تابع هش استفادهشده، و hash یک عدد هگزادسیمال نشاندهنده هش محاسبهشده است.
- hash algorithm
- استفاده از تابع هش رمزنگاری مشخصشده توسط رشته algorithm. مقادیر پشتیبانیشده عبارتند از "MD5"، "murmur3"، "RIPEMD128"، "RIPEMD160"، "RIPEMD256"، "RIPEMD320"، "SHA160"، "SHA224"، "SHA256" (پیشفرض)، "SHA512/224"، "SHA512/256"، "SHA384"، "SHA512"، "CRC32" و "adler32".
مثالها
برای محاسبه هش SHA-256 ورودی تبدیلشده به صدا و تصویر خام، و ذخیره آن در پرونده out.sha256:
ffmpeg -i INPUT -f hash out.sha256
برای چاپ هش MD5 در خروجی استاندارد از دستور زیر استفاده کنید:
ffmpeg -i INPUT -f hash -hash md5 -
همچنین مکسر framehash را ببینید.
hds
مکسر استریمینگ پویا روی HTTP (HDS - HTTP Dynamic Streaming).
استریمینگ پویای HTTP یا HDS یک روش استریم با بیتریت تطبیقی توسعه داده شده توسط شرکت Adobe است. پروتکل HDS محتوای ویدیویی MP4 را از طریق اتصالات HTTP منتقل میکند. پروتکل HDS میتواند برای استریمینگ بر اساس تقاضا (VOD) یا استریم زنده استفاده شود.
این مکسر یک مانیفست .f4m (پرونده مانیفست رسانهای Adobe Flash)، یک پرونده .abst (پرونده بوتاسترپ Adobe) برای هر جریان، و پروندههای قطعه را در پوشهای که به عنوان خروجی مشخص شده است ایجاد میکند.
این موارد باید توسط یک پخشکننده HDS از طریق HTTPS در دسترس قرار گیرند تا بتواند پخش جریان تولیدشده را انجام دهد.
گزینهها
- extra_window_size int
- تعداد قطعاتی که خارج از مانیفست قبل از حذف از دیسک نگه داشته میشوند
- min_frag_duration microseconds
- حداقل مدت زمان قطعه (بر حسب میکروثانیه)، مقدار پیشفرض ۱ ثانیه (10000000) است
- remove_at_exit bool
- حذف تمام قطعات در زمان اتمام کار هنگامی که روی "true" تنظیم شده باشد
- window_size int
- تعداد قطعات نگهداشتهشده در مانیفست، در صورتی که روی مقداری متفاوت از 0 تنظیم شود. به طور پیشفرض تمام قطعات در پوشه خروجی نگه داشته میشوند.
مثال
استفاده از ffmpeg برای تولید پروندههای HDS در پوشه output.hds با نرخ بلادرنگ:
ffmpeg -re -i INPUT -f hds -b:v 200k output.hds
hls
مکسر Apple HTTP Live Streaming که جریان MPEG-TS را بر اساس مشخصات فنی HTTP Live Streaming (HLS) قطعهبندی میکند.
یک پرونده لیست پخش (playlist) و یک یا چند پرونده قطعه ایجاد میکند. نام پرونده خروجی، نام پرونده لیست پخش را مشخص میسازد.
به طور پیشفرض، مکسر برای هر قطعه تولیدشده یک پرونده ایجاد میکند. این پروندهها نامی مشابه با لیست پخش دارند که به دنبال آن یک عدد ترتیبی و پسوند .ts قرار میگیرد.
اطمینان حاصل کنید که هنگام انکودینگ نیاز به GOP بسته (Closed GOP) دارید و اندازه GOP را به گونهای تنظیم کنید که با محدودیت زمانی قطعه شما مطابقت داشته باشد.
به عنوان مثال، برای تبدیل یک پرونده ورودی با ffmpeg:
ffmpeg -i in.mkv -c:v h264 -flags +cgop -g 30 -hls_time 1 out.m3u8
این مثال لیست پخش out.m3u8 و پروندههای قطعه زیر را تولید میکند: out0.ts، out1.ts، out2.ts و غیره.
همچنین مکسر segment را ببینید که پیادهسازی عمومیتر و انعطافپذیرتری از یک قطعهبند را ارائه میدهد و میتواند برای انجام قطعهبندی HLS استفاده شود.
گزینهها
- hls_init_time duration
- تنظیم طول
اولیه قطعه
هدف. مقدار
پیشفرض 0
است.
مقدار duration باید مشخصکننده مدت زمان باشد؛ به بخش مدت زمان (Time duration) در راهنمای ffmpeg-utils(1) مراجعه کنید.
قطعه روی فریم کلیدی بعدی پس از سپری شدن این زمان در اولین لیست m3u8 برش داده میشود. پس از پر شدن لیست پخش اولیه، ffmpeg قطعات را با مدت زمانی برابر با hls_time برش میدهد.
- hls_time duration
- تنظیم طول
قطعه هدف.
مقدار
پیشفرض 2
است.
مقدار duration باید مشخصکننده مدت زمان باشد؛ به بخش مدت زمان (Time duration) در راهنمای ffmpeg-utils(1) مراجعه کنید. قطعه روی فریم کلیدی بعدی پس از سپری شدن این زمان برش داده میشود.
- hls_list_size size
- تنظیم حداکثر تعداد ورودیهای لیست پخش. اگر روی 0 تنظیم شود، پرونده لیست شامل تمام قطعات خواهد بود. مقدار پیشفرض 5 است.
- hls_delete_threshold size
- تنظیم تعداد قطعات بدون ارجاع برای نگهداری روی دیسک قبل از اینکه "hls_flags delete_segments" آنها را حذف کند. این مقدار را افزایش دهید تا به کلاینتها اجازه داده شود به بارگیری قطعاتی که اخیراً در لیست پخش ارجاع داده شده بودند ادامه دهند. مقدار پیشفرض 1 است، به این معنی که قطعات قدیمیتر از hls_list_size+1 حذف خواهند شد.
- hls_start_number_source source
- شروع شماره
توالی لیست
پخش
("#EXT-X-MEDIA-SEQUENCE")
بر اساس
منبع
مشخصشده.
مگر اینکه
hls_flags single_file تنظیم
شده باشد،
همچنین
منبع
شمارههای
توالی شروع
نام
پروندههای
قطعه و
زیرنویس را
مشخص
میکند. در
هر صورت،
اگر hls_flags append_list
تنظیم شده
باشد و
شماره
توالی لیست
پخش
خواندهشده
بزرگتر از
شماره
توالی شروع
مشخصشده
باشد، آن
مقدار به
عنوان
مقدار شروع
استفاده
خواهد شد.
مقادیر زیر را میپذیرد:
- generic (پیشفرض)
- تنظیم شمارههای شروع بر اساس مقدار گزینه start_number.
- epoch
- تنظیم شماره شروع بر اساس ثانیههای سپریشده از مبدأ یونیکس (1970-01-01 00:00:00).
- epoch_us
- تنظیم شماره شروع بر اساس میکروثانیههای سپریشده از مبدأ یونیکس (1970-01-01 00:00:00).
- datetime
- تنظیم شماره شروع بر اساس تاریخ/زمان فعلی به صورت YYYYmmddHHMMSS، به عنوان مثال 20161231235759.
- start_number number
- شروع شماره توالی لیست پخش ("#EXT-X-MEDIA-SEQUENCE") از number مشخصشده هنگامی که مقدار hls_start_number_source برابر با generic باشد. (این حالت پیشفرض است.) مگر اینکه hls_flags single_file تنظیم شده باشد، همچنین شمارههای توالی شروع نام پروندههای قطعه و زیرنویس را مشخص میکند. مقدار پیشفرض 0 است.
- hls_allow_cache bool
- تعیین صریح اینکه آیا کلاینت مجاز به ذخیره موقت قطعات رسانهای هست (1) یا نباید آنها را ذخیره کند (0).
- hls_base_url baseurl
- الحاق baseurl به
ابتدای هر
ورودی در
لیست پخش.
برای تولید
لیستهای
پخش با
مسیرهای
مطلق مفید
است.
توجه داشته باشید که شماره توالی لیست پخش باید برای هر قطعه منحصر به فرد باشد و نباید با شماره توالی نام پرونده قطعه اشتباه گرفته شود که میتواند چرخشی باشد، به عنوان مثال اگر گزینه wrap مشخص شده باشد.
- hls_segment_filename filename
- تنظیم نام
پرونده
قطعه. مگر
اینکه
گزینه hls_flags با
single_file تنظیم
شده باشد،
از filename به
عنوان یک
قالب
رشتهای با
شماره قطعه
الحاقشده
استفاده
میشود.
به عنوان مثال:
ffmpeg -i in.nut -hls_segment_filename 'file%03d.ts' out.m3u8
لیست پخش out.m3u8 و پروندههای قطعه زیر را تولید میکند: file000.ts، file001.ts، file002.ts و غیره.
عبارت filename ممکن است حاوی مشخصات مسیر کامل یا نسبی باشد، اما تنها بخش نام پرونده بدون هیچ مسیری در لیست قطعات m3u8 قرار خواهد گرفت. در صورت تعیین یک مسیر نسبی، مسیر پروندههای قطعه ایجادشده نسبت به دایرکتوری کاری جاری خواهد بود. هنگامی که strftime_mkdir تنظیم شده باشد، کل مقدار گسترشیافته filename در لیست قطعات m3u8 نوشته خواهد شد.
هنگامی که var_stream_map با دو یا چند جریان متغیر تنظیم شده باشد، الگوی filename باید حاوی رشته "%v" باشد و این رشته به موقعیت اندیس جریان متغیر در نام پروندههای قطعه تولیدشده گسترش مییابد.
به عنوان مثال:
ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ -hls_segment_filename 'file_%v_%03d.ts' out_%v.m3u8
مجموعههای پرونده قطعه لیستهای پخش زیر را تولید میکند: file_0_000.ts، file_0_001.ts، file_0_002.ts و غیره و file_1_000.ts، file_1_001.ts، file_1_002.ts و غیره.
رشته "%v" ممکن است در نام پرونده یا در آخرین نام دایرکتوری حاوی پرونده وجود داشته باشد، اما تنها در یکی از آنها. (علاوه بر این، %v ممکن است چندین بار در آخرین زیردایرکتوری یا نام پرونده ظاهر شود.) اگر رشته %v در نام دایرکتوری وجود داشته باشد، زیردایرکتوریها پس از گسترش الگوی نام دایرکتوری ایجاد میشوند. این امر امکان ایجاد قطعات مربوط به جریانهای متغیر مختلف را در زیرپوشهها فراهم میکند.
به عنوان مثال:
ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ -hls_segment_filename 'vs%v/file_%03d.ts' vs%v/out.m3u8
مجموعههای پرونده قطعه لیستهای پخش زیر را تولید میکند: vs0/file_000.ts، vs0/file_001.ts، vs0/file_002.ts و غیره و vs1/file_000.ts، vs1/file_001.ts، vs1/file_002.ts و غیره.
- strftime bool
- استفاده از
strftime() روی
filename برای
گسترش نام
پرونده
قطعه با
زمان محلی.
شماره قطعه
نیز در این
حالت در
دسترس است،
اما برای
استفاده از
آن باید
second_level_segment_index را در
hls_flag تنظیم
کنید و
مشخصکننده
آن %%d خواهد
بود.
به عنوان مثال:
ffmpeg -i in.nut -strftime 1 -hls_segment_filename 'file-%Y%m%d-%s.ts' out.m3u8
لیست پخش out.m3u8 و پروندههای قطعه زیر را تولید میکند: file-20160215-1455569023.ts، file-20160215-1455569024.ts و غیره. توجه: در برخی سیستمها/محیطها، مشخصکننده %s در دسترس نیست. مستندات strftime() را ببینید.
به عنوان مثال:
ffmpeg -i in.nut -strftime 1 -hls_flags second_level_segment_index -hls_segment_filename 'file-%Y%m%d-%%04d.ts' out.m3u8
لیست پخش out.m3u8 و پروندههای قطعه زیر را تولید میکند: file-20160215-0001.ts، file-20160215-0002.ts و غیره.
- strftime_mkdir bool
- هنگام
استفاده
همراه با
strftime، تمام
زیردایرکتوریهایی
را که در
مقادیر
گسترشیافته
گزینه hls_segment_filename
وجود دارند
ایجاد
میکند.
به عنوان مثال:
ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y%m%d/file-%Y%m%d-%s.ts' out.m3u8
پوشه 20160215 را (در صورت عدم وجود) ایجاد کرده و سپس لیست پخش out.m3u8 و پروندههای قطعه زیر را تولید میکند: 20160215/file-20160215-1455569023.ts، 20160215/file-20160215-1455569024.ts و غیره.
به عنوان مثال:
ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y/%m/%d/file-%Y%m%d-%s.ts' out.m3u8
سلسلهمراتب پوشههای 2016/02/15 را (در صورت عدم وجود هر یک) ایجاد کرده و سپس لیست پخش out.m3u8 و پروندههای قطعه زیر را تولید میکند: 2016/02/15/file-20160215-1455569023.ts، 2016/02/15/file-20160215-1455569024.ts و غیره.
- hls_segment_options options_list
- تنظیم گزینههای قالب خروجی با استفاده از فهرستی از پارامترهای key=value که با : جدا شدهاند. مقادیر حاوی نویسههای خاص ":" باید گریز داده شوند.
- hls_key_info_file key_info_file
- استفاده از
اطلاعات
موجود در
key_info_file برای
رمزگذاری
قطعه. خط
اول key_info_file
مشخصکننده
کلید URI
نوشتهشده
در لیست پخش
است. این URL
کلید برای
دسترسی به
کلید
رمزگذاری
در طول پخش
استفاده
میشود. خط
دوم مسیر
پرونده
کلید
استفادهشده
برای
دریافت
کلید در طول
فرایند
رمزگذاری
را مشخص
میکند.
پرونده
کلید به
عنوان یک
آرایه
بستهبندیشده
واحد از ۱۶
بایت در
قالب
باینری
خوانده
میشود. خط
اختیاری
سوم، بردار
مقداردهی
اولیه (IV) را
به عنوان یک
رشته
هگزادسیمال
مشخص
میکند تا
به جای
شماره
توالی قطعه
(پیشفرض)
برای
رمزگذاری
استفاده
شود.
تغییرات در
key_info_file در صورت
فعال بودن
hls_flags periodic_rekey منجر
به
رمزگذاری
قطعه با
کلید/IV جدید
و ثبت یک
ورودی در
لیست پخش
برای URI/IV کلید
جدید خواهد
شد.
قالب پرونده اطلاعات کلید:
<key URI> <key file path> <IV> (optional)
نمونههای URI کلید:
http://server/file.key /path/to/file.key file.key
نمونههای مسیر پرونده کلید:
file.key /path/to/file.key
نمونه IV:
0123456789ABCDEF0123456789ABCDEF
نمونه پرونده اطلاعات کلید:
http://server/file.key /path/to/file.key 0123456789ABCDEF0123456789ABCDEF
نمونه اسکریپت شل:
#!/bin/sh BASE_URL=${1:-'.'} openssl rand 16 > file.key echo $BASE_URL/file.key > file.keyinfo echo file.key >> file.keyinfo echo $(openssl rand -hex 16) >> file.keyinfo ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \ -hls_key_info_file file.keyinfo out.m3u8 - hls_enc bool
- فعالسازی (1) یا غیرفعالسازی (0) رمزگذاری AES128. در صورت فعال بودن، هر قطعه تولیدشده رمزگذاری میشود و کلید رمزگذاری با نام playlist name.key ذخیره میگردد.
- hls_enc_key key
- مشخص کردن یک کلید ۱۶ بایتی برای رمزگذاری قطعات؛ به طور پیشفرض به صورت تصادفی تولید میشود.
- hls_enc_key_url keyurl
- در صورت تنظیم، keyurl به جای baseurl به نام پرونده کلید در لیست پخش الصاق میشود.
- hls_enc_iv iv
- مشخص کردن بردار مقداردهی اولیه ۱۶ بایتی برای هر قطعه به جای مقادیر تولیدشده به صورت خودکار.
- hls_segment_type flags
- مقادیر ممکن:
- mpegts
- خروجی پروندههای قطعه در قالب جریان انتقال MPEG-2 (Transport Stream). این با تمام نسخههای HLS سازگار است.
- fmp4
- خروجی پروندههای قطعه در قالب MP4 قطعهبندیشده، مشابه MPEG-DASH. پروندههای fmp4 ممکن است در نسخه ۷ HLS و بالاتر استفاده شوند.
- hls_fmp4_init_filename filename
- تنظیم نام
پرونده
برای
پرونده هدر
پروندههای
قطعه، نام
پرونده
پیشفرض init.mp4
است.
هنگامی که strftime فعال باشد، filename با زمان محلی به نام پرونده قطعه گسترش مییابد.
به عنوان مثال:
ffmpeg -i in.nut -hls_segment_type fmp4 -strftime 1 -hls_fmp4_init_filename "%s_init.mp4" out.m3u8
یک init به این صورت تولید خواهد کرد: 1602678741_init.mp4.
- hls_fmp4_init_resend bool
- ارسال مجدد
پرونده init پس
از هر بار
تازهسازی
پرونده m3u8،
پیشفرض 0
است.
هنگامی که var_stream_map با دو یا چند جریان متغیر تنظیم شده باشد، الگوی filename باید حاوی رشته "%v" باشد؛ این رشته موقعیت اندیس جریان متغیر را در نام پروندههای init تولیدشده مشخص میکند. رشته "%v" ممکن است در نام پرونده یا در آخرین نام دایرکتوری حاوی پرونده وجود داشته باشد. اگر رشته در نام دایرکتوری وجود داشته باشد، زیرپوشهها پس از گسترش الگوی نام دایرکتوری ایجاد میشوند. این امر امکان ایجاد پروندههای init مربوط به جریانهای متغیر مختلف را در زیرپوشهها فراهم میسازد.
- hls_flags flags
- مقادیر ممکن:
- single_file
- اگر این فلگ
تنظیم شود،
مکسر تمام
قطعات را در
یک پرونده
منفرد MPEG-TS
ذخیره
میکند، و
از
محدودههای
بایتی در
لیست پخش
استفاده
خواهد کرد.
لیستهای
پخش HLS
تولیدشده
با این روش
دارای
شماره نسخه
۴ خواهند
بود.
به عنوان مثال:
ffmpeg -i in.nut -hls_flags single_file out.m3u8
لیست پخش out.m3u8 و یک پرونده قطعه منفرد out.ts را تولید خواهد کرد.
- delete_segments
- پروندههای قطعه حذفشده از لیست پخش پس از گذشت مدتی برابر با مدت زمان قطعه به اضافه مدت زمان لیست پخش از روی دیسک پاک میشوند.
- append_list
- الحاق قطعات جدید به انتهای لیست قطعات قدیمی، و حذف "#EXT-X-ENDLIST" از لیست قطعات قدیمی.
- round_durations
- گرد کردن اطلاعات مدت زمان در اطلاعات قطعه پرونده لیست پخش به مقادیر عدد صحیح، به جای استفاده از ممیز شناور. اگر ویژگیهای دیگری که نیازمند نسخههای بالاتر HLS هستند وجود نداشته باشد، این امر به ffmpeg اجازه میدهد تا یک m3u8 با نسخه ۲ HLS خروجی دهد.
- discont_start
- افزودن برچسب "#EXT-X-DISCONTINUITY" به لیست پخش، پیش از اطلاعات اولین قطعه.
- omit_endlist
- عدم الحاق برچسب "EXT-X-ENDLIST" در انتهای لیست پخش.
- periodic_rekey
- پرونده مشخصشده توسط "hls_key_info_file" به طور دورهای بررسی شده و بهروزرسانیهای اطلاعات رمزگذاری شناسایی میشود. حتماً این پرونده را، از جمله پرونده حاوی کلید رمزگذاری AES، به صورت اتمیک (atomic) جایگزین کنید.
- independent_segments
- افزودن برچسب "#EXT-X-INDEPENDENT-SEGMENTS" به لیستهای پخشی که دارای قطعات ویدیویی هستند و زمانی که شروع تمام قطعات آن لیست پخش با یک فریم کلیدی تضمین شده باشد.
- iframes_only
- افزودن برچسب "#EXT-X-I-FRAMES-ONLY" به لیستهای پخشی که دارای قطعات ویدیویی هستند و میتوانند تنها فریمهای I را در حالت "#EXT-X-BYTERANGE" پخش کنند.
- split_by_time
- اجازه به قطعات برای شروع روی فریمهایی غیر از فریمهای کلیدی. این امر رفتار برخی پخشکنندهها را زمانی که زمان بین فریمهای کلیدی ناهماهنگ است بهبود میبخشد، اما ممکن است وضعیت را در سایر پخشکنندهها بدتر کند و باعث بروز برخی ناهنجاریها در هنگام جستجو و پرش زمانی شود. این فلگ باید همراه با گزینه hls_time استفاده شود.
- program_date_time
- تولید برچسبهای "EXT-X-PROGRAM-DATE-TIME".
- second_level_segment_index
- امکان استفاده از اندیسهای قطعه به صورت %%d در عبارت گزینه hls_segment_filename علاوه بر مقادیر تاریخ/زمان هنگامی که گزینه strftime فعال است. برای دریافت اعداد با عرض ثابت و صفرهای ابتدایی، قالب %%0xd در دسترس است که در آن x عرض مورد نیاز است.
- second_level_segment_size
- امکان استفاده از اندازه قطعه (شمارششده به بایت) به صورت %%s در عبارت گزینه hls_segment_filename علاوه بر مقادیر تاریخ/زمان هنگامی که strftime فعال است. برای دریافت اعداد با عرض ثابت و صفرهای ابتدایی، قالب %%0xs در دسترس است که در آن x عرض مورد نیاز است.
- second_level_segment_duration
- امکان
استفاده از
مدت زمان
قطعه
(محاسبهشده
به
میکروثانیه)
به صورت %%t در
عبارت
گزینه hls_segment_filename
علاوه بر
مقادیر
تاریخ/زمان
هنگامی که strftime
فعال است.
برای
دریافت
اعداد با
عرض ثابت و
صفرهای
ابتدایی،
قالب %%0xt در
دسترس است
که در آن x
عرض مورد
نیاز است.
به عنوان مثال:
ffmpeg -i sample.mpeg \ -f hls -hls_time 3 -hls_list_size 5 \ -hls_flags second_level_segment_index+second_level_segment_size+second_level_segment_duration \ -strftime 1 -strftime_mkdir 1 -hls_segment_filename "segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8
قطعاتی مانند این تولید خواهد کرد: segment_20170102194334_0003_00122200_0000003000000.ts، segment_20170102194334_0004_00120072_0000003000000.ts و غیره.
- temp_file
- نوشتن
دادههای
قطعه در filename.tmp
و تغییر نام
آن به filename
تنها زمانی
که قطعه
کامل شد.
یک وبسرور ارائهدهنده قطعات را میتوان طوری پیکربندی کرد که درخواستها به *.tmp را رد کند تا از دسترسی به قطعات در حال نوشتن پیش از اضافه شدن آنها به لیست پخش m3u8 جلوگیری شود.
این فلگ همچنین بر نحوه ایجاد پروندههای لیست پخش m3u8 تأثیر میگذارد. اگر این فلگ تنظیم شود، تمام پروندههای لیست پخش در یک پرونده موقت نوشته شده و پس از تکمیل تغییر نام مییابند، مشابه نحوه مدیریت قطعات. اما لیستهای پخش با پروتکل "file" و با نوع hls_playlist_type غیر از vod، صرفنظر از این فلگ همیشه در یک پرونده موقت نوشته میشوند.
پروندههای لیست پخش اصلی مشخصشده با master_pl_name، در صورت وجود، با پروتکل "file"، در صورتی که مقدار master_pl_publish_rate غیر صفر باشد، صرفنظر از این فلگ همیشه در یک پرونده موقت نوشته میشوند.
- hls_playlist_type type
- اگر نوع
برابر با event
باشد،
برچسب
"#EXT-X-PLAYLIST-TYPE:EVENT"
در هدر m3u8
ساطع
میشود. این
کار مقدار
hls_list_size را به 0
اجبار
میکند؛
لیست پخش
تنها قابل
الحاق
خواهد بود.
اگر نوع برابر با vod باشد، برچسب "#EXT-X-PLAYLIST-TYPE:VOD" در هدر m3u8 ساطع میشود. این کار مقدار hls_list_size را به 0 اجبار میکند؛ لیست پخش نباید تغییر کند.
- method method
- استفاده از
متد HTTP
ارائهشده
برای ایجاد
پروندههای
hls.
به عنوان مثال:
ffmpeg -re -i in.ts -f hls -method PUT http://example.com/live/out.m3u8
تمام پروندههای قطعه mpegts را با استفاده از متد HTTP PUT در وبسرور بارگذاری میکند، و پروندههای m3u8 را در هر بار "refresh" با استفاده از همان متد بهروزرسانی مینماید. توجه داشته باشید که وبسرور باید از متد ارائهشده برای بارگذاری پروندهها پشتیبانی کند.
- http_user_agent agent
- بازنویسی فیلد User-Agent در هدر HTTP. فقط برای خروجی HTTP قابل اعمال است.
- var_stream_map stream_map
- مشخص کردن
یک رشته
نگاشت که
نحوه
گروهبندی
جریانهای
صوتی،
تصویری و
زیرنویس را
در
جریانهای
متغیر (variant streams)
مختلف
تعریف
میکند.
گروههای
جریان
متغیر با
فاصله از هم
جدا
میشوند.
قالب رشته مورد انتظار به این صورت است: "a:0,v:0 a:1,v:1 ....". در اینجا a:، v: و s: به ترتیب کلیدهای مشخصکننده جریانهای صوتی، تصویری و زیرنویس هستند. مقادیر مجاز 0 تا 9 هستند (صرفاً بر اساس کاربرد عملی محدود شده است).
هنگامی که دو یا چند جریان متغیر وجود داشته باشد، الگوی نام پرونده خروجی باید شامل رشته "%v" باشد: این رشته موقعیت اندیس جریان متغیر را در نام پروندههای لیست پخش رسانه خروجی مشخص میکند. رشته "%v" ممکن است در نام پرونده یا در آخرین نام دایرکتوری حاوی پرونده وجود داشته باشد. اگر رشته در نام دایرکتوری وجود داشته باشد، زیرپوشهها پس از گسترش الگوی نام دایرکتوری ایجاد میشوند. این امر ایجاد جریانهای متغیر را در زیرپوشهها امکانپذیر میسازد.
چند مثال در ادامه آمده است:
- ایجاد دو
جریان
متغیر hls.
اولین
جریان
متغیر شامل
جریان
ویدیویی با
بیتریت 1000k و
جریان صوتی
با بیتریت
64k خواهد بود
و دومین
جریان
متغیر شامل
جریان
ویدیویی با
بیتریت 256k و
جریان صوتی
با بیتریت
32k خواهد بود.
در اینجا،
دو لیست پخش
رسانه با
نامهای
پرونده out_0.m3u8
و out_1.m3u8 ایجاد
خواهد شد.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ http://example.com/live/out_%v.m3u8
- اگر متنی
معنادار به
جای
اندیسها
در نامهای
حاصل
میخواهید،
میتوانید
نامهایی
را برای هر
یک یا برخی
از متغیرها
مشخص کنید.
مثال زیر
مانند مثال
قبلی دو
جریان
متغیر hls
ایجاد
میکند. اما
در اینجا،
دو لیست پخش
رسانه با
نامهای
پرونده out_my_hd.m3u8
و out_my_sd.m3u8 ایجاد
خواهند شد.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0,name:my_hd v:1,a:1,name:my_sd" \ http://example.com/live/out_%v.m3u8
- ایجاد سه
جریان
متغیر hls.
اولین
جریان
متغیر فقط
ویدیویی با
بیتریت
ویدیوی 1000k،
دومین
جریان
متغیر فقط
صوتی با
بیتریت 64k و
سومین
جریان
متغیر فقط
ویدیویی با
بیتریت 256k
خواهد بود.
در اینجا،
سه لیست پخش
رسانه با
نامهای
پرونده out_0.m3u8،
out_1.m3u8 و out_2.m3u8
ایجاد
خواهند شد.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k \ -map 0:v -map 0:a -map 0:v -f hls -var_stream_map "v:0 a:0 v:1" \ http://example.com/live/out_%v.m3u8
- ایجاد
جریانهای
متغیر در
زیرپوشهها.
در اینجا
اولین لیست
پخش رسانه
در http://example.com/live/vs_0/out.m3u8 و
دومی در
http://example.com/live/vs_1/out.m3u8
ایجاد
میشود.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ http://example.com/live/vs_%v/out.m3u8
- ایجاد دو
جریان
متغیر فقط
صوتی و دو
جریان
متغیر فقط
ویدیویی.
علاوه بر
برچسب
"#EXT-X-STREAM-INF"
برای هر
جریان
متغیر در
لیست پخش
اصلی،
برچسب
"#EXT-X-MEDIA" نیز
برای دو
جریان
متغیر فقط
صوتی اضافه
میشود و
آنها با
نامهای
گروه صوتی
'aud_low' و 'aud_high' به دو
جریان
متغیر فقط
ویدیویی
نگاشت
میشوند. به
طور
پیشفرض،
یک متغیر hls
منفرد حاوی
تمام
جریانهای
انکودشده
ایجاد
میشود.
ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k -b:v:1 3000k \ -map 0:a -map 0:a -map 0:v -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low a:1,agroup:aud_high v:0,agroup:aud_low v:1,agroup:aud_high" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8
- ایجاد دو
جریان
متغیر فقط
صوتی و یک
جریان
متغیر فقط
ویدیویی.
علاوه بر
برچسب
"#EXT-X-STREAM-INF"
برای هر
جریان
متغیر در
لیست پخش
اصلی،
برچسب
"#EXT-X-MEDIA" نیز
برای دو
جریان
متغیر فقط
صوتی اضافه
میشود و
آنها با
نام گروه
صوتی 'aud_low' به
یک جریان
متغیر فقط
ویدیویی
نگاشت
میشوند، و
گروه صوتی
دارای
وضعیت
پیشفرض NO
یا YES است. به
طور
پیشفرض،
یک متغیر hls
منفرد حاوی
تمام
جریانهای
انکودشده
ایجاد
میشود.
ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \ -map 0:a -map 0:a -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low,default:yes a:1,agroup:aud_low v:0,agroup:aud_low" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8
- ایجاد دو
جریان
متغیر فقط
صوتی و یک
جریان
متغیر فقط
ویدیویی.
علاوه بر
برچسب
"#EXT-X-STREAM-INF"
برای هر
جریان
متغیر در
لیست پخش
اصلی،
برچسب
"#EXT-X-MEDIA" نیز
برای دو
جریان
متغیر فقط
صوتی اضافه
میشود و
آنها با
نام گروه
صوتی 'aud_low' به
یک جریان
متغیر فقط
ویدیویی
نگاشت
میشوند، و
گروه صوتی
دارای
وضعیت
پیشفرض NO
یا YES است، و
یک زبان
صوتی به نام
ENG و زبان
صوتی دیگر
به نام CHN
نامگذاری
شده است. به
طور
پیشفرض،
یک متغیر hls
منفرد حاوی
تمام
جریانهای
انکودشده
ایجاد
میشود.
ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \ -map 0:a -map 0:a -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low,default:yes,language:ENG a:1,agroup:aud_low,language:CHN v:0,agroup:aud_low" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8
- ایجاد یک
جریان
متغیر
منفرد.
افزودن
برچسب
"#EXT-X-MEDIA" با
"TYPE=SUBTITLES" در
لیست پخش
اصلی با نام
گروه
زیرنویس webvtt
برابر با 'subtitle'
و نام
اختیاری
زیرنویس،
به عنوان
مثال 'English'.
اطمینان
حاصل کنید
که پرونده
ورودی
حداقل
دارای یک
جریان
زیرنویس
متنی باشد.
ffmpeg -y -i input_with_subtitle.mkv \ -b:v:0 5250k -c:v h264 -pix_fmt yuv420p -profile:v main -level 4.1 \ -b:a:0 256k \ -c:s webvtt -c:a mp2 -ar 48000 -ac 2 -map 0:v -map 0:a:0 -map 0:s:0 \ -f hls -var_stream_map "v:0,a:0,s:0,sgroup:subtitle,sname:English" \ -master_pl_name master.m3u8 -t 300 -hls_time 10 -hls_init_time 4 -hls_list_size \ 10 -master_pl_publish_rate 10 -hls_flags \ delete_segments+discont_start+split_by_time ./tmp/video.m3u8
- cc_stream_map cc_stream_map
- رشته نگاشت
که
گروههای
مختلف
زیرنویس
بسته (closed captions) و
ویژگیهای
آنها را
مشخص
میکند.
گروههای
جریان
زیرنویس
بسته با
فاصله از هم
جدا
میشوند.
قالب رشته مورد انتظار به این صورت است: "ccgroup:<group name>,instreamid:<INSTREAM-ID>,language:<language code> ....". صفتهای 'ccgroup' و 'instreamid' اجباری هستند. 'language' یک صفت اختیاری است.
گروههای زیرنویس بسته پیکربندیشده با استفاده از این گزینه، با ارائه همان نام 'ccgroup' در رشته var_stream_map به جریانهای متغیر مختلف نگاشت میشوند.
به عنوان مثال:
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -a53cc:0 1 -a53cc:1 1 \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls \ -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en ccgroup:cc,instreamid:CC2,language:sp" \ -var_stream_map "v:0,a:0,ccgroup:cc v:1,a:1,ccgroup:cc" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8
دو برچسب "#EXT-X-MEDIA" با "TYPE=CLOSED-CAPTIONS" در لیست پخش اصلی برای INSTREAM-IDهای 'CC1' و 'CC2' اضافه خواهد کرد. همچنین، صفت "CLOSED-CAPTIONS" را با نام گروه 'cc' برای دو جریان متغیر خروجی اضافه میکند.
اگر var_stream_map تنظیم نشده باشد، اولین ccgroup موجود در cc_stream_map به جریان متغیر خروجی نگاشت میشود.
به عنوان مثال:
ffmpeg -re -i in.ts -b:v 1000k -b:a 64k -a53cc 1 -f hls \ -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en" \ -master_pl_name master.m3u8 \ http://example.com/live/out.m3u8
این دستور برچسب "#EXT-X-MEDIA" را با "TYPE=CLOSED-CAPTIONS" در لیست پخش اصلی با نام گروه 'cc'، زبان 'en' (انگلیسی) و INSTREAM-ID برابر با 'CC1' اضافه میکند. همچنین، صفت "CLOSED-CAPTIONS" را با نام گروه 'cc' برای جریان متغیر خروجی اضافه خواهد کرد.
- master_pl_name name
- ایجاد لیست
پخش اصلی HLS
با نام
دادهشده.
به عنوان مثال:
ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 http://example.com/live/out.m3u8
یک لیست پخش اصلی HLS با نام master.m3u8 ایجاد میکند که در http://example.com/live منتشر میشود.
- master_pl_publish_rate count
- انتشار
مکرر لیست
پخش اصلی پس
از هر تعداد
مشخصشده
از
بازههای
قطعه.
به عنوان مثال:
ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 \ -hls_time 2 -master_pl_publish_rate 30 http://example.com/live/out.m3u8
یک لیست پخش اصلی HLS با نام master.m3u8 ایجاد میکند و به انتشار مکرر آن پس از هر ۳۰ قطعه یعنی پس از هر ۶۰ ثانیه ادامه میدهد.
- http_persistent bool
- استفاده از اتصالات پایدار HTTP (Persistent). فقط برای خروجی HTTP قابل اعمال است.
- timeout timeout
- تنظیم زمان انقضا برای عملیات سوکت ورودی/خروجی (I/O). فقط برای خروجی HTTP قابل اعمال است.
- ignore_io_errors bool
- نادیده گرفتن خطاهای ورودی/خروجی در حین باز کردن، نوشتن و حذف کردن. برای اجراهای طولانیمدت با خروجی شبکه مفید است.
- headers headers
- تنظیم هدرهای سفارشی HTTP، میتواند هدرهای پیشفرض داخلی را بازنویسی کند. فقط برای خروجی HTTP قابل اعمال است.
iamf
مکسر مدل و فرمتهای صوتی فراگیر (IAMF).
فرمت IAMF برای ارائه محتوای صوتی فراگیر به منظور پخش در طیف گستردهای از دستگاهها، هم در کاربردهای پخش جریانی (استریمینگ) و هم کاربردهای آفلاین استفاده میشود. این کاربردها شامل پخش جریانی صدای اینترنتی، سرویسهای چندپخشی/پخش همگانی، بارگیری پرونده، بازیهای ویدیویی، ارتباطات، واقعیت مجازی و افزوده و موارد دیگر است. در این کاربردها، صدا ممکن است در دستگاههای بسیار متنوعی مانند هدفون، تلفنهای همراه، تبلتها، تلویزیونها، ساندبارها، سیستمهای سینمای خانگی و نمایشگرهای بزرگ پخش شود.
این فرمت توسط Alliance for Open Media ترویج و طراحی شده است.
برای اطلاعات بیشتر در مورد این فرمت، به https://aomedia.org/iamf مراجعه کنید.
ico
مکسر پروندههای ICO.
فرمت پرونده آیکون مایکروسافت (ICO) دارای محدودیتهای سختگیرانهای است که باید مورد توجه قرار گیرند:
- اندازه در هیچ بُعد نمیتواند از ۲۵۶ پیکسل بیشتر باشد
- تنها تصاویر BMP و PNG میتوانند ذخیره شوند
- اگر از
تصویر BMP
استفاده
شود، باید
یکی از
فرمتهای
پیکسلی زیر
باشد:
BMP Bit Depth FFmpeg Pixel Format 1bit pal8 4bit pal8 8bit pal8 16bit rgb555le 24bit bgr24 32bit bgra
- اگر از تصویر BMP استفاده شود، باید از هدر DIB با عنوان BITMAPINFOHEADER استفاده کند
- اگر از تصویر PNG استفاده شود، باید از فرمت پیکسلی rgba استفاده کند
ilbc
مکسر خام کدک با نرخ بیت پایین اینترنتی (iLBC).
این مکسر یک جریان صوتی تکی ilbc را میپذیرد.
image2, image2pipe
مکسر پروندههای تصویری.
مکسر image2 فریمهای ویدیویی را در پروندههای تصویری مینویسد.
نامهای پرونده خروجی با یک الگو مشخص میشوند که میتواند برای تولید مجموعهای از پروندهها با شمارهگذاری متوالی استفاده شود. این الگو ممکن است شامل رشته "%d" یا "%0Nd" باشد؛ این رشته موقعیت نویسههایی را مشخص میکند که نشاندهنده شمارهگذاری در نامهای پرونده هستند. اگر از قالب "%0Nd" استفاده شود، رشته نشاندهنده عدد در هر نام پرونده با صفر تا N رقم پر میشود (0-padded). نویسه واقعی '%' میتواند در الگو با رشته "%%" مشخص شود.
اگر الگو شامل "%d" یا "%0Nd" باشد، اولین نام پرونده در فهرست پروندههای مشخصشده حاوی عدد ۱ خواهد بود و تمامی شمارههای بعدی متوالی خواهند بود.
الگو میتواند حاوی پسوندی باشد که برای تعیین خودکار فرمت پروندههای تصویری برای نوشتن استفاده میشود.
به عنوان مثال، الگوی "img-%03d.bmp" دنبالهای از نامهای پرونده به شکل img-001.bmp، img-002.bmp، ...، img-010.bmp و غیره را مشخص میکند. الگوی "img%%-%d.jpg" دنبالهای از نامهای پرونده به شکل img%-1.jpg، img%-2.jpg، ...، img%-10.jpg و غیره را مشخص خواهد کرد.
مکسر تصویر از فرمت پرونده تصویری .Y.U.V پشتیبانی میکند. ویژگی خاص این فرمت در این است که هر فریم تصویر شامل سه پرونده برای هر یک از مؤلفههای YUV420P است. برای خواندن یا نوشتن این فرمت پرونده تصویری، نام پرونده '.Y' را مشخص کنید. مکسر در صورت نیاز پروندههای '.U' و '.V' را به طور خودکار باز میکند.
مکسر image2pipe همان گزینههای مکسر image2 را میپذیرد، اما اعتبارسنجی و بسط الگو را نادیده میگیرد، چرا که قرار است خروجی را به جای یک پرونده ذخیرهشده واقعی، در خروجی دستور بنویسد.
گزینهها
- frame_pts bool
- در صورت تنظیم روی 1، نام پرونده را با برچسب زمانی ارائه (PTS) بسته بسط میدهد. مقدار پیشفرض 0 است.
- start_number count
- شروع دنباله از شماره مشخصشده. مقدار پیشفرض 1 است.
- update bool
- در صورت تنظیم روی 1، نام پرونده همیشه فقط به عنوان یک نام پرونده و نه یک الگو تفسیر میشود و پرونده متناظر به طور مداوم با تصاویر جدید رونویسی خواهد شد. مقدار پیشفرض 0 است.
- strftime bool
- در صورت تنظیم روی 1، نام پرونده را با اطلاعات تاریخ و زمان برگرفته از strftime() بسط میدهد. مقدار پیشفرض 0 است.
- atomic_writing bool
- نوشتن خروجی در یک پرونده موقت، که پس از اتمام نوشتن به نام پرونده هدف تغییر نام داده میشود. در حالت پیشفرض غیرفعال است.
- protocol_opts options_list
- تنظیم گزینههای پروتکل به صورت فهرستی از پارامترهای key=value جداشده با «:». مقادیری که حاوی نویسه خاص ":" هستند باید گریز داده شوند.
مثالها
- استفاده از
ffmpeg برای
ایجاد
دنبالهای
از
پروندههای
img-001.jpeg، img-002.jpeg، ...،
با گرفتن یک
تصویر در هر
ثانیه از
ویدیوی
ورودی:
ffmpeg -i in.avi -fps_mode cfr -r 1 -f image2 'img-%03d.jpeg'
توجه داشته باشید که در ffmpeg، اگر فرمت با گزینه "-f" مشخص نشده باشد و نام پرونده خروجی فرمت یک پرونده تصویری را مشخص کند، مکسر image2 به طور خودکار انتخاب میشود، بنابراین دستور قبلی میتواند به این صورت نوشته شود:
ffmpeg -i in.avi -fps_mode cfr -r 1 'img-%03d.jpeg'
همچنین توجه داشته باشید که الگو لزوماً نباید شامل "%d" یا "%0Nd" باشد، به عنوان مثال برای ایجاد یک پرونده تصویری منفرد img.jpeg از ابتدای ویدیوی ورودی میتوانید از دستور زیر استفاده کنید:
ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
- گزینه strftime به
شما اجازه
میدهد نام
پرونده را
با اطلاعات
تاریخ و
زمان بسط
دهید. برای
سینتکس،
مستندات
تابع strftime()
را بررسی
کنید.
برای تولید پروندههای تصویری از الگوی "%Y-%m-%d_%H-%M-%S" تابع strftime()، میتوان از دستور ffmpeg زیر استفاده کرد:
ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
- تنظیم نام
پرونده با PTS
فریم فعلی:
ffmpeg -f v4l2 -r 1 -i /dev/video0 -copyts -f image2 -frame_pts true %d.jpg
- انتشار
محتوای
میزکار شما
به طور
مستقیم روی
یک سرور WebDAV در
هر ثانیه:
ffmpeg -f x11grab -framerate 1 -i :0.0 -q:v 6 -update 1 -protocol_opts method=PUT http://example.com/desktop.jpg
ircam
مکسر فرمت سامانه پرونده صوتی برکلی / IRCAM / CARL (موسوم به BICSF).
فرمت صوتی برکلی/IRCAM/CARL که در دهه ۱۹۸۰ توسعه یافت، نتیجه ادغام چندین فرمت و سامانه پرونده صوتی پیشین از جمله سامانه csound توسعهیافته توسط دکتر Gareth Loy در آزمایشگاه پژوهشهای صوتی رایانهای (CARL) در دانشگاه کالیفرنیا، سن دیگو، سامانه پرونده صوتی IRCAM توسعهیافته توسط Rob Gross و Dan Timis در Institut de Recherche et Coordination Acoustique / Musique در پاریس و سامانه پرونده سریع برکلی (Berkeley Fast Filesystem) است.
این فرمت در ابتدا به عنوان بخشی از Berkeley/IRCAM/CARL Sound Filesystem توسعه داده شد، که مجموعهای از برنامهها برای پیادهسازی یک سامانه پرونده برای کاربردهای صوتی در حال اجرا تحت یونیکس برکلی بود. این فرمت به ویژه در مراکز دانشگاهی پژوهش موسیقی محبوبیت داشت و بارها در ساخت آثار اولیه موسیقی تولیدشده با رایانه به کار گرفته شد.
این مکسر یک جریان صوتی تکی حاوی دادههای PCM را میپذیرد.
ivf
مکسر On2 IVF.
قالب IVF توسط شرکت On2 Technologies (که قبلاً با نام Duck Corporation شناخته میشد) برای ذخیره کدکهای توسعهیافته داخلی طراحی شد.
این مکسر یک جریان ویدیویی تکی vp8، vp9 یا av1 را میپذیرد.
jacosub
مکسر فرمت زیرنویس JACOsub.
این مکسر یک جریان زیرنویس تکی jacosub را میپذیرد.
برای توضیحات تفصیلی درباره این فرمت، به http://unicorn.us.com/jacosub/jscripts.html مراجعه کنید.
kvag
مکسر Simon & Schuster Interactive VAG.
این کانتینر سفارشی VAG توسط برخی بازیهای شرکت Simon & Schuster Interactive مانند "Real War" و "Real War: Rogue States" استفاده میشود.
این مکسر یک جریان صوتی تکی adpcm_ima_ssi را میپذیرد.
lc3
کدک صوتی ارتباطی با پیچیدگی پایین Bluetooth SIG (LC3)، یا کدک صوتی ارتباطی با پیچیدگی پایین پلاس ETSI TS 103 634 (LC3plus).
این مکسر یک جریان صوتی تکی lc3 را میپذیرد.
lrc
مکسر فرمت پرونده متن ترانه LRC.
قالب LRC (کوتاهشدهی LyRiCs) یک فرمت پرونده رایانهای است که متن ترانه را با یک پرونده صوتی مانند MP3، Vorbis یا MIDI همگامسازی میکند.
این مکسر یک جریان زیرنویس تکی subrip یا text را میپذیرد.
گزینهها
- precision number
- تنظیم تعداد ارقام اعشاری استفادهشده برای بخش کسری (کسر ثانیه) برچسبهای زمانی. محدوده 1 تا 6 است. پیشفرض 2 است، یعنی صدم ثانیه.
متاداده
تگهای متاداده زیر به متاداده متناظر در فرمت تبدیل میشوند:
اگر encoder_version به طور صریح تنظیم نشود، به طور خودکار روی نسخه libavformat تنظیم میشود.
matroska
مکسر کانتینر ماتروشکا (Matroska).
این مکسر مشخصات کانتینرهای matroska و webm را پیادهسازی میکند.
متاداده
تنظیمات متاداده شناختهشده در این مکسر عبارتند از:
- title
- تنظیم نام عنوان ارائهشده به یک تراک تکی. این برای جریانی که به عنوان ضمیمه نوشته میشود، به عنصر FileDescription نگاشت میگردد.
- language
- مشخص کردن
زبان تراک
در فرم
زبانهای Matroska.
زبان میتواند فرم ۳ حرفی کتابشناختی ISO-639-2 (یا همان ISO 639-2/B) باشد (مانند "fre" برای فرانسوی)، یا یک کد زبان ترکیبشده با یک کد کشور برای ویژگیهای خاص زبانی (مانند "fre-ca" برای فرانسوی کانادایی).
- stereo_mode
- تنظیم
چیدمان
ویدیوی
سهبعدی
استریو از
دو نما در
یک تراک
ویدیویی
تکی.
مقادیر زیر شناخته میشوند:
- mono
- ویدیو استریو نیست
- left_right
- هر دو نما در کنار یکدیگر چیده شدهاند، نمای چشم چپ در سمت چپ قرار دارد
- bottom_top
- هر دو نما با جهتگیری بالا-پایین قرار گرفتهاند، نمای چشم چپ در پایین است
- top_bottom
- هر دو نما با جهتگیری بالا-پایین قرار گرفتهاند، نمای چشم چپ در بالا است
- checkerboard_rl
- هر نما در یک الگوی درهمبافته شطرنجی چیده شده است که نمای چشم راست اول است
- checkerboard_lr
- هر نما در یک الگوی درهمبافته شطرنجی چیده شده است که نمای چشم چپ اول است
- row_interleaved_rl
- هر نما از درهمبافی مبتنی بر ردیف تشکیل شده است، نمای چشم راست ردیف اول است
- row_interleaved_lr
- هر نما از درهمبافی مبتنی بر ردیف تشکیل شده است، نمای چشم چپ ردیف اول است
- col_interleaved_rl
- هر دو نما به صورت درهمبافته ستونی چیده شدهاند، نمای چشم راست ستون اول است
- col_interleaved_lr
- هر دو نما به صورت درهمبافته ستونی چیده شدهاند، نمای چشم چپ ستون اول است
- anaglyph_cyan_red
- تمامی فریمها در قالب آناگلیف و قابل مشاهده از طریق فیلترهای قرمز-فیروزهای هستند
- right_left
- هر دو نما در کنار یکدیگر چیده شدهاند، نمای چشم راست در سمت چپ قرار دارد
- anaglyph_green_magenta
- تمامی فریمها در قالب آناگلیف و قابل مشاهده از طریق فیلترهای سبز-سرخابی هستند
- block_lr
- هر دو چشم در یک Block قرار گرفتهاند، نمای چشم چپ اول است
- block_rl
- هر دو چشم در یک Block قرار گرفتهاند، نمای چشم راست اول است
به عنوان مثال یک کلیپ سهبعدی WebM میتواند با خط فرمان زیر ایجاد شود:
ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
گزینهها
- reserve_index_space size
- به طور
پیشفرض،
این مکسر
ایندکس
مورد نیاز
برای جستجو
(که در
اصطلاحات
ماتروشکا cues
نامیده
میشود) را
در انتهای
پرونده
مینویسد،
زیرا
نمیتواند
از قبل
بداند چه
مقدار فضا
باید برای
ایندکس در
ابتدای
پرونده
اختصاص دهد.
با این حال
برای برخی
کاربردها --
مانند پخش
جریانی که
در آن جستجو
امکانپذیر
اما کُند
است -- قرار
دادن
ایندکس در
ابتدای
پرونده
سودمند
خواهد بود.
اگر این گزینه روی مقداری غیر از صفر تنظیم شود، مکسر به میزان size بایت فضا در هدر پرونده رزرو میکند و سپس هنگامی که مکس کردن پایان یافت سعی میکند Cues را در آنجا بنویسد. اگر فضای رزرو شده کافی نباشد، هیچ نشانهای (Cues) نوشته نخواهد شد، پرونده نهایی میشود و نوشتن تریلر خطایی را برمیگرداند. یک اندازه مطمئن برای اکثر موارد کاربرد حدود 50kB در هر ساعت ویدیو است.
توجه داشته باشید که cues تنها زمانی نوشته میشوند که خروجی قابلیت جستجو (seekable) داشته باشد و این گزینه در غیر این صورت هیچ اثری نخواهد داشت.
- cues_to_front bool
- در صورت
تنظیم،
مکسر
ایندکس را
در ابتدای
پرونده و با
جابجایی
دادههای
اصلی در
صورت لزوم
مینویسد.
این
میتواند
با reserve_index_space
ترکیب شود
که در این
حالت
دادهها
تنها در
صورتی
جابجا
میشوند که
فضای رزرو
شده اولیه
ناکافی
باشد.
این گزینه اگر خروجی غیرقابل جستجو باشد نادیده گرفته میشود.
- cluster_size_limit size
- ذخیره
حداکثر به
میزان بایت
مشخصشده
در یک
کلاستر (Cluster).
در صورت عدم تعیین، این محدودیت به طور خودکار روی یک مقدار ثابت معقول تنظیم میشود.
- cluster_time_limit duration
- ذخیره
حداکثر به
میزان
میلیثانیههای
مشخصشده
در یک
کلاستر.
در صورت عدم تعیین، این محدودیت به طور خودکار روی یک مقدار ثابت معقول تنظیم میشود.
- dash bool
- ایجاد یک پرونده WebM منطبق با مشخصات WebM DASH. به طور پیشفرض روی "false" تنظیم شده است.
- dash_track_number index
- شماره تراک برای جریان DASH. به طور پیشفرض روی 1 تنظیم شده است.
- live bool
- نوشتن پروندهها با این فرض که یک جریان زنده است. به طور پیشفرض روی "false" تنظیم شده است.
- allow_raw_vfw bool
- اجازه دادن به حالت VFW خام. به طور پیشفرض روی "false" تنظیم شده است.
- flipped_raw_rgb bool
- در صورت تنظیم روی "true"، ارتفاع مثبت را برای بیتمپهای RGB خام ذخیره میکند، که نشان میدهد بیتمپ از پایین به بالا ذخیره شده است. توجه داشته باشید که این گزینه بیتمپ را معکوس نمیکند و این کار باید از قبل به صورت دستی، مثلاً با استفاده از فیلتر vflip انجام شود. پیشفرض "false" است و نشان میدهد که بیتمپ از بالا به پایین ذخیره شده است.
- write_crc32 bool
- نوشتن یک عنصر CRC32 در داخل هر عنصر سطح ۱ (Level 1). به طور پیشفرض روی "true" تنظیم شده است. این گزینه برای WebM نادیده گرفته میشود.
- default_mode mode
- کنترل نحوه تنظیم FlagDefault تراکهای خروجی. این گزینه تعیین میکند که پخشکنندهها کدام تراکها را باید به صورت پیشفرض پخش کنند. حالت پیشفرض passthrough است.
- infer
- هر تراک با حالت پیشفرض (disposition default)، پرچم FlagDefault آن تنظیم خواهد شد. علاوه بر این، برای هر نوع تراک (صدا، ویدیو یا زیرنویس)، اگر هیچ تراکی با حالت پیشفرض از این نوع وجود نداشته باشد، اولین تراک از این نوع به عنوان پیشفرض علامتگذاری میشود (در صورت وجود). این تضمین میکند که پرچم پیشفرض به شیوهای معقول تنظیم شود حتی اگر ورودی از کانتینرهایی آمده باشد که فاقد مفهوم تراکهای پیشفرض هستند.
- infer_no_subs
- این حالت همانند infer است به جز اینکه اگر هیچ تراک زیرنویسی با حالت پیشفرض وجود نداشته باشد، هیچ تراک زیرنویسی به عنوان پیشفرض علامتگذاری نخواهد شد.
- passthrough
- در این حالت، FlagDefault تنظیم میشود اگر و تنها اگر پرچم AV_DISPOSITION_DEFAULT در مشخصه جریان متناظر تنظیم شده باشد.
md5
فرمت آزمایشی MD5.
این فرمت گونهای از مکسر hash است. بر خلاف آن مکسر، به طور پیشفرض از تابع هش MD5 استفاده میکند.
همچنین به مکسرهای hash و framemd5 مراجعه کنید.
مثالها
- برای
محاسبه هش MD5
ورودی
تبدیلشده
به صدا و
ویدیوی
خام، و
ذخیره آن در
پرونده out.md5:
ffmpeg -i INPUT -f md5 out.md5
- برای چاپ هش
MD5 در خروجی
استاندارد:
ffmpeg -i INPUT -f md5 -
mcc
مکسر برای پروندههای MacCaption MCC، این مکسر از نسخههای 1.0 و 2.0 فرمت MCC پشتیبانی میکند. پروندههای MCC دادههای VANC را ذخیره میکنند، که میتواند شامل زیرنویسهای بسته (EIA-608 و CEA-708)، کد زمانی کمکی، دادههای pan-scan و غیره باشد.
گزینهها
گزینههای مکسر عبارتند از:
- override_time_code_rate
- بازنویسی مقدار "Time Code Rate" در خروجی. پیشفرض تلاش برای استنتاج از "time_base" جریان است که معمولاً کار نمیکند.
- use_u_alias
- استفاده از نام مستعار "U" برای دنباله بایتی "E1h 00h 00h 00h". به طور پیشفرض غیرفعال است زیرا در برخی پروندههای .mcc اختلاف نظر وجود دارد که آیا ۲ یا ۳ بایت صفر دارد.
- mcc_version
- نسخه فرمت پرونده MCC. باید ۱ یا ۲ باشد، پیشفرض ۲ است.
- creation_program
- برنامه سازنده. پیشفرض این نسخه از FFmpeg است.
- creation_time
- زمان ایجاد. پیشفرض زمان کنونی است.
مثالها
- استخراج یک
جریان MXF
"SMPTE_436M_ANC" از
یک پرونده MXF
و نوشتن آن
در یک
پرونده MCC با
نرخ ۳۰ فریم
بر ثانیه.
ffmpeg -i input.mxf -c copy -map 0:d -override_time_code_rate 30 out.mcc
- استخراج
زیرنویسهای
بسته EIA-608/CTA-708 از
یک پرونده
.mp4 و نوشتن
آنها در یک
پرونده MCC با
نرخ ۲۹.۹۷
فریم بر
ثانیه.
ffmpeg -f lavfi -i "movie=input.mp4[out+subcc]" -c:s copy -map 0:s -override_time_code_rate 30000/1001 out.mcc
microdvd
مکسر فرمت زیرنویس MicroDVD.
این مکسر یک جریان زیرنویس تکی microdvd را میپذیرد.
mmf
مکسر فرمت پرونده صوتی مصنوعی همراه (SMAF).
فرمت SMAF یک قالب دادههای موسیقی مشخصشده توسط یاماها برای دستگاههای الکترونیکی قابل حمل مانند تلفنهای همراه و دستیارهای دیجیتال شخصی است.
این مکسر یک جریان صوتی تکی adpcm_yamaha را میپذیرد.
mp3
مکسر MP3 یک جریان خام MP3 را با ویژگیهای اختیاری زیر مینویسد:
- یک هدر
متاداده ID3v2
در ابتدا
(به طور
پیشفرض
فعال است).
نسخههای 2.3
و 2.4
پشتیبانی
میشوند؛
گزینه
اختصاصی
"id3v2_version"
کنترل
میکند که
کدام یک
استفاده
شود (3 یا 4).
تنظیم
"id3v2_version" روی
0 هدر ID3v2 را به
طور کامل
غیرفعال
میکند.
این مکسر از نوشتن تصاویر پیوستشده (فریمهای APIC) در هدر ID3v2 پشتیبانی میکند. تصاویر در قالب یک جریان ویدیویی با یک بسته منفرد به مکسر ارائه میشوند. هر تعداد از این جریانها میتواند وجود داشته باشد که هر یک با یک فریم منفرد APIC متناظر خواهد بود. تگهای متاداده جریان شامل title و comment به ترتیب به description و picture type در APIC نگاشت میشوند. برای انواع مجاز تصویر، به http://id3.org/id3v2.4.0-frames مراجعه کنید.
توجه داشته باشید که فریمهای APIC باید در ابتدا نوشته شوند، بنابراین مکسر فریمهای صوتی را تا زمانی که تمامی تصاویر را دریافت کند در حافظه بافر خواهد کرد. به همین دلیل توصیه میشود که تصاویر در سریعترین زمان ممکن ارائه شوند تا از بافر بیش از حد جلوگیری گردد.
- یک فریم Xing/LAME بلافاصله پس از هدر ID3v2 (در صورت وجود). به طور پیشفرض فعال است، اما تنها در صورتی نوشته میشود که خروجی قابلیت جستجو داشته باشد. گزینه اختصاصی "write_xing" میتواند برای غیرفعال کردن آن استفاده شود. این فریم حاوی اطلاعات مختلفی است که ممکن است برای دیکودر مفید باشد، مانند مدت زمان صدا یا تأخیر اینکودر.
- یک تگ قدیمی ID3v1 در انتهای پرونده (به طور پیشفرض غیرفعال است). میتوان آن را با گزینه اختصاصی "write_id3v1" فعال کرد، اما از آنجا که قابلیتهای آن بسیار محدود است، استفاده از آن توصیه نمیشود.
مثالها:
نوشتن یک mp3 با هدر ID3v2.3 و پاورقی ID3v1:
ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
برای پیوست کردن یک تصویر به یک پرونده mp3، هر دو جریان صدا و تصویر را با "map" انتخاب کنید:
ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
نوشتن یک MP3 «تمیز» بدون هیچ ویژگی اضافی:
ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3
mpegts
مکسر جریان انتقال امپگ (MPEG transport stream).
این مکسر استاندارد ISO 13818-1 و بخشی از ETSI EN 300 468 را پیادهسازی میکند.
تنظیمات متاداده شناختهشده در مکسر mpegts عبارتند از "service_provider" و "service_name". اگر تنظیم نشده باشند، مقدار پیشفرض برای "service_provider" برابر FFmpeg و مقدار پیشفرض برای "service_name" برابر Service01 است.
گزینهها
گزینههای مکسر عبارتند از:
- mpegts_transport_stream_id integer
- تنظیم transport_stream_id. این شناسه یک ترانسپوندر را در DVB مشخص میکند. پیشفرض 0x0001 است.
- mpegts_original_network_id integer
- تنظیم original_network_id. این یک شناسه منحصربهفرد از یک شبکه در DVB است. کاربرد اصلی آن در شناسایی منحصربهفرد یک سرویس از طریق مسیر Original_Network_ID, Transport_Stream_ID است. پیشفرض 0xff01 است.
- mpegts_service_id integer
- تنظیم service_id، که در DVB با عنوان برنامه (program) نیز شناخته میشود. پیشفرض 0x0001 است.
- mpegts_service_type integer
- تنظیم service_type برنامه. پیشفرض "digital_tv" است. گزینههای زیر را میپذیرد:
- hex_value
- هر مقدار هگزادسیمال بین 0x01 و 0xff همانطور که در ETSI 300 468 تعریف شده است.
- digital_tv
- سرویس تلویزیون دیجیتال (Digital TV).
- digital_radio
- سرویس رادیوی دیجیتال (Digital Radio).
- teletext
- سرویس تلهتکست (Teletext).
- advanced_codec_digital_radio
- سرویس رادیوی دیجیتال با کدک پیشرفته.
- mpeg2_digital_hdtv
- سرویس تلویزیون دیجیتال با کیفیت بالا MPEG2.
- advanced_codec_digital_sdtv
- سرویس تلویزیون دیجیتال با کیفیت استاندارد با کدک پیشرفته.
- advanced_codec_digital_hdtv
- سرویس تلویزیون دیجیتال با کیفیت بالا با کدک پیشرفته.
- hevc_digital_hdtv
- سرویس تلویزیون دیجیتال HEVC.
- mpegts_pmt_start_pid integer
- تنظیم اولین PID برای جدولهای PMT. پیشفرض 0x1000، حداقل 0x0020، و حداکثر 0x1ffa است. این گزینه در حالت m2ts که در آن PID جدول PMT روی 0x0100 ثابت است، هیچ اثری ندارد.
- mpegts_start_pid integer
- تنظیم اولین PID برای جریانهای بنیادی (elementary streams). پیشفرض 0x0100، حداقل 0x0020، و حداکثر 0x1ffa است. این گزینه در حالت m2ts که در آن PIDهای جریان بنیادی ثابت هستند، هیچ اثری ندارد.
- mpegts_m2ts_mode boolean
- فعال کردن حالت m2ts در صورت تنظیم روی 1. مقدار پیشفرض -1 است که حالت m2ts را غیرفعال میکند.
- muxrate integer
- تنظیم یک نرخ مکس ثابت. پیشفرض VBR است.
- pes_payload_size integer
- تنظیم حداقل بار مفید (payload) بسته PES بر حسب بایت. پیشفرض 2930 است.
- mpegts_flags flags
- تنظیم فلگهای mpegts. گزینههای زیر را میپذیرد:
- resend_headers
- ارسال مجدد PAT/PMT قبل از نوشتن بسته بعدی.
- latm
- استفاده از بستهبندی LATM برای AAC.
- pat_pmt_at_frames
- ارسال مجدد PAT و PMT در هر فریم ویدیویی.
- system_b
- انطباق با سامانه B (DVB) به جای سامانه A (ATSC).
- initial_discontinuity
- علامتگذاری بسته اولیه هر جریان به عنوان ناپیوستگی (discontinuity).
- nit
- ارسال جدول NIT.
- omit_rai
- غیرفعال کردن نوشتن نشانگر دسترسی تصادفی (random access indicator).
- mpegts_copyts boolean
- حفظ برچسبهای زمانی اصلی، اگر مقدار روی 1 تنظیم شود. مقدار پیشفرض -1 است، که منجر به جابجایی برچسبهای زمانی میشود تا از 0 شروع شوند.
- omit_video_pes_length boolean
- حذف طول بسته PES برای بستههای ویدیویی. پیشفرض 1 (true) است.
- pcr_period integer
- بازنویسی زمان پیشفرض ارسال مجدد PCR بر حسب میلیثانیه. پیشفرض -1 است که بدان معنی است که بازه PCR به طور خودکار تعیین میشود: 20 میلیثانیه برای جریانهای CBR استفاده میشود، و بالاترین مضرب مدت فریم که کمتر از 100 میلیثانیه باشد برای جریانهای VBR به کار میرود.
- pat_period duration
- حداکثر زمان بر حسب ثانیه بین جداول PAT/PMT. پیشفرض 0.1 است.
- sdt_period duration
- حداکثر زمان بر حسب ثانیه بین جداول SDT. پیشفرض 0.5 است.
- nit_period duration
- حداکثر زمان بر حسب ثانیه بین جداول NIT. پیشفرض 0.5 است.
- tables_version integer
- تنظیم نسخه
PAT، PMT، SDT و NIT
(پیشفرض
0،
مقادیر
معتبر از 0
تا 31، به طور
فراگیر).
این گزینه
امکان
بهروزرسانی
ساختار
جریان را
فراهم
میکند تا
مصرفکننده
استاندارد
بتواند
تغییر را
تشخیص دهد.
برای انجام
این کار،
"AVFormatContext"
خروجی را
بازگشایی
کنید (در
صورت
استفاده از
API) یا نمونه
ffmpeg را
مجدداً
راهاندازی
نمایید، و
مقدار tables_version
را به صورت
چرخهای
تغییر دهید:
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111 ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111 ... ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111 ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111 ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111 ...
مثال
ffmpeg -i file.mpg -c copy \
-mpegts_original_network_id 0x1122 \
-mpegts_transport_stream_id 0x3344 \
-mpegts_service_id 0x5566 \
-mpegts_pmt_start_pid 0x1500 \
-mpegts_start_pid 0x150 \
-metadata service_provider="Some provider" \
-metadata service_name="Some Channel" \
out.ts
mxf, mxf_d10, mxf_opatom
مکسر MXF.
گزینهها
گزینههای مکسر عبارتند از:
- store_user_comments bool
- تنظیم اینکه آیا نظرات کاربر در صورت وجود ذخیره شوند یا هرگز. فرمت IRT D-10 اجازه نظرات کاربر را نمیدهد. بنابراین پیشفرض این است که آنها برای mxf و mxf_opatom نوشته شوند اما برای mxf_d10 نوشته نشوند.
null
مکسر تهی (Null).
این مکسر هیچ پرونده خروجی تولید نمیکند، و اساساً برای مقاصد آزمایش یا بنچمارک مفید است.
برای مثال برای بنچمارک دیکود کردن با ffmpeg میتوانید از دستور زیر استفاده کنید:
ffmpeg -benchmark -i INPUT -f null out.null
توجه داشته باشید که دستور بالا پرونده out.null را نمیخواند یا نمینویسد، اما تعیین پرونده خروجی طبق سینتکس ffmpeg الزامی است.
به عنوان جایگزین میتوانید دستور را به این شکل بنویسید:
ffmpeg -benchmark -i INPUT -f null -
nut
- -syncpoints flags
- تغییر نحوه استفاده از نقاط همگامسازی (syncpoint) در nut:
- default استفاده از راهنماهای عادی جستجو با سربار کم.
- none عدم استفاده از نقاط همگامسازی به طور کلی، که سربار را کاهش میدهد اما جریان را غیرقابل جستجو میسازد؛
-
Use of this option is not recommended, as the resulting files are very damage sensitive and seeking is not possible. Also in general the overhead from syncpoints is negligible. Note, -C<write_index> 0 can be used to disable all growing data tables, allowing to mux endless streams with limited memory and without these disadvantages.
- timestamped گسترش نقطه همگامسازی با یک فیلد ساعت دیواری (wallclock).
فلگهای none و timestamped آزمایشی هستند.
- -write_index bool
- نوشتن ایندکس در انتها، پیشفرض نوشتن ایندکس است.
ffmpeg -i INPUT -f_strict experimental -syncpoints none - | processor
ogg
مکسر کانتینر Ogg.
- -page_duration duration
- مدت زمان ترجیحی صفحه، بر حسب میکروثانیه. مکسر تلاش میکند صفحاتی بسازد که طول آنها تقریباً duration میکروثانیه باشد. این به کاربر اجازه میدهد میان دقت جستجو و سربار کانتینر مصالحه برقرار کند. پیشفرض ۱ ثانیه است. مقدار 0 تمام بخشها را پر کرده و صفحات را تا حد ممکن بزرگ میسازد. مقدار 1 عملاً در اکثر شرایط از ۱ بسته در هر صفحه استفاده میکند، که دقت جستجوی ریزی به بهای سربار بیشتر کانتینر فراهم میآورد.
- -serial_offset value
- مقدار سریالی که شماره سریال جریانها از آن تنظیم میشود. تنظیم آن روی مقادیر متفاوت و به اندازه کافی بزرگ تضمین میکند که پروندههای ogg تولیدشده میتوانند با اطمینان زنجیربندی شوند.
pdv
مکسر ویدیوی Playdate.
این مکسر کانتینر ویدیویی Playdate مورد استفاده در SDK پلیدیت شرکت Panic را مینویسد. به یک خروجی قابل جستجو و یک جریان ویدیویی تکی PDV نیاز دارد.
- max_frames frames
- رزرو فضا برای حداکثر frames فریم ویدیویی در هدر پرونده. این گزینه اجباری است.
rcwt
فرمت RCWT (مخفف Raw Captions With Time) یک فرمت بومی ابزار ccextractor است، ابزاری متنباز و پرکاربرد برای پردازش منابع زیرنویسهای بسته (CC) 608/708. این فرمت میتواند برای بایگانی بیتاستریم استخراجشده اصلی CC و تولید یک پرونده منبع برای پردازش یا تبدیل بعدی استفاده شود. این فرمت امکان تعاملپذیری بین ccextractor و FFmpeg را فراهم میکند، تجزیه آن ساده است و میتواند برای ایجاد یک نسخه پشتیبان از نمایش CC به کار رود.
این مکسر مشخصات فنی مارس ۲۰۲۴ را پیادهسازی میکند، که از آوریل ۲۰۱۴ پایدار و بدون تغییر بوده است.
این مکسر تفاوتهای ظریفی با شیوه مکس کردن RCWT توسط ccextractor خواهد داشت. تاکنون هیچ مشکل سازگاری در هنگام پردازش خروجی با ccextractor به عنوان نتیجه این امر مشاهده نشده است، اما ممکن است نتایج متفاوت باشد و خروجیها از نظر بیتی تطابق کامل نداشته باشند.
مشخصات رایگان RCWT را میتوان در اینجا یافت: https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT
مثالها
- •
- استخراج
زیرنویسهای
بسته به RCWT با
استفاده از
lavfi:
ffmpeg -f lavfi -i "movie=INPUT.mkv[out+subcc]" -map 0:s:0 -c:s copy -f rcwt CC.rcwt.bin
segment, stream_segment, ssegment
بخشبندیکننده (سگمنتر) پایه جریان.
این مکسر جریانها را در تعدادی پرونده جداگانه با مدت زمان تقریباً ثابت خروجی میدهد. الگوی نام پرونده خروجی میتواند به شیوهای مشابه image2، یا با استفاده از یک الگوی "strftime" در صورت فعال بودن گزینه strftime تنظیم شود.
"stream_segment" گونهای از مکسر است که برای نوشتن در فرمتهای خروجی جریانی استفاده میشود، یعنی فرمتهایی که نیازی به هدرهای سراسری ندارند، و برای نمونه برای خروجی دادن به قطعات جریان انتقال MPEG توصیه میشود. "ssegment" یک نام مستعار کوتاهتر برای "stream_segment" است.
هر قطعه با یک فریم کلیدی از جریان مرجع انتخابشده شروع میشود، که از طریق گزینه reference_stream تنظیم میگردد.
توجه داشته باشید که اگر میخواهید برای یک پرونده ویدیویی برش دقیقی داشته باشید، باید فریمهای کلیدی ورودی را دقیقاً با زمانهای برش مورد انتظار سگمنتر مطابقت دهید، در غیر این صورت مکسر بخشبندی، قطعه جدید را با فریم کلیدی بعدی که پس از زمان شروع مشخصشده یافت میشود، آغاز خواهد کرد.
مکسر بخشبندی با یک ویدیوی تکی با نرخ فریم ثابت بهترین عملکرد را دارد.
به صورت اختیاری میتواند با تنظیم گزینه segment_list، فهرستی از قطعات ایجادشده تولید کند. نوع فهرست توسط گزینه segment_list_type مشخص میشود. نام پروندههای ورودی در فهرست قطعات به طور پیشفرض روی نام پایه (basename) پروندههای قطعه متناظر تنظیم میشود.
همچنین به مکسر hls مراجعه کنید، که پیادهسازی خاصتری برای بخشبندی HLS ارائه میدهد.
گزینهها
مکسر بخشبندی از گزینههای زیر پشتیبانی میکند:
- increment_tc 1|0
- اگر روی 1 تنظیم شود، کد زمانی بین هر قطعه افزایش مییابد. در صورت انتخاب این گزینه، ورودی باید دارای یک کد زمانی در اولین جریان ویدیویی باشد. مقدار پیشفرض 0 است.
- reference_stream specifier
- تنظیم جریان مرجع، همانطور که توسط رشته specifier مشخص شده است. اگر specifier روی "auto" تنظیم شود، مرجع به طور خودکار انتخاب میشود. در غیر این صورت باید یک مشخصکننده جریان باشد (به بخش «مشخصکنندههای جریان» در راهنمای ffmpeg مراجعه کنید) که جریان مرجع را مشخص میکند. مقدار پیشفرض "auto" است.
- segment_format format
- بازنویسی فرمت کانتینر داخلی، به طور پیشفرض بر اساس پسوند نام پرونده حدس زده میشود.
- segment_format_options options_list
- تنظیم گزینههای فرمت خروجی با استفاده از یک فهرست جداشده با «:» از پارامترهای key=value. مقادیری که حاوی نویسه خاص ":" هستند باید گریز داده شوند.
- segment_list name
- همچنین تولید یک پرونده فهرست با نام name. در صورت عدم تعیین، هیچ پرونده فهرستی تولید نمیشود.
- segment_list_flags flags
- تنظیم
فلگهای
مؤثر بر
تولید
فهرست
قطعات.
در حال حاضر از فلگهای زیر پشتیبانی میکند:
- cache
- اجازه کش کردن (تنها بر پروندههای فهرست M3U8 اثر میگذارد).
- live
- اجازه تولید پرونده سازگار با پخش زنده.
- segment_list_size size
- بهروزرسانی پرونده فهرست به گونهای که حداکثر شامل size قطعه باشد. اگر 0 باشد پرونده فهرست شامل تمام قطعات خواهد بود. مقدار پیشفرض 0 است.
- segment_list_entry_prefix prefix
- افزودن prefix به ابتدای هر مدخل. برای تولید مسیرهای مطلق مفید است. به طور پیشفرض هیچ پیشوندی اعمال نمیشود.
- segment_list_type type
- انتخاب
فرمت
فهرستبندی.
مقادیر زیر شناخته میشوند:
- flat
- تولید یک فهرست ساده برای قطعات ایجادشده، یک قطعه در هر خط.
- csv, ext
- تولید یک
فهرست برای
قطعات
ایجادشده،
یک قطعه در
هر خط، که
هر خط با
قالب
(مقادیر
جداشده با
کاما)
مطابقت
دارد:
<segment_filename>,<segment_start_time>,<segment_end_time>
segment_filename نام پرونده خروجی تولیدشده توسط مکسر بر اساس الگوی ارائهشده است. فرار CSV (طبق RFC4180) در صورت نیاز اعمال میشود.
segment_start_time و segment_end_time زمان شروع و پایان قطعه را بر حسب ثانیه مشخص میکنند.
یک پرونده فهرست با پسوند ".csv" یا ".ext" این فرمت را به طور خودکار انتخاب میکند.
ext به نفع csv منسوخ شده است.
- ffconcat
- تولید یک
پرونده ffconcat
برای قطعات
ایجادشده.
پرونده
حاصل را
میتوان با
استفاده از
دیمکسر concat
در FFmpeg خواند.
یک پرونده فهرست با پسوند ".ffcat" یا ".ffconcat" این فرمت را به طور خودکار انتخاب خواهد کرد.
- m3u8
- تولید یک
پرونده M3U8
گسترشیافته،
نسخه 3،
منطبق با
http://tools.ietf.org/id/draft-pantos-http-live-streaming.
یک پرونده فهرست با پسوند ".m3u8" این فرمت را به طور خودکار انتخاب خواهد کرد.
در صورت عدم تعیین، نوع فرمت از پسوند نام پرونده فهرست حدس زده میشود.
- segment_time time
- تنظیم مدت
زمان قطعه
به time،
مقدار باید
یک مشخصه
مدت زمان
باشد. مقدار
پیشفرض "2"
است. همچنین
گزینه segment_times
را ببینید.
توجه داشته باشید که بخشبندی ممکن است دقیق نباشد، مگر اینکه فریمهای کلیدی جریان مرجع را در زمان مشخصشده اجبار کنید. یادداشت مقدماتی و مثالهای زیر را ببینید.
- min_seg_duration time
- تنظیم حداقل مدت زمان قطعه به time، مقدار باید یک مشخصه مدت زمان باشد. این از پایان یافتن قطعات توسط مکسر در مدتی کمتر از این مقدار جلوگیری میکند. تنها همراه با "segment_time" مؤثر است. مقدار پیشفرض "0" است.
- segment_atclocktime 1|0
- اگر روی "1"
تنظیم شود،
در
بازههای
زمانی منظم
ساعت از
ساعت 00:00
تقسیم
میشود.
مقدار time
مشخصشده
در segment_time برای
تنظیم طول
بازه برش
استفاده
میشود.
برای مثال با تنظیم segment_time روی "900" امکان ایجاد پروندهها در ساعتهای 12:00، 12:15، 12:30 و غیره فراهم میشود.
مقدار پیشفرض "0" است.
- segment_clocktime_offset duration
- به تأخیر
انداختن
زمانهای
برش قطعه با
مدت زمان
مشخصشده
در هنگام
استفاده از
segment_atclocktime.
برای مثال با تنظیم segment_time روی "900" و segment_clocktime_offset روی "300" امکان ایجاد پروندهها در ساعتهای 12:05، 12:20، 12:35 و غیره ممکن میشود.
مقدار پیشفرض "0" است.
- segment_clocktime_wrap_duration duration
- وادار کردن
سگمنتر به
اینکه فقط
زمانی یک
قطعه جدید
را شروع کند
که یک بسته
در مدت زمان
مشخصشده
پس از زمان
ساعتِ
بخشبندی
به مکسر
برسد. از
این طریق
میتوانید
سگمنتر را
در برابر
پرشهای به
عقب در زمان
محلی،
مانند
ثانیههای
کبیسه یا
انتقال از
ساعت
تابستانی
به زمان
استاندارد،
پایدارتر
سازید.
پیشفرض حداکثر مدت زمان ممکن است، که به معنی شروع یک قطعه جدید بدون در نظر گرفتن زمان سپریشده از آخرین زمان ساعت است.
- segment_time_delta delta
- مشخص کردن
زمان دقت
هنگام
انتخاب
زمان شروع
برای یک
قطعه، که به
صورت یک
مشخصه مدت
زمان بیان
میشود.
مقدار
پیشفرض "0"
است.
هنگامی که delta مشخص شود، یک فریم کلیدی در صورتی یک قطعه جدید را آغاز خواهد کرد که PTS آن رابطه زیر را برآورده کند:
PTS >= start_time - time_delta
این گزینه هنگام برش محتوای ویدیویی، که همیشه در مرزهای GOP تقسیم میشود، در صورتی که یک فریم کلیدی درست قبل از زمان برش مشخصشده یافت شود، مفید است.
به طور خاص ممکن است در ترکیب با گزینه force_key_frames در ffmpeg استفاده شود. زمانهای فریم کلیدی مشخصشده توسط force_key_frames ممکن است به دلیل مسائل گرد کردن دقیقاً تنظیم نشوند، که پیامد آن این است که ممکن است زمان یک فریم کلیدی درست قبل از زمان مشخصشده تنظیم شود. برای ویدیوهای با نرخ فریم ثابت، مقدار 1/(2*frame_rate) باید بدترین حالت عدم تطابق میان زمان تعیینشده و زمان تنظیمشده توسط force_key_frames را پوشش دهد.
- segment_times times
- مشخص کردن فهرستی از نقاط برش. times شامل فهرستی از مشخصههای مدت زمان جداشده با کاما به ترتیب صعودی است. همچنین گزینه segment_time را ببینید.
- segment_frames frames
- مشخص کردن
فهرستی از
شماره
فریمهای
ویدیویی
برای برش. frames
شامل
فهرستی از
اعداد صحیح
جداشده با
کاما به
ترتیب
صعودی است.
این گزینه مشخص میکند که هر زمان یک فریم کلیدی جریان مرجع پیدا شد و شماره متوالی فریم (با شروع از 0) بزرگتر یا مساوی مقدار بعدی در فهرست بود، یک قطعه جدید شروع شود.
- segment_wrap limit
- چرخش مجدد نمایه قطعه زمانی که به limit برسد.
- segment_start_number number
- تنظیم شماره توالی اولین قطعه. پیشفرض 0 است.
- strftime 1|0
- استفاده از تابع "strftime" برای تعریف نام قطعات جدید برای نوشتن. در صورت انتخاب این گزینه، نام قطعه خروجی باید شامل یک الگوی تابع "strftime" باشد. مقدار پیشفرض 0 است.
- break_non_keyframes 1|0
- در صورت فعال بودن، اجازه میدهد قطعات از فریمهایی غیر از فریمهای کلیدی شروع شوند. این ویژگی رفتار برخی پخشکنندهها را در صورتی که زمان بین فریمهای کلیدی نامنظم باشد بهبود میبخشد، اما ممکن است در برخی دیگر وضعیت را بدتر کند و باعث بروز رفتارهای نامتعارف در هنگام جستجو شود. پیشفرض 0 است.
- reset_timestamps 1|0
- بازنشانی برچسبهای زمانی در ابتدای هر قطعه، به طوری که هر قطعه با برچسب زمانی نزدیک به صفر آغاز شود. هدف از آن تسهیل پخش قطعات تولیدشده است. ممکن است با برخی ترکیبهای مکسرها/کدکها کار نکند. به طور پیشفرض روی 0 تنظیم شده است.
- initial_offset offset
- مشخص کردن آفست برچسب زمانی برای اعمال بر روی برچسبهای زمانی بستههای خروجی. آرگومان باید یک مشخصه مدت زمان باشد، و پیشفرض آن 0 است.
- write_empty_segments 1|0
- در صورت فعال بودن، اگر در دورهای که معمولاً یک قطعه را در بر میگیرد هیچ بستهای وجود نداشته باشد، یک قطعه خالی مینویسد. در غیر این صورت، قطعه با بسته بعدی که نوشته میشود پر خواهد شد. پیشفرض 0 است.
اطمینان حاصل کنید که هنگام کدگذاری، یک GOP بسته (closed GOP) درخواست نمایید و اندازه GOP را به گونهای تنظیم کنید که با محدودیت زمانی قطعه شما متناسب باشد.
مثالها
- مکس مجدد
محتوای
پرونده in.mkv
به فهرستی
از قطعات
out-000.nut، out-001.nut و
غیره، و
نوشتن
فهرست
قطعات
تولیدشده
در out.list:
ffmpeg -i in.mkv -codec hevc -flags +cgop -g 60 -map 0 -f segment -segment_list out.list out%03d.nut
- بخشبندی
ورودی و
تنظیم
گزینههای
فرمت خروجی
برای قطعات
خروجی:
ffmpeg -i in.mkv -f segment -segment_time 10 -segment_format_options movflags=+faststart out%03d.mp4
- بخشبندی
پرونده
ورودی بر
اساس نقاط
برش
مشخصشده
توسط گزینه
segment_times:
ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
- استفاده از
گزینه force_key_frames
در ffmpeg برای
اجبار
فریمهای
کلیدی در
ورودی در
مکانهای
مشخصشده،
همراه با
گزینه
قطعهبندی
segment_time_delta به
منظور در
نظر گرفتن
گرد
کردنهای
احتمالی
هنگام
تنظیم
زمانهای
فریم کلیدی.
ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \ -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
به منظور اجبار فریمهای کلیدی روی پرونده ورودی، تبدیل کد (ترنسکد) الزامی است.
- بخشبندی
پرونده
ورودی با
برش پرونده
بر اساس
دنباله
شماره
فریمهای
مشخصشده
با گزینه
segment_frames:
ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
- تبدیل in.mkv به
قطعات TS با
استفاده از
اینکودرهای
"libx264" و
"aac":
ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a aac -f ssegment -segment_list out.list out%03d.ts
- بخشبندی
پرونده
ورودی، و
ایجاد یک
لیست پخش
زنده M3U8 (قابل
استفاده به
عنوان منبع
HLS زنده):
ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \ -segment_list_flags +live -segment_time 10 out%03d.mkv
smoothstreaming
مکسر Smooth Streaming مجموعهای از پروندهها (Manifest، قطعات) را تولید میکند که برای ارائه با یک سرور وب سنتی مناسب هستند.
- window_size
- مشخص کردن تعداد قطعات نگهداریشده در manifest. پیشفرض 0 (نگهداری همه).
- extra_window_size
- مشخص کردن تعداد قطعات نگهداریشده در خارج از manifest پیش از حذف از دیسک. پیشفرض 5.
- lookahead_count
- مشخص کردن تعداد قطعات پیشنگر (lookahead). پیشفرض 2.
- min_frag_duration
- مشخص کردن حداقل مدت زمان قطعه (بر حسب میکروثانیه). پیشفرض 5000000.
- remove_at_exit
- مشخص کردن اینکه آیا هنگام پایان کار تمام قطعات حذف شوند یا خیر. پیشفرض 0 (عدم حذف).
streamhash
فرمت آزمایشی هش به ازای هر جریان.
این مکسر یک هش رمزنگاری از تمامی فریمهای ورودی را به ازای هر جریان محاسبه و چاپ میکند. این میتواند برای بررسی برابری بدون نیاز به انجام مقایسه باینری کامل استفاده شود.
به طور پیشفرض، فریمهای صوتی پیش از محاسبه هش به صدای خام ۱۶ بیتی علامتدار و فریمهای ویدیویی به ویدیوی خام تبدیل میشوند، اما خروجی تبدیلهای صریح به سایر کدکها نیز میتواند استفاده شود. برچسبهای زمانی نادیده گرفته میشوند. این مکسر به طور پیشفرض از تابع هش رمزنگاری SHA-256 استفاده میکند، اما از چندین الگوریتم دیگر نیز پشتیبانی مینماید.
خروجی مکسر شامل یک خط به ازای هر جریان به شکل زیر است: streamindex,streamtype,algo=hash، که در آن streamindex نمایه جریان نگاشتشده، streamtype یک نویسه تکی نشاندهنده نوع جریان، algo یک رشته کوتاه نشاندهنده تابع هش استفادهشده، و hash یک عدد هگزادسیمال نشاندهنده هش محاسبهشده است.
- hash algorithm
- استفاده از تابع هش رمزنگاری مشخصشده توسط رشته algorithm. مقادیر پشتیبانیشده عبارتند از "MD5"، "murmur3"، "RIPEMD128"، "RIPEMD160"، "RIPEMD256"، "RIPEMD320"، "SHA160"، "SHA224"، "SHA256" (پیشفرض)، "SHA512/224"، "SHA512/256"، "SHA384"، "SHA512"، "CRC32" و "adler32".
مثالها
برای محاسبه هش SHA-256 ورودی تبدیلشده به صدا و ویدیوی خام، و ذخیره آن در پرونده out.sha256:
ffmpeg -i INPUT -f streamhash out.sha256
برای چاپ هش MD5 در خروجی استاندارد، از دستور زیر استفاده کنید:
ffmpeg -i INPUT -f streamhash -hash md5 -
همچنین به مکسرهای hash و framehash مراجعه کنید.
tee
مکسر tee میتواند برای نوشتن دادههای یکسان در چندین خروجی، مانند پروندهها یا جریانها، استفاده شود. برای نمونه میتوان از آن برای پخش جریانی یک ویدیو بر روی شبکه و ذخیره همزمان آن روی دیسک استفاده کرد.
این مکسر با مشخص کردن چندین خروجی در ابزار خط فرمان ffmpeg تفاوت دارد. با مکسر tee، دادههای صوتی و ویدیویی فقط یک بار کدگذاری میشوند. با خروجیهای چندگانه مرسوم، چندین عملیات کدگذاری به صورت موازی آغاز میشود، که میتواند فرآیندی بسیار پرهزینه باشد. مکسر tee در هنگام استفاده مستقیم از API کتابخانه libavformat کاربردی ندارد، زیرا در آن حالت میتوان بستههای یکسان را مستقیماً به چندین مکسر تزریق کرد.
از آنجا که مکسر tee نمایانگر هیچ فرمت خروجی خاصی نیست، ffmpeg نمیتواند جریانهای خروجی را به طور خودکار انتخاب کند. بنابراین تمامی جریانهای مورد نظر برای خروجی باید با استفاده از "-map" مشخص شوند. مثالهای زیر را ببینید.
برخی اینکودرها ممکن است بسته به فرمت خروجی به گزینههای متفاوتی نیاز داشته باشند؛ تشخیص خودکار این موضوع با مکسر tee کار نمیکند، بنابراین باید به طور صریح مشخص شوند. نمونه اصلی آن فلگ global_header است.
خروجیهای فرعی (اسلیو) در نام پرونده دادهشده به مکسر مشخص میشوند و با '|' از هم جدا میگردند. اگر نام هر یک از خروجیهای فرعی حاوی جداکننده '|'، فاصلههای ابتدا یا انتها یا هر نویسه خاص دیگری باشد، باید گریز داده شوند (به بخش "Quoting and escaping" در راهنمای ffmpeg-utils(1) مراجعه کنید).
گزینهها
- use_fifo bool
- اگر روی 1 تنظیم شود، خروجیهای فرعی در ریسههای (threads) جداگانه با استفاده از مکسر fifo پردازش خواهند شد. این امکان میدهد سرعت/تأخیر/قابلیت اطمینان متفاوت خروجیها جبران شود و بازیابی شفاف پیادهسازی گردد. به طور پیشفرض این ویژگی خاموش است.
- fifo_options
- گزینههایی که باید به نمونههای شبهمکسر fifo ارسال شوند. به fifo مراجعه کنید.
گزینههای مکسر را میتوان برای هر خروجی فرعی با پیشوند قرار دادن آنها به صورت فهرستی از جفتهای key=value جداشده با ':'، درون براکتها مشخص کرد. اگر مقادیر گزینهها شامل نویسه خاص یا جداکننده ':' باشند، باید گریز داده شوند؛ توجه داشته باشید که این یک گریز سطح دوم است.
گزینههای ویژه زیر نیز شناخته میشوند:
- f
- مشخص کردن نام فرمت. اگر نتوان آن را از URL خروجی حدس زد، الزامی است.
- bsfs[/spec]
- مشخص کردن
فهرستی از
فیلترهای
جریان بیت
برای اعمال
بر روی
خروجی
مشخصشده.
میتوان با الصاق یک مشخصکننده جریان جداشده با "/" به گزینه، تعیین کرد که یک فیلتر جریان بیت معین بر روی کدام جریانها اعمال شود. spec باید یک مشخصکننده جریان باشد (به مشخصکنندههای جریان فرمت مراجعه کنید).
اگر مشخصکننده جریان تعیین نشود، فیلترهای جریان بیت بر روی تمامی جریانهای خروجی اعمال خواهند شد. این امر در صورتی که خروجی شامل جریانهایی باشد که فیلتر جریان بیت بر آنها قابل اعمال نیست (مثلاً اعمال "h264_mp4toannexb" بر روی خروجی حاوی یک جریان صوتی)، باعث شکست عملیات خروجی خواهد شد.
گزینههای یک فیلتر جریان بیت باید به فرم "opt=value" مشخص شوند.
چندین فیلتر جریان بیت را میتوان با جدا کردن توسط "," مشخص نمود.
- use_fifo bool
- امکان بازنویسی گزینه use_fifo مکسر tee برای هر مکسر فرعی به صورت جداگانه.
- fifo_options
- امکان بازنویسی گزینه fifo_options مکسر tee برای هر مکسر فرعی به صورت جداگانه. به fifo مراجعه کنید.
- select
- انتخاب
جریانهایی
که باید به
خروجی فرعی
نگاشت
شوند، که
توسط یک
مشخصکننده
جریان
تعیین
میشود. اگر
مشخص نشود،
پیشفرض
تمام
جریانهای
نگاشتشده
است. این
امر در
صورتی که
فرمت خروجی
تمام
جریانهای
نگاشتشده
را نپذیرد،
باعث شکست
عملیات
خروجی
خواهد شد.
میتوانید از چندین مشخصکننده جریان جداشده با کاما (",") استفاده کنید، مثلاً: "a:0,v"
- onfail
- مشخص کردن رفتار در صورت بروز خطای خروجی. این گزینه میتواند روی "abort" (پیشفرض) یا "ignore" تنظیم شود. مقدار "abort" در صورت بروز خرابی در این خروجی فرعی، باعث شکست کل فرآیند میشود. مقدار "ignore" خرابی در این خروجی را نادیده میگیرد، بنابراین سایر خروجیها بدون تأثیرپذیری ادامه خواهند یافت.
مثالها
- اینکود
کردن یک
ورودی و
ذخیره
همزمان آن
در یک
پرونده WebM و
پخش جریانی
آن به صورت MPEG-TS
روی UDP:
ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a "archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
- مشابه
بالا، اما
ادامه پخش
جریانی حتی
در صورتی که
خروجی به
پرونده
محلی با خطا
مواجه شود
(برای نمونه
پر شدن دیسک
محلی):
ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a "[onfail=ignore]archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
- استفاده از
ffmpeg برای
کدگذاری
ورودی، و
ارسال
خروجی به سه
مقصد مختلف.
فیلتر
جریان بیت
"dump_extra"
برای
افزودن
اطلاعات extradata
به تمامی
بستههای
فریم کلیدی
ویدیوی
خروجی، طبق
نیاز فرمت MPEG-TS
استفاده
میشود.
گزینه select بر
روی out.aac
اعمال شده
است تا تنها
شامل
بستههای
صوتی باشد.
ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac" - مشابه
بالا، اما
فقط انتخاب
جریان
"a:1" برای
خروجی صوتی.
توجه داشته
باشید که
گریز سطح
دوم باید
انجام شود،
زیرا ":"
نویسه خاصی
است که برای
جداسازی
گزینهها
استفاده
میشود.
ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=\'a:1\']out.aac"
wav
مکسر صوتی RIFF Wave.
گزینهها
- rf64 mode
- انتخاب
اینکه آیا
از فرمت
پرونده RF64 به
جای RIFF
استفاده
شود یا خیر.
فرمت RF64
امکان
ایجاد
پروندههای
بزرگتر از ۴
گیگابایت
را فراهم
میسازد،
اما
پشتیبانی
از RF64 به
اندازه RIFF
فراگیر
نیست.
حالتهای زیر شناخته میشوند:
- auto
- شروع نوشتن یک پرونده استاندارد RIFF برای حفظ سازگاری با نرمافزارهای ناآشنا به RF64، اما در صورتی که حجم پرونده خروجی از ۴ گیگابایت بیشتر شود، به RF64 تغییر وضعیت میدهد. مقدار کمی فضای اضافی در هدر با استفاده از یک چانک "JUNK" رزرو میکند، که باید توسط تمامی خوانندههای سازگار با RIFF نادیده گرفته شود، اما برخی از خوانندههای بسیار ساده WAV ممکن است با این کار دچار سردرگمی شوند.
- always
- همیشه از فرمت RF64 بدون توجه به اندازه پرونده استفاده میکند. پرونده خروجی تنها توسط نرمافزارهای سازگار با RF64 قابل خواندن خواهد بود و دیگر یک پرونده استاندارد RIFF WAVE محسوب نمیشود.
- never
- همیشه از RIFF ساده استفاده میکند، هرگز از RF64 استفاده نمیکند. این حالت بیشترین سازگاری را با نرمافزارهای قدیمی دارد، اما اگر اندازه پرونده خروجی از ۴ گیگابایت فراتر رود، فیلد اندازه ۳۲ بیتی در چانک "data" دیگر قادر نخواهد بود اندازه را به درستی نمایش دهد، و بیشتر نرمافزارهای صوتی قادر به خواندن بخشی از دادهها یا تمام آن نخواهند بود. (گزینه "ignore_length" در دیمکسر wav میتواند برای بازیابی چنین پروندهای استفاده شود.) این حالت پیشفرض است.
- write_bext bool
- افزودن چانک "BEXT" از فرمت Broadcast Wave حاوی متاداده صوتی گسترشیافته در صورت فعال بودن. پیشفرض false است.
- write_peak mode
- افزودن چانک پوش اوج (Peak Envelope، استاندارد EBU Tech 3285 Supplement 3) در صورت فعال بودن. پیشفرض off است.
- off
- چانک پوش اوج اضافه نشود.
- on
- افزودن چانک پوش اوج، با محاسبه مقادیر اوج بر اساس گزینههای "peak_block_size"، "peak_format" و "peak_ppv".
- only
- مانند "on"، اما از نوشتن دادههای صوتی واقعی صرفنظر میکند (هیچ چانک "data" در پرونده نوشته نخواهد شد؛ تنها چانکهای پوش اوج و سایر متادادهها نوشته میشوند).
- peak_block_size int
- تعداد نمونههای صوتی استفادهشده برای تولید هر فریم اوج، تا ۶۵۵۳۶. پیشفرض ۲۵۶ است.
- peak_format format
- فرمت دادههای پوش اوج (1: uint8، 2: uint16). پیشفرض 2 (uint16) است.
- peak_ppv int
- تعداد نقاط اوج به ازای هر مقدار اوج (1 یا 2). پیشفرض 2 است.
webm_chunk
مکسر قطعات پخش زنده WebM (WebM Live Chunk).
این مکسر هدرها و قطعات WebM را به صورت پروندههای جداگانه مینویسد که میتوانند توسط کلاینتهای پشتیبانیکننده از جریانهای زنده WebM از طریق DASH استفاده شوند.
گزینهها
این مکسر از گزینههای زیر پشتیبانی میکند:
- chunk_start_index
- نمایه اولین قطعه (پیشفرض 0).
- header
- نام پرونده هدر که دادههای مقداردهی اولیه در آن نوشته میشود.
- audio_chunk_duration
- مدت زمان هر قطعه صوتی به میلیثانیه (پیشفرض 5000).
مثال
ffmpeg -f v4l2 -i /dev/video0 \
-f alsa -i hw:0 \
-map 0:0 \
-c:v libvpx-vp9 \
-s 640x360 -keyint_min 30 -g 30 \
-f webm_chunk \
-header webm_live_video_360.hdr \
-chunk_start_index 1 \
webm_live_video_360_%d.chk \
-map 1:0 \
-c:a libvorbis \
-b:a 128k \
-f webm_chunk \
-header webm_live_audio_128.hdr \
-chunk_start_index 1 \
-audio_chunk_duration 1000 \
webm_live_audio_128_%d.chk
webm_dash_manifest
مکسر مانیفست WebM DASH.
این مکسر مشخصات مانیفست WebM DASH را برای تولید XML مانیفست DASH پیادهسازی میکند. همچنین از تولید مانیفست برای جریانهای زنده DASH پشتیبانی مینماید.
برای اطلاعات بیشتر ببینید:
- مشخصات فنی WebM DASH: https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
- مشخصات فنی ISO DASH: http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
گزینهها
این مکسر از گزینههای زیر پشتیبانی میکند:
- adaptation_sets
- این گزینه دارای سینتکس زیر است: "id=x,streams=a,b,c id=y,streams=d,e" که در آن x و y شناسههای منحصربهفرد مجموعههای انطباق و a، b، c، d و e نمایههای جریانهای صوتی و ویدیویی متناظر هستند. با استفاده از این گزینه میتوان هر تعداد مجموعه انطباق را اضافه کرد.
- live
- تنظیم این مقدار روی 1 برای ایجاد مانیفست DASH پخش زنده. پیشفرض: 0.
- chunk_start_index
- نمایه شروع اولین قطعه. این مقدار در ویژگی startNumber عنصر SegmentTemplate در مانیفست قرار خواهد گرفت. پیشفرض: 0.
- chunk_duration_ms
- مدت زمان هر قطعه به میلیثانیه. این مقدار در ویژگی duration عنصر SegmentTemplate در مانیفست قرار خواهد گرفت. پیشفرض: 1000.
- utc_timing_url
- نشانی وب (URL) صفحهای که برچسب زمانی UTC را در قالب ISO برمیگرداند. این مقدار در ویژگی value عنصر UTCTiming در مانیفست قرار خواهد گرفت. پیشفرض: None.
- time_shift_buffer_depth
- کوچکترین بافر تغییر زمانی (بر حسب ثانیه) که در آن تضمین میشود هر نمایشی در دسترس است. این مقدار در ویژگی timeShiftBufferDepth عنصر MPD قرار میگیرد. پیشفرض: 60.
- minimum_update_period
- حداقل دوره بهروزرسانی (بر حسب ثانیه) مانیفست. این مقدار در ویژگی minimumUpdatePeriod عنصر MPD قرار خواهد گرفت. پیشفرض: 0.
مثال
ffmpeg -f webm_dash_manifest -i video1.webm \
-f webm_dash_manifest -i video2.webm \
-f webm_dash_manifest -i audio1.webm \
-f webm_dash_manifest -i audio2.webm \
-map 0 -map 1 -map 2 -map 3 \
-c copy \
-f webm_dash_manifest \
-adaptation_sets "id=0,streams=0,1 id=1,streams=2,3" \
manifest.xml
whip
مکسر WebRTC (ارتباطات بلادرنگ) که از پخش جریانی با تأخیر کمتر از یک ثانیه بر اساس مشخصات فنی WHIP (پروتکل دریافت WebRTC-HTTP) پشتیبانی میکند.
این یک قابلیت آزمایشی است.
این مکسر از HTTP به عنوان یک پروتکل سیگنالینگ برای تبادل قابلیتهای SDP و کاندیداهای ICE lite استفاده میکند. سپس، از درخواستها و پاسخهای اتصال STUN برای برقراری یک نشست روی UDP بهره میگیرد. متعاقباً، دستدهی DTLS را برای تبادل کلیدهای رمزگذاری SRTP آغاز مینماید. در نهایت، فریمهای ویدیویی و صوتی را به بستههای RTP تقسیم کرده و با استفاده از SRTP آنها را رمزگذاری میکند.
اطمینان حاصل کنید که از H.264 بدون فریمهای B و از کدک صوتی Opus استفاده میکنید. برای مثال، برای تبدیل یک پرونده ورودی با ffmpeg به WebRTC:
ffmpeg -re -i input.mp4 -acodec libopus -ar 48000 -ac 2 \ -vcodec libx264 -profile:v baseline -tune zerolatency -threads 1 -bf 0 \ -f whip "http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream"
برای این مثال، ما از گزینههای تأخیر کم استفاده کردهایم، که منجر به یک تأخیر سرتاسری حدوداً ۱۵۰ میلیثانیهای میشود.
گزینهها
این مکسر از گزینههای زیر پشتیبانی میکند:
- handshake_timeout integer
- تنظیم مهلت زمانی (timeout) بر حسب میلیثانیه برای دستدهی ICE و DTLS. مقدار پیشفرض 5000 است.
- timeout integer
- تنظیم مهلت زمانی بر حسب ثانیه برای عملیات سوکت I/O. فقط برای خروجی HTTP قابل اعمال است. مقدار پیشفرض -1 است.
- pkt_size integer
- تنظیم حداکثر اندازه بستههای RTP ارسالی بر حسب بایت. مقدار پیشفرض 1200 است.
- ts_buffer_size integer
- تنظیم اندازه بافر پروتکل زیرین بر حسب بایت. مقدار پیشفرض -1 (خودکار) است. پروتکل UDP به طور خودکار مقدار مناسبی را انتخاب میکند.
- whip_flags flags
- مقادیر ممکن:
- dtls_active
- مکسر تلاش خواهد کرد نقش فعال DTLS را تنظیم کرده و اولین Client Hello را ارسال کند.
- rtp_history integer
- تنظیم تعداد موارد تاریخچه RTP برای ذخیرهسازی. مقدار پیشفرض 512 است.
- توکن اختیاری حامل (Bearer token) برای احراز هویت WHIP.
- cert_file string
- مسیر اختیاری پرونده گواهی برای DTLS.
- key_file string
- مسیر اختیاری پرونده کلید خصوصی برای DTLS.
متاداده (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 است.
دستگاههای خروجی (OUTPUT DEVICES)
دستگاههای خروجی مؤلفههای پیکربندیشدهای در FFmpeg هستند که میتوانند دادههای چندرسانهای را در یک دستگاه خروجی متصل به سیستم شما بنویسند.
هنگامی که ساخت FFmpeg خود را پیکربندی میکنید، تمامی دستگاههای خروجی پشتیبانیشده به طور پیشفرض فعال هستند. میتوانید با استفاده از گزینه پیکربندی "--list-outdevs" فهرست تمامی دستگاههای موجود را مشاهده کنید.
میتوانید تمامی دستگاههای خروجی را با استفاده از گزینه پیکربندی "--disable-outdevs" غیرفعال کنید، و به صورت انتخابی یک دستگاه خروجی را با استفاده از گزینه "--enable-outdev=OUTDEV" فعال نمایید، یا میتوانید یک دستگاه خروجی خاص را با استفاده از گزینه "--disable-outdev=OUTDEV" غیرفعال کنید.
گزینه "-devices" در ابزارهای ff* فهرست دستگاههای خروجی فعال را نمایش میدهد.
در ادامه شرحی از دستگاههای خروجی موجود فعلی آورده شده است.
alsa
دستگاه خروجی ALSA (معماری پیشرفته صدای لینوکس).
مثالها
- پخش یک
پرونده روی
دستگاه
پیشفرض ALSA:
ffmpeg -i INPUT -f alsa default
- پخش یک
پرونده روی
کارت صدای
1، دستگاه
صوتی 7:
ffmpeg -i INPUT -f alsa hw:1,7
AudioToolbox
دستگاه خروجی AudioToolbox.
امکان خروجی بومی به دستگاههای CoreAudio را در OSX فراهم میکند.
نام پرونده خروجی میتواند خالی (یا "-") باشد تا به دستگاه خروجی پیشفرض سیستم اشاره کند، یا عددی باشد که به اندیس دستگاه اشاره دارد؛ همانگونه که با استفاده از "-list_devices true" نشان داده میشود.
همچنین، دستگاه خروجی صوتی را میتوان با استفاده از اندیس از طریق
B<-audio_device_index E<lt>INDEXE<gt>>
انتخاب کرد، که بر هر نام یا اندیس دستگاه دادهشده در نام پرونده خروجی اولویت خواهد داشت.
تمام دستگاههای موجود را میتوان با استفاده از -list_devices true برشمرد که تمامی نامهای دستگاه، UIDها و اندیسهای متناظر را فهرست میکند.
گزینهها (Options)
AudioToolbox از گزینههای زیر پشتیبانی میکند:
- -audio_device_index <INDEX>
- تعیین دستگاه صوتی با اندیس آن. بر هر مقداری که در نام پرونده خروجی داده شده باشد، بازنویسی میشود.
مثالها
- چاپ فهرست
دستگاههای
پشتیبانیشده
و ارسال موج
سینوسی به
دستگاه
پیشفرض:
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
- ارسال موج
سینوسی به
دستگاه با
اندیس 2، با
نادیده
گرفتن هر
نام پرونده
خروجی
دادهشده:
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
caca
دستگاه خروجی CACA.
این دستگاه خروجی امکان نمایش یک جریان ویدیویی را در یک پنجره CACA فراهم میسازد. تنها یک پنجره CACA برای هر برنامه مجاز است، بنابراین در هر برنامه فقط میتوانید یک نمونه از این دستگاه خروجی داشته باشید.
برای فعالسازی این دستگاه خروجی باید FFmpeg را با "--enable-libcaca" پیکربندی کنید. کتابخانه libcaca یک کتابخانه گرافیکی است که به جای پیکسلها، متن خروجی میدهد.
برای اطلاعات بیشتر درباره libcaca، ببینید: http://caca.zoy.org/wiki/libcaca
گزینهها (Options)
- window_title
- تنظیم عنوان پنجره CACA؛ اگر مشخص نشود، پیشفرض نام پرونده تعیینشده برای دستگاه خروجی خواهد بود.
- window_size
- تنظیم اندازه پنجره CACA؛ میتواند رشتهای به شکل widthxheight یا نام اختصاری اندازه ویدیو باشد. اگر تعیین نشود، پیشفرض آن اندازه ویدیوی ورودی است.
- driver
- تنظیم درایور نمایشگر.
- algorithm
- تنظیم الگوریتم دیترینگ (Dithering). دیترینگ ضروری است زیرا تصویری که رندر میشود معمولاً رنگهای بسیار بیشتری نسبت به پالت موجود دارد. مقادیر پذیرفتهشده با "-list_dither algorithms" فهرست شدهاند.
- antialias
- تنظیم روش ضدپلگی (Antialias). ضدپلگی تصویر رندرشده را هموار میسازد و از ایجاد اثر پلکانیِ رایج جلوگیری میکند. مقادیر پذیرفتهشده با "-list_dither antialiases" فهرست شدهاند.
- charset
- تعیین اینکه کدام نویسهها هنگام رندر متن استفاده خواهند شد. مقادیر پذیرفتهشده با "-list_dither charsets" فهرست شدهاند.
- color
- تنظیم رنگی که هنگام رندر متن به کار میرود. مقادیر پذیرفتهشده با "-list_dither colors" فهرست شدهاند.
- list_drivers
- اگر روی true تنظیم شود، فهرستی از درایورهای موجود را چاپ کرده و خارج میشود.
- list_dither
- فهرست کردن گزینههای دیتر موجود مربوط به آرگومان. این آرگومان باید یکی از مقادیر "algorithms"، "antialiases"، "charsets" یا "colors" باشد.
مثالها
- دستور زیر
خروجی ffmpeg را
در یک پنجره
CACA نمایش
میدهد، و
اندازه آن
را به 80x25
تحمیل
میکند:
ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
- نمایش
فهرست
درایورهای
موجود و
خروج:
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
- نمایش
فهرست
رنگهای
دیتر موجود
و خروج:
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
decklink
دستگاه خروجی decklink قابلیتهای بازپخش را برای دستگاههای Blackmagic DeckLink فراهم میسازد.
برای فعالسازی این دستگاه خروجی، به SDK بلکمجیک DeckLink نیاز دارید و باید پیکربندی را با مقادیر مناسب "--extra-cflags" و "--extra-ldflags" انجام دهید. در ویندوز، باید پروندههای IDL را از طریق widl پردازش کنید.
دستگاه DeckLink در مورد قالبهایی که پشتیبانی میکند بسیار حساس است. قالب پیکسل همواره uyvy422 است، نرخ فریم، ترتیب فیلد و اندازه ویدیو باید برای دستگاه شما با -list_formats 1 تعیین شوند. نرخ نمونهبرداری صدا همواره 48 kHz است.
گزینهها (Options)
- list_devices
- در صورت تنظیم روی true، فهرستی از دستگاهها را چاپ کرده و خارج میشود. پیشفرض false است. این گزینه منسوخ شده است؛ لطفاً از گزینه "-sinks" در ffmpeg برای فهرست کردن دستگاههای خروجی موجود استفاده کنید.
- list_formats
- در صورت تنظیم روی true، فهرستی از قالبهای پشتیبانیشده را چاپ کرده و خارج میشود. پیشفرض false است.
- preroll
- مقدار زمان پیشگردش (preroll) ویدیو بر حسب ثانیه. پیشفرض 0.5 است.
- duplex_mode
- تنظیم حالت
دوطرفه/پروفایل
(duplex/profile) دستگاه
decklink. باید یکی
از مقادیر
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
- timing_offset
- تنظیم آفست پیکسلی زمانبندی genlock روی خروجیِ استفادهشده. پیشفرض unset است.
- link
- تنظیم پیکربندی اتصال ویدیویی SDI روی خروجی استفادهشده. باید unset، اتصال تکی SDI (single)، اتصال دوگانه SDI (dual) یا اتصال چهارگانه SDI (quad) باشد. پیشفرض unset است.
- sqd
- فعالسازی حالت تقسیم چهارتایی با تقسیم مربعی (Square Division Quad Split) برای خروجی چهارگانه SDI. باید unset، true یا false باشد. پیشفرض unset است.
- level_a
- فعالسازی حالت SMPTE Level A روی خروجی استفادهشده. باید unset، true یا false باشد. پیشفرض unset است.
- vanc_queue_size
- تنظیم حداکثر اندازه بافر خروجی بر حسب بایت برای دادههای VANC. اگر بافر به این مقدار برسد، دادههای خروجی VANC دور ریخته خواهند شد. پیشفرض 1048576 است.
مثالها
- فهرست
دستگاههای
خروجی:
ffmpeg -sinks decklink
- فهرست
قالبهای
پشتیبانیشده:
ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
- پخش کلیپ
ویدیویی:
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
- پخش کلیپ
ویدیویی با
نرخ فریم یا
اندازه
ویدیوی غیر
استاندارد:
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
fbdev
دستگاه خروجی فریمبافر لینوکس (Linux framebuffer).
فریمبافر لینوکس یک لایه انتزاعی مستقل از سختافزار گرافیکی است برای نمایش گرافیک روی مانیتور رایانه، معمولاً روی کنسول. دسترسی به آن از طریق یک گره پرونده دستگاه، معمولاً /dev/fb0 انجام میشود.
برای اطلاعات دقیقتر پرونده Documentation/fb/framebuffer.txt موجود در درخت سورس لینوکس را بخوانید.
گزینهها (Options)
مثالها
پخش یک پرونده روی دستگاه فریمبافر /dev/fb0. قالب پیکسل مورد نیاز به تنظیمات فعلی فریمبافر بستگی دارد.
ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
همچنین ببینید: http://linux-fbdev.sourceforge.net و fbset(1).
oss
دستگاه خروجی OSS (سامانه صدای باز / Open Sound System).
pulse
دستگاه خروجی PulseAudio.
برای فعالسازی این دستگاه خروجی باید FFmpeg را با "--enable-libpulse" پیکربندی کنید.
اطلاعات بیشتر درباره PulseAudio را میتوان در http://www.pulseaudio.org یافت.
گزینهها (Options)
- server
- اتصال به یک کارساز (سرور) خاص PulseAudio که با نشانی IP مشخص میشود. در صورت عدم ارائه، از سرور پیشفرض استفاده میشود.
- name
- تعیین نام برنامهای که PulseAudio هنگام نمایش کلاینتهای فعال استفاده خواهد کرد؛ به طور پیشفرض رشته "LIBAVFORMAT_IDENT" است.
- stream_name
- تعیین نام جریانی که PulseAudio هنگام نمایش جریانهای فعال استفاده خواهد کرد؛ به طور پیشفرض روی نام خروجی تعیینشده تنظیم میشود.
- device
- تعیین دستگاه مورد استفاده. در صورت عدم ارائه، از دستگاه پیشفرض استفاده میشود. فهرست دستگاههای خروجی را میتوان با دستور pactl list sinks به دست آورد.
- buffer_size
- buffer_duration
- کنترل
اندازه و
مدتزمان
بافر PulseAudio. یک
بافر کوچک
کنترل
بیشتری
فراهم
میکند،
اما
نیازمند
بهروزرسانیهای
مکررتر است.
گزینه buffer_size اندازه را بر حسب بایت مشخص میکند در حالی که buffer_duration مدتزمان را بر حسب میلیثانیه تعیین مینماید.
هنگامی که هر دو گزینه ارائه شوند، بالاترین مقدار استفاده میشود (مدتزمان با استفاده از پارامترهای جریان مجدداً به بایت محاسبه میشود). اگر آنها روی 0 تنظیم شوند (که پیشفرض است)، دستگاه از مقدار مدتزمان پیشفرض PulseAudio استفاده خواهد کرد. به طور پیشفرض PulseAudio مدت بافر را روی حدود ۲ ثانیه تنظیم میکند.
- prebuf
- تعیین اندازه پیشبافرسازی بر حسب بایت. سرور تا زمانی که حداقل prebuf بایت در بافر در دسترس نباشد، پخش را آغاز نمیکند. به طور پیشفرض این گزینه با همان مقدار buffer_size یا buffer_duration (هر کدام بزرگتر باشد) مقداردهی اولیه میشود.
- minreq
- تعیین حداقل اندازه درخواست بر حسب بایت. سرور کمتر از minreq بایت از کلاینت درخواست نمیکند، بلکه تا زمانی که بافر به اندازه کافی خالی شود صبر میکند تا بایتهای بیشتری را در یک مرحله درخواست کند. توصیه میشود این گزینه را تنظیم نکنید، که در این صورت با مقداری مقداردهی میشود که از نظر سرور معقول تشخیص داده شود.
مثالها
پخش یک پرونده روی دستگاه پیشفرض در سرور پیشفرض:
ffmpeg -i INPUT -f pulse "stream name"
sndio
دستگاه خروجی صوتی sndio.
v4l2
دستگاه خروجی Video4Linux2.
xv
دستگاه خروجی XV (XVideo).
این دستگاه خروجی امکان نمایش یک جریان ویدیویی را در یک پنجره سامانه پنجره X (X Window System) فراهم میسازد.
گزینهها (Options)
- display_name
- تعیین نام
سختافزاری
نمایشگر،
که دامنه
نمایش و
ارتباطات
مورد
استفاده را
تعیین
میکند.
نام نمایشگر یا متغیر محیطی DISPLAY میتواند رشتهای به قالب hostname[:number[.screen_number]] باشد.
عبارت hostname نام ماشین میزبانی را مشخص میکند که نمایشگر به صورت فیزیکی به آن متصل است. number شماره سرور نمایشگر روی آن ماشین میزبان را مشخص میکند. screen_number صفحهای را مشخص میکند که باید روی آن سرور استفاده شود.
در صورت عدم تعیین، پیشفرض مقدار متغیر محیطی DISPLAY خواهد بود.
برای مثال، "dual-headed:0.1" صفحه 1 از نمایشگر 0 را روی ماشینی به نام ``dual-headed'' مشخص میکند.
برای اطلاعات دقیقتر درباره قالب نام نمایشگر به مشخصات X11 مراجعه کنید.
- window_id
- هنگامی که روی مقداری غیر از صفر تنظیم شود، دستگاه پنجره جدیدی ایجاد نمیکند، بلکه از پنجره موجود با window_id دادهشده استفاده میکند. به طور پیشفرض این گزینه روی صفر تنظیم شده است و دستگاه پنجره خودش را ایجاد میکند.
- window_size
- تنظیم اندازه پنجره ایجادشده؛ میتواند رشتهای به شکل widthxheight یا نام اختصاری اندازه ویدیو باشد. در صورت عدم تعیین، پیشفرض اندازه ویدیوی ورودی است. هنگام تنظیم window_id نادیده گرفته میشود.
- window_x
- window_y
- تنظیم آفستهای X و Y برای پنجره ایجادشده. هر دو به طور پیشفرض روی 0 تنظیم شدهاند. این مقادیر ممکن است توسط مدیر پنجره (window manager) نادیده گرفته شوند. هنگام تنظیم window_id نادیده گرفته میشود.
- window_title
- تنظیم عنوان پنجره؛ در صورت عدم تعیین، پیشفرض نام پرونده تعیینشده برای دستگاه خروجی خواهد بود. هنگام تنظیم window_id نادیده گرفته میشود.
برای اطلاعات بیشتر درباره XVideo به http://www.x.org مراجعه کنید.
مثالها
- دیکود،
نمایش و
انکود
همزمان
ورودی
ویدیو با ffmpeg:
ffmpeg -i INPUT OUTPUT -f xv display
- دیکود و
نمایش
ویدیوی
ورودی در
چندین
پنجره X11:
ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
گزینههای تغییر نمونهبرداری (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)
ffmpeg(1), ffplay(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 در درخت کد منبع فهرست شدهاند.