| FFMPEG-UTILS(1) | راهنمای ابزارهای چندرسانهای | FFMPEG-UTILS(1) |
نام (NAME)
ffmpeg-utils - ابزارهای عمومی و مستندات نحوه استفاده در FFmpeg
توضیحات (DESCRIPTION)
این سند برخی از قابلیتها و ابزارهای عمومی ارائهشده توسط کتابخانه libavutil را شرح میدهد.
سینتکس و قالبها (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.
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
توسعهدهندگان FFmpeg.
برای جزئیات بیشتر درباره نویسندگان، به تاریخچه گیت پروژه (https://git.ffmpeg.org/ffmpeg) مراجعه کنید، به عنوان مثال با اجرای دستور git log در دایرکتوری کد منبع FFmpeg، یا مرور مخزن آنلاین در نشانی https://git.ffmpeg.org/ffmpeg.
نگهدارندههای اجزای خاص در فایل MAINTAINERS در درخت کد منبع فهرست شدهاند.
| FFmpeg |