با سلام و احترام خدمت بازدیدکنندگان عزیز
آموزش و آشنایی با نرم افزار FFmpeg – قسمت ششم – فیلترها یا Filtergraph (یک)
برای مشاهده قسمت اول به
این پست
مراجعه نمایید.
برای مشاهده قسمت دوم به
این پست
مراجعه نمایید.
برای مشاهده قسمت سوم به
این پست
مراجعه نمایید.
برای مشاهده قسمت چهارم به
این پست
مراجعه نمایید.
برای مشاهده قسمت پنجم به
این پست
مراجعه نمایید.
فیلترها، آرگومانها و Filterchain:
فیلترگذاری و ویرایش صدا و تصویر یکی دیگر از قابلیتهای FFmpeg است. برای فیلتر گذاری نوع عادی، از سوئیچهای خروجی
-af
برای صوت و
-vf
برای ویدئو استفاده میشود یا
-filter[:
stream_specifier
]
برای هردو که جدیدتر است. یعنی همانطور که FFmpeg در گذشته سوئیچهای
-ab و -vb و -vbsf و -absf
را منسوخ اعلام کرد و خواست که از
-b:a و -b:v
برای تعیین بیت ریت صدا و تصویر و
-bsf:a و -bsf:v
برای bitstream filter صدا و تصویر استفاده بشود انتظار میرود که استفاده از
-filter:a و -filter:v
نوع ترجیح داده شده این سوئیچها در آینده باشد و برای همین از این به بعد از این دو استفاده میکنیم.
بعد از قرار دادن سوئیچهای خروجی مذکور، نوبت به وارد کردن فیلترهای موردنظر میرسد. سینتکس دستورات فیلترها به این صورت است که ابتدا نام فیلتر مذکور، بعد یک مساوی "=" و سپس آرگومانهای آن را مینویسیم. ممکن است یک فیلتر بیش از یک آرگومان داشته باشد که در اون صورت باید مقادیر را با کارکتر کالِن یا همون دونقطه ":" از مقدار بعدی جدا کنیم. همچنین ممکن است یک فیلتر هیچ آرگومانی نداشته باشد که در اونصورت نباید "=" اولیه هم قرار بدیم و فقط نوشتن نام فیلتر کافیست. بعد که نوبت به فیلتر بعدی رسید (در صورت تصمیم شما)، با یک کارکتر کاما انگلیسی "," فیلتر قبلی را از فیلتر بعدی جدا کرده و فیلتر بعدی را به همان ترتیب که برای فیلتر قبلی گفته شد مینویسیم.
نکته:
به مجموعهای از فیلترهای پشت سر هم که توسط کاما "," از هم جدا شدن یک Filterchain گفته میشود و وضعیت اعمالشون هم به همان ترتیبی هست که نوشته شدهاند (از چپ به راست). یعنی فرضا میتوانید اول فیلتر crop را اعمال کنید بعد scale یا برعکس و این دست خودتان است که تشخیص بدهید برای آن پروژه، چه ترتیبی صحیح است.
به مثال زیر توجه نمایید:
در این مثال قرار هست به ترتیب دو فیلتر صوتی vibrato و earwax را به صدای خروجی بدهیم. ابتدا به راهنمای دو فیلتر مراجعه میکنیم تا وضعیت آرگومانها را مشاهده کنیم (
ffmpeg-filters.html
):
earwax# TOC
Make audio easier to listen to on headphones.
This filter adds ‘cues’ to 44.1kHz stereo (i.e. audio CD format) audio so that when listened to on headphones the stereo image is moved from inside your head (standard for headphones) to outside and in front of the listener (standard for speakers).
Ported from SoX.
vibrato# TOC
همانطور که میبینید فیلتر earwax هیچگونه آرگومانی ندارد. و فیلتر vibrato دارای دو آرگومان f و d و به همان ترتیب عنوان شده یعنی اول f و سپس 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.
FFmpeg -i file.m4a -map 0:a:0 -filter:a vibrato=5.0:0.4,earwax -y file_fiterchain1.mp3
نکته 1:
اگر دقت نمایید، ما آرگومانهای فیلتر vibrato را بصورت value only یا "فقط مقدار" نوشتیم. در این حالت همانطور که گفته شد مقادیر را باید به همان ترتیبی که آرگومانها در راهنمای فیلتر تعریف شدن (از بالا به پائین) وارد کرد. در غیر اینصورت FFmpeg نمیداند که منظور کاربر از وارد کردن یک مقدار، قرار گیری آن در کدام آرگومان هست و با مشکل مواجه میشوید.
نکته 2:
راه دیگر وارد کردن تنظیمات یک فیلتر، وارد کردن کامل هر آرگومان به همراه مقدار آن است. یعنی نام آرگومان سپس "=" و سپس مقدار آرگومان. در اینصورت دیگر ترتیب مهم نخواهد بود. به این صورت:
-filter:a vibrato=d=0.4:f=5.0,earwax
همانطور که مشاهده نمودید اول d را نوشتیم و بعد f ولی چون نام آرگومانهارو وارد کردیم FFmpeg دقیقا میتواند بفهمد که منظورمان چه بوده و عملیات بدون مشکل انجام میشود.
فیلترهای فعال:
برای مشاهده و ذخیره لیست فیلترهای فعال نسخه حاضر از FFmpeg که در دسترس دارید میتوانید از دستور زیر استفاده کنید:
FFmpeg -filters > filters.txt
که خروجی آن چیزی مانند زیر است:
.
و در آن V نشانگر ویدئو، A نشانگر صدا، VV نشانگر 2تا ویدئو، AA نشانگر 2تا صدا، N نشانگر چندتا صدا (یا ویدئو) و | که نشانگر فایل واقعی یا یک جریان مصنوعی (ساختگی) میباشد. در اینجا و قسمت بعد با A و V آشنا میشوید (یا شدهاید) و در بعد با بقیه هم آشنا خواهید شد (در قسمت Complex Filtergraph).
T.. dynaudnorm
A->A
Dynamic Audio Normalizer.
... sidechaincompress
AA->A
Sidechain compressor.
... asplit
A->N
Pass on the audio input to N audio outputs.
... ass
V->V
Render ASS subtitles onto input video using the libass library.
TSC overlay
VV->V
Overlay a video source on top of the input.
... split
V->N
Pass on the input to N video outputs.
..C movie
|->N
Read from a movie source.
.
- مشاهده
قسمت هفتم