.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "FFMPEG 1" .TH FFMPEG 1 "2026-09-07" "FFmpeg" "دستورات کاربر (پارچ لینوکس)" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" ffmpeg \- مبدل و پردازشگر چندرسانه‌ای همه‌کاره .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" .B ffmpeg .RI [ گزینه‌های_عمومی ] .RI { [ گزینه‌های_ورودی ] .B \-i .IR آدرس_ورودی } \&... .RI { [ گزینه‌های_خروجی ] .IR آدرس_خروجی } \&... .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBffmpeg\fR یک مبدل و پردازشگر چندرسانه‌ای همه‌کاره و بسیار سریع است. این ابزار قادر است طیف وسیعی از ورودی‌ها \- از جمله فایل‌ها، جریان‌های زنده و دستگاه‌های ضبط \- را بخواند، فیلتر کند و آن‌ها را به خیل عظیمی از قالب‌های خروجی تبدیل (Transcode) نماید. .PP دستور \&\fBffmpeg\fR از تعداد دلخواهی ورودی مشخص‌شده با گزینه \&\f(CW\*(C`\-i\*(C'\fR می‌خواند و در تعداد دلخواهی خروجی می‌نویسد. هر چیزی در خط فرمان که به عنوان گزینه شناخته نشود، به عنوان آدرس یا فایل خروجی تلقی می‌گردد. .PP هر ورودی یا خروجی می‌تواند شامل هر تعداد جریان مقدماتی (استریم) از انواع مختلف (ویدیو/صدا/زیرنویس/داده/پیوست) باشد. انتخاب اینکه کدام استریم به کدام خروجی برود، به طور خودکار یا با استفاده از گزینه \f(CW\*(C`\-map\*(C'\fR تعیین می‌شود (به بخش \fBانتخاب استریم (STREAM SELECTION)\fR مراجعه کنید). .PP برای ارجاع به ورودی‌ها یا خروجی‌ها از اندیس‌های بر پایه صفر استفاده می‌شود (نخستین ورودی \f(CW0\fR و دومی \f(CW1\fR است). استریم‌های درون یک ورودی یا خروجی نیز با اندیس مشخص می‌شوند؛ به عنوان مثال \f(CW\*(C`2:3\*(C'\fR به چهارمین استریم از سومین ورودی اشاره دارد. .PP به عنوان یک قاعده کلی، هر گزینه روی فایل مشخص‌شده بعدی اعمال می‌شود. بنابراین ترتیب نوشتن گزینه‌ها در خط فرمان بسیار مهم است و یک گزینه می‌تواند چندین بار برای فایل‌های مختلف تکرار شود. گزینه‌های عمومی (مانند سطح لاگ) استثنا هستند و در ابتدا قرار می‌گیرند. .PP فایل‌های ورودی و خروجی را با یکدیگر ترکیب نکنید \-\- ابتدا تمام فایل‌های ورودی و سپس تمام خروجی‌ها را تعیین نمایید. .PP چند مثال کاربردی و پایه: .IP \(bu 4 تبدیل یک فایل رسانه‌ای به قالبی دیگر با انکود مجدد: .Sp .Vb 1 \& ffmpeg \-i input.avi output.mp4 .Ve .IP \(bu 4 تنظیم بیت‌ریت ویدیوی خروجی روی 64 کیلو‌بیت بر ثانیه: .Sp .Vb 1 \& ffmpeg \-i input.avi \-b:v 64k \-bufsize 64k output.mp4 .Ve .IP \(bu 4 اجبار نرخ فریم خروجی به 24 فریم بر ثانیه: .Sp .Vb 1 \& ffmpeg \-i input.avi \-r 24 output.mp4 .Ve .IP \(bu 4 اجبار نرخ فریم ورودی خام به 1 فریم و خروجی به 24 فریم بر ثانیه: .Sp .Vb 1 \& ffmpeg \-r 1 \-i input.m2v \-r 24 output.mp4 .Ve .PP گزینه قالب (\fB\-f\fR) ممکن است برای فایل‌های ورودی خام ضروری باشد. .SH "توضیحات تفصیلی (DETAILED DESCRIPTION)" .IX Header "DETAILED DESCRIPTION" دستور \&\fBffmpeg\fR یک پایپ‌لاین (خط لوله) تبدیل و ترنسکدینگ رسانه از اجزای زیر می‌سازد. روند اجرای برنامه شامل جریان داده‌های ورودی از منابع به سمت مقاصد است، در حالی که توسط مؤلفه‌ها و گره‌هایی که در مسیر با آن‌ها مواجه می‌شوند تغییر شکل می‌یابند. .PP مؤلفه‌ها و اجزای در دسترس عبارتند از: .IP \(bu 4 \&\fIدی‌ماکسرها (Demuxers)\fR (کوتاه‌شده‌ی demultiplexers) منابع ورودی را جهت استخراج موارد زیر می‌خوانند: .RS 4 .IP \(bu 4 ویژگی‌های عمومی مانند فراداده، متادیتا و فصل‌ها؛ .IP \(bu 4 فهرست استریم‌های اولیه ورودی و مشخصات فنی آن‌ها. .RE .RS 4 .Sp به ازای هر گزینه \fB\-i\fR یک نمونه دی‌ماکسر ایجاد می‌شود که \&\fIبسته‌ها (packets)\fR انکودشده را به \fIدیکودرها\fR یا \fIماکسرها\fR می‌فرستد. .Sp در ادبیات فنی گاهی به دی‌ماکسرها \fIsplitters\fR نیز می‌گویند زیرا وظیفه اصلی آن‌ها تفکیک فایل به استریم‌های مجزا است. .Sp نمایش شماتیک یک دی‌ماکسر به صورت زیر است: .Sp .Vb 10 \& ┌──────────┬───────────────────────┐ \& │ 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. \& │ .Ve .RE .IP \(bu 4 \&\fIدیکودرها (Decoders)\fR بسته‌های فشرده‌شده و انکودشده را برای یک استریم صوتی، ویدیویی یا زیرنویس دریافت کرده و آن‌ها را به \fIفریم‌های خام (raw frames)\fR (آرایه‌های پیکسلی برای ویدیو و PCM برای صدا) دیکود می‌کنند. دیکودرها داده را از دی‌ماکسر دریافت می‌کنند یا ممکن است به صورت مستقل عمل نمایند (دیکودرهای لوپ‌بک). .Sp نمایش شماتیک یک دیکودر به صورت زیر است: .Sp .Vb 5 \& ┌─────────┐ \& packets │ │ raw frames \& ─────────►│ decoder ├────────────► \& │ │ \& └─────────┘ .Ve .IP \(bu 4 \&\fIگراف فیلترها (Filtergraphs)\fR فریم‌های خام صوت و تصویر را پردازش و تبدیل می‌کنند. یک فیلترگراف شامل یک یا چند \fIفیلتر\fR متصل به هم در قالب گراف است. فیلترگراف‌ها در دو نوع \fIساده (simple)\fR و \fIپیچیده (complex)\fR به ترتیب با گزینه‌های \fB\-filter\fR و \fB\-filter_complex\fR پیکربندی می‌شوند. .Sp یک فیلترگراف ساده ویدیو که به عنوان نمونه عملیات deinterlacing (با فیلتر yadif) و سپس تغییر اندازه (با فیلتر scale) را انجام می‌دهد به شکل زیر است: .Sp .Vb 7 \& ┌────────────────────────┐ \& │ simple filtergraph │ \& frames from ╞════════════════════════╡ frames for \& a decoder │ ┌───────┐ ┌───────┐ │ an encoder \& ────────────►├─►│ yadif ├─►│ scale ├─►│────────────► \& │ └───────┘ └───────┘ │ \& └────────────────────────┘ .Ve .Sp یک فیلترگراف پیچیده مستقل است و به هیچ استریم خاصی محدود نمی‌شود و می‌تواند چندین ورودی و خروجی با انواع مختلف داشته باشد. دیاگرام زیر یک فیلترگراف پیچیده با ۳ ورودی و ۲ خروجی ویدیویی را نشان می‌دهد: .Sp .Vb 10 \& ┌─────────────────────────────────────────────────┐ \& │ complex filtergraph │ \& ╞═════════════════════════════════════════════════╡ \& frames ├───────┐ ┌─────────┐ ┌─────────┐ ┌────────┤ frames \& ─────────►│input 0├─►│ overlay ├─────►│ overlay ├─►│output 0├────────► \& ├───────┘ │ │ │ │ └────────┤ \& frames ├───────┐╭►│ │ ╭►│ │ │ \& ─────────►│input 1├╯ └─────────┘ │ └─────────┘ │ \& ├───────┘ │ │ \& frames ├───────┐ ┌─────┐ ┌─────┬─╯ ┌────────┤ frames \& ─────────►│input 2├►│scale├►│split├───────────────►│output 1├────────► \& ├───────┘ └─────┘ └─────┘ └────────┤ \& └─────────────────────────────────────────────────┘ .Ve .IP \(bu 4 \&\fIانکودرها (Encoders)\fR فریم‌های خام صوت، تصویر یا زیرنویس را دریافت کرده و آن‌ها را در قالب بسته‌های فشرده انکود می‌کنند. فرایند فشرده‌سازی معمولاً اتلافی (lossy) است، اگرچه انکودرهای بدون اتلاف (lossless) نیز با حجم خروجی بالاتر وجود دارند. .Sp نمایش شماتیک یک انکودر: .Sp .Vb 5 \& ┌─────────┐ \& raw frames │ │ packets \& ────────────►│ encoder ├─────────► \& │ │ \& └─────────┘ .Ve .IP \(bu 4 \&\fIماکسرها (Muxers)\fR (کوتاه‌شده multiplexers) بسته‌های انکودشده را از انکودرها (مسیر ترنسکدینگ) یا مستقیماً از دی‌ماکسرها (مسیر کپی استریم) دریافت کرده، آن‌ها را با هم درمی‌آمیزند (Interleave) و بایت‌های حاصل را در فایل خروجی، پایپ یا شبکه می‌نویسند. .Sp نمایش شماتیک یک ماکسر: .Sp .Vb 10 \& ┌──────────────────────┬───────────┐ \& 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. │ \& │ \& ▼ .Ve .SS "کپی استریم (Streamcopy)" .IX Subsection "Streamcopy" ساده‌ترین خط لوله در \fBffmpeg\fR عملیات \&\fIstreamcopy\fR است که در آن بسته‌های یک استریم ورودی بدون دیکود، فیلتر یا انکود مجدد مستقیماً در خروجی کپی می‌شوند. به عنوان مثال، در نظر بگیرید ورودی \fIINPUT.mkv\fR با ۳ استریم داریم و می‌خواهیم استریم دوم را در \fIOUTPUT.mp4\fR بنویسیم: .PP .Vb 10 \& ┌──────────┬─────────────────────┐ \& │ demuxer │ │ unused \& ╞══════════╡ elementary stream 0 ├────────╳ \& │ │ │ \& │INPUT.mkv ├─────────────────────┤ ┌──────────────────────┬───────────┐ \& │ │ │ packets │ │ muxer │ \& │ │ elementary stream 1 ├─────────►│ elementary stream 0 ╞═══════════╡ \& │ │ │ │ │OUTPUT.mp4 │ \& │ ├─────────────────────┤ └──────────────────────┴───────────┘ \& │ │ │ unused \& │ │ elementary stream 2 ├────────╳ \& │ │ │ \& └──────────┴─────────────────────┘ .Ve .PP خط لوله فوق با دستور زیر ساخته می‌شود: .PP .Vb 1 \& ffmpeg \-i INPUT.mkv \-map 0:1 \-c copy OUTPUT.mp4 .Ve .PP سناریوهای پیچیده‌تر کپی استریم را نیز می‌توان ایجاد کرد، برای مثال ترکیب استریم‌ها از دو فایل ورودی مختلف در یک خروجی: .PP .Vb 10 \& ┌──────────┬────────────────────┐ ┌────────────────────┬───────────┐ \& │ 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│ │ └────────────────────┴───────────┘ \& └──────────┴────────────────────┘ .Ve .PP که با دستور زیر اجرا می‌گردد: .PP .Vb 1 \& ffmpeg \-i INPUT0.mkv \-i INPUT1.aac \-map 0:0 \-map 1:0 \-c copy OUTPUT.mp4 .Ve .PP یا حالت برعکس: تفکیک استریم‌های یک ورودی به چندین فایل خروجی مجزا: .PP .Vb 10 \& ┌──────────┬─────────────────────┐ ┌───────────────────┬───────────┐ \& │ 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│ \& └───────────────────┴───────────┘ .Ve .PP که با دستور زیر ساخته می‌شود: .PP .Vb 1 \& ffmpeg \-i INPUT.mkv \-map 0:0 \-c copy OUTPUT0.mp4 \-map 0:1 \-c copy OUTPUT1.mp4 .Ve .SS "ترنسکدینگ (Transcoding)" .IX Subsection "Transcoding" \&\fIترنسکدینگ\fR فرایند دیکود کردن یک استریم و انکود مجدد آن است. از آن‌جا که انکودینگ از نظر پردازشی سنگین است و اغلب همراه با کاهش جزئی کیفیت است، تنها در موارد لزوم باید انجام شود. خط لوله‌ای که یک استریم ویدیو و یک صدا را می‌خواند، ویدیو را ترنسکد و صدا را کپی می‌کند: .PP .Vb 10 \& ┌──────────┬─────────────────────┐ \& │ 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) │◄────────────────────────────────────╯ \& │ │ │ \& └──────────┴─────────────────────┘ .Ve .PP دستور خط فرمان متناظر: .PP .Vb 1 \& ffmpeg \-i INPUT.mkv \-map 0:v \-map 0:a \-c:v libx264 \-c:a copy OUTPUT.mp4 .Ve .SS "فیلترینگ (Filtering)" .IX Subsection "Filtering" هنگام ترنسکدینگ، استریم‌های صوتی و تصویری می‌توانند پیش از انکود نهایی توسط فیلترگراف‌های \fIساده\fR یا \fIپیچیده\fR پردازش شوند. اضافه کردن فیلتر به مثال ترنسکدینگ فوق به شکل زیر خواهد بود: .PP .Vb 10 \& ┌──────────┬───────────────┐ \& │ demuxer │ │ ┌─────────┐ \& ╞══════════╡ video stream │ packets │ video │ frames \& │INPUT.mkv │ ├─────────►│ decoder ├─────►───╮ \& │ │ │ └─────────┘ │ \& └──────────┴───────────────┘ │ \& ╭───────────◄───────────╯ \& │ ┌────────────────────────┐ \& │ │ simple filtergraph │ \& │ ╞════════════════════════╡ \& │ │ ┌───────┐ ┌───────┐ │ \& ╰──►├─►│ yadif ├─►│ scale ├─►├╮ \& │ └───────┘ └───────┘ ││ \& └────────────────────────┘│ \& │ \& │ \& ┌──────────┬───────────────┐ video ┌─────────┐ │ \& │ muxer │ │ packets │ video │ │ \& ╞══════════╡ video stream │◄─────────┤ encoder ├───────◄───────╯ \& │OUTPUT.mp4│ │ │ │ \& │ │ │ └─────────┘ \& └──────────┴───────────────┘ .Ve .SS "دیکودرهای بازگشتی (Loopback decoders)" .IX Subsection "Loopback decoders" دیکودرهای لوپ‌بک خروجی یک انکودر را مجدداً دیکود می‌کنند تا بتوان آن را دوباره به یک فیلترگراف پیچیده متصل نمود. این کار با دستور \f(CW\*(C`\-dec\*(C'\fR و مشخص‌کردن اندیس خروجی صورت می‌گیرد: .PP .Vb 5 \& ffmpeg \-i INPUT \e \& \-map 0:v:0 \-c:v libx264 \-crf 45 \-f null \- \e \& \-threads 3 \-dec 0:0 \e \& \-filter_complex \*(Aq[0:v][dec:0]hstack[stack]\*(Aq \e \& \-map \*(Aq[stack]\*(Aq \-c:v ffv1 OUTPUT .Ve .PP نمایش خط لوله ترنسکد با دیکودر بازگشتی: .PP .Vb 10 \& ┌──────────┬───────────────┐ \& │ 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) │ \& │ │ │ └─────────┘ \& └──────────┴───────────────┘ .Ve .SH "انتخاب استریم (STREAM SELECTION)" .IX Header "STREAM SELECTION" دستور \&\fBffmpeg\fR گزینه \f(CW\*(C`\-map\*(C'\fR را برای کنترل دستی انتخاب استریم‌ها در هر فایل خروجی فراهم ساخته است. کاربران می‌توانند از \f(CW\*(C`\-map\*(C'\fR صرف‌نظر کنند تا ffmpeg به طور خودکار استریم‌ها را برگزیند. گزینه‌های \f(CW\*(C`\-vn / \-an / \-sn / \-dn\*(C'\fR نیز می‌توانند برای حذف و نادیده‌گرفتن استریم‌های ویدیو، صدا، زیرنویس و داده استفاده شوند. .SS "توضیحات و قوانین انتخاب" .IX Subsection "Description" قوانین انتخاب خودکار استریم: .IP \(bu 4 \fBویدیو:\fR استریمی که بالاترین وضوح (Resolution) را دارد انتخاب می‌شود. .IP \(bu 4 \fBصدا:\fR استریمی که بیشترین تعداد کانال صوتی را داراست برگزیده می‌شود. .IP \(bu 4 \fBزیرنویس:\fR نخستین استریم زیرنویس منطبق با نوع انکودر پیش‌فرض (متنی یا تصویری) انتخاب می‌گردد. .PP استریم‌های داده یا پیوست‌ها به طور خودکار انتخاب نمی‌شوند و فقط با گزینه \f(CW\*(C`\-map\*(C'\fR قابل انتقال هستند. .SS "انتخاب دستی (Manual stream selection)" .IX Subsection "Manual stream selection" هنگامی که از گزینه \f(CW\*(C`\-map\*(C'\fR استفاده می‌شود، منحصراً استریم‌های نگاشت‌شده توسط کاربر در آن فایل خروجی قرار می‌گیرند. .SS "مثال‌های انتخاب استریم (Examples)" .IX Subsection "Examples" مثال‌های زیر رفتار، جزئیات و نحوه عملکرد روش‌های انتخاب استریم در ffmpeg را نشان می‌دهند. این مثال‌ها سه فایل ورودی زیر را در نظر می‌گیرند: .PP .Vb 3 \& 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) .Ve .PP مثال: انتخاب خودکار استریم (automatic stream selection): .PP .Vb 1 \& ffmpeg \-i A.avi \-i B.mp4 out1.mkv out2.wav \-map 1:a \-c:a copy out3.mov .Ve .PP سه فایل خروجی مشخص شده است. برای دو فایل اول گزینه‌ای از \f(CW\*(C`\-map\*(C'\fR تعیین نشده است، بنابراین ffmpeg استریم‌ها را به طور خودکار برمی‌گزیند. .PP فایل \fIout1.mkv\fR کانتینر ماتروشکا است و ویدیو، صدا و زیرنویس می‌پذیرد. برای ویدیو، \f(CW\*(C`stream 0\*(C'\fR از \fIB.mp4\fR (بالاترین رزولوشن)، برای صدا \f(CW\*(C`stream 3\*(C'\fR از \fIB.mp4\fR (بیشترین کانال 5.1)، و برای زیرنویس نخستین استریم زیرنویس (\f(CW\*(C`stream 2\*(C'\fR از \fIB.mp4\fR) انتخاب می‌شود. .PP فایل \fIout2.wav\fR تنها جریان صوتی می‌پذیرد، بنابراین تنها استریم 3 از \fIB.mp4\fR انتخاب می‌گردد. .PP برای \fIout3.mov\fR، از آن‌جا که گزینه \f(CW\*(C`\-map 1:a\*(C'\fR تعیین شده است، انتخاب خودکار متوقف شده و تمام استریم‌های صوتی از ورودی دوم (\fIB.mp4\fR) به صورت کپی مستقیم (\f(CW\-c:a copy\fR) منتقل می‌شوند. .PP مثال: انتخاب خودکار زیرنویس‌ها (automatic subtitles selection): .PP .Vb 1 \& ffmpeg \-i C.mkv out1.mkv \-c:s dvdsub \-an out2.mkv .Ve .PP مثال: خروجی‌های بدون برچسب فیلترگراف (unlabeled filtergraph outputs): .PP .Vb 1 \& ffmpeg \-i A.avi \-i C.mkv \-i B.mp4 \-filter_complex "overlay" out1.mp4 out2.srt .Ve .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" تمام گزینه‌های عددی، چنانچه تصریح نشده باشد، یک رشته عددی را می‌پذیرند که می‌تواند با یکی از پیشوندهای استاندارد یکای SI همراه باشد، مانند: \*(AqK\*(Aq (کیلو)، \*(AqM\*(Aq (مگا)، یا \*(AqG\*(Aq (گیگا). .PP اگر حرف \*(Aqi\*(Aq به پیشوند SI اضافه شود، به عنوان ضریب دودویی (بر پایه توان‌های 1024 به‌جای 1000) تفسیر می‌گردد؛ مانند: \*(AqKiB\*(Aq, \*(AqMiB\*(Aq, \*(AqGiB\*(Aq. اضافه کردن \*(AqB\*(Aq مقدار را در 8 ضرب می‌کند (تبدیل بایت به بیت). .PP گزینه‌هایی که آرگومان دریافت نمی‌کنند، گزینه‌های بولی (Boolean) هستند و مقدار true را ثبت می‌کنند. برای خاموش کردن آن‌ها می‌توان از پیشوند "no" استفاده کرد؛ به عنوان مثال \fB\-nofoo\fR گزینه \fBfoo\fR را غیرفعال می‌سازد. .PP گزینه‌های دارای آرگومان از سینتکس فایل نیز پشتیبانی می‌کنند؛ بدین صورت که اگر بلافاصله پس از خط‌تیره یک اسلش \*(Aq/\*(Aq اضافه شود، آرگومان به عنوان مسیر فایلی خوانده می‌شود که محتوای گزینه از داخل آن بارگذاری خواهد شد: .PP .Vb 1 \& ffmpeg \-i INPUT \-/filter:v filter.script OUTPUT .Ve .PP دستور بالا توضیحات و ساختار فیلترگراف ویدیو را از فایل متنی \fIfilter.script\fR بارگذاری خواهد کرد. .SS "مشخص‌کننده‌های استریم (Stream specifiers)" .IX Subsection "Stream specifiers" برخی گزینه‌ها برای هر استریم به طور مجزا اعمال می‌شوند (مانند نرخ بیت یا نوع کدک). مشخص‌کننده‌های استریم برای تعیین دقیق استریم‌های هدف به کار می‌روند. .PP مشخص‌کننده استریم رشته‌ای است که معمولاً پس از علامت دو‌نقطه به نام گزینه افزوده می‌شود. برای نمونه \f(CW\*(C`\-codec:a:1 ac3\*(C'\fR شامل مشخص‌کننده \f(CW\*(C`a:1\*(C'\fR است که دومین استریم صوتی را انتخاب کرده و کدک ac3 را برای آن برمی‌گزیند. .PP یک مشخص‌کننده می‌تواند با چندین استریم مطابقت داشته باشد؛ برای مثال \f(CW\*(C`\-b:a 128k\*(C'\fR نرخ بیت 128 کیلوبیت را برای تمام استریم‌های صوتی اعمال می‌کند. .PP یک مشخص‌کننده خالی با تمام استریم‌ها مطابقت دارد. مثلاً \f(CW\*(C`\-codec copy\*(C'\fR تمام استریم‌ها را بدون انکود مجدد کپی می‌نماید. .PP حالت‌های مختلف مشخص‌کننده‌های استریم عبارتند از: .IP \fIstream_index\fR 4 .IX Item "stream_index" انتخاب استریم بر اساس اندیس عددی (مثلاً \f(CW\-threads:1 4\fR تعداد ریسه‌های دومین استریم را روی 4 تنظیم می‌کند). .IP \fIstream_type\fR\fB[:\fR\fIadditional_stream_specifier\fR\fB]\fR 4 .IX Item "stream_type[:additional_stream_specifier]" نوع استریم: \*(Aqv\*(Aq یا \*(AqV\*(Aq برای ویدیو، \*(Aqa\*(Aq برای صدا، \*(Aqs\*(Aq برای زیرنویس، \*(Aqd\*(Aq برای داده و \*(Aqt\*(Aq برای پیوست‌ها. حرف \*(Aqv\*(Aq با تمام استریم‌های ویدیویی مطابقت دارد و \*(AqV\*(Aq فقط با ویدیوهایی که تصویر پیوست یا کاور نیستند. .IP \fBp:\fR\fIprogram_id\fR\fB[:\fR\fIadditional_stream_specifier\fR\fB]\fR 4 .IX Item "p:program_id[:additional_stream_specifier]" استریم‌هایی که در برنامه‌ای با شناسه \fIprogram_id\fR قرار دارند. .IP "\fB#\fR\fIstream_id\fR \fBor i:\fR\fIstream_id\fR" 4 .IX Item "#stream_id or i:stream_id" انتخاب بر اساس شناسه اختصاصی استریم (مانند PID در کانتینر MPEG-TS). .IP \fBm:\fR\fIkey\fR\fB[:\fR\fIvalue\fR\fB]\fR 4 .IX Item "m:key[:value]" انتخاب استریم بر اساس تگ متادیتا با کلید \fIkey\fR و مقدار اختیاری \fIvalue\fR (مانند \f(CW\-map 0:m:language:fas\fR برای صدای فارسی). .IP \fBu\fR 4 .IX Item "u" انتخاب استریم‌های با پیکربندی قابل استفاده (کدک و پارامترهای پایه‌ای مانند ابعاد ویدیو یا نرخ نمونه‌برداری صدا باید موجود باشند). .SS "گزینه‌های عمومی (Generic options)" .IX Subsection "Generic options" این گزینه‌ها میان تمامی ابزارهای مجموعه ff* به صورت مشترک پشتیبانی می‌شوند. .IP "\fB\-L, \-license\fR" 4 .IX Item "-L, -license" نمایش مجوز برنامه (License). .IP "\fB\-h, \-?, \-help, \-\-help [\fR\fIarg\fR\fB]\fR" 4 .IX Item "-h, -?, -help, --help [arg]" نمایش راهنما. یک پارامتر اختیاری می‌تواند برای دریافت راهنما درباره یک مؤلفه خاص مشخص شود: .RS 4 .IP \fBlong\fR 4 .IX Item "long" چاپ گزینه‌های پیشرفته علاوه بر گزینه‌های پایه. .IP \fBfull\fR 4 .IX Item "full" چاپ فهرست کامل تمامی گزینه‌ها شامل انکودرها، دیکودرها، فیلترها و فرمت‌ها. .IP \fBdecoder=\fR\fIdecoder_name\fR 4 .IX Item "decoder=decoder_name" اطلاعات دقیق درباره دیکودر مشخص‌شده با \fIdecoder_name\fR. .IP \fBencoder=\fR\fIencoder_name\fR 4 .IX Item "encoder=encoder_name" اطلاعات دقیق درباره انکودر مشخص‌شده با \fIencoder_name\fR. .IP \fBdemuxer=\fR\fIdemuxer_name\fR 4 .IX Item "demuxer=demuxer_name" اطلاعات تفصیلی درباره دی‌ماکسر مشخص‌شده با \fIdemuxer_name\fR. .IP \fBmuxer=\fR\fImuxer_name\fR 4 .IX Item "muxer=muxer_name" اطلاعات تفصیلی درباره ماکسر مشخص‌شده با \fImuxer_name\fR. .IP \fBfilter=\fR\fIfilter_name\fR 4 .IX Item "filter=filter_name" اطلاعات کامل فیلتر مشخص‌شده با \fIfilter_name\fR. .RE .IP \fB\-version\fR 4 .IX Item "-version" نمایش نسخه برنامه و کتابخانه‌های مورد استفاده. .IP \fB\-buildconf\fR 4 .IX Item "-buildconf" نمایش پیکربندی و پارامترهای بیلد برنامه. .IP \fB\-formats\fR 4 .IX Item "-formats" نمایش تمام فرمت‌های قابل پشتیبانی (کانتینرها و دستگاه‌ها). .IP \fB\-demuxers\fR 4 .IX Item "-demuxers" نمایش فهرست کامل دی‌ماکسرهای در دسترس. .IP \fB\-muxers\fR 4 .IX Item "-muxers" نمایش فهرست کامل ماکسرهای در دسترس. .IP \fB\-devices\fR 4 .IX Item "-devices" نمایش دستگاه‌های ورودی و خروجی در دسترس. .IP \fB\-codecs\fR 4 .IX Item "-codecs" نمایش تمام کدک‌های شناخته‌شده برای کتابخانه libavcodec. .IP \fB\-decoders\fR 4 .IX Item "-decoders" نمایش دیکودرهای در دسترس. .IP \fB\-encoders\fR 4 .IX Item "-encoders" نمایش انکودرهای در دسترس. .IP \fB\-filters\fR 4 .IX Item "-filters" نمایش تمامی فیلترهای ویدیویی و صوتی در دسترس libavfilter. .IP \fB\-protocols\fR 4 .IX Item "-protocols" نمایش پروتکل‌های شبکه و ورودی/خروجی در دسترس (مانند http, rtmp, file). .IP "\fB\-loglevel\fR [\fIflags\fR+]فلگ" 4 .IX Item "-loglevel [flags+]loglevel" تنظیم سطح گزارش‌دهی پیام‌ها (LogLevel)؛ گزینه‌های ممکن شامل: quiet, panic, fatal, error, warning, info, verbose, debug. .IP "\fB\-v\fR \fIloglevel\fR" 4 .IX Item "-v loglevel" نام مستعار برای \fB\-loglevel\fR. .IP \fB\-report\fR 4 .IX Item "-report" تولید گزارش کامل خط فرمان و لاگ در فایلی با پسوند log در دایرکتوری جاری. .IP \fB\-hide_banner\fR 4 .IX Item "-hide_banner" پنهان کردن بنر پیش‌فرض متنی حاوی اطلاعات کپی‌رایت و بیلد در ابتدای خروجی خط فرمان. .SS "گزینه‌های AVOptions" .IX Subsection "AVOptions" این گزینه‌ها مستقیماً توسط کتابخانه‌های libavformat، libavdevice و libavcodec ارائه می‌شوند. برای مشاهده فهرست کامل AVOptions از گزینه \fB\-help\fR استفاده کنید. آن‌ها به دو دسته تقسیم می‌شوند: .IP \fBعمومی (generic)\fR 4 .IX Item "generic" این گزینه‌ها برای هر کانتینر، کدک یا دستگاهی قابل تنظیم هستند. .IP \fBاختصاصی (private)\fR 4 .IX Item "private" این گزینه‌ها مختص یک کانتینر، کدک یا سخت‌افزار خاص هستند. به عنوان مثال برای نوشتن متادیتا با تگ ID3v2.3 به جای ID3v2.4 پیش‌فرض در فایل MP3 از گزینه اختصاصی ماکسر MP3 استفاده می‌شود: .PP .Vb 1 \& ffmpeg \-i input.flac \-id3v2_version 3 out.mp3 .Ve .SS "گزینه‌های اصلی (Main options)" .IX Subsection "Main options" .IP "\fB\-f\fR \fIfmt\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-f fmt (input/output)" اجبار قالب فایل ورودی یا خروجی. به طور معمول قالب به صورت خودکار برای فایل‌های ورودی تشخیص داده می‌شود و برای خروجی نیز از پسوند فایل تخمین زده می‌شود. .IP "\fB\-i\fR \fIurl\fR \fB(\fR\fIورودی\fR\fB)\fR" 4 .IX Item "-i url (input)" آدرس یا مسیر فایل ورودی. .IP "\fB\-y (\fR\fIعمومی\fR\fB)\fR" 4 .IX Item "-y (global)" بازنویسی و جایگزینی فایل‌های خروجی بدون پرسش و تأیید کاربر. .IP "\fB\-n (\fR\fIعمومی\fR\fB)\fR" 4 .IX Item "-n (global)" عدم بازنویسی فایل‌های خروجی؛ چنانچه فایل خروجی وجود داشته باشد بلافاصله برنامه خارج می‌شود. .IP "\fB\-stream_loop\fR \fInumber\fR \fB(\fR\fIورودی\fR\fB)\fR" 4 .IX Item "-stream_loop number (input)" تعیین تعداد دفعات تکرار (Loop) استریم ورودی. مقدار 0 یعنی بدون تکرار و \-1 به معنای حلقه نامحدود است. .IP "\fB\-c[:\fR\fIstream_specifier\fR\fB]\fR \fIcodec\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-c[:stream_specifier] codec (input/output,per-stream)" .PD 0 .IP "\fB\-codec[:\fR\fIstream_specifier\fR\fB]\fR \fIcodec\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-codec[:stream_specifier] codec (input/output,per-stream)" .PD انتخاب یک انکودر (پیش از خروجی) یا یک دیکودر (پیش از ورودی) برای یک یا چند استریم. مقدار \fIcodec\fR نام انکودر/دیکودر است یا مقدار ویژه \f(CW\*(C`copy\*(C'\fR (فقط خروجی) که نشان می‌دهد استریم نباید مجدداً انکود شود. .Sp مثال: .Sp .Vb 1 \& ffmpeg \-i INPUT \-map 0 \-c:v libx264 \-c:a copy OUTPUT .Ve .Sp تمام استریم‌های ویدیو را با libx264 انکود کرده و تمام استریم‌های صوتی را کپی می‌کند. .IP "\fB\-t\fR \fIduration\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-t duration (input/output)" در ورودی، مدت‌زمان خواندن داده از فایل ورودی را محدود می‌سازد. در خروجی، نوشتن را پس از رسیدن مدت‌زمان به مقدار \fIduration\fR متوقف می‌کند. .IP "\fB\-to\fR \fIposition\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-to position (input/output)" توقف نوشتن خروجی یا خواندن ورودی در نقطه زمانی \fIposition\fR. .IP "\fB\-fs\fR \fIlimit_size\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-fs limit_size (output)" تعیین سقف حجم فایل خروجی به بایت. .IP "\fB\-ss\fR \fIposition\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-ss position (input/output)" پرش زمانی (Seek) در ورودی یا خروجی به موقعیت زمانی مشخص‌شده توسط \fIposition\fR (مثلاً 00:01:30 یا 90). .IP "\fB\-sseof\fR \fIposition\fR \fB(\fR\fIورودی\fR\fB)\fR" 4 .IX Item "-sseof position (input)" پرش زمانی نسبت به انتهای فایل (مقادیر منفی به نقاط پیش از پایان اشاره دارند). .IP "\fB\-timestamp\fR \fIdate\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-timestamp date (output)" تنظیم برچسب زمانی ثبت کانتینر در خروجی. .IP "\fB\-metadata[:metadata_specifier]\fR \fIkey\fR=\fIvalue\fR \fB(\fR\fIخروجی،به‌ازای‌متادیتا\fR\fB)\fR" 4 .IX Item "-metadata[:metadata_specifier] key=value (output,per-metadata)" تنظیم تگ کلید/مقدار در متادیتای خروجی (مانند title="عنوان فیلم" یا author="نام نویسنده"). .IP "\fB\-disposition[:stream_specifier]\fR \fIvalue\fR \fB(\fR\fIخروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-disposition[:stream_specifier] value (output,per-stream)" تنظیم وضعیت پیش‌فرض، اجباری یا اختیاری بودن استریم (مانند default, forced, hearing_impaired). .IP "\fB\-target\fR \fItype\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-target type (output)" تعیین فرمت هدف استاندارد (مانند vcd, svcd, dvd, dv, pal-dvd). .IP "\fB\-filter[:stream_specifier]\fR \fIfiltergraph\fR \fB(\fR\fIخروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-filter[:stream_specifier] filtergraph (output,per-stream)" ایجاد فیلترگراف مشخص‌شده و استفاده از آن برای پردازش استریم. .IP "\fB\-filter_complex\fR \fIfiltergraph\fR \fB(\fR\fIعمومی\fR\fB)\fR" 4 .IX Item "-filter_complex filtergraph (global)" تعریف یک فیلترگراف پیچیده با چندین ورودی و/یا خروجی. .SS "گزینه‌های ویدیو (Video Options)" .IX Subsection "Video Options" .IP "\fB\-vframes\fR \fInumber\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-vframes number (output)" تنظیم تعداد فریم‌های ویدیویی خروجی (نام مستعار قدیمی برای \f(CW\-frames:v\fR). .IP "\fB\-r[:\fR\fIstream_specifier\fR\fB]\fR \fIfps\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-r[:stream_specifier] fps (input/output,per-stream)" تنظیم نرخ فریم ویدیو بر حسب هرتز یا فریم بر ثانیه (مثلاً 24, 30, 60 یا 30000/1001). .IP "\fB\-fpsmax[:\fR\fIstream_specifier\fR\fB]\fR \fIfps\fR \fB(\fR\fIخروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-fpsmax[:stream_specifier] fps (output,per-stream)" تنظیم سقف حداکثر نرخ فریم خروجی. .IP "\fB\-s[:\fR\fIstream_specifier\fR\fB]\fR \fIsize\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-s[:stream_specifier] size (input/output,per-stream)" تنظیم ابعاد فریم ویدیو به فرمت \fBwxh\fR (عرض در ارتفاع؛ مانند 1920x1080 یا 1280x720 یا اختصاراتی مانند hd1080). .IP "\fB\-aspect[:\fR\fIstream_specifier\fR\fB]\fR \fIaspect\fR \fB(\fR\fIخروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-aspect[:stream_specifier] aspect (output,per-stream)" تنظیم نسبت تصویر (Display Aspect Ratio) ویدیو (مانند 16:9 یا 4:3). .IP "\fB\-vn (\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-vn (input/output)" غیرفعال کردن ضبط یا پردازش ویدیو (صرف‌نظر کردن از استریم‌های ویدیو). .IP "\fB\-vcodec\fR \fIcodec\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-vcodec codec (input/output)" تنظیم کدک ویدیو (نام مستعار برای \f(CW\-codec:v\fR). .IP "\fB\-pass[:stream_specifier]\fR \fIn\fR \fB(\fR\fIخروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-pass[:stream_specifier] n (output,per-stream)" شماره مرحله انکود چندمرحله‌ای (1 یا 2 در انکود دو مرحله‌ای two-pass). .IP "\fB\-vf\fR \fIfiltergraph\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-vf filtergraph (output)" نام مستعار برای \f(CW\-filter:v\fR (اعمال فیلترگراف ویدیو بر روی خروجی). .SS "گزینه‌های پیشرفته ویدیو (Advanced Video options)" .IX Subsection "Advanced Video options" .IP "\fB\-pix_fmt[:\fR\fIstream_specifier\fR\fB]\fR \fIformat\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-pix_fmt[:stream_specifier] format (input/output,per-stream)" تنظیم فرمت پیکسل (Pixel Format؛ مانند yuv420p, yuv444p, nv12, rgb24). برای مشاهده فهرست کامل فرمت‌ها از \f(CW\-pix_fmts\fR استفاده کنید. .IP "\fB\-sws_flags\fR \fIflags\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-sws_flags flags (input/output)" تنظیم فلگ‌های پیش‌فرض کتابخانه libswscale برای تغییر اندازه تصویر (مانند bicubic, lanczos, bilinear). .IP "\fB\-vstats\fR 4 .IX Item "-vstats" ثبت و ذخیره آمار انکود فریم‌های ویدیو در فایلی با ساختار \fIvstats_HHMMSS.log\fR. .IP "\fB\-vstats_file\fR \fIfile\fR" 4 .IX Item "-vstats_file file" تعیین نام اختصاصی فایل برای ذخیره آمار انکود ویدیو. .IP "\fB\-vtag\fR \fIfourcc/tag\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-vtag fourcc/tag (output)" اجبار تگ ویدیو / کد چهارنویسه‌ای FourCC (نام مستعار برای \f(CW\-tag:v\fR). .IP "\fB\-force_key_frames[:\fR\fIstream_specifier\fR\fB]\fR \fItime\fR\fB[,\fR\fItime\fR\fB...] (\fR\fIخروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-force_key_frames[:stream_specifier] time[,time...] (output,per-stream)" اجبار تولید فریم کلیدی (I-frame / Keyframe) در نقاط زمانی مشخص یا بر اساس روابط ریاضی (مناسب برای ساخت پکت‌های HLS و DASH). .SS "گزینه‌های صدا (Audio Options)" .IX Subsection "Audio Options" .IP "\fB\-aframes\fR \fInumber\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-aframes number (output)" تنظیم تعداد فریم‌های صوتی خروجی (نام مستعار قدیمی برای \f(CW\-frames:a\fR). .IP "\fB\-ar[:\fR\fIstream_specifier\fR\fB]\fR \fIfreq\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-ar[:stream_specifier] freq (input/output,per-stream)" تنظیم نرخ نمونه‌برداری صوت (Sampling Frequency) بر حسب هرتز (مانند 44100 یا 48000). .IP "\fB\-aq\fR \fIq\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-aq q (output)" تنظیم کیفیت صدا در انکود VBR متغیر (نام مستعار برای \f(CW\-q:a\fR). .IP "\fB\-ac[:\fR\fIstream_specifier\fR\fB]\fR \fIchannels\fR \fB(\fR\fIورودی/خروجی،به‌ازای‌هر‌استریم\fR\fB)\fR" 4 .IX Item "-ac[:stream_specifier] channels (input/output,per-stream)" تنظیم تعداد کانال‌های صوتی (مثلاً 1 برای مونو، 2 برای استریو، 6 برای 5.1). .IP "\fB\-an (\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-an (input/output)" غیرفعال کردن پردازش یا ضبط صدا (صرف‌نظر کردن از استریم‌های صوتی). .IP "\fB\-acodec\fR \fIcodec\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-acodec codec (input/output)" تنظیم کدک صوتی (نام مستعار برای \f(CW\-codec:a\fR؛ مانند aac, libmp3lame, opus, flac). .IP "\fB\-af\fR \fIfiltergraph\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-af filtergraph (output)" نام مستعار برای \f(CW\-filter:a\fR (اعمال فیلترگراف صوتی مانند ولوم، اکولایزر یا ری‌سمپل). .SS "گزینه‌های زیرنویس (Subtitle options)" .IX Subsection "Subtitle options" .IP "\fB\-scodec\fR \fIcodec\fR \fB(\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-scodec codec (input/output)" تنظیم کدک زیرنویس (نام مستعار برای \f(CW\-codec:s\fR؛ مانند srt, subrip, ass, mov_text). .IP "\fB\-sn (\fR\fIورودی/خروجی\fR\fB)\fR" 4 .IX Item "-sn (input/output)" غیرفعال کردن پردازش یا ضبط زیرنویس (صرف‌نظر کردن از استریم‌های زیرنویس). .IP \fB\-fix_sub_duration\fR 4 .IX Item "-fix_sub_duration" اصلاح مدت‌زمان نمایش زیرنویس‌ها برای جلوگیری از هم‌پوشانی نامطلوب (به ویژه در زیرنویس‌های DVB). .SS "گزینه‌های پیشرفته (Advanced options)" .IX Subsection "Advanced options" .IP "\fB\-map [\-]\fR\fIinput_file_id\fR\fB[:\fR\fIstream_specifier\fR\fB][:\fR\fIview_specifier\fR\fB][:?] |\fR \fI[linklabel]\fR \fB(\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-map [-]input_file_id[:stream_specifier][:view_specifier][:?] | [linklabel] (output)" ایجاد یک یا چند استریم در فایل خروجی. این گزینه دو شیوه اصلی برای تعیین منبع داده دارد: شیوه نخست یک یا چند استریم را از یک فایل ورودی مشخص انتخاب می‌کند (که با \f(CW\-i\fR تعریف شده است)، و شیوه دوم خروجی یک فیلترگراف پیچیده را تحویل می‌گیرد (که با \f(CW\-filter_complex\fR تنظیم شده است). .Sp قرار دادن علامت خط‌تیره \f(CW\*(C`\-\*(C'\fR پیش از شناسه استریم، یک نگاشت منفی ایجاد می‌کند و استریم‌های منطبق را از نگاشت‌های قبلی حذف می‌نماید. .Sp علامت سؤال \f(CW\*(C`?\*(C'\fR در انتهای اندیس استریم به این معناست که اگر استریم مورد نظر یافت نشد، برنامه با خطا متوقف نشود و از آن صرف‌نظر نماید. .IP "\fB\-re (\fR\fIورودی\fR\fB)\fR" 4 .IX Item "-re (input)" خواندن ورودی با نرخ فریم بومی خود (سرعت زمان واقعی Realtime). این گزینه به ویژه برای شبیه‌سازی پخش زنده شبکه یا ارسال جریان‌های زنده RTMP/RTSP کاربرد دارد. .IP "\fB\-benchmark (\fR\fIعمومی\fR\fB)\fR" 4 .IX Item "-benchmark (global)" نمایش آمار محک زدن و زمان مصرفی CPU و حافظه در انتهای پردازش انکود. .IP "\fB\-shortest (\fR\fIخروجی\fR\fB)\fR" 4 .IX Item "-shortest (output)" اتمام نوشتن خروجی به محض پایان کوتاه‌ترین استریم ورودی (بسیار مفید هنگام ترکیب یک تصویر ثابت با یک فایل صوتی بلند). .SS "فایل‌های پیش‌تنظیم (Preset files)" .IX Subsection "Preset files" یک فایل پیش‌تنظیم حاوی مجموعه‌ای از زوج‌های \fIگزینه\fR=\fIمقدار\fR در هر خط است که برای جلوگیری از نوشتن گزینه‌های طولانی در خط فرمان استفاده می‌شود. خطوطی که با \*(Aq#\*(Aq آغاز شوند به عنوان یادداشت در نظر گرفته می‌شوند. .SS "فرمت فایل vstats" .IX Subsection "vstats file format" گزینه‌های \f(CW\*(C`\-vstats\*(C'\fR و \f(CW\*(C`\-vstats_file\*(C'\fR تولید فایلی حاوی مشخصات آماری فریم‌های خروجی ویدیویی را فعال می‌کنند. اطلاعاتی مانند شماره فریم، کیفیت فریم (q)، نسبت سیگنال به نویز (PSNR)، حجم فریم و نرخ بیت متوسط در آن ثبت می‌گردد. .SH "مثال‌های کاربردی (EXAMPLES)" .IX Header "EXAMPLES" .SS "ضبط صدا و تصویر زنده" .IX Subsection "Video and Audio grabbing" در صورت تعیین قالب و دستگاه ورودی، ffmpeg می‌تواند صدا و تصویر را مستقیماً ضبط کند: .PP .Vb 1 \& ffmpeg \-f alsa \-ac 2 \-i hw:0 \-f video4linux2 \-i /dev/video0 /tmp/out.mpg .Ve .SS "ضبط از صفحه نمایش (X11 grabbing)" .IX Subsection "X11 grabbing" برای ضبط از دسکتاپ و محیط گرافیکی لینوکس (X11): .PP .Vb 1 \& ffmpeg \-f x11grab \-video_size 1920x1080 \-framerate 30 \-i :0.0 /tmp/desktop.mp4 .Ve .PP در دستور فوق :0.0 شماره صفحه نمایش سرور X11 شما است (همانند متغیر محیطی DISPLAY). .SS "تبدیل فرمت‌های فایل‌های صوتی و تصویری" .IX Subsection "Video and Audio file format conversion" هر فرمت و پروتکل پشتیبانی‌شده می‌تواند به عنوان ورودی برای ffmpeg استفاده شود: .IP \(bu 4 تبدیل یک فایل ویدیویی به MP4 با انکودر H.264 و صدای AAC: .Sp .Vb 1 \& ffmpeg \-i input.mkv \-c:v libx264 \-crf 23 \-c:a aac \-b:a 192k output.mp4 .Ve .IP \(bu 4 استخراج صدای یک ویدیو بدون انکود مجدد (کپی مستقیم): .Sp .Vb 1 \& ffmpeg \-i video.mp4 \-vn \-c:a copy audio.aac .Ve .IP \(bu 4 استخراج فریم‌های ویدیویی به صورت عکس (یک عکس در هر ثانیه): .Sp .Vb 1 \& ffmpeg \-i input.mp4 \-r 1 \-f image2 frame_%04d.jpg .Ve .IP \(bu 4 ساخت یک ویدیو از توالی عکس‌ها با نرخ 30 فریم بر ثانیه: .Sp .Vb 1 \& ffmpeg \-framerate 30 \-i frame_%04d.jpg \-c:v libx264 \-pix_fmt yuv420p output.mp4 .Ve .IP \(bu 4 بریدن بخشی از ویدیو از دقیقه 1 به مدت 30 ثانیه: .Sp .Vb 1 \& ffmpeg \-ss 00:01:00 \-i input.mp4 \-t 30 \-c copy cut.mp4 .Ve .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBffmpeg\-all\fR\|(1), \&\fBffplay\fR\|(1), \fBffprobe\fR\|(1), \&\fBffmpeg\-utils\fR\|(1), \fBffmpeg\-scaler\fR\|(1), \fBffmpeg\-resampler\fR\|(1), \&\fBffmpeg\-codecs\fR\|(1), \fBffmpeg\-bitstream\-filters\fR\|(1), \fBffmpeg\-formats\fR\|(1), \&\fBffmpeg\-devices\fR\|(1), \fBffmpeg\-protocols\fR\|(1), \fBffmpeg\-filters\fR\|(1) .SH "نویسندگان و سازندگان (AUTHORS)" .IX Header "AUTHORS" توسعه‌دهندگان و جامعه پروژه FFmpeg. .PP برای مشاهده تاریخچه مشارکت‌کنندگان، به تاریخچه Git پروژه در <\fBhttps://git.ffmpeg.org/ffmpeg\fR> مراجعه کنید یا دستور \&\fBgit log\fR را در درخت کد منبع FFmpeg اجرا نمایید. .PP نگه‌دارندگان مؤلفه‌ها در فایل \&\fIMAINTAINERS\fR در درخت کد منبع لیست شده‌اند.