با سلام و احترام خدمت بازدیدکنندگان عزیز
آموزش و آشنایی با نرم افزار FFmpeg – قسمت هفتم – فیلترها یا Filtergraph (دو)
برای مشاهده قسمت اول به
این پست
مراجعه نمایید.
برای مشاهده قسمت دوم به
این پست
مراجعه نمایید.
برای مشاهده قسمت سوم به
این پست
مراجعه نمایید.
برای مشاهده قسمت چهارم به
این پست
مراجعه نمایید.
برای مشاهده قسمت پنجم به
این پست
مراجعه نمایید.
برای مشاهده قسمت ششم به
این پست
مراجعه نمایید.
فیلترها، آرگومانها و Filterchain (ادامه):
مقادیر پیش فرض آرگومانها:
همانطور که در راهنمای فیلتر vibrato:
vibrato# TOC
مشاهده مینمایید تمام آرگومانهای این فیلتر دارای "مقادیر پیش فرضی" هستند که با عبارت Default value مشخص شده است (در اینجا 5.0 برای f و 0.5 برای d). این به این معنی است که اگر قصد ندارید مقادیر پیش فرض را تغییر بدهید میتوانید فیلتر را بدون وارد کردن هیچکدام از آرگومانها درج کنید تا با همان مقادیر پیش فرضی که گفته، اعمال شود:
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.
-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
d
اعمال فیلتر بر روی استریمهای متفاوت:
در مثالهای قبلی فیلترها برای تمامی استریمها از آن نوع اعمال میشدند. یعنی اگه بیش از 1 استریم صدا وجود داشت فیلترهای vibrato و earwax روی همشون اعمال میشدند. حالا چی میشد اگر خروجی ما دارای دو استریم صدا بود و میخواستیم به هر کدام از استریم هایش فیلترهای جداگانهای بدهیم بدون اینکه بر دیگری تاثیر بگذاریم؟ قبلا یاد گرفتیم اما مرور میکنیم:
-filter:a
:0
bandpass=f=400,dynaudnorm=g=27 -filter:a
:1
treble=g=3:f=20000,flanger
که قسمتی از بچ زیر است:
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 bandpass=f=400,dynaudnorm=g=27 -filter:a:1 treble=g=3:f=20000,flanger -c:a:0 ac3 -b:a:0 448K -b:a:1 160K -y ".\_fiterchain_multistream.mkv"
دقت!:
تمرکزتان روی :v و :a:ها باشد که البته در قسمتهای قبلی
آموزش
یاد گرفته بودیم. خود فیلترها مثال هستند. در بچ بالا که در واقع مروری هست بر قسمتهای قبلی آموزش، به استریم ویدئو هم فیلتر دادیم و انکدر ac3 هم برای استریم صدای اول خروجی انتخاب کردیم و برای استریم تصویر و استریم صدای دوم خروجی، انکدر را انتخاب نکردیم تا خودش مناسب فرمت تصویر و صوتی پیش فرض کانتینر mkv که تا این لحظه h264 و ogg vorbis باشد انتخاب کند و فقط بیت ریت صدای دوم را به درخواست ما 160 کیلوبیت در ثانیه تنظیم کند.
- مشاهده
قسمت هشتم