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


فیلترها، آرگومان ها و Filterchain (ادامه):
مقادیر پیش فرض آرگومان ها:
همانطور که در راهنمای فیلتر vibrato: vibrato# TOC
Sinusoidal phase modulation.
The filter accepts the following options:
f
Modulation frequency in Hertz. Range is 0.1 - 20000.0. Default value is 5.0 Hz.
d
Depth of modulation as a percentage. Range is 0.0 - 1.0. Default value is 0.5.
مشاهده می نمایید تمام آرگومان های این فیلتر دارای "مقادیر پیش فرضی" هستند که با عبارت Default value مشخص شده است (در اینجا 5.0 برای f و 0.5 برای d). این به این معنی است که اگر قصد ندارید مقادیر پیش فرض را تغییر بدهید می توانید فیلتر را بدون وارد کردن هیچکدام از آرگومان ها درج کنید تا با همان مقادیر پیش فرضی که گفته، اعمال شود: -filter:a vibrato,earwax یا حتی اگر می خواهید می توانید فقط مقدار یک آرگومان آنرا تغییر دهید و آرگومان های دیگر، به مقدار پیشفرض خود بمانند. این برای حالت "فقط مقدار"، به این معنی است که ترتیب هنوز مهم هست. یعنی اگر به این صورت وارد کنیم: -filter:a vibrato=6.0,earwax مقدار وارد شده مربوط به اولین آرگومان تعریف شده توسط راهنمای FFmpeg خواهد شد. و آرگومان های بعدی (در این مثال d) با مقدار پیشفرض خودشان اعمال خواهند شد.
و در حالت وارد کردن آرگومان ها بطور کامل (نام+مقدار)، دیگه ترتیب مهم نیست. مثل: -filter:a vibrato=d=0.3,earwax که در نتیجه سایر آرگومان ها (در این مثال f) صرف نظر از ترتیب تعریفشان با مقادیر پیش فرض خود اعمال خواهند شد.
نکته: همیشه لازم است راهنمای فیلتر را مشاهده کنید (مگه اینکه بعد از مدتی با آن فیلتر آشنا شده باشید). ممکن است یک آرگومانی در یک فیلتری وجود داشته باشد (کم پیش می آید) که مقدار پیش فرض نداشته باشد و وارد کردن مقداری برای آن آرگومان نیز اجباری باشد (و اگر وارد نکنید FFmpeg شما را با ارور آگاه می کند). همچنین گاهی نیز در ffmpeg-filters.html برای یک فیلتر اشاره ای به مقدار پیش فرض برای یک آرگومان نمی کند (یعنی یادشان می رود). اما در خروجی راهنمای کنسول (که الان نحوه آن گفته می شود) به مقدار پیش فرض آن اشاره می کند.
برای دیدن آرگومان های یک فیلتر خاص با توضیحات خلاصه در محیط کنسول، از دستور زیر استفاده نمایید (در دستور زیر فیلتر vibrato را وارد کردیم) : ffmpeg -help filter=vibrato که خروجی آن در تاریخ این پست می شود: Filter vibrato
Apply vibrato effect.
Inputs:
#0: default (audio)
Outputs:
#0: default (audio)
vibrato AVOptions:
f ..F.A... set frequency in hertz (from 0.1 to 20000) (default 5)
d ..F.A... set depth as percentage (from 0 to 1) (default 0.5)

اعمال فیلتر بر روی استریم های متفاوت:
در مثال های قبلی فیلتر ها برای تمامی استریم ها از آن نوع اعمال می شدند. یعنی اگه بیش از 1 استریم صدا وجود داشت فیلتر های vibrato و earwax روی همشون اعمال می شدند. حالا چی می شد اگر خروجی ما دارای دو استریم صدا بود و می خواستیم به هر کدام از استریم هایش فیلتر های جداگانه ای بدهیم بدون اینکه بر دیگری تاثیر بگذاریم؟ قبلا یاد گرفتیم اما مرور می کنیم: "%FFmpeg%" -i ".\samples\H264_HD720_6CH_AC3.mkv" -i ".\samples\audio 2ch 256k.ac3" -map 0:v:0 -map 0:a:0 -map 1:a:0 -filter:v scale=qhd -filter:a:0 aresample=48000,dynaudnorm=g=27 -filter:a:1 treble=g=3:f=20000,alimiter -c:a:0 ac3 -b:a:0 448K -c:a:1 libopus -b:a:1 160K -y ".\_fiterchain_multistream.mkv"
دقت!: تمرکزتان روی :v و :a:ها باشد که البته در قسمت های قبلی آموزش یاد گرفته بودیم. خود فیلتر ها مثال هستند.

--پایان قسمت هفتم