mpv(1) multimedia mpv(1)

mpv - یک پخش‌کننده چندرسانه‌ای

mpv [options] [file|URL|PLAYLIST|-]
mpv [options] files

برنامه mpv یک پخش‌کننده چندرسانه‌ای بر پایه MPlayer و mplayer2 است. این برنامه از طیف گسترده‌ای از قالب‌های فایل‌های ویدیویی، کدک‌های صوتی و تصویری، و انواع زیرنویس‌ها پشتیبانی می‌کند. انواع ویژه‌ای از URLهای ورودی برای خواندن ورودی از منابع مختلفی غیر از فایل‌های روی دیسک در دسترس هستند. بسته به پلتفرم، روش‌های خروجی ویدیویی و صوتی مختلفی پشتیبانی می‌شوند.

نمونه‌هایی از کاربرد برنامه برای شروع سریع کار با آن در انتهای این صفحه راهنما آمده است.

برنامه mpv دارای یک لایه کنترلی کاملاً قابل‌پیکربندی و دستور‌محور است که به شما امکان می‌دهد mpv را با استفاده از صفحه‌کلید، ماوس، یا کنترل از راه دور هدایت کنید (پشتیبانی از LIRC وجود ندارد - در عوض ریموت‌ها را به‌عنوان دستگاه ورودی پیکربندی کنید).

برای آشنایی با روش‌های سفارشی‌سازی آن، گزینه‌های --input- را بررسی کنید.

فهرست‌های زیر لزوماً کامل نیستند. برای مشاهده فهرستی از کلیدهای پیش‌فرض به etc/input.conf در فایل‌های منبع mpv مراجعه کنید. فایل‌های input.conf کاربر و اسکریپت‌های Lua می‌توانند کلیدهای میانبر بیشتری تعریف کنند.

برای جزئیات بیشتر در مورد پیکربندی کلیدها، بخش‌های COMMAND INTERFACE و Key names را ببینید.

همچنین برای بررسی تعاملی جزئیات کلیدها به --input-test، و برای فهرست کلیدهای میانبر (شامل چاپ در ترمینال) به اسکریپت توکار stats مراجعه کنید. به‌طور پیش‌فرض، کلید ? نمایش این فهرست را تغییر وضعیت می‌دهد.

پرش ۵ ثانیه به عقب/جلو. ترکیب Shift+arrow یک پرش دقیق ۱ ثانیه‌ای انجام می‌دهد (گزینه --hr-seek را ببینید).
پرش ۱ دقیقه به جلو/عقب. ترکیب Shift+arrow یک پرش دقیق ۵ ثانیه‌ای انجام می‌دهد (گزینه --hr-seek را ببینید).
پرش به زیرنویس قبلی/بعدی. این قابلیت تابع برخی محدودیت‌ها است و ممکن است همیشه کار نکند؛ دستور sub-seek را ببینید.
تنظیم تأخیر زیرنویس به‌گونه‌ای که زیرنویس قبلی یا بعدی در همان لحظه نمایش داده شود. این قابلیت به‌ویژه برای همگام‌سازی زیرنویس با صدا بسیار مفید است.
[ and ]
کاهش/افزایش سرعت پخش فعلی به میزان ۱۰٪.
{ and }
نصف/دو برابر کردن سرعت پخش فعلی.
بازنشانی سرعت پخش به حالت عادی.
لغو آخرین پرش (Undo). این قابلیت تنها در صورتی کار می‌کند که مدخل لیست پخش تغییر نکرده باشد. فشردن مجدد آن به موقعیت اصلی بازمی‌گردد. برای جزئیات، دستور revert-seek را ببینید.
علامت‌گذاری موقعیت فعلی. این موقعیت سپس توسط Shift+BACKSPACE به‌عنوان موقعیت بازگشت استفاده خواهد شد (پس از پرش به عقب، این علامت بازنشانی می‌شود). می‌توانید از این قابلیت برای جابه‌جایی در فایل و سپس بازگشت به نقطه دقیقی که رها کرده بودید استفاده کنید.
< and >
حرکت به عقب/جلو در لیست پخش (playlist).
حرکت به جلو در لیست پخش (playlist).
رفتن به اولین/آخرین مدخل لیست پخش (playlist).
مکث موقت (فشردن مجدد، پخش را ادامه می‌دهد).
.
یک فریم به جلو رفتن. یک بار فشردن باعث توقف موقت می‌شود و هر بار فشردن متوالی یک فریم را پخش کرده و دوباره در حالت مکث قرار می‌گیرد.
,
یک فریم به عقب رفتن. یک بار فشردن باعث توقف موقت می‌شود و هر بار فشردن متوالی یک فریم را به عقب پخش کرده و دوباره در حالت مکث قرار می‌گیرد.
توقف پخش و خروج از برنامه.
مشابه q، اما موقعیت فعلی پخش را ذخیره می‌کند. پخش مجدد همان فایل در آینده، در صورت امکان از همان موقعیت قبلی ادامه خواهد یافت. بخش RESUMING PLAYBACK را ببینید.
/ and *
کاهش/افزایش صدا.
کاهش/افزایش صدا.
9 and 0
کاهش/افزایش صدا.
بی‌صدا کردن (Mute).
_
جابه‌جایی چرخشی میان تراک‌های ویدیویی موجود.
#
جابه‌جایی چرخشی میان تراک‌های صوتی موجود.
جابه‌جایی چرخشی میان ویرایش‌های (Editions) موجود.
تغییر وضعیت تمام‌صفحه (همچنین --fs را ببینید).
خروج از حالت تمام‌صفحه.
تغییر وضعیت همیشه در بالا ماندن پنجره (همچنین --ontop را ببینید).
کاهش/افزایش محدوده pan-and-scan. کلید e در حال حاضر همان کار W را انجام می‌دهد، اما استفاده از آن توصیه نمی‌شود. برای اطلاعات بیشتر --panscan را ببینید.
نمایش نوار پیشرفت، زمان سپری‌شده و مدت‌زمان کل روی OSD.
تغییر وضعیت OSD بین حالت عادی و زمان/مدت‌زمان پخش.
تغییر وضعیت نمایش یا عدم‌نمایش زیرنویس..TP Alt+v تغییر وضعیت نمایانی زیرنویس ثانویه (روشن/خاموش).
پیمایش چرخشی در میان زیرنویس‌های موجود.
تنظیم تاخیر زیرنویس به میزان -/+ 0.1 ثانیه. کلید x در حال حاضر عملکردی مشابه با Z دارد، اما استفاده از آن توصیه نمی‌شود.
تنظیم/پاک‌کردن نقاط حلقهٔ تکرار A-B. برای جزئیات به دستور ab-loop مراجعه کنید.
تغییر وضعیت تکرار بی‌نهایت (روشن/خاموش).
تنظیم تاخیر صدا (همگام‌سازی صوت/تصویر) به میزان +/- 0.1 ثانیه.
تنظیم تاخیر صدا (همگام‌سازی صوت/تصویر) به میزان +/- 0.1 ثانیه.
تنظیم اندازهٔ قلم زیرنویس به میزان +/- 10%.
جابه‌جایی بین اعمال تنها جایگزینی‌های --sub-ass-* (پیش‌فرض) روی زیرنویس‌های SSA/ASS، و جایگزینی تقریباً کامل آن‌ها با سبک زیرنویس معمولی. برای اطلاعات بیشتر --sub-ass-override را ببینید.
پیمایش چرخشی در اینکه کدام داده‌های ویدیویی برای رندر ASS استفاده شوند. برای اطلاعات بیشتر --sub-ass-use-video-data را ببینید.
جابه‌جا کردن زیرنویس‌ها به بالا/پایین. کلید t در حال حاضر عملکردی مشابه با R دارد، اما استفاده از آن توصیه نمی‌شود.
گرفتن اسکرین‌شات.
گرفتن اسکرین‌شات بدون زیرنویس. (کارکرد این قابلیت به پشتیبانی درایور VO بستگی دارد.)
گرفتن اسکرین‌شات دقیقاً همان‌گونه که پنجره آن را نمایش می‌دهد (به همراه زیرنویس، OSD و ویدیوی مقیاس‌بندی‌شده).
پرش به ابتدای فایل.
پرش به ابتدای فصل قبلی/بعدی. در بیشتر موارد، "قبلی" در عمل به ابتدای فصل جاری می‌رود؛ --chapter-seek-threshold را ببینید.
پرش ۱۰ دقیقه به عقب یا جلو. (این عملکرد قبلاً بدون کلید Shift به PGUP/PGDWN نگاشت شده بود.)
فعال/غیرفعال کردن نوارزدایی (debanding).
تغییر چرخشی فیلتر درون‌بافی‌زدایی (deinterlacing).
تغییر چرخشی بازنویسی نسبت ابعاد تصویر (aspect ratio).
تغییر وضعیت رمزگشایی سخت‌افزاری ویدیو (روشن/خاموش).
جابه‌جایی کادر مستطیلی ویدیو (حرکت کادر یا panning).
تغییر بزرگ‌نمایی ویدیو (zoom).
تغییر بزرگ‌نمایی ویدیو.
بازنشانی تنظیمات حرکت کادر و بزرگ‌نمایی (pan/zoom).
نمایش فهرست پخش و موقعیت فعلی در آن.
نمایش فهرست جریان‌های صوتی و زیرنویس.
افزودن فایل یا URL موجود در کلیپ‌بورد به انتهای فهرست پخش. اگر در حال حاضر چیزی در حال پخش نباشد، بلافاصله پخش می‌شود. تنها در پلتفرم‌هایی کار می‌کند که از ویژگی clipboard پشتیبانی می‌کنند.
نمایش/تغییر وضعیت لایهٔ اطلاعاتی (overlay) حاوی آمار فایل در حال پخش، مانند کدک، نرخ فریم، تعداد فریم‌های افتاده و غیره. برای اطلاعات بیشتر STATS را ببینید.
?
تغییر وضعیت لایهٔ اطلاعاتی (overlay) که کلیدهای میانبر فعال را نمایش می‌دهد. برای اطلاعات بیشتر STATS را ببینید.
تغییر چرخشی وضعیت نمایانی OSC میان never / auto (با حرکت ماوس) / always
`
نمایش کنسول. (ESC مجدداً آن را می‌بندد. CONSOLE را ببینید.)

(کلیدهای زیر تنها هنگام استفاده از یک خروجی ویدیو معتبر هستند که از تنظیم مربوطه پشتیبانی کند.)

1 و 2
تنظیم کنتراست.
3 و 4
تنظیم روشنایی.
5 و 6
تنظیم گاما.
7 و 8
تنظیم غلظت رنگ (saturation).
تغییر اندازهٔ پنجرهٔ ویدیو به نصف اندازهٔ اصلی آن.
تغییر اندازهٔ پنجرهٔ ویدیو به اندازهٔ اصلی آن.
تغییر اندازهٔ پنجرهٔ ویدیو به دو برابر اندازهٔ اصلی آن.
تغییر وضعیت تمام‌صفحه (همچنین --fs را ببینید).

(کلیدهای میانبر زیر منویی در کنسول باز می‌کنند که به شما امکان می‌دهد با تایپ کردن بخشی از مورد دلخواه، کلیک کردن روی مورد دلخواه، یا پیمایش آن‌ها با کلیدهای میانبر، از میان فهرستی از موارد انتخاب کنید: Down و Ctrl+n به پایین می‌روند، Up و Ctrl+p به بالا می‌روند، Page down و Ctrl+f یک صفحه به پایین می‌پیمایند، و Page up و Ctrl+b یک صفحه به بالا می‌پیمایند.)

در منوهای تِرَک، انتخاب تِرَک فعلی آن را غیرفعال می‌کند.

انتخاب یک ورودی از فهرست پخش.
انتخاب یک تِرَک زیرنویس.
انتخاب یک تِرَک زیرنویس ثانویه.
انتخاب یک تِرَک صوتی.
انتخاب یک تِرَک ویدیویی.
انتخاب یک تِرَک از هر نوعی.
انتخاب یک فصل.
انتخاب یک ویرایش MKV یا عنوان DVD/Blu-ray.
انتخاب یک خط زیرنویس برای پرش به آن. این قابلیت در حال حاضر نیازمند ffmpeg در PATH، یا در همان پوشهٔ mpv در Windows است..TP g-d انتخاب یک دستگاه صوتی.
انتخاب یک فایل از تاریخچهٔ تماشا. نیازمند --save-watch-history است.
انتخاب یک فایل از فایل‌های پیکربندی تماشا در آینده (بخش RESUMING PLAYBACK را ببینید) برای ادامهٔ پخش. نیازمند --write-filename-in-watch-later-config است.
انتخاب یک اتصال ورودی (input binding) تعریف‌شده.
نمایش مقادیر تمام ویژگی‌ها (properties).
نمایش یک منو با گزینه‌های گوناگون.

برای اطلاعات بیشتر SELECT را ببینید.

(کلیدهای زیر در صورتی معتبر هستند که صفحه‌کلیدی با کلیدهای چندرسانه‌ای داشته باشید.)

مکث.
توقف پخش و خروج.
پرش به عقب/جلو به مدت ۱ دقیقه.
تغییر بزرگ‌نمایی ویدیو.

اگر جای خالی برخی از اتصال‌های کلید قدیمی را احساس می‌کنید، به فایل etc/restore-old-bindings.conf در مخزن گیت mpv نگاهی بیندازید.

حرکت در تصویر (Pan) هنگام نگه‌داشتن دکمه، به‌گونه‌ای که بخش کلیک‌شدهٔ ویدیو زیر نشانگر باقی بماند.
تغییر وضعیت حالت تمام‌صفحه (فعال/غیرفعال).
تغییر وضعیت مکث (فعال/غیرفعال).
پرش به مورد بعدی/قبلی در فهرست پخش.
کاهش/افزایش بلندی صدا.
پرش به جلو/عقب به مدت ۱۰ ثانیه.
تغییر بزرگ‌نمایی ویدیو، به‌طوری که بخشی از ویدیو که نشانگر روی آن قرار دارد در زیر آن باقی بماند.

منوی زمینه (Context Menu) منویی است که با تعامل کاربر (کلیک راست ماوس و غیره) روی پنجرهٔ ویدیو باز می‌شود.

برای استفاده از این قابلیت، باید ویژگی menu-data را با داده‌های تعریف منو مقداردهی کرده و یک اتصال کلید برای اجرای دستور context-menu اضافه کنید، که این کار می‌تواند از طریق یک اسکریپت کاربری انجام شود.

آرگومان‌های خط فرمان که با - آغاز می‌شوند به عنوان گزینه تفسیر می‌شوند و سایر موارد به عنوان نام فایل یا URL در نظر گرفته می‌شوند. تمامی گزینه‌ها به جز گزینه‌های پرچم (flag) (یا گزینه‌های انتخابی که شامل yes هستند) نیازمند یک پارامتر به شکل --option=value می‌باشند.

یک استثنا، نویسهٔ - به تنهایی (بدون هیچ مورد دیگری) است که به این معنی است که داده‌های رسانه از stdin خوانده خواهند شد. همچنین، -- (به تنهایی) باعث می‌شود پخش‌کننده تمام آرگومان‌های پس از آن را به عنوان نام فایل تفسیر کند، حتی اگر با - آغاز شوند. (برای پخش فایلی با نام -، باید از ./- استفاده کنید.)

هر گزینهٔ flag دارای یک همتای no-flag است؛ برای نمونه، متضاد گزینهٔ --fs گزینهٔ --no-fs است. مقدار --fs=yes معادل --fs و --fs=no معادل --no-fs است.

اگر گزینه‌ای با عنوان (XXX only) مشخص شده باشد، تنها در ترکیب با گزینهٔ XXX یا در صورتی که XXX کامپایل شده باشد کار خواهد کرد..SS نحو قدیمی گزینه‌ها (Legacy option syntax)

نحو --option=value به طور سخت‌گیرانه اجباری نیست و نحو جایگزین قدیمی -option value و -option=value نیز کار خواهد کرد. این ویژگی بیشتر برای سازگاری با MPlayer است. باید از استفاده از آن‌ها خودداری شود؛ معنا و رفتار آن‌ها ممکن است در هر زمانی در آینده تغییر کند.

برای نمونه، نحو جایگزین، آرگومان پس از گزینه را یک نام فایل در نظر می‌گیرد. دستور mpv -fs no تلاش خواهد کرد فایلی با نام no را پخش کند، زیرا --fs یک گزینه پرچم (flag) است که به هیچ پارامتری نیاز ندارد. اگر گزینه‌ای تغییر کند و پارامتر آن اختیاری شود، خط فرمانی که از نحو جایگزین استفاده می‌کند از کار خواهد افتاد.

تا mpv 0.31.0، تفاوتی وجود نداشت که یک گزینه با -- آغاز شود یا با یک - تکی. نسخه‌های جدیدتر mpv اکیداً انتظار دارند که مقدار گزینه را پس از یک = ارسال کنید. برای نمونه، در گذشته دستور mpv --log-file f.txt گزارشی را در f.txt می‌نوشت، اما اکنون این خط فرمان با خطا مواجه می‌شود، زیرا --log-file انتظار دریافت مقدار گزینه را دارد و f.txt صرفاً یک فایل عادی برای پخش در نظر گرفته می‌شود (مانند mpv f.txt).

برنامه آینده این است که -option value دیگر کار نکند و گزینه‌های دارای یک - تکی رفتاری مشابه گزینه‌های -- داشته باشند.

به خاطر داشته باشید که شل (shell) آرگومان‌هایی را که به mpv ارسال می‌کنید تا حدی تجزیه کرده و دستکاری می‌کند. برای نمونه، ممکن است لازم باشد گزینه‌ها و نام‌های فایل را نقل‌قول (quote) یا گریزدهی (escape) کنید:

mpv "filename with spaces.mkv" --title="window title";

اگر تجزیه‌کننده زیرگزینه‌ها (suboption parser) درگیر باشد، ماجرا پیچیده‌تر می‌شود. تجزیه‌کننده زیرگزینه، چند گزینه را در یک رشته واحد قرار داده و آن‌ها را به جای استفاده از چند گزینه در سطح خط فرمان، به صورت یک‌باره به مؤلفه مربوطه ارسال می‌کند.

تجزیه‌کننده زیرگزینه می‌تواند رشته‌ها را با " و [...] نقل‌قول کند. علاوه بر این، شکل خاصی از نقل‌قول با %n% وجود دارد که در ادامه شرح داده شده است.

برای نمونه، فرض کنید فیلتر فرضی foo می‌تواند چندین گزینه دریافت کند:

mpv test.mkv --vf=foo:option1=value1:option2:option3=value3,bar

این دستور option1 و option3 را به فیلتر foo ارسال می‌کند، option2 را به عنوان پرچم (به طور ضمنی option2=yes) قرار می‌دهد، و پس از آن یک فیلتر bar اضافه می‌کند. اگر گزینه‌ای شامل فاصله یا نویسه‌هایی مانند , یا : باشد، باید آن‌ها را نقل‌قول کنید:

mpv '--vf=foo:option1="option value with spaces";,bar'

شل‌ها ممکن است برخی نقل‌قول‌ها را از رشته ارسالی به خط فرمان حذف کنند؛ بنابراین در این مثال رشته دو بار نقل‌قول شده است تا اطمینان حاصل شود که mpv نقل‌قول‌های " را دریافت می‌کند.

شکل نقل‌قول [...] هر آنچه را که بین [ و ] قرار دارد در بر می‌گیرد. این قالب در شل‌هایی که این نویسه‌ها را در میانه یک آرگومان تفسیر نمی‌کنند (مانند bash) مفید است. این نقل‌قول‌ها متوازن هستند (از mpv 0.9.0 به بعد): [ و ] تو در تو می‌شوند و نقل‌قول در آخرین ] که هیچ [ متناظری درون رشته نداشته باشد پایان می‌یابد. (برای نمونه، [a[b]c] به a[b]c تبدیل می‌شود.)

نحو نقل‌قول با طول ثابت برای استفاده در اسکریپت‌ها و برنامه‌های خارجی در نظر گرفته شده است.

این نحو با % آغاز می‌شود و ساختار زیر را دارد:

%n%string_of_length_n
مثال‌ها (Examples)

mpv '--vf=foo:option1=%11%quoted text' test.avi

یا درون یک اسکریپت:

mpv --vf=foo:option1=%`expr length "$NAME"`%"$NAME" test.avi

نکته: در صورت استفاده به همراه JSON-IPC، مقدار %n% طول بر حسب بایت‌های UTF-8 پس از رمزگشایی داده JSON است.

زیرگزینه‌های ارسال‌شده به API کلاینت نیز مشمول گریزدهی هستند. استفاده از mpv_set_option_string() دقیقاً مانند ارسال --name=data به خط فرمان است (اما بدون پردازش رشته توسط شل). برخی از گزینه‌ها به جای رشته‌های ساده، از ارسال مقادیر به شکلی ساختاریافته‌تر پشتیبانی می‌کنند و می‌توانند از دردسرهای تجزیه زیرگزینه‌ها جلوگیری کنند. برای نمونه، --vf از MPV_FORMAT_NODE پشتیبانی می‌کند، که به شما اجازه می‌دهد زیرگزینه‌ها را به صورت یک ساختار داده تودرتو از نگاشت‌ها (maps) و آرایه‌ها ارسال کنید..SS "مسیرها (Paths)"

هنگام انتقال مسیرها و نام‌های فایل دلخواه به mpv باید احتیاط کرد. برای نمونه، مسیرهایی که با - آغاز می‌شوند به عنوان گزینه تفسیر خواهند شد. به همین ترتیب، اگر مسیری حاوی توالی :// باشد، رشته‌ی پیش از آن ممکن است به عنوان پیشوند پروتکل تفسیر شود، حتی با وجود اینکه :// می‌تواند بخشی از یک مسیر معتبر در UNIX باشد. برای جلوگیری از بروز مشکل در مسیرهای دلخواه، باید مطمئن شوید مسیرهای مطلقی که به mpv داده می‌شوند با / آغاز شده، و پیشوند مسیرهای نسبی با ./ مشخص شده باشد.

استفاده از شبه‌پروتکل file:// توصیه نمی‌شود، زیرا شامل قواعد عجیب واگردانی گریز (unescaping) در URL است.

نام - به‌تنهایی به عنوان stdin تفسیر می‌شود و باعث می‌شود mpv کنترل‌های کنسول را غیرفعال کند. (که این امر آن را برای پخش داده‌های هدایت‌شده از طریق پایپ به stdin مناسب می‌سازد.)

آرگومان ویژه -- می‌تواند برای بازداشتن mpv از تفسیر آرگومان‌های بعدی به عنوان گزینه استفاده شود.

برای مسیرهایی که به زیرگزینه‌های mpv (گزینه‌هایی که چندین مقدار جداشده با : و , دارند) پاس داده می‌شوند، به دلیل نیاز به گریزدهی (escape) کاراکترهای خاص، وضعیت پیچیده‌تر می‌شود. برای رفع این مشکل، مسیر می‌تواند در نحو «طول ثابت» محصور شود، مانند %n%string_of_length_n (به بالا مراجعه کنید).

هنگام استفاده از API مربوط به libmpv، اکیداً باید از mpv_command_string برای فراخوانی دستور loadfile خودداری کنید، و در عوض مواردی مانند mpv_command را ترجیح دهید تا از نیاز به گریزدهی نام فایل جلوگیری شود.

همین موضوع زمانی که از API اسکریپت‌نویسی استفاده می‌کنید نیز صدق می‌کند؛ در آنجا نیز باید از mp.command پرهیز کنید، و در عوض APIهای دارای «پارامترهای جداگانه» مانند mp.commandv و mp.command_native را به کار ببرید.

برخی از گزینه‌های mpv برای مسیرهایی که با ~ آغاز می‌شوند معانی ویژه‌ای تفسیر می‌کنند، که یافتن پویای دایرکتوری‌های ویژه، مانند ارجاع به دایرکتوری خانگی کاربر فعلی یا دایرکتوری پیکربندی mpv را آسان می‌سازد.

هنگام استفاده از پیشوند ویژه ~، همیشه باید یک / در انتهای پیشوند مسیر ویژه وجود داشته باشد. به عبارت دیگر، ~ کار نمی‌کند، اما ~/ کار خواهد کرد.

مسیرها/کلمات کلیدی ویژه زیر در حال حاضر شناخته‌شده هستند:

هشدار:

توجه داشته باشید که اگر --no-config استفاده شود، تمام مسیرهای مبتنی بر «دایرکتوری پیکربندی» (~~/، ~~home/ و ~~global/) رشته‌هایی خالی خواهند بود.

این بدان معناست که ~~home/ به یک رشته خالی بسط می‌یابد، و زیرمسیرهایی مانند ~~home/foo/bar" به یک مسیر نسبی (foo/bar) گسترش پیدا می‌کنند که ممکن است آن چیزی نباشد که انتظار داشتید.

علاوه بر این، هر دستوری که در دایرکتوری‌های پیکربندی جستجو کند، در یافتن هر چیزی ناموفق خواهد بود، زیرا دایرکتوری‌ای برای جستجو وجود نخواهد داشت.

مطمئن شوید که اسکریپت‌های شما توانایی مدیریت این سناریوهای «بدون پیکربندی» را دارند.

نام مفهوم
~/ دایرکتوری خانگی کاربر فعلی (معادل ~/ و $HOME/ در محیط‌های ترمینال).
~~/ اگر زیرمسیر در هر یک از دایرکتوری‌های پیکربندی mpv وجود داشته باشد، مسیر فایل/دایرکتوری موجود بازگردانده می‌شود. در غیر این صورت معادل ~~home/ است.
~~home/ دایرکتوری پیکربندی mpv (برای نمونه ~/.config/mpv/).
~~global/ مسیر پیکربندی سراسری (مانند /etc/mpv)، در صورت وجود (نه در win32).
~~osxbundle/ مسیر منابع bundle در macOS (فقط macOS).
~~desktop/ مسیر دسکتاپ.
~~exe_dir/ مسیر دایرکتوری حاوی mpv.exe (برای مقاصد فایل پیکربندی، متغیر $MPV_HOME بر این اولویت خواهد داشت) (فقط win32).
~~cache/ مسیر داده‌های کَش (cache) برنامه (~/.cache/mpv/). در برخی پلتفرم‌ها، این مسیر با ~~home/ یکسان خواهد بود.
~~state/ مسیر داده‌های وضعیت (state) برنامه (~/.local/state/mpv/). در برخی پلتفرم‌ها، این مسیر با ~~home/ یکسان خواهد بود.
~~old_home/ استفاده نکنید.
گزینه‌های مختص هر فایل (Per-File Options)
هنگام پخش چند فایل، هر گزینه‌ای که در خط فرمان مشخص شود معمولاً بر تمام فایل‌ها تأثیر می‌گذارد. مثال:
0.0
3.5
mpv --a file1.mkv --b file2.mkv --c
168u
168u
box center;
l|l.
فایل گزینه‌های فعال
file1.mkv --a --b --c
file2.mkv --a --b --c

(این رفتار با MPlayer و mplayer2 تفاوت دارد.)

همچنین، اگر گزینه‌ای در زمان اجرا (از طریق دستورهای ورودی) تغییر کند، هنگام پخش فایل جدید بازنشانی نمی‌شود.

گاهی اوقات مفید است که گزینه‌ها به ازای هر فایل تغییر کنند. این کار با افزودن نشانگرهای ویژهٔ مختص هر فایل یعنی --{ و --} امکان‌پذیر است. (توجه داشته باشید که در برخی شل‌ها باید این نویسه‌ها را escape کنید.) مثال:

mpv --a file1.mkv --b --\{ --c file2.mkv --d file3.mkv --e --\} file4.mkv --f
فایل گزینه‌های فعال
file1.mkv --a --b --f
file2.mkv --a --b --f --c --d --e
file3.mkv --a --b --f --c --d --e
file4.mkv --a --b --f

علاوه بر این، هر گزینهٔ محلی فایل که در زمان اجرا تغییر یابد، با متوقف شدن پخش فایل فعلی بازنشانی می‌شود. اگر گزینهٔ --c در حین پخش file2.mkv تغییر کند، هنگام رفتن به file3.mkv بازنشانی خواهد شد. این موضوع فقط روی گزینه‌های محلی فایل اثر می‌گذارد؛ گزینهٔ --a در اینجا هرگز بازنشانی نمی‌شود..SS گزینه‌های فهرست (List Options)

برخی از گزینه‌ها که فهرستی از مقادیر گزینه را ذخیره می‌کنند، می‌توانند پسوندهای عملیاتی داشته باشند. به عنوان مثال، گزینهٔ --display-tags فهرستی از برچسب‌ها که با , جدا شده‌اند را می‌پذیرد، اما این گزینه همچنین به شما اجازه می‌دهد تا با --display-tags-append یک برچسب تکی را الحاق کنید، و نام برچسب برای مثال می‌تواند بدون نیاز به گریزدهی (escape)، حاوی یک , حرفی باشد.

فهرست‌های رشته با , جدا می‌شوند. این رشته‌ها توسط خود سامانهٔ گزینه‌ها تجزیه یا تفسیر نمی‌شوند. با این حال، بیشتر گزینه‌های فهرست مسیر یا فایل به‌جای , از : (یونیکس) یا ; (ویندوز) به عنوان جداکننده استفاده می‌کنند.

آن‌ها از عملیات‌های زیر پشتیبانی می‌کنند:

پسوند مفهوم
-set تنظیم فهرستی از موارد (با استفاده از جداکنندهٔ فهرست، گریز داده‌شده با بک‌اسلش)
-append الحاق یک مورد تکی (کاراکترهای گریز را تفسیر نمی‌کند)
-add الحاق ۱ یا چند مورد (ساختار نحوی یکسان با -set)
-pre افزودن ۱ یا چند مورد به ابتدا (ساختار نحوی یکسان با -set)
-clr پاک‌سازی گزینه (حذف تمام موارد)
-del حذف ۱ یا چند مورد در صورت وجود (ساختار نحوی یکسان با -set)
-remove حذف مورد در صورت وجود (کاراکترهای گریز را تفسیر نمی‌کند)
-toggle الحاق یک مورد، یا حذف آن در صورتی که از قبل وجود داشته باشد (بدون کاراکتر گریز)

پسوند -append به عنوان روشی ساده برای الحاق یک مورد تکی بدون نیاز به گریزدهی آرگومان در نظر گرفته شده است (ممکن است همچنان در سطح پوسته نیاز به گریزدهی داشته باشید).

یک فهرست کلید/مقدار، فهرستی از جفت‌رشته‌های کلید/مقدار است. در زبان‌های برنامه‌نویسی، این ساختار داده معمولاً نگاشت (map) یا دیکشنری (dictionary) نامیده می‌شود. ترتیب معمولاً اهمیتی ندارد، اگرچه در برخی موارد ممکن است ترتیب مهم باشد.

آن‌ها از عملیات‌های زیر پشتیبانی می‌کنند:

پسوند مفهوم
-set تنظیم فهرستی از موارد (با استفاده از , به عنوان جداکننده)
-append الحاق یک مورد تکی (تفسیر گریز برای کلید، بدون گریز برای مقدار)
-add الحاق ۱ یا چند مورد (ساختار نحوی یکسان با -set)
-clr پاک‌سازی گزینه (حذف تمام موارد)
-del حذف ۱ یا چند کلید در صورت وجود (ساختار نحوی یکسان با -set)
-remove حذف مورد با کلید در صورت وجود (کاراکترهای گریز را تفسیر نمی‌کند)

کلیدها در فهرست یکتا هستند. اگر کلیدی که از قبل وجود دارد تنظیم شود، کلید موجود پیش از الحاق مقدار جدید حذف می‌شود.

اگر می‌خواهید مقداری را بدون تفسیر کاراکترهای گریز یا , ارسال کنید، توصیه می‌شود از نگارش -append استفاده کنید. هنگام استفاده از libmpv، ترجیحاً از MPV_FORMAT_NODE_MAP استفاده نمایید؛ و هنگام استفاده از یک بک‌اند اسکریپت‌نویسی یا JSON IPC، از نوع دادهٔ ساختاریافتهٔ مناسب استفاده کنید.

پیش از mpv 0.33، نویسهٔ : نیز توسط -set به عنوان جداکننده شناخته می‌شد..SS گزینه‌های فهرست تنظیمات شیء (Object settings list options)

این یک نوع گزینهٔ بسیار پیچیده برای برخی گزینه‌ها مانند --af و --vf است. آن‌ها اغلب به گریزدهی پیچیده‌ای نیاز دارند. برای جزئیات به بخش VIDEO FILTERS مراجعه کنید.

آن‌ها از عملیات‌های زیر پشتیبانی می‌کنند:

پسوند معنی
-set تنظیم فهرستی از موارد (با استفاده از , به عنوان جداکننده)
-append افزودن یک مورد به انتها
-add افزودن ۱ یا چند مورد به انتها (با همان ساختار دستوری -set)
-pre افزودن ۱ یا چند مورد به ابتدا (با همان ساختار دستوری -set)
-clr پاکسازی گزینه (حذف همهٔ موارد)
-remove حذف ۱ یا چند مورد در صورت وجود (با همان ساختار دستوری -set)
-toggle افزودن یک مورد، یا حذف آن در صورتی که از قبل وجود داشته باشد
-help شبه‌عملیاتی که یک متن راهنما را در ترمینال چاپ می‌کند

بدون پسوند، عملیاتی که به‌طور پیش‌فرض استفاده می‌شود -set است.

برخی از عملیات‌ها مانند -add و -pre چندین مورد را مشخص می‌کنند، اما توجه داشته باشید که ممکن است نیاز به گریزدهی آرگومان‌ها داشته باشید. -append تنها یک موردِ گریز داده‌نشده را می‌پذیرد (بنابراین جداکنندهٔ , تفسیر نخواهد شد و به عنوان بخشی از مقدار ارسال می‌شود).

برخی گزینه‌ها (مانند --sub-file، --audio-file و --glsl-shader) نام‌های مستعاری برای گزینهٔ اصلی با اقدام -append هستند. برای مثال، --sub-file یک نام مستعار برای --sub-files-append است.

گزینه‌هایی از این نوع را می‌توان در زمان اجرا با استفاده از دستور change-list تغییر داد، که پسوند (بدون علامت -) را به عنوان یک پارامتر عملیات جداگانه دریافت می‌کند.

یک فهرست تنظیمات شیء می‌تواند حداکثر تا ۱۰۰ عنصر را در خود نگه دارد..SH "فایل‌های پیکربندی (CONFIGURATION FILES)"

می‌توانید تمام گزینه‌ها را در فایل‌های پیکربندی قرار دهید که در هر بار اجرای mpv خوانده می‌شوند. فایل پیکربندی سراسری سیستم 'mpv.conf' در دایرکتوری پیکربندی شما قرار دارد (برای نمونه /etc/mpv یا /usr/local/etc/mpv)، و فایل مختص کاربر ~/.config/mpv/mpv.conf است. برای جزئیات و موارد خاص هر پلتفرم (به‌ویژه مسیرهای Windows) بخش FILES را ببینید.

گزینه‌های مختص کاربر بر گزینه‌های سراسری سیستم اولویت دارند و گزینه‌های داده‌شده در خط فرمان بر هر دو اولویت دارند. ساختار نوشتاری فایل‌های پیکربندی به صورت option=value است. هر چیزی پس از یک # به عنوان کامنت در نظر گرفته می‌شود. گزینه‌هایی که بدون مقدار کار می‌کنند را می‌توان با تنظیم آن‌ها روی yes فعال و با تنظیم روی no غیرفعال کرد، و اگر مقدار حذف شود، yes به صورت ضمنی در نظر گرفته می‌شود. حتی زیرگزینه‌ها را نیز می‌توان به همین شیوه مشخص کرد.

نمونه فایل پیکربندی
# اجازه داده نشود پنجره‌های جدید از اندازه صفحه نمایش بزرگ‌تر شوند.
autofit-larger=100%x100%
# فعال‌سازی رمزگشایی سخت‌افزاری در صورت در دسترس بودن؛ =yes به صورت ضمنی فرض می‌شود.
hwdec
# نیازی به گریز دادن نویسه‌های فاصله نیست.
osd-playing-msg=File: ${filename}

این کار همانند گزینه‌های خط فرمان انجام می‌شود. یک مدخل پیکربندی را می‌توان با "، ' و همچنین با نحو با طول ثابت (%n%) که پیش‌تر اشاره شد، درون نقل‌قول قرار داد. این مانند ارسال دقیق محتوای رشته نقل‌قول‌شده به عنوان یک گزینه خط فرمان است. دنباله‌های گریز به سبک C در حال حاضر در این سطح تفسیر نمی‌شوند، اگرچه برخی گزینه‌ها این کار را به صورت دستی انجام می‌دهند (این وضعیت نامطلوب است و احتمالاً در نقطه‌ای باید تغییر کند). در اینجا پوسته دخالتی ندارد، بنابراین مقادیر گزینه‌ها تنها برای گریز از # در هر کجای مقدار، "، ' یا % در ابتدای مقدار، و نویسه‌های فاصله در ابتدا و انتهای آن، نیاز به نقل‌قول دارند.

تقریباً تمام گزینه‌های خط فرمان را می‌توان در فایل پیکربندی قرار داد. در اینجا یک راهنمای کوچک آمده است:

گزینه مدخل فایل پیکربندی
--flag flag
-opt val opt=val
--opt=val opt=val
-opt "has spaces" opt=has spaces
شما همچنین می‌توانید فایل‌های پیکربندی ویژه هر فایل را بنویسید. اگر می‌خواهید برای فایلی به نام 'video.avi' یک فایل پیکربندی داشته باشید، فایلی به نام 'video.avi.conf' حاوی گزینه‌های ویژه آن فایل ایجاد کرده و در ~/.config/mpv/ قرار دهید. همچنین می‌توانید فایل پیکربندی را در همان دایرکتوری فایلی که قرار است پخش شود قرار دهید. هر دو حالت مستلزم این است که گزینه --use-filedir-conf را (خواه در خط فرمان یا در فایل پیکربندی سراسری خود) تنظیم کنید. اگر یک فایل پیکربندی ویژه فایل در همان دایرکتوری یافت شود، هیچ پیکربندی ویژه فایلی از ~/.config/mpv بارگذاری نمی‌شود. علاوه بر این، گزینه --use-filedir-conf فایل‌های پیکربندی ویژه دایرکتوری را نیز فعال می‌کند. برای این منظور، mpv ابتدا تلاش می‌کند یک mpv.conf را از همان دایرکتوریِ فایل در حال پخش بارگذاری کند و سپس تلاش می‌کند هرگونه پیکربندی ویژه فایل را بارگذاری نماید.
نمایه‌ها
برای آسان‌تر شدن کار با پیکربندی‌های گوناگون، می‌توان نمایه‌هایی را در فایل‌های پیکربندی تعریف کرد. یک نمایه با نام خود در براکت آغاز می‌شود، مانند [my-profile]. تمامی گزینه‌های پس از آن بخشی از این نمایه خواهند بود. یک توضیح (که با --profile=help نمایش داده می‌شود) را می‌توان با گزینه profile-desc تعریف کرد. برای پایان دادن به یک نمایه، نمایه دیگری را آغاز کنید یا از نام نمایه default برای ادامه کار با گزینه‌های عادی استفاده نمایید.
می‌توانید نمایه‌ها را با --profile=help فهرست کنید، و محتوای یک نمایه را با --show-profile=<name> نمایش دهید (<name> را با نام نمایه جایگزین کنید). می‌توانید نمایه‌ها را هنگام شروع با گزینه --profile=<name> یا در زمان اجرا با دستور apply-profile <name> اعمال کنید.
0.0
3.5
"مثال فایل پیکربندی mpv به همراه نمایه‌ها"
0.0
3.5
# normal top-level option
fullscreen=yes
# a profile that can be enabled with --profile=big-cache
[big-cache]
cache=yes
demuxer-max-bytes=512MiB
demuxer-readahead-secs=20
[network]
profile-desc="profile for content over network"
force-window=immediate
# you can also include other profiles
profile=big-cache
[reduce-judder]
video-sync=display-resample
interpolation=yes
# using a profile again extends it
[network]
demuxer-max-back-bytes=512MiB
# reference a builtin profile
profile=fast
168u
168u
168u
168u
نمایه‌های زمان اجرا
نمایه‌ها را می‌توان در زمان اجرا با دستور apply-profile تنظیم کرد. از آنجا که این عملیات "تخریبی" است (هر مورد در یک نمایه صرفاً به عنوان یک گزینه تنظیم می‌شود و مقدار قبلی را بازنویسی می‌کند)، نمی‌توانید به سادگی نمایه‌ها را دوباره فعال و غیرفعال کنید.
به عنوان یک راهکار نسبی، روشی وجود دارد که نمایه‌ها مقادیر قبلی گزینه‌ها را پیش از بازنویسی با مقادیر نمایه ذخیره کنند، و سپس در زمان دیگری با استفاده از apply-profile <profile-name> restore مقادیر قبلی را بازیابی نمایند.
این قابلیت را می‌توان با گزینه profile-restore فعال کرد که یکی از گزینه‌های زیر را می‌پذیرد:
0.0
3.5
0.0
default
هیچ کاری انجام نمی‌دهد و هیچ چیزی قابل بازیابی نیست (پیش‌فرض).
copy
هنگام اعمال یک نمایه، مقادیر قبلی تمام گزینه‌های نمایه پیش از مقداردهی از طریق نمایه، در یک نسخه پشتیبان کپی می‌شوند. این گزینه‌ها هنگام بازیابی با استفاده از نسخه پشتیبان به مقادیر قبلی خود بازنشانی می‌شوند.
هر نمایه فهرست مقادیر پشتیبان‌گیری‌شده مخصوص به خود را دارد. اگر نسخه پشتیبان از قبل موجود باشد (برای نمونه اگر apply-profile name بیش از یک بار پشت سر هم فراخوانی شده باشد)، نسخه پشتیبانِ موجود تغییری نمی‌کند. عملیات بازیابی نسخه پشتیبان را حذف خواهد کرد.
دانستن این نکته مهم است که بازیابی، تنظیم یک گزینه را "undo" (واگرد) نمی‌کند، بلکه صرفاً مقدار قبلی گزینه را کپی می‌کند. برای مثال vf-add را در نظر بگیرید که یک مدخل را به vf اضافه می‌کند. این سازوکار به سادگی کل فهرست vf را کپی می‌کند، و هنگام بازیابی معکوس vf-add (که vf-remove خواهد بود) را اجرا _نمی‌کند_.
توجه داشته باشید که اگر یک نمایه شامل نمایه‌های بازگشتی باشد (از طریق گزینه profile)، با گزینه‌های موجود در این نمایه‌های بازگشتی به گونه‌ای رفتار می‌شود که گویی بخشی از این نمایه بوده‌اند. هنگام ایجاد یا استفاده از نسخه پشتیبان، از فهرست پشتیبان نمایه ارجاع‌شده استفاده نمی‌شود. بازیابی یک نمایه، نمایه‌های ارجاع‌شده را بازیابی نمی‌کند، بلکه تنها گزینه‌های نمایه‌های ارجاع‌شده را (گویی بخشی از نمایه اصلی بوده‌اند) بازیابی می‌کند.
copy-equal
مشابه copy است، اما یک گزینه را تنها در صورتی بازیابی می‌کند که مقداری برابر با مقدار اعمال‌شده توسط نمایه داشته باشد. این حالت تلاش می‌کند وضعیتی را مدیریت کند که در آن کاربر نمی‌خواهد گزینه پس از تغییر تعاملی بازنشانی شود.
168u
168u
168u
0.0
3.5
"مثال"
0.0
3.5
[something]
profile-restore=copy-equal
vf-add=rotate=PI/2 # rotate by 90 degrees
168u
168u
سپس اجرای این دستورها رفتاری مطابق با توضیحات به همراه خواهد داشت:
0.0
3.5
set vf vflip
apply-profile something
vf add hflip
apply-profile something
# vf == vflip,rotate=PI/2,hflip,rotate=PI/2
apply-profile something restore
# vf == vflip
168u
168u
168u
نمایه‌های خودکار شرطی
نمایه‌هایی که گزینهٔ profile-cond برای آن‌ها تنظیم شده باشد، در صورت تطابق شرط مربوطه، به‌طور خودکار اعمال می‌شوند (مگر اینکه نمایه‌های خودکار غیرفعال شده باشند). این گزینه رشته‌ای را می‌گیرد که به عنوان عبارت Lua تفسیر می‌شود. اگر ارزیابی عبارت نتیجه‌ای صادق (truthy) به بار آورد، نمایه اعمال می‌شود. اگر عبارت دچار خطا شود یا به مقداری کاذب (falsy) ارزیابی گردد، نمایه اعمال نخواهد شد. اجرای این کد Lua در محیط ایزوله (sandbox) انجام نمی‌شود.
هر متغیری در عبارات شرطی می‌تواند به مشخصه‌ها اشاره کند. اگر یک شناسه از قبل توسط Lua یا mpv تعریف نشده باشد، به عنوان یک مشخصه تفسیر می‌شود. برای نمونه، pause وضعیت فعلی مکث را برمی‌گرداند. شما نمی‌توانید از این طریق به مشخصه‌های دارای - اشاره کنید چرا که عمل تفریق را نشان می‌دهد، اما اگر نام متغیر حاوی نویسه‌های _ باشد، آن‌ها به - تبدیل می‌شوند. برای نمونه، playback_time مشخصهٔ playback-time را برمی‌گرداند.
روشی مطمئن‌تر برای دسترسی به مشخصه‌ها استفاده از p.property_name یا get("property-name", default_value) است. جادوی تبدیل خودکار متغیر به مشخصه در صورتی که شناسهٔ جدیدی با همان نام معرفی شود دچار اختلال خواهد شد (برای نمونه، اگر تابعی با نام pause() اضافه شود، pause به جای مقدار مشخصهٔ pause، مقدار یک تابع را برمی‌گرداند).
توجه داشته باشید که اگر مشخصه‌ای در دسترس نباشد، مقدار nil را برمی‌گرداند، که در صورت استفاده در عبارات می‌تواند باعث بروز خطا شود. این موارد در حالت پرحرف (verbose) ثبت می‌شوند و عبارت نادرست (false) تلقی می‌گردد.
هرگاه مشخصه‌ای که در شرط نمایه به آن ارجاع داده شده تغییر کند، شرط دوباره ارزیابی می‌شود. اگر مقدار بازگشتی شرط از کاذب یا خطا به صادق تغییر یابد، نمایه اعمال می‌گردد.
این سازوکار تلاش می‌کند تا به محض تغییر شرط از صادق به کاذب یا خطا، نمایه‌ها را "لغو اعمال" کند. اگر می‌خواهید از این قابلیت استفاده کنید، باید profile-restore را برای نمایه تنظیم نمایید. راهکار دیگر این است که نمایهٔ دیگری با شرط معکوس برای لغو اثرات نمایهٔ قبلی ایجاد کنید.
امکان استفاده از نمایه‌های بازگشتی وجود دارد، اما ارجاع به سایر نمایه‌های شرطی در داخل یک نمایهٔ شرطی توصیه نمی‌شود، زیرا می‌تواند به رفتارهای پیچیده و غیرشهودی منجر شود.
0.0
3.5
"مثال"
مضحک کردن فقط ویدیوهای HD:
0.0
3.5
[something]
profile-desc=HD video sucks
profile-cond=width >= 1280
hue=-50
168u
168u
روشن‌تر کردن تنها ویدیوهایی که مسیر آن‌ها شامل "youtube" یا "youtu.be" است:
0.0
3.5
[youtube]
profile-cond=path:find('youtu%.?be')
gamma=20
168u
168u
اگر می‌خواهید در صورت بازگشت مجدد شرط به مقدار نادرست (false)، نمایه بازگردانی شود، می‌توانید profile-restore را تنظیم کنید:
0.0
3.5
[something]
profile-desc=Mess up video when entering fullscreen
profile-cond=fullscreen
profile-restore=copy
vf-add=rotate=PI/2 # rotate by 90 degrees
168u
168u
این کار هنگام ورود به حالت تمام‌صفحه، فیلتر rotate را به زنجیرهٔ فیلترهای ویدیو اضافه می‌کند. هنگام خروج از تمام‌صفحه، گزینهٔ vf روی مقداری که پیش از ورود به تمام‌صفحه داشت تنظیم می‌شود. توجه داشته باشید که این کار همچنین هر فیلتر دیگری را که در طول حالت تمام‌صفحه توسط کاربر اضافه شده باشد حذف خواهد کرد. اجتناب از این وضعیت دشوارتر است و برای نمونه با افزودن یک نمایهٔ دوم با شرط و عملیات معکوس قابل حل است:
0.0
3.5
[something]
profile-cond=fullscreen
vf-add=@rot:rotate=PI/2
[something-inv]
profile-cond=not fullscreen
vf-remove=@rot
168u
168u
168u
168u
هشدار:
0.0
3.5
هر بار که یکی از مشخصه‌های دخیل تغییر کند، شرط دوباره ارزیابی می‌شود. برای نمونه، اگر شرط شما از p.playback_time استفاده کند، شرط تقریباً در هر فریم ویدیو بازبینی و ارزیابی می‌شود. این عمل احتمالاً کند خواهد بود.
168u
168u
این ویژگی توسط یک اسکریپت داخلی Lua مدیریت می‌شود. شرط‌ها به عنوان کد Lua در این اسکریپت اجرا می‌شوند. محیط آن دست‌کم شامل موارد زیر است:
0.0
(function environment table)
هر تابع Lua دارای یک جدول محیط است. این جدول برای دسترسی به شناسه‌ها استفاده می‌شود. هیچ نماد نام‌گذاری‌شده‌ای در Lua برای آن وجود ندارد؛ این جدول ضمنی است.
این محیط دسترسی‌های "جادویی" به مشخصه‌های mpv را انجام می‌دهد. اگر شناسه‌ای از قبل در _G تعریف نشده باشد، مشخصهٔ mpv هم‌نام با آن بازیابی می‌شود. هر بار تکرار _ در نام، پیش از خواندن مشخصه با - جایگزین می‌شود. مقدار بازگشتی دقیقاً همان مقداری است که توسط mp.get_property_native(name) دریافت می‌شود. در ساختار داخلی، به جای آن از حافظهٔ پنهان مقادیر مشخصه که از طریق پایش مشخصه به‌روز می‌شود استفاده می‌گردد؛ بنابراین مشخصه‌هایی که قابل پایش نیستند، برای همیشه روی مقدار اولیه‌شان ثابت می‌مانند.
اگر می‌خواهید به مشخصه‌هایی دسترسی داشته باشید که واقعاً حاوی _ در نام خود هستند، از get() استفاده کنید (که نویسه‌گردانی انجام نمی‌دهد).
از نظر داخلی، جدول محیط دارای یک فراروش (metamethod) با نام __index است که منطق دسترسی را اجرا می‌کند.
p
یک جدول "جادویی" مشابه با جدول محیط. برعکس مورد قبلی، این جدول اولویتی به دسترسی به متغیرهای تعریف‌شده در _G نمی‌دهد - بلکه همواره به مشخصه‌ها دسترسی پیدا می‌کند.
get(name [, def])
یک مشخصه را خوانده و مقدار آن را برمی‌گرداند. اگر مقدار مشخصه nil باشد (برای نمونه اگر مشخصه وجود نداشته باشد)، مقدار def برگردانده می‌شود.
این تابع در ظاهر شبیه به mp.get_property_native(name) است. تفاوت مهم این است که به حافظهٔ پنهان مشخصه‌ها دسترسی یافته و منطق تشخیص تغییرات را فعال می‌کند (که برای رفتار پویای زمان اجرای نمایه‌های خودکار ضروری است). همچنین، این تابع مقداری را به عنوان دومین مقدار بازگشتی خطا بازنمی‌گرداند.
جدول‌های "جادویی" یادشده در بالا از این تابع به عنوان زیرساخت استفاده می‌کنند. این تابع نویسه‌گردانی _ را انجام نمی‌دهد.
168u
علاوه بر این، همان محیطی که در یک اسکریپت خام Lua در mpv وجود دارد در اینجا نیز فراهم است. برای نمونه، math تعریف شده است و امکان دسترسی به کتابخانهٔ ریاضی استاندارد Lua را می‌دهد.
هشدار:
0.0
3.5
این ویژگی ممکن است در آینده دستخوش تغییرات نامحدود شود. ممکن است مجبور شوید با به‌روزرسانی‌های mpv، نمایه‌های خود را تطبیق دهید.
168u
برخی پروفایل‌ها با استفاده از سازوکاری قدیمی (legacy) به‌طور خودکار بارگذاری می‌شوند.
مثال زیر این موضوع را نشان می‌دهد:
0.0
3.5
"بارگذاری خودکار پروفایل (Auto profile loading)"
0.0
3.5
[extension.mkv]
profile-desc="profile for .mkv files"
vf=vflip
168u
168u
168u
168u
نام پروفایل از الگوی type.name پیروی می‌کند، که در آن type می‌تواند
protocol برای پروتکل ورودی/خروجیِ در حال استفاده باشد (به --list-protocols مراجعه کنید)،
و extension برای پسوند مسیر فایل در حال پخش فعلی باشد
(نه فرمت فایل).
این ویژگی بسیار محدود است و منسوخ‌شدهٔ ضمنی (soft-deprecated) تلقی می‌شود.
از پروفایل‌های خودکار شرطی استفاده کنید.
"استفاده از mpv در سایر برنامه‌ها یا اسکریپت‌ها (USING MPV FROM OTHER PROGRAMS OR SCRIPTS)"
سه گزینه برای استفاده از mpv در سایر برنامه‌ها یا اسکریپت‌ها وجود دارد:
0.0
3.5
0.0
1. 3
فراخوانی آن به‌عنوان یک پردازهٔ UNIX. اگر این کار را انجام می‌دهید، خروجی ترمینال را تجزیه (parse) نکنید.
خروجی ترمینال برای انسان‌ها در نظر گرفته شده است و ممکن است در هر زمان تغییر کند. علاوه بر
این، رفتار خود ترمینال نیز ممکن است در هر زمان تغییر کند. سازگاری را نمی‌توان تضمین کرد.
کد شما باید حتی اگر --terminal=no را ارسال کنید نیز کار کند. سعی نکنید با
ارسال کدهای کنترلی ترمینال به stdin مربوط به mpv، ورودی کاربر را شبیه‌سازی کنید.
اگر به کنترل تعاملی نیاز دارید، استفاده از --input-ipc-server یا
--input-ipc-client توصیه می‌شود. این قابلیت دسترسی به JSON IPC را
از طریق unix domain socketها (یا named pipeها در Windows) فراهم می‌کند.
بسته به کاری که انجام می‌دهید، فرستادن --no-config یا --config-dir ممکن است
ایدهٔ خوبی برای جلوگیری از تداخل با پیکربندی عادی کاربری mpv باشد که برای
پخش از طریق CLI طراحی شده است.
استفاده از --input-ipc-server یا --input-ipc-client برای مقاصدی مانند
کنترل از راه دور نیز مناسب است (با این حال، خود پروتکل IPC "امن" نیست و
چنین هدفی هم ندارد).
2. 3
استفاده از libmpv. این روش عموماً زمانی توصیه می‌شود که از mpv به‌عنوان پسانهٔ (backend)
پخش برای یک برنامهٔ کاملاً مجزا استفاده می‌شود. C API ارائه‌شده بسیار به
سازوکارهای CLI و API اسکریپت‌نویسی نزدیک است.
توجه داشته باشید که هرچند libmpv پیش‌فرض‌های متفاوتی دارد، می‌توان آن را طوری
پیکربندی کرد که دقیقاً مانند پخش‌کنندهٔ CLI عمل کند (به‌جز اینکه تجزیهٔ خط فرمان
در دسترس نیست).
بخش EMBEDDING INTO OTHER PROGRAMS (LIBMPV) را ببینید.
3. 3
به‌عنوان یک اسکریپت کاربری (LUA SCRIPTING، JAVASCRIPT، C PLUGINS). این روش
زمانی توصیه می‌شود که هدف "بهبود" پخش‌کنندهٔ CLI باشد. اسکریپت‌ها به
کل API کلاینت mpv دسترسی دارند.
این روش استاندارد برای ایجاد افزونه‌های شخص ثالث (third-party) برای پخش‌کننده است.
168u
168u
168u
همهٔ این روش‌ها به API کلاینت دسترسی دارند، که مجموعه‌ای از سازوکارهای مختلفِ
ارائه‌شده توسط هستهٔ پخش‌کننده است، همان‌گونه که در اینجا مستند شده است: OPTIONS،
List of Input Commands، Properties، List of events (همچنین C API را ببینید)،
Hooks.
"گرفتن اسکرین‌شات (TAKING SCREENSHOTS)"
تصویربرداری (اسکرین‌شات) از فایل در حال پخش می‌تواند با استفاده از دستور حالت ورودی 'screenshot'
انجام شود، که به‌طور پیش‌فرض به کلید s متصل است. فایل‌هایی با نام
mpv-shotNNNN.jpg در دایرکتوری کاری با استفاده از نخستین شمارهٔ در دسترس
ذخیره خواهند شد - هیچ فایلی بازنویسی نخواهد شد. در حالت pseudo-GUI،
اسکرین‌شات در مکان دیگری ذخیره خواهد شد. به بخش PSEUDO GUI MODE مراجعه کنید.
یک اسکرین‌شات معمولاً شامل محتوای ویدیوییِ مقیاس‌بندی‌نشده در انتهای زنجیرهٔ
فیلترهای ویدیو و زیرنویس‌ها خواهد بود. به‌طور پیش‌فرض، کلید S بدون
زیرنویس اسکرین‌شات می‌گیرد، در حالی که s زیرنویس‌ها را نیز شامل می‌شود.
برخلاف MPlayer، به فیلتر ویدیویی screenshot نیازی نیست. این فیلتر هرگز
در mpv لازم نبوده و حذف شده است..SH "خط وضعیت پایانه (TERMINAL STATUS LINE)"
در طول پخش، mpv وضعیت پخش را روی ترمینال نمایش می‌دهد. ساختار آن چیزی شبیه به این است:
0.0
3.5
AV: 00:03:12 / 00:24:25 (13%) A-V: -0.000
168u
168u
خط وضعیت را می‌توان با استفاده از گزینهٔ --term-status-msg بازنویسی کرد.
در ادامه فهرستی از مواردی که ممکن است در خط وضعیت ظاهر شوند آورده شده است. ویژگی‌های ورودی (properties) که می‌توانند برای دریافت دستی همین اطلاعات استفاده شوند نیز ذکر شده‌اند.
0.0
• 2
AV: یا V: (فقط ویدیو) یا A: (فقط صدا)
• 2
موقعیت زمانی فعلی در قالب HH:MM:SS (ویژگی playback-time)
• 2
مدت‌زمان کل فایل (اگر نامشخص باشد نمایش داده نمی‌شود) (ویژگی duration)
• 2
سرعت پخش، برای نمونه x2.0. تنها در صورتی قابل مشاهده است که سرعت روی حالت عادی نباشد. این سرعت درخواست‌شده توسط کاربر است و نه سرعت واقعی (معمولاً باید یکسان باشند، مگر اینکه سرعت پخش بیش از حد کُند باشد). (ویژگی speed.)
• 2
درصد پیشرفت پخش، برای نمونه (13%). چه مقدار از فایل پخش شده است. معمولاً از روی موقعیت زمانی پخش و مدت‌زمان کل محاسبه می‌شود، اما در صورت در دسترس نبودن این موارد می‌تواند به روش‌های دیگر (مانند موقعیت بایتی) تنزل یابد. (ویژگی percent-pos.)
• 2
همگام‌سازی صدا و تصویر به‌صورت A-V: 0.000. این مقدار اختلاف زمانی میان صدا و تصویر است. در حالت عادی باید 0 یا نزدیک به 0 باشد. اگر این مقدار در حال افزایش باشد، ممکن است نشان‌دهندهٔ وجود مشکلی در پخش باشد. (ویژگی avsync.)
• 2
تغییر کل همگام‌سازی صدا/تصویر، برای نمونه ct: -0.417. معمولاً نامرئی است. اگر صدای "از دست رفته" وجود داشته باشد، یا نتوان به اندازهٔ کافی فریم‌ها را حذف کرد، می‌تواند ظاهر شود. معمولاً این مورد نشان‌دهندهٔ یک مشکل است. (ویژگی total-avsync-change.)
• 2
وضعیت کدگذاری در {...}، تنها در حالت کدگذاری نمایش داده می‌شود.
• 2
وضعیت همگام‌سازی نمایشگر (Display sync). اگر همگام‌سازی نمایشگر فعال باشد (ویژگی display-sync-active)، این بخش DS: 2.500/13 را نمایش می‌دهد که عدد اول میانگین تعداد vsyncها به‌ازای هر فریم ویدیو است (برای نمونه 2.5 هنگام پخش ویدیوهای 24Hz روی نمایشگرهای 60Hz) که اگر نسبت به‌طور دقیق رُند نشود یا فریم‌هایی با زمان‌بندی نادرست وجود داشته باشند ممکن است دچار نوسان شود (vsync-ratio)، و عدد دوم تعداد تخمینی vsyncهایی است که بیش از حد طول کشیده‌اند (ویژگی vo-delayed-frame-count). مورد دوم یک برآورد تقریبی (heuristic) است، زیرا معمولاً نمی‌توان این موضوع را با قطعیت کامل مشخص کرد.
• 2
فریم‌های حذف‌شده (Dropped frames)، برای نمونه Dropped: 4. تنها در صورتی نمایش داده می‌شود که تعداد آن‌ها صفر نباشد. اگر نرخ فریم ویدیو بیشتر از نرخ تازه‌سازی نمایشگر باشد، یا اگر پردازش تصویر (رندر) ویدیو بیش از حد کند باشد، می‌تواند افزایش یابد. همچنین ممکن است در هنگام لکنت‌های جزئی ("hiccups") و زمانی که فریم ویدیو نتواند به‌موقع نمایش داده شود افزایش یابد. (ویژگی frame-drop-count.)
اگر رمزگشا (decoder) فریم‌ها را رها کند، تعداد فریم‌های حذف‌شده توسط رمزگشا نیز به صفحه اضافه می‌شود؛ برای نمونه: Dropped: 4/34. این اتفاق تنها زمانی رخ می‌دهد که حذف فریم توسط رمزگشا با گزینه‌های --framedrop فعال شده باشد. (ویژگی decoder-frame-drop-count.)
• 2
وضعیت حافظهٔ موقت (Cache)، برای نمونه Cache: 2s/134KB. در صورت فعال بودن کش جریان (stream cache) قابل مشاهده است. مقدار اول میزان ویدیوی بافرشده در demuxer را به ثانیه نشان می‌دهد، و مقدار دوم اندازهٔ تخمینی داده‌های بافرشده را به کیلوبایت نمایش می‌دهد. (ویژگی‌های demuxer-cache-duration و demuxer-cache-state.)
168u
"پخش با تأخیر کم (LOW LATENCY PLAYBACK)"
برنامهٔ mpv برای پخش عادی ویدیو بهینه‌سازی شده است، به این معنی که تلاش می‌کند تا جای ممکن داده‌ها را تا میزانی که منطقی به نظر می‌رسد بافر کند. این رفتار باعث افزایش تأخیر (latency) خواهد شد. کاهش تأخیر تنها با غیرفعال کردن صریح قابلیت‌هایی که تأخیر را افزایش می‌دهند امکان‌پذیر است.
نمایهٔ پیش‌فرض low-latency تلاش می‌کند تا برخی از گزینه‌هایی را که می‌توانند تأخیر را کاهش دهند اعمال کند. می‌توانید از --profile=low-latency برای اعمال همهٔ آن‌ها استفاده کنید. می‌توانید محتویات آن را با دستور --show-profile=low-latency مشاهده کنید (برخی از این گزینه‌ها بسیار فنی و مبهم هستند و ممکن است در هر نسخه از mpv تغییر کنند).
توجه داشته باشید که برخی از این گزینه‌ها ممکن است کیفیت پخش را کاهش دهند.
بیشتر تأخیرها معمولاً به دلیل رفتارهای زمان‌بندی نامناسب رخ می‌دهد. می‌توانید این زمان‌بندی را با --untimed غیرفعال کنید، اما احتمالاً فرایند پخش با مشکل مواجه خواهد شد، مگر اینکه جریان ویدیویی بدون صدا باشد و داده‌های ورودی با نرخ ثابتی به پخش‌کننده تغذیه شوند.
مشکل رایج دیگر مربوط به جریان‌های تصویری MJPEG است. این جریان‌ها نرخ فریم صحیح را اعلام نمی‌کنند. استفاده از --untimed یا --correct-pts=no --container-fps-override=60 ممکن است در این مورد کمک‌کننده باشد.
در پخش‌های زنده (livestreams)، داده‌ها ممکن است به دلیل متوقف کردن موقت جریان، سرعت پخش کمی پایین‌تر، یا مکث‌های ناشی از "بافر شدن" انباشته شوند. در صورت فعال بودن کش demuxer، می‌توان از این موارد به‌صورت دستی عبور کرد. دستور آزمایشی drop-buffers می‌تواند برای دور ریختن تمامی داده‌های بافرشده استفاده شود، هرچند که عملکردی بسیار مخل و ناگهانی دارد.
در برخی موارد، تنظیم دستی اندازهٔ بافرهای TCP و موارد مشابه می‌تواند به کاهش تأخیر کمک کند.
گزینه‌های دیگری که می‌توان آن‌ها را امتحان کرد:
0.0
• 2
--opengl-glfinish=yes، می‌تواند بافرینگ در درایور گرافیک را کاهش دهد
• 2
--opengl-swapinterval=0، عملکردی مشابه دارد
• 2
--vo=xv، عملکردی مشابه دارد
• 2
در صورت نبود صدا، گزینهٔ --framedrop=no --speed=1.01 ممکن است برای منابع زنده کمک کند (نتایج ممکن است متغیر باشد)
"ادامه پخش (RESUMING PLAYBACK)"
برنامه mpv قادر است موقعیت پخش فایل در حال اجرا را ذخیره کرده و دفعه بعد که آن فایل پخش می‌شود، پخش را از همان نقطه ادامه دهد. این کار با دستورهای quit-watch-later (به‌طور پیش‌فرض متصل به Shift+Q) و write-watch-later-config و همچنین با گزینه --save-position-on-quit انجام می‌شود.
تفاوت بین خروج همیشگی با کلید اختصاص‌یافته به quit-watch-later و استفاده از --save-position-on-quit در این است که مورد دوم، موقعیت پخش را حتی در صورتی که mpv با روشی غیر از کلید میانبر بسته شود (مانند کلیک روی دکمه بستن در نوار عنوان پنجره) نیز ذخیره می‌کند. با این حال اگر mpv به‌طور ناگهانی متوقف شود و زمان کافی برای ذخیره نداشته باشد، موقعیت ذخیره نخواهد شد؛ به عنوان مثال، اگر سیستم خود را بدون بستن قبلی mpv خاموش کنید.
همچنین mpv گزینه‌هایی غیر از موقعیت پخش را که پس از آغاز پخش تغییر یافته‌اند، مانند بلندی صدا و صدا/زیرنویس‌های انتخاب‌شده، ذخیره کرده و مقادیر آن‌ها را دفعه بعدی که فایل پخش می‌شود بازیابی می‌کند. اینکه چه گزینه‌هایی ذخیره شوند را می‌توان با گزینه --watch-later-options پیکربندی کرد.
هنگام پخش چند ورودی در فهرست پخش (playlist)، mpv بررسی می‌کند که آیا فایلی دارای پیکربندی ذخیره‌شده برای ادامه پخش هست یا خیر، و اگر موردی پیدا کند پخش را از همان نقطه از سر می‌گیرد. برای مثال، اگر در قسمت ۵ از یک سریال از quit-watch-later استفاده کنید و بعداً همه قسمت‌ها را پخش کنید، mpv به‌طور خودکار پخش را از قسمت ۵ از سر خواهد گرفت.
گزینه‌های بیشتر برای پیکربندی این قابلیت در بخش Watch Later فهرست شده‌اند.
"پروتکل‌ها (PROTOCOLS)"
mpv://...
0.0
3.5
پروتکل mpv. این مورد برای راه‌اندازی mpv از طریق کنترل‌کننده نشانی (URL handler) استفاده می‌شود. پیشوند پروتکل حذف شده و مابقی آن به عنوان یک آرگومان معمولی باز کردن به پخش‌کننده ارسال می‌شود. تنها پروتکل‌های شبکه امن مجاز هستند که از این طریق باز شوند.
168u
168u
http://..., https://, ...
0.0
3.5
بسیاری از پروتکل‌های شبکه پشتیبانی می‌شوند، اما پیشوند پروتکل همیشه باید مشخص شود. mpv هرگز تلاش نمی‌کند حدس بزند که آیا یک نام فایل در واقع یک نشانی شبکه است یا خیر. پیشوند پروتکل همواره الزامی است.
توجه داشته باشید که همه پیشوندها در اینجا مستند نشده‌اند. پیشوندهای مستند‌نشده یا نام‌های مستعار (alias) برای پروتکل‌های مستندشده هستند، یا صرفاً هدایت‌هایی به پروتکل‌های پیاده‌سازی و مستند شده در FFmpeg می‌باشند.
پیشوند data: پشتیبانی می‌شود، اما باید در قالب data:// باشد. این کار برای جلوگیری از ابهام با نام فایل‌ها انجام شده است. همچنین می‌توانید پیشوندهای lavf:// یا ffmpeg:// را به ابتدای آن اضافه کنید.
168u
168u
ytdl://...
0.0
3.5
به‌طور پیش‌فرض، اسکریپت قلاب youtube-dl تنها نشانی‌های http(s) را بررسی می‌کند. افزودن پیشوند ytdl:// به نشانی اینترنتی، پردازش همیشگی آن توسط این اسکریپت را تحمیل می‌کند. این کار همچنین می‌تواند برای فراخوانی عملکردهای خاص youtube-dl مانند پخش ویدیو با شناسه یا اجرای جستجو استفاده شود.
به یاد داشته باشید که نمی‌توانید گزینه‌های خط فرمان youtube-dl را از این طریق ارسال کنید و در عوض باید از --ytdl-raw-options استفاده نمایید.
168u
168u
-
0.0
3.5
پخش داده‌ها از stdin (ورودی استاندارد).
168u
168u
smb://PATH
0.0
3.5
پخش یک مسیر از اشتراک Samba. (نیازمند پشتیبانی FFmpeg است.)
168u
168u
bd://[title][/device] --bluray-device=PATH
0.0
3.5
پخش دیسک Blu-ray. از نسخه libbluray 1.0.1 به بعد، می‌توانید با فرستادن فایل‌های ISO به --bluray-device از آن‌ها بخوانید.
مقدار title می‌تواند یکی از این موارد باشد: longest یا first (فهرست پخش پیش‌فرض را انتخاب می‌کند)؛ mpls/<number> (فهرست پخش <number>.mpls را انتخاب می‌کند)؛ <number> (فهرست پخش با همان شماره شاخص را انتخاب می‌کند). mpv هنگام بارگذاری، فهرست‌های پخش موجود را نمایش می‌دهد.
bluray:// یک نام مستعار است.
168u
168u
dvd://[title][/device] --dvd-device=PATH
0.0
3.5
پخش DVD. منوهای DVD پشتیبانی نمی‌شوند. اگر هیچ عنوان (title) داده نشود، طولانی‌ترین عنوان به‌طور خودکار انتخاب می‌شود. بدون گزینه --dvd-device، در صورتی که درایو نوری واقعی در دسترس بوده و برای سیستم‌عامل پیاده‌سازی شده باشد، احتمالاً تلاش خواهد کرد آن را باز کند.
dvdnav:// یک نام مستعار قدیمی برای dvd:// است و دقیقاً همان کار را انجام می‌دهد.
168u
168u
dvb://[cardnumber@]channel --dvbin-...
0.0
3.5
تلویزیون دیجیتال از طریق DVB. (فقط در لینوکس.)
168u
168u
mf://[@listfile|filemask|glob|printf-format] --mf-...
0.0
3.5
پخش مجموعه‌ای از تصاویر به عنوان ویدیو.
اگر مسیر نشانی با @ آغاز شود، به عنوان مسیر فایلی شامل فهرستی از مسیرهای تصویر که با خطوط جدید جدا شده‌اند تفسیر می‌شود. اگر مسیر نشانی شامل , باشد، به عنوان فهرستی از مسیرهای تصویر جداشده با , تفسیر می‌شود. اگر مسیر نشانی شامل % نباشد و در بسترهای POSIX باشد، به عنوان یک glob تفسیر شده و در صورتی که * مشخص نشده باشد، به‌طور خودکار به انتهای آن اضافه می‌شود. در غیر این صورت، توالی‌های printf شامل %[.][NUM]d (که در آن NUM یک، دو یا سه رقم ده‌دهی است) و %% تفسیر می‌شوند. برای مثال، mf://image-%d.jpg فایل‌هایی مانند image-1.jpg، image-2.jpg و image-10.jpg را پخش می‌کند، به شرطی که شکاف‌های عددی بزرگی بین فایل‌ها وجود نداشته باشد.
168u
168u
cdda://[device] --cdda-device=PATH
0.0
3.5
پخش CD. می‌توانید با استفاده از گزینه‌های --start و --end و مشخص کردن فصل‌ها (chapters)، بازه خاصی از قطعه‌ها (tracks) را برای پخش انتخاب کنید. جابه‌جایی به جلو و عقب در میان قطعه‌ها را می‌توان با پیمایش در فصل‌ها نیز انجام داد (PGUP و PGDOWN در کلیدهای میانبر پیش‌فرض).
0.0
3.5
"مثال (Example)"
0.0
3.5
mpv cdda:// --start=#4 --end=#6
168u
168u
این دستور از قطعه ۴ آغاز کرده، قطعه ۵ را پخش می‌کند و سپس به پایان می‌رسد.
168u
168u
168u
168u
lavf://...
0.0
3.5
دسترسی به هر پروتکل libavformat در FFmpeg. اساساً این پروتکل رشته بعد از // را مستقیماً به libavformat ارسال می‌کند.
168u
168u
av://type:options
0.0
3.5
این پروتکل برای استفاده از ورودی‌های libavdevice در نظر گرفته شده است. مقدار type نام دی‌مالتی‌پلکسر (demuxer) در libavdevice است و options نام فایل (یا شبه‌فایل) ارسال‌شده به دی‌مالتی‌پلکسر است.
0.0
3.5
"مثال (Example)"
0.0
3.5
mpv av://v4l2:/dev/video0 --profile=low-latency --untimed
168u
این دستور ویدیو را از اولین ورودی v4l با تقریباً کمترین تاخیر ممکن
پخش می‌کند. این یک جایگزین مناسب برای ورودی حذف‌شدهٔ tv:// است.
استفاده از --untimed ترفندی برای ارسال فوری فریم ضبط‌شده به خروجی است،
به‌جای اینکه به نرخ فریم ورودی پایبند باشد. (ممکن است در آینده روش‌های
بهتری برای مدیریت این موضوع وجود داشته باشد.)
168u
168u
avdevice:// یک نام مستعار است.
168u
168u
file://PATH
0.0
3.5
یک مسیر محلی به‌صورت URL. ممکن است در برخی موارد کاربرد خاص مفید باشد. توجه داشته باشید
که خودِ PATH باید با یک / سوم شروع شود تا مسیر به یک
مسیر مطلق تبدیل گردد.
168u
168u
appending://PATH
0.0
3.5
یک فایل محلی را پخش می‌کند، اما فرض می‌کند که داده‌ها در حال الحاق به آن هستند. این ویژگی برای
مثال برای فایل‌هایی که در حال حاضر بر روی دیسک بارگیری می‌شوند مفید است. این کار
پخش را مسدود می‌کند و تنها در صورتی پخش را متوقف می‌سازد که پس از
یک مهلت زمانی حدود ۲ ثانیه، دادهٔ جدیدی اضافه نشده باشد.
استفاده از این روش همچنان ایدهٔ چندان مناسبی نیست، زیرا راهی برای تشخیص
اینکه آیا داده‌ها واقعاً به فایل اضافه می‌شوند یا هنوز در حال نوشتن است وجود ندارد. اگر
قصد دارید خروجی برنامه‌ای را پخش کنید، استفاده از یک لوله (pipe) را مدنظر قرار دهید
(something | mpv -). اگر واقعاً باید یک فایل روی دیسک باشد، از tail استفاده کنید
تا برای همیشه منتظر بماند، برای مثال tail -f -c +0 file.mkv | mpv -.
168u
168u
fd://123
0.0
3.5
خواندن داده‌ها از توصیف‌کنندهٔ فایل (file descriptor) داده‌شده (برای مثال 123). این شبیه
هدایت داده‌ها به stdin از طریق لوله و به‌وسیلهٔ - است، اما می‌تواند از هر توصیف‌کنندهٔ فایل دلخواهی استفاده کند.
هنگامی که لایهٔ جریان آن را "باز" می‌کند، ممکن است mpv برخی ویژگی‌های توصیف‌کنندهٔ فایل را
تغییر دهد.
168u
168u
fdclose://123
0.0
3.5
مشابه fd://، اما توصیف‌کنندهٔ فایل پس از استفاده بسته می‌شود. هنگام استفاده از این
باید اطمینان حاصل کنید که از نشانی URL مشابه fd تنها یک بار استفاده خواهد شد.
168u
168u
edl://[edl specification as in edl-mpv.rst]
0.0
3.5
بخش‌هایی از چندین فایل را به یکدیگر پیوند داده و آن‌ها را پخش می‌کند.
168u
168u
slice://start[-end]@URL
0.0
3.5
خواندن یک برش از جریان.
start و end بیانگر یک محدودهٔ بایتی هستند و پسوندهایی
مانند KiB و MiB را می‌پذیرند. end اختیاری است.
اگر end با + شروع شود، به‌عنوان آفست از start در نظر گرفته می‌شود.
تنها با جریان‌های با قابلیت پرش (seekable) کار می‌کند.
مثال‌ها:
0.0
3.5
mpv slice://1g-2g@cap.ts
این دستور خواندن از cap.ts را پس از پرش به 1 GiB شروع می‌کند، سپس
تا رسیدن به 2 GiB یا انتهای فایل می‌خواند.
mpv slice://1g-+2g@cap.ts
این دستور خواندن از cap.ts را پس از پرش به 1 GiB شروع می‌کند، سپس
تا رسیدن به 3 GiB یا انتهای فایل می‌خواند.
mpv slice://100m@appending://cap.ts
این دستور خواندن از cap.ts را پس از پرش به 100MiB شروع می‌کند، سپس
تا انتهای فایل می‌خواند.
168u
168u
168u
168u
null://
0.0
3.5
یک فایل خالی را شبیه‌سازی می‌کند. اگر برای نوشتن باز شود، تمامی داده‌ها را دور می‌ریزد.
تفکیک‌کنندهٔ null در صورت استفاده از این پروتکل به‌طور ویژه از آزمون خودکار (autoprobing) عبور
می‌کند (در حالی که برای فایل‌های خالی به‌طور خودکار فراخوانی نمی‌شود).
168u
168u
memory://data
0.0
3.5
از بخش data به‌عنوان دادهٔ منبع استفاده می‌کند.
168u
168u
hex://data
0.0
3.5
مشابه memory://، اما رشته به‌عنوان hexdump تفسیر می‌شود.
168u
برنامه mpv هیچ GUI رسمی به‌جز OSC (کنترل‌کننده روی صفحه یا ON SCREEN CONTROLLER) ندارد، که یک رابط گرافیکی کامل نیست و قرار هم نبوده چنین باشد. با این حال، برای جبران کمبود رفتار مورد انتظار از یک رابط گرافیکی، mpv در برخی شرایط با تنظیماتی تغییریافته اجرا می‌شود تا رفتاری شبیه‌تر به یک حالت گرافیکی داشته باشد.
در حال حاضر این اتفاق فقط در موارد زیر رخ می‌دهد:
0.0
• 2
اگر با استفاده از فایل mpv.desktop در لینوکس اجرا شود (به‌عنوان مثال، اجرا از طریق منوها یا ارتباطات فایلی ارائه‌شده توسط محیط‌های میزکار)
• 2
اگر از طریق explorer.exe در ویندوز اجرا شود (از نظر فنی، اگر در ویندوز اجرا شده باشد و تمامی دستگیره‌های stdout/stderr/stdin تنظیم نشده باشند)
• 2
اگر از داخل بسته نرم‌افزاری (bundle) در macOS اجرا شود
• 2
اگر به‌صورت دستی از --player-operation-mode=pseudo-gui در خط فرمان استفاده کنید
168u
این حالت گزینه‌ها را از نمایه توکار builtin-pseudo-gui اعمال می‌کند، اما فقط در صورتی که این گزینه‌ها در فایل پیکربندی کاربر یا در خط فرمان تنظیم نشده باشند، که تفاوت اصلی با استفاده از --profile=builtin-pseudo-gui است.
این نمایه در حال حاضر به صورت زیر تعریف شده است:
0.0
3.5
[builtin-pseudo-gui]
terminal=no
force-window=yes
idle=once
screenshot-directory=~~desktop/
168u
168u
نمایه pseudo-gui به منظور سازگاری وجود دارد. گزینه‌های درون نمایه pseudo-gui بدون قید و شرط اعمال می‌شوند. علاوه بر این، این نمایه فعال شدن حالت شبه‌گرافیکی را تضمین می‌کند، به طوری که --profile=pseudo-gui مانند نسخه‌های قدیمی‌تر mpv عمل کند:
0.0
3.5
[pseudo-gui]
player-operation-mode=pseudo-gui
168u
168u
هشدار:
0.0
3.5
در حال حاضر، می‌توانید نمایه pseudo-gui را به شیوه معمول در فایل پیکربندی گسترش دهید. این کار منسوخ شده است. در نسخه‌های آینده mpv، این رفتار ممکن است تغییر کرده و تنظیمات اضافی شما را اعمال نکند و/یا از نام نمایه متفاوتی استفاده نماید.
168u
168u
"گزینه‌ها (OPTIONS)"
"انتخاب ترک (Track Selection)"
0.0
--alang=<languagecode[,languagecode,...]>
یک فهرست اولویت‌بندی‌شده از زبان‌های صوتی برای استفاده را به صورت برچسب‌های زبانی IETF مشخص می‌کند. با کدهای دوحرفی معادل ISO 639-1 و کدهای سه‌حرفی ISO 639-2 رفتار یکسانی صورت می‌گیرد. نخستین برچسب در فهرست که با زبان ترک در فایل مطابقت داشته باشد، استفاده خواهد شد. ترکی که با زیربرچسب‌های بیشتری مطابقت داشته باشد نسبت به ترکی با تطابق کمتر ترجیح داده می‌شود. همچنین --aid را ببینید.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به بخش گزینه‌های فهرست (List Options) مراجعه کنید.
7.0
3.5
"مثال‌ها (Examples)"
0.0
• 2
دستور mpv dvd://1 --alang=hu,en ترک زبان مجاری را روی DVD انتخاب می‌کند و اگر مجاری در دسترس نباشد، به زبان انگلیسی رجوع می‌کند.
• 2
دستور mpv --alang=jpn example.mkv یک فایل Matroska را با صدای ژاپنی پخش می‌کند.
168u
168u
168u
--slang=<languagecode[,languagecode,...]>
مشابه --alang، برای ترک‌های زیرنویس.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به بخش گزینه‌های فهرست (List Options) مراجعه کنید.
7.0
3.5
"مثال‌ها (Examples)"
0.0
• 2
دستور mpv dvd://1 --slang=hu,en ترک زیرنویس مجاری را روی DVD انتخاب می‌کند و اگر مجاری در دسترس نباشد، به انگلیسی رجوع می‌کند.
• 2
دستور mpv --slang=jpn example.mkv یک فایل Matroska را با زیرنویس ژاپنی پخش می‌کند.
• 2
دستور mpv --slang=pt-BR example.mkv در صورت وجود، یک فایل Matroska را با زیرنویس پرتغالی برزیلی و در غیر این صورت با هر زیرنویس پرتغالی دیگری پخش می‌کند.
168u
168u
168u
--vlang=<...>
مشابه --alang و --slang، برای ترک‌های ویدیویی.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به بخش گزینه‌های فهرست (List Options) مراجعه کنید.
--aid=<ID|auto|no>
انتخاب ترک صوتی. مقدار auto ترک پیش‌فرض را انتخاب می‌کند، و no صدا را غیرفعال می‌سازد. همچنین --alang را ببینید. برنامه mpv به‌طور معمول هنگام شروع پخش یک فایل، ترک‌های صوتی موجود را در ترمینال چاپ می‌کند.
گزینه --audio یک نام مستعار برای --aid است.
مقدار --aid=no یا --audio=no پخش صدا را غیرفعال می‌کند.
نکته:
7.0
3.5
گزینه‌های انتخاب ترک (نه تنها --aid بلکه --sid و بقیه) گاهی رفتاری از خود نشان می‌دهند که ممکن است عجیب به نظر برسد. علاوه بر این، این رفتار تمایل دارد با هر نسخه جدید mpv تغییر کند.
ویژگی‌های انتخاب ترک خارج از وضعیت پخش، مقدار گزینه را بازمی‌گردانند (همان‌طور که انتظار می‌رود)، اما در طول پخش، انتخاب مؤثر ترک بازگردانده می‌شود. برای مثال، با --aid=auto، ویژگی aid پس از راه‌اندازی پخش ناگهان مقدار 2 را بازمی‌گرداند (با این فرض که فایل حداقل دارای ۲ ترک صوتی باشد و دومی پیش‌فرض باشد).
در mpv 0.32.0 (و برخی از نسخه‌های پیشین)، اگر مقداری برای ترک ارسال می‌کردید که ترک متناظر با آن وجود نداشت (مثلاً --aid=2 و تنها ۱ ترک صوتی موجود بود)، ویژگی aid مقدار no را بازمی‌گرداند. با این حال اگر ترک صوتی دیگری در حین پخش اضافه می‌شد و شما تلاش می‌کردید ویژگی aid را روی 2 تنظیم کنید، هیچ اتفاقی نمی‌افتاد، زیرا گزینه aid کماکان دارای مقدار 2 بود و نوشتن همان مقدار هیچ اثری ندارد.
با mpv 0.33.0 این رفتار تغییر کرد. اکنون در صورتی که گزینه سعی در انتخاب ترکی داشته باشد که وجود ندارد، گزینه‌های انتخاب ترک در زمان راه‌اندازی پخش به auto بازنشانی می‌شوند. همین عمل در حالتی که ترک وجود داشته باشد اما راه‌اندازی آن ناموفق شود نیز انجام می‌گیرد. پیامد این امر آن است که برخلاف نسخه‌های قبل از mpv 0.33.0، پارامترهای انتخابی کاربر برای ترک در شرایط خاصی بازنویسی و بازنشانی می‌شوند.
همچنین از mpv 0.33.0 به بعد، تلاش برای انتخاب ترک از روی شماره، دقیقاً همان ترک را انتخاب می‌کند. پیش از این تغییر، تلاش برای انتخاب ترکی که وجود نداشت باعث می‌شد که در زمان راه‌اندازی پخش به انتخاب پیش‌فرض ترک پس‌گرد شود. رفتار جدید سازگارتر و هماهنگ‌تر است.
تنظیم یکی از ویژگی‌های انتخاب ترک در زمان اجرا و سپس پخش فایلی جدید، در صورتی که اثرانگشت (fingerprint) فهرست ترک‌های فایل جدید متفاوت باشد، ممکن است انتخاب ترک را به مقادیر پیش‌فرض بازنشانی کند.
مراقب ترکیب‌های پیچیده ناشی از تمام موارد بالا باشید: برای مثال،
mpv --aid=2 file_with_2_audio_tracks.mkv file_with_1_audio_track.mkv
ابتدا فایل نخست را با ترک صحیح و فایل دوم را بدون صدا پخش می‌کند. اگر سپس به فایل نخست برگردید، نخستین ترک صوتی آن پخش خواهد شد و فایل دوم همراه با صدا پخش می‌شود. اگر همان کار را دوباره انجام دهید ولی به جای استفاده از --aid=2، دستور set aid 2 را هنگام پخش فایل اجرا کنید، جابجایی به فایل دوم ترک صوتی آن را پخش خواهد کرد. این به این دلیل است که انتخاب در زمان اجرا، روش اکتشافی اثرانگشت را فعال می‌سازد.
به احتمال زیاد این پایان کار نیست.
168u
168u
--sid=<ID|auto|no>
جریان زیرنویس تعیین‌شده توسط <ID> را نمایش می‌دهد. مقدار auto ترک پیش‌فرض را انتخاب می‌کند، و no زیرنویس‌ها را غیرفعال می‌سازد.
گزینه --sub یک نام مستعار برای --sid است.
مقدار --sid=no یا --sub=no رمزگشایی زیرنویس را غیرفعال می‌کند..TP
--vid=<ID|auto|no>
کانال ویدیویی را انتخاب می‌کند. auto پیش‌فرض را انتخاب می‌کند، no ویدیو را غیرفعال می‌کند.
--video یک نام مستعار برای --vid است.
--vid=no یا --video=no پخش ویدیو را غیرفعال می‌کند.
اگر ویدیو غیرفعال باشد، چنانچه رسانه با youtube-dl دریافت شود، mpv تلاش خواهد کرد فقط صدا را بارگیری کند، زیرا در پهنای باند صرفه‌جویی می‌شود. این کار با تنظیم ytdl_format روی "bestaudio/best" در اسکریپت ytdl_hook.lua انجام می‌گیرد.
--edition=<ID|auto>
(فقط فایل‌های Matroska)
ویرایش (مجموعه‌ای از فصل‌ها) مورد استفاده را مشخص می‌کند، که 0 اولین آن است. اگر روی auto (پیش‌فرض) تنظیم شود، mpv اولین ویرایشی را که به عنوان پیش‌فرض تعیین شده، یا در صورت نبود پیش‌فرض، اولین ویرایش تعریف‌شده را انتخاب خواهد کرد.
--track-auto-selection=<yes|no>
انتخاب خودکار قطعه پیش‌فرض را فعال می‌کند (پیش‌فرض: yes). فعال‌سازی این مورد باعث می‌شود پخش‌کننده جریان‌ها را مطابق با --aid، --alang و سایر موارد انتخاب کند. در صورت غیرفعال بودن، هیچ قطعه‌ای انتخاب نمی‌شود. علاوه بر این، چنانچه هیچ قطعه‌ای انتخاب نشود، پخش‌کننده خارج نخواهد شد و در عوض به انتظار می‌ماند (این حالت انتظار شبیه به مکث است، اما گزینه مکث تنظیم نشده است).
این گزینه همراه با --lavfi-complex مفید است: می‌توانید پخش را در این حالت آغاز کرده و سپس قطعات انتخابی را در زمان اجرا با تنظیم گراف فیلتر مشخص کنید. توجه داشته باشید که اگر --lavfi-complex پیش از آغاز پخش تنظیم شده باشد، قطعات ارجاع‌داده‌شده همواره انتخاب می‌شوند.
--subs-with-matching-audio=<yes|forced|no>
هنگام انتخاب خودکار قطعه زیرنویس، حتی اگر جریان صوتی انتخاب‌شده با زبان ترجیحی زیرنویس شما مطابقت داشته باشد، آن را انتخاب می‌کند (پیش‌فرض: yes). اگر این گزینه روی no تنظیم شود، صرف‌نظر از --slang یا subs-fallback، هیچ قطعه زیرنویسی که با زبان صدا مطابقت داشته باشد هرگز به صورت خودکار توسط mpv انتخاب نخواهد شد. در صورت تنظیم روی forced، تنها زیرنویس‌های اجباری (forced) انتخاب خواهند شد.
--subs-match-os-language=<yes|no>
هنگام انتخاب خودکار قطعه زیرنویس، در صورتی که جریان صوتی به زبان دیگری باشد، قطعه‌ای را که با زبان سیستم‌عامل شما همخوانی دارد در صورت مناسب بودن (قطعه پیش‌فرض یا قطعه اجباری تحت شرایط مناسب) انتخاب می‌کند. توجه داشته باشید که در صورت تنظیم بودن --slang، این مورد کاملاً نادیده گرفته می‌شود (پیش‌فرض: yes).
--subs-fallback=<yes|default|no>
هنگام انتخاب خودکار قطعه زیرنویس، اگر هیچ قطعه‌ای با زبان‌های ترجیحی شما مطابقت نداشته باشد، یک قطعه کامل را حتی اگر با زبان ترجیحی زیرنویس شما مطابقت نداشته باشد انتخاب می‌کند (پیش‌فرض: default). تنظیم این مورد روی default بدین معناست که تنها جریان‌های علامت‌گذاری‌شده به عنوان default انتخاب خواهند شد.
--subs-fallback-forced=<yes|no|always>
هنگام انتخاب خودکار قطعه زیرنویس، مقدار پیش‌فرض yes استفاده از قطعه زیرنویس اجباری را در اولویت قرار می‌دهد، مشروط بر این‌که زبان زیرنویس با زبان صدا و همچنین فهرست زبان‌های ترجیحی شما مطابقت داشته باشد. مقدار ویژه always تنها قطعات زیرنویس اجباری را انتخاب می‌کند و هرگز به قطعات غیراجباری رجوع نمی‌کند. برعکس، no هرگز قطعه زیرنویس اجباری را انتخاب نخواهد کرد.
168u
کنترل پخش (Playback Control)
0.0
--start=<relative time>;
پرش به موقعیت زمانی مشخص‌شده.
قالب کلی برای زمان‌ها [+|-][[hh:]mm:]ss[.ms] است. اگر زمان با پیشوند - همراه باشد، زمان به صورت نسبی نسبت به انتهای فایل (طبق گزارش demuxer/فایل) در نظر گرفته می‌شود. علامت + معمولاً نادیده گرفته می‌شود (اما ادامه را ببینید).
مشخصه‌های زمانی جایگزین زیر نیز شناخته می‌شوند:
pp% به موقعیت درصدی pp پرش می‌کند (0-100).
#c به فصل شماره c پرش می‌کند. (شماره فصل‌ها از 1 آغاز می‌شود.)
none هر مقدار گزینه‌ای را که قبلاً تعیین شده باشد بازنشانی می‌کند (برای libmpv کاربرد دارد).
اگر --rebase-start-time=no مشخص شده باشد، پیشوند کردن زمان‌ها با + زمان را نسبت به ابتدای فایل تعیین می‌کند. یک برچسب زمانی بدون پیشوند به عنوان زمان مطلق در نظر گرفته می‌شود؛ یعنی باید به فریمی با همان برچسب زمانی موجود در فایل پرش کند. به عنوان یک باگ، و البته یک ویژگی پنهان، قرار دادن ۱ یا چند فاصله پیش از + یا - همواره زمان را مطلق تفسیر می‌کند، که می‌تواند برای پرش به برچسب‌های زمانی منفی استفاده شود (در بهترین حالت برای اشکال‌زدایی کاربرد دارد).
7.0
3.5
"مثال‌ها (Examples)"
0.0
--start=+56, --start=00:56
به زمان شروع + 56 ثانیه پرش می‌کند.
--start=-56, --start=-00:56
به زمان پایان - 56 ثانیه پرش می‌کند.
--start=01:10:00
به ۱ ساعت و ۱۰ دقیقه پرش می‌کند.
--start=50%
به میانه فایل پرش می‌کند.
--start=30 --end=40
به ثانیه 30 پرش می‌کند، 10 ثانیه پخش می‌کند و سپس خارج می‌شود.
--start=-3:20 --length=10
به ۳ دقیقه و ۲۰ ثانیه پیش از پایان فایل پرش می‌کند، ۱۰ ثانیه پخش می‌کند و سپس خارج می‌شود.
--start='#2' --end='#4'
فصل‌های ۲ و ۳ را پخش می‌کند و سپس خارج می‌شود.
168u
168u
168u
--end=<relative time>;
توقف در زمان داده‌شده. اگر زمان باید نسبت به --start باشد، از --length استفاده کنید. برای مقادیر معتبر گزینه و مثال‌ها، به --start مراجعه کنید.
--length=<relative time>;
توقف پس از مدت‌زمانی معین نسبت به زمان شروع.
برای مقادیر معتبر گزینه و مثال‌ها، به --start مراجعه کنید.
اگر هر دو گزینه --end و --length تعیین شوند، پخش با رسیدن به هر یک از این دو نقطه پایانی متوقف خواهد شد.
نکته ابهام: اگر --rebase-start-time=no باشد و زمان مشخص‌شده مطابق با تعریف در توضیحات گزینه --start یک زمان "مطلق" نباشد، این ویژگی به درستی کار نخواهد کرد.
--rebase-start-time=<yes|no>
آیا زمان شروع فایل به 00:00:00 منتقل شود یا خیر (پیش‌فرض: yes). این ویژگی کار را برای فایل‌هایی که با یک برچسب زمانی تصادفی شروع می‌شوند، مانند جریان‌های انتقال (transport streams)، بسیار هموارتر می‌کند. از سوی دیگر، در صورت بازنشانی برچسب‌های زمانی، رفتار حاصل می‌تواند بسیار نامتعارف باشد. به همین دلیل، و در صورتی که برچسب‌های زمانی واقعی مد نظرتان باشد، می‌توان این رفتار را با no غیرفعال کرد.
--speed=<0.01-100>
کاهش یا افزایش سرعت پخش بر اساس ضریب تعیین‌شده به عنوان پارامتر.
اگر --audio-pitch-correction (به‌طور پیش‌فرض فعال) به کار رود، پخش با سرعتی بالاتر از حد معمول به طور خودکار فیلتر صوتی scaletempo2 را درج می‌کند.
--pitch=<0.01-100>
زیروبمی (pitch) صدا را بر اساس ضریب ارائه‌شده به عنوان پارامتر افزایش یا کاهش می‌دهد. بر سرعت پخش تأثیری نمی‌گذارد. پخش با زیروبمی تغییریافته به طور خودکار فیلتر صوتی scaletempo2 را درج می‌کند.
از آنجا که تغییر زیروبمی از طریق ترکیب تغییر سرعت با حفظ گام و بازنمونه‌برداری (resampling) صورت می‌گیرد، دامنه تغییر زیروبمی عملاً توسط پارامترهای min-speed و max-speed فیلتر scaletempo2 محدود می‌شود: به عنوان مثال، مقدار min-speed برابر با 0.25، بالاترین ضریب زیروبمی را به 4 (1/0.25) محدود می‌کند.
در یک سامانه گام استاندارد ۱۲ پرده‌ای، اکتاوها با ضریب ۲ از یکدیگر متمایز می‌شوند در حالی که نیم‌پرده‌ها با ضریب 2^(1/12) نشان داده می‌شوند. این بدان معناست که زیروبمی را می‌توان به راحتی با یک ضریب ساده به سمت بالا یا پایین جابه‌جا کرد.
7.0
3.5
"مثال‌ها (Examples)"
0.0
--pitch=2
زیروبمی را یک اکتاو کامل بالا می‌برد.
--pitch=0.5
زیروبمی را یک اکتاو پایین می‌آورد.
--pitch=1.498307 (2^(7/12))
زیروبمی را به اندازه یک فاصله پنجم درست (perfect fifth) بالا می‌برد.
--pitch=0.667420 (2^(-7/12))
زیروبمی را به اندازه یک فاصله پنجم درست پایین می‌آورد.
--pitch=1.059463 (2^(1/12))
زیروبمی را یک نیم‌پرده بالا می‌برد.
--pitch=0.943874 (2^(-1/12))
زیروبمی را یک نیم‌پرده پایین می‌آورد.
168u
168u
--pause
آغاز به کار پخش‌کننده در حالت مکث.
--shuffle
پخش فایل‌ها با ترتیب تصادفی.
--playlist-start=<auto|index>
مشخص می‌کند که پخش با کدام فایل از لیست‌پخش داخلی آغاز شود. اندیس یک عدد صحیح است که 0 به معنای فایل اول می‌باشد. مقدار auto به این معناست که انتخاب مدخل برای پخش به سازوکار ازسرگیری پخش واگذار می‌شود (پیش‌فرض). اگر مدخلی با اندیس داده‌شده وجود نداشته باشد، رفتار برنامه نامشخص است و ممکن است در نسخه‌های بعدی mpv تغییر کند. همین امر در صورتی که لیست‌پخش شامل لیست‌پخش‌های دیگری باشد نیز صدق می‌کند (انتظار رفتار معقولی را نداشته باشید). با این حال، دادن یک فایل لیست‌پخش به mpv باید با این گزینه کار کند؛ برای نمونه، mpv playlist.m3u --playlist-start=123 تا زمانی که playlist.m3u به لیست‌پخش‌های دیگری پیوند ندهد، همان‌گونه که انتظار می‌رود کار خواهد کرد.
مقدار no یک نام مستعار منسوخ‌شده برای auto است.
--playlist=<filename>
پخش فایل‌ها مطابق با یک فایل لیست‌پخش. از برخی قالب‌های رایج پشتیبانی می‌کند. اگر قالبی شناسایی نشود، با آن به عنوان فهرستی از فایل‌ها که با نویسه خط جدید از هم جدا شده‌اند رفتار خواهد شد. ممکن است برای بارگذاری فایل‌های متنی ساده به عنوان لیست‌پخش به این گزینه نیاز پیدا کنید. توجه داشته باشید که قالب‌های لیست‌پخش XML پشتیبانی نمی‌شوند.
این گزینه --demuxer=playlist را وادار به تفسیر فایل لیست‌پخش می‌کند. برخی قالب‌های لیست‌پخش، به ویژه CUE و قالب‌های دیسک نوری، نیازمند استفاده از دیمالتی‌پلکسرهای متفاوتی هستند و با این گزینه کار نخواهند کرد. آن‌ها همچنان می‌توانند به طور مستقیم و بدون استفاده از این گزینه پخش شوند.
شما می‌توانید لیست‌های پخش را مستقیماً بدون این گزینه پخش کنید. پیش از نسخه 0.31.0 mpv، این گزینه هرگونه سازوکار امنیتی موجود را غیرفعال می‌کرد، اما از نسخه 0.31.0 به بعد از همان سازوکارهای امنیتیِ پخش مستقیم فایل لیست‌پخش استفاده می‌کند. اگر به فایل لیست‌پخش اعتماد دارید، می‌توانید تمام بررسی‌های امنیتی را با --load-unsafe-playlists غیرفعال کنید. از آنجا که لیست‌های پخش می‌توانند مدخل‌های دیگری را بارگذاری کنند، توصیه می‌شود این گزینه را تنها برای خودِ لیست‌پخش و نه مدخل‌های آن اعمال کنید، به شیوه‌ای مشابه این:
7.0
3.5
mpv --{ --playlist=filename --load-unsafe-playlists --}
168u
168u
هشدار:
7.0
3.5
روشی که نسخه‌های قدیمی‌تر mpv فایل‌های لیست‌پخش را از طریق --playlist پخش می‌کردند در برابر فایل‌های دستکاری‌شده مخرب ایمن نبود. چنین فایل‌هایی ممکن است اقدامات زیانباری را آغاز کنند. این موضوع برای تمامی نسخه‌های mpv پیش از 0.31.0 و تمامی نسخه‌های MPlayer وجود داشته است، اما متأسفانه این نکته پیش‌تر به خوبی مستند نشده بود و حتی برخی افراد به اشتباه استفاده از --playlist را با منابع نامطمئن توصیه می‌کردند. اگر مطمئن نیستید که نسخه mpv شما حداقل 0.31.0 است، از --playlist برای منابع تصادفی اینترنتی یا فایل‌هایی که به آن‌ها اعتماد ندارید استفاده نکنید.
به ویژه، لیست‌های پخش می‌توانند شامل مدخل‌هایی باشند که از پروتکل‌هایی غیر از فایل‌های محلی استفاده می‌کنند؛ مانند پروتکل‌های ویژه‌ای چون avdevice:// (که ذاتاً ناامن هستند).
168u
168u
--chapter-merge-threshold=<number>
آستانه ادغام بخش‌های فصل‌های ترتیبی تقریباً متوالی بر حسب میلی‌ثانیه (پیش‌فرض: 100). برخی فایل‌های Matroska با فصل‌های ترتیبی دارای برچسب‌های زمانی نادقیق پایان فصل هستند که باعث ایجاد وقفه‌ای کوچک بین پایان یک فصل و آغاز فصل بعدی می‌شود در حالی که باید بر هم منطبق باشند. اگر فاصله پایان یک بخش پخش تا شروع بخش بعدی کمتر از آستانه تعیین‌شده باشد، به جای انجام پرش (seek)، پخش ویدیو در طول تغییر فصل به صورت عادی ادامه می‌یابد.
--chapter-seek-threshold=<seconds>
فاصله زمانی بر حسب ثانیه از ابتدای یک فصل که در محدوده آن، پرش به عقب بین فصل‌ها به فصل قبلی می‌رود (پیش‌فرض: 5.0). پس از عبور از این آستانه، پرش به عقب در فصل به جای آن به ابتدای فصل فعلی می‌رود. یک مقدار منفی به معنای بازگشت همیشگی به فصل قبلی است.
--hr-seek=<no|absolute|yes|default>
انتخاب زمان استفاده از پرش‌های دقیق که به فریم‌های کلیدی محدود نمی‌شوند. چنین پرش‌هایی نیازمند رمزگشایی ویدیو از فریم کلیدی قبلی تا موقعیت هدف هستند و بنابراین بسته به کارایی رمزگشایی ممکن است زمان‌بر باشند. برای برخی قالب‌های ویدیویی، پرش‌های دقیق غیرفعال هستند. این گزینه انتخاب پیش‌فرض را برای پرش‌ها تعیین می‌کند؛ امکان لغو صریح این پیش‌فرض در تعریف کلیدهای میانبر و در دستورات ورودی وجود دارد.
7.0
no
هرگز از پرش‌های دقیق استفاده نکن.
absolute
اگر پرش به یک موقعیت مطلق در فایل باشد (مانند پرش به فصل)، از پرش‌های دقیق استفاده کن، اما برای پرش‌های نسبی مانند رفتار پیش‌فرض کلیدهای جهت‌نما استفاده نکن.
default
مانند absolute، اما hr-seekها را در حالت‌های فقط صوتی فعال می‌کند. رفتار دقیق وابسته به پیاده‌سازی است و ممکن است با نگارش‌های جدید تغییر کند (پیش‌فرض).
yes
هر زمان که ممکن باشد از پرش‌های دقیق استفاده کن.
always
مشابه yes (برای سازگاری).
168u
--hr-seek-demuxer-offset=<seconds>
این گزینه برای دور زدن خطاهای پرش دقیق (مانند --hr-seek) که به دلیل باگ‌ها یا محدودیت‌های دیمالتی‌پلکسرها در برخی قالب‌های فایل رخ می‌دهد ایجاد شده است. برخی دیمالتی‌پلکسرها نمی‌توانند به فریم کلیدی پیش از موقعیت هدفِ داده‌شده پرش کنند و در عوض به موقعیتی پس از آن می‌روند. مقدار این گزینه از برچسب زمانی داده‌شده به دیمالتی‌پلکسر کسر می‌شود. بنابراین، اگر این گزینه را روی 1.5 تنظیم کنید و سعی در انجام پرش دقیق به ثانیه 60 داشته باشید، به دیمالتی‌پلکسر گفته می‌شود که به زمان 58.5 پرش کند که احتمال رفتن اشتباهی آن به زمانی بعد از 60 ثانیه را کاهش می‌دهد. نکته منفی این تنظیم آن است که پرش‌های دقیق کندتر می‌شوند، زیرا ویدیوی بین موقعیت قبلی دیمالتی‌پلکسر و هدف واقعی ممکن است به طور غیرضروری رمزگشایی شود.
--hr-seek-framedrop=<yes|no>
به رمزگشای ویدیو اجازه می‌دهد در هنگام پرش فریم‌ها را رها (drop) کند، در صورتی که این فریم‌ها پیش از هدفِ پرش باشند. اگر این گزینه فعال باشد، پرش دقیق می‌تواند سریع‌تر انجام شود، اما اگر از فیلترهای ویدیویی استفاده می‌کنید که برچسب‌های زمانی را تغییر می‌دهند یا فریم‌های جدید اضافه می‌کنند، می‌تواند منجر به رد شدن از فریمِ هدف در پرش دقیق شود. برای مثال این موضوع می‌تواند هنگام فعال بودن deinterlacing قابلیت حرکت فریم به عقب (backstepping) را مختل کند.
پیش‌فرض: yes
--index=<mode>
نحوه پرش در فایل‌ها را کنترل می‌کند. توجه داشته باشید که اگر نمایه‌ای (index) در فایل موجود نباشد، به طور پیش‌فرض در حین اجرا ساخته می‌شود، بنابراین نیازی به تغییر این گزینه ندارید. با این حال ممکن است به کار با برخی فایل‌های آسیب‌دیده کمک کند.
7.0
default
در صورت وجود نمایه در فایل از آن استفاده کن، یا در صورت نبود، آن را بساز
recreate
نمایه فایل را نخوان و از آن استفاده نکن
168u
نکته:
7.0
3.5
این گزینه تنها در صورتی کار می‌کند که رسانه زیرین از پرش پشتیبانی کند (یعنی نه با stdin، pipe و غیره).
168u
168u
--load-unsafe-playlists
بارگذاری نشانی‌های اینترنتی (URLها) از لیست‌های پخشی که ناامن تلقی می‌شوند (پیش‌فرض: no). این شامل پروتکل‌های خاص و هر چیزی است که به فایل‌های معمولی اشاره نمی‌کند. از سوی دیگر، فایل‌های محلی و پیوندهای HTTP همیشه امن در نظر گرفته می‌شوند.
علاوه بر این، اگر لیست‌پخشی در زمان فعال بودن این گزینه بارگذاری شود، مدخل‌های افزوده‌شده لیست‌پخش به عنوان منشأگرفته از شبکه یا مکانی بالقوه ناامن نشانه‌گذاری نمی‌شوند. (در عوض، رفتار به گونه‌ای خواهد بود که گویی مدخل‌های لیست‌پخش مستقیماً به خط فرمان mpv یا دستور loadfile داده شده‌اند.)
--access-references=<yes|no>
دنبال کردن هرگونه ارجاع در فایلی که در حال باز شدن است (پیش‌فرض: yes). غیرفعال کردن این گزینه در صورتی که فایل به طور خودکار بررسی و پویش می‌شود (مانند تولید تصاویر بندانگشتی) مفید است. برای نمونه اگر پویشگر تصویر بندانگشتی با یک فایل لیست‌پخش برخورد کند که حاوی نشانی‌های شبکه است و پویشگر نباید آن‌ها را باز کند، غیرفعال کردن این گزینه مانع از آن خواهد شد. همچنین این گزینه فصل‌های ترتیبی، فایل‌های مرجع mov، باز کردن آرشیوها و تعدادی دیگر از قابلیت‌ها را غیرفعال می‌کند.
در نسخه‌های قدیمی‌تر FFmpeg، این گزینه در برخی موارد کار نخواهد کرد. ممکن است برخی از دیمالتی‌پلکسرهای FFmpeg این گزینه را رعایت نکنند.
این گزینه از باز شدن فایل‌های زیرنویس جفت‌شده و موارد مشابه جلوگیری نمی‌کند. برای جلوگیری از این مورد از --autoload-files=no استفاده کنید.
این گزینه همیشه هنگام باز کردن موارد غیرفایلی کار نمی‌کند (برای مثال استفاده از dvd://directory دسته‌ای کامل از فایل‌ها را در دایرکتوری داده‌شده باز می‌کند). اضافه کردن پیشوند ./ به نام فایل در صورتی که با / شروع نمی‌شود، از این مشکل جلوگیری خواهد کرد.
--loop-playlist=<N|inf|force|no>, --loop-playlist
پخش را N بار تکرار (حلقه) می‌کند. مقدار 1 آن را یک بار پخش می‌کند (پیش‌فرض)، 2 دو بار و غیره. مقدار inf به معنای تکرار همیشگی است. مقدار no همانند 1 بوده و تکرار را غیرفعال می‌کند. اگر چندین فایل در خط فرمان مشخص شده باشند، کل لیست‌پخش تکرار می‌شود. --loop-playlist همانند --loop-playlist=inf است..sp
حالت force مانند inf است، اما مدخل‌های فهرست پخش را که به عنوان ناموفق علامت‌گذاری شده‌اند رد نمی‌کند. این بدان معناست که ممکن است پخش‌کننده با تلاش برای تکرار فایلی که وجود ندارد، زمان CPU را هدر دهد. اما ممکن است برای پخش رادیوهای اینترنتی در شرایط شبکه‌ای بسیار بد مفید باشد.
--loop-file=<N|inf|no>, --loop=<N|inf|no>
یک تک‌فایل را N بار تکرار می‌کند. inf به معنای همیشه است، no به معنای پخش عادی است. برای سازگاری، --loop-file و --loop-file=yes نیز پذیرفته می‌شوند و با --loop-file=inf یکسان هستند.
تفاوت آن با --loop-playlist در این است که فهرست پخش را تکرار نمی‌کند، بلکه تنها خود فایل را تکرار می‌کند. اگر فهرست پخش فقط حاوی یک تک‌فایل باشد، تفاوت بین دو گزینه در این است که این گزینه هنگام تکرار به‌جای بارگذاری مجدد فایل، یک پرش (seek) انجام می‌دهد.
نکته:
7.0
3.5
گزینه --loop-file تعداد دفعاتی را می‌شمارد که باعث می‌شود پخش‌کننده به ابتدای فایل پرش کند، نه تعداد دورهای کامل پخش. این بدان معناست که --loop-file=1 در نهایت منجر به دو بار پخش فایل خواهد شد. در مقایسه با --loop-playlist، که تعداد دورهای کامل پخش را می‌شمارد.
168u
168u
--loop یک نام مستعار برای این گزینه است.
--ab-loop-a=<time>, --ab-loop-b=<time>
نقاط تکرار حلقه را تنظیم می‌کند. اگر پخش از برچسب زمانی b عبور کند، به برچسب زمانی a پرش خواهد کرد. پرش به فراتر از نقطه b تکرار نمی‌شود (این عمدی است).
اگر a بعد از b باشد، رفتار به‌گونه‌ای است که گویی نقطه‌ها با ترتیب درست داده شده‌اند، و پخش‌کننده پس از عبور از a به b پرش خواهد کرد. این با رفتار قدیمی متفاوت است، که در آن تکرار غیرفعال می‌شد (و به عنوان یک باگ، در انتهای فایل دوباره به a برمی‌گشت).
اگر هر یک از گزینه‌ها روی no تنظیم شوند (یا تنظیم نشده باشند)، تکرار غیرفعال می‌شود. این با رفتار قدیمی متفاوت است، که در آن یک a تنظیم‌نشده نشان‌دهنده ابتدای فایل و یک b تنظیم‌نشده نشان‌دهنده انتهای فایل بود.
نقاط تکرار را می‌توان در زمان اجرا با ویژگی‌های متناظر تنظیم کرد. همچنین دستور ab-loop را ببینید.
--ab-loop-count=<N|inf>
حلقه‌های A-B را تنها N بار اجرا می‌کند، سپس نقاط حلقه A-B را نادیده می‌گیرد (پیش‌فرض: inf).
inf به این معناست که تکرار تا ابد ادامه می‌یابد. اگر این گزینه روی 0 تنظیم شود، تکرار A-B نادیده گرفته می‌شود، و حتی دستور ab-loop نیز تکرار را دوباره فعال نخواهد کرد (اگر هر دو نقطه حلقه تنظیم شده باشند اما ab-loop-count برابر 0 باشد، این دستور (disabled) را در پیام OSD نمایش خواهد داد).
--ordered-chapters=<yes|no>
پشتیبانی از فصل‌های ترتیبی Matroska را فعال می‌کند. mpv بخش‌های ویدیویی را از فایل‌های دیگر بارگذاری و جستجو خواهد کرد، و همچنین هرگونه ترتیب فصلی که برای فایل اصلی مشخص شده باشد را رعایت می‌کند (پیش‌فرض: yes).
--ordered-chapters-files=<playlist-file>
فایل داده‌شده را به عنوان فهرست پخش بارگذاری می‌کند، و هنگام باز کردن یک فایل Matroska که از فصل‌های ترتیبی استفاده می‌کند، سعی می‌کند از فایل‌های موجود در آن به عنوان فایل‌های مرجع استفاده کند. این گزینه سازوکار معمولِ بارگذاری فایل‌های مرجع از طریق پویش همان دایرکتوری‌ای که فایل اصلی در آن قرار دارد را نادیده می‌گیرد.
برای بارگذاری فایل‌های فصل ترتیبی که در سیستم‌فایل محلی قرار ندارند، یا اگر فایل‌های مرجع در دایرکتوری‌های متفاوتی باشند، مفید است.
نکته: یک فهرست پخش می‌تواند به سادگی یک فایل متنی حاوی نام‌های فایل باشد که با خطوط جدید از هم جدا شده‌اند.
--chapters-file=<filename>
فصل‌ها را به‌جای استفاده از فراداده‌های فصل موجود در فایل اصلی، از این فایل بارگذاری می‌کند.
این گزینه یک فایل رسانه‌ای (مانند mkv) یا حتی یک شبه‌فرمت مانند ffmetadata را می‌پذیرد و از فصل‌های آن برای جایگزینی با فصل‌های فایل فعلی استفاده می‌کند. این ویژگی مستقیماً با فصل‌های OGM یا XML کار نمی‌کند.
--sstep=<sec>
پس از هر فریم، <sec> ثانیه پرش می‌کند.
نکته:
7.0
3.5
بدون --hr-seek، پرش به فریم‌های کلیدی (keyframes) متصل می‌شود.
168u
168u
--stop-playback-on-init-failure=<yes|no>
اگر مقداردهی اولیه صدا یا ویدیو با شکست مواجه شود، پخش را متوقف می‌کند (پیش‌فرض: no).
با no، اگر یکی از آن‌ها با شکست مواجه شود، پخش در حالت فقط‌ویدیو یا فقط‌صدا ادامه می‌یابد. این بر پخش فایل‌های فقط‌صدا یا فقط‌ویدیو تأثیری ندارد.
--play-direction=<forward|+|backward|->
جهت پخش را کنترل می‌کند (پیش‌فرض: forward). مقداردهی backward تلاش خواهد کرد تا فایل را در جهت معکوس، با کاهش زمان پخش، پخش کند. اگر این مقدار در شروع پخش تنظیم شده باشد، پخش از انتهای فایل آغاز خواهد شد. اگر این مقدار در حین پخش تغییر کند، برای تغییر جهت یک hr-seek صادر می‌شود.
+ و - نام‌های مستعار برای forward و backward هستند.
باقی توضیحات این گزینه مربوط به حالت backward است.
نکته:
7.0
3.5
پخش معکوس به شدت شکننده است. ممکن است همیشه کار نکند، بسیار کندتر از پخش رو به جلو است و برخی از ویژگی‌های دیگر را از کار می‌اندازد. میزان کارکرد درست آن عمدتاً به فایلی که پخش می‌شود بستگی دارد. به طور کلی، تنها در صورتی نتایج خوبی نشان می‌دهد (یا اصلاً نتیجه‌ای می‌دهد) که همه‌چیز دست به دست هم دهد.
168u
168u
برنامه mpv و همچنین بیشتر فرمت‌های رسانه‌ای، تنها برای پخش رو به جلو طراحی شده‌اند. پخش معکوس به mpv وصله شده است و تلاشی در حد متوسط انجام می‌دهد تا پخش معکوس کار کند. بسته به مورد استفاده شما، ابزار دیگری ممکن است بسیار بهتر عمل کند.
پخش معکوس دقیقاً یک قابلیت درجه‌یک نیست. مصالحه‌هایی در پیاده‌سازی انجام شده است که برای پخش معکوس بد هستند، اما در عوض معایبی برای پخش عادی ایجاد نمی‌کنند. بهینه‌سازی‌های بالقوه مختلفی برای پایین نگه داشتن پیچیدگی پیاده‌سازی نشده‌اند. معمولاً، یک پخش‌کننده رسانه بسیار خط‌لوله‌ای (pipelined) است (داده‌های آینده در ریسه‌های جداگانه آماده می‌شوند، تا زمانی که مرحله بعد به آن‌ها نیاز دارد در لحظه در دسترس باشند)، اما پخش معکوس اساساً خط لوله را در نقاط تصادفی مختلف متوقف (stall) می‌کند.
به عنوان مثال، کدک‌های intra-only به سادگی به صورت معکوس قابل پخش هستند و ابزارهای ساخته‌شده حول آن‌ها ممکن است استفاده کارآمدی از آن‌ها بکنند (ویرایشگرهای ویدیو یا مشاهده‌گرهای دوربین را در نظر بگیرید). mpv در این مورد کارآمد نخواهد بود، زیرا از الگوریتم عمومی پخش معکوس خود استفاده می‌کند که علاوه بر آن، چندان بهینه‌سازی نشده است.
اگر فقط می‌خواهید به سرعت در طول ویدیو به عقب بروید و صرفاً "فریم‌های کلیدی" را نشان دهید، فقط از پخش رو به جلو استفاده کنید و کلید مکان‌نمای چپ را نگه دارید (که در CLI با پیکربندی پیش‌فرض، دستورات پرش نسبی کوچک متعددی را ارسال می‌کند).
پیاده‌سازی عمدتاً از ۳ بخش تشکیل شده است:
7.0
• 2
تفکیک معکوس (Backward demuxing). این به حافظه موقت تفکیک‌کننده (demuxer cache) متکی است، بنابراین حافظه موقت تفکیک‌کننده باید (یا الزامی است، آزمایش نشده) فعال باشد، و اندازه آن بر عملکرد تأثیر خواهد گذاشت. اگر حافظه موقت بیش از حد کوچک یا بیش از حد بزرگ باشد، ممکن است رفتار زمان اجرای درجه دو (quadratic runtime) رخ دهد.
• 2
رمزگشایی معکوس (Backward decoding). کتابخانه رمزگشای استفاده‌شده (libavcodec) از این پشتیبانی نمی‌کند. این کار با خوراندن تکه‌های داده به جلو، قرار دادن نتیجه در یک صف، بازگرداندن داده‌های صف به VO به صورت معکوس، و سپس شروع مجدد از یک موقعیت قبلی شبیه‌سازی می‌شود. این می‌تواند نیازمند بافر کردن حجم فوق‌العاده زیادی از داده‌های رمزگشایی‌شده باشد و همچنین خط لوله را کاملاً از کار می‌اندازد.
• 2
خروجی معکوس (Backward output). این نسبتاً ساده است، زیرا رمزگشا فریم‌ها را به ترتیب مورد نیاز بازمی‌گرداند. با این حال، ممکن است مشکلات متعددی ایجاد کند زیرا فیلترها می‌بینند که صدا و ویدیو به عقب حرکت می‌کنند.
168u
مشکلات شناخته‌شده:
7.0
• 2
شکننده است. اگر چیزی درست کار نکند، ممکن است رفتاری تصادفی رخ دهد. در موارد ساده، پخش‌کننده صرفاً داده‌های بی‌معنی و مصنوعات تصویری (artifacts) را پخش می‌کند. در موارد دیگر، ممکن است گیر کند یا CPU را داغ کند. (هرچند فراتر رفتن مصرف حافظه به طور چشمگیر از محدودیت‌های تعیین‌شده توسط کاربر، یک باگ خواهد بود.)
• 2
عملکرد و مصرف منابع خوب نیست. بخشی از این امر ذاتیِ پخش معکوس فرمت‌های رسانه‌ای معمولی است، و بخشی دیگر ناشی از انتخاب‌ها و مصالحه‌های پیاده‌سازی است.
• 2
این به شدت وابسته به رفتار خوب تفکیک‌کننده (demuxer) است. اگرچه جداسازی معکوس به پشتیبانی ویژه تفکیک‌کننده نیاز ندارد، اما لازم است که تفکیک‌کننده پرش‌ها را به طور قابل اعتماد انجام دهد، الزامات خاصی درباره فراداده بسته‌ها را برآورده کند و رفتاری قطعی (deterministic) داشته باشد.
• 2
شروع پخش دقیقاً از انتها بسته به رفتار پرش و تشخیص مدت‌زمان فایل، ممکن است کار کند یا نکند.
• 2
برخی فرمت‌های ظرف (container)، کدک‌های صوتی و تصویری به دلیل رفتاری که دارند پشتیبانی نمی‌شوند. هیچ فهرستی وجود ندارد و پخش‌کننده معمولاً آن‌ها را تشخیص نمی‌دهد. به طور خاص برخی پخش‌های زنده (شامل ضبط تلویزیونی) و همچنین برخی کدک‌های صوتی اتلافی (lossy) ممکن است مشکلاتی نشان دهند. شناخته شده است که h264 intra-refresh به دلیل مشکلات با libavcodec کار نمی‌کند. فرمت WAV و برخی دیگر از فرمت‌های صوتی خام تمایل به ایجاد مشکل دارند - ترفندهایی برای مقابله با آن‌ها وجود دارد که ممکن است کار کنند یا نکنند..IP • 2
تفکیک رو به عقب (backward demuxing) زیرنویس‌ها پشتیبانی نمی‌شود. با این حال، نمایش زیرنویس برای برخی از قالب‌های زیرنویس متنی خارجی کار می‌کند. (این‌ها به‌طور کامل در حافظه بارگذاری می‌شوند و تنها به نمایش معکوس نیاز است.) زیرنویس‌های متنی که در رندرکننده زیرنویس کش شده‌اند نیز شانس نمایش صحیح را دارند.
• 2
برخی از ویژگی‌هایی که با پخش فایل‌های خراب یا دارای ساختار پیچیده سروکار دارند به‌طور کامل کار نخواهند کرد (مانند تصحیح برچسب زمانی / timestamp).
• 2
اگر پرش‌های (seek) سطح پایین دیمکسر (یعنی پرش در دیمکسر واقعی به جای پرش در حافظه کش دیمکسر) با پخش رو به عقب انجام شوند، محدوده‌های پرش ایجادشده ممکن است به یکدیگر متصل نشوند، زیرا همپوشانی کافی حاصل نشده است.
• 2
تلاش برای استفاده از این قابلیت به همراه رمزگشایی ویدیویی سخت‌افزاری احتمالاً تمام حافظه GPU شما را مصرف خواهد کرد و سپس به از کار افتادن بخش‌هایی از سیستم منجر می‌شود؛ یا ممکن است به این دلیل که مقدار --hwdec-extra-frames قطعاً بسیار کم تنظیم شده است، ناموفق باشد.
• 2
ضبط استریم (stream recording) مختل شده است. --stream-record ممکن است تنها در صورتی به کار خود ادامه دهد که پخش معکوس را منحصراً درون ناحیه کش‌شده انجام دهید.
• 2
پرش‌های نسبی (relative seeks) ممکن است رفتار عجیبی داشته باشند. پرش‌های کوچک رو به عقب (به سمت زمان‌های قبل‌تر، مانند seek -1) ممکن است در عمل به درستی پرش نکنند و صدا برای مدتی قطع بماند. استفاده از hr-seek توصیه می‌شود که نباید هیچ‌یک از این مشکلات را داشته باشد.
• 2
برخی مسائل صرفاً رفتار غیرعادی دارند. برای مثال، در حالی که دستورهای seek زمان پخش را طبق انتظار جابه‌جا می‌کنند (به شرط آنکه درست کار کنند)، دستورهای گام‌فریم (framestep) معکوس شده‌اند. بازگشت یک فریم به عقب (backstepping) پردازش بسیار سنگینی انجام می‌دهد تا ۱ فریم به جلو برود.
168u
تنظیم دقیق:
7.0
• 2
تمام فیلترهای --vf/--af که تنظیم کرده‌اید را حذف کنید. رمزگشایی سخت‌افزاری را غیرفعال کنید. عملکردهایی مانند SPDIF passthrough را غیرفعال نمایید.
• 2
اگر خطای سرریز صف معکوس (reversal queue overflow) گزارش شد، افزایش مقدار --video-reversal-buffer ممکن است کمک‌کننده باشد؛ این حالت ممکن است در ویدیوهایی با بیت‌ریت بالا یا ویدیوهایی با GOP بزرگ رخ دهد. رمزگشایی سخت‌افزاری عمدتاً این تنظیم را نادیده می‌گیرد و در عوض باید مقدار --hwdec-extra-frames را افزایش دهید (تا جایی که پخش بدون ثبت خطا در لاگ انجام شود).
• 2
کش دیمکسر برای تفکیک رو به عقب ضروری است. مطمئن شوید که --cache=yes تنظیم شده باشد. اندازه کش ممکن است اهمیت داشته باشد. اگر کش بیش از حد کوچک باشد، سرریز صف ثبت خواهد شد و پخش رو به عقب نمی‌تواند ادامه یابد، یا پرش‌های سطح پایین بسیار زیادی انجام خواهد داد. اگر بیش از حد بزرگ باشد، مصالحه‌های پیاده‌سازی ممکن است باعث افت عملکرد کلی شوند. از --demuxer-max-bytes برای افزایش احتمالی تعداد بسته‌هایی که لایه دیمکسر می‌تواند برای تفکیک معکوس صف‌بندی کند استفاده کنید (این گزینه اساساً معادل --video-reversal-buffer برای لایه دیمکسر است).
• 2
تنظیم --vd-queue-enable=yes می‌تواند تا حد زیادی به روان شدن پخش کمک کند (زمانی که به‌درستی کار کند).
• 2
گزینه --demuxer-backward-playback-step نیز در تعیین تعداد پرش‌های احتمالی و همچنین احتمال توقف تفکیک معکوس به دلیل سرریز صف نقش دارد. اگر این مقدار بیش از حد بزرگ تنظیم شود، عملیات backstep حتی در صورت کافی بودن اندازه کش، باید همواره در میان تعداد بسیار بیشتری از بسته‌ها جستجو کند.
• 2
تنظیم --demuxer-cache-wait ممکن است برای کش کردن کامل فایل در کش دیمکسر کاربردی باشد. مقدار --demuxer-max-bytes را روی عدد بزرگی تنظیم کنید تا مطمئن شوید می‌تواند کل کش را بخواند؛ همچنین --demuxer-max-back-bytes نیز باید روی مقدار بزرگی تنظیم شود تا از تلاش برای هرس کردن کش جلوگیری به عمل آید.
• 2
اگر نویزها و اعوجاج‌های صوتی شنیده می‌شوند، حتی با اینکه AO با افت بافر (underrun) مواجه نمی‌شود، افزایش --audio-backward-overlap ممکن است در برخی موارد کمک کند.
168u
--video-reversal-buffer=<bytesize>, --audio-reversal-buffer=<bytesize>
برای رمزگشایی رو به عقب. رمزگشایی رو به عقب در گام‌های معین رو به جلو رمزگشایی می‌کند و سپس خروجی رمزگشا را معکوس می‌نماید. این گزینه‌ها حداکثر مقدار تقریبی بایت‌هایی که می‌توانند بافر شوند را کنترل می‌کنند. کاربرد اصلی آن جلوگیری از مصرف نامحدود منابع است؛ در طول پخش عادی رو به عقب، قرار نیست به این حد نصاب برسد، و اگر برسد، فریم‌ها را رها کرده (drop) و خطا صادر می‌کند.
اگر در طول پخش معکوس با خطای سرریز صف معکوس (reversal queue overflow) مواجه شدید، از این گزینه استفاده کنید. اندازه را تا جایی که هشدار رفع شود افزایش دهید. معمولاً بافر ویدیو زودتر سرریز می‌شود، به‌ویژه در ویدیوهای با وضوح تصویر بالا.
در صورت استفاده از رمزگشایی سخت‌افزاری ویدیو، این گزینه به‌درستی کار نخواهد کرد. اندازه فریم ویدیو شامل حافظه ارجاع‌شده در GPU و درایور نخواهد بود. همچنین برخی از رمزگشاهای سخت‌افزاری ممکن است توسط --hwdec-extra-frames محدود شوند.
اینکه اندازه صف چقدر باید بزرگ باشد، کاملاً به نحوه کدگذاری رسانه بستگی دارد. صدا معمولاً به یک بافر بسیار کوچک نیاز دارد، در حالی که ویدیو می‌تواند نیازمند بافرهای فوق‌العاده بزرگ باشد.
(از نظر فنی، این گزینه اجازه می‌دهد آخرین فریم از محدوده فراتر رود. همچنین فریم‌های بافرشده دیگر، مانند درون رمزگشا یا خروجی ویدیو را محاسبه نمی‌کند.)
این گزینه اصلاً بر رفتار کش دیمکسر تأثیر نمی‌گذارد.
برای مقادیر پیش‌فرض و دامنه مقادیر، --list-options را ببینید. گزینه‌های <bytesize> پسوندهایی مانند KiB و MiB را می‌پذیرند.
--video-backward-overlap=<auto|number>, --audio-backward-overlap=<auto|number>
تعداد محدوده‌های فریم کلیدی (keyframe) همپوشان برای استفاده در رمزگشایی رو به عقب (پیش‌فرض: auto) (اصطلاح «keyframe» بر اساس تعریف خاص mpv/ffmpeg در نظر گرفته می‌شود). رمزگشایی رو به عقب با رمزگشایی رو به جلو در گام‌های کوچک انجام می‌شود. برخی از کدک‌ها نمی‌توانند رمزگشایی را از هر بسته‌ای دوباره آغاز کنند (حتی اگر به عنوان نقطه پرش مشخص شده باشد)، که این مورد در رمزگشایی رو به عقب خود را نشان می‌دهد (در تئوری این موضوع برای پرش/seek نیز یک مشکل است، اما --hr-seek-demuxer-offset می‌تواند آن را برای پرش رفع کند). کدک‌های صوتی مبتنی بر MDCT به‌طور ویژه تحت تأثیر این مسئله قرار دارند.
راهکار این است که هر بار یک بسته قبلی به رمزگشا داده شده و سپس خروجی آن دور ریخته شود. این گزینه کنترل می‌کند که چه تعداد بسته داده شود. مقدار auto در حال حاضر برای ویدیو به‌طور ثابت روی 0 تنظیم شده است، و برای صدای با اتلاف (lossy) از 1، و برای صدای بدون اتلاف (lossless) از 0 استفاده می‌کند. برای برخی از کدک‌های صوتی با اتلاف خاص، این مقدار روی 2 تنظیم شده است.
گزینه --video-backward-overlap بسته به شرایط می‌تواند ویدیوهای با تازه‌سازی درون‌فریمی (intra-refresh) را مدیریت کند. ممکن است مجبور شوید از گزینه --vd-lavc-show-all نیز استفاده نمایید.
--video-backward-batch=<number>, --audio-backward-batch=<number>
تعداد محدوده‌های فریم کلیدی که هنگام رمزگشایی رو به عقب باید به‌صورت یکجا رمزگشایی شوند (پیش‌فرض: 1 برای ویدیو، 10 برای صدا). یک پارامتر تنظیم غیرضروری دیگر که هیچ‌کس نباید از آن استفاده کند. این گزینه تنها باید بر کارایی تأثیر بگذارد. در تئوری، قرار دادن عددی بزرگ‌تر از 1 برای صدا، سربار ناشی از عملیات‌های گام به عقب با بسامد کمتر و همچنین پردازش‌های تکراری رمزگشایی ناشی از فریم‌های همپوشانِ رمزگشایی‌شده کمتر را کاهش می‌دهد (به --audio-backward-overlap مراجعه کنید). از سوی دیگر، این کار به بافر معکوس‌سازی بزرگ‌تری نیاز دارد و ممکن است به دلیل برهم زدن خط لوله پردازش (pipelining)، از روان بودن پخش بکاهد (برای مثال با رمزگشایی حجم زیادی از داده و سپس بی‌کار ماندن به مدت طولانی).
احتمالاً تنظیم --video-backward-batch هرگز منطقی نخواهد بود. اما در تئوری، می‌تواند با کاهش عملیات‌های گام به عقب، به کدک‌های ویدیویی intra-only کمک کند.
--demuxer-backward-playback-step=<seconds>
تعداد ثانیه‌هایی که دیمکسر باید برای دریافت بسته‌های جدید هنگام پخش معکوس به عقب پرش کند (پیش‌فرض: 60). این گزینه برای تنظیم دقیق پخش رو به عقب مفید است، برای جزئیات بیشتر به --play-direction مراجعه کنید.
تنظیم این مقدار به یک عدد بسیار کم یا 0 ممکن است باعث شود پخش‌کننده تصور کند عمل پرش با شکست مواجه شده، یا منجر به انجام چندین پرش پیاپی شود.
تنظیم این مقدار به یک عدد بسیار بزرگ می‌تواند منجر به رفتار زمان اجرای درجه دوم (quadratic) شود.
0.0
--help, --h
نمایش خلاصه کوتاهی از گزینه‌ها.
شما همچنین می‌توانید یک رشته به این گزینه بدهید که تمام گزینه‌های سطح بالا که شامل آن رشته در نام خود هستند را فهرست می‌کند، مانند --h=scale برای تمام گزینه‌هایی که حاوی واژهٔ scale هستند. رشتهٔ ویژهٔ * تمام گزینه‌های سطح بالا را فهرست می‌کند.
-v
افزایش سطح پرگویی (verbosity level)، یک سطح به ازای هر -v یافت‌شده در خط فرمان.
--version, -V
چاپ رشتهٔ نسخه و خروج.
--no-config
عدم بارگذاری پیکربندی پیش‌فرض یا هرگونه فایل کاربری. این امر مانع از بارگذاری فایل‌های mpv.conf و input.conf در هر دو سطح کاربری و سراسر سیستم می‌شود. سایر فایل‌های کاربری نیز مسدود می‌شوند، مانند فایل‌های ازسرگیری پخش (resume) و فایل‌های حافظهٔ موقت (cache). این گزینه تنها زمانی اثرگذار است که به عنوان پرچم خط فرمان استفاده شود.
نکته:
7.0
3.5
فایل‌هایی که صراحتاً توسط گزینه‌های خط فرمان درخواست شده‌اند، مانند
--include یا --use-filedir-conf، همچنان بارگذاری خواهند شد.
168u
168u
همچنین ببینید: --config-dir.
--list-options
چاپ تمام گزینه‌های موجود.
--list-properties
چاپ فهرستی از ویژگی‌های (properties) موجود.
--list-protocols
چاپ فهرستی از پروتکل‌های پشتیبانی‌شده.
--log-file=<path>
مسیر داده‌شده را برای نوشتن باز می‌کند و پیام‌های ثبت وقایع (log) را در آن چاپ می‌کند. فایل‌های موجود کوتاه (truncate) خواهند شد. سطح لاگ حداقل -v -v است، اما می‌تواند از طریق --msg-level افزایش یابد (این گزینه نمی‌تواند آن را به کمتر از حداقل سطح اجباری لاگ کاهش دهد).
یک مورد خاص، بستهٔ macOS است که به‌طور پیش‌فرض یک فایل لاگ در
~/Library/Logs/mpv.log ایجاد می‌کند.
--config-dir=<path>
تحمیل یک دایرکتوری پیکربندی متفاوت. اگر این گزینه تنظیم شود، از دایرکتوری داده‌شده برای بارگذاری فایل‌های پیکربندی استفاده می‌شود و سایر دایرکتوری‌های پیکربندی نادیده گرفته می‌شوند. این بدان معناست که دایرکتوری پیکربندی سراسری mpv و همچنین دایرکتوری‌های کاربری نادیده گرفته می‌شوند و بازنویسی‌ها از طریق متغیرهای محیطی (MPV_HOME) نیز نادیده گرفته خواهند شد.
توجه داشته باشید که مسیرهای کش و وضعیت (~~/cache، ~~/state) به عنوان "پیکربندی" در نظر گرفته نمی‌شوند و منطق تشخیص خودکار خود را حفظ می‌کنند.
توجه داشته باشید که گزینهٔ --no-config نسبت به این گزینه اولویت دارد.
--dump-stats=<filename>
نوشتن آمارهای مشخص در فایل داده‌شده. فایل هنگام باز شدن کوتاه (truncate) می‌شود. این فایل شامل نمونه‌های خام، هر یک به همراه یک برچسب زمانی خواهد بود. برای خوانا کردن این فایل، می‌توان از اسکریپت TOOLS/stats-conv.py استفاده کرد (که در حال حاضر آن را به صورت نمودار نمایش می‌دهد).
این گزینه فقط برای اشکال‌زدایی مفید است.
--idle=<no|yes|once>
باعث می‌شود mpv هنگام نبود فایلی برای پخش، به جای خروج، به حالت آماده‌به‌کار (idle) منتظر بماند. عمدتاً در حالت ورودی مفید است، جایی که mpv می‌تواند از طریق دستورات ورودی کنترل شود. (پیش‌فرض: no)
مقدار once فقط در ابتدای کار در حالت بیکار می‌ماند و پس از اتمام پخش اولین فهرست پخش (playlist)، به پخش‌کننده اجازه می‌دهد بسته شود.
--include=<configuration-file>
تعیین فایل پیکربندی برای تجزیه پس از فایل‌های پیش‌فرض.
--load-scripts=<yes|no>
اگر روی no تنظیم شود، اسکریپت‌ها را به‌طور خودکار از زیردایرکتوری پیکربندی scripts (معمولاً ~/.config/mpv/scripts/) بارگذاری نمی‌کند.
(پیش‌فرض: yes)
--script=<filename>, --scripts=file1.lua:file2.lua:...
بارگذاری یک اسکریپت Lua. گزینهٔ دوم به شما امکان می‌دهد چندین اسکریپت را با جدا کردن آن‌ها به وسیلهٔ جداکننده مسیر (: در Unix، ; در Windows) بارگذاری کنید.
گزینهٔ --scripts یک گزینه از نوع فهرست مسیر است. برای جزئیات به List Options مراجعه کنید.
--script-opt=<key=value>, --script-opts=key1=value1,key2=value2,...
تنظیم گزینه‌ها برای اسکریپت‌ها. یک اسکریپت می‌تواند یک گزینه را با کلید آن پرس‌وجو کند. اینکه از گزینه‌ای استفاده می‌شود و مقدار گزینه چه معنایی دارد، کاملاً به اسکریپت‌های بارگذاری‌شده بستگی دارد. مقادیری که توسط هیچ اسکریپتی ادعا نشوند، نادیده گرفته می‌شوند.
هر بار استفاده از گزینهٔ --script-opt گزینهٔ دیگری را به فهرست داخلی اضافه می‌کند، در حالی که --script-opts فهرستی از گزینه‌ها را یکجا دریافت کرده و فهرست داخلی را با آن بازنویسی می‌کند. مورد دوم یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
--merge-files
وانمود کردن به اینکه تمام فایل‌های ارسال‌شده به mpv در یک فایل بزرگ و واحد الحاق شده‌اند. این ویژگی در داخل از پشتیبانی جدول‌زمانی/EDL استفاده می‌کند.
--profile=<profile1,profile2,...>
استفاده از نمایه(های) داده‌شده، گزینهٔ --profile=help فهرستی از نمایه‌های تعریف‌شده را نمایش می‌دهد.
--reset-on-next-file=<all|option1,option2,...>
به‌طور معمول، mpv هنگام پخش فایل بعدی در فهرست پخش سعی می‌کند تمام تنظیمات را حفظ کند، حتی اگر در حین پخش توسط کاربر تغییر کرده باشند. (این رفتار برخلاف MPlayer است که هنگام شروع فایل بعدی سعی می‌کند تمام تنظیمات را بازنشانی کند.)
پیش‌فرض: هیچ‌چیز بازنشانی نشود.
این رفتار را می‌توان با این گزینه تغییر داد. این گزینه فهرستی از گزینه‌ها را می‌پذیرد و mpv مقدار این گزینه‌ها را در ابتدای پخش به مقدار اولیه بازنشانی خواهد کرد. مقدار اولیه یا همان مقدار پیش‌فرض است، یا مقداری که توسط فایل پیکربندی یا خط فرمان تنظیم شده است.
نام ویژهٔ all تا حد امکان گزینه‌های بیشتری را بازنشانی می‌کند.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
7.0
3.5
"مثال‌ها"
0.0
• 2
--reset-on-next-file=pause
بازنشانی حالت توقف موقت (pause) هنگام جابجایی به فایل بعدی.
• 2
--reset-on-next-file=fullscreen,speed
بازنشانی تنظیمات تمام‌صفحه و سرعت پخش در صورتی که در حین پخش تغییر کرده باشند.
• 2
--reset-on-next-file=all
تلاش برای بازنشانی تمام تنظیماتی که در طول پخش تغییر کرده‌اند.
168u
168u
168u
--show-profile=<profile>
نمایش توضیحات و محتوای یک نمایه. در صورتی که پارامتری ارائه نشود، تمام نمایه‌ها را فهرست می‌کند.
--use-filedir-conf
جستجو برای فایل پیکربندی ویژهٔ فایل در همان دایرکتوریِ فایلی که در حال پخش است. به File-specific Configuration Files مراجعه کنید.
هشدار:
7.0
3.5
در صورت پخش از رسانه‌های غیرقابل‌اعتماد ممکن است خطرناک باشد.
168u
168u
--ytdl=<yes|no>
فعال‌سازی اسکریپت قلاب youtube-dl. این اسکریپت به نشانی وب (URL) ورودی نگاه می‌کند و ویدیوی قرارگرفته در وب‌سایت را پخش خواهد کرد. این ویژگی با بسیاری از سایت‌های جاری‌سازی (streaming) کار می‌کند، نه فقط سایتی که اسکریپت به نام آن نام‌گذاری شده است. این به یک نسخهٔ جدید از youtube-dl نیاز دارد که روی سیستم نصب شده باشد (پیش‌فرض: yes).
اگر اسکریپت نتواند کاری با یک URL انجام دهد، هیچ کاری نخواهد کرد.
این گزینه مجموعه‌ای از گزینه‌ها را می‌پذیرد که می‌توان آن‌ها را با گزینهٔ --script-opts (با استفاده از ytdl_hook- به عنوان پیشوند) به آن ارسال کرد:
7.0
try_ytdl_first=<yes|no>
در صورت انتخاب 'yes'، ابتدا تجزیهٔ URL با youtube-dl را امتحان می‌کند، برخلاف حالت پیش‌فرض که این کار تنها پس از شکست mpv در باز کردن آن انجام می‌شود. این عمدتاً به این بستگی دارد که آیا بیشتر URLهای شما نیاز به تجزیه با youtube-dl دارند یا خیر.
exclude=<URL1|URL2|...
فهرستی جداشده با | از الگوهای URL که mpv نباید آن‌ها را با youtube-dl استفاده کند. الگوها پس از بخش http(s):// از URL مطابقت داده می‌شوند..sp
نویسهٔ ^ با ابتدای URL مطابقت می‌یابد، $ با انتهای آن مطابقت دارد، و برای تطبیق با هر یک از نویسه‌های ^$()%|,.[]*+-? باید پیش از آن از % استفاده کنید.
پیش از بررسی تطابق، URLها به حروف کوچک تبدیل می‌شوند.
7.0
3.5
"مثال‌ها"
0.0
• 2
گزینهٔ --script-opts=ytdl_hook-exclude='^youtube%.com'
هر URL که با http://youtube.com یا https://youtube.com آغاز شود را مستثنی می‌کند.
• 2
گزینهٔ --script-opts=ytdl_hook-exclude='%.mkv$|%.mp4$'
هر URL که به .mkv یا .mp4 ختم شود را مستثنی می‌کند.
168u
168u
168u
الگوهای بیش‌تر lua را در اینجا ببینید: https://www.lua.org/manual/5.1/manual.html#5.4.1
include=<URL1|URL2|...
فهرستی از الگوهای URL جداشده با | که وقتی try_ytdl_first برابر با no است، mpv باید ابتدا تلاش کند آن‌ها را با youtube-dl تجزیه کند. الگوها به همان روش exclude تطبیق داده می‌شوند.
پیش‌فرض: ^%w+%.youtube%.com/|^youtube%.com/|^youtu%.be/|^%w+%.twitch%.tv/|^twitch%.tv/
all_formats=<yes|no>
در صورت تنظیم روی 'yes' تلاش می‌کند تمام قالب‌های یافت‌شده و گزارش‌شده توسط youtube-dl را اضافه کند (پیش‌فرض: no). هر قالب به عنوان یک ترک جداگانه افزوده می‌شود. علاوه بر این، بارگذاری آن‌ها با تأخیر صورت می‌گیرد (delay-loaded) و در واقع فقط زمانی باز می‌شوند که یک ترک انتخاب شود (این امر باید زمان بارگذاری را به همان کوتاهیِ زمان عدم استفاده از این گزینه نگه دارد).
در صورت در دسترس بودن، فرادادهٔ نرخ بیت میانگین را اضافه می‌کند، به این معنی که می‌توانید از --hls-bitrate برای تصمیم‌گیری در مورد انتخاب ترک استفاده کنید. (در گذشته HLS تنها قالبی بود که جریان‌های کیفیت جایگزین آن به روشی مشابه ارائه می‌شدند، از این رو این نام برای گزینه انتخاب شده است.)
ترک‌هایی که نشان‌دهندهٔ قالب‌های انتخاب‌شده توسط youtube-dl به عنوان پیش‌فرض هستند، نشانگر پیش‌فرض را تنظیم‌شده خواهند داشت. این بدان معناست که mpv به طور کلی همچنان باید به صورت پیش‌فرض قالب‌های انتخاب‌شده با --ytdl-format را برگزیند.
اگرچه این سازوکار امکان جابه‌جایی جریان‌ها در زمان اجرا را فراهم می‌کند، اما به دلایل فنی گوناگون برای این منظور مناسب نیست. (کند است، و این مشکل واقعاً قابل اصلاح نیست.) به طور کلی این گزینه کاربردی نیست و صرفاً افزوده شده تا نشان دهد چنین کاری ممکن است.
هنگام انتخاب کیفیت/پهنای باند دو حالت وجود دارد که باید در نظر گرفته شوند:
7.0
3.5
0.0
1. 3
جریان‌های صوتی و تصویری کاملاً مجزا (مشابه DASH). هر یک از این جریان‌ها فقط شامل صدا یا تصویر هستند، بنابراین می‌توانید بدون محدودیت پهنای باند صدا/تصویر را ترکیب کنید. این حالت از نظر شهودی بیش‌ترین سازگاری را با مفهوم انتخاب کیفیت بر اساس ترک دارد (کاری که all_formats قرار است انجام دهد).
2. 3
مجموعه‌های مجزا از جریان‌های صوتی و تصویری مالتی‌پلاکس‌شده (muxed). هر نسخه از رسانه شامل هر دو جریان صوتی و تصویری است و آن‌ها در هم آمیخته شده‌اند (interleaved). برای هدر نرفتن پهنای باند، فقط باید یکی از این نسخه‌ها را انتخاب کنید (به عنوان مثال اگر یک جریان صوتی را انتخاب کنید، ویدیو نیز دانلود خواهد شد، حتی اگر ویدیو را از جریان متفاوتی انتخاب کرده باشید).
برنامهٔ mpv همچنان آن‌ها را به عنوان ترک‌های جداگانه نمایش می‌دهد، اما عنوان هر ترک را به muxed-N تنظیم می‌کند، که در آن N با شناسهٔ قالب جریان مبدأ در youtube-dl جایگزین می‌شود.
168u
168u
168u
برخی سایت‌ها موارد ۱ و ۲ را با یکدیگر ترکیب می‌کنند، اما ما فرض می‌کنیم که آن‌ها این کار را به دلایل سازگاری انجام می‌دهند و اصلاً دلیلی برای استفاده از آن‌ها وجود ندارد.
force_all_formats=<yes|no>
اگر روی 'yes' تنظیم شود، و all_formats نیز روی 'yes' باشد، تلاش خواهد کرد همهٔ قالب‌های گزارش‌شده توسط youtube-dl را به صورت ترک نمایش دهد، حتی اگر mpv در حالت عادی از URL مستقیمی که توسط آن گزارش شده است استفاده کند (پیش‌فرض: yes).
به نظر می‌رسد این مورد معمولاً در صورتی تفاوت ایجاد می‌کند که youtube-dl روی یک فهرست پخش اصلی (master) HLS کار کند.
اگر روی 'no' تنظیم شود، با این نوع جریان خاص به گونه‌ای رفتار می‌شود که گویی all_formats روی 'no' تنظیم شده است، و انتخاب جریان انجام‌شده توسط youtube-dl (از طریق --ytdl-format) مورد استفاده قرار می‌گیرد.
thumbnails=<all|best|none>
افزودن بندانگشتی‌ها به عنوان ترک‌های ویدیویی (پیش‌فرض: none).
تصاویر بندانگشتی هنگام افزوده شدن به عنوان ترک بارگیری می‌شوند، بنابراین وقتی تعداد بندانگشتی‌ها زیاد باشد، مقدار 'all' می‌تواند تأثیر محسوسی بر مدت زمان باز شدن ویدیو داشته باشد.
use_manifests=<yes|no>
وادار کردن mpv به استفاده از URL بیانیهٔ اصلی (master manifest) برای قالب‌هایی مانند HLS و DASH در صورت وجود، که امکان انتخاب ویدیو/صدا را در زمان اجرا فراهم می‌سازد (پیش‌فرض: no). این گزینه به طور پیش‌فرض به دلایل کارایی غیرفعال ("no") است.
ytdl_path=youtube-dl
پیکربندی مسیرهای فایل اجرایی youtube-dl یا انشعاب‌های سازگار با آن. مسیرها در یونیکس باید با : و در ویندوز با ; از یکدیگر جدا شوند. mpv به ترتیب به دنبال مسیرهای پیکربندی‌شده در PATH و دایرکتوری پیکربندی mpv می‌گردد. مقادیر پیش‌فرض عبارتند از "yt-dlp"، "yt-dlp_x86" و "youtube-dl". در ویندوز پسوند فایل الزامی نیست، اما فقط ".exe" قابل قبول است.
168u
7.0
3.5
"چرا در نام گزینه‌ها _ و - با هم ترکیب شده‌اند؟"
هیچ ایده‌ای ندارم.
168u
168u
--ytdl-format=<|ytdl|best|worst|mp4|webm|...>
رشتهٔ انتخاب قالب که مستقیماً به youtube-dl فرستاده می‌شود. مقادیر ممکن مختص وب‌سایت و ویدیو هستند؛ برای یک URL مشخص، قالب‌های موجود را می‌توان با دستور youtube-dl -F URL یافت. برای نام‌های مستعار موجود به مستندات youtube-dl مراجعه کنید. (پیش‌فرض: خالی)
یک مقدار خالی یا ytdl اصلاً گزینهٔ --format را به youtube-dl ارسال نمی‌کند، و بنابراین از رفتار پیش‌فرض انتخاب قالب آن استفاده می‌کند.
--ytdl-raw-options=<key>=<value>[,<key>=<value>[,...]]
ارسال گزینه‌های دلخواه به youtube-dl. پارامتر و آرگومان باید به عنوان یک جفت کلید-مقدار ارسال شوند. گزینه‌های بدون آرگومان باید شامل = باشند.
هیچ بررسی صحتی انجام نمی‌شود، بنابراین احتمال بروز مشکل و خرابی وجود دارد (یعنی ارسال پارامترهای نامعتبر به youtube-dl).
می‌توان یک URL پروکسی ارسال کرد تا youtube-dl از آن در تجزیهٔ وب‌سایت استفاده کند. این قابلیت برای URLهای دارای محدودیت جغرافیایی مفید است. پس از تجزیه توسط youtube-dl، برخی URLها برای پخش نیز به پروکسی نیاز دارند، بنابراین این گزینه می‌تواند آن اطلاعات پروکسی را به mpv منتقل کند. توجه داشته باشید که پروکسی‌های SOCKS پشتیبانی نمی‌شوند و URLهای https نیز پروکسی را دور می‌زنند. این یک محدودیت در FFmpeg است.
این گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
7.0
3.5
"مثال"
0.0
• 2
--ytdl-raw-options=username=user,password=pass
• 2
--ytdl-raw-options=force-ipv6=
• 2
--ytdl-raw-options=proxy=[http://127.0.0.1:3128]
• 2
--ytdl-raw-options-append=proxy=http://127.0.0.1:3128
168u
168u
168u
--js-memory-report=<yes|no>
فعال‌سازی گزارش‌دهی حافظه برای اسکریپت‌های javascript در لایهٔ نمایش آمار (stats overlay). این گزینه به طور پیش‌فرض غیرفعال است زیرا دارای بار اضافی بوده و مصرف حافظه را افزایش می‌دهد. این گزینه تنها در صورتی کار خواهد کرد که قبل از شروع mpv فعال شده باشد.
--load-stats-overlay=<yes|no>
فعال‌سازی اسکریپت درونی که اطلاعات مفیدی از پخش را با یک کلید میانبر نمایش می‌دهد (پیش‌فرض: yes). به طور پیش‌فرض، کلید i استفاده می‌شود (I برای دائمی کردن نمایش وضعیت).
--load-console=<yes|no>
فعال‌سازی اسکریپت درونی برای مدیریت ورودی متنی (پیش‌فرض: yes).
--load-commands=<yes|no>
فعال‌سازی اسکریپت درونی برای وارد کردن دستورها در کنسول (پیش‌فرض: yes). به طور پیش‌فرض از کلید ` برای فعال‌سازی آن استفاده می‌شود.
--load-auto-profiles=<yes|no|auto>
فعال‌سازی اسکریپت درونی که اعمال خودکار پروفایل‌ها را انجام می‌دهد (پیش‌فرض: auto). برای جزئیات به بخش Conditional auto profiles مراجعه کنید. مقدار auto اسکریپت را بارگذاری می‌کند، اما اگر هیچ پروفایل شرطی وجود نداشته باشد، بلافاصله آن را از حافظه خارج می‌کند..TP
--load-select=<yes|no>
فعال‌سازی اسکریپت توکار که به شما امکان انتخاب از میان فهرست‌هایی از موارد را می‌دهد (پیش‌فرض:
yes). به طور پیش‌فرض، کلیدهای میانبر آن با کلید g آغاز می‌شوند.
--load-context-menu=<yes|no>
فعال‌سازی اسکریپت توکار که یک منوی زمینه (context menu) را پیاده‌سازی می‌کند. در پلتفرم‌هایی
که یکپارچه‌سازی با منوی زمینه بومی پیاده‌سازی نشده است پیش‌فرض روی yes است،
و در پلتفرم‌هایی که پیاده‌سازی شده روی no تنظیم است.
--load-positioning=<yes|no>
فعال‌سازی اسکریپت توکار که کلیدهای میانبر مختلفی را برای جابجایی کادر (pan) ویدیوها
و تصاویر فراهم می‌کند (پیش‌فرض: yes).
--player-operation-mode=<cplayer|pseudo-gui>
برای فعال‌سازی «حالت شبه گرافیکی» ("pseudo GUI mode")، به این معنی که مقادیر پیش‌فرض برخی
از گزینه‌ها تغییر می‌کنند. معمولاً نباید از این گزینه به طور مستقیم استفاده شود، بلکه
تنها باید به صورت داخلی توسط خود mpv یا اسکریپت‌های ارائه‌شده توسط mpv، فایل‌های پیکربندی یا فایل‌های
desktop. استفاده گردد. برای جزئیات بیشتر PSEUDO GUI MODE را ببینید.
168u
تماشای بعدی (Watch Later)
0.0
--save-position-on-quit
ذخیره همیشگی موقعیت پخش فعلی هنگام خروج، و همچنین هنگامی که دستور
loadfile برای جایگزینی فهرست پخش فعلی استفاده می‌شود. وقتی این فایل
بعداً دوباره پخش شود، پخش‌کننده در آغاز به موقعیت پخش پیشین پرش می‌کند. اگر
پخش یک فایل به روش‌های دیگری متوقف شود این اتفاق نمی‌افتد. برای مثال، رفتن به فایل بعدی
در فهرست پخش، موقعیت را ذخیره نخواهد کرد، و دفعه بعدی که فایل پخش شود، پخش از
ابتدا آغاز خواهد شد.
این رفتار به طور پیش‌فرض غیرفعال است، اما همیشه هنگام خروج از پخش‌کننده با کلیدهای
Shift+Q در دسترس است.
بخش RESUMING PLAYBACK را ببینید.
--watch-later-dir=<path>
دایرکتوری برای ذخیره فایل‌های موقت «تماشای بعدی» ("watch later").
گزینهٔ --watch-later-directory نام مستعاری برای --watch-later-dir است.
اگر این گزینه تنظیم نشده باشد، فایل‌ها در زیردایرکتوری با نام "watch_later"
در زیر دایرکتوری وضعیت محلی (معمولاً ~/.local/state/mpv/) ذخیره خواهند شد.
--resume-playback=<yes|no>
بازیابی موقعیت پخش از زیردایرکتوری پیکربندی watch_later، معمولاً
~/.config/mpv/watch_later/ (پیش‌فرض: yes).
--resume-playback-check-mtime=<yes|no>
تنها در صورتی موقعیت پخش را از زیردایرکتوری پیکربندی watch_later
(معمولاً ~/.config/mpv/watch_later/) بازیابی می‌کند که زمان تغییر (mtime)
فایل با زمان ذخیره‌سازی یکسان باشد. این کار ممکن است از پرش به جلو در فایل‌هایی
با نام یکسان اما دارای محتوای متفاوت جلوگیری کند.
(پیش‌فرض: no)
--watch-later-options=option1,option2,...
گزینه‌هایی که در فایل‌های «تماشای بعدی» ذخیره می‌شوند، در صورتی که از زمان اجرای
mpv تغییر کرده باشند. این مقادیر دفعه بعدی که فایل‌ها پخش شوند بازیابی خواهند شد.
توجه داشته باشید که موقعیت پخش از طریق گزینه start ذخیره می‌شود.
هنگام حذف گزینه‌ها، داده‌های تماشای بعدی موجود تغییر نخواهند کرد و همچنان به
طور کامل اعمال می‌شوند، اما داده‌های تماشای بعدی جدید حاوی این گزینه‌ها نخواهند بود.
برای دیدن فهرستی از ویژگی‌هایی که به طور پیش‌فرض بازیابی می‌شوند،
--help=watch-later-options را ببینید.
این گزینه یک فهرست رشته‌ای است. برای جزئیات List Options را ببینید.
7.0
3.5
"مثال‌ها"
0.0
• 2
--watch-later-options-remove=sid
انتخاب ترک زیرنویس بازیابی نخواهد شد.
• 2
--watch-later-options-remove=volume
--watch-later-options-remove=mute
وضعیت بلندی صدا و بی‌صدا بودن در فایل‌های تماشای بعدی ذخیره نخواهد شد.
• 2
--watch-later-options=start
به جز موقعیت پخش، هیچ گزینه‌ای در فایل‌های تماشای بعدی ذخیره نخواهد شد.
168u
168u
168u
--write-filename-in-watch-later-config
نام فایلی که به آن ارجاع داده شده است به ابتدای فایل‌های پیکربندی تماشای بعدی
اضافه شود. این مقدار صرفاً به صورت یک یادداشت (کامنت) در بالای فایل نوشته می‌شود.
هشدار:
7.0
3.5
این گزینه ممکن است اطلاعات حساس به حریم خصوصی را فاش کند و به همین دلیل
به طور پیش‌فرض غیرفعال است.
168u
168u
--ignore-path-in-watch-later-config
هنگام استفاده از قابلیت تماشای بعدی، مسیر نادیده گرفته شود (یعنی فقط از نام فایل استفاده شود).
(پیش‌فرض: غیرفعال)
0.0
--save-watch-history
ذخیره کردن اینکه کدام فایل‌ها پخش شده‌اند یا خیر. سپس می‌توان این فایل‌ها را با میان‌بر کلیدی پیش‌فرض g-h انتخاب کرد.
هشدار:
7.0
3.5
این گزینه ممکن است اطلاعات حساس به حریم خصوصی را فاش کند و بنابراین به‌طور پیش‌فرض غیرفعال است.
168u
168u
--watch-history-path=<path>
مسیری که تاریخچه تماشا در آن ذخیره می‌شود. پیش‌فرض:
~~state/watch_history.jsonl (بخش FILES را ببینید).
این فایل در هر سطر شامل یک شیء JSON است. فیلد time آن، برچسب زمانی UNIX در هنگام باز شدن فایل، فیلد path آن، مسیر نرمال‌شده و فیلد title آن، عنوان فایل در صورت دردسترس بودن است.
168u
ویدیو (Video)
0.0
--vo=<driver>
مشخص کردن بک‌اند خروجی ویدیویی مورد استفاده. برای جزئیات و شرح درایورهای موجود، بخش VIDEO OUTPUT DRIVERS را ببینید.
--vd=<...>
مشخص کردن یک فهرست اولویت‌بندی‌شده از رمزگشاهای ویدیویی برای استفاده، بر اساس خانواده و نام آن‌ها. برای جزئیات بیشتر --ad را ببینید. هر دوی این گزینه‌ها از نحو و مفهوم یکسانی استفاده می‌کنند؛ تنها تفاوت این است که بر روی فهرست‌های متفاوتی از کدک‌ها عمل می‌کنند.
نکته:
7.0
3.5
برای مشاهده فهرست کامل رمزگشاهای موجود، --vd=help را ببینید.
168u
168u
--vf=<filter1[=parameter1:parameter2:...],filter2,...>
مشخص کردن فهرستی از فیلترهای ویدیویی برای اعمال روی جریان ویدیو. برای جزئیات و شرح فیلترهای موجود، بخش VIDEO FILTERS را ببینید. گزینه‌های جایگزین --vf-add، --vf-pre و --vf-clr برای تغییر فهرستی که قبلاً مشخص شده وجود دارند، اما برای استفاده‌های معمول به آن‌ها نیازی نخواهید داشت.
--untimed
هنگام خروجی دادن فریم‌های ویدیو مکث (sleep) نکن. در صورت استفاده با --audio=no برای بنچمارک‌ها مفید است.
--framedrop=<mode>
صرف‌نظر کردن از نمایش برخی فریم‌ها به‌منظور حفظ همگام‌سازی صدا و تصویر (A/V sync) روی سیستم‌های کُند، یا پخش ویدیوی با نرخ فریم بالا روی خروجی‌های ویدیویی که حد بالایی برای نرخ فریم دارند.
آرگومان، روش‌های دور انداختن فریم را انتخاب می‌کند و می‌تواند یکی از موارد زیر باشد:
7.0
<no>
غیرفعال کردن هرگونه دور انداختن فریم. توصیه نمی‌شود، فقط برای آزمایش است.
<vo>
دور انداختن فریم‌های دارای تأخیر در خروجی ویدیو (پیش‌فرض). در این حالت، همچنان تمام فریم‌ها رمزگشایی و فیلتر می‌شوند، اما روی VO رندر نمی‌شوند. فریم‌های دور انداخته‌شده در سطر وضعیت ترمینال در فیلد Dropped: نشان داده می‌شوند.
در حالت audio sync.، این گزینه فریم‌هایی را که در زمان نمایش منقضی شده‌اند دور می‌اندازد. اگر رمزگشا بیش از حد کُند باشد، از نظر تئوری باید تمام فریم‌ها دور انداخته شوند (زیرا تمام فریم‌ها بسیار دیر می‌رسند) - برای جلوگیری از این وضعیت، اگر نرخ فریم مؤثر به زیر ۱۰ FPS برسد، دور انداختن فریم متوقف می‌شود.
در حالت‌های display-sync. (به --video-sync مراجعه کنید)، این مورد تنها بر نحوه دور انداختن یا تکرار فریم‌ها توسط A/V تأثیر می‌گذارد. اگر این حالت غیرفعال باشد، ناهماهنگی A/V از نظر تئوری دیگر بر زمان‌بندی ویدیو تأثیر نخواهد گذاشت (بسیار شبیه به حالت display-resample-desync). با این حال، حتی در صورت غیرفعال بودن، فریم‌ها همچنان بر اساس نسبت بین فرکانس‌های ویدیو و نمایشگر رد می‌شوند (یعنی دور انداخته می‌شوند).
این حالتِ توصیه‌شده و پیش‌فرض است.
<decoder>
حالت قدیمی دور انداختن فریم مبتنی بر رمزگشا. (این همان --framedrop=yes در نسخه 0.5.x برنامه mpv و قبل از آن است.) این گزینه به رمزگشا دستور می‌دهد فریم‌ها را رد کند (مگر اینکه برای رمزگشایی فریم‌های آینده لازم باشند). ممکن است در سیستم‌های کُند کمک کند، اما می‌تواند خروجی بریده‌بریده و غیرقابل تماشایی ایجاد کند، یا حتی تصویر را کاملاً منجمد سازد.
این حالت از یک سازوکار اکتشافی (heuristic) استفاده می‌کند که ممکن است غیرمنطقی باشد، و به‌طور کلی نمی‌تواند نتایج خوبی به دست دهد، زیرا دور انداختن فریم توسط رمزگشا به شیوه‌ای قابل پیش‌بینی قابل کنترل نیست. توصیه نمی‌شود.
حتی اگر مایل به استفاده از این حالت هستید، برای نتایج بهتر decoder+vo را ترجیح دهید.
گزینه --vd-lavc-framedrop مشخص می‌کند چه فریم‌هایی باید دور انداخته شوند.
<decoder+vo>
فعال کردن هر دو حالت. توصیه نمی‌شود. بهتر از فقط حالت decoder است.
168u
نکته:
7.0
3.5
گزینه --vo=vdpau کد اختصاصی خود را برای حالت framedrop از نوع vo دارد. تفاوت‌های جزئی با سایر VOها ممکن است وجود داشته باشد.
168u
168u
--video-latency-hacks=<yes|no>
فعال‌سازی برخی تمهیدات که معمولاً تأخیر ویدیو را ۱ یا ۲ فریم کاهش می‌دهند (پیش‌فرض: no). توجه داشته باشید زمانی که کد زمان‌بندی پخش‌کننده دیگر ذاتاً نیازی به انجام این کارها نداشته باشد، ممکن است این گزینه بدون اطلاع قبلی حذف شود. مشخص است که استفاده از این گزینه باعث خرابی گزینه‌های دیگری مانند درون‌یابی (interpolation) می‌شود، بنابراین فعال‌سازی آن توصیه نمی‌شود.
این گزینه کارهای زیر را انجام می‌دهد:
7.0
• 2
استفاده از FPS گزارش‌شده توسط demuxer برای دور انداختن فریم. این امر مانع از نیاز پخش‌کننده به رمزگشایی ۱ فریم پیش از موعد می‌شود، که در عمل تأخیر کلی را کاهش می‌دهد. این همچنین بدان معناست که اگر FPS گزارش‌شده توسط demuxer نادرست باشد، یا زنجیره فیلتر ویدیویی FPS را تغییر دهد (مانند deinterlacing)، ممکن است فریم‌های بیش از حد زیاد یا ناکافی دور انداخته شوند.
• 2
غیرفعال کردن انتظار برای اولین فریم ویدیو. به‌طور معمول، پخش‌کننده پیش از شروع مناسب پخش، منتظر می‌ماند تا نخستین فریم ویدیو به‌طور کامل رندر شود. برخی VOها هنگام رندر نخستین فریم، عملیات راه‌اندازی را با تأخیر (lazily) انجام می‌دهند، بنابراین اگر این انتظار انجام نشود، این احتمال وجود دارد که در صورت طول کشیدن رندر فریم نخست بیش از حد نیاز، VO مجبور به دور انداختن برخی فریم‌ها شود.
168u
--display-fps-override=<fps>
تنظیم FPS نمایشگر مورد استفاده با حالت‌های --video-sync=display-*. به‌طور پیش‌فرض، از یک مقدار شناسایی‌شده استفاده می‌شود. به یاد داشته باشید که تنظیم مقداری نادرست (حتی اندکی نادرست) می‌تواند پخش ویدیو را مختل کند. در سیستم‌های چندنمایشگره، این احتمال وجود دارد که مقدار شناسایی‌شده متعلق به نمایشگر اشتباهی باشد.
این گزینه را تنها در صورتی تنظیم کنید که دلیلی داشته باشید مقدار تعیین‌شده خودکار نادرست است.
--hwdec=<api1,api2,...|no|auto|auto-copy>
مشخص کردن رابط برنامه‌نویسی (API) رمزگشایی سخت‌افزاری ویدیو که در صورت امکان باید استفاده شود. اینکه آیا رمزگشایی سخت‌افزاری عملاً انجام می‌شود یا خیر، به کدک ویدیو بستگی دارد. اگر رمزگشایی سخت‌افزاری امکان‌پذیر نباشد، mpv به رمزگشایی نرم‌افزاری بازمی‌گردد.
رمزگشایی سخت‌افزاری به‌طور پیش‌فرض فعال نیست، تا پیکربندی اولیه پس از نصب (out-of-the-box) تا حد امکان قابل اعتماد بماند. با این حال، هنگام استفاده از سخت‌افزارهای مدرن، رمزگشایی سخت‌افزاری ویدیو باید به‌درستی کار کند و باعث کاهش استفاده از CPU و احتمالاً مصرف انرژی کمتر شود. در سیستم‌های قدیمی‌تر، ممکن است به دلیل ناکافی بودن منابع CPU، استفاده از رمزگشایی سخت‌افزاری ضروری باشد؛ و حتی در سیستم‌های مدرن، محتوای به اندازه کافی پیچیده (مانند 4K60 AV1) ممکن است به آن نیاز داشته باشد.
این یک گزینه از نوع فهرست رشته‌ای (string list) است. برای جزئیات بخش List Options را ببینید.
نکته:
7.0
3.5
از کلید میان‌بر Ctrl+h برای تغییر وضعیت رمزگشایی سخت‌افزاری در زمان اجرا استفاده کنید. این کلید این گزینه را بین auto و no جابه‌جا می‌کند.
اگر تصمیم گرفتید که می‌خواهید به‌طور پیش‌فرض از رمزگشایی سخت‌افزاری استفاده کنید، توصیه عمومی این است که رمزگشایی را با گزینه خط فرمان امتحان کنید، و برای خود مطمئن شوید که برای محتوای مد نظرتان همان‌طور که می‌خواهید کار می‌کند. پس از آن، می‌توانید آن را به فایل پیکربندی (config file) خود اضافه کنید.
هنگام آزمایش، باید با استفاده از hwdec=auto شروع کنید، زیرا انتخاب خود را به hwdecهایی محدود می‌کند که به‌طور فعال توسط تیم توسعه پشتیبانی می‌شوند. اگر این به یک رمزگشایی سخت‌افزاری کارآمد منجر نشد، می‌توانید hwdec=auto-unsafe را امتحان کنید تا تلاش کند هر hwdec ممکن را بارگذاری کند، اما اگر auto کار نکرد، احتمالاً باید دقیقاً بدانید کدام hwdec با سخت‌افزار شما مطابقت دارد و مدخل مربوط به آن را در زیر مطالعه کنید.
اگر auto نتایج دلخواه را ایجاد کرد، توصیه می‌کنیم به همان پایبند بمانید و تنها در صورتی یک hwdec مشخص را در فایل پیکربندی خود تنظیم کنید که واقعاً ضروری باشد..sp
اگر از بستهٔ اوبونتو استفاده می‌کنید، به یاد داشته باشید که
/etc/mpv/mpv.conf آن‌ها حاوی hwdec=vaapi است، که وضعیت چندان
ایده‌آلی نیست زیرا ممکن است انتخاب مناسبی برای سیستم شما نباشد، و شاید در
لایه‌های زیرین از یک کتابخانهٔ واسط ناکارآمد استفاده کند. توصیه می‌کنیم
این خط را بردارید یا کلاً فایل را حذف کنید.
168u
168u
نکته:
7.0
3.5
حتی در صورت فعال بودن، رمزگشایی سخت‌افزاری همچنان فقط برای برخی کُدک‌ها در
فهرست مجاز قرار دارد. برای فعال‌سازی رمزگشایی سخت‌افزاری در موارد بیشتر،
--hwdec-codecs را ببینید.
168u
168u
7.0
3.5
"کدام روش را انتخاب کنیم؟"
0.0
• 2
اگر فقط می‌خواهید رمزگشایی سخت‌افزاری را هنگام اجرا فعال کنید، این پارامتر را
تنظیم نکنید، یا hwdec=no را در mpv.conf خود قرار دهید (در توزیع‌هایی
که آن را به‌طور پیش‌فرض اجباری فعال می‌کنند، مانند اوبونتو، کاربرد دارد). از کلید
میانبر پیش‌فرض Ctrl+h برای فعال‌سازی آن در زمان اجرا استفاده کنید.
• 2
اگر مطمئن نیستید، اما می‌خواهید رمزگشایی سخت‌افزاری همیشه به‌طور پیش‌فرض فعال
باشد، hwdec=yes را در mpv.conf خود بگذارید، و در نظر داشته باشید که
این کار ممکن است مشکلاتی ایجاد کند.
• 2
اگر می‌خواهید روش‌های رمزگشایی سخت‌افزاری موجود را بیازمایید،
--hwdec=auto --hwdec-codecs=all را ارسال کرده و به خروجی ترمینال نگاه کنید.
• 2
اگر توسعه‌دهنده هستید، یا می‌خواهید آزمایش‌های دقیقی انجام دهید، ممکن است به هر
یک از دیگر مقادیر ممکن این گزینه نیاز داشته باشید.
168u
168u
168u
این گزینه فهرستی از انواع api جداشده با ویرگول را به همراه مقادیر خاص
مشخصی می‌پذیرد:
7.0
no
همیشه از رمزگشایی نرم‌افزاری استفاده شود (پیش‌فرض)
auto
فعال‌سازی هر رمزگشای سخت‌افزاریِ مجاز (پایین را ببینید)
auto-unsafe
فعال‌سازی اجباری هر رمزگشای سخت‌افزاریِ یافت‌شده (پایین را ببینید)
yes
دقیقاً همانند auto
auto-safe
دقیقاً همانند auto
168u
نکته:
7.0
3.5
مقادیر خاص را می‌توان با نام‌های api ترکیب کرد؛ برای نمونه: vaapi,auto
تلاش می‌کند از hwdec مربوط به vaapi استفاده کند، و اگر شکست بخورد،
از منطق معمول auto پیروی خواهد کرد.
168u
168u
رمزگشاهای سخت‌افزاری دارای پشتیبانی فعال:
7.0
d3d11va
نیازمند --vo=gpu یا --vo=gpu-next همراه با --gpu-context=d3d11 یا
--gpu-context=angle است (تنها در Windows 8 به بالا)
d3d11va-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (تنها در Windows 8 به بالا)
videotoolbox
نیازمند --vo=gpu یا --vo=gpu-next (در macOS 10.8 به بالا)،
یا --vo=libmpv (در iOS 9.0 به بالا) است
videotoolbox-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (macOS 10.8 یا iOS 9.0 به بالا)
vaapi
نیازمند --vo=gpu، --vo=gpu-next، --vo=vaapi یا --vo=dmabuf-wayland است (تنها در Linux)
vaapi-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (Linux با برخی پردازنده‌های گرافیکی یا Windows)
nvdec
نیازمند --vo=gpu یا --vo=gpu-next است (هر پلتفرمی که CUDA در آن در دسترس باشد)
nvdec-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (هر پلتفرمی که CUDA در آن در دسترس باشد)
drm
نیازمند --vo=gpu یا --vo=gpu-next است (تنها در Linux)
drm-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (تنها در Linux)
vulkan
نیازمند --vo=gpu-next است (هر پلتفرمی با قابلیت Vulkan Video Decoding)
vulkan-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (هر پلتفرمی با قابلیت Vulkan Video Decoding)
168u
دیگر hwdecها (تنها در صورتی استفاده کنید که مطمئنید مجبور هستید):
7.0
dxva2
نیازمند --vo=gpu با --gpu-context=d3d11،
--gpu-context=angle یا --gpu-context=dxinterop
است (تنها در Windows)
dxva2-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (تنها در Windows)
vdpau
نیازمند --vo=gpu با --gpu-context=x11، یا
--vo=vdpau است (تنها در Linux)
vdpau-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (تنها در Linux با برخی پردازنده‌های گرافیکی)
mediacodec
نیازمند --vo=gpu --gpu-context=android
یا --vo=mediacodec_embed است (تنها در Android)
mediacodec-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (تنها در Android)
cuda
نیازمند --vo=gpu است (هر پلتفرمی که CUDA در آن در دسترس باشد)
cuda-copy
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (هر پلتفرمی که CUDA در آن در دسترس باشد)
crystalhd
ویدیو را به حافظهٔ RAM سیستم بازمی‌گرداند (هر پلتفرمی که سخت‌افزار از آن پشتیبانی کند)
rkmpp
نیازمند --vo=gpu است (تنها برخی دستگاه‌های RockChip)
168u
گزینهٔ auto تلاش می‌کند تا رمزگشایی سخت‌افزاری را به‌طور خودکار با
استفاده از اولین روش موجود فعال کند، اما فقط روش‌های موجود در فهرست مجاز را
که "ایمن" تلقی می‌شوند مجاز می‌داند. این روش راهکاری معقول برای
فعال‌سازی پیش‌فرض رمزگشایی سخت‌افزاری در فایل پیکربندی به شمار می‌رود (اگرچه
در هر حال نباید چنین کاری انجام دهید؛ ترجیحاً آن را در زمان اجرا با Ctrl+h
فعال کنید). بر خلاف auto-unsafe، این گزینه برای فعال‌سازی روش‌های ناشناخته
یا روش‌هایی که نامناسب بودنشان شناخته شده است تلاشی نخواهد کرد. علاوه بر این،
ممکن است در شرایط دیگری که مشخص شده رمزگشایی سخت‌افزاری ایجاد مشکل می‌کند،
آن را غیرفعال کند؛ اما در حال حاضر این سازوکار نسبتاً ابتدایی است.
(به‌عنوان نمونه‌ای از مواردی که همچنان مشکل‌ساز است: ترکیب‌های خاصی
از HEVC و تراشه‌های Intel در Windows معمولاً موجب کرش کردن mpv می‌شوند،
که به احتمال زیاد ناشی از باگ‌های درایور است.)
گزینهٔ auto-unsafe شبیه به auto است، اما بدون فهرست مجاز.
در حالت کلی، فراتر از اهداف اشکال‌زدایی یا کاربردهای توسعه هرگز نباید نیازی
به استفاده از این حالت داشته باشید. هر رمزگشای سخت‌افزاری ناایمنِ شناخته‌شده‌ای
را که مایل به آزمایش آن هستید، می‌توانید به سادگی به گزینهٔ فهرست اضافه کنید؛
مانند --hwdec=auto,unsafe-hwdec. این مورد همچنان به VO مورد استفاده
بستگی دارد. برای اینکه بدانید کدام --vo و gpu-context برای هر
hwdec لازم است، فهرست بالا را ببینید. برنامه در طول فهرست hwdecهای موجود به
پیش می‌رود تا زمانی که یکی با موفقیت مقداردهی اولیه شود. اگر همهٔ آن‌ها ناموفق
باشند، به رمزگشایی نرم‌افزاری بازمی‌گردد.
گزینهٔ auto-copy تنها حالت‌هایی را انتخاب می‌کند که داده‌های ویدیو را پس
از رمزگشایی به حافظهٔ سیستم بازمی‌گردانند. این گزینه حالت‌هایی مانند
vaapi-copy (و نظایر آن) را انتخاب می‌کند، اما تنها روش‌های موجود در
فهرست مجاز را که "ایمن" به شمار می‌روند مجاز می‌داند. اگر هیچ‌یک از
این روش‌ها کار نکنند، رمزگشایی سخت‌افزاری غیرفعال می‌شود. این حالت معمولاً
تضمین می‌کند که هیچ افت کیفیت اضافه‌ای نسبت به رمزگشایی نرم‌افزاری ایجاد
نشود (با فرض کُدک‌های نوین و جریان ویدیویی بدون خطا)، و امکان پردازش توسط
CPU را با فیلترهای ویدیویی فراهم می‌سازد. این حالت با تمامی فیلترهای ویدیو
و VOها سازگار است.
auto-copy-safe یک نام مستعار برای auto-copy است
auto-copy-unsafe همانند auto-copy است، جز اینکه تمام روش‌ها
را بررسی می‌کند و نه فقط روش‌های موجود در فهرست مجاز که "ایمن" تلقی می‌شوند..sp
از آنجا که این روش‌ها ویدیوی رمزگشایی‌شده را به RAM سامانه بازمی‌گردانند، اغلب کارایی کمتری نسبت به حالت‌های مستقیم دارند و در صورت کمبود منابع CPU، ممکن است برتری چندانی نسبت به رمزگشایی نرم‌افزاری نداشته باشند.
نکته:
7.0
3.5
بیشتر روش‌های غیررونوشتی (non-copy) فقط با بک‌اند پردازنده گرافیکی OpenGL کار می‌کنند. در حال حاضر، تنها روش‌های vaapi، nvdec، cuda و vulkan با Vulkan کار می‌کنند.
168u
168u
حالت vaapi در صورت استفاده با --vo=gpu یا --vo=gpu-next به احتمال زیاد فقط با پردازنده‌های گرافیکی Intel و AMD کار می‌کند. اگر پردازنده گرافیکی از drm modifiers پشتیبانی نکند، به بک‌اند opengl EGL نیاز دارد.
nvdec و nvdec-copy جدیدترین و توصیه‌شده‌ترین روش‌ها برای انجام رمزگشایی سخت‌افزاری روی پردازنده‌های گرافیکی Nvidia هستند.
cuda و cuda-copy یک پیاده‌سازی قدیمی‌تر از رمزگشایی سخت‌افزاری در پردازنده‌های گرافیکی Nvidia هستند که به جای تجزیه‌کننده‌های FFmpeg از تجزیه‌کننده‌های جریان بیت (bitstream parsers) شرکت Nvidia استفاده می‌کنند. این امر می‌تواند منجر به کمبود قابلیت‌ها شود، مانند پخش نادرست محتوای HDR، و nvdec/nvdec-copy باید همیشه ترجیح داده شوند مگر اینکه به طور خاص به الگوریتم‌های deinterlacing شرکت Nvidia نیاز داشته باشید. برای استفاده از این deinterlacing باید گزینهٔ زیر را بدهید:
vd-lavc-o=deint=[weave|bob|adaptive].
مقدار weave را بدهید (یا گزینه را تنظیم‌نشده رها کنید) تا هیچ‌گونه deinterlacing انجام نشود.
7.0
3.5
"کاهش کیفیت با رمزگشایی سخت‌افزاری"
در تئوری، رمزگشایی سخت‌افزاری کیفیت ویدیو را کاهش نمی‌دهد (حداقل برای کدک‌های h264 و HEVC). با این حال، به دلیل محدودیت‌های موجود در APIهای خروجی ویدیو و همچنین باگ‌های موجود در رمزگشاهای سخت‌افزاری واقعی، ممکن است مقداری افت کیفیت یا حتی نتایج کاملاً نادرست رخ دهد. این موضوع در سخت‌افزارهای مدرن تا حد زیادی دیگر مشکلی به حساب نمی‌آید، اما سخت‌افزارهای متنوع زیادی وجود دارد، بنابراین احتیاط شرط عقل است (caveat emptor). مشکلات شناخته‌شده در ادامه آورده شده‌اند، اما این فهرست را نمی‌توان جامع در نظر گرفت، زیرا حتی hwdecهایی که روی نسل‌های سخت‌افزاری خاصی به خوبی کار می‌کنند، ممکن است روی نسل‌های دیگر مشکل‌ساز باشند.
در برخی موارد، تبدیل RGB اجباری است، به این معنی که تبدیل RGB به جای سایه‌زن‌های (shaders) مورد استفاده در --vo=gpu توسط API رمزگشایی سخت‌افزاری انجام می‌شود. این بدان معناست که ممکن است برخی از فضاهای رنگی به درستی نمایش داده نشوند، و فیلترهای خاصی (مانند debanding) نتوانند به شکلی ایده‌آل اعمال شوند. همچنین این حالت معمولاً مقیاس‌دهنده‌های رنگ‌پذیری (chroma scalers) بی‌کیفیت را به جای نمونهٔ مشخص‌شده توسط --cscale تحمیل می‌کند. در موارد دیگر، رمزگشایی سخت‌افزاری می‌تواند عمق بیت تصویر رمزگشایی‌شده را نیز کاهش دهد که ممکن است باعث ایجاد اثر نواری (banding) یا کاهش دقت در فایل‌های ۱۰ بیتی (10-bit) شود.
vdpau همیشه تبدیل RGB را در سخت‌افزار انجام می‌دهد، که از فضاهای رنگی جدیدتر مانند BT.2020 به درستی پشتیبانی نمی‌کند. با این وجود، vdpau از کدگذاری‌های ۱۰ بیتی یا HDR پشتیبانی نمی‌کند، بنابراین بعید است این محدودیت‌ها مطرح شوند.
dxva2 ایمن نیست. به نظر می‌رسد همیشه از BT.601 برای تبدیل اجباری RGB استفاده می‌کند، اما رفتار واقعی به راه‌اندازهای پردازنده گرافیکی بستگی دارد. به نظر می‌رسد برخی راه‌اندازها به RGB با دامنه محدود (limited range) تبدیل می‌کنند که ظاهری رنگ‌پریده به تصویر می‌دهد. علاوه بر رفتار مختص راه‌انداز، تنظیمات سراسری سیستم نیز ممکن است تأثیر بیشتری بر این امر بگذارد. این مسئله می‌تواند حتی با منابع ویدیویی کاملاً معمولی نتایج نادرستی ایجاد کند.
mediacodec ایمن نیست. تبدیل RGB را تحمیل می‌کند (نه با -copy) و میزان موفقیت آن در مدیریت فضاهای رنگی غیراستاندارد مشخص نیست. در موارد نادری که از ۱۰ بیتی پشتیبانی شود، عمق بیت خروجی به ۸ کاهش خواهد یافت.
cuda معمولاً باید ایمن باشد، اما بسته به نحوه ترکیب یا مالتی‌پلکس شدن فایل/جریان، گزارش‌هایی مبنی بر خراب کردن برچسب‌های زمانی (timestamps) وجود دارد که باعث ایجاد فریم‌های ناپایدار و چشمک‌زن می‌شود. همچنین می‌تواند گاهی به دلایل نامشخص باعث افت فریم شدید (framedrops) شود. احتیاط توصیه می‌شود، و nvdec همیشه باید ترجیح داده شود.
crystalhd ایمن نیست. همیشه به 4:2:2 YUV تبدیل می‌کند، که بسته به نحوه زیرنمونه‌برداری رنگ‌پذیری (chroma sub-sampling) در حین تبدیل، ممکن است همراه با اتلاف داده باشد. همچنین به دلیلی نامعلوم، پیکسل گوشه بالا سمت چپ هر فریم را دور می‌ریزد.
اگر با مشکلات عجیب در رمزگشایی، اشکالات فریم یا تغییر رنگ مواجه شدید و گزینهٔ --hwdec فعال است، نخستین کاری که باید امتحان کنید غیرفعال کردن آن است.
168u
168u
--gpu-hwdec-interop=<auto|all|no|name>
این گزینه برای عیب‌یابی مشکلات سازگاری متقابل (interop) در hwdec است. از آنجا که این یک گزینهٔ اشکال‌زدایی است، معناشناسی و رفتار آن ممکن است در هر زمان تغییر کند.
این گزینه برای VOهای gpu و libmpv جهت انتخاب دقیق اینکه کدام بستر (context) سازگاری متقابل hwdec استفاده شود مفید است. همچنین به طور مؤثر می‌تواند برای مسدود کردن بارگذاری بک‌اندهای خاص استفاده شود.
اگر روی auto (پیش‌فرض) تنظیم شود، رفتار به VO بستگی دارد: برای gpu هیچ کاری انجام نمی‌دهد و بستر interop بر حسب تقاضا (هنگامی که رمزگشا پشتیبانی از --hwdec را بررسی می‌کند) بارگذاری می‌شود. برای libmpv که بارگذاری بر حسب تقاضا ندارد، این معادل all است.
یک رشتهٔ خالی معادل auto است.
اگر روی all تنظیم شود، تلاش می‌کند همه بسترهای interop را در زمان ایجاد بستر GL بارگذاری کند.
به غیر از آن، می‌توان یک بک‌اند خاص را تنظیم کرد، و فهرست آن‌ها را می‌توان با help پرس‌وجو کرد (فقط در CLI نرم‌افزار mpv).
تغییرات این گزینه در زمان اجرا نادیده گرفته می‌شوند (هر زمان که رندرکننده ایجاد شود، مقدار فعلی گزینه استفاده می‌شود).
--hwdec-extra-frames=<N>
تعداد فریم‌های پردازنده گرافیکی که رمزگشایی سخت‌افزاری باید از پیش تخصیص دهد (پیش‌فرض: خروجی --list-options را ببینید). اگر این مقدار خیلی کم باشد، ممکن است تخصیص فریم در حین رمزگشایی با شکست مواجه شود، و فریم‌های ویدیو از دست بروند و/یا خراب شوند. تنظیم بیش از حد بالای آن صرفاً حافظه GPU را هدر می‌دهد و هیچ مزیتی ندارد.
این مقدار فقط برای APIهای رمزگشایی سخت‌افزاری که نیازمند پیش‌تخصیص سطوح (surfaces) هستند استفاده می‌شود (نمونه‌های شناخته‌شده شامل d3d11va و vaapi هستند). برای سایر APIها، فریم‌ها بر حسب نیاز تخصیص می‌یابند. جزئیات به پیاده‌سازی‌های libavcodec از رمزگشاهای سخت‌افزاری بستگی دارد.
تعداد سطوح مورد نیاز به شرایط پویای زمان اجرا بستگی دارد. پیش‌فرض یک مقدار ثابت است که تصور می‌شود برای بیشتر کاربردها کافی باشد، اما در شرایط خاص ممکن است کافی نباشد.
--hwdec-image-format=<name>
قالب پیکسلی (pixel format) داخلی مورداستفاده در رمزگشایی سخت‌افزاری را از طریق --hwdec تعیین می‌کند (پیش‌فرض no). مقدار ویژهٔ no یک قالب استاندارد وابسته به پیاده‌سازی را انتخاب می‌کند. بیشتر پیاده‌سازی‌های رمزگشا فقط از یک قالب پشتیبانی می‌کنند، و اگر آن قالب پشتیبانی نشود، راه‌اندازی اولیه آن‌ها با شکست مواجه می‌شود.
برخی پیاده‌سازی‌ها ممکن است از چند قالب پشتیبانی کنند. به ویژه، مشخص شده است که videotoolbox برای عملکرد مناسب روی برخی سخت‌افزارهای قدیمی‌تر به uyvy422 نیاز دارد. d3d11va همیشه می‌تواند از yuv420p استفاده کند که از یک قالب کدر (opaque) بهره می‌برد و احتمالاً هیچ مزیتی ندارد.
--cuda-decode-device=<auto|0..>
دستگاه GPU مورد استفاده برای رمزگشایی را هنگام استفاده از hwdecهای cuda یا nvdec با بک‌اند پردازنده گرافیکی OpenGL، و با hwdecهای cuda-copy یا nvdec-copy در تمام موارد تعیین می‌کند.
برای بک‌اند پردازنده گرافیکی OpenGL، دستگاه پیش‌فرضی که برای رمزگشایی استفاده می‌شود همان دستگاهی است که برای ارائه خروجی gpu استفاده شده است (و در اکثر قریب به اتفاق موارد، تنها یک پردازنده گرافیکی وجود خواهد داشت).
برای hwdecهای نوع copy، دستگاه پیش‌فرض نخستین دستگاه شمارش‌شده توسط کتابخانه‌های CUDA خواهد بود - به هر ترتیبی که این کار انجام گیرد.
برای بک‌اند پردازنده گرافیکی Vulkan، رمزگشایی همیشه باید روی دستگاه نمایشگر انجام شود، و این گزینه هیچ اثری ندارد.
--vaapi-device=<device file|adapter name>
دستگاه DRM را برای vaapi-copy انتخاب می‌کند. این مقدار باید مسیر یک فایل دستگاه DRM باشد. (پیش‌فرض: /dev/dri/renderD128)
در Windows این گزینه نام آداپتور را به عنوان ورودی می‌گیرد. در صورت تنظیم نشدن، آداپتور پیش‌فرض را انتخاب خواهد کرد. در صورت داده شدن نام "help" گزینه‌های جایگزین فهرست می‌شوند.
--panscan=<0.0-1.0>
قابلیت pan-and-scan را فعال می‌کند (برش دادن کناره‌های مثلاً یک ویدیوی 16:9 برای متناسب کردن آن با نمایشگر 4:3 بدون نوارهای سیاه). این بازه کنترل می‌کند که چه مقدار از تصویر برش داده شود. ممکن است با تمام راه‌اندازهای خروجی ویدیو کار نکند.
اگر از گزینهٔ --video-unscaled استفاده شود، این گزینه هیچ اثری ندارد.
تفاوت میان --panscan و --video-zoom در این است که --panscan فقط تا جایی می‌تواند بزرگنمایی کند که عرض یا ارتفاع ویدیو پنجره را پر کند، در حالی که --video-zoom می‌تواند به میزان دلخواه بزرگنمایی یا کوچک‌نمایی کند، و همچنین با --video-unscaled نیز کار می‌کند.
--video-aspect-override=<ratio|no>
نسبت تصویر ویدیو (aspect ratio) را بازنویسی می‌کند، در صورتی که اطلاعات نسبت تصویر در فایل در حال پخش نادرست یا ناموجود باشد.
این مقادیر دارای معنای ویژه‌ای هستند:
7.0
no
استفاده از روش گزینهٔ --video-aspect-method (پیش‌فرض).TP
0
مدیریت نسبت تصویر (aspect ratio) را غیرفعال کرده و فرض می‌کند ویدیو دارای پیکسل‌های مربع است
(منسوخ شده، به جای آن از
--video-aspect-override=no --video-aspect-method=ignore استفاده کنید)
-1
نسبت تصویر کانتینر را اکیداً ترجیح می‌دهد (منسوخ شده، به جای آن از
--video-aspect-override=no --video-aspect-method=container استفاده کنید)
168u
اما توجه داشته باشید که نحوه مدیریت این مقدارهای ویژه ممکن است در آینده تغییر کند.
7.0
3.5
"مثال‌ها"
0.0
• 2
--video-aspect-override=4:3 یا --video-aspect-override=1.3333
• 2
--video-aspect-override=16:9 یا --video-aspect-override=1.7777
• 2
--no-video-aspect-override یا --video-aspect-override=no
168u
168u
168u
--video-aspect-method=<bitstream|container|ignore>
روش پیش‌فرض تعیین نسبت تصویر ویدیو را تنظیم می‌کند (در صورتی که نسبت تصویر
توسط کاربر با --video-aspect-override یا سایر گزینه‌ها بازنویسی نشده باشد).
7.0
container
نسبت تصویر کانتینر را اکیداً ترجیح می‌دهد. ظاهراً این رفتار
پیش‌فرض در VLC است، حداقل با Matroska. توجه داشته باشید که
اگر در کانتینر هیچ نسبت تصویری تنظیم نشده باشد، رفتار مشابه
با bitstream خواهد بود.
bitstream
نسبت تصویر جریان بیت (bitstream) را اکیداً ترجیح می‌دهد، مگر اینکه نسبت تصویر
bitstream تنظیم نشده باشد. ظاهراً این رفتار پیش‌فرض در XBMC/kodi است،
حداقل با Matroska.
ignore
مدیریت نسبت تصویر را غیرفعال کرده و فرض می‌کند ویدیو دارای پیکسل‌های
مربع است.
168u
پیش‌فرض فعلی برای mpv مقدار container است.
در حالت عادی نباید این گزینه را تنظیم کنید. اگر با ویدیویی مواجه شدید که
نسبت تصویر آن در mpv نادرست است اما به نظر می‌رسد در سایر پخش‌کننده‌ها
درست باشد، گزینه‌های مختلف را امتحان کنید.
--video-unscaled=<no|yes|downscale-big>
مقیاس‌بندی ویدیو را غیرفعال می‌کند. اگر پنجره بزرگ‌تر از ویدیو باشد،
نوارهای سیاه اضافه می‌شوند. در غیر این صورت، ویدیو بریده می‌شود، مگر اینکه
گزینه روی downscale-big تنظیم شده باشد، که در این حالت ویدیو متناسب با پنجره
تنظیم می‌شود. ویدیو همچنان می‌تواند تحت تأثیر سایر گزینه‌های --video-... قرار گیرد.
این گزینه اثر --panscan را غیرفعال می‌کند.
توجه داشته باشید که الگوریتم مقیاس‌بندی (scaler) ممکن است حتی در صورت عدم مقیاس‌بندی
ویدیو همچنان استفاده شود. برای مثال، این می‌تواند بر تبدیل کروما (chroma) تأثیر بگذارد.
همچنین اگر منبع از پیکسل‌های غیرمربع استفاده کند (مانند DVDهای عریض آنامورفیک)،
ویدیو همچنان در یک بُعد مقیاس‌بندی خواهد شد.
این گزینه در صورت استفاده از --keepaspect=no غیرفعال می‌شود.
--video-pan-x=<value>, --video-pan-y=<value>
مستطیل ویدیوی نمایش‌داده‌شده را به اندازه مقدار داده‌شده در جهت X یا Y
جابه‌جا می‌کند. واحد بر حسب کسری از اندازه ویدیوی مقیاس‌بندی‌شده است (اندازه
کامل، حتی اگر بخش‌هایی از ویدیو به دلیل panscan یا سایر گزینه‌ها
قابل مشاهده نباشد).
برای مثال، نمایش تمام‌صفحه یک ویدیو روی صفحه‌نمایش 1920x1080 با
--video-pan-x=-0.1 ویدیو را ۱۹۲ پیکسل به چپ و
--video-pan-y=-0.1 ویدیو را ۱۰۸ پیکسل به بالا حرکت می‌دهد.
این گزینه در صورت استفاده از --keepaspect=no غیرفعال می‌شود.
--video-rotate=<0-359|no>
چرخش ویدیو در جهت عقربه‌های ساعت بر حسب درجه. اگر no داده شود، ویدیو
هرگز چرخانده نمی‌شود، حتی اگر فایل حاوی فراداده چرخش باشد. (مقدار چرخش
به فراداده چرخش افزوده می‌شود، به این معنی که مقدار 0 ویدیو را
مطابق با فراداده چرخش می‌چرخاند.)
هنگام استفاده از رمزگشایی سخت‌افزاری بدون copy-back، تنها گام‌های ۹۰ درجه کار می‌کنند،
در حالی که رمزگشایی نرم‌افزاری و روش‌های رمزگشایی سخت‌افزاری که ویدیو را به
حافظه سیستم بازمی‌گردانند، از تمامی مقادیر بین 0 تا 359 پشتیبانی می‌کنند.
--video-crop=<[W[xH]][+x+y]>, --video-crop=<x:y>
برش ویدیو با شروع از آفست x, y به اندازه پیکسل‌های w, h. برش
توسط VO بر روی مستطیل ویدیوی مبدأ (پیش از کشیدگی آنامورفیک) اعمال می‌شود.
مستطیل برشی که در داخل مستطیل ویدیو نباشد، نادیده گرفته خواهد شد.
برخلاف معادل 'lavfi-crop'، این گزینه با hwdec کار می‌کند. زمانی که آفست
حذف شود، ناحیه مرکزی برش داده خواهد شد. تنظیم برش روی یک مقدار خالی
--video-crop=0x0+0+0 برش کانتینر را بازنویسی کرده و برش را غیرفعال می‌کند.
تنظیم برش روی --video-crop="" برش دستی را غیرفعال کرده و در صورت مشخص بودن،
برش کانتینر را بازیابی می‌کند.
--video-zoom=<value>
ضریب مقیاس نمایش ویدیو را با مقدار داده‌شده تنظیم می‌کند. این پارامتر در
مبنای لگاریتم ۲ (log 2) داده می‌شود. برای مثال، --video-zoom=0 بدون مقیاس است،
--video-zoom=1 دو برابر اندازه است، --video-zoom=-2 یک چهارم اندازه
است، و به همین ترتیب.
این گزینه در صورت استفاده از --keepaspect=no غیرفعال می‌شود.
--video-scale-x=<value>, --video-scale-y=<value>
اندازه نمایش ویدیو را در مقدار داده‌شده ضرب می‌کند (پیش‌فرض: 1.0). اگر از
مقداری غیر از پیش‌فرض استفاده شود، با اندازه پنجره متفاوت خواهد بود،
بنابراین ویدیو یا بریده می‌شود و یا نوارهای سیاه اضافه می‌شوند.
این مقدار در مقدار به‌دست‌آمده از --video-zoom و نسبت تصویر
عادی ویدیو ضرب می‌شود. این گزینه در صورت استفاده از
--keepaspect=no غیرفعال می‌شود.
--video-align-x=<-1-1>, --video-align-y=<-1-1>
هنگامی که ویدیو از پنجره بزرگ‌تر باشد، این گزینه‌ها مستطیل نمایش‌داده‌شده را برای
نمایش بخش‌های متفاوتی از ویدیو حرکت می‌دهند. --video-align-y=-1 بالای
ویدیو را نشان می‌دهد، 0 مرکز را نمایش می‌دهد (پیش‌فرض)، و 1
پایین را نمایش می‌دهد.
هنگامی که ویدیو از پنجره کوچک‌تر باشد و --video-recenter غیرفعال
باشد، این گزینه‌ها مستطیل ویدیو را درون حاشیه‌های سیاه جابه‌جا می‌کنند؛ حاشیه‌هایی که
معمولاً در صورت تفاوت نسبت تصویر ویدیو و پنجره، برای پر کردن فضای پنجره اضافه می‌شوند.
--video-align-y=-1 ویدیو را به بالای پنجره منتقل می‌کند
(تنها در پایین یک حاشیه باقی می‌گذارد)، 0 آن را در مرکز قرار می‌دهد،
و 1 ویدیو را در پایین پنجره قرار می‌دهد.
اگر نسبت تصویر ویدیو و صفحه کاملاً منطبق باشند، این گزینه‌ها هیچ کاری انجام نمی‌دهند.
برخلاف --video-pan-x و --video-pan-y، این گزینه‌ها فراتر از مرزهای
ویدیو یا پنجره نمی‌روند و باعث انحراف مستطیل نمایش‌داده‌شده به بیرون
پس از بزرگ‌نمایی نمی‌شوند.
این گزینه در صورت استفاده از --keepaspect=no غیرفعال می‌شود.
--video-recenter=<yes|no>
اینکه آیا در زمانی که ویدیو در جهت مربوطه از پنجره کوچک‌تر می‌شود،
به گونه‌ای عمل شود که گویی --video-align-x و --video-align-y برابر با 0 هستند یا خیر
پس از بزرگ‌نمایی تا جایی که ویدیو بزرگ‌تر از پنجره شود، جابه‌جایی با
--video-align-x و/یا --video-align-y، و سپس کوچک‌نمایی تا زمانی که ویدیو
از پنجره کوچک‌تر شود، این گزینه برای هم‌محور کردن مجدد ویدیو در پنجره
مفید است.
پیش‌فرض: no.
--video-margin-ratio-left=<val>, --video-margin-ratio-right=<val>, --video-margin-ratio-top=<val>, --video-margin-ratio-bottom=<val>
تنظیم حاشیه‌های اضافی ویدیو در هر لبه (پیش‌فرض: 0). هر مقدار نسبتی
از اندازه پنجره در محدوده 0.0-1.0 است. برای مثال، تنظیم گزینه
--video-margin-ratio-right=0.2 در اندازه پنجره 1000 پیکسل،
یک حاشیه ۲۰۰ پیکسلی در سمت راست پنجره اضافه می‌کند.
ویدیو توسط این حاشیه‌ها درون کادر قرار می‌گیرد ("boxed"). اندازه پنجره تغییر نمی‌کند.
به‌ویژه، اندازه پنجره را بزرگ نمی‌کند و حاشیه‌ها به طور پیش‌فرض باعث کوچک‌شدن
مقیاس ویدیو می‌شوند. این مورد ممکن است در آینده تغییر کند یا نکند.
حاشیه‌ها پس از چرخش ۹۰ درجه ویدیو، اما پیش از هرگونه تغییر شکل دیگر
ویدیو اعمال می‌شوند.
این گزینه در صورت استفاده از --keepaspect=no غیرفعال می‌شود.
زیرنویس‌ها بسته به گزینه --sub-use-margins و گزینه‌های مشابه،
همچنان ممکن است از حاشیه‌ها استفاده کنند.
این گزینه‌ها برای OSC ساخته شده‌اند. برخی تصمیمات عجیب، مانند نسبت قرار دادن
مقادیر حاشیه (به جای پیکسل)، به خاطر OSC اتخاذ شده‌اند. این احتمال وجود دارد که
این گزینه‌ها با مواردی که کاربرد عمومی‌تری دارند جایگزین شوند. رفتار این گزینه‌ها
نیز ممکن است برای تطابق بهتر با نیازمندی‌های OSC تغییر کند.
--correct-pts=<yes|no>
گزینه --correct-pts=no برنامه mpv را به حالتی می‌برد که در آن زمان‌بندی ویدیو
با استفاده از یک مقدار ثابت نرخ فریم (یا با استفاده از گزینه
--container-fps-override و یا با استفاده از اطلاعات فایل) تعیین می‌شود. گاهی اوقات،
فایل‌هایی با برچسب‌های زمانی بسیار معیوب می‌توانند در این حالت تا حدی خوب پخش شوند.
توجه داشته باشید که فیلترهای ویدیو، رندر زیرنویس، پرش در ویدیو (شامل hr-seeks و
backstepping)، و همگام‌سازی صدا ممکن است در این حالت کاملاً دچار اختلال شوند.
--container-fps-override=<float>
بازنویسی نرخ فریم (framerate) ویدیو. در صورتی که مقدار اصلی نادرست یا ناموجود باشد مفید است..sp
نکته:
7.0
3.5
تنها در حالت --correct-pts=no کار می‌کند.
168u
168u
--deinterlace=<yes|no|auto>
فعال یا غیرفعال کردن deinterlacing (پیش‌فرض: no).
ویدیوهای درهم‌بافته مصنوعات شانه‌مانند زشتی را نمایش می‌دهند که در حرکات سریع قابل مشاهده است. فعال کردن این گزینه معمولاً فیلتر ویدیویی bwdif را به منظور درهم‌زدایی ویدیو وارد می‌کند، یا به خروجی ویدیو اجازه می‌دهد در صورت پشتیبانی، deinterlacing را اعمال کند.
هنگام استفاده از auto، چنانچه ffmpeg تشخیص دهد فریم ویدیو درهم‌بافته است، mpv یک فیلتر deinterlacing را اعمال خواهد کرد. توجه داشته باشید که در موارد خاص ممکن است موارد مثبت کاذب رخ دهد؛ مانند فایل‌هایی که به عنوان درهم‌بافته کدگذاری شده‌اند در حالی که خود ویدیو در واقع چنین نیست. به همین دلیل auto مقدار پیش‌فرض نیست.
به یاد داشته باشید که استفاده از این فیلتر با هر فیلتر deinterlacing که به صورت دستی وارد شده باشد تداخل خواهد داشت، و اگر ویدیو واقعاً درهم‌بافته نباشد، ظاهر ویدیو را بدتر می‌کند.
--deinterlace-field-parity=<tff|bff|auto>
مشخص کردن زوجیت/ترتیب میدان هنگام درهم‌زدایی (پیش‌فرض: auto).
هر فریم از یک ویدیوی درهم‌بافته به دو میدان تقسیم می‌شود که سپس به طور جداگانه ارسال می‌گردند. میدان بالایی خطوط زوج را نشان می‌دهد در حالی که میدان پایینی خطوط فرد را نشان می‌دهد. هنگام درهم‌زدایی، درهم‌زدا نیاز دارد ترتیب زمانی صحیح میدان‌ها را بداند، در غیر این صورت ویدیو لرزان به نظر خواهد رسید.
گزینه auto به طور خودکار سعی در تشخیص ترتیب میدان‌های ویدیو دارد، tff تقدم میدان بالا را تحمیل می‌کند در حالی که bff تقدم میدان پایین را تحمیل می‌کند.
--frames=<number>
پخش/تبدیل تنها <number> فریم اول ویدیو، سپس خروج.
دستور --frames=0 فایل را بارگیری می‌کند، اما بلافاصله پیش از مقداردهی اولیه پخش خارج می‌شود. (ممکن است برای اسکریپت‌هایی که فقط می‌خواهند برخی ویژگی‌های فایل را مشخص کنند مفید باشد.)
برای پخش فقط‌صوتی، هر مقدار بزرگ‌تر از 0 بلافاصله پس از مقداردهی اولیه پخش را پایان می‌دهد. مقدار 0 همانند ویدیو عمل می‌کند.
--video-output-levels=<outputlevels>
سطوح رنگی RGB مورد استفاده در تبدیل YUV به RGB. به طور معمول، دستگاه‌های خروجی مانند مانیتورهای رایانه شخصی از سطوح رنگی دامنه کامل استفاده می‌کنند. با این حال، برخی تلویزیون‌ها و مانیتورهای ویدیویی انتظار سطوح RGB استودیویی را دارند. ارائه خروجی دامنه کامل به دستگاهی که انتظار ورودی سطح استودیویی دارد منجر به از دست رفتن جزئیات در سیاهی‌ها و سفیدی‌ها می‌شود، و عکس آن به سیاهی‌های خاکستری کدر و سفیدی‌های تار می‌انجامد.
همه VOها از این گزینه پشتیبانی نمی‌کنند. برخی آن را بدون اعلام نادیده می‌گیرند.
دامنه‌های رنگی موجود عبارتند از:
7.0
auto
انتخاب خودکار (معادل دامنه کامل) (پیش‌فرض)
limited
دامنه محدود (16-235 در هر مؤلفه)، سطوح استودیویی
full
دامنه کامل (0-255 در هر مؤلفه)، سطوح رایانه شخصی
168u
نکته:
7.0
3.5
توصیه می‌شود در صورت وجود، به جای آن از گزینه دامنه رنگ درایور گرافیک خود استفاده کنید.
168u
168u
--hwdec-codecs=<codec1,codec2,...|all>
اجازه دادن به رمزگشایی سخت‌افزاری تنها برای فهرست مشخصی از کدک‌ها. مقدار ویژه all همیشه به همه کدک‌ها اجازه می‌دهد.
می‌توانید فهرست کدک‌های مجاز را با mpv --vd=help دریافت کنید. پیشوند را حذف کنید، برای مثال به جای lavc:h264 از h264 استفاده کنید.
به طور پیش‌فرض، این گزینه روی h264,vc1,hevc,vp8,vp9,av1,prores,prores_raw,ffv1,dpx تنظیم شده است. توجه داشته باشید که کدک‌های ویژه شتاب‌دهی سخت‌افزاری مانند h264_vdpau دیگر مرتبط نیستند و در واقع به این شکل از FFmpeg حذف شده‌اند.
این گزینه معمولاً فقط برای GPUهای دارای مشکل لازم است، جایی که یک کدک به عنوان پشتیبانی‌شده گزارش می‌شود، اما رمزگشایی آن بیش از آنکه مفید باشد، مشکل ایجاد می‌کند.
نکته:
7.0
3.5
در برخی درایورهای معیوب (مثلاً NVIDIA در لینوکس)، کاوش برای کدک‌هایی که GPU از آن‌ها پشتیبانی نمی‌کند می‌تواند مقداردهی اولیه پخش ویدیو را به طور غیرضروری کُند سازد. برای برطرف کردن این مشکل، به صراحت فهرستی را مشخص کنید که تنها شامل کدک‌های پشتیبانی‌شده در سیستم باشد.
168u
168u
7.0
3.5
"مثال"
0.0
mpv --hwdec=vdpau --hwdec-codecs=h264,mpeg2video
فعال کردن رمزگشایی vdpau تنها برای h264 و mpeg2.
168u
168u
168u
--hwdec-threads=<N>
تعداد ریسه‌های مورد استفاده برای رمزگشایی سخت‌افزاری (پیش‌فرض: 4). این گزینه، بر خلاف vd-queue، ریسه‌بندی فریم و برش را در libavcodec فعال می‌کند. این کار می‌تواند به خط‌لوله‌ای کردن فرآیند رمزگشایی کمک کرده و عملکرد را بهبود بخشد. رفتار دقیق به API رمزگشای سخت‌افزاری مورد استفاده بستگی دارد.
اگر این مقدار روی 0 تنظیم شود، تعداد ریسه‌ها به طور خودکار بر اساس تعداد هسته‌های CPU در دسترس تعیین خواهد شد.
--hwdec-software-fallback=<yes|no|N>
بازگشت به رمزگشایی نرم‌افزاری در صورت شکست رمزگشای دارای شتاب سخت‌افزاری (پیش‌فرض: 3). اگر این مقدار یک عدد باشد، در صورت عدم موفقیت در رمزگشایی N فریم متوالی، بازگشت فعال می‌شود. مقدار 1 معادل yes است.
تنظیم این مقدار روی یک عدد بزرگ‌تر ممکن است بازگشت در شروع پخش را مختل کند: اگر بازگشتی رخ دهد، بخش‌هایی از فایل رد می‌شود که تقریباً معادل تعداد بسته‌هایی است که رمزگشایی نشده‌اند. مقادیر کمتر از یک تعداد نامشخص این مشکل را نخواهند داشت، زیرا mpv بسته‌ها را نگه می‌دارد.
--vd-lavc-check-hw-profile=<yes|no>
بررسی نمایه رمزگشای سخت‌افزاری (پیش‌فرض: yes). در صورت تنظیم روی no، بالاترین نمایه رمزگشای سخت‌افزاری بدون قید و شرط انتخاب می‌شود و حتی اگر نمایه ویدیو بالاتر از آن باشد، رمزگشایی اجبار می‌گردد. نتیجه به احتمال زیاد یک رمزگشایی معیوب خواهد بود، اما اگر نمایه‌های تشخیص‌داده‌شده یا گزارش‌شده به نحوی نادرست باشند نیز ممکن است کمک کند.
--vd-lavc-film-grain=<auto|cpu|gpu>
فعال‌سازی اعمال film grain روی GPU. اگر رمزگشایی ویدیو روی CPU انجام شود، اعمال film grain روی GPU می‌تواند رمزگشایی را سرعت بخشد. این گزینه همچنین می‌تواند به رمزگشایی سخت‌افزاری کمک کند، زیرا می‌تواند تعداد کپی‌های فریم انجام‌شده را کاهش دهد.
به طور پیش‌فرض، روی auto تنظیم شده است؛ بنابراین اگر VO از اعمال film grain پشتیبانی کند، با آن مانند gpu برخورد می‌شود. اگر VO از این قابلیت پشتیبانی نکند، صرف‌نظر از تنظیمات، با آن مانند cpu برخورد خواهد شد. در حال حاضر، تنها gpu-next از اعمال film grain پشتیبانی می‌کند.
--vd-lavc-dr=<auto|yes|no>
فعال کردن رندر مستقیم (پیش‌فرض: auto). اگر روی yes تنظیم شود، ویدیو مستقیماً در حافظه ویدیویی GPU (یا بافرهای واسط) رمزگشایی می‌شود. این کار می‌تواند بارگذاری ویدیو را تسریع کند و ممکن است در وضوح‌های بالا یا سخت‌افزارهای کُند مفید باشد. این گزینه فقط با VOهای زیر کار می‌کند:
7.0
3.5
0.0
• 2
gpu: حداقل به OpenGL 4.4 یا Vulkan نیاز دارد.
• 2
libmpv: رابط برنامه‌نویسی رندر libmpv دارای پشتیبانی اختیاری است.
168u
168u
168u
گزینه auto سعی می‌کند حدس بزند که آیا DR می‌تواند عملکرد را در سخت‌افزار خاص شما بهبود بخشد یا خیر. در حال حاضر، این گزینه در صورت استفاده از OpenGL روی AMD یا NVIDIA، و در صورت استفاده از Vulkan بدون قید و شرط آن را فعال می‌کند.
استفاده از هر نوع فیلتر ویدیویی که روی داده‌های تصویر می‌نویسد (یا فریم‌های تازه تخصیص‌یافته خروجی می‌دهد)، مسیر کد DR را بدون اعلام غیرفعال می‌کند.
--vd-lavc-bitexact
تنها استفاده از الگوریتم‌های دقیق بیتی در تمامی مراحل رمزگشایی (برای آزمایش کدک).
--vd-lavc-fast (فقط MPEG-1/2 و H.264)
فعال‌سازی بهینه‌سازی‌هایی که با مشخصات قالب مطابقت ندارند و به طور بالقوه باعث ایجاد مشکل می‌شوند؛ مانند واکوانتش ساده‌تر، جبران حرکت ساده‌تر، فرض استفاده از ماتریس کوانتش پیش‌فرض، فرض YUV 4:2:0 و رد کردن چند بررسی برای تشخیص جریان‌های بیتی آسیب‌دیده.
--vd-lavc-o=<key>=<value>[,<key>=<value>[,...]]
ارسال AVOptions به رمزگشای libavcodec. توجه داشته باشید که از وصله‌ای برای غیرضروری کردن o= و ارسال تمام گزینه‌های ناشناخته از طریق سامانه AVOption استقبال می‌شود. فهرست کامل AVOptions را می‌توان در راهنمای FFmpeg یافت..sp
برخی از گزینه‌هایی که قبلاً گزینه‌های مستقیم بودند را می‌توان با این سازوکار تنظیم کرد، مانند bug، gray، idct، ec، vismv، skip_top (قبلاً st بود)، skip_bottom (قبلاً sb بود)، debug.
این یک گزینهٔ فهرستی کلید/مقدار است. برای جزئیات گزینه‌های فهرست (List Options) را ببینید.
7.0
3.5
"مثال"
--vd-lavc-o=debug=pict
168u
168u
--vd-lavc-show-all=<yes|no>
نمایش حتی فریم‌های خراب/ناقص (پیش‌فرض: no). اگر این گزینه روی no تنظیم شده باشد، libavcodec فریم‌هایی که پیش از رمزگشایی فریم کلیدی (keyframe) اولیه رمزگشایی شده‌اند، یا فریم‌هایی که خراب تشخیص داده شده‌اند را در خروجی ارائه نمی‌دهد.
--vd-lavc-skiploopfilter=<skipvalue> (فقط H.264 و HEVC)
فیلتر حلقه (یا همان deblocking) را در حین رمزگشایی نادیده می‌گیرد. از آنجا که فریم فیلترشده قرار است به عنوان مرجعی برای رمزگشایی فریم‌های وابسته استفاده شود، این کار در مقایسه با عدم انجام deblocking روی مثلاً ویدیوی MPEG-2، اثر منفی بیشتری بر کیفیت دارد. با این حال دست‌کم برای HDTV با نرخ بیت (bitrate) بالا، با افت کیفیت قابل مشاهدهٔ ناچیز، افزایش سرعت چشمگیری فراهم می‌کند. کدک‌های دیگر به‌جز H.264 یا HEVC ممکن است پشتیبانی جزئی از این گزینه داشته باشند (اغلب فقط all و none).
مقدار <skipvalue> می‌تواند یکی از موارد زیر باشد:
7.0
none
هرگز نادیده گرفته نشود.
default
نادیده گرفتن مراحل پردازش بیهوده (مثلاً بسته‌های با اندازه ۰ در AVI).
nonref
نادیده گرفتن فریم‌هایی که ارجاع داده نشده‌اند (یعنی برای رمزگشایی فریم‌های دیگر استفاده نمی‌شوند و خطا نمی‌تواند "انباشته شود").
bidir
نادیده گرفتن فریم‌های B (B-Frames).
nonkey
نادیده گرفتن همهٔ فریم‌ها به‌جز فریم‌های کلیدی (keyframes).
all
نادیده گرفتن همهٔ فریم‌ها.
168u
--vd-lavc-skipidct=<skipvalue> (فقط MPEG-1/2/4)
مرحلهٔ IDCT را نادیده می‌گیرد. این کار در تقریباً تمامی موارد کیفیت را بسیار کاهش می‌دهد (برای مقادیر پرش موجود به skiploopfilter مراجعه کنید).
--vd-lavc-skipframe=<skipvalue>
رمزگشایی فریم‌ها را به‌طور کامل نادیده می‌گیرد. افزایش سرعت چشمگیر، اما حرکات مقطع و گاهی ناهنجاری‌های تصویری (artifacts) نامطلوب ایجاد می‌کند (برای مقادیر پرش موجود به skiploopfilter مراجعه کنید).
--vd-lavc-framedrop=<skipvalue>
حالت دور انداختن فریم را برای استفاده با --framedrop تنظیم می‌کند (برای مقادیر پرش موجود به skiploopfilter مراجعه کنید).
--vd-lavc-threads=<N>
تعداد ریسه‌ها (threads) برای استفاده در رمزگشایی. اینکه آیا ریسه‌بندی عملاً پشتیبانی می‌شود یا خیر به کدک بستگی دارد (پیش‌فرض: 0). مقدار 0 به معنی شناسایی خودکار تعداد هسته‌ها روی سیستم و استفاده از آن، تا حداکثر ۱۶ است. می‌توانید بیش از ۱۶ ریسه را به‌صورت دستی تنظیم کنید.
--vd-lavc-assume-old-x264=<yes|no>
فرض می‌کند که ویدیو توسط نسخهٔ قدیمی و معیوب x264 کدگذاری شده است (پیش‌فرض: no). معمولاً این مورد به‌طور خودکار توسط libavcodec تشخیص داده می‌شود. اما اگر جریان بیت فاقد اطلاعات نسخهٔ x264 باشد (یا به نوعی نادیده گرفته شده باشد)، و جریان در واقع توسط یک نسخهٔ قدیمی x264 (بیلد ۱۵۰ یا قبل‌تر) کدگذاری شده باشد، و اگر جریان از کروما (chroma) با نسبت 4:4:4 استفاده کند، آنگاه libavcodec به‌طور پیش‌فرض ویدیوی خراب نمایش می‌دهد. این گزینه پارامتر x264_build در libavcodec را روی 150 تنظیم می‌کند، به این معنی که اگر جریان فاقد اطلاعات نسخه باشد، یا اصلاً توسط x264 کدگذاری نشده باشد، فرض می‌کند که با نسخهٔ قدیمی کدگذاری شده است. فعال کردن این گزینه در صورتی که می‌خواهید فایل‌های خراب شما کار کنند کاملاً ایمن است، اما در تئوری می‌تواند روی جریان‌هایی که توسط x264 کدگذاری نشده‌اند، یا اگر جریان کدگذاری‌شده با نسخه جدیدتر x264 فاقد اطلاعات نسخه باشد، باعث خرابی شود.
--vd-apply-cropping
برخی کدک‌های ویدیویی از برش تصویر (cropping) پشتیبانی می‌کنند، بدین معنا که تنها یک زیرمستطیل از فریم رمزگشایی‌شده برای نمایش در نظر گرفته شده است. این گزینه نحوهٔ مدیریت برش توسط libavcodec را کنترل می‌کند. برش در حین رمزگشایی دارای محدودیت‌های خاصی در رابطه با تراز (alignment) و رمزگشایی سخت‌افزاری است. اگر این گزینه فعال باشد، رمزگشا (decoder) برش را اعمال می‌کند، در غیر این صورت VO آن را مدیریت خواهد کرد. به‌طور پیش‌فرض فعال است.
--swapchain-depth=<N>
اجازه دادن به حداکثر N فریم در حال پردازش (in-flight). این گزینه اساساً تأخیر فریم (frame latency) را کنترل می‌کند. افزایش عمق swapchain می‌تواند خط لوله (pipelining) را بهبود بخشیده و از دست رفتن vsync را مهار کند، اما تأخیر مرئی را افزایش می‌دهد. این گزینه تنها یک حد بالایی تعیین می‌کند؛ پیاده‌سازی می‌تواند در داخل برنامه از تأخیر کمتری نسبت به مقدار درخواستی استفاده کند. تنظیم مقدار ۱ بدین معنی است که VO پیش از شروع رندر فریم بعدی، منتظر می‌ماند تا هر فریم نمایش داده شود. (پیش‌فرض: 2)
0.0
--audio-pitch-correction=<yes|no>
در صورت فعال بودن این گزینه (پیش‌فرض)، پخش با سرعتی متفاوت از حالت عادی به‌طور خودکار فیلتر صوتی scaletempo2 را درج می‌کند. می‌توانید علاوه بر scaletempo2 فیلترهای دیگری درج کرده و پارامترهای آن‌ها را با استفاده از نمایه‌های خودکار شرطی تغییر دهید:
7.0
3.5
[af_insert]
profile-cond=speed ~= 1
profile-restore=copy
af-add=scaletempo2=search-interval=50 # Insert filter and params here.
168u
168u
فیلترهایی که به این روش تنظیم می‌شوند، به جای هم‌پوشانی با مقدار پیش‌فرض scaletempo2، جایگزین آن می‌شوند. اگر چندین فیلتر صوتی با قابلیت تصحیح زیروبمی صدا (pitch correction) درج شده باشند، تنها آخرین فیلتر در زنجیره فیلترها استفاده می‌شود. برای جزئیات در مورد ویژگی‌های هر فیلتر موجود، بخش فیلترهای صوتی را ببینید.
--audio-device=<name>
استفاده از دستگاه صوتی داده‌شده. این شامل نام خروجی صدا، برای مثال alsa، به دنبال آن /، و سپس نام دستگاه خاص آن خروجی صدا است. مقدار پیش‌فرض این گزینه auto است که هر خروجی صوتی را به ترتیب اولویت با دستگاه پیش‌فرض امتحان می‌کند.
می‌توانید دستگاه‌های صوتی را با --audio-device=help فهرست کنید. این دستور نام دستگاه را درون علامت نقل‌قول، به همراه یک توضیح نمایش می‌دهد. نام دستگاه همان چیزی است که باید به گزینه --audio-device ارسال کنید. فهرست دستگاه‌های صوتی را می‌توان از طریق API با استفاده از ویژگی audio-device-list دریافت کرد.
اگرچه این گزینه معمولاً یکی از رشته‌های ارائه‌شده با روش‌های بالا را دریافت می‌کند، می‌توانید دستگاه را برای اکثر AOها با ساخت دستی آن نیز تحمیل کنید. برای مثال name/foobar خروجی صوتی (AO) به نام name را مجبور به استفاده از دستگاه foobar می‌کند. با این حال، گزینه --ao به‌طور اکید یک AO خاص را تحمیل خواهد کرد. برای جلوگیری از سردرگمی، از --ao و --audio-device به‌طور هم‌زمان استفاده نکنید.
7.0
3.5
"مثال برای ALSA"
برنامه‌های MPlayer و mplayer2 از شما می‌خواستند که هر ',' را با '.' و هر ':' را با '=' در نام دستگاه ALSA جایگزین کنید. برای مثال، برای استفاده از دستگاهی به نام dmix:default، باید این کار را انجام می‌دادید:
0.0
3.5
-ao alsa:device=dmix=default
168u
168u
در mpv در عوض می‌توانید استفاده کنید از:
0.0
3.5
--audio-device=alsa/dmix:default
168u
168u
168u
168u
--audio-exclusive=<yes|no>
فعال کردن حالت خروجی انحصاری (exclusive). در این حالت، دسترسی سایر بخش‌های سیستم معمولاً مسدود می‌شود و تنها mpv قادر به پخش صدا خواهد بود.
این گزینه تنها برای برخی از خروجی‌های صوتی کار می‌کند، مانند wasapi، coreaudio، pipewire و audiounit. سایر خروجی‌های صوتی این گزینه را بدون اعلام خطا نادیده می‌گیرند. آن‌ها یا مفهومی برای حالت انحصاری ندارند، یا پیاده‌سازی آن در سمت mpv وجود ندارد.
--audio-fallback-to-null=<yes|no>
اگر هیچ دستگاه صوتی نتواند باز شود، به گونه‌ای رفتار می‌کند که گویی --ao=null داده شده است. این گزینه در ترکیب با --audio-device مفید است: به جای ایجاد خطا در صورت وجود نداشتن دستگاه انتخاب‌شده، کاربر کلاینت API (یا یک اسکریپت Lua) می‌تواند اجازه دهد پخش به‌طور عادی ادامه یابد، و ویژگی‌های current-ao و audio-device-list را بررسی کند تا تصمیمات سطح بالایی درباره نحوه ادامه کار بگیرد.
--ao=<driver>
درایورهای خروجی صوتی مورد استفاده را مشخص کنید. برای جزئیات و توضیحات درایورهای موجود، به AUDIO OUTPUT DRIVERS مراجعه کنید.
--af=<filter1[=parameter1:parameter2:...],filter2,...>
فهرستی از فیلترهای صوتی را برای اعمال روی جریان صوتی مشخص کنید. برای جزئیات و توضیحات فیلترهای موجود، به AUDIO FILTERS مراجعه کنید. گونه‌های مختلف این گزینه شامل --af-add، --af-pre و --af-clr برای اصلاح فهرستی که قبلاً مشخص شده وجود دارند، اما برای استفاده‌های معمول نیازی به آن‌ها نخواهید داشت.
--audio-spdif=<codecs>
فهرستی از کدک‌ها که باید برای آن‌ها از عبور مستقیم صدای فشرده‌شده (compressed audio passthrough) استفاده شود. این قابلیت هم برای S/PDIF کلاسیک و هم برای HDMI کار می‌کند.
کدک‌های ممکن عبارتند از: ac3، dts، dts-hd، eac3، truehd. می‌توان چند کدک را با جدا کردن آن‌ها با , مشخص کرد. dts به هسته DTS با نرخ بیت پایین اشاره دارد، در حالی که dts-hd به DTS MA اشاره می‌کند (پشتیبانی گیرنده و سیستم‌عامل متفاوت است). اگر هم dts و هم dts-hd مشخص شوند، رفتاری معادل با تعیین تنها dts-hd خواهد داشت.
در نسخه‌های قبلی mpv می‌توانستید از --ad برای اجبار بسته‌بندی‌کننده spdif استفاده کنید. این قابلیت دیگر کار نمی‌کند.
هشدار:
7.0
3.5
دلیل چندانی برای استفاده از این گزینه وجود ندارد. HDMI از PCM چندکاناله غیرفشرده پشتیبانی می‌کند، و mpv نیز از رمزگشایی بدون اتلاف DTS-HD از طریق رمزگشای جدید DCA متعلق به FFmpeg (مبتنی بر libdcadec) پشتیبانی می‌نماید.
168u
168u
--ad=<decoder1,decoder2,...[-]>
فهرست اولویتی از رمزگشاهای صوتی را بر اساس نام رمزگشای آن‌ها مشخص کنید. هنگام تعیین رمزگشای مورد استفاده، اولین رمزگشایی که با قالب صوتی مطابقت داشته باشد انتخاب می‌شود. اگر آن در دسترس نباشد، از رمزگشای بعدی استفاده می‌شود. در نهایت، تمام رمزگشاهای دیگری را که صراحتاً توسط این گزینه انتخاب یا رد نشده‌اند، امتحان می‌کند.
قرار دادن - در انتهای فهرست، از بازگشت به سایر رمزگشاهای موجود که در فهرست --ad نیستند جلوگیری می‌کند. این کار معمولاً نباید انجام شود، چرا که انتخاب خودکار معمول رمزگشا را مختل می‌کند! حالت - منسوخ شده است.
7.0
3.5
"مثال‌ها"
0.0
--ad=mp3float
ترجیح دادن رمزگشای mp3float متعلق به FFmpeg بر تمام رمزگشاهای MP3 دیگر.
--ad=help
فهرست کردن تمام رمزگشاهای موجود.
168u
168u
168u
هشدار:
7.0
3.5
فعال‌سازی عبور مستقیم صدای فشرده‌شده (AC3 و DTS از طریق SPDIF/HDMI) با این گزینه امکان‌پذیر نیست. به جای آن از --audio-spdif استفاده کنید.
168u
168u
--volume=<value>
میزان بلندی صدای اولیه را تنظیم می‌کند. مقدار 0 به معنای سکوت و 100 به معنای عدم کاهش یا تقویت صدا است. مقادیر منفی را می‌توان برای سازگاری وارد کرد، اما به عنوان 0 در نظر گرفته می‌شوند.
از نسخه 0.18.1 نرم‌افزار mpv، این گزینه همیشه میکسر داخلی (یا همان حجم صدای نرم‌افزاری) را کنترل می‌کند.
--volume-max=<100.0-1000.0>
حداکثر سطح تقویت صدا را به درصد تنظیم می‌کند (پیش‌فرض: 130). مقدار 130 به شما اجازه می‌دهد تا بلندی صدا را تا حدود دو برابر سطح معمول تنظیم کنید.
--volume-gain=<db>
بهره (gain) بلندی صدا را بر حسب دسی‌بل (dB) تنظیم می‌کند. این مقدار علاوه بر سایر تنظیمات بلندی صدا و بهره اعمال می‌شود.
--volume-gain-max=<0.0-150.0>، --volume-gain-min=<-150.0-0.0>
محدوده بهره بلندی صدا را بر حسب دسی‌بل (dB) تنظیم می‌کند (پیش‌فرض: حداقل -96 دسی‌بل، حداکثر 12 دسی‌بل).
--replaygain=<no|track|album>
بهره بلندی صدا را بر اساس مقادیر replaygain ذخیره‌شده در متاداده فایل تنظیم می‌کند. با --replaygain=no (پیش‌فرض)، هیچ تنظیمی انجام نمی‌شود. با --replaygain=track، بهره قطعه اعمال می‌شود. با --replaygain=album، در صورت وجود بهره آلبوم اعمال شده و در غیر این صورت به بهره قطعه بازمی‌گردد.
--replaygain-preamp=<db>
بهره پیش‌تقویت بر حسب دسی‌بل (dB) جهت اعمال بر بهره replaygain انتخاب‌شده (پیش‌فرض: 0).
--replaygain-clip=<yes|no>
اجازه دادن به برش خوردن صدا (clip) بر اثر بهره حجم صدا (پیش‌فرض: no). اگر این گزینه فعال نباشد، mpv به‌طور خودکار با کاهش دادن بهره از برش خوردن صدا جلوگیری می‌کند..TP
--replaygain-fallback=<db>
میزان بهره (Gain) بر حسب dB برای اعمال در حالتی که فایل فاقد برچسب‌های replay gain باشد. این گزینه در صورتی که منطق replaygain به هر نحوی غیرفعال باشد نیز همواره اعمال می‌شود. با اعمال این گزینه، هیچ‌یک از دیگر گزینه‌های replaygain اعمال نخواهند شد.
--audio-delay=<sec>
تأخیر صدا بر حسب ثانیه (مقدار ممیز شناور مثبت یا منفی). مقادیر مثبت صدا را به تأخیر می‌اندازند، و مقادیر منفی ویدیو را به تأخیر می‌اندازند.
--mute=<yes|no>
تنظیم وضعیت بی‌صدا بودن صدا در هنگام راه‌اندازی (پیش‌فرض: no).
همچنین ببینید: --volume.
--audio-demuxer=<[+]name>
استفاده از این نوع demuxer صدا هنگام به‌کارگیری --audio-file. برای اجبار، از یک '+' پیش از نام استفاده کنید؛ این کار برخی بررسی‌ها را نادیده می‌گیرد. نام demuxer را همان‌طور که توسط --audio-demuxer=help چاپ می‌شود وارد کنید.
--ad-lavc-ac3drc=<level>
انتخاب سطح فشرده‌سازی محدوده پویایی (Dynamic Range Compression) برای جریان‌های صوتی AC-3.
<level> یک مقدار ممیز شناور بین 0 تا 1 است، که در آن 0 به معنای عدم فشرده‌سازی (پیش‌فرض) و 1 به معنای فشرده‌سازی کامل است (بخش‌های با صدای بلند آرام‌تر شده و برعکس). مقادیر تا 6 نیز پذیرفته می‌شوند، اما کاملاً آزمایشی هستند. این گزینه تنها زمانی تأثیر دارد که جریان صوتی AC-3 حاوی اطلاعات فشرده‌سازی محدوده مورد نیاز باشد.
استاندارد ایجاب می‌کند که DRC به صورت پیش‌فرض فعال باشد، اما mpv (و برخی پخش‌کننده‌های دیگر) برای حفظ کیفیت صدای بهتر این موضوع را نادیده می‌گیرند.
--ad-lavc-downmix=<yes|no>
درخواست یا عدم درخواست ترکیب کانال‌ها به پایین (downmixing) از رمزگشا (پیش‌فرض: no).
برخی رمزگشاها مانند AC-3، AAC و DTS می‌توانند در حین رمزگشایی صدا را بازترکیب کنند. تعداد کانال‌های خروجی درخواستی با گزینه --audio-channels مشخص می‌شود. برای پخش صدای فراگیر روی یک سیستم استریو مفید است.
--ad-lavc-threads=<0-16>
تعداد ریسه‌ها (threads) برای استفاده در رمزگشایی. این‌که آیا چندریسگی عملاً پشتیبانی می‌شود یا خیر به کدک بستگی دارد. در زمان نگارش این راهنما، این ویژگی تنها برای برخی از کدک‌های بدون اتلاف (lossless) پشتیبانی می‌شود. مقدار 0 به معنای تشخیص خودکار تعداد هسته‌های سیستم و استفاده از آن تا سقف حداکثر 16 است (پیش‌فرض: 1).
--ad-lavc-o=<key>=<value>[,<key>=<value>[,...]]
ارسال AVOptions به رمزگشای libavcodec. توجه داشته باشید، از ارائه‌ی وصله‌ای برای بی‌نیاز کردن پیشوند o= و ارسال تمام گزینه‌های ناشناخته از طریق ساختار AVOption استقبال می‌شود. فهرست کامل AVOptions در راهنمای FFmpeg یافت می‌شود.
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
--ad-spdif-dtshd=<yes|no>, --dtshd=<yes|no>
در صورت استفاده از عبور مستقیم (passthrough) برای DTS، از DTS-HD استفاده شود.
هشدار:
7.0
3.5
این گزینه و فعال‌سازی passthrough از طریق --ad منسوخ شده‌اند و به جای آن‌ها باید از --audio-spdif=dts-hd استفاده شود.
168u
168u
--audio-channels=<auto-safe|auto|layouts>
کنترل کانال‌های صوتی هدایت‌شده به خروجی (مانند فراگیر در مقابل استریو). حالت‌های زیر ممکن هستند:
7.0
• 2
2.0
--audio-channels=auto-safe
استفاده از چیدمان کانال ترجیحی سیستم. در صورتی که چیدمانی وجود نداشته باشد (مانند زمان دسترسی مستقیم به یک دستگاه سخت‌افزاری به جای میکسر سیستم)، حالت استریو را اجبار می‌کند. برخی از خروجی‌های صوتی ممکن است هرگونه چیدمانی را بپذیرند و خودشان عمل downmixing را انجام دهند.
این گزینه پیش‌فرض است.
168u
• 2
2.0
--audio-channels=auto
ارسال هر آنچه که دستگاه صوتی می‌پذیرد، با ترجیح دادن چیدمان کانال اصلی صدا. می‌تواند در اتصالات HDMI مشکلاتی ایجاد کند (هشدار زیر را ببینید).
168u
• 2
2.0
--audio-channels=layout1,layout2,...
فهرستی از چیدمان‌های کانال مجاز که با , از هم جدا شده‌اند.
از نظر فنی، این کار تنها خروجی زنجیره فیلترها را بر اساس مناسب‌ترین چیدمان منطبق در فهرست تنظیم کرده و نتیجه را به رابط صوتی (audio API) تحویل می‌دهد. این احتمال وجود دارد که audio API چیدمان کانال متفاوتی را برگزیند.
استفاده از این حالت برای خروجی سخت‌افزاری مستقیم، به‌ویژه روی HDMI توصیه می‌شود (هشدار HDMI زیر را ببینید).
168u
• 2
2.0
--audio-channels=<stereo|mono>
اجبار به downmix به استریو یا مونو. این‌ها حالت‌های خاصی از مورد قبلی هستند. (برای پیامدهای آن پاراگراف‌های زیر را ببینید.)
168u
168u
اگر فهرستی از چیدمان‌ها مشخص شود، هر مورد می‌تواند یک نام صریح چیدمان کانال (مانند 5.1) یا یک شماره کانال باشد. شماره کانال‌ها به چیدمان‌های پیش‌فرض اشاره دارند، برای مثال ۲ کانال به استریو، و ۶ به 5.1 اشاره دارد.
برای چیدمان‌های پیش‌فرض تعریف‌شده، خروجی --audio-channels=help را ببینید. این خروجی همچنین نام بلندگوها را فهرست می‌کند که می‌تواند برای مشخص کردن چیدمان‌های دلخواه کانال استفاده شود (مانند fl-fr-lfe که معادل 2.1 است).
اگر فهرست چیدمان‌های کانال تنها دارای ۱ مورد باشد، از رمزگشا درخواست می‌شود خروجی متناسب با آن را تولید کند. این حالت گاهی منجر به اجرای decoder-downmix می‌شود، که ممکن است با downmix عادی mpv متفاوت باشد. (تنها برخی از رمزگشاها مانند AC-3، AAC یا DTS از بازترکیب صدا پشتیبانی می‌کنند. می‌توانید از --ad-lavc-downmix=no استفاده کنید تا رمزگشا را وادار به تولید خروجی با چیدمان بومی خود کنید.) یک پیامد این است که --audio-channels=stereo باعث اجرای decoder downmix می‌شود، در حالی که گزینه‌های auto یا auto-safe هرگز این کار را نخواهند کرد، حتی اگر در نهایت حالت استریو را انتخاب کنند. این به این دلیل رخ می‌دهد که تصمیم‌گیری پیرامون استفاده از decoder downmix مدت‌ها پیش از باز شدن دستگاه صوتی انجام می‌گیرد.
اگر چیدمان کانال فایل چندرسانه‌ای (یعنی رمزگشا) و چیدمان کانال AO مطابقت نداشته باشند، mpv تلاش خواهد کرد تا یک فیلتر تبدیل اضافه کند. ممکن است لازم باشد چیدمان کانال میکسر سیستم را تغییر دهید تا به خروجی دلخواه خود دست یابید، زیرا mpv روی آن کنترلی ندارد. یک راهکار دیگر در برخی AOها، استفاده از --audio-exclusive=yes برای دور زدن کامل میکسر سیستم است.
هشدار:
7.0
3.5
استفاده از auto می‌تواند در انتقال صدا از طریق HDMI مشکلاتی ایجاد کند. سیستم‌عامل معمولاً همه چیدمان‌های کانالی را که _امکان_ عبور از طریق HDMI دارند گزارش می‌کند، حتی اگر گیرنده (receiver) از آن‌ها پشتیبانی نکند. در صورتی که گیرنده یک چیدمان کانال پشتیبانی‌نشده را دریافت کند، رفتارهای پیش‌بینی‌نشده‌ای رخ می‌دهد، مانند حذف کانال‌های اضافه یا ایجاد نویز صوتی.
توصیه می‌شود یک فهرست مجاز (whitelist) صریح از چیدمان‌های مورد نظر خود تعیین کنید. برای مثال، برای اکثر گیرنده‌های صوتی/تصویری که از طریق HDMI متصل هستند و از 7.1 پشتیبانی می‌کنند، این مقدار مناسب خواهد بود: --audio-channels=7.1,5.1,stereo
168u
168u
--audio-display=<no|embedded-first|external-first>
مشخص می‌کند که هنگام پخش فایل‌های صوتی تصویر جلد (cover art) نمایش داده شود یا خیر و با چه اولویتی. نخستین تصویر یافت‌شده نمایش داده خواهد شد و تصاویر اضافه به عنوان ترک‌های ویدیویی در دسترس خواهند بود.
7.0
no
غیرفعال کردن کامل نمایش ویدیو هنگام پخش فایل‌های صوتی.
embedded-first
نمایش تصاویر تعبیه‌شده و تصویر جلد خارجی، با اولویت دادن به تصاویر تعبیه‌شده (پیش‌فرض).
external-first
نمایش تصاویر تعبیه‌شده و تصویر جلد خارجی، با اولویت دادن به فایل‌های خارجی.
168u
این گزینه هیچ تأثیری بر فایل‌های دارای ترک‌های ویدیویی عادی ندارد.
--audio-files=<files>
پخش صدا از یک فایل خارجی همزمان با تماشای یک ویدیو.
این یک گزینه از نوع فهرست مسیر است. برای جزئیات به List Options مراجعه کنید.
--audio-file=<file>
نام مستعار فقط برای خط فرمان/فایل پیکربندی برای --audio-files-append. هر بار استفاده از این گزینه یک ترک صوتی جدید اضافه خواهد کرد. جزئیات آن مشابه نحوه عملکرد --sub-file است.
--audio-format=<format>
انتخاب قالب نمونه (sample format) استفاده‌شده برای خروجی از لایه فیلتر صوتی به کارت صدا. مقادیری که <format> می‌تواند بپذیرد، در ادامه در بخش توضیحات فیلتر صوتی format فهرست شده‌اند..TP
--audio-samplerate=<Hz>
انتخاب نرخ نمونه‌برداری خروجی مورد استفاده (البته کارت‌های صدا در این زمینه محدودیت‌هایی دارند). اگر فرکانس نمونه‌برداری انتخاب‌شده با رسانهٔ جاری متفاوت باشد، فیلتر صوتی داخلی swresample برای جبران این تفاوت به لایهٔ فیلتر صوتی افزوده خواهد شد.
--gapless-audio=<no|yes|weak>
تلاش برای پخش پی‌درپی فایل‌های صوتی بدون ایجاد سکوت یا وقفه در لحظهٔ تغییر فایل. پیش‌فرض: weak.
7.0
no
غیرفعال کردن پخش بدون وقفه (gapless audio).
yes
دستگاه صوتی با استفاده از پارامترهای مشخص‌شده برای اولین فایل پخش‌شده باز می‌شود و سپس برای پخش بدون وقفه باز نگه داشته می‌شود. این بدان معناست که اگر برای مثال اولین فایل نرخ نمونه‌برداری پایینی داشته باشد، ممکن است فایل‌های بعدی نیز به همان نرخ نمونه‌برداری پایین، مجدداً نمونه‌برداری (resample) شوند که به کاهش کیفیت صدا منجر خواهد شد. اگر فایل‌هایی با پارامترهای گوناگون را پخش می‌کنید، استفاده از گزینه‌هایی مانند --audio-samplerate و --audio-format را جهت تعیین صریح قالب خروجی مشترک مد نظر قرار دهید.
weak
به‌طور معمول، دستگاه صوتی باز نگه داشته می‌شود (با استفاده از قالبی که در ابتدا با آن راه‌اندازی شده بود). اگر قالب صوتی خروجی رمزگشا (decoder) تغییر کند، دستگاه صوتی بسته شده و دوباره باز می‌شود. این بدان معناست که معمولاً برای فایل‌هایی که با تنظیمات مشابه کدگذاری شده‌اند، صدایی بدون وقفه دریافت خواهید کرد، اما در سایر موارد ممکن است بدون وقفه نباشد. شرایط دقیقی که بر اساس آن دستگاه صوتی باز نگه داشته می‌شود، جزو جزئیات پیاده‌سازی است و می‌تواند از نسخه‌ای به نسخهٔ دیگر تغییر کند. در حال حاضر، حتی اگر قالب نمونه تغییر کند، تا زمانی که قالب‌های نمونه قابل تبدیل باشند، دستگاه باز می‌ماند. اگر هنگام پخش صدا، ویدیو همچنان در حال پخش باشد، تلاش برای استفاده از حالت بدون وقفه نیز صراحتاً متوقف خواهد شد.
168u
نکته:
7.0
3.5
این ویژگی به شیوه‌ای ساده پیاده‌سازی شده و برای ادامهٔ پخش در زمان جابه‌جایی از فایلی به فایل دیگر، به بافر دستگاه خروجی صدا متکی است. اگر پخش فایل جدید به‌کندی آغاز شود، برای نمونه به این دلیل که از یک مکان دوردست در شبکه پخش می‌شود یا اینکه تنظیمات حافظهٔ موقت (cache) را طوری تعیین کرده‌اید که نیازمند زمان برای پر شدن اولیه باشد، ممکن است صدای بافرشده پیش از آنکه پخش فایل جدید شروع شود، به پایان برسد.
168u
168u
--initial-audio-sync=<yes|no>
هنگام آغاز پخش یک فایل ویدیویی یا پس از رویدادهایی مانند پرش (seeking)، mpv به‌طور پیش‌فرض جریان صوتی را اصلاح می‌کند تا با افزودن سکوت در ابتدا یا بریدن نمونه‌های آغازین، صدا را از همان برچسب زمانیِ ویدیو شروع کند. غیرفعال کردن این گزینه موجب می‌شود که پخش‌کننده مانند نسخه‌های قدیمی‌تر mpv رفتار کند: پخش ویدیو و صدا بلافاصله آغاز می‌شود حتی اگر برچسب‌های زمانی شروع آن‌ها متفاوت باشد، و سپس زمان‌بندی ویدیو در صورت نیاز به‌تدریج تنظیم می‌شود تا بعداً همگام‌سازی صحیح حاصل شود.
--audio-file-auto=<no|exact|fuzzy|all>
بارگذاری فایل‌های صوتی اضافی که با نام فایل ویدیویی مطابقت دارند. این پارامتر نحوهٔ تطبیق فایل‌های صوتی خارجی را مشخص می‌کند.
7.0
no
عدم بارگذاری خودکار فایل‌های صوتی خارجی (پیش‌فرض).
exact
بارگذاری نام فایل رسانه به همراه پسوند فایل صوتی.
fuzzy
بارگذاری تمامی فایل‌های صوتی که حاوی نام فایل رسانه هستند.
all
بارگذاری تمامی فایل‌های صوتی موجود در پوشهٔ جاری و مسیرهای مشخص‌شده در --audio-file-paths.
168u
--audio-exts=ext1,ext2,...
پسوندهای فایل صوتی برای تطبیق در زمان استفاده از --audio-file-auto، --autocreate-playlist یا --directory-filter-types.
این گزینه یک فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
برای مشاهدهٔ پسوندهای پیش‌فرض از --help=audio-exts استفاده کنید.
--audio-file-paths=<path1:path2:...>
مشابه گزینهٔ --sub-file-paths، اما برای فایل‌های صوتی بارگذاری‌شده به‌صورت خودکار.
این گزینه یک فهرست مسیر است. برای جزئیات به List Options مراجعه کنید.
--audio-client-name=<name>
نام برنامه‌ای که پخش‌کننده به رابط برنامه‌نویسی صوتی (audio API) گزارش می‌دهد. در صورتی که بخواهید یک نمایه صوتی متفاوت را تحمیل کنید (برای مثال در PulseAudio) یا نام برنامهٔ خود را در هنگام استفاده از libmpv تنظیم نمایید، می‌تواند کاربردی باشد.
--audio-set-media-role=<yes|no>
در صورت فعال بودن، mpv نقش رسانه (media role) مناسب را روی سرورهای صوتی پشتیبانی‌شده تنظیم می‌کند تا مشخص کند آیا mpv در حال پخش یک ویدیو است یا یک فایل صرفاً صوتی. این گزینه به‌طور پیش‌فرض غیرفعال است زیرا تنظیم بلندی صدا به ازای هر نقش رسانه اغلب موجب رفتارهای غیرمنتظره و گیج‌کننده شده است.
پیش‌فرض: no.
--audio-buffer=<seconds>
تنظیم حداقل بافر خروجی صدا. دستگاه صوتی ممکن است در صورت تمایل، عملاً بافر بزرگ‌تری ایجاد کند. اگر دستگاه بافر کوچک‌تری بسازد، صدای مازاد در یک بافر نرم‌افزاری اضافی ذخیره می‌شود.
بزرگ‌تر کردن این مقدار ممکن است سبب واکنش کندتر soft-volume و سایر فیلترها شود، در زمان تغییر سرعت پخش مشکلات جانبی ایجاد کند، و در هنگام تغییر قالب صوتی پخش‌کننده را متوقف (block) سازد. بافر کوچک‌تر نیز ممکن است به افت و قطعی لحظه‌ای صدا منجر شود.
این گزینه فقط باید برای اهداف آزمایشی استفاده شود. اگر مقداری غیر از مقدار پیش‌فرض به‌طور چشمگیری کارساز بود، باید با توسعه‌دهندگان mpv ارتباط برقرار شود.
پیش‌فرض: 0.2 (۲۰۰ میلی‌ثانیه).
--audio-stream-silence=<yes|no>
سخت‌افزارهای صوتی مصرفی سودجویانه (مانند گیرنده‌های صوتی/تصویری A/V) اغلب صدای اولیه‌ای را که از طریق HDMI ارسال می‌شود نادیده می‌گیرند. این اتفاق ممکن است با هر بار توقف و از سرگیری جریان صدا روی HDMI رخ دهد. برای جبران این مسئله، می‌توانید این گزینه را فعال کنید تا در زمان پرش (seek)، صدا متوقف و دوباره راه‌اندازی نشود و وقفه‌ها با سکوت پر گردند. به همین ترتیب، در هنگام مکث (pause)، صدا متوقف نشده و در طول مکث، سکوت پخش می‌شود. توجه داشته باشید که در صورت عدم انتخاب هرگونه ترک صوتی، دستگاه صوتی همچنان بلافاصله بسته خواهد شد.
تمام خروجی‌های صوتی (AOs) از این قابلیت پشتیبانی نمی‌کنند.
هشدار:
7.0
3.5
این کار برخی رفتارهای ظریف پخش‌کننده مانند همگام‌سازی صدا/تصویر (A/V-sync) و مدیریت سرریز منفی بافر (underrun) را دستخوش تغییر می‌کند. اکیداً توصیه می‌شود این گزینه را فعال نکنید.
168u
168u
--audio-wait-open=<secs>
استفاده از این گزینه در کنار --audio-stream-silence=yes منطقی است. در صورت تعیین این گزینه، پخش‌کننده پس از باز کردن دستگاه صوتی، به مدت زمان ثانیه‌های تعیین‌شده پیش از ارسال داده‌های صوتی واقعی به آن، منتظر می‌ماند. این گزینه در صورتی که سخت‌افزار گران‌قیمت شما ۱ یا ۲ ثانیهٔ ابتدایی داده‌های صوتی ارسال‌شده را نادیده می‌گیرد و دور می‌ریزد، مفید خواهد بود. در صورتی که --audio-stream-silence=yes تنظیم نشده باشد، این گزینه احتمالاً فقط زمان را هدر خواهد داد.
نکته:
0.0
3.5
تغییر شیوه‌بندی و موقعیت برای تمام زیرنویس‌ها کار نمی‌کند. زیرنویس‌های مبتنی بر تصویر (DVD، Bluray/PGS، DVB) بنا به دلایل بنیادین قابل تغییر نیستند. زیرنویس‌ها در قالب ASS به‌طور معمول عمداً دستکاری نمی‌شوند، اما لغو و جایگزینی (override) آن‌ها با استفاده از --sub-ass-override قابل کنترل است.
168u
168u
0.0
--sub-demuxer=<[+]name>
تحمیل نوع demuxer زیرنویس برای --sub-file. نام demuxer را همان‌گونه که توسط --sub-demuxer=help چاپ می‌شود وارد کنید.
--sub-lavc-o=<key>=<value>[,<key>=<value>[,...]]
ارسال AVOptions به رمزگشای libavcodec. توجه داشته باشید، از ارائه‌ی وصله‌ای که نیاز به =o را رفع کرده و تمام گزینه‌های ناشناخته را از طریق سامانهٔ AVOption منتقل کند استقبال می‌شود. فهرست کامل AVOptions در دفترچه راهنمای FFmpeg قابل مشاهده است.
این گزینه از نوع فهرست key/value است. برای جزئیات بیشتر به بخش List Options مراجعه کنید.
--sub-delay=<sec>
به تأخیر انداختن زیرنویس‌های اصلی به مدت <sec> ثانیه. مقدار می‌تواند منفی باشد.
--secondary-sub-delay=<sec>
به تأخیر انداختن زیرنویس‌های ثانویه به مدت <sec> ثانیه. مقدار می‌تواند منفی باشد.
--sub-files=<file-list>, --sub-file=<filename>
افزودن یک فایل زیرنویس به فهرست زیرنویس‌های خارجی.
اگر از --sub-file تنها یک‌بار استفاده کنید، این فایل زیرنویس به‌صورت پیش‌فرض نمایش داده می‌شود.
اگر --sub-file چندین بار استفاده شود، می‌توان زیرنویس مورد نظر را هنگام اجرا با چرخیدن میان قطعه‌های (tracks) زیرنویس تعویض کرد. نمایش هم‌زمان دو زیرنویس امکان‌پذیر است: از --sid برای انتخاب شاخص زیرنویس اول و از --secondary-sid برای انتخاب شاخص دوم استفاده کنید. (شاخص در خروجی ترمینال پس از --sid= در فهرست جریان‌ها چاپ می‌شود.)
گزینهٔ --sub-files یک گزینه از نوع فهرست مسیر است (برای جزئیات بیشتر به List Options مراجعه کنید)، و می‌تواند چندین نام فایل را که با : (در یونیکس) یا ; (در ویندوز) از هم جدا شده‌اند بپذیرد، در حالی که --sub-file تنها یک نام فایل را می‌پذیرد اما می‌تواند چند بار برای افزودن فایل‌های متعدد استفاده شود. از نظر فنی، --sub-file تنها یک نام مستعار در خط فرمان/فایل پیکربندی برای --sub-files-append است.
--secondary-sid=<ID|auto|no>
انتخاب یک جریان زیرنویس ثانویه. این گزینه شبیه به --sid عمل می‌کند. در صورت انتخاب زیرنویس ثانویه، به‌صورت پیش‌فرض به‌شکل toptitle (یعنی در بالای صفحه) در کنار زیرنویس عادی پردازش و نمایش داده می‌شود، و راهکاری برای نمایش هم‌زمان دو زیرنویس فراهم می‌سازد.
چند نکتهٔ احتیاطی در رابطه با این قابلیت وجود دارد. به‌عنوان مثال، زیرنویس‌های تصویرنگاشت (bitmap) همواره در موقعیت پیشین خود رندر می‌شوند، بنابراین انتخاب یک زیرنویس بیت‌مپ به‌عنوان زیرنویس ثانویه منجر به هم‌پوشانی زیرنویس‌ها خواهد شد. در صورت غیرفعال بودن تصویر ویدیو، زیرنویس‌های ثانویه هرگز در ترمینال نمایش داده نمی‌شوند.
نکته:
7.0
3.5
شیوه‌بندی و تفسیر هرگونه برچسب قالب‌بندی برای زیرنویس ثانویه غیرفعال است. در ساختار داخلی برنامه، دقیقاً از سازوکار مشابه با --sub-ass=no جهت حذف شیوه‌بندی استفاده می‌شود.
168u
168u
نکته:
7.0
3.5
اگر جریان زیرنویس اصلی دارای برچسب‌های قالب‌بندی باشد که زیرنویس را در بالای صفحه نمایش می‌دهند، با زیرنویس ثانویه تداخل و هم‌پوشانی پیدا خواهد کرد. برای جلوگیری از این اتفاق، می‌توانید از --sub-ass=no استفاده کنید تا شیوه‌بندی در جریان زیرنویس اصلی غیرفعال شود.
168u
168u
--sub-scale=<0-100>
ضریب اندازهٔ فونت زیرنویس متنی (پیش‌فرض: 1).
نکته:
7.0
3.5
این گزینه بر زیرنویس‌های ASS نیز اثر می‌گذارد و ممکن است موجب رندر نادرست زیرنویس گردد. با احتیاط استفاده شود، یا به‌جای آن از --sub-font-size استفاده کنید.
168u
168u
--sub-scale-signs=<yes|no>
هنگامی که روی yes تنظیم شود، --sub-scale را روی حروف‌چینی (یا "علامت‌ها / signs") نیز اعمال می‌کند. زمانی که روی no تنظیم شود، --sub-scale تنها روی گفت‌وگوها (dialogue) اعمال خواهد شد. تفکیک بین گفت‌وگو و علائم بر پایهٔ بهترین تخمین ممکن انجام می‌شود و کاملاً مصون از خطا نیست (پیش‌فرض: no).
--sub-scale-by-window=<yes|no>
مشخص می‌کند که آیا زیرنویس‌ها بر اساس اندازهٔ پنجره مقیاس‌بندی شوند یا خیر (پیش‌فرض: yes). در صورتی که این مورد غیرفعال شود در حالی که --sub-scale-with-window روی yes تنظیم شده باشد، تغییر اندازهٔ پنجره سبب تغییر اندازهٔ فونت زیرنویس نخواهد شد.
تنها بر زیرنویس‌های متنی ساده اثر می‌گذارد (یا فرمت ASS در صورتی که مقدار --sub-ass-override به حد کافی بالا تنظیم شده باشد).
--sub-scale-with-window=<yes|no>
تنظیم اندازهٔ قلم زیرنویس به‌صورت متناسب با اندازهٔ پنجره (پیش‌فرض: yes). در صورتی که این گزینه غیرفعال شود در حالی که --sub-scale-by-window روی yes باشد، اندازهٔ قلم زیرنویس در عوض به‌صورت متناسب با اندازهٔ ویدیو مقیاس‌بندی می‌شود.
تنها بر زیرنویس‌های متنی ساده اثر می‌گذارد (یا فرمت ASS در صورتی که مقدار --sub-ass-override به حد کافی بالا تنظیم شده باشد).
نکته:
7.0
3.5
به‌طور پیش‌فرض، اندازهٔ قلم زیرنویس همگام با اندازهٔ پنجره مقیاس‌بندی می‌شود. جهت ثابت نگه‌داشتن اندازهٔ فونت، تنها مقدار --sub-scale-by-window را روی no تنظیم کنید. برای مقیاس‌بندی اندازهٔ فونت بر اساس اندازهٔ ویدیو، تنها --sub-scale-with-window را روی no قرار دهید. تنظیم هم‌زمان هر دو گزینه روی no بی‌معنی است.
168u
168u
--sub-ass-scale-with-window=<yes|no>
مشابه --sub-scale-with-window است، اما تنها بر زیرنویس‌های قالب ASS تأثیر می‌گذارد. مانند --sub-scale، این مورد می‌تواند موجب به هم ریختن نمایش زیرنویس‌های ASS شود.
پیش‌فرض: no.
--embeddedfonts=<yes|no>
استفاده از فونت‌های تعبیه‌شده در فایل‌های کانتینر Matroska و اسکریپت‌های ASS (پیش‌فرض: yes). این فونت‌ها می‌توانند برای رندر زیرنویس‌های SSA/ASS مورد استفاده قرار گیرند.
--sub-pos=<0-150>
مشخص کردن موقعیت قرارگیری زیرنویس‌ها بر روی صفحه. این مقدار، موقعیت عمودی زیرنویس را بر مبنای درصد ارتفاع صفحه تعیین می‌کند. مقدار 100 موقعیت اصلی است، که معمولاً انتهای مطلق صفحه نبوده بلکه حاشیه‌ای میان پایین صفحه و زیرنویس وجود دارد. مقادیر بالاتر از 100، زیرنویس را به سمت پایین‌تر جابه‌جا می‌کنند.
هشدار:
7.0
3.5
در صورتی که مقدار این گزینه بیشتر از 100 تنظیم شود، ممکن است زیرنویس‌های متنی (برخلاف زیرنویس‌های تصویری) بریده شوند. این یک محدودیت از سوی کتابخانهٔ libass است.
این گزینه بر زیرنویس‌های ASS نیز اثر می‌گذارد، و علاوه بر مشکل فوق ممکن است به رندر نادرست زیرنویس منجر شود.
استفاده از --sub-margin-y می‌تواند این هدف را به شیوهٔ بهتری برآورده کند.
168u
168u
--secondary-sub-pos=<0-150>
مشخص کردن موقعیت زیرنویس‌های ثانویه بر روی صفحه. این گزینه مشابه --sub-pos است اما برای زیرنویس‌های ثانویه اعمال می‌شود.
--sub-speed=<0.1-10.0>
ضرب کردن برچسب‌های زمانی رخدادهای زیرنویس در مقدار تعیین‌شده. می‌تواند برای تصحیح سرعت پخش در قالب‌های زیرنویس فریم‌محور به کار رود. تنها بر زیرنویس‌های متنی تأثیر دارد.
7.0
3.5
"مثال"
--sub-speed=25/23.976 زیرنویس‌های فریم‌محوری را که با فرض نرخ فریم 23.976 بارگذاری شده‌اند، با سرعت 25 FPS پخش می‌کند.
168u
168u
--sub-ass-style-overrides=<[Style.]Param=Value[,...]>
جایگزینی و نادیده‌گرفتن برخی از پارامترهای استایل (style) یا اطلاعات اسکریپت (script info).
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات بیشتر به بخش List Options مراجعه کنید.
7.0
3.5
"مثال‌ها"
0.0
• 2
--sub-ass-style-overrides=FontName=Arial,Default.Bold=1
• 2
--sub-ass-style-overrides=PlayResY=768
168u
168u
نکته:
7.0
3.5
استفاده از این گزینه ممکن است منجر به رندر نادرست زیرنویس شود.
168u
168u
--sub-hinting=<none|light|normal|native>
تنظیم نوع hinting قلم. <type> می‌تواند موارد زیر باشد:
7.0
none
بدون hinting (پیش‌فرض)
light
بهینه‌ساز خودکار (autohinter) نرم‌افزار FreeType، حالت سبک (light)
normal
بهینه‌ساز خودکار FreeType، حالت عادی (normal)
native
بهینه‌ساز ذاتی قلم (native hinter)
168u
هشدار:
7.0
3.5
فعال کردن hinting می‌تواند منجر به جای‌گیری نادرست متن (در شرایطی که قرار است
با پس‌زمینه ویدیو مطابقت داشته باشد) شود، یا روانی پویانمایی‌ها را در برخی
اسکریپت‌های ناقص یا ناشیانه نوشته‌شده‌ی ASS کاهش دهد. توصیه می‌شود
از این گزینه استفاده نکنید، مگر اینکه واقعاً مورد نیاز باشد.
168u
168u
--sub-line-spacing=<value>
تنظیم مقدار فاصله خطوط برای رندرکننده SSA/ASS.
--sub-shaper=<simple|complex>
تنظیم موتور چیدمان متن استفاده‌شده توسط libass.
7.0
simple
فقط از Fribidi استفاده می‌کند، سریع است، برخی زبان‌ها را به درستی رندر نمی‌کند
complex
از HarfBuzz استفاده می‌کند، کندتر است، پشتیبانی گسترده‌تری از زبان‌ها دارد
168u
مقدار complex پیش‌فرض است. اگر libass به همراه HarfBuzz کامپایل نشده باشد،
libass بدون نمایش پیام به simple بازمی‌گردد.
--sub-ass-prune-delay=<-1|seconds>
تنظیم تاخیر برای هرس کردن (pruning) خودکار رویدادها از حافظه در libass. در صورت
فعال بودن، رویدادهای زیرنویس پس از اینکه زمان پایان آن‌ها از تاخیر مشخص‌شده
قدیمی‌تر شد، از حافظه حذف می‌شوند.
7.0
-1
هرس خودکار را غیرفعال می‌کند (پیش‌فرض).
seconds
مشخص می‌کند هرس چند ثانیه پس از اینکه یک رویداد دیگر نمایش داده نمی‌شود
باید رخ دهد. مقدار 0 رویدادها را به محض محو شدن از صفحه هرس می‌کند.
168u
نکته:
7.0
3.5
اگر رویدادها هرس شده باشند، این گزینه پرش زیرنویس (sub-seek) و رندر مجدد
رویدادهایی را که قبلاً "دیده شده‌اند" و نیاز به رندر دوباره هنگام تغییر جهت
پخش از جلو به عقب در حین پخش دارند، دچار اختلال می‌کند.
168u
168u
--sub-glyph-limit=<value>
تنظیم حداکثر تعداد گلیف‌های کش‌شده در حافظه نهان libass برای ترک
زیرنویس. مقدار 0 یعنی libass از مقدار پیش‌فرض خود استفاده می‌کند.
پیش‌فرض: 0.
--sub-bitmap-max-size=<value>
تنظیم حداکثر اندازه حافظه نهان بیت‌مپ در حافظه نهان libass برای ترک زیرنویس. مقدار 0
یعنی libass از مقدار پیش‌فرض خود استفاده می‌کند. این گزینه مقادیر را بر حسب مگابایت می‌پذیرد.
پیش‌فرض: 0.
--sub-ass-styles=<filename>
بارگذاری تمام سبک‌های SSA/ASS موجود در فایل مشخص‌شده و استفاده از آن‌ها برای
رندر زیرنویس‌های متنی. نحو فایل دقیقاً مشابه بخش [V4 Styles] / [V4+ Styles] در SSA/ASS است.
نکته:
7.0
3.5
استفاده از این گزینه ممکن است منجر به رندر نادرست زیرنویس شود.
168u
168u
--sub-ass-override=<no|yes|scale|force|strip>
کنترل اینکه آیا جایگزینی‌های سبک کاربر (user style overrides) باید اعمال شوند یا خیر.
توجه داشته باشید که تمام این جایگزینی‌ها سعی می‌کنند تا حدی هوشمندانه تشخیص دهند که
آیا یک زیرنویس یک "نشان/تابلو" در نظر گرفته می‌شود یا خیر و تا حد امکان غیرمخرب عمل کنند.
7.0
no
رندر زیرنویس‌ها همان‌طور که توسط اسکریپت‌های زیرنویس مشخص شده است، بدون جایگزینی.
yes
اعمال تمام گزینه‌های جایگزینی سبک --sub-ass-*. تغییر دادن پیش‌فرض هر یک
از این گزینه‌ها می‌تواند منجر به رندر نادرست زیرنویس شود.
scale
مشابه yes، اما همچنین --sub-scale را اعمال می‌کند (پیش‌فرض).
force
مشابه yes، اما همچنین تمام گزینه‌های --sub-* را اجبار می‌کند. می‌تواند رندر را
به راحتی دچار اختلال کند. گزینه‌های خاصی اگر به‌طور بالقوه بیش از حد مخرب باشند،
جایگزین نمی‌شوند.
strip
حذف بنیادین تمام برچسب‌ها و سبک‌های ASS از زیرنویس. این معادل گزینه‌های قدیمی
--no-ass / --no-sub-ass است.
168u
این گزینه علیرغم نامش، برخی جایگزینی‌های زیرنویس‌های بیت‌مپ و همچنین برچسب‌های HTML
در قالب‌هایی مانند SRT را نیز کنترل می‌کند.
--secondary-sub-ass-override=<no|yes|scale|force|strip>
کنترل اینکه آیا جایگزینی‌های سبک زیرنویس ثانویه کاربر باید اعمال شوند یا خیر. این گزینه
دقیقاً مانند --sub-ass-override عمل می‌کند.
پیش‌فرض: strip.
--sub-ass-force-margins
در صورتی که زیرنویس‌ها در قالب ASS باشند، قرار دادن عنوان‌های بالایی و زیرنویس‌ها
را در حاشیه‌های سیاه (در صورت وجود) فعال می‌کند.
پیش‌فرض: no.
--sub-use-margins
در صورتی که زیرنویس‌ها در قالب متن ساده باشند (یا ASS اگر --sub-ass-override
به اندازه کافی بالا تنظیم شده باشد)، قرار دادن عنوان‌های بالایی و زیرنویس‌ها را در حاشیه‌های
سیاه (در صورت وجود) فعال می‌کند.
پیش‌فرض: yes.
--sub-ass-use-video-data=<none|aspect-ratio|all>
کنترل می‌کند که چه اطلاعاتی در مورد جریان ویدیو به libass ارسال شود.
هر گزینه‌ای به جز all با استاندارد ASS تعریف‌شده توسط VSFilter ناسازگار است؛
استانداردی که رفتار اکثر اسکریپت‌ها و رندرکننده‌های زیرنویس از جمله libass آن را هدف قرار می‌دهد.
ویژگی‌های جریان ویدیو برای شبیه‌سازی دقیق مفاهیم VSFilter لازم است و دریغ کردن آن‌ها
احتمالاً برای اکثر فایل‌ها منجر به خرابی رندر زیرنویس خواهد شد.
بنابراین توصیه می‌شود این گزینه را تنها در صورت نیاز و بر اساس هر فایل به صورت انتخابی تغییر دهید.
7.0
none
هیچ اطلاعاتی از جریان ویدیو را فوروارد نکن.
aspect-ratio
فقط نسبت ابعاد (aspect ratio) را فوروارد کن؛ برای سایر خصوصیات از مقادیر جایگزین استفاده می‌شود.
این کار رفتار را در وضوح‌های مختلف ویدیو یکنواخت می‌کند.
all
تمام اطلاعات موجود، به‌ویژه وضوح ذخیره‌سازی (storage resolution) را فوروارد کن.
168u
برای انواع خاصی از فایل‌های خراب ASS که برای چندین وضوح ویدیویی بدون تنظیم سرآیندهای
LayoutRes یا تطبیق جلوه‌های تحت تأثیر بازتولید شده‌اند، ممکن است مطلوب باشد
که اطلاعات وضوح ذخیره‌سازی از libass دریغ شود تا از رندر یکنواخت در میان وضوح‌های مختلف
اطمینان حاصل گردد. از جمله موارد متأثر می‌توان به چرخش‌های سه‌بعدی و تاری‌ها (blurs) اشاره کرد.
هنگام مواجهه با چنین فایل‌هایی، تنظیم روی aspect-ratio را امتحان کنید.
فایل‌های حتی خراب‌تر در ویدیوی آنامورفیک (anamorphic) ممکن است کشیدگی نیز از خود نشان دهند،
مگر اینکه اطلاعات نسبت تصویر نیز جعل شود؛ در این حالت می‌توانید استفاده از none را امتحان کنید.
این گزینه روی ویدیوهای غیر آنامورفیک هرگز اثری ندارد..sp
پیش‌فرض: all
--sub-ass-video-aspect-override=<no|ratio>
امکان ارسال هر نسبت ابعاد دلخواهی را به libass به جای نسبت ابعاد
واقعی ویدیو فراهم می‌کند. نسبت ابعاد صفر همانند no است.
اگر sub-ass-use-video-data روی none تنظیم شده باشد، این گزینه هیچ تأثیری ندارد.
--sub-vsfilter-bidi-compat=<yes|no>
تشخیص ضمنی متن دوجهته (bidi) را به جای auto روی ltr تنظیم می‌کند تا با پیش‌فرض
ASS مطابقت داشته باشد. این کار همچنین افزونه‌های ناسازگار libass را غیرفعال می‌کند. این مورد
در حال حاضر شامل تطبیق جفت قلاب‌ها بر اساس الگوریتم بازنگری‌شدهٔ متن دوطرفه یونیکد معرفی‌شده در Unicode 6.3 است،
و همچنین بر نحوهٔ جداسازی و پردازش توالی‌های BiDi، و شکست نرم خطوط در متن یونیکد تأثیر می‌گذارد.
این گزینه فقط بر زیرنویس‌های متنی ساده (غیر ASS) تأثیر می‌گذارد. پیش‌فرض: no.
--sub-ass-vsfilter-color-compat=<basic|full|force-601|no>
رنگ‌ها را مانند (xy-)vsfilter دستکاری (mangle) می‌کند (پیش‌فرض: basic). از نظر تاریخی،
VSFilter از فضای رنگی آگاه نبود. تا زمانی که فضای رنگی استفاده‌شده برای ویدیوهای SD (یعنی BT.601)
به کار می‌رفت، مشکلی وجود نداشت. اما هنگامی که همه‌چیز به HD (یعنی BT.709) تغییر یافت، VSFilter
همچنان رنگ‌های RGB را به BT.601 تبدیل می‌کرد، آن‌ها را در فریم ویدیو رندر می‌کرد، و فریم را به خروجی
ویدیو تحویل می‌داد، که آن هم از BT.709 برای تبدیل به RGB استفاده می‌کرد. نتیجه، رنگ‌های به‌هم‌ریخته در زیرنویس
بود. بعدها، وصله‌های غیراصولی به ساختار فرمت ASS افزوده شد تا نحوهٔ دستکاری رنگ‌ها کنترل شود.
7.0
basic
تنها در صورتی که زیرنویس‌ها نشان دهند که این کار لازم است، دستکاری BT.601->BT.709
را مدیریت می‌کند (پیش‌فرض).
full
هدر کامل YCbCr Matrix را با تمام فضاهای رنگی ویدیویی پشتیبانی‌شده توسط libass
و mpv مدیریت می‌کند. این کار ممکن است در شرایط خاص و نادر منجر به خرابی‌های اساسی شود
و لزوماً برای سازگاری مورد نیاز نیست (احتمالاً)، و به همین دلیل پیش‌فرض نیست.
force-601
دستکاری BT.601->BT.709 را صرف‌نظر از هدرهای زیرنویس یا فضای رنگی
ویدیو اجبار می‌کند.
no
دستکاری رنگ را کاملاً غیرفعال می‌کند. تمام رنگ‌ها RGB خواهند بود.
168u
انتخاب هر مقداری به‌جز no باعث می‌شود رنگ زیرنویس به فضای رنگی ویدیو وابسته شود،
و برای مثال از نظر تئوری امکان استفادهٔ مجدد از یک اسکریپت زیرنویس با فایل ویدیویی دیگر وجود نخواهد داشت.
گزینهٔ --sub-ass-override بر نحوهٔ تفسیر این گزینه تأثیری ندارد.
--stretch-dvd-subs=<yes|no>
هنگام پخش ویدیوهای آنامورفیک، زیرنویس‌های DVD را برای نمایش بهتر قلم‌ها
روی DVDهایی که مسترینگ ضعیفی دارند، می‌کشد. این سوییچ زمانی که ویدیو با پیکسل‌های مربع ذخیره شده باشد
تأثیری ندارد - هرچند برای ورودی DVD چنین چیزی ممکن نیست.
بسیاری از استودیوها هنگام ساخت DVD تمایل به استفاده از قلم‌های بیتی (bitmap) طراحی‌شده برای پیکسل‌های مربعی دارند،
که باعث می‌شود قلم‌ها هنگام پخش در دستگاه‌های پخش DVD کشیده به نظر برسند. این گزینه آن‌ها را اصلاح می‌کند،
اما به قیمت احتمال به‌هم‌خوردن تراز برخی زیرنویس‌ها (مانند ترجمه تابلوها و علائم).
به‌طور پیش‌فرض غیرفعال است.
--stretch-image-subs-to-screen=<yes|no>
زیرنویس‌های DVD و سایر زیرنویس‌های تصویری را با نادیده گرفتن حاشیه‌های ویدیو،
به اندازهٔ صفحه می‌کشد. این گزینه اثری مشابه --sub-use-margins برای زیرنویس‌های
متنی دارد، با این تفاوت که خود متن نیز کشیده خواهد شد، نه اینکه فقط مکان آن تغییر یابد.
(دست‌کم در حالت کلی این امر اجتناب‌ناپذیر است، زیرا یک نقشهٔ بیتی تصویری در تئوری می‌تواند از یک تصویر واحد
تشکیل شده باشد که کل صفحه را می‌پوشاند، و پخش‌کننده نمی‌داند بخش‌های متنی دقیقاً در کجا قرار دارند.)
این گزینه زیرنویس‌ها را به‌درستی نمایش نمی‌دهد. با احتیاط استفاده شود.
به‌طور پیش‌فرض غیرفعال است.
--image-subs-video-resolution=<yes|no>
وضوح زیرنویس تصویری را با وضوح ویدیو جایگزین می‌کند (پیش‌فرض: no). به‌طور معمول،
بوم زیرنویس درون بوم ویدیو جا داده می‌شود (مثلاً به‌صورت letterbox). تنظیم این گزینه
اندازه ویدیو را به عنوان اندازه بوم زیرنویس استفاده می‌کند. این کار می‌تواند برای آزمایش
زیرنویس‌های خراب مفید باشد، که معمولاً زمانی رخ می‌دهد که ویدیو تبدیل (transcode) شده
و تلاش بر حفظ زیرنویس‌های قدیمی بوده است.
--image-subs-hdr-peak=<sdr|video|10-10000>
سطح سفیدی پخشی (diffuse white) زیرنویس تصویری را بر حسب cd/m² (نیت) برای
خروجی HDR کنترل می‌کند (پیش‌فرض: sdr). مقدار sdr برابر ۲۰۳ cd/m² برای سفیدی
استاندارد SDR است، در حالی که video از متادیتای ویدیو استفاده می‌کند. (فقط در --vo=gpu-next)
این گزینه همچنین بر روشنایی زیرنویس تصویری در نگاشت تن (tone mapping) HDR
هنگام استفاده از --blend-subtitles=<yes|video> تأثیر می‌گذارد.
--sub-hdr-peak=<sdr|10-10000>
سطح سفیدی پخشی زیرنویس متنی و OSD را بر حسب cd/m² (نیت) برای
خروجی HDR کنترل می‌کند (پیش‌فرض: sdr). مقدار sdr برابر ۲۰۳ cd/m² برای سفیدی
استاندارد SDR است. (فقط در --vo=gpu-next)
این گزینه همچنین بر روشنایی زیرنویس متنی در نگاشت تن HDR
هنگام استفاده از --blend-subtitles=<yes|video> تأثیر می‌گذارد.
--sub-ass=<yes|no>
رندر زیرنویس‌های ASS به‌صورت بومی (پیش‌فرض: yes).
نکته:
7.0
3.5
این گزینه منسوخ شده و --sub-ass-override=strip جایگزین آن شده است. شما همچنین
ممکن است برای دستیابی به همان رفتار به --embeddedfonts=no نیاز داشته باشید. همچنین،
استفاده از --sub-ass-override=style بدون خراب کردن بیش از حد زیرنویس‌ها،
نتایج بهتری ارائه می‌دهد.
168u
168u
اگر --sub-ass=no مشخص شده باشد، تمام برچسب‌ها و تعاریف سبک حذف شده و هنگام نمایش
نادیده گرفته می‌شوند. رندرکنندهٔ زیرنویس در عوض از سبک قلم مشخص‌شده توسط گزینه‌های
--sub- استفاده می‌کند.
نکته:
7.0
3.5
استفاده از --sub-ass=no ممکن است منجر به رندر نادرست یا کاملاً خراب زیرنویس‌های
ASS/SSA شود. این کار گاهی اوقات می‌تواند برای بازنویسی اجباری استایل زیرنویس‌های ASS مفید باشد،
اما به‌طور کلی باید از آن اجتناب شود.
168u
168u
--sub-auto=<no|exact|fuzzy|all>
بارگذاری فایل‌های زیرنویس اضافی متناظر با نام فایل ویدیو. این پارامتر مشخص می‌کند که
فایل‌های زیرنویس خارجی چگونه تطبیق داده شوند. گزینهٔ exact به‌طور پیش‌فرض
فعال است.
7.0
no
فایل‌های زیرنویس خارجی را به‌طور خودکار بارگذاری نکن.
exact
نام فایل رسانه را همراه با پسوند فایل زیرنویس و احتمالاً پسوندهای
زبان بارگذاری کن (پیش‌فرض).
fuzzy
تمام زیرنویس‌های حاوی نام فایل رسانه را بارگذاری کن.
all
تمام زیرنویس‌های موجود در دایرکتوری جاری و دایرکتوری‌های --sub-file-paths را بارگذاری کن.
168u
--sub-auto-exts=ext1,ext2,...
پسوندهای زیرنویس برای بررسی و مطابقت هنگام استفاده از --sub-auto. توجه داشته باشید
که تغییر این فهرست بر آنچه mpv هنگام کشیدن و رها کردن به عنوان زیرنویس تشخیص می‌دهد نیز
تأثیر می‌گذارد.
این گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
برای مشاهدهٔ پسوندهای پیش‌فرض از --help=sub-auto-exts استفاده کنید.
--sub-codepage=<codepage>
می‌توانید از این گزینه برای تعیین صفحه کد (codepage) زیرنویس استفاده کنید. برای حدس زدن مجموعه
نویسه‌ها (charset) از uchardet استفاده خواهد شد. (اگر mpv با uchardet کامپایل نشده باشد، در این صورت
utf-8 پیش‌فرض موثر خواهد بود.)
مقدار پیش‌فرض این گزینه auto است که تشخیص خودکار را فعال می‌کند.
مراحل زیر به‌ترتیب برای تعیین صفحه کد نهایی انجام می‌شوند:
7.0
• 2
اگر صفحه کد مشخص‌شده دارای + باشد، از همان صفحه کد استفاده می‌شود
• 2
اگر داده‌ها شبیه به UTF-8 به نظر برسند، فرض می‌شود که UTF-8 هستند
• 2
اگر --sub-codepage روی یک صفحه کد خاص تنظیم شده باشد، از آن استفاده می‌شود
• 2
uchardet اجرا می‌شود و در صورت موفقیت، از آن استفاده می‌شود
• 2
در غیر این صورت، از UTF-8-BROKEN استفاده می‌شود
168u
7.0
3.5
"مثال‌ها"
0.0
• 2
--sub-codepage=latin2 در صورتی که ورودی UTF-8 نباشد، از Latin 2 استفاده کن..IP • 2
--sub-codepage=+cp1250 همیشه بازکدگذاری به cp1250 را اجبار می‌کند.
168u
168u
168u
صفحه‌کد کاذب UTF-8-BROKEN به‌صورت داخلی استفاده می‌شود. اگر تنظیم شود،
زیرنویس‌ها به‌عنوان UTF-8 تفسیر می‌شوند و "Latin 1" به‌عنوان جایگزین برای بایت‌هایی
که توالی معتبر UTF-8 نیستند به کار می‌رود. iconv هرگز در این حالت درگیر نمی‌شود.
نکته:
7.0
3.5
این ویژگی فقط برای فایل‌های زیرنویس متنی کار می‌کند. سایر انواع زیرنویس‌ها (به‌ویژه
زیرنویس‌های درون فایل‌های mkv) همیشه UTF-8 فرض می‌شوند.
168u
168u
--sub-stretch-durations=<yes|no>
مدت‌زمان یک زیرنویس را کشش می‌دهد تا دقیقاً زمانی که زیرنویس بعدی شروع می‌شود پایان یابد.
این گزینه می‌تواند برای زیرنویس‌هایی که به اشتباه مدت‌زمان صفر دارند مفید باشد.
نکته:
7.0
3.5
فقط روی زیرنویس‌های متنی اعمال می‌شود.
168u
168u
--sub-fix-timing=<yes|no>
زمان‌بندی زیرنویس را برای حذف فاصله‌ها یا هم‌پوشانی‌های جزئی بین
زیرنویس‌ها تنظیم می‌کند.
همچنین ببینید: --sub-fix-timing-threshold و --sub-fix-timing-keep.
--sub-fix-timing-threshold=<amount>
آستانه بر حسب میلی‌ثانیه برای اصلاح زمان‌بندی زیرنویس را تعیین می‌کند (پیش‌فرض: 210).
اگر فاصله بین دو رویداد زیرنویس کمتر از این مقدار باشد، فاصله
حذف می‌شود.
--sub-fix-timing-keep=<amount>
حداقل مدت‌زمان بر حسب میلی‌ثانیه را برای در نظر گرفته شدن رویدادهای زیرنویس
جهت اصلاح زمان‌بندی تعیین می‌کند (پیش‌فرض: 400). اگر مدت‌زمان یک رویداد زیرنویس
کمتر از این مقدار باشد، زمان‌بندی آن تغییر نمی‌کند.
--sub-forced-events-only=<yes|no>
فعال‌سازی این گزینه فقط رویدادهای اجباری (forced events) را در جریان‌های زیرنویس نمایش می‌دهد. تنها
برخی قالب‌های زیرنویس تصویر بیتی (مانند DVD یا PGS) قابلیت داشتن
ترکیبی از رویدادهای اجباری و غیراجباری را درون جریان دارند. فعال کردن این گزینه روی
زیرنویس‌های متنی باعث می‌شود هیچ زیرنویسی نمایش داده نشود (پیش‌فرض: no).
--sub-fps=<rate>
نرخ فریم فایل زیرنویس را مشخص می‌کند (پیش‌فرض: fps ویدیو). فقط
روی زیرنویس‌های متنی تأثیر می‌گذارد.
نکته:
7.0
3.5
اگر <rate> > نرخ فریم ویدیو باشد، سرعت زیرنویس‌ها را برای فایل‌های
مبتنی بر فریم افزایش داده و برای فایل‌های مبتنی بر زمان کاهش می‌دهد.
168u
168u
همچنین ببینید: --sub-speed.
--sub-gauss=<0.0-3.0>
تاری گاوسی (Gaussian blur) را روی زیرنویس‌های تصویری اعمال می‌کند (پیش‌فرض: 0). این کار می‌تواند
به بهتر دیده شدن DVD/Vobsubs پیکسلی کمک کند. مقداری غیر از 0 همچنین مقیاس‌بندی
زیرنویس را به نرم‌افزاری تغییر می‌دهد. ممکن است کُند باشد.
نکته:
7.0
3.5
هرگز روی زیرنویس‌های متنی اعمال نمی‌شود.
168u
168u
--sub-gray
زیرنویس‌های تصویری را به طیف خاکستری (grayscale) تبدیل می‌کند. می‌تواند به زیباتر شدن
DVD/Vobsubs زرد رنگ کمک کند.
نکته:
7.0
3.5
هرگز روی زیرنویس‌های متنی اعمال نمی‌شود.
168u
168u
--sub-file-paths=<path-list>
دایرکتوری‌های اضافی را برای جستجوی زیرنویس‌های منطبق با ویدیو مشخص می‌کند.
چندین دایرکتوری را می‌توان با ":" (در Windows با ";") از هم جدا کرد.
مسیرها می‌توانند نسبی یا مطلق باشند. مسیرهای نسبی نسبت
به دایرکتوری فایل ویدیو تفسیر می‌شوند.
اگر فایل یک URL باشد، فقط مسیرهای مطلق و زیردایرکتوری پیکربندی
sub پویش خواهند شد.
7.0
3.5
"مثال"
با فرض این‌که /path/to/video/video.avi پخش شده و
--sub-file-paths=sub:subtitles مشخص شده باشد، mpv
فایل‌های زیرنویس را در این دایرکتوری‌ها جستجو می‌کند:
0.0
• 2
/path/to/video/
• 2
/path/to/video/sub/
• 2
/path/to/video/subtitles/
• 2
زیردایرکتوری پیکربندی sub (معمولاً ~/.config/mpv/sub/)
168u
168u
168u
این گزینه از نوع فهرست مسیر است. برای جزئیات به List Options مراجعه کنید.
--sub-visibility=<yes|no>
می‌تواند برای غیرفعال کردن نمایش زیرنویس‌ها استفاده شود، بدون این‌که انتخاب
و رمزگشایی آن‌ها متوقف گردد.
--secondary-sub-visibility=<yes|no>
می‌تواند برای غیرفعال کردن نمایش زیرنویس‌های ثانویه استفاده شود، بدون این‌که انتخاب
و رمزگشایی آن‌ها متوقف گردد.
--sub-clear-on-seek
(نامتعارف، به‌ندرت کاربردی.) می‌تواند برای پخش فایل‌های خراب mkv با
فیلدهای تکراری ReadOrder به کار رود. فیلد ReadOrder نخستین فیلد در
بسته‌های زیرنویس ASS به سبک Matroska است. این فیلد باید یکتا باشد، و libass
از آن برای حذف سریع موارد تکراری استفاده می‌کند. این گزینه حافظه موقت (caching)
زیرنویس‌ها را در هنگام پرش‌ها غیرفعال می‌کند؛ بنابراین پس از پرش، libass نمی‌تواند
بسته‌های زیرنویس دارای ReadOrder یکسان با بسته‌های قبلی را حذف کند. توجه داشته باشید که در صورت
عدم پخش یکی از فایل‌های mkv خراب یادشده، فعال کردن این گزینه می‌تواند منجر به رفتار نادرست زیرنویس شود.
--teletext-page=<-1-999>
یک شماره صفحه تله‌تکست را برای رمزگشایی انتخاب می‌کند.
این گزینه برای جریان‌های زیرنویس dvb_teletext کار می‌کند، البته در صورتی که FFmpeg
با پشتیبانی از آن کامپایل شده باشد.
مقادیر 1-999 برای صفحات مجزا هستند. مقدار ویژه 0 (پیش‌فرض)
با تمام صفحات زیرنویس مطابقت دارد. مقدار ویژه -1 با تمام صفحات مطابقت دارد.
توجه داشته باشید که صفحه 100 صفحه شروع پیش‌فرض تله‌تکست واقعی است. این مقدار
همچنین مقدار پیش‌فرض قبلی این گزینه بوده است.
برای جزئیات بیشتر به بخش libzvbi-teletext در مستندات FFmpeg مراجعه کنید.
پیش‌فرض: 0
--sub-past-video-end
پس از آخرین فریم ویدیو، در صورت فعال بودن این گزینه، زیرنویس‌ها
بر اساس برچسب‌های زمانی صدا به به‌روزرسانی ادامه می‌دهند. در غیر این صورت، زیرنویس‌های
مربوط به آخرین فریم ویدیو روی صفحه باقی خواهند ماند.
پیش‌فرض: disabled
--sub-font=<name>
فونت مورد استفاده برای زیرنویس‌هایی که خودشان فونت
خاصی را تعیین نکرده‌اند را مشخص می‌کند. پیش‌فرض sans-serif است.
7.0
3.5
"مثال‌ها"
0.0
• 2
--sub-font='Bitstream Vera Sans'
• 2
--sub-font='Comic Sans MS'
168u
168u
168u
نکته:
7.0
3.5
گزینه --sub-font (و بسیاری دیگر از گزینه‌های سبک مربوط به --sub-)
هنگام رندر زیرنویس‌های ASS نادیده گرفته می‌شوند، مگر این‌که
--sub-ass=no مشخص شده باشد.
این گزینه قبلاً از الگوهای fontconfig پشتیبانی می‌کرد. این قابلیت از
نسخه 0.13.0 کتابخانه libass به بعد متوقف شد.
168u
--sub-font-size=<size>
اندازهٔ قلم زیرنویس را مشخص می‌کند. یکا (واحد) اندازه بر حسب پیکسل‌های مقیاس‌شده در ارتفاع پنجرهٔ ۷۲۰ است. اندازهٔ واقعی پیکسل با ارتفاع پنجره مقیاس می‌شود: اگر ارتفاع پنجره بزرگ‌تر یا کوچک‌تر از ۷۲۰ باشد، اندازهٔ واقعی متن نیز به همان نسبت افزایش یا کاهش می‌یابد.
پیش‌فرض: 38
--sub-blur=<0..20.0>
ضریب تاری گاوسی (Gaussian blur) اعمال‌شده بر حاشیهٔ قلم زیرنویس.
مقدار 0 به معنای عدم اعمال تاری است (پیش‌فرض).
--sub-bold=<yes|no>
قالب‌بندی متن به‌صورت ضخیم (bold).
--sub-italic=<yes|no>
قالب‌بندی متن به‌صورت مورب (italic).
--sub-outline-color=<color>
گزینهٔ --sub-color را ببینید. رنگ مورد استفاده برای خط دور (outline) قلم زیرنویس.
--sub-border-color یک نام مستعار برای --sub-outline-color است.
--sub-back-color=<color>
گزینهٔ --sub-color را ببینید. رنگ مورد استفاده برای پس‌زمینهٔ متن زیرنویس.
--sub-shadow-color یک نام مستعار برای --sub-back-color است.
--sub-outline-size=<size>
اندازهٔ خط دور قلم زیرنویس بر حسب پیکسل‌های مقیاس‌شده (برای جزئیات --sub-font-size را ببینید). مقدار 0 خط دور را غیرفعال می‌کند.
--sub-border-size یک نام مستعار برای --sub-outline-size است.
پیش‌فرض: 1.65
--sub-border-style=<outline-and-shadow|opaque-box|background-box>
سبک حاشیه (border).
7.0
• 2
outline-and-shadow: رسم خط دور و سایه.
اندازهٔ خط دور با --sub-outline-size و انحراف (offset) سایه با --sub-shadow-offset تعیین می‌شود.
خط دور با --sub-outline-color و سایه با --sub-back-color رنگ‌آمیزی می‌شود.
این مورد با BorderStyle=1 در مشخصات ASS مطابقت دارد.
• 2
opaque-box: رسم خط دور و سایه به‌صورت کادرهای کدر که هر خط از متن را در بر می‌گیرند.
حاشیهٔ کادر کدرِ خط دور با --sub-outline-size و انحراف کادر کدرِ سایه با --sub-shadow-offset تعیین می‌شود.
کادر کدرِ خط دور با --sub-outline-color و کادر کدرِ سایه با --sub-back-color رنگ‌آمیزی می‌شود.
علیرغم نامش، این کادر کدر می‌تواند نیمه‌شفاف نیز باشد.
این مورد با BorderStyle=3 در مشخصات ASS مطابقت دارد.
• 2
background-box: رسم یک کادر پس‌زمینه که تمام خطوط متن را در بر می‌گیرد.
کادر پس‌زمینه با --sub-back-color رنگ‌آمیزی شده و حاشیهٔ آن با --sub-shadow-offset تعیین می‌شود.
رفتار خط دور مشابه سبک outline-and-shadow است.
این مورد با BorderStyle=4 که یک افزونهٔ اختصاصیِ libass است، مطابقت دارد.
168u
پیش‌فرض: outline-and-shadow.
نمایه‌های از‌پیش‌تعریف‌شده‌ای برای فعال‌سازی سبک بهینه‌شدهٔ background-box برای OSD و زیرنویس‌ها در دسترس هستند.
7.0
3.5
"نمایه‌ها"
0.0
• 2
--profile=sub-box سبک background-box را روی زیرنویس‌ها اعمال می‌کند
• 2
--profile=osd-box سبک background-box را روی OSD، شامل آمارها (stats) و کنسول، اعمال می‌کند
• 2
--profile=box سبک background-box را روی هر دوی زیرنویس‌ها و OSD اعمال می‌کند
168u
168u
168u
--sub-color=<color>
رنگ مورد استفاده برای زیرنویس‌های متنی بدون سبک (unstyled) را مشخص می‌کند.
رنگ به صورت r/g/b مشخص می‌شود، که در آن هر مؤلفهٔ رنگ به‌صورت عددی در بازهٔ 0.0 تا 1.0 تعیین می‌گردد. همچنین امکان مشخص کردن شفافیت با استفاده از r/g/b/a وجود دارد، که در آن مقدار آلفای 0 به معنای کاملاً شفاف و 1.0 به معنای کاملاً کدر است. اگر مؤلفهٔ آلفا داده نشود، رنگ ۱۰۰٪ کدر در نظر گرفته می‌شود.
ارسال یک عدد منفرد به گزینه، رنگ زیرنویس را روی خاکستری تنظیم می‌کند، و قالب gray/a به شما اجازه می‌دهد علاوه بر آن مقدار آلفا را نیز تعیین کنید.
7.0
3.5
"مثال‌ها"
0.0
• 2
--sub-color=1.0/0.0/0.0 تنظیم زیرنویس به قرمز کدر
• 2
--sub-color=1.0/0.0/0.0/0.75 تنظیم زیرنویس به قرمز کدر با آلفای ۷۵٪
• 2
--sub-color=0.5/0.75 تنظیم زیرنویس به خاکستری ۵۰٪ با آلفای ۷۵٪
168u
168u
168u
همچنین رنگ می‌تواند به‌صورت یک سه‌تایی شانزده‌شانزدهی RGB در قالب #RRGGBB مشخص شود، که در آن هر گروه ۲ رقمی مقداری در بازهٔ 0 (00) تا 255 (FF) را بیان می‌کند. برای مثال، #FF0000 قرمز است.
آلفا با #AARRGGBB تعیین می‌شود.
7.0
3.5
"مثال‌ها"
0.0
• 2
--sub-color='#FF0000' تنظیم زیرنویس به قرمز کدر
• 2
--sub-color='#C0808080' تنظیم زیرنویس به خاکستری ۵۰٪ با آلفای ۷۵٪
168u
168u
168u
--sub-margin-x=<size>
حاشیهٔ چپ و راست صفحه برای زیرنویس‌ها بر حسب پیکسل‌های مقیاس‌شده (برای جزئیات --sub-font-size را ببینید).
این گزینه فاصلهٔ زیرنویس از لبهٔ چپ، و همچنین فاصله‌ای از لبهٔ راست را که در آن متن طولانی زیرنویس شکسته می‌شود، مشخص می‌کند.
پیش‌فرض: 19
--sub-margin-y=<size>
حاشیهٔ بالا و پایین صفحه برای زیرنویس‌ها بر حسب پیکسل‌های مقیاس‌شده (برای جزئیات --sub-font-size را ببینید).
این گزینه حاشیه‌های عمودی زیرنویس‌های متنی بدون سبک را مشخص می‌کند. اگر فقط می‌خواهید موقعیت عمودی زیرنویس را بالاتر ببرید، از --sub-pos استفاده کنید.
پیش‌فرض: 34
--sub-align-x=<left|center|right>
مشخص می‌کند که زیرنویس‌های متنی باید به کدام جهت افقی صفحه تراز شوند (پیش‌فرض: center).
هرگز بر روی زیرنویس‌های ASS اعمال نمی‌شود، مگر در حالت --sub-ass=no. به همین ترتیب، این گزینه برای زیرنویس‌های تصویری نیز اعمال نمی‌گردد.
--sub-align-y=<top|center|bottom>
موقعیت عمودی (پیش‌فرض: bottom).
برای جزئیات --sub-align-x را ببینید.
--sub-justify=<auto|left|center|right>
کنترل نحوهٔ تراز خطوط در زیرنویس‌های چندخطی، صرف‌نظر از این‌که در کجای صفحه تراز شده‌اند (پیش‌فرض: auto که بر اساس تعریف --sub-align-x تراز می‌کند).
تراز کردن از سمت چپ پیشنهاد می‌شود زیرا خواندن زیرنویس‌ها را برای چشم ساده‌تر و راحت‌تر می‌کند.
--sub-ass-justify=<yes|no>
در صورتی که --sub-ass-override روی no تنظیم نشده باشد، ترازِ تعیین‌شده توسط --sub-justify را روی زیرنویس‌های ASS اعمال می‌کند.
پیش‌فرض: no.
--sub-shadow-offset=<size>
میزان جابه‌جایی سایهٔ متن زیرنویس بر حسب پیکسل‌های مقیاس‌شده (برای جزئیات --sub-font-size را ببینید). مقدار 0 سایه‌ها را غیرفعال می‌کند.
پیش‌فرض: 0.
--sub-spacing=<size>
فاصله‌گذاری افقی قلم زیرنویس بر حسب پیکسل‌های مقیاس‌شده (برای جزئیات --sub-font-size را ببینید). این مقدار به فاصلهٔ عادی بین حروف افزوده می‌شود. مقادیر منفی نیز مجاز هستند.
پیش‌فرض: 0.
--sub-filter-sdh=<yes|no>
فیلتری را برای حذف بخش‌های اضافی زیرنویس مخصوص ناشنوایان یا کم‌شنوایان (SDH) اعمال می‌کند.
این قابلیت برای زبان انگلیسی طراحی شده است، اما ممکن است تا حدی برای زبان‌های دیگر نیز کار کند.
هدف این است که بتواند همیشه فعال بماند، بنابراین ممکن است همهٔ بخش‌های افزوده را حذف نکند..sp
برچسب‌های گوینده (مانند MAN:) و هر متنی که درون نمادهایی مانند پرانتزها
یا قلاب‌ها محصور شده باشد را، همان‌گونه که توسط گزینهٔ --sub-filter-sdh-enclosures
مشخص شده است، حذف می‌کند.
توجه داشته باشید که پرانتزها (پرانتزهای تمام‌پهنا و نوع عادی) یک مورد خاص
هستند و تنها متن‌های با حروف بزرگ حذف می‌شوند. برای فیلترسازی بیشتر، می‌توانید
از گزینهٔ --sub-filter-sdh-harder استفاده کنید.
پیش‌فرض: no.
--sub-filter-sdh-harder=<yes|no>
فیلترسازی سخت‌گیرانه‌تر SDH را انجام می‌دهد (اگر توسط --sub-filter-sdh فعال شده باشد).
همچنین برچسب‌های گوینده و متن‌های درون پرانتزها که از هر دو نوع حروف کوچک
و بزرگ استفاده می‌کنند را حذف خواهد کرد.
پیش‌فرض: no.
--sub-filter-sdh-enclosures=<string>
جفت‌نویسه‌هایی را مشخص می‌کند که --sub-filter-sdh برای حذف احتمالی
متن استفاده خواهد کرد. این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات
به List Options مراجعه کنید. متنی که درون هر جفتِ مشخص‌شده محصور شده باشد
حذف خواهد شد. توجه داشته باشید که جفت‌های پرانتز (عادی و تمام‌پهنا) به عنوان
یک مورد خاص در نظر گرفته می‌شوند و برای حذف شدن به --sub-fitler-sdh-harder نیاز دارند.
پیش‌فرض: (),[],()
--sub-filter-regex-...=...
فهرستی از عبارت‌های منظم (regular expressions) را برای تطبیق با زیرنویس‌های متنی
تنظیم می‌کند و هر خطی را که مطابقت داشته باشد حذف می‌کند (پیش‌فرض: خالی). این یک
گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
به طور معمول، باید از --sub-filter-regex-append=<regex> استفاده کنید،
که در آن با هر بار استفاده از گزینه، یک عبارت منظم جدید بدون درگیر شدن با
مشکلات گریزدهی (escaping) اضافه می‌شود.
موارد فهرست به ترتیب مطابقت داده می‌شوند. اگر یک عبارت منظم مطابقت یابد،
پردازش متوقف شده و خط زیرنویس دور انداخته می‌شود. متنی که تطبیق روی آن انجام
می‌شود، به طور پیش‌فرض فیلد Text از رویدادهای ASS است (اگر قالب زیرنویس
متفاوت باشد، همیشه تبدیل می‌شود). این ممکن است شامل برچسب‌های قالب‌بندی نیز باشد.
تطبیق نسبت به بزرگی و کوچکی حروف حساس نیست (case-insensitive)، اما نحوهٔ
انجام این کار به libc بستگی دارد و به احتمال زیاد فقط روی ASCII کار می‌کند. روی
زیرنویس‌های بیتی/تصویری کار نمی‌کند. در سیستم‌های عامل ضعیف‌تر در دسترس نیست
(نیازمند پشتیبانی از POSIX regex است).
7.0
3.5
"مثال"
دستور --sub-filter-regex-append=opensubtitles\.org برخی از تبلیغات را فیلتر می‌کند.
168u
168u
از نظر فنی، استفاده از یک فهرست برای تطبیق زائد است، زیرا می‌توانستید تنها
از یک عبارت منظم ترکیبی واحد استفاده کنید. اما این کار به عیب‌یابی، سهولت
استفاده، و غیرفعال یا فعال کردن موقت فیلترهای جداگانه کمک می‌کند.
هشدار:
7.0
3.5
این ویژگی آزمایشی است. معناشناسی آن به احتمال زیاد تغییر خواهد کرد و اگر از
آن استفاده می‌کنید، باید آماده باشید که بعداً گزینه را به‌روزرسانی کنید.
ایده‌ها شامل جایگزینی regexها با یک زیرمجموعهٔ بسیار ابتدایی و کوچک از sed،
یا روشی برای کنترل حساسیت به بزرگی و کوچکی حروف است.
168u
168u
--sub-filter-jsre-...=...
مشابه --sub-filter-regex اما با عبارت‌های منظم JavaScript.
تمام گزینه‌های کنترلی --sub-filter-regex-* را به اشتراک می‌گذارد/تحت‌تأثیر
آن‌ها قرار می‌گیرد (پایین را ببینید) و همچنین آزمایشی است. تنها به پشتیبانی از
JavaScript نیاز دارد.
--sub-filter-regex-plain=<yes|no>
آیا فیلد "Text" مربوط به ASS ابتدا به متن ساده (plain-text) تبدیل شود یا خیر
(پیش‌فرض: no). این کار برچسب‌های ASS را پاک کرده و دستورالعمل‌های ASS مانند
تبدیل \N به خط جدید را اعمال می‌کند. اگر نتیجه چندخطی باشد، لنگرهای
عبارت منظم ^ و $ با هر خط تطبیق می‌یابند، اما با این وجود، هرگونه
تطبیق تمام خطوط را دور می‌اندازد.
--sub-filter-regex-warn=<yes|no>
ثبت خطوط حذف‌شده در گزارش‌ها با سطح هشدار (warning)، به جای پرگو (verbose)
(پیش‌فرض: no). برای آزمایش مفید است.
--sub-filter-regex-enable=<yes|no>
آیا فیلترسازی regex فعال باشد یا خیر (پیش‌فرض: yes). توجه داشته باشید که اگر هیچ
عبارت منظمی به فهرست --sub-filter-regex اضافه نشده باشد، تنظیم این
گزینه روی yes هیچ اثری ندارد. این گزینه برای غیرفعال یا فعال کردن آسان
فیلترسازی به‌صورت موقت در نظر گرفته شده است.
--sub-create-cc-track=<yes|no>
برای هر جریان ویدیو، یک قطعه زیرنویس ناشنوایان (closed captions) ایجاد می‌کند
(پیش‌فرض: no). تنها هدف این است که قطعه به جای ایجاد دیرهنگام (lazily)، در
ابتدای پخش برای انتخاب در دسترس باشد. این فقط برای
ATSC A53 Part 4 Closed Captions اعمال می‌شود (که توسط mpv به عنوان
قطعه‌های زیرنویس با استفاده از کدک eia_608 نمایش داده می‌شوند). قطعهٔ CC با
عنوان "default" علامت‌گذاری می‌شود و بر اساس قواعد عادیِ انتخاب قطعهٔ زیرنویس
انتخاب می‌گردد. سپس می‌توانید از --sid نیز برای انتخاب صریح قطعهٔ صحیح
استفاده کنید.
اگر جریان ویدیو شامل هیچ زیرنویس ناشنوایانی نباشد، یا هیچ ویدیویی رمزگشایی
نشود، قطعهٔ CC خالی خواهد ماند و هیچ متنی را نشان نخواهد داد.
--sub-font-provider=<auto|none|fontconfig>
کدام زیرسیستم (backend) تأمین‌کنندهٔ قلم libass استفاده شود (پیش‌فرض: auto).
مقدار auto تلاش خواهد کرد از تأمین‌کنندهٔ قلم بومی استفاده کند: fontconfig
در Linux، CoreText در macOS، DirectWrite در Windows. مقدار fontconfig
در صورتی که libass با پشتیبانی از آن کامپایل شده باشد، استفاده از fontconfig را
اجباری می‌کند (اگر پشتیبانی نشده باشد، مانند none رفتار می‌کند).
تأمین‌کنندهٔ قلم none عملاً قلم‌های سیستم را غیرفعال می‌کند. همچنان تلاش
خواهد کرد از قلم‌های تعبیه‌شده (مگر اینکه --embeddedfonts=no تنظیم شده
باشد؛ این رفتار مشابه تمام تأمین‌کنندگان قلم دیگر است)، subfont.ttf در
صورت ارائه، و قلم‌های موجود در زیرپوشهٔ fonts در صورت ارائه استفاده کند.
(سازوکار جایگزین نسبت به سایر تأمین‌کنندگان قلم سخت‌گیرانه‌تر است، و اگر نام یک
قلم مطابقت نداشته باشد، ممکن است ترجیح دهد متنی را که از قلم مفقود استفاده
می‌کند رندر نکند.)
--sub-fonts-dir=<path>
فایل‌های قلم موجود در این پوشه توسط mpv/libass برای زیرنویس‌ها استفاده می‌شوند.
اگر نمی‌خواهید قلم‌ها را روی سیستم خود نصب کنید بسیار مفید است. توجه داشته باشید
که فایل‌های موجود در این پوشه قبل از استفاده توسط mpv در حافظه بارگذاری می‌شوند.
اگر قلم‌های زیادی دارید، استفاده از fonts.conf (بخش FILES را ببینید) را برای
شامل کردن تنظیمات کاربری بیشتر mpv در نظر بگیرید.
اگر این گزینه مشخص نشده باشد، ~~/fonts به‌طور پیش‌فرض استفاده خواهد شد.
0.0
--title=<string>
عنوان پنجره را تعیین می‌کند. این مقدار برای پنجره ویدیو استفاده می‌شود و در صورت امکان، عنوان جریان صوتی را نیز تنظیم می‌کند.
ویژگی‌ها بسط داده می‌شوند. (Property Expansion را ببینید.)
هشدار:
7.0
3.5
بسته به ویژگی‌های مورد استفاده، خطر مصرف چشمگیر CPU وجود دارد. تغییر عنوان پنجره اغلب عملیاتی کُند است، و اگر عنوان در هر فریم تغییر کند، پخش می‌تواند مختل شود.
168u
168u
--screen=<default|0-32>
در پیکربندی‌های چندنمایشگره (یعنی یک میزکار واحد که در چندین نمایشگر گسترده شده است)، این گزینه به mpv می‌گوید که ویدیو را در کدام صفحه نمایش دهد.
7.0
3.5
"نکته (X11)"
این گزینه با همه مدیرهای پنجره به درستی کار نمی‌کند. در این موارد، می‌توانید از --geometry برای موقعیت‌دهی صریح پنجره استفاده کنید. همچنین این احتمال وجود دارد که مدیر پنجره قابلیت‌های توکاری را برای کنترل اینکه پنجره‌های برنامه‌ها از کدام نمایشگرها استفاده کنند ارائه دهد.
168u
168u
7.0
3.5
"نکته (Wayland)"
این گزینه در واقع روی wayland کار نمی‌کند، زیرا جای‌گذاری پنجره در آن مجاز نیست. با این حال، تنظیم این گزینه بر حدس اولیه mpv برای یافتن یک خروجی تأثیر می‌گذارد که ممکن است برای گزینه‌هایی مانند --geometry یا --autofit که به وضوح تصویر نمایشگر وابسته هستند، مفید باشد.
168u
168u
همچنین --fs-screen را ببینید.
--screen-name=<string>
در پیکربندی‌های چندنمایشگره، این گزینه بر اساس نام صفحه اعلام‌شده از سوی backend ویدیویی، به mpv می‌گوید ویدیو را در کدام صفحه نمایش دهد. همان هشدارهای مربوط به گزینه --screen در اینجا نیز صدق می‌کنند. اگر --screen به‌طور صریح تنظیم شده باشد، این گزینه نادیده گرفته شده و کاری انجام نمی‌دهد.
--fullscreen, --fs
پخش تمام‌صفحه.
--fs-screen=<all|current|0-32>
در پیکربندی‌های چندنمایشگره (یعنی یک میزکار واحد که در چندین نمایشگر گسترده شده است)، این گزینه به mpv می‌گوید برای تمام‌صفحه شدن به کدام صفحه برود. اگر از current استفاده شود، mpv به مقداری که کاربر با گزینه screen تعیین کرده است بازمی‌گردد.
7.0
3.5
"نکته (X11)"
این گزینه تنها با مدیرهای پنجره‌ای به درستی کار می‌کند که نشانه EWMH با شناسه _NET_WM_FULLSCREEN_MONITORS را درک کنند.
168u
168u
7.0
3.5
"نکته (macOS)"
مقدار all روی macOS کار نمی‌کند و مانند current رفتار خواهد کرد.
168u
168u
همچنین --screen را ببینید.
--fs-screen-name=<string>
در پیکربندی‌های چندنمایشگره، این گزینه بر اساس نام صفحه از backend ویدیو، به mpv می‌گوید برای حالت تمام‌صفحه به کدام صفحه برود. همان هشدارهای گزینه --fs-screen در اینجا نیز صدق می‌کنند. اگر --fs-screen به‌طور صریح تنظیم شده باشد، این گزینه نادیده گرفته شده و کاری انجام نمی‌دهد.
--keep-open=<yes|no|always>
هنگام پخش یا پرش به فراتر از انتهای فایل، در صورتی که فایل بعدی برای پخش وجود نداشته باشد (و از --loop استفاده نشده باشد)، برنامه را متوقف نکنید. در عوض، پخش‌کننده را مکث دهید. هنگام تلاش برای پرش به فراتر از انتهای فایل، پخش‌کننده سعی می‌کند به آخرین فریم پرش کند.
به‌طور معمول، این عمل در EOF مشابه set pause yes خواهد بود، مگر اینکه گزینه --keep-open-pause=no تنظیم شده باشد.
آرگومان‌های زیر را می‌توان تعیین کرد:
7.0
no
اگر فایل فعلی پایان یابد، به فایل بعدی بروید یا خاتمه دهید. (پیش‌فرض.)
yes
اگر فایل فعلی آخرین ورودی فهرست پخش باشد، خاتمه ندهید. معادل استفاده از --keep-open بدون آرگومان است.
always
مانند yes، اما برای فایل‌های قبل از آخرین ورودی فهرست پخش نیز اعمال می‌شود. این بدان معناست که پخش هرگز به‌طور خودکار به فایل بعدی نخواهد رفت.
168u
نکته:
7.0
3.5
این گزینه هنگام استفاده از --frames در نظر گرفته نمی‌شود. در صورتی که کلید مقیدشده از force استفاده کند، پرش صریح به فایل بعدی نیز موجب خاتمه پخش خواهد شد.
همچنین در صورت وقوع خطا یا شرایط غیرمعمول، ممکن است پخش‌کننده به هر حال بسته شود.
168u
168u
از نسخه 0.6.0 mpv، اگر فایل بعدی در فهرست پخش وجود داشته باشد، یا فهرست پخش حلقه شده باشد، مکث انجام نمی‌شود. تقریباً، زمانی که پخش‌کننده در حالت عادی باید خارج شود مکث خواهد کرد، اما در عمل موارد خاصی وجود دارد که این‌گونه نیست (به عنوان مثال، دستور mpv --keep-open file.mkv /dev/null فایل file.mkv را به‌طور عادی پخش می‌کند، سپس در باز کردن /dev/null با شکست مواجه می‌شود، و سپس خارج می‌شود). (در mpv 0.8.0، مقدار always معرفی شد که رفتار قبلی را بازمی‌گرداند.)
--keep-open-pause=<yes|no>
اگر روی no تنظیم شود، به جای مکث در زمان فعال بودن --keep-open، فقط در انتهای فایل متوقف می‌شود و هنگامی که به عقب پرش می‌کنید به پخش رو به جلو ادامه می‌دهد تا مجدداً به انتها برسد و دوباره متوقف شود. پیش‌فرض: yes.
--image-display-duration=<seconds|inf>
اگر فایل فعلی یک تصویر باشد، تصویر را برای مدت زمان تعیین‌شده به ثانیه پخش می‌کند (پیش‌فرض: 5). مقدار inf یعنی فایل تا ابد باز نگه داشته می‌شود (تا زمانی که کاربر پخش را به صورت دستی متوقف کند).
برخلاف --keep-open، پخش‌کننده مکث نمی‌کند، بلکه صرفاً به پخش ادامه می‌دهد تا زمان مورد نظر سپری شود. (در طول این "پخش" نباید هیچ منبعی مصرف کند.)
این گزینه بر فایل‌های تصویری که به صورت دارای تنها ۱ فریم ویدیو و بدون صدا تعریف شده‌اند اثر می‌گذارد. ممکن است پخش‌کننده برخی فایل‌های غیرتصویری را به عنوان تصویر تشخیص دهد، مثلاً اگر از --length برای کاهش طول به ۱ فریم استفاده شود، یا اگر به آخرین فریم پرش کنید.
این گزینه بر نرخ فریم استفاده‌شده برای mf:// یا --merge-files تأثیری ندارد. برای این منظور، از --mf-fps استفاده کنید.
هنگام مشاهده تصاویر، زمان پخش در خروجی خط فرمان دنبال نمی‌شود و فریم تصویر هنگام انکود تکرار نمی‌گردد. برای مجبور کردن پخش‌کننده به حالت "dumb mode" و شمارش واقعی ثانیه‌ها، یا برای تکثیر تصویر هنگام انکود، باید از --demuxer=lavf --demuxer-lavf-o=loop=1 استفاده کنید و از --length یا --frames برای توقف پس از زمانی مشخص بهره ببرید.
--force-window=<yes|no|immediate>
حتی در صورت نبود ویدیو، یک پنجره خروجی ویدیو ایجاد می‌کند. این گزینه زمانی که می‌خواهید mpv مانند یک برنامه رابط کاربری گرافیکی (GUI) عمل کند می‌تواند مفید باشد. در حال حاضر، این پنجره همیشه اندازه‌ای معادل 960x540 دارد و تابع گزینه‌های --geometry، --autofit و گزینه‌های مشابه است.
هشدار:
7.0
3.5
پنجره فقط پس از مقداردهی اولیه ساخته می‌شود (تا اطمینان حاصل شود در صورتی که اندازه ویدیو با اندازه پیش‌فرض پنجره در --force-window متفاوت باشد، جای‌گذاری پیش‌فرض پنجره همچنان کار می‌کند). اگر مقداردهی اولیه به درستی کار نکند، مانند زمان باز کردن URLها با اتصال شبکه ضعیف یا باز کردن فایل‌های ویدیویی آسیب‌دیده، این موضوع می‌تواند مشکل‌ساز شود. حالت immediate می‌تواند برای ایجاد همیشگی پنجره در ابتدای شروع برنامه استفاده شود، اما ممکن است مشکلات دیگری در پی داشته باشد.
168u
168u
--taskbar-progress=<yes|no>
(فقط Windows)
فعال‌سازی/غیرفعال‌سازی رندر روند پیشرفت پخش در taskbar (ویندوز ۷ و بالاتر).
به‌طور پیش‌فرض فعال است..TP
--snap-window
(تنها در Windows) چسباندن پنجرهٔ پخش‌کننده به لبه‌های صفحه نمایش.
--drag-and-drop=<no|auto|replace|append|insert-next>
رفتار پیش‌فرض کشیدن و رها کردن (drag and drop) را در پلتفرم‌هایی که از آن پشتیبانی
می‌کنند، کنترل می‌کند. مقدار auto از آنچه سیستم‌عامل/پلتفرم زیرین به mpv می‌دهد
پیروی خواهد کرد. به‌طور معمول، پایین نگه داشتن کلید shift در حین کشیدن و رها کردن، آیتم را
به فهرست پخش ضمیمه می‌کند (append). در غیر این صورت، آن را کاملاً جایگزین خواهد کرد.
مقادیر replace، append، و insert-next همیشه به‌ترتیب جایگزین کردن،
ضمیمه کردن به انتها، و درج کردن به عنوان مورد بعدی در فهرست پخش را تحمیل می‌کنند.
مقدار no تمام رفتارهای کشیدن و رها کردن را غیرفعال می‌کند.
--ontop
باعث می‌شود پنجرهٔ پخش‌کننده بالاتر از سایر پنجره‌ها باقی بماند.
در Windows، اگر با حالت تمام‌صفحه ترکیب شود، موجب می‌شود که با mpv به‌عنوان
یک پنجرهٔ تمام‌صفحهٔ اختصاصی که Desktop Window Manager را دور می‌زند
رفتار شود.
--ontop-level=<window|system|desktop|level>
(تنها در macOS)
سطح پنجرهٔ روی بقیه (on-top) را تنظیم می‌کند (پیش‌فرض: window).
7.0
window
روی همهٔ پنجره‌های دیگر.
system
روی عناصر سیستمی مانند Taskbar، Menubar و Dock.
desktop
روی Desktop، پشت پنجره‌ها و آیکون‌های Desktop.
level
یک سطح به‌صورت عدد صحیح.
168u
--focus-on=<never|open|all>,
(تنها در macOS)
فوکوس کردن روی پنجرهٔ ویدیو و آوردن آن به جلوی تمام پنجره‌ها در رویدادهای مشخص (پیش‌فرض: open).
7.0
never
هرگز در رویدادهای باز شدن پنجره یا بارگذاری فایل جدید روی پنجره فوکوس نشود.
open
فوکوس روی پنجره هنگام ایجاد، مثلاً زمانی که یک vo مقداردهی اولیه می‌شود.
all
فوکوس روی پنجره در هر دو رویداد باز شدن و بارگذاری فایل جدید.
168u
--window-corners=<default|donotround|round|roundsmall>
(تنها در Windows)
تعیین اولویت برای گرد کردن گوشه‌های پنجره.
7.0
default
اجازه دادن به سیستم برای تصمیم‌گیری دربارهٔ گرد کردن یا نکردن گوشه‌های پنجره
donotround
هرگز گوشه‌های پنجره گرد نشوند
round
گرد کردن گوشه‌ها در صورت مناسب بودن
roundsmall
گرد کردن گوشه‌ها در صورت مناسب بودن، با شعاع کوچک
168u
--border=<yes|no>
پخش ویدیو همراه با کادر و تزئینات پنجره. از آنجا که این مورد به‌طور
پیش‌فرض فعال است، از --no-border برای غیرفعال کردن تزئینات استاندارد پنجره استفاده کنید.
--title-bar=<yes|no>
(تنها در Windows و X11)
پخش ویدیو با نوار عنوان پنجره. از آنجا که این مورد به‌طور پیش‌فرض فعال است،
از --title-bar=no برای پنهان کردن نوار عنوان استفاده کنید. گزینهٔ --border
دارای اولویت است.
--on-all-workspaces
(تنها در X11 و macOS)
نمایش پنجرهٔ ویدیو در تمام میزکارهای مجازی.
--geometry=<[W[xH]][+-x+-y][/WS]>, --geometry=<x:y>
تنظیم موقعیت یا اندازهٔ اولیهٔ پنجره. مقادیر W و H اندازهٔ پنجره را بر حسب پیکسل
تعیین می‌کنند. x و y موقعیت پنجره را بر حسب پیکسل، از گوشهٔ بالا-چپ
صفحه تا گوشهٔ بالا-چپ تصویر در حال نمایش تعیین می‌کنند. اگر یک علامت درصد (%)
بعد از آرگومان داده شود، مقدار را به درصدی از اندازهٔ صفحه در آن جهت تبدیل می‌کند.
موقعیت‌ها به روشی مشابه با قالب گزینهٔ استاندارد --geometry در X11 مشخص
می‌شوند، که در آن به عنوان مثال +10-50 به معنای «قرار دادن ۱۰ پیکسل از حاشیهٔ چپ و
۵۰ پیکسل از حاشیهٔ پایینی» و «--20+-10» به معنای «قرار دادن ۲۰ پیکسل فراتر از
حاشیهٔ راست و ۱۰ پیکسل فراتر از حاشیهٔ بالا» است. یک علامت / در انتها که
پس از آن یک عدد صحیح آمده باشد، مشخص می‌کند پنجره در کدام فضای کاری (میزکار مجازی)
باید نمایش داده شود (تنها در X11).
اگر یک پنجرهٔ خارجی با استفاده از گزینهٔ --wid تعیین شده باشد، این
گزینه نادیده گرفته می‌شود.
مختصات، برای راه‌اندازهای خروجی ویدیویی که کاملاً از --screen پشتیبانی می‌کنند،
نسبت به صفحهٔ داده‌شده با --screen سنجیده می‌شوند.
نکته:
7.0
3.5
عموماً تنها توسط VOهای دارای واسط گرافیکی (GUI VOs) پشتیبانی می‌شود. برای انکود نادیده گرفته می‌شود.
168u
168u
7.0
3.5
"نکته (macOS)"
در macOS، مبدأ دستگاه مختصات صفحه در گوشهٔ پایین-چپ قرار دارد. برای نمونه،
0:0 پنجره را در گوشهٔ پایین-چپ صفحه قرار می‌دهد.
168u
168u
7.0
3.5
"نکته (X11)"
این گزینه با همهٔ مدیرهای پنجره به‌درستی کار نمی‌کند.
168u
168u
7.0
3.5
"نکته (Wayland)"
پروتکل Wayland به کلاینت اجازه نمی‌دهد مکان خود را تعیین کند، بنابراین این
گزینه تنها روی اندازهٔ پنجره تأثیر خواهد گذاشت.
168u
168u
7.0
3.5
"مثال‌ها"
0.0
50:40
پنجره را در x=50، y=40 قرار می‌دهد.
50%:50%
پنجره را در وسط صفحه قرار می‌دهد.
100%:100%
پنجره را در گوشهٔ پایین-راست صفحه قرار می‌دهد.
50%
عرض پنجره را به نصف عرض صفحه تنظیم می‌کند. ارتفاع پنجره به شکلی تعیین
می‌شود که پنجره نسبت تصویر ویدیو را حفظ کند.
50%x50%
عرض و ارتفاع پنجره را به نصف عرض و ارتفاع صفحه تحمیل می‌کند. برای جبران نسبت
تصویر ویدیو کادرهای سیاهی را نمایش خواهد داد (در اکثر VOها و با --keepaspect=yes).
50%+10+10/2
عرض پنجره را به نصف عرض صفحه تنظیم می‌کند، و آن را در ۱۰ پیکسل
پایین‌تر/سمت چپ گوشهٔ بالا-چپ صفحه، در فضای کاری دوم قرار می‌دهد.
168u
168u
168u
همچنین برای جا دادن پنجره در یک اندازهٔ مشخص بدون تغییر نسبت تصویر، گزینه‌های
--autofit و --autofit-larger را ببینید.
--autofit=<[W[xH]]>
اندازهٔ اولیهٔ پنجره را بدون تغییر نسبت تصویر پنجره، روی بیشینه اندازهٔ تعیین‌شده توسط
WxH تنظیم می‌کند. اندازه بر حسب پیکسل سنجیده می‌شود، یا اگر عددی با علامت
درصد (%) همراه باشد، به صورت درصدی از اندازهٔ صفحه خواهد بود.
این گزینه هرگز نسبت تصویر پنجره را تغییر نمی‌دهد. در صورت عدم تطابق نسبت
تصویر، اندازهٔ پنجره تا زمانی که در اندازهٔ تعیین‌شده جا شود کاهش می‌یابد.
موقعیت پنجره در نظر گرفته نمی‌شود، و با این گزینه تغییر هم نمی‌کند (مدیر پنجره
ممکن است بسته به اندازه، پنجره را به نحو متفاوتی قرار دهد). برای تغییر موقعیت پنجره
از --geometry استفاده کنید. جلوه‌های آن پس از این گزینه اعمال می‌شوند..sp
برای جزئیات درباره نحوه رفتار در پیکربندی‌های چندنمایشگره (multi-monitor)، به --geometry مراجعه کنید.
اگر صرفاً می‌خواهید حداکثر اندازه پنجره را محدود کنید، به جای آنکه همیشه اندازه‌ای را تحمیل نمایید، از --autofit-larger استفاده کنید.
اگر می‌خواهید هر دو مقدار عرض و ارتفاع پنجره را به اندازه‌ای مشخص اجبار کنید، از --geometry استفاده نمایید.
نکته:
7.0
3.5
به طور کلی فقط توسط خروجی‌های ویدیویی (VO) گرافیکی پشتیبانی می‌شود. برای انکودینگ نادیده گرفته می‌شود.
168u
168u
7.0
3.5
"مثال‌ها"
0.0
70%
عرض پنجره را به اندازه ۷۰٪ اندازه صفحه نمایش، با حفظ نسبت تصویر تنظیم می‌کند.
1000
عرض پنجره را به ۱۰۰۰ پیکسل، با حفظ نسبت تصویر تنظیم می‌کند.
70%x60%
پنجره را تا جای ممکن بزرگ می‌کند، بدون اینکه عرض آن از ۷۰٪ عرض صفحه یا ارتفاع آن از ۶۰٪ ارتفاع صفحه بیشتر شود.
168u
168u
168u
--autofit-larger=<[W[xH]]>
این گزینه دقیقاً مانند --autofit عمل می‌کند، با این تفاوت که حداکثر اندازه پنجره را تعیین می‌نماید.
7.0
3.5
"مثال"
0.0
90%x80%
اگر ویدیو بزرگ‌تر از ۹۰٪ عرض صفحه یا ۸۰٪ ارتفاع صفحه باشد، پنجره را تا جایی کوچک‌تر می‌کند که یا عرض آن ۹۰٪ صفحه شود و یا ارتفاع آن ۸۰٪ صفحه شود.
168u
168u
168u
--autofit-smaller=<[W[xH]]>
این گزینه دقیقاً مانند --autofit عمل می‌کند، با این تفاوت که حداقل اندازه پنجره را تعیین می‌نماید (همان‌طور که --autofit-larger حداکثر را مشخص می‌کند).
7.0
3.5
"مثال"
0.0
500x500
پنجره را حداقل ۵۰۰ پیکسل عریض و ۵۰۰ پیکسل مرتفع می‌کند (بسته به نسبت تصویر ویدیو، به منظور حفظ یکسان نسبت تصویر، عرض یا ارتفاع ممکن است از ۵۰۰ بیشتر باشد).
168u
168u
168u
--window-scale=<factor>
اندازه پنجره ویدیو را به مضربی (یا کسری) از اندازه ویدیو تغییر می‌دهد. این گزینه قبل از اعمال --autofit و سایر گزینه‌ها اعمال می‌شود (بنابراین آن‌ها این گزینه را لغو می‌کنند). تغییر این گزینه هنگامی که پنجره بیشینه (maximized) است، بسته به سیستم‌عامل و مدیر پنجره می‌تواند پنجره را از حالت بیشینه خارج کند. اگر پنجره از حالت بیشینه خارج نشود، در صورتی که کاربر بعداً پنجره را از حالت بیشینه خارج کند، این ضریب اعمال خواهد شد.
برای مثال، --window-scale=0.5 پنجره را در نیمی از اندازه ویدیو نمایش می‌دهد.
--window-minimized=<yes|no>
مشخص می‌کند که پنجره ویدیو کمینه (minimized) باشد یا خیر. در صورت پشتیبانی VO فعلی، تنظیم این گزینه پنجره ویدیو را کمینه یا از حالت کمینه خارج می‌کند. توجه داشته باشید که برخی VOها ممکن است از کمینه‌سازی پشتیبانی کنند در حالی که از خروج از حالت کمینه پشتیبانی نکنند (مانند: Wayland).
اینکه آیا این گزینه و --window-maximized در هنگام شروع برنامه یا در زمان اجرا کار کنند، و اینکه آیا (در زمان اجرا) برای بازتاب وضعیت واقعی پنجره به‌روزرسانی شوند، به شدت به VO و سامانه پنجره‌بندی بستگی دارد. برخی VOها اصلاً آن‌ها یا بخش‌هایی از آن‌ها را پیاده‌سازی نکرده‌اند، در حالی که سایر VOها ممکن است توسط سامانه‌های پنجره‌بندی (به‌ویژه Wayland) محدود شده باشند.
--window-maximized=<yes|no>
مشخص می‌کند که پنجره ویدیو بیشینه (maximized) باشد یا خیر. در صورت پشتیبانی VO فعلی، تنظیم این گزینه پنجره ویدیو را بیشینه یا از حالت بیشینه خارج می‌کند. برای توضیحات بیشتر، --window-minimized را ببینید.
--cursor-autohide=<number|no|always>
نشانگر ماوس را پس از تعداد میلی‌ثانیه مشخص‌شده به طور خودکار پنهان می‌کند (پیش‌فرض: 1000 میلی‌ثانیه). مقدار no پنهان‌سازی خودکار نشانگر را غیرفعال می‌کند. always به این معنی است که نشانگر همیشه پنهان خواهد ماند.
--cursor-autohide-fs-only
اگر این گزینه مشخص شود، نشانگر در حالت پنجره‌ای همیشه نمایان است. در حالت تمام‌صفحه، نشانگر طبق --cursor-autohide نمایش داده یا پنهان می‌شود.
--force-rgba-osd-rendering
نحوه رندر OSD و زیرنویس‌های متنی توسط برخی خروجی‌های ویدیو را تغییر می‌دهد. این کار ظاهر زیرنویس‌ها را تغییر نمی‌دهد و تنها بر کارایی تأثیرگذار است. برای VOهایی که از رندر بومی ASS پشتیبانی می‌کنند (مانند gpu، vdpau، direct3d)، این گزینه بسته به راه‌اندازهای GPU و سخت‌افزار می‌تواند اندکی سریع‌تر یا کندتر باشد. برای سایر VOها، این فقط رندر را کندتر می‌کند.
--force-render
برنامه mpv را وادار می‌کند تا بدون توجه به مرئی بودن پنجره، فریم‌ها را همیشه رندر کند. در حال حاضر فقط بر VOهای X11، Wayland و macvk تأثیر می‌گذارد، زیرا آن‌ها تنها مواردی هستند که این بهینه‌سازی را دارند (یعنی سایر خروجی‌ها همیشه بدون در نظر گرفتن وضعیت دیده‌شدن، رندر می‌کنند).
--force-window-position
هر زمان که تغییری در پارامترهای ویدیو، جریان ویدیویی یا فایل رخ دهد، پنجره خروجی ویدیوی mpv را به موقعیت پیش‌فرض منتقل می‌کند. این در گذشته رفتار پیش‌فرض بود. در حال حاضر فقط بر VOهای X11، macvk و SDL تأثیر دارد.
--auto-window-resize=<yes|no>
به‌طور پیش‌فرض، اگر اندازه ویدیو تغییر کند (مثلاً هنگام رفتن به مورد بعدی در فهرست پخش)، mpv به‌طور خودکار اندازه پنجره را تغییر می‌دهد. تنظیم این مقدار به no این رفتار را غیرفعال می‌کند تا اندازه پنجره هرگز به‌طور خودکار تغییر نکند. این گزینه هیچ اثری بر گزینه‌های --autofit یا --geometry ندارد.
--keepaspect=<yes|no>
مقدار --keepaspect=no ویدیو را همیشه به اندازه پنجره می‌کِشد، و راهنماهای مدیر پنجره را که نسبت تصویر پنجره را اجبار می‌کنند غیرفعال می‌سازد. (در حالت تمام‌صفحه نادیده گرفته می‌شود.)
--keepaspect-window=<yes|no>
مقدار --keepaspect-window=yes (پیش‌فرض) اندازه پنجره را روی نسبت تصویر ویدیو قفل می‌کند. مقدار --keepaspect-window=no این رفتار را غیرفعال می‌سازد و در صورت عدم تطابق نسبت تصویر پنجره و نسبت تصویر ویدیو، نوارهای سیاه اضافه می‌کند. کارکرد واقعی این مورد به بک‌اند VO بستگی دارد. (در حالت تمام‌صفحه نادیده گرفته می‌شود.)
--monitoraspect=<ratio>
نسبت تصویر مانیتور یا تلویزیون خود را تعیین کنید. مقدار 0 تنظیمات قبلی را (مثلاً در فایل پیکربندی) غیرفعال می‌کند. در صورت فعال بودن، تنظیمات --monitorpixelaspect را لغو می‌کند.
همچنین ببینید: --monitorpixelaspect و --video-aspect-override.
7.0
3.5
"مثال‌ها"
0.0
• 2
--monitoraspect=4:3 یا --monitoraspect=1.3333
• 2
--monitoraspect=16:9 یا --monitoraspect=1.7777
168u
168u
168u
--hidpi-window-scale=<yes|no>
اندازه پنجره را بر اساس ضریب مقیاس DPI سیستم‌عامل مقیاس‌بندی می‌کند (پیش‌فرض: no). برای نمونه، اگر مقیاس‌بندی DPI سیستم‌عامل روی 200% تنظیم شده باشد، اندازه پنجره mpv در ۲ ضرب خواهد شد.
--native-fs=<yes|no>
(تنها در macOS)
از سازوکار بومی تمام‌صفحه سیستم‌عامل استفاده می‌کند (پیش‌فرض: yes).
--show-in-taskbar=<yes|no>
(تنها در Windows و X11)
نمایش mpv در نوار وظیفه (پیش‌فرض: yes). اگر روی no تنظیم شود، mpv دیگر در نوار وظیفه و فهرست وظایف مدیران پنجره پشتیبانی‌شده ظاهر نخواهد شد و ممکن است از جابه‌جایی پنجره با Alt+Tab حذف شود.
--monitorpixelaspect=<ratio>
نسبت تصویر یک تک‌پیکسل از مانیتور یا تلویزیون خود را مشخص کنید (پیش‌فرض: 1). مقدار 1 به معنای پیکسل‌های مربعی است (مناسب برای (تقریباً؟) تمام نمایشگرهای LCD). همچنین ببینید: --monitoraspect و --video-aspect-override.
--stop-screensaver=<yes|no|always>
محافظ صفحه (یا تاریک‌کننده صفحه و سازوکارهای مشابه) را هنگام شروع برنامه خاموش و هنگام خروج دوباره روشن می‌کند (پیش‌فرض: yes). هنگام استفاده از yes، وقتی که پخش فعال نباشد، محافظ صفحه دوباره فعال می‌شود. مقدار always همیشه محافظ صفحه را غیرفعال نگاه می‌دارد. توجه داشته باشید که متوقف ساختن محافظ صفحه تنها زمانی ممکن است که یک خروجی ویدیو در دسترس باشد (یعنی پنجره‌ای از mpv باز باشد). این گزینه در تمام خروجی‌های ویدیو، پلتفرم‌ها یا محیط‌های رومیزی پشتیبانی نمی‌شود..sp
پیش از mpv 0.33.0، بک‌اند X11 برای پشتیبانی از غیرفعال‌سازی محافظ صفحه در برخی محیط‌ها، دستور xdg-screensaver reset را در فواصل زمانی ۱۰ ثانیه‌ای هنگامی که پخش متوقف نبود اجرا می‌کرد. این قابلیت در نسخهٔ 0.33.0 حذف شد، اما در عوض می‌توان برنامهٔ خط فرمانی xdg-screensaver را از یک اسکریپت کاربری فراخوانی کرد.
--wid=<ID|-1>
این گزینه به mpv می‌گوید که به یک پنجرهٔ موجود متصل شود. اگر یک خروجی ویدیو (VO) انتخاب شده باشد که از این گزینه پشتیبانی کند، از آن پنجره برای خروجی ویدیو استفاده خواهد کرد. برنامهٔ mpv ویدیو را به اندازهٔ این پنجره مقیاس‌بندی می‌کند و در صورتی که نسبت ابعاد ویدیو متفاوت باشد، برای جبران نوارهای سیاه اضافه خواهد کرد.
شناسه‌ای با مقدار -1 به طور ویژه تفسیر می‌شود و mpv از پنجره‌ای که اکنون به آن متصل است جدا شده و پنجرهٔ خودش را باز می‌کند.
در X11، این شناسه به عنوان یک Window در X11 تفسیر می‌شود. برخلاف MPlayer/mplayer2، برنامهٔ mpv همیشه پنجرهٔ خودش را ایجاد می‌کند و پنجرهٔ wid را به عنوان والد آن تعیین می‌کند. اندازهٔ پنجره همیشه طوری تغییر می‌کند که پنجرهٔ والد را به طور کامل بپوشاند. مقدار 0 به طور ویژه تفسیر می‌شود و mpv مستقیماً روی پنجرهٔ ریشه (root window) ترسیم می‌کند.
در win32، شناسه به عنوان HWND تفسیر می‌شود. آن را به عنوان یک مقدار تبدیل‌شده به uint32_t ارسال کنید (همهٔ دستگیره‌های Windows ۳۲ بیتی هستند)، این موضوع مهم است زیرا mpv مقادیر منفی را قبول نمی‌کند. برنامهٔ mpv همانند X11، پنجرهٔ خودش را ایجاد کرده و پنجرهٔ wid را والد قرار می‌دهد. مقدار 0 به طور ویژه تفسیر می‌شود و mpv روی تصویر پس‌زمینهٔ میزکار و زیر آیکون‌های میزکار ترسیم خواهد کرد.
در Android، این شناسه به عنوان android.view.Surface تفسیر می‌شود. آن را به صورت مقداری تبدیل‌شده به intptr_t ارسال کنید. برای رندر مستقیم با استفاده از MediaCodec به همراه --vo=mediacodec_embed و --hwdec=mediacodec، یا به همراه --vo=gpu --gpu-context=android (با یا بدون --hwdec=mediacodec) استفاده شود.
نکته:
7.0
3.5
در win32، اگر تغییر تصویر پس‌زمینهٔ میزکار رخ دهد (مانند تنظیم اسلایدشوی تصویر پس‌زمینه از چندین تصویر در تنظیمات Windows) و مقدار شناسهٔ 0 استفاده شده باشد، ممکن است گاهی Windows پنجره‌ای را که mpv به آن متصل است نابود کند. mpv در این حالت صرفاً با این موضوع به عنوان سیگنال خروج رفتار می‌کند.
برای جلوگیری از رخ دادن این اتفاق، یک تصویر پس‌زمینهٔ ثابت مانند یک تک‌تصویر یا یک رنگ یکدست تنظیم کنید.
168u
168u
--window-dragging=<yes|no>
جابه‌جایی پنجره هنگام کلیک روی آن و حرکت دادن نشانگر ماوس (پیش‌فرض: yes).
--x11-name=<string>
تنظیم نام نمونهٔ پنجره (instance name) برای روش‌های خروجی ویدیوی مبتنی بر X11.
--x11-netwm=<yes|no|auto>
(فقط X11)
کنترل استفاده از ویژگی‌های پروتکل NetWM.
این گزینه ممکن است برای مدیر پنجره‌های معیوب کارساز باشد یا نباشد. این گزینه برخی از قابلیت‌هایی را که قبلاً توسط گزینهٔ اکنون حذف‌شدهٔ --fstype پیاده‌سازی شده بود فراهم می‌کند. در واقع برای توسعه‌دهندگان مشخص نیست که این گزینه تا چه حد مورد نیاز بوده است، بنابراین از بازخوردها استقبال می‌شود.
به طور خاص، مقدار yes استفاده از پشتیبانی تمام‌صفحهٔ NetWM را تحمیل می‌کند، حتی اگر توسط WM اعلام نشده باشد. این می‌تواند برای مدیر پنجره‌هایی که عمداً ناسازگار رفتار می‌کنند، مانند XMonad، مفید باشد. (ظاهراً XMonad پشتیبانی از تمام‌صفحه را اعلام نمی‌کند زیرا Flash از آن استفاده می‌کند. ظاهراً برنامه‌هایی که در هر صورت می‌خواهند از حالت تمام‌صفحه استفاده کنند باید یا راهنماهای پشتیبانی NetWM را نادیده بگیرند یا یک راهکار دورزدن ارائه دهند. مایهٔ تأسف برای XMonad به دلیل شکستن عمدی پروتکل‌های X؛ گویی خود X به اندازهٔ کافی بد نیست).
به طور پیش‌فرض، پشتیبانی از NetWM به طور خودکار شناسایی می‌شود (auto).
این گزینه ممکن است در آینده حذف شود.
--x11-bypass-compositor=<yes|no|fs-only|never>
اگر روی yes تنظیم شود، از کامپوزیتور درخواست می‌کند تا پنجرهٔ mpv را unredirect کند (پیش‌فرض: fs-only). این کار از نشانهٔ _NET_WM_BYPASS_COMPOSITOR استفاده می‌کند.
مقدار fs-only از مدیر پنجره می‌خواهد که کامپوزیتور را تنها در حالت تمام‌صفحه غیرفعال کند.
مقدار no نشانهٔ _NET_WM_BYPASS_COMPOSITOR را روی 0 قرار می‌دهد، که مقدار پیش‌فرض اعلام‌شده در مشخصات EWMH است؛ یعنی هیچ تغییری اعمال نمی‌شود.
مقدار never از مدیر پنجره می‌خواهد که هرگز کامپوزیتور را غیرفعال نکند.
--x11-present=<no|auto|yes>
آیا از آمار ارائه افزونهٔ presentation در X11 استفاده شود یا خیر (پیش‌فرض: auto).
برنامهٔ mpv رویدادهای present را از X11 درخواست می‌کند و سپس ممکن است از آنها برای نمایش دقیق‌تر فریم استفاده کند. این گزینه تنها در صورتی اثر دارد که از --video-sync=display-... استفاده شود.
گزینهٔ auto برای شناسایی خودکار، ارائه‌دهندگان XRandr را بررسی می‌کند. اگر درایورهای amd، radeon، intel، یا nouveau (درایورهای استاندارد x86 در Mesa) یافت شوند، بازخورد ارائه فعال می‌شود. برای درایورهای دیگر کارکرد پیش‌فرض تضمین نمی‌شود، بنابراین به صورت خودکار فعال نمی‌شوند.
صرف‌نظر از این موضوع، همچنان می‌توان مقادیر yes یا no را ارسال کرد تا این سازوکار فعال یا غیرفعال شود، بسته به اینکه ترکیب سخت‌افزار/درایور/غیره شما عملکرد مناسبی ارائه می‌دهد یا خیر.
--x11-wid-title=<yes|no>
آیا هنگام تعبیه شدن mpv در X11 عنوان پنجره تنظیم شود یا خیر (پیش‌فرض: no).
0.0
--cdda-device=<path>
تعیین دستگاه CD برای پخش CDDA. مسیر پیش‌فرض دستگاه به سیستم‌عامل بستگی دارد. بخش OPTICAL DRIVES را ببینید.
--dvd-device=<path>
تعیین دستگاه DVD یا نام فایل .iso. همچنین می‌توانید دایرکتوری‌ای را مشخص کنید
که حاوی فایل‌هایی است که قبلاً مستقیماً از یک DVD کپی شده‌اند (مثلاً با vobcopy).
مسیر پیش‌فرض دستگاه به سیستم‌عامل بستگی دارد. بخش OPTICAL DRIVES را ببینید.
7.0
3.5
"مثال"
mpv dvd:// --dvd-device=/path/to/dvd/
168u
168u
--bluray-device=<path>
تعیین مکان دیسک Blu-ray. باید دایرکتوری‌ای با ساختار Blu-ray باشد.
مسیر پیش‌فرض دستگاه به سیستم‌عامل بستگی دارد. بخش OPTICAL DRIVES را ببینید.
7.0
3.5
"مثال"
mpv bd:// --bluray-device=/path/to/bd/
168u
168u
--cdda-...
این گزینه‌ها را می‌توان برای تنظیم دقیق قابلیت خواندن CD صوتی در mpv استفاده کرد.
--cdda-speed=<value>
تنظیم سرعت چرخش CD.
--cdda-paranoia=<0-2>
تنظیم سطح پارانویا (paranoia). به نظر می‌رسد مقادیر غیر از 0 پخش هر چیزی به‌جز
قطعه (تِرَک) اول را مختل می‌کنند.
7.0
0
غیرفعال کردن بررسی (پیش‌فرض)
1
تنها بررسی هم‌پوشانی (overlap)
2
تصحیح و تأیید کامل داده‌ها
168u
--cdda-sector-size=<value>
تنظیم اندازه خواندن اتمیک (atomic).
--cdda-overlap=<value>
مجبور کردن حداقل جستجوی هم‌پوشانی در حین تأیید اعتبار به تعداد <value> سکتور.
--cdda-toc-offset=<value>
افزودن <value> سکتور به مقادیر گزارش‌شده هنگام آدرس‌دهی قطعه‌ها.
می‌تواند منفی باشد.
--cdda-skip=<yes|no>
پذیرش (یا هرگز نپذیرفتن) بازسازی ناقص داده‌ها.
--cdda-cdtext=<yes|no>
چاپ متن دیسک (CD text). این گزینه به‌طور پیش‌فرض غیرفعال است، زیرا به دلایل
نامشخص کارایی درایوهای CD-ROM را مختل می‌کند.
--dvd-speed=<speed>
تلاش برای محدود کردن سرعت DVD (پیش‌فرض: 0، بدون تغییر). سرعت پایه DVD برابر با
1385 کیلوبایت بر ثانیه (kB/s) است، بنابراین یک درایو 8x می‌تواند با سرعتی تا 11080 kB/s بخواند.
سرعت‌های پایین‌تر باعث کم‌صداتر شدن درایو می‌شوند. برای تماشای DVD، سرعت 2700 kB/s
باید به اندازه کافی کم‌صدا و سریع باشد. mpv هنگام خروج سرعت را به مقدار پیش‌فرض درایو بازمی‌گرداند.
مقادیر حداقل 100 به معنای سرعت بر حسب kB/s هستند. مقادیر کمتر از 100 به معنای مضاربی از
1385 kB/s خواهند بود؛ برای مثال --dvd-speed=8 سرعت 11080 kB/s را انتخاب می‌کند.
نکته:
7.0
3.5
برای تغییر سرعت، به دسترسی نوشتن روی دستگاه DVD نیاز دارید.
168u
168u
--dvd-angle=<ID>
برخی از DVDها حاوی صحنه‌هایی هستند که از چندین زاویه قابل مشاهده‌اند.
این گزینه مشخص می‌کند mpv از کدام زاویه استفاده کند (پیش‌فرض: 1).
--bluray-angle=<ID>
برخی از دیسک‌های Blu-ray حاوی صحنه‌هایی هستند که از چندین زاویه قابل مشاهده‌اند.
این گزینه مشخص می‌کند mpv از کدام زاویه استفاده کند (پیش‌فرض: 1).
0.0
--brightness=<-100-100>
تنظیم روشنایی سیگنال ویدیو (پیش‌فرض: 0). توسط همهٔ درایورهای خروجی ویدیو پشتیبانی نمی‌شود.
--contrast=<-100-100>
تنظیم کنتراست سیگنال ویدیو (پیش‌فرض: 0). توسط همهٔ درایورهای خروجی ویدیو پشتیبانی نمی‌شود.
--saturation=<-100-100>
تنظیم اشباع رنگ سیگنال ویدیو (پیش‌فرض: 0). با این گزینه می‌توانید خروجی سیاه‌وسفید (grayscale) دریافت کنید. توسط همهٔ درایورهای خروجی ویدیو پشتیبانی نمی‌شود.
--gamma=<-100-100>
تنظیم گامای سیگنال ویدیو (پیش‌فرض: 0). توسط همهٔ درایورهای خروجی ویدیو پشتیبانی نمی‌شود.
--hue=<-100-100>
تنظیم فام رنگ سیگنال ویدیو (پیش‌فرض: 0). با این گزینه می‌توانید یک نگاتیو رنگی از تصویر دریافت کنید. توسط همهٔ درایورهای خروجی ویدیو پشتیبانی نمی‌شود.
168u
دیمکسر (Demuxer)
0.0
--demuxer=<[+]name>
اجبار به استفاده از یک نوع دیمکسر خاص. برای اجبار، یک '+' قبل از نام قرار دهید؛ این کار برخی از بررسی‌ها را نادیده می‌گیرد. نام دیمکسر را به همان شکلی که توسط --demuxer=help چاپ می‌شود وارد کنید.
--demuxer-lavf-analyzeduration=<value>
حداکثر مدت‌زمان بر حسب ثانیه برای تحلیل ویژگی‌های استریم.
--demuxer-lavf-probe-info=<yes|no|auto|nostreams>
تعیین این‌که آیا اطلاعات استریم کاوش (probe) شود یا خیر (پیش‌فرض: auto). از نظر فنی، این گزینه کنترل می‌کند که آیا تابع avformat_find_stream_info() از کتابخانهٔ libavformat فراخوانی شود یا خیر. معمولاً فراخوانی آن امن‌تر است، اما می‌تواند راه‌اندازی را نیز کُندتر کند.
گزینهٔ auto (پیش‌فرض) سعی می‌کند این فراخوانی را برای چند فرمت شناخته‌شده و امن که در فهرست سفید قرار دارند نادیده بگیرد، در حالی که برای بقیهٔ فرمت‌ها آن را فراخوانی می‌کند.
گزینهٔ nostreams تنها در صورتی و دقیقاً زمانی آن را فراخوانی می‌کند که پس از باز شدن، به نظر برسد فایل هیچ استریمی ندارد (در مواردی مفید است که برای تشخیص وجود هرگونه استریم، فراخوانی این تابع ضروری است، مانند فایل‌های FLV).
--demuxer-lavf-probescore=<1-100>
حداقل امتیاز کاوش (probe score) مورد نیاز libavformat. مقادیر کمتر به داده‌های کمتری برای بارگذاری نیاز دارند (باعث شروع سریع‌تر استریم‌ها می‌شود)، اما قابلیت اطمینان تشخیص فرمت فایل را کاهش می‌دهند. می‌تواند برای اجبار به استفاده از دیمکسرهای خودکار شناسایی‌شدهٔ libavformat استفاده شود، حتی اگر libavformat تشخیص را به اندازهٔ کافی قابل اعتماد نداند. (پیش‌فرض: 26).
--demuxer-lavf-allow-mimetype=<yes|no>
اجازه دادن به استخراج فرمت از نوع MIME پروتکل HTTP (پیش‌فرض: yes). در صورتی که پخش مواردی از طریق HTTP به طور مرموزی با شکست مواجه می‌شود، در حالی که همان فایل‌ها از دیسک محلی کار می‌کنند، این گزینه را روی no قرار دهید.
این گزینه به صورت پیش‌فرض فعال است تا تاخیر هنگام باز کردن استریم‌های HTTP کاهش یابد.
--demuxer-lavf-format=<name>
اجبار به استفاده از یک دیمکسر مشخص libavformat.
--demuxer-lavf-hacks=<yes|no>
به‌طور پیش‌فرض، برخی از فرمت‌ها با بررسی صریح آن‌ها، متفاوت از فرمت‌های دیگر مدیریت می‌شوند. بیشتر این موارد برای جبران رفتارهای عجیب یا ناقص دیمکسرهای libavformat هستند. ارسال no این موارد را غیرفعال می‌کند. فقط برای اشکال‌زدایی و آزمایش.
--demuxer-lavf-o=<key>=<value>[,<key>=<value>[,...]]
ارسال گزینه‌های AVOptions به دیمکسر libavformat.
توجه داشته باشید که از وصله‌ای برای بی‌نیاز کردن o= و ارسال تمام گزینه‌های ناشناخته از طریق سامانهٔ AVOption استقبال می‌شود. فهرست کاملی از AVOptions را می‌توان در کتابچهٔ راهنمای FFmpeg یافت. توجه داشته باشید که برخی گزینه‌ها ممکن است با گزینه‌های mpv تداخل داشته باشند.
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به بخش List Options مراجعه کنید.
7.0
3.5
"مثال"
--demuxer-lavf-o=fflags=+ignidx
168u
168u
--demuxer-lavf-probesize=<value>
حداکثر مقدار داده برای کاوش در مرحلهٔ تشخیص. در مورد MPEG-TS، این مقدار حداکثر تعداد بسته‌های TS را برای بررسی مشخص می‌کند.
--demuxer-lavf-buffersize=<value>
اندازهٔ بافر خواندن استریم تخصیص‌یافته به libavformat بر حسب بایت (پیش‌فرض: 32768). کاهش این اندازه می‌تواند تاخیر را کم کند. توجه داشته باشید که ممکن است libavformat بافر را به صورت داخلی بازتخصیص دهد، یا به طور کامل از همهٔ آن استفاده نکند.
--demuxer-lavf-linearize-timestamps=<yes|no|auto>
تلاش برای خطی‌سازی بازنشانی‌های برچسب زمانی (timestamp) در استریم‌های دیمکس‌شده (پیش‌فرض: auto). این قابلیت تنها برای تک‌استریم‌های صوتی آزمایش شده است. مشخص نیست که آیا برای ویدیو درست عمل می‌کند یا نه (اما احتمالاً کار نخواهد کرد). توجه داشته باشید که پیاده‌سازی در هر صورت کمی نادرست است و ناپیوستگی به اندازهٔ حدود ۱ فریم کدک ایجاد خواهد کرد.
حالت auto این قابلیت را برای استریم صوتی OGG فعال می‌کند. این حالت مورد رایج و آزاردهندهٔ استریم‌های رادیو وب OGG را پوشش می‌دهد. برخی از آن‌ها هر بار که آهنگ جدیدی شروع می‌شود، برچسب‌های زمانی را به 0 بازنشانی می‌کنند. این کار باعث خرابی کَش قابل پرش (seekable cache) در mpv می‌شود که نمی‌تواند با بازنشانی‌های برچسب زمانی کار کند. توجه داشته باشید که رابط برنامه‌نویسی پرش FFmpeg/libavformat نیز نمی‌تواند با این مسئله کار کند؛ محتمل است که فعال بودن این گزینه وضعیت را خراب‌تر کند، در حالی که در صورت غیرفعال بودن آن، حداقل می‌توانید در آهنگ اولِ استریم پرش انجام دهید. به‌هر‌حال اگر پرش به خارج از کش mpv باشد، در هیچ حالتی نتیجهٔ مفیدی نخواهید گرفت.
--demuxer-lavf-propagate-opts=<yes|no>
انتشار گزینه‌های سطح FFmpeg به اتصالاتی که به صورت بازگشتی باز می‌شوند (پیش‌فرض: yes). این مورد لازم است زیرا FFmpeg این تنظیمات را به صورت خودکار روی زمینه‌های تودرتوی AVIO اعمال می‌کند. از طرف دیگر، این کار می‌تواند در موقعیت‌های خاصی مشکل ایجاد کند - این API در FFmpeg است و راه فراری ندارید.
این مورد به ویژه بر گزینهٔ --timeout و هر چیزی که با --demuxer-lavf-o ارسال شود تأثیر می‌گذارد.
اگر این گزینه در آینده در نقطه‌ای غیرضروری تشخیص داده شود، بدون اطلاع قبلی حذف خواهد شد.
--demuxer-mkv-subtitle-preroll=<yes|index|no>
تلاش بیشتر برای نمایش زیرنویس‌های نرم تعبیه‌شده هنگام پرش به نقطه‌ای از فایل. در حالت عادی، ممکن است به خاطر نحوهٔ طراحی برخی فرمت‌های ظرف فایل (container)، زیرنویس در مقصد پرش نشان داده نشود. زیرنویس‌ها تنها در صورتی نمایش داده می‌شوند که پرش دقیقاً به موقعیت اولین ظهور زیرنویس یا پیش از آن انجام شود. بدتر از آن، زمان‌بندی زیرنویس‌ها اغلب به شکلی است که مقدار بسیار ناچیزی زودتر از فریم ویدیوی مرتبط ظاهر می‌شوند، به طوری که پرش به آن فریم ویدیو معمولاً زیرنویس را در آن موقعیت دیمکس نمی‌کند.
فعال کردن این گزینه باعث می‌شود دیمکسر خواندن داده‌ها را کمی پیش از مقصد پرش آغاز کند تا زیرنویس‌ها به درستی ظاهر شوند. توجه داشته باشید که این کار پرش را کُندتر می‌کند و تضمینی نیست که همیشه کار کند. این ویژگی تنها زمانی عمل می‌کند که زیرنویس به اندازهٔ کافی به مقصد پرش نزدیک باشد.
تنها با دیمکسر داخلی Matroska کار می‌کند. همیشه برای پرش‌های مطلق (absolute) و hr-seeks فعال است و این گزینه رفتار را فقط برای پرش‌های نسبی یا غیردقیق تغییر می‌دهد.
می‌توانید از گزینهٔ --demuxer-mkv-subtitle-preroll-secs برای مشخص کردن حداکثر مقدار داده‌ای که دیمکسر باید پیش‌خوانی کند تا بسته‌های زیرنویس دارای هم‌پوشانی را بیابد، استفاده کنید. تنظیم این مقدار روی 0 این سازوکار پیش‌خوانی (preroll) را عملاً غیرفعال می‌کند. تعیین مقدار بسیار بزرگ می‌تواند پرش را بسیار کُند کند، و یک مقدار فوق‌العاده بزرگ باعث می‌شود در هر پرش، کل فایل از ابتدا تا مقصد پرش مجدداً خوانده شود - ممکن است پرش به سمت انتهای فایل کُندتر شود. جزئیات فنی پیچیده است، و مقدار در واقع به سمت کلاستر حاوی فریم کلیدی (keyframe) قبلی ویدیو به پایین گرد می‌شود.
برخی فایل‌ها، به ویژه فایل‌هایی که با نگارش‌های جدیدتر mkvmerge مالتی‌پلکس شده‌اند، حاوی اطلاعات تعبیه‌شده‌ای هستند که می‌توان از آن‌ها برای تشخیص این‌که کدام بسته‌های زیرنویس با مقصد پرش هم‌پوشانی دارند استفاده کرد. در این موارد، mpv میزان داده‌های خوانده‌شده را به حداقل می‌رساند. (اگرچه باز هم تمام داده‌های بین کلاستر حاوی اولین بستهٔ زیرنویس مورد نظر و مقصد پرش را خواهد خواند.) اگر انتخاب index (که پیش‌فرض است) تعیین شده باشد، پیش‌خوانی تنها در صورتی انجام می‌شود که این اطلاعات واقعاً در دسترس باشند. اگر از این روش استفاده شود، حداکثر مقدار داده برای نادیده‌گرفتن (skip) می‌تواند به صورت مازاد توسط --demuxer-mkv-subtitle-preroll-secs-index کنترل شود (اگر مقدار گزینهٔ بدون -index بیشتر باشد، همچنان از آن استفاده می‌کند).
همچنین گزینهٔ --hr-seek-demuxer-offset را ببینید. این گزینه می‌تواند به اثر مشابهی دست یابد، اما تنها در صورتی که hr-seek فعال باشد. این گزینه با هر دیمکسری کار می‌کند، اما پرش را بسیار کُندتر می‌سازد، چرا که به جای رد شدن ساده از روی داده‌ها، مجبور است داده‌های صوتی و ویدیویی را رمزگشایی کند.
--demuxer-mkv-subtitle-preroll-secs=<value>
گزینهٔ --demuxer-mkv-subtitle-preroll را ببینید.
--demuxer-mkv-subtitle-preroll-secs-index=<value>
گزینهٔ --demuxer-mkv-subtitle-preroll را ببینید.
--demuxer-mkv-probe-start-time=<yes|no>
بررسی زمان شروع فایل‌های Matroska (پیش‌فرض: yes). این گزینه صرفاً برچسب‌های زمانی اولین کلاستر را می‌خواند و فرض می‌کند زمان شروع است. از نظر فنی، این کار همچنین برچسب زمانی نخست را می‌خواند که ممکن است تاخیر را به اندازهٔ یک فریم افزایش دهد (که می‌تواند برای استریم‌های زنده مهم باشد)..TP
--demuxer-mkv-probe-video-duration=<yes|no|full>
هنگام باز کردن فایل، به انتهای آن پرش (seek) کرده و برچسب زمانی (timestamp) آخرین
بستهٔ ویدیو را بررسی می‌کند و آن را به عنوان مدت‌زمان فایل گزارش می‌دهد. این ویژگی
صرفاً برای سازگاری با Haali در نظر گرفته شده است. در این حالت، ممکن است باز کردن
فایل کندتر باشد (به‌ویژه هنگام پخش از طریق http)، یا رفتار برنامه با فایل‌های
خراب بسیار بدتر شود. بنابراین از این گزینه استفاده نکنید.
حالت yes صرفاً از نمایه (index) استفاده می‌کند و تعداد اندکی از بلوک‌ها را
از انتهای فایل می‌خواند. حالت full در واقع کل فایل را پیمایش می‌کند و
می‌تواند حتی بدون وجود نمایه (مانند فایل‌های ناقص)، تخمین قابل اعتمادی ارائه دهد.
--demuxer-mkv-crop-compat=<yes|no>
فعال کردن حالت سازگاری برای فایل‌هایی که به طور کامل با مشخصات Matroska
مطابقت ندارند. (پیش‌فرض: yes)
بیشتر فایل‌های حاوی فرادادهٔ برش (cropping metadata) برای نمایش صحیح به این حالت نیاز دارند.
اگر این گزینه فعال باشد، فرادادهٔ برش قبل از محاسبهٔ نسبت ابعاد تصویر (aspect ratio) ویدیو
اعمال می‌شود و اطمینان حاصل می‌شود که ویدیو متناسب با آن برش داده شود. اگر این گزینه
غیرفعال باشد، تصویر ابتدا برش داده شده و سپس کشیده می‌شود تا با DisplayWidth و
DisplayHeight مطابقت یابد.
طبق مشخصات Matroska، نسبت ابعاد پیکسل (PAR) باید پس از برش محاسبه شود. با این حال،
اکثر فایل‌ها به این قاعده پایبند نیستند، زیرا این کار باعث ناسازگاری با پخش‌کننده‌های
ناآگاه از برش می‌شود. علاوه بر این، MKVToolNix هنگام اعمال فرادادهٔ برش، DisplayWidth و
DisplayHeight را به طور خودکار تنظیم نمی‌کند، که باعث می‌شود بیشتر فایل‌های ایجاد شده
با آن نیز از مشخصات پیروی نکنند.
برای جزئیات بیشتر ببینید:
https://github.com/ietf-wg-cellar/matroska-specification/pull/947
https://gitlab.com/mbunkus/mkvtoolnix/-/issues/2389
https://github.com/mpv-player/mpv/pull/13446
--demuxer-rawaudio-channels=<value>
تعداد کانال‌ها (یا چینش کانال) در صورت استفاده از --demuxer=rawaudio
(پیش‌فرض: stereo).
--demuxer-rawaudio-format=<value>
قالب نمونه (sample format) برای --demuxer=rawaudio (پیش‌فرض: s16le).
برای دریافت فهرستی از تمام قالب‌ها از --demuxer-rawaudio-format=help استفاده کنید.
--demuxer-rawaudio-rate=<value>
نرخ نمونه‌برداری (sample rate) برای --demuxer=rawaudio (پیش‌فرض: 44 kHz).
--demuxer-rawvideo-fps=<value>
نرخ فریم بر ثانیه برای --demuxer=rawvideo (پیش‌فرض: 25.0).
--demuxer-rawvideo-w=<value>, --demuxer-rawvideo-h=<value>
ابعاد تصویر بر حسب پیکسل برای --demuxer=rawvideo.
7.0
3.5
"مثال"
پخش یک نمونهٔ خام YUV:
0.0
3.5
mpv sample-720x576.yuv --demuxer=rawvideo \
--demuxer-rawvideo-w=720 --demuxer-rawvideo-h=576
168u
168u
168u
168u
--demuxer-rawvideo-format=<value>
فضای رنگی (fourcc) به صورت هگزادسیمال یا رشته برای --demuxer=rawvideo
(پیش‌فرض: YV12).
--demuxer-rawvideo-mp-format=<value>
فضای رنگی بر اساس قالب داخلی ویدیو برای --demuxer=rawvideo. برای دریافت
فهرستی از قالب‌های ممکن از --demuxer-rawvideo-mp-format=help استفاده کنید.
--demuxer-rawvideo-codec=<value>
تنظیم کدک ویدیویی به جای انتخاب کدک rawvideo هنگام استفاده از
--demuxer=rawvideo. این گزینه از همان مقادیر نام کدک‌ها در
--vd استفاده می‌کند (اما نام‌های رمزگشا را نمی‌پذیرد).
--demuxer-rawvideo-size=<value>
اندازهٔ فریم بر حسب بایت هنگام استفاده از --demuxer=rawvideo.
--demuxer-max-bytes=<bytesize>
میزان مجاز بافر کردن رو به جلو توسط دیمکسر را کنترل می‌کند. دیمکسر به طور عادی
تلاش می‌کند تا جایی که لازم است، یا به میزانی که با --demuxer-readahead-secs
درخواست شده، داده‌ها را جلوتر بخواند. این گزینه می‌تواند برای محدود کردن حداکثر
خواندن رو به جلو به کار رود. این کار از خواندن بیش از حد در صورت وجود فایل‌های خراب
یا پخش ناهمگام جلوگیری می‌کند. دیمکسر به محض رسیدن به یکی از محدودیت‌ها، خواندن
بسته‌های اضافی را متوقف خواهد کرد. (این محدودیت‌ها به دلایل فنی همچنان ممکن است
کمی رد شوند.)
اگر هشدار سرریز صف بسته‌ها (packet queue overflow) دریافت کردید و فکر می‌کنید پخش عادی
با یک صف بستهٔ بزرگ‌تر ممکن است، این محدودیت‌ها را افزایش دهید.
برای پیش‌فرض‌ها و دامنهٔ مقادیر، --list-options را ببینید. گزینه‌های <bytesize>
پسوندهایی مانند KiB و MiB را می‌پذیرند.
--demuxer-max-back-bytes=<bytesize>
میزان داده‌های گذشته را که دیمکسر مجاز به نگهداری آن‌هاست کنترل می‌کند. این گزینه تنها
در صورتی کاربرد دارد که حافظهٔ موقت (cache) فعال باشد.
برخلاف کش رو به جلو، هیچ کنترلی روی این که چند ثانیه ذخیره شود وجود ندارد - صرفاً
به همان اندازه‌ای که این گزینه اجازه می‌دهد حافظه مصرف می‌کند. تنظیم این گزینه روی 0
صراحتاً هرگونه بافر بازگشتی (back buffer) را غیرفعال می‌کند، اما این امر به وضعیتی
منجر می‌شود که محدودهٔ پرش به جلو از پسِ موقعیت پخش فعلی شروع شود (زیرا بسته‌های گذشته را
که نقاط پرش هستند حذف می‌کند).
در صورت رسیدن به انتهای فایل، فضای بلااستفادهٔ باقی‌مانده از بافر رو به جلو به
بافر بازگشتی "اهدا" می‌شود (مگر اینکه اندازهٔ بافر بازگشتی روی 0 تنظیم شده باشد،
یا --demuxer-donate-buffer روی no تنظیم شده باشد).
این کار همچنان کل مصرف حافظهٔ موقت را به مجموع کش‌های جلو و عقب محدود می‌کند و در عمل
استفادهٔ بهتری از کل بودجهٔ حافظهٔ مجاز به عمل می‌آورد. (عکس این حالت رخ نمی‌دهد: بافر
بازگشتیِ آزاد هرگز به بافر رو به جلو "اهدا" نمی‌شود.)
به یاد داشته باشید که سایر بافرهای موجود در پخش‌کننده (مانند رمزگشاها) باعث می‌شوند
دیمکسر فریم‌های "آینده" را در بافر بازگشتی کش کند، که می‌تواند تصور دربارهٔ
مقدار داده‌های موجود در بافر بازگشتی را دچار انحراف کند.
برای پیش‌فرض‌ها و دامنهٔ مقادیر، --list-options را ببینید.
--demuxer-donate-buffer=<yes|no>
آیا به بافر بازگشتی اجازه داده شود از بخشی از بافر رو به جلو استفاده کند یا خیر (پیش‌فرض: yes).
اگر روی yes تنظیم شود، رفتار "اهدا" که در توضیحات گزینهٔ
--demuxer-max-back-bytes شرح داده شد فعال می‌شود. این بدان معناست که بافر بازگشتی
ممکن است تا سقف مجموع گزینه‌های بافر جلو و بافر بازگشتی، منهای اندازهٔ فعال بافر رو به جلو،
حافظه مصرف کند. اگر روی no تنظیم شود، گزینه‌ها اندازه‌های بافر رو به جلو و بازگشتی
را به صورت جداگانه و دقیق محدود می‌کنند.
توجه داشته باشید که در صورت رسیدن به انتهای فایل، داده‌های بافر شده حتی اگر درون کش
به عقب پرش کنید یکسان باقی می‌مانند. دلیل این امر این است که بافر بازگشتی تنها زمانی
کاهش می‌یابد که داده‌های جدیدی خوانده شوند.
--demuxer-seekable-cache=<yes|no|auto>
گزینهٔ اشکال‌زدایی برای کنترل اینکه آیا پرش (seeking) می‌تواند از حافظهٔ موقت دیمکسر
استفاده کند یا خیر (پیش‌فرض: auto). در حالت عادی هرگز نیازی به تنظیم این گزینه ندارید؛
مقدار پیش‌فرض auto کار درست را انجام می‌دهد و در صورتی که --cache روی
yes تنظیم شده باشد (یا اگر --cache=auto باشد به صورت ضمنی yes باشد)،
پرش مبتنی بر حافظهٔ موقت را فعال می‌کند.
در صورت فعال بودن، جابه‌جایی‌های کوتاه پرش باعث راه‌اندازی پرش سطح پایین در دیمکسر
نخواهد شد (که به عنوان مثال به معنای اجتناب از رفت‌وبرگشت‌های کند شبکه یا باگ‌های
پرش FFmpeg است). اگر پرش نتواند درون محدودهٔ کش‌شده رخ دهد، پرش سطح پایین اجرا خواهد شد.
پرش به خارج از کش محدودهٔ کش‌شدهٔ جدیدی را آغاز می‌کند، اما در صورتی که دیمکسر رفتارهای
پشتیبانی‌نشدهٔ خاصی نشان دهد، می‌تواند محدودهٔ کش قبلی را دور بریزد.
مقدار ویژهٔ auto در شرایط مشابه با استفاده از --cache-secs، به معنی
yes است (یعنی زمانی که جریان داده یک جریان شبکه به نظر برسد یا حافظهٔ موقت
جریان فعال باشد).
--demuxer-thread=<yes|no>
اجرای دیمکسر در یک رشتهٔ (thread) جداگانه، و اجازه دادن به آن برای پیش‌واکشی (prefetch)
مقدار مشخصی از بسته‌ها (پیش‌فرض: yes). فعال بودن این گزینه منجر به پخش روان‌تر می‌شود،
قابلیت‌هایی مانند پیش‌واکشی را فعال می‌کند، و از قفل شدن پخش‌کننده به خاطر توقف شبکه
جلوگیری می‌کند. از سوی دیگر، می‌تواند بار اضافی ایجاد کند، یا پیش‌واکشی در پس‌زمینه
می‌تواند منابع CPU را بیش از حد درگیر کند.
غیرفعال کردن این گزینه توصیه نمی‌شود. از آن صرفاً برای اشکال‌زدایی استفاده کنید.
--demuxer-termination-timeout=<seconds>
تعداد ثانیه‌هایی که پخش‌کننده باید برای بستن دیمکسر منتظر بماند (پیش‌فرض: 0.1).
پخش‌کننده تا این مدت زمان قبل از اینکه لایهٔ جریان را به اجبار ببندد منتظر می‌ماند.
بستن اجباری معمولاً بدان معناست که به ورودی/خروجی (I/O) شبکه فرصتی برای بستن اتصالاتش
به شیوهٔ عادی و مناسب داده نمی‌شود (البته سیستم‌عامل همچنان می‌تواند اتصالات TCP را
به درستی ببندد)، و این امر ممکن است منجر به ثبت پیام‌های آزاردهنده در گزارش‌ها، و در
برخی موارد سردرگمی کارگزارهای راه دور شود.
این مهلت زمانی معمولاً تنها زمانی اعمال می‌شود که بارگذاری به درستی به پایان رسیده باشد.
اگر بارگذاری توسط کاربر لغو شود، یا در برخی شرایط خاص مانند حذف ترک‌های خارجیِ دریافت‌شده
از شبکه در حین پخش، همواره از بستن اجباری استفاده می‌شود.
--demuxer-readahead-secs=<seconds>
اگر --demuxer-thread فعال باشد، این گزینه مقدار خواندن و بافر رو به جلو توسط دیمکسر
را بر حسب ثانیه کنترل می‌کند (پیش‌فرض: 1). تا زمانی که هیچ بسته‌ای اختلاف برچسب زمانیِ
بیشتری از مقدار خواندن رو به جلو نسبت به آخرین بستهٔ تحویل داده شده به رمزگشا نداشته باشد،
دیمکسر به خواندن ادامه می‌دهد..sp
توجه داشته باشید که با فعال کردن کَش (مانند --cache=yes، یا اگر ورودی به عنوان یک جریان شبکه در نظر گرفته شود و از --cache=auto استفاده گردد)، این گزینه عمدتاً نادیده گرفته می‌شود. (--cache-secs این مقدار را بازنویسی خواهد کرد. از نظر فنی، بیشینه هر دو گزینه استفاده می‌شود.)
هدف اصلی این گزینه محدود کردن پیش‌خوانی (readahead) برای پخش محلی است، زیرا مقدار بزرگ readahead در این حالت چندان کاربردی ندارد.
(این مقدار معمولاً تقریبی است، زیرا بسیاری از قالب‌های پرونده، برچسب‌های زمانی خطی را ذخیره نمی‌کنند.)
--demuxer-hysteresis-secs=<seconds>
هنگامی که محدودیت دیمکسر فرا برسد (--demuxer-max-bytes،
--demuxer-readahead-secs یا --cache-secs)، از این مقدار می‌توان
برای تعیین یک هیسترزیس (hysteresis) پیش از بافر رو به جلوی دوباره دیمکسر استفاده کرد.
این گزینه حداکثر زمان باقی‌مانده در کَش (بر حسب ثانیه) از موقعیت فعلی پخش را
پیش از آنکه دیمکسر بافر رو به جلو را ادامه دهد، مشخص می‌کند.
به عنوان مثال، با مشخص کردن مقدار ۱۰ ثانیه، دیمکسر تا سقف مجاز خود رو به جلو بافر می‌کند
و تا زمانی که تنها ۱۰ ثانیه از محتوا در کَش باقی نماند، بافر کردن رو به جلو را دوباره
آغاز نخواهد کرد.
این امر می‌تواند با وادار کردن دیمکسر به بافر کردن مقطعی در قالب تکه‌ها (chunks) در هر زمان
به جای بافر بی‌وقفه برای پر نگه داشتن کَش، به طور چشمگیری در مصرف انرژی صرفه‌جویی کند
و بار سیستم را کاهش دهد.
اگر می‌خواهید در مصرف انرژی صرفه‌جویی کرده و بار پردازشی را کاهش دهید، این مقدار را روی
عدد کوچکی تنظیم کنید که بسیار کمتر از --cache-secs یا --demuxer-readahead-secs باشد.
اگر برای جریانی خاص بافر کردن هر مقداری زمان زیادی می‌برد (مانند زمانی که خواندن از یک دیسک
بسیار کند در میان است)، مقدار هیسترزیس باید برای جبران این موضوع بزرگ‌تر باشد.
مقدار پیش‌فرض ۰ ثانیه است که هیسترزیس کَش را غیرفعال می‌کند. مقدار ۱۰ ثانیه احتمالاً
برای بیشتر کاربردها عملکرد مناسبی دارد.
--prefetch-playlist=<yes|no>
پیش‌واکشی (prefetch) ورودی بعدی فهرست پخش در حین رو به پایان بودن پخش ورودی فعلی
(پیش‌فرض: no). این کار صرفاً به محض خوانده شدن کامل URL فعلی، URL ورودی بعدی
فهرست پخش را باز می‌کند.
این قابلیت با نشانی‌های URL تحلیل‌شده توسط پوششگر (wrapper) youtube-dl
کار نمی‌کند، و کار نخواهد کرد.
این گزینه بر جریان‌های HLS (نشانی‌های .m3u8) تأثیری ندارد. چنین جریانی خود
در درون یک فهرست پخش از قطعات داده است، اما توسط mpv به عنوان یک قلم رسانه‌ای واحد
در نظر گرفته می‌شود. پیش‌واکشی HLS به تنظیمات کَش دیمکسر بستگی دارد و به‌طور پیش‌فرض فعال است.
این گزینه ممکن است گهگاه تصمیمات پیش‌واکشی نادرستی بگیرد. برای مثال، نمی‌تواند پیش‌بینی کند
که آیا در فهرست پخش به عقب بازمی‌گردید یا خیر، و فرض می‌کند که فهرست پخش را ویرایش نخواهید کرد.
--force-seekable=<yes|no>
اگر پخش‌کننده تشخیص دهد که رسانه قابل پرش/جستجو (seekable) نیست (مانند پخش از یک
pipe، یا یک جریان http از کارسازی که از درخواست‌های بازه‌ای پشتیبانی نمی‌کند)، قابلیت
پرش زمانی غیرفعال خواهد شد. این گزینه می‌تواند آن را اجباراً فعال کند. برای پرش‌ها در محدوده
کَش، شانس موفقیت بالایی وجود دارد.
--demuxer-cache-wait=<yes|no>
پیش از شروع پخش، داده‌ها را تا زمان رسیدن به انتهای پرونده یا رسیدن کَش دیمکسر به حداکثر
ظرفیت می‌خواند. تنها پس از اتمام این کار، پخش آغاز می‌شود. این فرایند عمداً پیش از پرش
زمانی اولیه ناشی از --start رخ می‌دهد. این گزینه هیچ رفتار زمان اجرایی را پس از
کَش‌سازی اولیه تغییر نمی‌دهد. اگر پرونده نتواند به طور کامل در کَش قرار گیرد، این گزینه
بی‌فایده خواهد بود.
--rar-list-all-volumes=<yes|no>
هنگام باز کردن پرونده‌های rar چندجلدی (multi-volume)، تمام جلدها باز می‌شوند تا فهرست
کاملی از پرونده‌های محتوا ایجاد شود (پیش‌فرض: no). در صورت غیرفعال بودن، تنها مدخل‌های
آرشیوی فهرست می‌شوند که سرآیند (header) آن‌ها در جلد اول قرار دارد (و بدین ترتیب هنگام باز کردن
یک پرونده .rar با mpv پخش می‌شوند). این کار سرعت باز شدن را افزایش می‌دهد، و کاربرد احمقانه
و معمولِ پخش پرونده‌های چندجلدی فشرده‌نشده‌ی rar که تنها حاوی یک پرونده رسانه‌ای هستند
را سریع‌تر می‌کند.
باز شدن همچنان کُند است، زیرا به دلایلی نامعلوم، احمقانه و غیرضروری، libarchive در هر صورت
هنگام پخش پرونده اصلی همه جلدها را باز می‌کند، حتی اگر mpv هنوز هیچ مدخل آرشیوی را پیمایش
نکرده باشد.
--directory-mode=<auto|lazy|recursive|ignore>
هنگام باز کردن یک دایرکتوری، زیردایرکتوری‌ها را به‌صورت تنبلانه (lazily)، بازگشتی (recursively)
یا اصلاً باز نمی‌کند. حالت پیش‌فرض auto است که در صورت همراهی با --shuffle
رفتاری مشابه recursive دارد، و در غیر این صورت مانند lazy عمل می‌کند.
--directory-filter-types=<video,audio,image,archive,playlist>
انواع پرونده‌های رسانه‌ای برای فیلتر کردن هنگام باز کردن دایرکتوری. اگر فهرست خالی باشد،
همه پرونده‌ها به فهرست پخش اضافه می‌شوند. (پیش‌فرض:
video,audio,image,archive,playlist)
این گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
--autocreate-playlist=<no|filter|same>
هنگام باز کردن یک پرونده محلی، طوری عمل می‌کند که گویی دایرکتوری والد باز شده است و
یک فهرست پخش را به‌طور خودکار ایجاد می‌کند.
7.0
no
بارگذاری تنها یک پرونده منفرد (پیش‌فرض).
filter
ایجاد یک فهرست پخش از دایرکتوری والد با پرونده‌هایی که با
--directory-filter-types تطابق دارند.
same
ایجاد یک فهرست پخش از دایرکتوری والد با پرونده‌هایی که با همان دسته‌بندی پرونده
بارگذاری‌شده فعلی همخوانی دارند. یکی از گزینه‌های *-exts بر اساس پرونده
ورودی انتخاب می‌شود و فقط پرونده‌هایی با پسوندهای منطبق به فهرست پخش افزوده می‌شوند.
اگر خود پرونده ورودی با هیچ فهرست پسوندی تطابق نداشته باشد، فهرست پخش به‌طور
خودکار تولید نمی‌شود.
168u
0.0
--native-keyrepeat=<yes|no>
استفاده از تنظیمات سیستم برای تأخیر و نرخ تکرار کلید، به جای
--input-ar-delay و --input-ar-rate (پیش‌فرض: no).
اعمال این مورد به زیرسیستم VO و نحوه مدیریت ورودی صفحه‌کلید توسط آن بستگی دارد.
بر روی ورودی ترمینال اعمال نمی‌شود.
--native-touch=<yes|no>
(تنها در Windows)
برای پلتفرم‌هایی مانند Windows که ورودی‌های شبیه‌سازی‌شده ماوس را برای کلاینت‌های
ناآگاه به لمس ارسال می‌کنند، به جای دریافت آن‌ها به عنوان رویدادهای شبیه‌سازی‌شده ماوس،
از رویدادهای لمسی بومی سیستم استفاده می‌کند (پیش‌فرض: no). این گزینه برای پشتیبانی
از چندلمسی در این پلتفرم‌ها الزامی است.
توجه داشته باشید که این گزینه روی پلتفرم‌های دیگر اثری ندارد: یا لمس بومی
توسط mpv پشتیبانی نمی‌شود، یا پلتفرم گزینه‌ای برای دریافت ورودی‌های شبیه‌سازی‌شده ماوس
ارائه نمی‌دهد (بنابراین لمس بومی همیشه فعال است، مانند Wayland).
--input-ar-delay
تأخیر بر حسب میلی‌ثانیه پیش از شروع تکرار خودکار یک کلید (پیش‌فرض: 200).
برای غیرفعال کردن، آن را روی 0 تنظیم کنید.
--input-ar-rate
تعداد فشرده شدن کلید برای تولید در هر ثانیه در زمان تکرار خودکار (پیش‌فرض: 40).
--input-conf=<filename>
مشخص کردن فایل پیکربندی ورودی به غیر از مسیر پیش‌فرض در دایرکتوری پیکربندی mpv
(معمولاً ~/.config/mpv/input.conf).
--input-default-bindings=<yes|no>
فعال‌سازی مقیدسازی‌های پیش‌فرض کلیدها ("ضعیف") (پیش‌فرض: yes). این‌ها نگاشت‌هایی
هستند که فایل‌های پیکربندی مانند input.conf می‌توانند بازنویسی‌شان کنند.
این گزینه در حال حاضر بر مقیدسازی‌های کلید درونی، و کلیدهایی که اسکریپت‌ها با استفاده
از mp.add_key_binding تعریف می‌کنند تأثیر می‌گذارد (اما نه بر mp.add_forced_key_binding،
چرا که این تابع input.conf را بازنویسی می‌کند).
--input-builtin-bindings=<yes|no>
فعال‌سازی بارگذاری کلیدهای میانبر درونی هنگام راه‌اندازی (پیش‌فرض: yes). این
گزینه تنها در زمان مقداردهی اولیه (lib)mpv اعمال می‌شود، و در صورت غیرفعال شدن،
امکان فعال‌سازی مجدد آن‌ها در ادامه وجود نخواهد داشت. ممکن است برای کلاینت‌های libmpv مفید باشد.
--input-builtin-dragging=<yes|no>
فعال‌سازی رفتار درونی کشیدن پنجره (پیش‌فرض: yes). تنظیم آن روی no رفتار درونی
کشیدن را غیرفعال می‌کند. توجه داشته باشید که برخلاف گزینه window-dragging،
این گزینه تنها بر VOهایی تأثیر دارد که از دستور begin-vo-dragging
پشتیبانی می‌کنند، و کشیدن پنجره‌ای را که با این دستور آغاز شده باشد غیرفعال نمی‌کند.
--input-cmdlist
چاپ تمام دستوراتی که می‌توانند به کلیدها مقید شوند.
--input-commands=<cmd1,cmd2,...>
تعریف فهرستی از دستورات برای اجرا توسط mpv. ساختار دستوری مشابه قالب
input.conf است، اما بدون آرگومان مقیدسازی کلید در ابتدا.
هنگامی که این گزینه در زمان راه‌اندازی تنظیم شود، در صورت امکان دستورات درست
پیش از شروع پخش صدا و تصویر اجرا خواهند شد (در حالت بیکار بدون فایل، بلافاصله
اجرا می‌شوند). هنگام تغییر مقادیر در زمان اجرا، دستورات در سریع‌ترین زمان ممکن
اجرا خواهند شد.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
7.0
3.5
"مثال"
0.0
--input-commands="playlist-play-index 1,set ao-volume 40"
شاخص فهرست پخش را روی 1 و مقدار ao-volume را روی 40 تنظیم می‌کند
168u
168u
168u
--input-doubleclick-time=<milliseconds>
زمان بر حسب میلی‌ثانیه برای تشخیص دو بار فشردن پیاپی دکمه به عنوان دوبار کلیک
(پیش‌فرض: 300).
--input-keylist
چاپ تمام کلیدهایی که می‌توانند به دستورات مقید شوند.
--input-key-fifo-size=<2-65000>
مشخص کردن اندازه بافر FIFO که رویدادهای کلید را بافر می‌کند (پیش‌فرض: 7). اگر
بیش از حد کوچک باشد، ممکن است برخی رویدادها از دست بروند. عیب اصلی تنظیم آن
روی یک مقدار بسیار بزرگ این است که اگر کلیدی را نگه دارید که دستوری به‌ویژه
کُند را فعال می‌کند، ممکن است پخش‌کننده در حین پردازش تمام دستورات درون صف،
پاسخ‌گو نباشد.
--input-test
حالت آزمون ورودی. به جای اجرای دستورات با فشردن کلیدها، mpv کلیدها و دستورات
مقیدشده را روی OSD نمایش می‌دهد. باید با یک ویدیوی صوری (dummy) استفاده شود،
و روش‌های معمول برای خروج از پخش‌کننده کار نخواهند کرد (کلیدهایی که معمولاً
پخش‌کننده را می‌بندند، مانند هر کلید دیگری فقط روی OSD نمایش داده می‌شوند).
به INPUT.CONF مراجعه کنید.
--input-terminal=<yes|no>
مقدار --input-terminal=no مانع از خواندن رویدادهای کلید از ورودی استاندارد
توسط پخش‌کننده می‌شود. هنگام خواندن داده‌ها از ورودی استاندارد مفید است. این گزینه
هنگامی که - در خط فرمان پیدا شود، به‌طور خودکار فعال می‌گردد. شرایطی وجود دارد
که باید آن را دستی تنظیم کنید، مثلاً اگر /dev/stdin (یا معادل آن در سیستم خود) را
باز کنید، از stdin در فهرست پخش استفاده کنید یا قصد داشته باشید بعداً از طریق دستورات
ورودی loadfile یا loadlist از stdin داده بخوانید.
--input-ipc-server=<filename>
فعال‌سازی پشتیبانی از IPC و ایجاد سوکت شنود در مسیر مشخص‌شده.
در Linux و Unix، مسیر داده‌شده یک مسیر فایل‌سیستم معمولی است. در Windows،
از لوله‌های نام‌گذاری‌شده (named pipes) استفاده می‌شود، بنابراین مسیر به فضای نام پایپ
(\\.\pipe\<name>) اشاره دارد. اگر پیشوند \\.\pipe\ وجود نداشته باشد،
mpv پیش از ساخت پایپ آن را به‌طور خودکار اضافه می‌کند؛ بنابراین
--input-ipc-server=/tmp/mpv-socket و
--input-ipc-server=\\.\pipe\tmp\mpv-socket برای IPC در Windows
معادل یکدیگر هستند.
برای جزئیات به JSON IPC مراجعه کنید.
--input-ipc-client=fd://<N>
اتصال یک کلاینت تک IPC به FD داده‌شده. این گزینه تا حدی شبیه به
--input-ipc-server است، با این تفاوت که هیچ سوکتی ایجاد نمی‌شود، و در عوض
با FD ارائه‌شده مانند اتصال سوکت دریافت‌شده از accept() رفتار می‌شود. در
عمل، می‌توانید یک FD ایجادشده توسط socketpair() یا یک pipe را ارسال کنید.
در هر دو حالت، باید مطمئن شوید که FD واقعاً توسط mpv به ارث برده شده باشد
(پرچم POSIX به نام CLOEXEC را تنظیم نکنید).
هنگامی که اتصال بسته شود، پخش‌کننده خارج می‌شود.
این گزینه تا حدی شبیه به گزینه حذف‌شده --input-file است، با این تفاوت که
تنها از FDهای عدد صحیح پشتیبانی می‌کند، و نمی‌تواند مسیرهای واقعی را باز کند.
7.0
3.5
"مثال"
--input-ipc-client=fd://123
168u
168u
نکته:
7.0
3.5
برای استفاده از این گزینه در Windows، مقدار fd باید به یک هندل سرور پایپ نام‌گذاری‌شده
پوشش‌یافته (ایجاد شده با _open_osfhandle) اشاره کند که از قبل یک کلاینت به آن
متصل است. پایپ نام‌گذاری‌شده باید به‌صورت duplex با IO هم‌پوشان (overlapped) و هندل‌های
قابل ارث‌بری ساخته شود. برنامه از طریق هندل کلاینت با mpv ارتباط برقرار می‌کند.
168u
168u
هشدار:
7.0
3.5
نوشتن در گزینه input-ipc-server در زمان اجرا، نمونه دیگری از مدیریت‌کننده
کلاینت IPC را برای گزینه input-ipc-client آغاز می‌کند، زیرا مقداردهی اولیه آن‌ها
با هم یکپارچه شده است و این سازوکار احمقانه است. این یک باگ محسوب می‌شود. نوشتن
در input-ipc-client در زمان اجرا، مدیریت‌کننده کلاینت IPC دیگری را برای مقدار جدید
راه‌اندازی می‌کند بدون اینکه مورد قبلی را متوقف کند، حتی اگر مقدار FD یکسان باشد
(اما رشته متنی مثلاً به دلیل فاصله خالی متفاوت باشد). این یک باگ نیست.
168u
168u
--input-gamepad=<yes|no>
فعال/غیرفعال کردن پشتیبانی از دسته بازی SDL2. به‌طور پیش‌فرض غیرفعال است.
--input-cursor=<yes|no>
اجازه دادن به mpv برای دریافت رویدادهای اشاره‌گر که توسط درایور خروجی
ویدیو گزارش می‌شوند. برای استفاده از OSC ضروری است. پشتیبانی به VO مورد استفاده بستگی دارد.
--input-cursor-passthrough=<yes|no>
دستور به سیستم پنجره‌بندی زیربنایی برای عبور رویدادهای اشاره‌گر از پنجره mpv.
این به پنجره‌های زیر mpv اجازه می‌دهد تا رویدادهای اشاره‌گر را دریافت کنند
به گونه‌ای که انگار پنجره mpv هرگز وجود نداشته است.
--input-media-keys=<yes|no>
در سیستم‌هایی که mpv می‌تواند بین دریافت کلیدهای چندرسانه‌ای یا واگذاری مدیریت آن‌ها
به سیستم یکی را انتخاب کند - این گزینه دریافت آن‌ها توسط mpv را کنترل می‌کند.
پیش‌فرض: yes (به جز در libmpv). تنها در macOS و Windows، زیرا در سایر سیستم‌ها
mpv حق انتخابی ندارد - سیستم تصمیم می‌گیرد که آیا کلیدهای رسانه به mpv ارسال شوند
یا خیر. برای مثال، در X11 یا Wayland، کلیدهای چندرسانه‌ای سراسری سیستم پیاده‌سازی
نشده‌اند. اینکه آیا کلیدهای رسانه‌ای هنگام فوکوس بودن پنجره mpv کار می‌کنند یا خیر،
وابسته به پیاده‌سازی است..TP
--input-preprocess-wheel=<yes|no>
رویدادهای WHEEL_* را پیش‌پردازش می‌کند تا هنگام پیمایش در جهت افقی یا عمودی، حتی اگر هر دو جهت با هم پیمایش شوند، رویدادهایی برای جهت دیگر ایجاد نشوند (پیش‌فرض: yes).
این پیش‌پردازش می‌تواند برای جلوگیری از پرش ناخواسته در زمان پخش (seeking) هنگام تغییر میزان صدا از طریق پیمایش روی تاچ‌پد با کلیدهای مقید پیش‌فرض مفید باشد. به دلیل سازوکار ناحیهٔ مرده (deadzone) استفاده‌شده، غیرفعال کردن پیش‌پردازش امکان پیمایش مورب (مانند حرکت افقی/عمودی تصویر یا panning) را فراهم کرده و به‌طور بالقوه تأخیر ورودی را کاهش می‌دهد.
توجه داشته باشید که غیرفعال کردن پیش‌پردازش بر روی فیلترهایی که احتمالاً پیش از تحویل این رویدادها به mpv توسط سیستم‌عامل/راه‌انداز اعمال می‌شوند، تأثیری ندارد.
--input-right-alt-gr=<yes|no>
(تنها در macOS و Windows)
استفاده از کلید Alt راست به عنوان Alt Gr برای تولید نویسه‌های ویژه. در صورت غیرفعال بودن، کلید Alt راست به عنوان کلید تبدیلگر (modifier) Alt در نظر گرفته می‌شود. به‌طور پیش‌فرض فعال است.
--input-vo-keyboard=<yes|no>
غیرفعال کردن تمام ورودی‌های صفحه‌کلید برای VOهایی که نمی‌توانند در توزیع مناسب ورودی صفحه‌کلید مشارکت کنند. ممکن است روی همهٔ VOها تأثیر نداشته باشد. عموماً فقط برای تعبیه‌سازی (embedding) مفید است.
در X11، یک زیرپنجره با ورودی فعال، تا زمانی که ۱. فرزند پنجرهٔ دارای فوکوس باشد و ۲. موشواره درون زیرپنجره قرار داشته باشد، تمام ورودی صفحه‌کلید را تصاحب می‌کند. این کار می‌تواند تمام ورودی صفحه‌کلید را از برنامه‌ای که پنجرهٔ mpv را تعبیه کرده است برباید؛ از سوی دیگر، اگر موشواره خارج از پنجرهٔ mpv باشد، حتی در صورت داشتن فوکوس، mpv هیچ ورودی‌ای دریافت نخواهد کرد. جعبه‌ابزارهای نوین این رفتار عجیب X11 را دور می‌زنند، اما تعبیهٔ ناشیانهٔ پنجره‌های خارجی آن را دچار اختلال می‌کند.
تنها راه مدیریت منطقی این مسئله، استفاده از پروتکل XEmbed است که برای حل این مشکلات طراحی شده است. کتابخانهٔ GTK عنصر GtkSocket را فراهم می‌کند که از XEmbed پشتیبانی می‌نماید. به نظر نمی‌رسد Qt در نسخه‌های جدیدتر سازوکار کارآمدی برای این موضوع ارائه داده باشد.
اگر برنامهٔ تعبیه‌کننده از XEmbed پشتیبانی کند، ورودی باید با تنظیمات پیش‌فرض و با غیرفعال بودن این گزینه به‌درستی کار کند. توجه داشته باشید که input-default-bindings نیز در libmpv به‌طور پیش‌فرض غیرفعال است - اگر کلیدهای مقید پیش‌فرض mpv را می‌خواهید، باید آن را فعال کنید.
--input-touch-emulate-mouse=<yes|no>
هنگامی که پشتیبانی از چندلمسی (multi-touch) فعال باشد (خواه توسط پلتفرم الزامی شده باشد، یا از طریق --native-touch فعال شده باشد)، رویدادهای لمسی را به عنوان حرکت موشواره و فشردن دکمه‌ها شبیه‌سازی می‌کند (پیش‌فرض: yes). این قابلیت برای سازگاری با کلیدهای مقید موشواره و اسکریپت‌هایی که موقعیت موشواره را برای پلتفرم‌های فاقد پشتیبانی از --native-touch=no (مانند Wayland) می‌خوانند، مفید است.
--input-tablet-emulate-mouse=<yes|no>
شبیه‌سازی حرکت موشواره و فشردن کلیدها برای رویدادهای تبلت (پیش‌فرض: yes).
تنها در Wayland.
--input-dragging-deadzone=<N>
آغاز کشیدن داخلی پنجره هنگام حرکت موشواره به خارج از محدودهٔ مردهٔ (deadzone) به اندازهٔ N پیکسل در حین پایین نگه‌داشتن کلید موشواره (پیش‌فرض: 3). این گزینه تنها بر VOهایی تأثیر دارد که از دستور begin-vo-dragging پشتیبانی می‌کنند.
--input-ime=<yes|no>
فعال‌سازی ورودی صفحه‌کلید از طریق یک روش ورودی (IME) فعال و متصل به VO (پیش‌فرض: no). پنجرهٔ بازشوی ورودی، در صورت وجود، همواره در بالا سمت چپ پنجره قرار می‌گیرد. این‌که آیا متن پیش‌ویرایش (pre-edit) رسم شود یا خیر به پلتفرم بستگی دارد. در صورتی که نتوانید متن پیش‌ویرایش را در پنجرهٔ mpv بخوانید، ممکن است نیاز باشد IME خود را طوری پیکربندی کنید که متن پیش‌ویرایش را درون پنجرهٔ بازشوی ورودی نمایش دهد.
تنها در Wayland و Windows. این گزینه برای ورودی ترمینال کاربردی ندارد.
نکته:
7.0
3.5
فعال کردن IME می‌تواند با کلیدهای مقید مشکلاتی ایجاد کند، زیرا زمانی که فشردن کلیدها وارد ناحیهٔ پیش‌ویرایش IME می‌شود، mpv قادر به تشخیص آن‌ها نیست.
توصیه می‌شود IME را تنها در صورت نیاز و فقط در بازه‌ای که انتظار ورود متن می‌رود فعال کنید.
کنسول داخلی و انتخاب‌گر ورودی، IME را تنها برای مدت زمان پذیرش ورودی متن فعال می‌کنند.
168u
168u
0.0
--osc=<yes|no>
بارگذاری یا عدم بارگذاری کنترل‌کنندهٔ روی صفحه (on-screen-controller) (پیش‌فرض: yes).
--osd-bar=<yes|no>
فعال‌سازی نمایش نوار OSD (پیش‌فرض: yes).
می‌توانید این مورد را به ازای هر دستور در input.conf با استفاده از پیشوندهای osd- پیکربندی کنید؛ به Input Command Prefixes مراجعه کنید. اگر می‌خواهید OSD را کاملاً غیرفعال کنید، از --osd-level=0 استفاده کنید.
--osd-on-seek=<no,bar,msg,msg-bar>
تنظیم آنچه در حین جست‌وجو (پرش زمانی / seek) روی OSD نمایش داده می‌شود. مقدار پیش‌فرض bar است.
می‌توانید این مورد را به ازای هر دستور در input.conf با استفاده از پیشوندهای osd- پیکربندی کنید؛ به Input Command Prefixes مراجعه کنید.
--osd-duration=<time>
تنظیم مدت‌زمان نمایش پیام‌های OSD بر حسب میلی‌ثانیه (پیش‌فرض: 1000).
--osd-font=<name>
مشخص کردن فونت مورد استفاده برای OSD. مقدار پیش‌فرض sans-serif است.
7.0
3.5
"مثال‌ها"
0.0
• 2
--osd-font='Bitstream Vera Sans'
• 2
--osd-font='Comic Sans MS'
168u
168u
168u
--osd-font-size=<size>
مشخص کردن اندازهٔ فونت OSD. برای جزئیات به --sub-font-size مراجعه کنید.
پیش‌فرض: 30
--osd-msg1=<string>
نمایش این رشته به عنوان پیام در OSD با سطح OSD برابر با 1 (به‌طور پیش‌فرض نمایان است). این پیام به صورت پیش‌فرض، و تا زمانی که پیام دیگری روی آن را نپوشاند و سطح OSD تغییر نکند، نمایان خواهد بود (به --osd-level مراجعه کنید). ویژگی‌ها را بسط می‌دهد؛ به Property Expansion مراجعه کنید.
--osd-msg2=<string>
مشابه --osd-msg1، اما برای سطح OSD برابر با 2. اگر این یک رشتهٔ خالی باشد (پیش‌فرض)، زمان پخش نمایش داده می‌شود.
--osd-msg3=<string>
مشابه --osd-msg1، اما برای سطح OSD برابر با 3. اگر این یک رشتهٔ خالی باشد (پیش‌فرض)، زمان پخش، مدت‌زمان کل و اطلاعات بیشتری نمایش داده می‌شود.
این گزینه برای دستور show-progress (به‌طور پیش‌فرض نگاشت‌شده به کلید P)، و هنگام پرش زمانی در صورت فعال بودن با --osd-on-seek یا توسط پیشوندهای osd- در input.conf استفاده می‌شود (به Input Command Prefixes مراجعه کنید).
گزینهٔ --osd-status-msg یک معادل قدیمی است (اما با تفاوتی جزئی).
--osd-status-msg=<string>
نمایش یک رشتهٔ سفارشی در هنگام پخش به جای متن وضعیت استاندارد. این گزینه جایگزین متن وضعیت استفاده‌شده برای --osd-level=3، هنگام استفاده از دستور show-progress (به‌طور پیش‌فرض نگاشت‌شده به کلید P)، و هنگام پرش زمانی در صورت فعال بودن با --osd-on-seek یا پیشوندهای osd- در input.conf می‌شود (به Input Command Prefixes مراجعه کنید). ویژگی‌ها را بسط می‌دهد؛ به Property Expansion مراجعه کنید.
این گزینه با --osd-msg3 جایگزین شده است. تنها تفاوت این است که این گزینه به‌طور ضمنی شامل ${osd-sym-cc} است. در صورتی که --osd-msg3 خالی نباشد، این گزینه نادیده گرفته می‌شود.
--osd-playing-msg=<string>
نمایش یک پیام روی OSD هنگام شروع پخش. این رشته برای ویژگی‌ها بسط داده می‌شود؛ به عنوان مثال --osd-playing-msg='file: ${filename}' پیام file: را به همراه یک فاصله و نام فایل در حال پخش نمایش می‌دهد.
به Property Expansion مراجعه کنید.
--osd-playing-msg-duration=<time>
تنظیم مدت‌زمان نمایش osd-playing-msg بر حسب میلی‌ثانیه. اگر تنظیم نشده باشد، osd-playing-msg به مدت زمان osd-duration روی صفحه باقی می‌ماند.
--osd-playlist-entry=<title|filename|both>
تعیین نمایش عنوان رسانه، نام فایل یا هر دو. اگر media-title در دسترس نباشد، فقط filename نمایش داده خواهد شد.
پیش‌فرض: title.
--osd-bar-align-x=<-1-1>
موقعیت افقی نوار OSD. مقدار -1 منتهی‌الیه چپ، 0 در مرکز، و 1 منتهی‌الیه راست است. مقادیر اعشاری (مانند 0.5) مجاز هستند.
--osd-bar-align-y=<-1-1>
موقعیت عمودی نوار OSD. مقدار -1 بالا، 0 در مرکز، و 1 پایین است. مقادیر اعشاری (مانند 0.5) مجاز هستند.
--osd-bar-w=<1-100>
عرض نوار OSD، به صورت درصدی از عرض صفحه نمایش (پیش‌فرض: 75). مقدار 50 به معنای پهنایی به اندازهٔ نصف صفحه است.
--osd-bar-h=<0.1-50>
ارتفاع نوار OSD، به صورت درصدی از ارتفاع صفحه نمایش (پیش‌فرض: 3.125).
--osd-bar-outline-size=<size>
اندازهٔ خط دور (outline) نوار OSD بر حسب پیکسل‌های مقیاس‌بندی‌شده (برای جزئیات به --sub-font-size مراجعه کنید).
--osd-bar-border-size یک نام مستعار برای --osd-bar-outline-size است.
پیش‌فرض: 0.5.
--osd-bar-marker-scale=<0-100>
ضریب اندازهٔ نشانگر نوار OSD نسبت به اندازهٔ خط دور نوار OSD.
پیش‌فرض: 1.3.
--osd-bar-marker-min-size=<size>
حداقل اندازهٔ نشانگر نوار OSD.
پیش‌فرض: 1.6.
--osd-bar-marker-style=<none|triangle|line>
تنظیم سبک نشانگر نوار OSD.
7.0
none
عدم رسم نشانگرها.
triangle
رسم نشانگرها به صورت مثلث (پیش‌فرض).
line
رسم نشانگرها به صورت خط.
168u
--osd-blur=<0..20.0>
ضریب تاری گاوسی (Gaussian blur) اعمال‌شده روی حاشیهٔ فونت OSD. مقدار 0 به معنای عدم اعمال تاری است (پیش‌فرض).
--osd-bold=<yes|no>
قالب‌بندی متن به صورت پررنگ (bold).
--osd-italic=<yes|no>
قالب‌بندی متن به صورت کج (italic).
--osd-outline-color=<color>
به --sub-color مراجعه کنید. رنگ مورد استفاده برای خط دور فونت OSD.
--osd-border-color یک نام مستعار برای --osd-outline-color است.
--osd-back-color=<color>
به --sub-color مراجعه کنید. رنگ مورد استفاده برای پس‌زمینهٔ متن OSD.
--osd-shadow-color یک نام مستعار برای --osd-back-color است.
--osd-outline-size=<size>
اندازهٔ خط دور فونت OSD بر حسب پیکسل‌های مقیاس‌بندی‌شده (برای جزئیات به --sub-font-size مراجعه کنید). مقدار 0 خط دور را غیرفعال می‌کند.
--osd-border-size یک نام مستعار برای --osd-outline-size است.
پیش‌فرض: 1.65
--osd-border-style=<outline-and-shadow|opaque-box|background-box>
به --sub-border-style مراجعه کنید. سبک مورد استفاده برای حاشیهٔ متن OSD.
--osd-color=<color>
مشخص کردن رنگ مورد استفاده برای OSD.
برای جزئیات به --sub-color مراجعه کنید.
--osd-selected-color=<color>
رنگ مورد انتخاب‌شده در فهرست‌ها.
برای جزئیات به --sub-color مراجعه کنید.
--osd-selected-outline-color=<color>
رنگ خط دور مورد انتخاب‌شده در فهرست‌ها.
برای جزئیات به --sub-color مراجعه کنید.
--osd-fractions
نمایش زمان‌های OSD همراه با کسر ثانیه (با دقت میلی‌ثانیه‌ای). برای مشاهدهٔ برچسب زمانی دقیق یک فریم ویدیو مفید است..TP
--osd-level=<0-3>
مشخص می‌کند که OSD باید در چه حالتی آغاز به کار کند.
7.0
0
OSD کاملاً غیرفعال است (تنها زیرنویس‌ها)
1
فعال (تنها هنگام تعامل کاربر نمایش داده می‌شود)
2
فعال + زمان کنونی به‌طور پیش‌فرض قابل مشاهده است
3
فعال + --osd-status-msg (زمان کنونی و وضعیت به‌طور پیش‌فرض)
168u
--osd-margin-x=<size>
حاشیه چپ و راست صفحه برای OSD بر حسب پیکسل‌های مقیاس‌بندی‌شده (برای جزئیات --sub-font-size را ببینید).
این گزینه فاصله OSD از سمت چپ و همچنین فاصله‌ای از لبه راست که در آن متن‌های طولانی OSD شکسته می‌شوند را مشخص می‌کند.
پیش‌فرض: 16
--osd-margin-y=<size>
حاشیه بالا و پایین صفحه برای OSD بر حسب پیکسل‌های مقیاس‌بندی‌شده (برای جزئیات --sub-font-size را ببینید).
این گزینه حاشیه‌های عمودی OSD را مشخص می‌کند.
پیش‌فرض: 16
--osd-align-x=<left|center|right>
کنترل می‌کند که OSD با کدام سمت صفحه تراز شود (پیش‌فرض: left).
--osd-align-y=<top|center|bottom>
موقعیت عمودی (پیش‌فرض: top).
برای جزئیات --osd-align-x را ببینید.
--osd-scale=<factor>
ضریب اندازه قلم OSD، در مقدار --osd-font-size ضرب می‌شود.
--osd-scale-by-window=<yes|no>
آیا OSD با اندازه پنجره مقیاس‌بندی شود یا خیر (پیش‌فرض: yes). اگر غیرفعال باشد، --osd-font-size و سایر گزینه‌های OSD که از پیکسل‌های مقیاس‌بندی‌شده استفاده می‌کنند همیشه بر حسب پیکسل‌های واقعی خواهند بود. اثر آن این است که تغییر اندازه پنجره اندازه قلم OSD را تغییر نخواهد داد.
نکته:
7.0
3.5
برای اسکریپت‌هایی که عناصر رابط کاربری را ترسیم می‌کنند، توصیه می‌شود هنگام تصمیم‌گیری درباره این‌که عناصر با اندازه پنجره مقیاس‌بندی شوند یا خیر، مقدار این گزینه را رعایت کنند.
168u
168u
--osd-shadow-offset=<size>
میزان جابه‌جایی سایه OSD بر حسب پیکسل‌های مقیاس‌بندی‌شده (برای جزئیات --sub-font-size را ببینید). مقدار 0 سایه‌ها را غیرفعال می‌کند.
پیش‌فرض: 0.
--osd-spacing=<size>
فاصله‌گذاری افقی قلم OSD/زیرنویس بر حسب پیکسل‌های مقیاس‌بندی‌شده (برای جزئیات --sub-font-size را ببینید). این مقدار به فاصله‌گذاری عادی حروف افزوده می‌شود. مقادیر منفی مجاز هستند.
پیش‌فرض: 0.
--video-osd=<yes|no>
فعال‌سازی رندر OSD روی پنجره ویدیو (پیش‌فرض: yes). این گزینه می‌تواند در شرایطی که OSD در ترمینال ترجیح داده می‌شود به کار رود. اگر فقط می‌خواهید رندر تمام OSD را غیرفعال کنید، از --osd-level=0 استفاده کنید.
این گزینه بر زیرنویس‌ها یا لایه‌های ایجادشده توسط اسکریپت‌ها تأثیری ندارد (به‌ویژه OSC باید با --osc=no غیرفعال شود).
این گزینه تا حدی آزمایشی است و ممکن است در آینده با سازوکار دیگری جایگزین شود.
--osd-font-provider=<...>
برای جزئیات و مقادیر پذیرفته‌شده --sub-font-provider را ببینید. توجه داشته باشید که برخلاف زیرنویس‌ها، OSD هرگز از قلم‌های تعبیه‌شده در فایل‌های چندرسانه‌ای استفاده نمی‌کند.
--osd-fonts-dir=<path>
برای جزئیات --sub-fonts-dir را ببینید. پیش‌فرض ~~/fonts است.
--osd-glyph-limit=<value>
حداکثر تعداد گلیف‌های کش‌شده در حافظه موقت libass را برای OSD تعیین می‌کند.
مقدار 0 بدان معناست که libass از مقدار پیش‌فرض خود استفاده می‌کند.
پیش‌فرض: 0.
--osd-bitmap-max-size=<value>
حداکثر اندازه حافظه موقت بیت‌مپ را در حافظه موقت libass برای OSD تعیین می‌کند. مقدار 0 بدان معناست که libass از مقدار پیش‌فرض خود استفاده می‌کند. این گزینه مقادیر را بر حسب مگابایت می‌پذیرد.
پیش‌فرض: 0.
--osd-prune-delay=<-1|seconds>
میزان تأخیر برای هرس کردن خودکار رویدادها از حافظه در libass را تعیین می‌کند.
به‌طور پیش‌فرض غیرفعال است. همچنین --sub-ass-prune-delay را ببینید.
--osd-shaper=<simple|complex>
موتور چیدمان متن مورد استفاده توسط libass را برای OSD تعیین می‌کند. پیش‌فرض: complex.
همچنین --sub-shaper را ببینید.
0.0
--screenshot-format=<type>
تعیین نوع فایل تصویر مورد استفاده برای ذخیره عکس‌های صفحه.
گزینه‌های موجود:
7.0
png
PNG
jpg
JPEG (پیش‌فرض)
jpeg
JPEG (نام مستعار برای jpg)
webp
WebP
jxl
JPEG XL
avif
AVIF
168u
--screenshot-tag-colorspace=<yes|no>
برچسب‌گذاری عکس‌های صفحه با فضای رنگی (colorspace) مناسب (پیش‌فرض: yes).
توجه داشته باشید که همه فرمت‌ها از این قابلیت پشتیبانی نمی‌کنند. در صورت عدم پشتیبانی یا غیرفعال بودن این گزینه، عکس‌های صفحه پیش از ذخیره‌سازی به sRGB تبدیل خواهند شد.
--screenshot-high-bit-depth=<yes|no>
در صورت امکان، عکس‌های صفحه با عمق بیتی (bit depth) مشابه ویدئوی منبع ذخیره می‌شوند (پیش‌فرض: yes). این گزینه به‌ویژه برای فرمت PNG حائز اهمیت است، زیرا گاهی اوقات باعث ایجاد فایل‌های PNG شانزده بیتی (16 bit) با حجم بسیار زیاد می‌شود. همچنین در صورت استفاده از ۱۶ بیت، یک کانال آلفای (alpha channel) استفاده‌نشده نیز در فایل‌های حاصل قرار خواهد گرفت.
--screenshot-template=<template>
تعیین الگوی نام فایل مورد استفاده برای ذخیره عکس‌های صفحه. این الگو نام فایل را بدون پسوند فایل مشخص می‌کند و می‌تواند شامل مشخص‌کننده‌های فرمت باشد که هنگام ثبت عکس جایگزین خواهند شد.
به‌طور پیش‌فرض، این الگو mpv-shot%n است که برای نمونه به نام فایل‌هایی مانند mpv-shot0012.png منجر می‌شود.
الگو می‌تواند با یک مسیر نسبی یا مطلق آغاز شود تا مکان دایرکتوری ذخیره‌سازی عکس‌های صفحه را مشخص کند.
اگر نام فایل نهایی عکس صفحه به فایلی موجود اشاره کند، فایل رونویسی نخواهد شد. در این صورت عکس ذخیره نمی‌شود، یا چنانچه الگو شامل %n باشد، با یک نام فایل جدید و متفاوتِ تولیدشده ذخیره خواهد شد.
مشخص‌کننده‌های فرمت مجاز:
7.0
%[#][0X]n
یک شماره ترتیبی که با صفر تا طول X پر می‌شود (پیش‌فرض: 04). برای نمونه، ارسال فرمت %04n در دوازدهمین عکس، مقدار 0012 را تولید می‌کند. این شماره با هر بار گرفتن عکس یا در صورتی که فایل از پیش وجود داشته باشد افزایش می‌یابد. طول X باید در محدوده 0-9 باشد. با علامت اختیاری #، mpv از کمترین شماره در دسترس استفاده خواهد کرد. برای مثال، اگر سه عکس بگیرید--0001، 0002، 0003--و دو تای اول را حذف کنید، دو عکس بعدی 0004 و 0005 نخواهند بود، بلکه مجدداً 0001 و 0002 خواهند بود.
%f
نام فایل ویدئوی در حال پخش فعلی.
%F
مشابه %f، اما پسوند فایل (شامل نقطه) را حذف می‌کند.
%x
مسیر دایرکتوری ویدئوی در حال پخش فعلی. اگر ویدئو روی فایل‌سیستم نباشد (مانند http://)، این مقدار به یک رشته خالی گسترش می‌یابد.
%X{fallback}
مشابه %x، اما اگر فایل ویدئو روی فایل‌سیستم نباشد، رشته جایگزین (fallback) درون {...} را برمی‌گرداند.
%p
زمان پخش فعلی، در همان فرمتی که در OSD استفاده می‌شود. نتیجه رشته‌ای به فرم "HH:MM:SS" است. برای مثال، اگر موقعیت زمانی ویدئو ۵ دقیقه و ۳۴ ثانیه باشد، %p با "00:05:34" جایگزین می‌شود.
%P
مشابه %p، اما زمان پخش تا میلی‌ثانیه بسط داده می‌شود. فرمت آن به‌صورت "HH:MM:SS.mmm" است که "mmm" بخش میلی‌ثانیه زمان پخش می‌باشد.
نکته:
7.0
3.5
این روشی ساده برای دستیابی به برچسب‌های زمانی یکتا به ازای هر فریم است. (شماره‌های فریم ملموس‌تر خواهند بود، اما پیاده‌سازی آن‌ها به آسانی ممکن نیست چرا که فرمت‌های ظرف/حامل معمولاً از برچسب‌های زمانی برای شناسایی فریم‌ها استفاده می‌کنند.)
168u
168u
%wX
تعیین زمان پخش فعلی با استفاده از رشته فرمت X.
%p معادل %wH:%wM:%wS و %P معادل %wH:%wM:%wS.%wT است.
7.0
مشخص‌کننده‌های فرمت معتبر:
7.0
%wH
ساعت (پرشده با 0 تا دو رقم)
%wh
ساعت (بدون پر شدن با صفر)
%wM
دقیقه (00-59)
%wm
مجموع دقایق (برخلاف %wM، ساعت‌ها را نیز شامل می‌شود)
%wS
ثانیه (00-59)
%ws
مجموع ثانیه‌ها (شامل ساعت‌ها و دقایق)
%wf
مانند %ws، اما به‌صورت عدد اعشاری (float)
%wT
میلی‌ثانیه (000-999)
168u
168u
%tX
تعیین تاریخ/زمان محلی فعلی با استفاده از فرمت X. این مشخص‌کننده فرمت در داخل از تابع strftime() در یونیکس استفاده می‌کند و نتیجه ارسال "%X" به strftime را درج می‌نماید. برای مثال، %tm شماره ماه جاری را به‌صورت عدد درج می‌کند. برای ساخت یک رشته کامل از تاریخ/زمان باید از چندین مشخص‌کننده %tX استفاده کنید.
%{prop[:fallback text]}
درج مقدار ویژگی ورودی 'prop'. برای نمونه %{filename} مشابه %f است. اگر ویژگی وجود نداشته باشد یا در دسترس نباشد، یک متن خطا درج می‌شود، مگر اینکه یک مقدار جایگزین (fallback) تعیین شده باشد.
%%
با خود نویسه % جایگزین می‌شود.
168u
--screenshot-dir=<path>
ذخیره عکس‌های صفحه در این دایرکتوری. این مسیر با نام فایل تولیدشده توسط --screenshot-template ترکیب می‌شود. اگر نام فایل الگو از قبل مطلق باشد، دایرکتوری نادیده گرفته می‌شود.
--screenshot-directory نام مستعاری برای --screenshot-dir است.
اگر دایرکتوری وجود نداشته باشد، هنگام گرفتن اولین عکس ایجاد خواهد شد. اگر مسیر مربوطه یک دایرکتوری نباشد، هنگام تلاش برای ذخیره عکس از صفحه خطا صادر می‌شود.
این گزینه به‌طور پیش‌فرض تنظیم نشده است و بنابراین عکس‌ها در دایرکتوری‌ای ذخیره می‌شوند که mpv از آنجا اجرا شده است. در حالت pseudo-gui (بخش PSEUDO GUI MODE را ببینید)، این مقدار روی دسکتاپ (desktop) تنظیم می‌شود.
--screenshot-jpeg-quality=<0-100>
تعیین سطح کیفیت JPEG. مقادیر بالاتر به معنای کیفیت بهتر است. مقدار پیش‌فرض 90 است.
--screenshot-jpeg-source-chroma=<yes|no>
ذخیره فایل‌های JPEG با همان زیرنمونه‌برداری رنگی (chroma subsampling) ویدئو (پیش‌فرض: yes). در صورت غیرفعال بودن، از پیش‌فرض libjpeg استفاده می‌شود.
--screenshot-png-compression=<0-9>
تعیین سطح فشرده‌سازی PNG. مقادیر بالاتر به معنای فشرده‌سازی بیشتر است. این گزینه روی حجم فایل تصویر ذخیره‌شده و مدت زمان لازم برای نوشتن آن تأثیر می‌گذارد. فشرده‌سازی بیش از حد ممکن است زمان پردازنده (CPU) زیادی را مصرف کرده و باعث وقفه در پخش ویدئو شود. مقدار پیش‌فرض 7 است..TP
--screenshot-png-filter=<0-5>
فیلتری را که پیش از فشرده‌سازی PNG اعمال می‌شود تنظیم می‌کند. 0 به معنای هیچ‌کدام (none)، 1 برابر "sub"، 2 برابر "up"، 3 برابر "average"، 4 برابر "Paeth"، و 5 برابر "mixed" است. این گزینه بر میزان فشرده‌سازی قابل دستیابی تأثیر می‌گذارد. برای بیشتر تصاویر، "mixed" بهترین نسبت فشرده‌سازی را به دست می‌آورد، از این رو مقدار پیش‌فرض است.
--screenshot-webp-lossless=<yes|no>
فایل‌های WebP بدون افت کیفیت (lossless) می‌نویسد. در صورت تنظیم این گزینه، --screenshot-webp-quality نادیده گرفته می‌شود. مقدار پیش‌فرض no است.
--screenshot-webp-quality=<0-100>
سطح کیفیت WebP را تنظیم می‌کند. مقادیر بالاتر به معنای کیفیت بهتر است. مقدار پیش‌فرض 75 است.
--screenshot-webp-compression=<0-6>
سطح فشرده‌سازی WebP را تنظیم می‌کند. مقادیر بالاتر به معنای فشرده‌سازی بهتر است، اما زمان پردازنده (CPU) بیشتری می‌برد. توجه داشته باشید که در صورت استفاده با فایل‌های WebP دارای افت کیفیت (lossy)، این گزینه بر کیفیت اسکرین‌شات نیز تأثیر می‌گذارد. مقدار پیش‌فرض 4 است.
--screenshot-jxl-distance=<0-15>
فاصله Butteraugli را در JPEG XL تنظیم می‌کند. مقادیر کمتر به معنای کیفیت بهتر است. حالت بدون افت کیفیت برابر 0.0 است، و 1.0 تقریباً معادل کیفیت 90 در JPEG برای محتوای عکاسی است. برای اسکرین‌شات‌های «از نظر بصری بدون افت» ("visually lossless") از 0.1 استفاده کنید. مقدار پیش‌فرض 1.0 است.
--screenshot-jxl-effort=<1-9>
میزان تلاش (effort) برای فشرده‌سازی JPEG XL را تنظیم می‌کند. تلاش بالاتر (معمولاً) به معنای فشرده‌سازی بهتر است، اما زمان پردازنده بیشتری می‌برد. مقدار پیش‌فرض 4 است.
--screenshot-avif-encoder=<encoder>
رمزگذار AV1 مورد استفاده توسط libavcodec را برای رمزگذاری اسکرین‌شات‌های avif مشخص می‌کند.
پیش‌فرض: libaom-av1
--screenshot-avif-pixfmt=<format>
قالب پیکسل را برای رمزگذار libavcodec مشخص می‌کند. پیش‌فرض روی خالی است، که به mpv اجازه می‌دهد قالبی نزدیک به قالب منبع را انتخاب کند.
--screenshot-avif-opts=key1=value1,key2=value2,...
گزینه‌های libavcodec را برای رمزگذار انتخاب‌شده مشخص می‌کند. برای اطلاعات بیشتر، به مستندات FFmpeg مراجعه کنید.
پیش‌فرض: usage=allintra,crf=0,cpu-used=8
نکته: کارکرد صحیح پیش‌فرض تنها با رمزگذار libaom-av1 تضمین می‌شود. گزینه‌های بالا ممکن است برای سایر رمزگذارها معتبر یا بهینه نباشند.
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به بخش List Options مراجعه کنید.
7.0
3.5
"مثال"
0.0
"--screenshot-avif-opts=crf=23,aq-mode=complexity"
مقدار crf را روی 23 و کوانتایزیشن (aq-mode) را بر پایه پیچیدگی (complexity) تنظیم می‌کند.
168u
168u
168u
--screenshot-sw=<yes|no>
مشخص می‌کند که آیا برای اسکرین‌شات‌ها از رندر نرم‌افزاری استفاده شود یا خیر (پیش‌فرض: no).
اگر روی no تنظیم شود، اسکرین‌شات توسط VO فعلی رندر خواهد شد (در حال حاضر فقط vo_gpu یا vo_gpu_next). مزیت این روش در این است که تصویر (احتمالاً) همیشه دقیقاً همان‌گونه که در پنجره ویدیو است نشان داده می‌شود، زیرا همان کد برای رندر به کار می‌رود. اما از آنجا که رندرساز نیاز به راه‌اندازی دوباره دارد، این کار می‌تواند کند باشد و در پخش وقفه بیندازد.
اگر روی yes تنظیم شود، مقیاس‌گذار نرم‌افزاری برای تبدیل ویدیو به RGB (یا هر قالبی که اسکرین‌شات مقصد نیاز دارد) استفاده می‌شود. در این حالت، تبدیل در یک ریسه (thread) جداگانه اجرا می‌شود و احتمالاً در پخش وقفه ایجاد نخواهد کرد. رندرساز نرم‌افزاری ممکن است فاقد برخی قابلیت‌ها مانند رندر HDR باشد. اگر از حالت window استفاده شود، مقیاس تصویر نیز به‌صورت نرم‌افزاری تغییر داده می‌شود که ممکن است نتیجه قابل مشاهده واقعی را به‌دقت منعکس نکند.
168u
مقیاس‌گذار نرم‌افزاری (Software Scaler)
0.0
--sws-scaler=<name>
الگوریتم مقیاس‌گذار نرم‌افزاری مورد استفاده با --vf=scale را مشخص می‌کند. این گزینه بر درایورهای خروجی ویدیو که فاقد شتاب‌دهنده سخت‌افزاری هستند نیز تأثیر می‌گذارد، مانند x11. همچنین --vf=scale را ببینید.
برای دریافت فهرستی از مقیاس‌گذارهای موجود، فرمان --sws-scaler=help را اجرا کنید.
پیش‌فرض: bicubic.
--sws-lgb=<0-100>
فیلتر تاری گاوسی مقیاس‌گذار نرم‌افزاری (لوما - luma). به --sws-scaler مراجعه کنید.
--sws-cgb=<0-100>
فیلتر تاری گاوسی مقیاس‌گذار نرم‌افزاری (کروما - chroma). به --sws-scaler مراجعه کنید.
--sws-ls=<-100-100>
فیلتر شارپ کردن مقیاس‌گذار نرم‌افزاری (لوما - luma). به --sws-scaler مراجعه کنید.
--sws-cs=<-100-100>
فیلتر شارپ کردن مقیاس‌گذار نرم‌افزاری (کروما - chroma). به --sws-scaler مراجعه کنید.
--sws-chs=<h>
تغییر مکان افقی کرومای مقیاس‌گذار نرم‌افزاری. به --sws-scaler مراجعه کنید.
--sws-cvs=<v>
تغییر مکان عمودی کرومای مقیاس‌گذار نرم‌افزاری. به --sws-scaler مراجعه کنید.
--sws-bitexact=<yes|no>
عملکرد ناشناخته (پیش‌فرض: no). به کد منبع libswscale مراجعه کنید. هدف اصلی این گزینه (تا آنجا که به API در libswscale مربوط می‌شود) تولید خروجی دقیقاً یکسان برای ورودی یکسان در تمام پلتفرم‌ها است (خروجی در همه‌جا «بیت‌های» یکسانی دارد، از این رو "bitexact" نامیده می‌شود). معمولاً بهینه‌سازی‌ها را غیرفعال می‌کند.
--sws-fast=<yes|no>
اجازه دادن به بهینه‌سازی‌هایی که به کارایی کمک می‌کنند اما کیفیت را کاهش می‌دهند (پیش‌فرض: no).
خروجی‌های ویدیو (VO) مانند drm و x11 از استفاده از --sws-fast بسیار بهره خواهند برد. ممکن است لازم باشد گزینه‌های دیگر مانند --sws-scaler را نیز تنظیم کنید. نمایه توکار sws-fast این گزینه و برخی گزینه‌های دیگر را برای دستیابی به کارایی بالاتر در ازای کاهش کیفیت تنظیم می‌کند. همچنین --sws-allow-zimg را ببینید.
--sws-allow-zimg=<yes|no>
اجازه استفاده از zimg (در صورتی که مؤلفه استفاده‌کننده از لفاف داخلی swscale صراحتاً این اجازه را بدهد) (پیش‌فرض: yes). در این حالت، اگر لفاف داخلی zimg از قالب‌های ورودی و خروجی پشتیبانی کند، zimg ممکن است استفاده شود. در صورتی که یکی از این شرایط برقرار نباشد، به‌صورت بی‌صدا یا همراه با هشدار به libswscale بازگشت (fallback) خواهد کرد.
اگر از zimg استفاده شود، سایر گزینه‌های --sws- نادیده گرفته شده و در عوض گزینه‌های --zimg- اعمال می‌شوند.
اگر مؤلفه داخلی استفاده‌کننده از لفاف swscale ثبت گزارش‌ها (logging) را به‌درستی متصل کرده باشد، یک پیام گزارشی با اولویت پرگویی (verbose) مشخص می‌کند که آیا zimg در حال استفاده است یا خیر.
بیشتر مواردی که به تبدیل نرم‌افزاری نیاز دارند می‌توانند از این گزینه بهره ببرند.
نکته:
7.0
3.5
توجه داشته باشید که zimg ممکن است از libswscale کندتر باشد. معمولاً در پلتفرم‌های x86 سریع‌تر است، اما در ARM (به دلیل فقدان بهینه‌سازی‌های ویژه ARM) کندتر عمل می‌کند. لفاف zimg در mpv برای برخی قالب‌ها از بسته‌بندی مجدد (repacking) غیربهینه استفاده می‌کند که نمی‌توان zimg را بابت آن مقصر دانست.
168u
168u
--zimg-scaler=<point|bilinear|bicubic|spline16|spline36|lanczos>
مقیاس‌گذار لومای zimg برای استفاده (پیش‌فرض: lanczos).
--zimg-scaler-param-a=<default|float>, --zimg-scaler-param-b=<default|float>
پارامترهای مقیاس‌گذار را تنظیم می‌کند. به‌طور پیش‌فرض، این گزینه‌ها روی رشته ویژه default تنظیم شده‌اند که به یک مقدار پیش‌فرض ویژه آن مقیاس‌گذار نگاشت می‌شود. در صورتی که مقیاس‌گذار قابل تنظیم نباشد، نادیده گرفته می‌شود.
7.0
lanczos
گزینه --zimg-scaler-param-a تعداد تپ‌ها (taps) است.
bicubic
مقادیر a و b همان پارامترهای b و c در bicubic هستند.
168u
--zimg-scaler-chroma=...
مشابه --zimg-scaler، اما برای درونیابی کروما (پیش‌فرض: bilinear).
--zimg-scaler-chroma-param-a, --zimg-scaler-chroma-param-b
مشابه --zimg-scaler-param-a / --zimg-scaler-param-b، اما برای کروما.
--zimg-dither=<no|ordered|random|error-diffusion>
دیترینگ (Dithering) (پیش‌فرض: random).
--zimg-threads=<auto|integer>
حداکثر تعداد ریسه‌ها (threads) برای استفاده در مقیاس‌گذاری را تنظیم می‌کند (پیش‌فرض: auto).
مقدار auto از تعداد هسته‌های منطقی دستگاه فعلی استفاده می‌کند. توجه داشته باشید که مقیاس‌گذار ممکن است بسته به شرایط از ریسه‌های کمتری (یا حتی فقط ۱ ریسه) استفاده کند. تعیین مقدار 1 اجرای چندریسمانی را غیرفعال کرده و همیشه مقیاس‌گذاری تصویر را در یک عملیات واحد انجام می‌دهد. تعداد ریسه‌های بالاتر منابع را هدر می‌دهد، اما معمولاً کار را سریع‌تر می‌کند.
توجه داشته باشید که برخی از نسخه‌های git نرم‌افزار zimg دارای ایرادهایی بودند که در صورت استفاده از ریسه‌ها، خروجی را مخدوش می‌کردند..TP
--zimg-fast=<yes|no>
مجاز کردن بهینه‌سازی‌هایی که به کارایی کمک می‌کنند، اما کیفیت را کاهش می‌دهند (پیش‌فرض: yes). در حال حاضر، این گزینه ممکن است عملیات تبدیل گاما را ساده‌تر کند.
168u
بازنمونه‌بردار صوتی (Audio Resampler)
این بخش گزینه‌های پیش‌فرض هرگونه بازنمونه‌برداری انجام‌شده توسط mpv را کنترل می‌کند (اما نه موارد درون libavfilter، بازنمونه‌بردار صوتی API سیستم یا هر جای دیگر).
0.0
--audio-resample-filter-size=<length>
طول فیلتر با توجه به نرخ نمونه‌برداری پایین‌تر. (پیش‌فرض: 16)
--audio-resample-phase-shift=<count>
لگاریتم بر مبنای ۲ (Log2) از تعداد مدخل‌های چندفازی (polyphase). (..., 10->1024, 11->2048, 12->4096, ...) (پیش‌فرض: 10->1024)
--audio-resample-cutoff=<cutoff>
فرکانس قطع (0.0-1.0)، مقدار پیش‌فرض بسته به طول فیلتر تعیین می‌شود.
--audio-resample-linear=<yes|no>
در صورت تنظیم، فیلترها بین مدخل‌های چندفازی به‌صورت خطی درون‌یابی می‌شوند. (پیش‌فرض: no)
--audio-normalize-downmix=<yes|no>
فعال/غیرفعال کردن نرمال‌سازی در صورت تبدیل صدای فراگیر (surround) به استریو (پیش‌فرض: no). در صورت غیرفعال بودن، دان‌میکس می‌تواند باعث اعوجاج و بریدگی سیگنال (clipping) شود. در صورت فعال بودن، خروجی ممکن است بیش از حد آرام باشد؛ این موضوع به منبع صوتی بستگی دارد.
اگر فرایند دان‌میکس بنا به هر دلیلی خارج از mpv رخ دهد، یا در رمزگشا (رمزگشای دان‌میکس)، یا در خروجی صدا (میکسر سیستم) اعمال شود، این گزینه هیچ تأثیری نخواهد داشت.
--audio-resample-max-output-size=<length>
محدود کردن حداکثر اندازه فریم‌های صوتی فیلترشده در یک نوبت، بر حسب میلی‌ثانیه (پیش‌فرض: 40). اندازه خروجی به این منظور محدود شده است تا تغییرات سرعت بازنمونه‌برداری سریع‌تر اعمال شوند. این امر به‌ویژه اگر رمزگشاها یا فیلترها فریم‌هایی با اندازه بسیار بزرگ تولید کنند (مانند برخی کدک‌های بدون افت کیفیت یا برخی فیلترهای DRC) ضروری است. این گزینه به هیچ وجه الگوریتم بازنمونه‌برداری را تحت تأثیر قرار نمی‌دهد.
تنها برای آزمایش/اشکال‌زدایی. ممکن است در هر زمان حذف یا تغییر داده شود.
--audio-swresample-o=<string>
تنظیم AVOptions روی SwrContext یا AVAudioResampleContext. مستندات این موارد باید توسط FFmpeg ارائه شده باشد.
این گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
168u
ترمینال (Terminal)
0.0
--quiet
کاهش میزان پرگویی خروجی کنسول؛ به‌ویژه از نمایش خط وضعیت (مانند AV: 3.4 (00:00:03.37) / 5320.6 ...) جلوگیری می‌کند. این گزینه به‌ویژه روی ترمینال‌های کند یا معیوبی که بازگشت به ابتدای خط (یعنی \r) را به‌درستی مدیریت نمی‌کنند، مفید است.
همچنین ببینید: --really-quiet و --msg-level.
--really-quiet
نمایش خروجی و پیام‌های وضعیتی حتی کمتر از --quiet.
--terminal=<yes|no>
مقدار --terminal=no هرگونه استفاده از ترمینال و stdin/stdout/stderr را غیرفعال می‌کند. این کار خروجی همه پیام‌ها را کاملاً بی‌صدا می‌سازد.
برخلاف --really-quiet، این گزینه ورودی و مقداردهی اولیه ترمینال را نیز غیرفعال می‌کند.
--msg-color=<yes|no>
فعال کردن خروجی رنگی کنسول روی ترمینال‌ها (پیش‌فرض: yes).
--msg-level=<module1=level1,module2=level2,...>
کنترل مستقیم میزان پرگویی (verbosity) برای هر ماژول. ماژول all میزان پرگویی تمام ماژول‌ها را تغییر می‌دهد. تغییرات پرگویی حاصل از این گزینه به ترتیب از چپ به راست اعمال می‌شوند و هر مورد می‌تواند مقدار قبلی را بازنویسی کند.
برای دیدن تمام پیام‌های خروجی mpv، آن را با --msg-level=all=trace اجرا کنید. می‌توانید از نام ماژول‌های چاپ‌شده در خروجی (که در ابتدای هر خط داخل [...] قرار دارند) برای محدود کردن خروجی به ماژول‌های مدنظر استفاده کنید.
این گزینه همچنین بر --log-file و در برخی موارد بر ثبت گزارش‌های API کتابخانه libmpv تأثیر می‌گذارد.
نکته:
7.0
3.5
برخی پیام‌ها پیش از تجزیه خط فرمان چاپ می‌شوند و بنابراین تحت تأثیر --msg-level قرار نمی‌گیرند. برای کنترل این پیام‌ها، باید از متغیر محیطی MPV_VERBOSE استفاده کنید؛ برای جزئیات به ENVIRONMENT VARIABLES مراجعه فرمایید.
168u
168u
سطوح موجود:
7.0
3.5
0.0
no
سکوت کامل (بدون پیام)
fatal
تنها پیام‌های مهلک (fatal)
error
پیام‌های خطا
warn
پیام‌های هشدار
info
پیام‌های اطلاعاتی
status
پیام‌های وضعیت (پیش‌فرض)
v
پیام‌های پرگو و مفصل
debug
پیام‌های اشکال‌زدایی
trace
پیام‌های اشکال‌زدایی بسیار پرحجم و پرجزئیات
168u
168u
168u
7.0
3.5
"مثال"
0.0
3.5
mpv --msg-level=ao/sndio=no
168u
168u
خروجی ao_sndio را که از پیشوند گزارش [ao/sndio] استفاده می‌کند، کاملاً بی‌صدا می‌کند.
0.0
3.5
mpv --msg-level=all=warn,ao/alsa=error
168u
168u
تنها هشدارها یا موارد وخیم‌تر را نمایش می‌دهد و خروجی ao_alsa را تنها به نمایش خطاها محدود می‌کند.
168u
168u
--term-osd=<auto|no|force>
کنترل اینکه آیا در صورت در دسترس نبودن خروجی ویدیو، پیام‌های OSD در کنسول نمایش داده شوند یا خیر (پیش‌فرض: auto).
7.0
auto
در صورت فعال نبودن خروجی ویدیو، از OSD ترمینال استفاده شود
no
غیرفعال کردن OSD ترمینال
force
استفاده از OSD ترمینال حتی در صورت فعال بودن خروجی ویدیو
168u
حالت auto همچنین در صورتی که --video-osd=no تنظیم شده باشد، OSD ترمینال را فعال می‌کند.
--term-osd-bar=<yes|no>
فعال کردن نمایش یک نوار پیشرفت زیر خط وضعیت در ترمینال. (به‌طور پیش‌فرض غیرفعال است.)
--term-osd-bar-chars=<string>
سفارشی‌سازی ویژگی --term-osd-bar. این رشته باید شامل ۵ نویسه باشد (شروع، فاصله سمت چپ، نشانگر موقعیت، فاصله سمت راست، پایان). می‌توانید از نویسه‌های یونیکد استفاده کنید، اما توجه داشته باشید که با نویسه‌های با عرض دوگانه (double-width) به‌درستی رفتار نخواهد شد..sp
پیش‌فرض: [-+-].
--term-playing-msg=<string>
چاپ یک رشته پس از شروع پخش. رشته برای ویژگی‌ها بسط داده می‌شود؛ به عنوان مثال --term-playing-msg='file: ${filename}' رشتهٔ file: و به دنبال آن یک فاصله و نام فایل در حال پخش را چاپ می‌کند.
بخش Property Expansion را ببینید.
--term-status-msg=<string>
چاپ یک رشتهٔ سفارشی در حین پخش به جای خط وضعیت استاندارد. ویژگی‌ها را بسط می‌دهد. بخش Property Expansion را ببینید.
--term-title=<string>
تنظیم عنوان ترمینال. در حال حاضر، این گزینه صرفاً توالی گریز (escape sequence) تنظیم عنوان پنجره را با رشتهٔ ارائه‌شده (با بسط ویژگی‌ها) الحاق می‌کند. اگر رشتهٔ بسط‌یافته حاوی بایت‌هایی باشد که توالی گریز را خاتمه دهند، یا اگر ترمینال توالی را درک نکند، این سازوکار دچار اختلال خواهد شد. مورد دوم احتمالاً win32 تأسف‌بار را در بر می‌گیرد.
ویژگی‌ها را بسط می‌دهد. بخش Property Expansion را ببینید.
--msg-module
افزودن نام ماژول به ابتدای هر پیام کنسول.
--msg-time
افزودن اطلاعات زمانی به ابتدای هر پیام کنسول. زمان بر حسب ثانیه از زمان شروع پردازش پخش‌کننده است (از نظر فنی، در عمل کمی دیرتر)، با استفاده از یک منبع زمان یکنواخت (monotonic) که به سیستم‌عامل بستگی دارد. این منبع در گونه‌های معقول UNIX برابر CLOCK_MONOTONIC است.
168u
"حافظهٔ پنهان (Cache)"
0.0
--cache=<yes|no|auto>
تصمیم‌گیری دربارهٔ استفاده از تنظیمات حافظهٔ پنهان شبکه (پیش‌فرض: auto).
در صورت فعال بودن، تا سقف --cache-secs برای اندازهٔ حافظهٔ پنهان استفاده می‌شود (اما همچنان به --demuxer-max-bytes محدود است)، و داده‌های ذخیره‌شده در حافظهٔ پنهان (در صورت امکان) قابل جست‌وجو (seekable) می‌شوند. در صورت غیرفعال بودن، --cache-pause و موارد مرتبط به‌طور ضمنی غیرفعال می‌شوند.
انتخاب auto این مورد را بسته به این که آیا تصور شود جریان شامل دسترسی‌های شبکه یا سایر رسانه‌های کند است، فعال می‌کند (این یک روش اکتشافی ناقص است).
پیش از mpv 0.30.0، این گزینه مقداری عددی را می‌پذیرفت که اندازهٔ حافظهٔ پنهان را بر حسب کیلوبایت مشخص می‌کرد. در عوض مثلاً از --cache --demuxer-max-bytes=123k استفاده کنید.
--cache-secs=<seconds>
میزان پیش‌واکشی صوت/ویدیو بر حسب ثانیه در صورت فعال بودن حافظهٔ پنهان. این گزینه فقط و فقط در صورتی بر گزینهٔ --demuxer-readahead-secs بازنویسی می‌شود (override) که حافظهٔ پنهان فعال باشد و مقدار آن بزرگ‌تر باشد. مقدار پیش‌فرض روی عددی بسیار بالا تنظیم شده است، بنابراین خواندن روبه‌جلوی عملاً حاصل‌شده معمولاً توسط مقدار گزینهٔ --demuxer-max-bytes محدود خواهد شد. تنظیم این گزینه معمولاً فقط برای محدود کردن خواندن روبه‌جلو مفید است.
--cache-on-disk=<yes|no>
نوشتن داده‌های بسته در یک فایل موقت، به جای نگه‌داری آن‌ها در حافظه. این کار فقط به همراه --cache معنادار است. اگر حافظهٔ پنهان عادی غیرفعال باشد، از این گزینه صرف‌نظر می‌شود.
فایل حافظهٔ پنهان صرفاً الحاقی (append-only) است. حتی اگر به نظر برسد که پخش‌کننده داده‌ها را هرس می‌کند، فضای دیسک آزادشده توسط آن دوباره استفاده نمی‌شود. فایل حافظهٔ پنهان هنگام بسته شدن پخش حذف می‌شود.
توجه داشته باشید که فراداده‌های بسته‌ها همچنان در حافظه نگه‌داری می‌شوند. گزینهٔ --demuxer-max-bytes و گزینه‌های مرتبط تنها بر فراداده اعمال می‌شوند. اندازهٔ این فراداده متغیر است، اما ۵۰ مگابایت به ازای هر ساعت رسانه رقمی معمول است. آمار حافظهٔ پنهان، اندازهٔ این فراداده را به جای اندازهٔ فایل حافظهٔ پنهان گزارش خواهد کرد. اگر فراداده به محدودیت اندازه برسد، فراداده هرس می‌شود (اما نه فایل حافظهٔ پنهان).
هنگام بسته شدن رسانه، فایل حافظهٔ پنهان حذف می‌شود. فایل حافظهٔ پنهان به‌طور کلی پس از بسته شدن رسانه بی‌ارزش است و بازیابی هرگونه دادهٔ رسانه‌ای از آن دشوار خواهد بود (طبق طراحی چنین قابلیتی پشتیبانی نمی‌شود).
اگر گزینه در زمان اجرا فعال شود، فایل حافظهٔ پنهان ایجاد می‌شود، اما داده‌های قدیمی در حافظهٔ پنهان اصلی (رم) باقی خواهند ماند. اگر گزینه در زمان اجرا غیرفعال شود، داده‌های قدیمی در حافظهٔ پنهان دیسک باقی می‌مانند و فایل حافظهٔ پنهان تا زمان بسته شدن رسانه بسته نمی‌شود. اگر گزینه غیرفعال و دوباره فعال شود، به استفاده از فایل حافظهٔ پنهانی که ابتدا باز شده بود ادامه می‌دهد.
--demuxer-cache-dir=<path>
دایرکتوری که فایل‌های موقت در آن ایجاد می‌شوند. در صورت عدم تنظیم، حافظهٔ پنهان در دایرکتوری حافظهٔ پنهان سیستم (معمولاً ~/.cache/mpv) ذخیره می‌شود.
در حال حاضر، این مورد تنها برای --cache-on-disk استفاده می‌شود.
--cache-pause=<yes|no>
آیا پخش‌کننده باید در هنگام خالی شدن داده‌های حافظهٔ پنهان و توقف رمزگشایی/پخش، به‌طور خودکار مکث کند یا خیر (پیش‌فرض: yes). در صورت فعال بودن، پخش مکث کرده و به محض دردسترس قرار گرفتن داده‌های بیشتر از مکث خارج می‌شود، که به آن «بافرینگ» ("buffering") می‌گویند.
--cache-pause-wait=<seconds>
تعداد ثانیه‌هایی که حافظهٔ پنهان بسته‌ها در صورت ورود به حالت «بافرینگ» ("buffering") باید قبل از شروع مجدد پخش بافر کرده باشد (پیش‌فرض: 1). از این گزینه می‌توان برای کنترل مدت زمان بافر مجدد توسط پخش‌کننده در صورت فعال بودن --cache-pause و بروز سرریز منفی (underrun) در دیمکسر استفاده کرد. اگر زمان تعیین‌شده بیشتر از حداکثر تنظیم‌شده با --cache-secs یا --demuxer-readahead-secs باشد، یا پیش‌واکشی به دلیل دیگری زودتر از آن به پایان برسد (مانند پایان فایل یا رسیدن به حداکثر اندازهٔ پیکربندی‌شده برای حافظهٔ پنهان)، پخش زودتر از سر گرفته می‌شود.
--cache-pause-initial=<yes|no>
ورود به حالت «بافرینگ» ("buffering") قبل از شروع پخش (پیش‌فرض: no). از این گزینه می‌توان برای اطمینان از شروع روان پخش، در ازای مقداری انتظار جهت پیش‌واکشی داده‌های شبکه (مطابق کنترل --cache-pause-wait) استفاده کرد. برای مثال، یک رفتار رایج این است که پخش آغاز می‌شود، اما حافظه‌های پنهان شبکه هنگام تلاش برای رمزگشایی داده‌های بیشتر با پیشرفت پخش، بلافاصله دچار سرریز منفی می‌شوند.
مورد دیگری که ممکن است رخ دهد این است که پیش‌واکشی شبکه آن‌چنان پردازنده را درگیر کند (به دلیل دیمکس کردن در پس‌زمینه) که پخش در ابتدا با افت فریم مواجه شود. در این موارد، فعال کردن این گزینه و تنظیم --cache-secs و --cache-pause-wait تقریباً روی یک مقدار مشابه کمک‌کننده است.
این گزینه همچنین هنگام راه‌اندازی مجدد پخش پس از جست‌وجو (seeking) فعال می‌شود.
--demuxer-cache-unlink-files=<immediate|whendone|no>
تعیین اینکه آیا یا چه زمانی پیوند فایل‌های حافظهٔ پنهان حذف (unlink) شود (پیش‌فرض: immediate). این مورد روی فایل‌های حافظهٔ پنهانی تأثیر می‌گذارد که ذاتاً موقتی هستند و باقی ماندن آن‌ها روی دیسک پس از خاتمهٔ کار پخش‌کننده معنایی ندارد. این یک گزینهٔ اشکال‌زدایی است.
7.0
immediate
پیوند فایل‌های حافظهٔ پنهان بلافاصله پس از ایجاد حذف شود. فایل‌های حافظهٔ پنهان دیگر قابل مشاهده نخواهند بود، حتی اگر در حال استفاده باشند. این امر تضمین می‌کند که هنگام خاتمهٔ پخش‌کننده، حتی در صورت خرابی و کرش کردن، فایل‌ها حتماً از روی دیسک پاک شوند.
whendone
فایل‌های حافظهٔ پنهان پس از بسته شدن حذف شوند.
no
فایل‌های حافظهٔ پنهان حذف نشوند. آن‌ها بدون داشتن کاربردی، فضای دیسک را مصرف خواهند کرد.
168u
در حال حاضر، این مورد تنها برای --cache-on-disk استفاده می‌شود.
--stream-buffer-size=<bytesize>
اندازهٔ بافر بایت جریان سطح‌پایین (پیش‌فرض: 128KB). این به عنوان بافر بین دیمکسر و ورودی/خروجی سطح‌پایین (مانند سوکت‌ها) استفاده می‌شود. به‌طور کلی، این بافر می‌تواند بسیار کوچک باشد و هدف اصلی آن مشابه بافر داخلی FILE در کتابخانهٔ استاندارد C است.
نیمی از بافر همیشه برای تضمین پرش به عقب استفاده می‌شود، که برای ورودی‌های غیرقابل جست‌وجو (unseekable) حائز اهمیت است.
موارد شناخته‌شده‌ای وجود دارد که تنظیم یک بافر بزرگ می‌تواند به عملکرد کمک کند:
7.0
3.5
0.0
1. 3
فایل‌های mp4؛ کتابخانهٔ libavformat ممکن است بسته به نحوهٔ میکس فایل، جست‌وجوهای کوچک متعددی را در هر دو جهت آغاز کند.
2. 3
برخی سیستم‌های فایل شبکه‌ای، که حافظهٔ پنهان ندارند و خواندن‌های کوچک در آن‌ها می‌تواند ناکارآمد باشد.
168u
168u
168u
در سایر موارد، تنظیم این مقدار روی عددی بزرگ می‌تواند عملکرد را کاهش دهد.
معمولاً دسترسی‌های خواندن در نیمی از اندازهٔ بافر صورت می‌گیرد، اما ممکن است دسترسی‌ها به‌طور متناوب با اندازه‌های کوچک‌تر و بزرگ‌تر انجام شوند (این امر به دلیل چرخش بافر حلقه‌ای داخلی است).
برای پیش‌فرض‌ها و دامنهٔ مقادیر به --list-options مراجعه کنید. گزینه‌های <bytesize> پسوندهایی مانند KiB و MiB را می‌پذیرند.
--vd-queue-enable=<yes|no>, --ad-queue-enable
فعال‌سازی اجرای رمزگشای ویدیو/صوت روی یک ریسهٔ (thread) مجزا (پیش‌فرض: no). در صورت فعال بودن، رمزگشا روی یک ریسهٔ جداگانه اجرا می‌شود و یک صف فریم بین رمزگشا و منطق سطح‌بالاتر پخش قرار می‌گیرد. اندازهٔ صف فریم توسط گزینه‌های دیگر در زیر مشخص می‌شود.
این قابلیت احتمالاً کاملاً بی‌فایده است. کتابخانهٔ libavcodec در حال حاضر از رمزگشایی چندریسمانی بهره می‌برد (که به‌طور پیش‌فرض فعال است)، که این امر این گزینه را تا حد زیادی غیرضروری می‌سازد. این گزینه ممکن است در برخی موارد نادر با ویدیوهای دارای پهنای باند بالا که رمزگشایی آن‌ها کند است مفید باشد (در این موارد libavcodec منطق پخش را مسدود می‌کند، در حالی که استفاده از یک ریسهٔ رمزگشایی باعث توزیع یکنواخت زمان رمزگشایی بدون تحت تأثیر قرار دادن منطق پخش می‌شود). در سایر شرایط، این کار صرفاً سرعت جست‌وجو (seeking) را کندتر کرده و حافظهٔ به مراتب بیشتری مصرف می‌کند..sp
اندازه صف توسط گزینه‌های دیگر --vd-queue-... محدود می‌شود. اندازه
نهایی صف، کمترین مقدار مشخص‌شده توسط گزینه‌ای است که پایین‌ترین حد را دارد.
هر رمزگشا/ترک، صف اختصاصی خود را دارد که می‌تواند از تمام اندازه صف
پیکربندی‌شده استفاده کند.
بیشتر گزینه‌های صف در زمان اجرا قابل تغییر هستند. خود --vd-queue-enable
(و معادل صوتی آن) تنها در صورتی به‌روزرسانی می‌شوند که رمزگشایی کاملاً از ابتدا
راه‌اندازی شود. با این حال، تنظیم --vd-queue-max-samples=1 تقریباً
باید به رفتاری مشابه با --vd-queue-enable=no منجر شود، بنابراین می‌توان
از آن مقدار برای فعال یا غیرفعال کردن کارآمد صف در زمان اجرا استفاده کرد.
این گزینه نباید همراه با رمزگشایی سخت‌افزاری استفاده شود. فعال‌سازی این مورد برای
صدا امکان‌پذیر است، اما حتی منطق کمتری هم دارد.
--vd-queue-max-bytes=<bytesize>, --ad-queue-max-bytes
حداکثر اندازه تقریبی مجاز صف. در صورت فراتر رفتن، رمزگشایی متوقف خواهد شد.
اندازه واقعی ممکن است حدود ۱ فریم از حداکثر اندازه فراتر رود.
برای مقادیر پیش‌فرض و دامنه مقادیر به --list-options مراجعه کنید.
گزینه‌های <bytesize> پسوندهایی مانند KiB و MiB را می‌پذیرند.
--vd-queue-max-samples=<int>, --ad-queue-max-samples
حداکثر تعداد فریم‌ها (ویدیو) یا نمونه‌ها (صدا) در صف. اندازه صدا ممکن است
حدود ۱ فریم فراتر رود.
برای مقادیر پیش‌فرض و دامنه مقادیر به --list-options مراجعه کنید.
--vd-queue-max-secs=<seconds>, --ad-queue-max-secs
حداکثر مدت زمان رسانه بر حسب ثانیه در صف. مقدار ویژه 0 به معنای عدم وجود
محدودیت است. اندازه صف ممکن است حدود ۲ فریم فراتر رود. بازنشانی برچسب‌های
زمانی (timestamp) ممکن است منجر به استفاده تصادفی از اندازه صف شود.
برای مقادیر پیش‌فرض و دامنه مقادیر به --list-options مراجعه کنید.
168u
"شبکه (Network)"
0.0
--user-agent=<string>
استفاده از <string> به عنوان عامل کاربر (user agent) برای جاری‌سازی HTTP.
--cookies=<yes|no>
پشتیبانی از کوکی‌ها هنگام ارسال درخواست‌های HTTP. به طور پیش‌فرض غیرفعال است.
--cookies-file=<filename>
خواندن کوکی‌های HTTP از <filename>. فرض بر این است که فایل در قالب Netscape
باشد.
--http-header-fields=<field1,field2>
تنظیم فیلدهای سفارشی HTTP هنگام دسترسی به جریان HTTP.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
7.0
3.5
"مثال"
0.0
3.5
mpv --http-header-fields='Field1: value1','Field2: value2' \
http://localhost:1234
168u
168u
درخواست HTTP زیر را تولید خواهد کرد:
0.0
3.5
GET / HTTP/1.0
Host: localhost:1234
User-Agent: MPlayer
Icy-MetaData: 1
Field1: value1
Field2: value2
Connection: close
168u
168u
168u
168u
--http-proxy=<proxy>
نشانی (URL) پیشکار HTTP/HTTPS. اگر این گزینه تنظیم شود، متغیر محیطی
http_proxy نادیده گرفته می‌شود. متغیر محیطی no_proxy همچنان
رعایت می‌شود. این گزینه در صورتی که با http:// آغاز نشود، در سکوت
نادیده گرفته می‌شود. پیشکارها برای نشانی‌های https استفاده نمی‌شوند. تنظیم
این گزینه تلاشی برای استفاده از پیشکار در اسکریپت ytdl نمی‌کند.
--tls-ca-file=<filename>
فایل پایگاه داده مرجع صدور گواهی (CA) برای استفاده با TLS. (در نسخه‌های
قدیمی‌تر FFmpeg بدون اعلام خطا ناموفق می‌شود.)
--tls-verify
اعتبارسنجی گواهی‌های همتا هنگام استفاده از TLS (به عنوان مثال با
https://...). (در نسخه‌های قدیمی‌تر FFmpeg بدون اعلام خطا ناموفق می‌شود.)
--tls-cert-file
فایلی شامل یک گواهی برای استفاده در دست‌تکانی (handshake) با همتا.
--tls-key-file
فایلی شامل کلید خصوصی مربوط به گواهی.
--referrer=<string>
تعیین مسیر یا نشانی ارجاع‌دهنده (referrer) برای درخواست‌های HTTP.
--network-timeout=<seconds>
تعیین مهلت زمانی شبکه بر حسب ثانیه (پیش‌فرض: ۶۰ ثانیه). این گزینه حداقل
بر HTTP تأثیر می‌گذارد. مقدار ویژه 0 از مقادیر پیش‌فرض FFmpeg استفاده
می‌کند. اگر از پروتکلی استفاده شود که از مهلت زمانی پشتیبانی نمی‌کند، این
گزینه در سکوت نادیده گرفته می‌شود.
هشدار:
7.0
3.5
این گزینه به دلیل ناسازگاری API در FFmpeg در رابطه با گزینه مهلت زمانی داخلی آن،
پروتکل RTSP را از کار می‌اندازد. گزینه مهلت زمانی RTSP نه‌تنها واحدهای متفاوتی
را می‌پذیرد (ثانیه به جای میکروثانیه، که باعث می‌شود mpv مقادیر بسیار بزرگی به آن
ارسال کند)، بلکه باعث سرریز در محاسبات داخلی FFmpeg نیز می‌شود. بدتر از همه این
است که صرف تنظیم این گزینه، RTSP را در حالت شنود (listening mode) قرار می‌دهد
که هرگونه استفاده به عنوان سرویس‌گیرنده (کلاینت) را مختل می‌سازد. در زمان نگارش این
متن، این مشکل هنوز رفع نشده بود. به همین دلیل، این گزینه در نشانی‌های RTSP
نادیده گرفته می‌شود (یا باید نادیده گرفته شود). همچنان می‌توانید گزینه مهلت زمانی
را مستقیماً با --demuxer-lavf-o تنظیم کنید.
168u
168u
--rtsp-transport=<lavf|udp|udp_multicast|tcp|http>
انتخاب روش انتقال RTSP (پیش‌فرض: tcp). این گزینه روش انتقال شبکه زیرین را
هنگام پخش نشانی‌های اینترنتی rtsp://... مشخص می‌کند. مقدار lavf
تصمیم‌گیری را به libavformat واگذار می‌کند.
--hls-bitrate=<no|min|max|<rate>>
در صورت پخش جریان‌های HLS، این گزینه تعیین می‌کند که چه جریان‌هایی به طور
پیش‌فرض انتخاب شوند. این گزینه پارامترهای زیر را می‌پذیرد:
7.0
no
هیچ کار خاصی انجام نده. معمولاً، این کار فقط اولین جریان‌های صوتی/تصویری را
که بتواند پیدا کند انتخاب می‌کند.
min
انتخاب جریان‌ها با کمترین نرخ بیت (bitrate).
max
مشابه، اما با بالاترین نرخ بیت. (پیش‌فرض.)
168u
علاوه بر این، اگر این گزینه یک عدد باشد، جریانی با بالاترین نرخ که کمتر یا مساوی
با مقدار این گزینه باشد انتخاب می‌شود.
نرخ بیت مورد استفاده توسط کارگزار (سرور) ارسال می‌شود و هیچ تضمینی وجود ندارد
که واقعاً معنادار باشد.
0.0
--dvbin-prog=<string>
برنامه‌ای را که باید دریافت و تنظیم (tune) شود مشخص می‌کند. معمولاً
می‌توانید این مورد را با استفاده از یک URI جریان مانند "dvb://ZDF HD" مشخص کنید،
اما می‌توانید با نوشتن در این ویژگی در زمان اجرا، روی کانال متفاوتی
تنظیم شوید.
همچنین برای عملکردهای کاربردی‌تر تعویض کانال، dvbin-channel-switch-offset
را ببینید.
--dvbin-card=<0-15>
استفاده از شماره کارت 0-15 را مشخص می‌کند (پیش‌فرض: 0).
--dvbin-file=<filename>
به mpv دستور می‌دهد فهرست کانال‌ها را از <filename> بخواند. مسیر پیش‌فرض
در دایرکتوری پیکربندی mpv (معمولاً ~/.config/mpv) با نام فایل
channels.conf.{sat,sat1,ter,ter1,cbl,atsc,isdbt} (بر اساس نوع کارت شما)
یا در نهایت channels.conf است.
برای کارت‌هایی که از چندین سامانه تحویل از یک نوع پشتیبانی می‌کنند (یعنی
DVB-T/T2 یا DVB-S/S2)، حالت T2/S2 در نظر گرفته می‌شود، مگر اینکه پسوند فایل
ter1 یا sat1 باشد.
لطفاً توجه داشته باشید که استفاده از نام فایل خاص متناسب با نوع کارت توصیه می‌شود،
زیرا قالب قدیمی کانال‌ها کاملاً استاندارد نیست و در غیر این صورت ممکن است
تشخیص خودکار سامانه تحویل ناموفق باشد.
برای کارت‌های DVB-S/2، فهرست کانال با قالب VDR 1.7.x توصیه می‌شود چرا که امکان
تنظیم روی کانال‌های DVB-S2، فعال‌سازی زیرنویس‌ها و رمزگشایی PMT (که به‌طور چشمگیری
جداسازی جریان یا demuxing را بهبود می‌بخشد) را فراهم می‌کند.
فهرست‌های کانال با قالب کلاسیک mplayer همچنان پشتیبانی می‌شوند (بدون این بهبودها)،
و برای سایر انواع کارت‌ها، تنها پشتیبانی محدودی از قالب کانال VDR پیاده‌سازی شده
است (از وصله‌ها استقبال می‌شود).
برای کانال‌هایی با تعویض پویای PID یا channels.conf ناقص، گزینه
--dvbin-full-transponder یا PID جادویی 8192 توصیه می‌شود.
--dvbin-timeout=<seconds>
حداکثر تعداد ثانیه‌های انتظار هنگام تلاش برای تنظیم روی یک فرکانس، پیش از
صرف‌نظر کردن (پیش‌فرض: 30).
--dvbin-full-transponder=<yes|no>
هیچ فیلتری روی PIDهای برنامه اعمال نمی‌کند؛ تنها روی فرکانس تنظیم شده و کل
ترانسپوندر را به demuxer تحویل می‌دهد.
در این حالت فرانت‌اند پخش‌کننده جریان‌ها را از کل TS انتخاب می‌کند، بنابراین
برنامه‌ای که در ابتدا نمایش داده می‌شود ممکن است با کانال انتخاب‌شده مطابقت نداشته باشد.
تعویض میان برنامه‌ها با چرخاندن (cycling) ویژگی program امکان‌پذیر است.
این مورد برای ضبط چندین برنامه روی یک ترانسپوندر، یا برای دور زدن مشکلات
موجود در channels.conf مفید است.
همچنین توصیه می‌شود از این گزینه برای کانال‌هایی که PIDها را بی‌درنگ تغییر
می‌دهند (مانند اخبار منطقه‌ای) استفاده شود.
پیش‌فرض: no
--dvbin-channel-switch-offset=<integer>
این مقدار برای تنظیم از طریق پیکربندی در نظر گرفته نشده است، بلکه در تعویض
کانال استفاده می‌شود. یک فایل input.conf می‌تواند این مقدار را به سمت up
و down بچرخاند (cycle) تا تعویض کانال انجام شود. این عدد در واقع آفست
نسبت به کانالی را مشخص می‌کند که در ابتدا در فهرست کانال‌ها روی آن تنظیم شده بود.
یک نمونه input.conf می‌تواند شامل موارد زیر باشد:
H cycle dvbin-channel-switch-offset up، K cycle dvbin-channel-switch-offset down
168u
گزینه‌های رندرکننده GPU (GPU renderer options)
گزینه‌های ویدیویی زیر در حال حاضر همگی مختص --vo=gpu،
--vo=libmpv و --vo=gpu-next هستند که تنها خروجی‌های ویدیویی (VO)
پیاده‌سازی‌کننده آن‌ها می‌باشند.
0.0
--scale=<filter>
تابع فیلتری که هنگام بزرگ‌نمایی و افزایش مقیاس (upscaling) ویدیو استفاده می‌شود.
7.0
bilinear
فیلتر کردن بافت سخت‌افزاری دوخطی (سریع‌ترین، کیفیت بسیار پایین). این فیلتر
هنگام استفاده از نمایه fast پیش‌فرض است.
lanczos
تغییر مقیاس Lanczos. تعادل مناسبی بین کیفیت و عملکرد برقرار می‌کند.
این گزینه پیش‌فرض برای scale است. تعداد تپ‌ها (taps) را می‌توان با
scale-radius کنترل کرد، اما بهتر است بدون تغییر باقی بماند.
(این فیلتر یک نام مستعار برای sinc با پنجره‌بندی sinc است)
ewa_lanczos
تغییر مقیاس Lanczos با میانگین وزنی بیضوی (Elliptic weighted average). همچنین با نام Jinc شناخته می‌شود.
نسبتاً کند است، اما کیفیت بسیار خوبی دارد. شعاع را می‌توان با scale-radius
کنترل کرد. افزایش شعاع فیلتر را شارپ‌تر می‌کند اما اثر رینگینگ (ringing) بیشتری پدید می‌آورد.
(این فیلتر یک نام مستعار برای jinc با پنجره‌بندی jinc است)
ewa_lanczossharp
نسخه‌ای با شارپنس اندکی بالاتر از ewa_lanczos. این گزینه پیش‌فرض هنگام
استفاده از نمایه high-quality است. مقدار تاری با روشی تعیین شده که در
ابتدا توسط Nicolas Robidoux برای Image Magick توسعه یافت؛ ببینید:
https://www.imagemagick.org/discourse-server/viewtopic.php?p=89068#p89068
ewa_lanczos4sharpest
تغییردهنده مقیاس بسیار شارپ، اما اندکی کندتر از ewa_lanczossharp.
مستعد اثر رینگینگ است، بنابراین توصیه می‌شود این فیلتر با یک سایه‌زن (shader)
ضد رینگینگ ترکیب شود. در --vo=gpu-next، تنظیم این فیلتر ضد رینگینگِ
داخلی را فعال می‌کند، بنابراین نیازی به اقدام اضافی نیست.
برای جزئیات بیشتر ببینید:
https://www.imagemagick.org/discourse-server/viewtopic.php?p=128587#p128587
mitchell
فیلتر Mitchell-Netravali. یک فیلتر مکعبی تکه‌ای (piecewise cubic) با تکیه‌گاهی به شعاع 2.0.
سازشی متعادل میان تمامی مصنوعات اعوجاج تغییر مقیاس ارائه می‌دهد. در این فیلتر هر دو
پارامتر B و C روی 1/3 تنظیم شده‌اند. پارامترهای B و C را می‌توان
با --scale-param1 و --scale-param2 کنترل کرد.
hermite
اسپلاین Hermite. مشابه bicubic اما با مقدار B تنظیم‌شده روی 0.0.
این فیلتر از ویژگی ویژه داشتن تکیه‌گاهی به شعاع 1.0 برخوردار است که آن را در مقایسه
بسیار سریع می‌کند، اما مستعد شطرنجی شدن (blocking) است. این گزینه پیش‌فرض برای
--dscale است.
catmull_rom
اسپلاین Catmull-Rom. مشابه mitchell، اما با مقادیر B و C تنظیم‌شده
به ترتیب روی 0.0 و 0.5. این فیلتر شارپ‌تر از mitchell است،
اما مستعد رینگینگ می‌باشد.
oversample
نسخه‌ای از روش نزدیک‌ترین همسایه که پیکسل‌ها را بیش‌نمونه‌برداری می‌کند، به‌گونه‌ای
که پیکسل‌های همپوشانِ لبه‌ها به جای گرد شدن، به صورت خطی درون‌یابی می‌شوند. این کار در
ازای افزودن مقداری تاری، اساساً نواقص جزئی و اعوجاج‌های پرش تصویر (judder) ناشی از
درون‌یابی نزدیک‌ترین همسایه را حذف می‌کند. این فیلتر همچنین می‌تواند برای ترکیب فریم‌ها
استفاده شود که در آنجا با نام "smoothmotion" شناخته می‌شود (--tscale را ببینید).
linear
یک فیلتر برای --tscale.
168u
فیلترهای دیگری نیز وجود دارند، اما بیشتر آن‌ها کاربرد چندانی ندارند. برای مشاهده
فهرست کامل، مقدار help را ارسال کنید؛ مانند:
7.0
3.5
mpv --scale=help
168u
168u
--cscale=<filter>
مانند --scale، اما برای درون‌یابی اطلاعات کروما (رنگ). اگر تصویر
زیرنمونه‌برداری (subsample) نشده باشد، این گزینه کاملاً نادیده گرفته می‌شود. اگر این گزینه
تعیین نشود، فیلتر اعمال‌شده توسط --scale در نظر گرفته خواهد شد.
--dscale=<filter>
مانند --scale، با این تفاوت که این فیلترها را هنگام کوچک‌نمایی و کاهش مقیاس (downscaling) اعمال می‌کند.
--tscale=<filter>
فیلتری که برای درون‌یابی محور زمانی (فریم‌ها) استفاده می‌شود. این فیلتر تنها زمانی
استفاده می‌شود که --interpolation فعال باشد. تنها انتخاب‌های معتبر برای
--tscale فیلترهای کانولوشن تفکیک‌پذیر هستند (برای مشاهده فهرست، از --tscale=help
استفاده کنید). مقدار پیش‌فرض oversample است.
انتخاب‌های متداول برای --tscale شامل oversample، linear،
catmull_rom، mitchell، gaussian یا bicubic هستند. این فیلترها
به ترتیب افزایش نرمی/تاری فهرست شده‌اند، به‌طوری‌که bicubic نرم‌ترین/تارترین
و oversample شارپ‌ترین/کم‌نرم‌ترین آن‌ها است.
--scale-param1=<value>, --scale-param2=<value>, --cscale-param1=<value>, --cscale-param2=<value>, --dscale-param1=<value>, --dscale-param2=<value>, --tscale-param1=<value>, --tscale-param2=<value>
تنظیم پارامترهای فیلتر. به‌طور پیش‌فرض، این گزینه‌ها روی رشته ویژه default
تنظیم شده‌اند که به مقدار پیش‌فرضِ مختص مقیاس‌دهنده مربوطه نگاشت می‌شود. در صورتی که
فیلتر قابل تنظیم نباشد، نادیده گرفته می‌شود. در حال حاضر این مورد بر پارامترهای
فیلترهای زیر تأثیر می‌گذارد:
7.0
bicubic
پارامترهای اسپلاین (B و C). پیش‌فرض B=1 و C=0 است.
gaussian
پارامتر مقیاس (t). افزایش این مقدار نتیجه را تارتر می‌کند.
پیش‌فرض 1 است.
oversample
حداقل فاصله تا یک لبه پیش از اعمال درون‌یابی. تنظیم این مقدار روی 0 همواره لبه‌ها را
درون‌یابی می‌کند، در حالی که تنظیم آن روی 0.5 هرگز درون‌یابی انجام نمی‌دهد؛ بنابراین
رفتاری شبیه به استفاده از الگوریتم معمول نزدیک‌ترین همسایه خواهد داشت. پیش‌فرض 0.0 است.
--scale-blur=<value>, --cscale-blur=<value>, --dscale-blur=<value>, --tscale-blur=<value>
ضریب مقیاس‌بندی هسته (که به عنوان ضریب تاری یا blur factor نیز شناخته می‌شود). کاهش این مقدار نتیجه را واضح‌تر و افزایش آن نتیجه را تارتر می‌کند (پیش‌فرض 0 است). در صورت تنظیم روی 0، ضریب تاری ترجیحی هسته استفاده می‌شود. توجه داشته باشید که تنظیم این مقدار روی عددی بیش از حد کم (مثلاً 0.5) نتایج نامطلوبی در پی دارد. معمولاً توصیه می‌شود مقداری بین 0.8 و 1.2 انتخاب شود.
--scale-clamp=<0.0-1.0>, --cscale-clamp, --dscale-clamp, --tscale-clamp
یک سوگیری وزنی (weight bias) را برای ضرب در ضرایب منفی مشخص می‌کند. تعیین --scale-clamp=1 اثر حذف کامل وزن‌های منفی را داشته و محدوده مقادیر را عملاً به [0-1] محدود (clamp) می‌کند. مقادیر بین 0.0 و 1.0 را می‌توان برای اعمال کاهشی ملایم در وزن‌های منفی تعیین کرد. این ویژگی به‌ویژه برای --tscale مفید است، جایی که با هزینه افزودن احتمالی تاری بیشتر، مصنوعات حلقه‌ای شدن بیش از حد (ringing artifacts) را در دامنه زمانی کاهش می‌دهد (که معمولاً به صورت چشمک‌های کوتاه یا حاشیه‌های سیاه، عمدتاً در اطراف لبه‌های متحرک ظاهر می‌شوند). مقدار پیش‌فرض برای --tscale-clamp برابر 1.0 است، در حالی که گزینه‌های دیگر به‌طور پیش‌فرض 0.0 هستند.
--scale-taper=<value>, --scale-wtaper=<value>, --dscale-taper=<value>, --dscale-wtaper=<value>, --cscale-taper=<value>, --cscale-wtaper=<value>, --tscale-taper=<value>, --tscale-wtaper=<value>
ضریب مخروطی‌سازی (taper factor) هسته/پنجره. افزایش این مقدار تابع فیلتر را مسطح می‌کند. محدوده مقادیر از 0 تا 1 است. مقدار 0 (پیش‌فرض) به معنای عدم مسطح‌سازی است و مقدار 1 فیلتر را کاملاً مسطح می‌کند (معادل یک تابع جعبه‌ای یا box function). مقادیر میانی به این معنا هستند که بخشی از فیلتر مسطح خواهد بود و تابع فیلتر اصلی در فضای باقی‌مانده فشرده خواهد شد.
--scale-radius=<value>, --cscale-radius=<value>, --dscale-radius=<value>, --tscale-radius=<value>
تنظیم شعاع برای فیلترهای قابل تنظیم؛ باید یک عدد اعشاری بین 0.5 و 16.0 باشد. در صورت عدم تعیین، شعاع ترجیحی خود فیلتر استفاده می‌شود. این گزینه برای تمام ترکیب‌های مقیاس‌بند و VO کار نمی‌کند.
توجه داشته باشید که بسته به جزئیات پیاده‌سازی فیلتر و نسبت مقیاس‌بندی ویدیو، شعاعی که عملاً استفاده می‌شود ممکن است متفاوت باشد (به احتمال زیاد کمی افزایش می‌یابد).
--scale-antiring=<value>, --cscale-antiring=<value>, --dscale-antiring=<value>, --tscale-antiring=<value>
شدت حذف زنگ‌زدگی (antiringing) را تعیین می‌کند. این گزینه تلاش می‌کند اثرات حلقه‌ای شدن (ringing) را از بین ببرد، اما ممکن است در این فرایند مصنوعات تصویری دیگری ایجاد کند. باید یک عدد اعشاری بین 0.0 و 1.0 باشد. مقدار پیش‌فرض 0.0 ویژگی antiringing را به‌طور کامل غیرفعال می‌کند.
توجه داشته باشید که این گزینه بر فیلترهای ویژه bilinear و bicubic_fast و همچنین هیچ‌یک از مقیاس‌بندهای قطبی (EWA) تأثیری ندارد.
در --vo=gpu-next، این گزینه بر مقیاس‌بندهای قطبی (EWA) نیز تأثیر می‌گذارد. برخی از نام‌های مستعار فیلترها ممکن است صرف‌نظر از این تنظیمات، ویژگی antiringing را به صورت ضمنی فعال کنند (گزینه --scale را ببینید).
نکته:
7.0
3.5
هنگام کوچک‌نمایی (downscaling) با فیلترهای تفکیک‌پذیر (متعامد یا orthogonal)، تنظیم --dscale-antiring روی مقداری غیر از 0.0 (پیش‌فرض) کیفیت مقیاس‌بند را کاهش داده و مصنوعات دندانه‌دار شدن (aliasing) تولید می‌کند. در --vo=gpu-next، گزینه --dscale-antiring برای فیلترهای تفکیک‌پذیر (متعامد) غیرفعال است.
168u
168u
--scale-window=<window>, --cscale-window=<window>, --dscale-window=<window>, --tscale-window=<window>
(فقط کاربران پیشرفته) یک تابع پنجره‌گذاری سفارشی برای هسته انتخاب می‌کند. در صورت عدم تنظیم، پنجره ترجیحی فیلتر به عنوان پیش‌فرض استفاده می‌شود. برای دریافت فهرستی از توابع پنجره‌گذاری پشتیبانی‌شده، از --scale-window=help استفاده کنید.
--scale-wparam=<window>, --cscale-wparam=<window>, --cscale-wparam=<window>, --tscale-wparam=<window>
(فقط کاربران پیشرفته) پارامتر تابع پنجره تعیین‌شده توسط --scale-window و موارد مشابه را پیکربندی می‌کند. این مقادیر به‌طور پیش‌فرض روی رشته ویژه default تنظیم شده‌اند که به مقدار پیش‌فرض مختص آن پنجره نگاشت می‌شود. در صورتی که پنجره قابل تنظیم نباشد، نادیده گرفته می‌شود. در حال حاضر، این گزینه بر پارامترهای پنجره زیر تأثیر می‌گذارد:
7.0
kaiser
پارامتر پنجره (alpha). پیش‌فرض 6.33 است.
blackman
پارامتر پنجره (alpha). پیش‌فرض 0.16 است.
gaussian
پارامتر مقیاس (t). افزایش این مقدار پنجره را عریض‌تر می‌کند. پیش‌فرض 1 است.
168u
--scaler-resizes-only
اگر اندازه تصویر ویدیو تغییر نکرده باشد، مقیاس‌بند را غیرفعال می‌کند. در این حالت، به جای مقداری که با --scale تعیین شده، از bilinear استفاده می‌شود. در صورتی که هیچ مقیاس‌بندی انجام نشود، bilinear تصویر منبع را به صورت بی‌نقص بازتولید می‌کند. به‌طور پیش‌فرض فعال است. توجه داشته باشید که این گزینه هرگز بر --cscale تأثیری ندارد.
--correct-downscaling
هنگام استفاده از فیلترهای مبتنی بر کانولوشن، در حین کوچک‌نمایی اندازه فیلتر را گسترش می‌دهد. کیفیت را افزایش می‌دهد، اما کارایی را در زمان کوچک‌نمایی کاهش می‌دهد. به‌طور پیش‌فرض فعال است.
این گزینه برای ویدیوی آنامورفیک (anamorphic) عملکردی کمی پایین‌تر از حد بهینه خواهد داشت (اما همچنان بهتر از حالت غیرفعال بودن آن است)، زیرا اندازه را طوری گسترش می‌دهد که تنها با مقدار ملایم‌ترِ ضرایب مقیاس بین محورها مطابقت داشته باشد.
نکته: این گزینه هنگام استفاده از کوچک‌نمایی bilinear با --vo=gpu نادیده گرفته می‌شود.
--linear-downscaling
کوچک‌نمایی در فضای نور خطی (linear light). این گزینه فقط باید با یک --fbo-format که حداقل دقت ۱۶ بیتی دارد استفاده شود. این گزینه بر محتوای HDR تأثیری ندارد. به‌طور پیش‌فرض فعال است.
--linear-upscaling
بزرگ‌نمایی در فضای نور خطی (linear light). همانند --linear-downscaling، این گزینه نیز فقط باید با یک --fbo-format با دقت حداقل ۱۶ بیتی استفاده شود. استفاده از این گزینه معمولاً به جز برای آزمایش یا اهداف خاص توصیه نمی‌شود. به کاربران پیشنهاد می‌شود که یا --sigmoid-upscaling را فعال کنند یا هر دو گزینه را غیرفعال نگه دارند (یعنی مقیاس‌بندی در نور گاما).
--sigmoid-upscaling
هنگام بزرگ‌نمایی، از تبدیل رنگ سیگموئیدی برای جلوگیری از تشدید مصنوعات حلقه‌ای شدن (ringing artifacts) استفاده می‌کند. به‌طور پیش‌فرض فعال است. این گزینه با --linear-upscaling ناسازگار بوده و جایگزین آن می‌شود. (توجه داشته باشید که سیگموئیدسازی به خطی‌سازی نیز نیاز دارد، بنابراین مرحله پردازش LINEAR در هر دو حالت اجرا می‌شود).
برای اطلاعات بیشتر درباره سیگموئیدسازی، ببینید:
https://imagemagick.org/Usage/resize/#resize_sigmoidal
--sigmoid-center
مرکز منحنی سیگموئید مورد استفاده برای --sigmoid-upscaling؛ باید یک عدد اعشاری بین 0.0 و 1.0 باشد. در صورت عدم تعیین، مقدار پیش‌فرض 0.75 است.
--sigmoid-slope
شیب منحنی سیگموئید مورد استفاده برای --sigmoid-upscaling؛ باید یک عدد اعشاری بین 1.0 و 20.0 باشد. در صورت عدم تعیین، مقدار پیش‌فرض 6.5 است.
--interpolation
کاهش پرش و لکنت تصویر ناشی از عدم تطابق میان fps ویدیو و نرخ نوسازی نمایشگر (که به عنوان judder نیز شناخته می‌شود).
هشدار:
7.0
3.5
این گزینه نیازمند تنظیم گزینه --video-sync روی یکی از حالت‌های display- است، در غیر این صورت بدون اعلام اخطار غیرفعال خواهد شد. این مورد پیش از mpv 0.14.0 الزامی نبود.
168u
168u
این قابلیت اساساً تلاش می‌کند با انجام کانولوشن روی ویدیو در امتداد محور زمانی، فریم‌های مفقود را درون‌یابی (interpolate) کند. فیلتر مورد استفاده را می‌توان با استفاده از تنظیمات --tscale کنترل کرد.
--interpolation-threshold=<0..1,-1>
آستانه‌ای که پایین‌تر از آن، درون‌یابی نسبت فریم غیرفعال می‌شود (پیش‌فرض: 0.01). این مقدار به صورت abs(disphz/vfps - 1) < threshold محاسبه می‌شود، که در آن vfps نرخ فریم ویدیو با احتساب تغییر سرعت و disphz نرخ نوسازی نمایشگر است. (نرخ فریم ویدیو با احتساب تغییر سرعت تقریباً برابر با FPS معمولی ویدیو است اما اثر کاهش و افزایش سرعت در آن لحاظ شده است. این موضوع زمانی اهمیت دارد که از --video-sync=display-resample برای هماهنگ‌سازی اجرای ویدیو با FPS نمایشگر استفاده کنید، یا اینکه ویژگی speed را تغییر دهید.)
هدف از مقدار پیش‌فرض، فعال‌سازی درون‌یابی در سناریوهایی است که در آن‌ها زمان‌بندی مجدد با --video-sync=display-* نمی‌تواند سرعت ویدیو را به اندازه کافی برای پخش روان تنظیم کند. برای مثال اگر یک ویدیو 60.00 FPS باشد و نرخ نوسازی نمایشگر شما 59.94 Hz باشد، درون‌یابی هرگز فعال نخواهد شد، زیرا عدم تطابق در محدوده ۱٪ از نرخ نوسازی است. همچنین مقدار پیش‌فرض سناریویی را مدیریت می‌کند که در آن mpv نمی‌تواند FPS کانتینر را تشخیص دهد (مانند برخی پخش‌های زنده) و ممکن است به طور پویا درون‌یابی را روشن و خاموش کند. در این حالت، پیش‌فرض این خواهد بود که از درون‌یابی استفاده نشود، بلکه به --video-sync=display-* اجازه داده شود ویدیو را برای مطابقت با نرخ نوسازی نمایشگر مجدداً زمان‌بندی کند. برای اطلاعات بیشتر در مورد نحوه زمان‌بندی مجدد ویدیو توسط mpv، گزینه --video-sync-max-video-change را ببینید.
همچنین توجه داشته باشید که اگر مثلاً از --video-sync=display-vdrop استفاده کنید، انحرافات جزئی در نرخ نوسازی می‌تواند درون‌یابی را غیرفعال کرده و هر چند دقیقه یک‌بار ناپیوستگی ایجاد کند.
برای غیرفعال کردن این منطق، این مقدار را روی -1 تنظیم کنید.
--interpolation-preserve
نتایج درون‌یابی‌شده فریم‌های قبلی را حتی در زمان تغییر پارامترهای رندرکننده حفظ می‌کند - به استثنای گزینه‌های مربوط به برش (cropping) و موقعیت قرارگیری ویدیو، که همیشه کش را باطل می‌کنند. فعال کردن این گزینه، به‌روزرسانی‌های پویای تنظیمات رندرکننده را به بهای تأخیر اندکی بیشتر در پاسخ به چنین تغییراتی، کمی روان‌تر می‌کند. به‌طور پیش‌فرض فعال است. (تنها بر --vo=gpu-next تأثیر می‌گذارد؛ توجه داشته باشید که --vo=gpu همیشه فریم‌های درون‌یابی‌شده را باطل می‌کند)..TP
--opengl-pbo
استفاده از PBOها را فعال می‌کند. در برخی راه‌اندازها این می‌تواند سریع‌تر باشد، به‌ویژه اگر اندازه ویدیوی منبع بسیار بزرگ باشد (مثلاً ویدیوی به اصطلاح "4K"). در راه‌اندازهای دیگر ممکن است کُندتر بوده یا باعث مشکلات تأخیر شود.
--dither-depth=<N|no|auto>
عمق هدف رنگ‌آمیزی تطبیقی (dither) را روی N تنظیم می‌کند. پیش‌فرض: auto.
7.0
no
غیرفعال کردن هرگونه dither انجام‌شده توسط mpv.
auto
انتخاب خودکار.
در --vo=gpu: عمق شناسایی‌شده یا در غیر این صورت 8 bpc
در --vo=gpu-next: عمق شناسایی‌شده یا 8 bpc (برای هدف SDR)
8
انجام dither برای خروجی ۸ بیتی.
168u
توجه داشته باشید که عمق بیت روی کابل (on-the-wire) قابل تشخیص نیست مگر در هنگام استفاده از
gpu-api=d3d11. تنظیم صریح این مقدار مطابق با عمق بیت نمایشگرتان
توصیه می‌شود، چرا که dither انجام‌شده توسط برخی پنل‌های LCD ممکن است کیفیت
پایینی داشته باشد.
--dither-size-fruit=<2-8>
اندازه ماتریس dither را تعیین می‌کند (پیش‌فرض: 6). اندازه واقعی ماتریس
به ازای مقدار گزینه N برابر با (2^N) x (2^N) است، بنابراین مقدار 6
اندازه‌ای معادل 64x64 ایجاد می‌کند. این ماتریس در زمان راه‌اندازی تولید می‌شود، و محاسبه
یک ماتریس بزرگ ممکن است نسبتاً زمان‌بر باشد (چند ثانیه).
تنها در حالت --dither=fruit استفاده می‌شود.
--dither=<fruit|ordered|error-diffusion|no>
الگوریتم dithering را انتخاب می‌کند (پیش‌فرض: fruit). (به طور معمول،
گزینه --dither-depth فعال بودن یا نبودن dithering را کنترل می‌کند.)
گزینه error-diffusion نیازمند پشتیبانی از compute shader است. همچنین
برای اجرا به مقدار زیادی حافظه مشترک نیاز دارد که اندازه آن به هر دوی
کرنل (گزینه --error-diffusion در زیر را ببینید) و ارتفاع پنجره ویدیو بستگی دارد.
اگر حافظه مشترک کافی برای اجرای شیدر وجود نداشته باشد، به dither از نوع fruit بازمی‌گردد.
--temporal-dither
فعال کردن dithering زمانی (temporal). (تنها در صورتی فعال است که dithering به طور کلی
فعال باشد.) این قابلیت با تغییر جهت ماتریس کاشی‌کاری‌شده dither، بین ۸ الگوی مختلف
dither در هر فریم جابجا می‌شود. متأسفانه این امر می‌تواند منجر به پرش تصویر (flicker)
در نمایشگرهای LCD شود، زیرا زمان پاسخ‌دهی بالایی دارند.
--temporal-dither-period=<1-128>
مشخص می‌کند که هنگام استفاده از --temporal-dither، الگوی dithering
هر چند وقت یک‌بار به‌روزرسانی شود. مقدار 1 (پیش‌فرض) در هر فریم ویدیو،
مقدار 2 یک فریم در میان، و به همین ترتیب به‌روزرسانی خواهد کرد.
--error-diffusion=<kernel>
کرنل error diffusion مورد استفاده زمانی که --dither=error-diffusion تنظیم شده باشد.
7.0
simple
خطا را تنها به دو پیکسل مجاور انتشار می‌دهد. سریع‌ترین ولی با کیفیت پایین.
sierra-lite
سریع با کیفیتی مناسب. این حالت پیش‌فرض است.
floyd-steinberg
شناخته‌شده‌ترین کرنل error diffusion.
atkinson
متفاوت از سایر کرنل‌ها به نظر می‌رسد زیرا در حین dither تنها کسری از خطاها
منتشر می‌شوند. یک کاربرد رایج این کرنل، ذخیره اسکرین‌شات dither شده (در حالت پنجره)
است. این کرنل فایلی کمی کوچک‌تر، با کیفیت dither همچنان مناسب تولید می‌کند.
168u
کرنل‌های دیگری نیز وجود دارند (برای فهرست کردن از --error-diffusion=help استفاده کنید) اما
بیشتر آن‌ها بسیار کُندتر بوده و به مقدار حافظه مشترک حتی بیشتری نیاز دارند.
در میان این کرنل‌ها، burkes تعادل خوبی بین عملکرد و کیفیت برقرار می‌کند،
و احتمالاً گزینه‌ای است که مایلید ابتدا آن را امتحان کنید.
--gpu-debug
اشکال‌زدایی GPU را فعال می‌کند. معنای این گزینه به نوع API بستگی دارد. برای OpenGL،
تابع glGetError() را فراخوانی کرده و یک context اشکال‌زدایی درخواست می‌کند. برای Vulkan،
لایه‌های اعتبارسنجی (validation layers) را فعال می‌کند.
--opengl-swapinterval=<n>
فاصله زمانی در فریم‌های نمایش‌داده‌شده بین دو تعویض بافر. مقدار 1 معادل
فعال کردن VSYNC و 0 معادل غیرفعال کردن VSYNC است. در صورت مشخص نشدن، پیش‌فرض 1 است.
توجه داشته باشید که این گزینه به پشتیبانی مناسب OpenGL از vsync بستگی دارد. در برخی بسترها
و راه‌اندازها، این مورد تنها در حالت تمام‌صفحه به شکل قابل اعتماد کار می‌کند. همچنین
در صورت استفاده از چند نمایشگر، ممکن است نیازمند دستکاری‌های ویژه راه‌انداز باشد تا اطمینان حاصل شود
mpv با نمایشگر درست همگام می‌شود. مدیر پنجره‌های ترکیبی (Compositing window managers)
نیز ممکن است منجر به نتایج نامطلوب شوند، همان‌طور که نبود یا نادرست بودن اطلاعات FPS نمایشگر
می‌تواند این‌گونه باشد (گزینه --display-fps-override را ببینید).
--egl-config-id=<ID>
(تنها در EGL)
انتخاب EGLConfig با یک EGL_CONFIG_ID مشخص.
سطوح رندرینگ و contextها با استفاده از این EGLConfig ایجاد خواهند شد.
می‌توانید از --msg-level=vo=trace برای به دست آوردن فهرستی از پیکربندی‌های موجود استفاده کنید.
--egl-output-format=<auto|rgb8|rgba8|rgb10|rgb10_a2|rgb16|rgba16|rgb16f|rgba16f|rgb32f|rgba32f>
(تنها در EGL)
انتخاب یک قالب خروجی EGL مشخص برای استفاده در رندرینگ OpenGL.
این گزینه با --egl-config-id مانعة‌الجمع است.
مقدار پیش‌فرض "auto" است که اولین پیکربندی قابل استفاده را بر اساس
ترتیب ارائه‌شده توسط راه‌انداز انتخاب می‌کند.
همه قالب‌ها در دسترس نیستند.
اگر قالبی انتخاب شود که در دسترس نیست، یک خطای مهلک رخ می‌دهد.
نکته:
7.0
3.5
هیچ API قابل اعتمادی برای استعلام عمق بیت میزکار در EGL وجود ندارد.
می‌توانید این گزینه را به صورت دستی مطابق با عمق بیت نمایشگر خود
تنظیم کنید.
این گزینه بر تشخیص خودکار --dither-depth نیز تأثیر می‌گذارد.
168u
168u
نکته:
7.0
3.5
برخلاف --d3d11-output-format، این گزینه بر روی --vo=gpu-next نیز اعمال می‌شود.
168u
168u
--vulkan-device=<device name|UUID>
نام یا UUID دستگاه Vulkan برای استفاده در رندرینگ و نمایش (presentation). از
--vulkan-device=help برای مشاهده فهرست دستگاه‌های در دسترس و نام‌ها و
UUIDهای آن‌ها استفاده کنید. در صورت مشخص نشدن، اولین دستگاه سخت‌افزاری Vulkan
شماره‌گذاری‌شده استفاده خواهد شد.
--vulkan-swap-mode=<mode>
حالت ارائه زنجیره تعویض (swapchain) مربوط به vulkan را کنترل می‌کند. این گزینه مشابه
گزینه --opengl-swapinterval است.
7.0
auto
استفاده از حالت swapchain ترجیحی برای context ولکان. (پیش‌فرض)
fifo
بدون پارگی تصویر (Non-tearing)، مسدودشده با vsync. مشابه با "VSync on".
fifo-relaxed
دارای پارگی تصویر (Tearing)، مسدودشده با vsync. فریم‌های دیرهنگام به جای لکنت (stuttering) دچار پارگی تصویر می‌شوند.
mailbox
بدون پارگی تصویر، غیرمسدود با vsync. مشابه با "triple buffering".
immediate
دارای پارگی تصویر، غیرمسدود با vsync. مشابه با "VSync off".
168u
--vulkan-queue-count=<1..8>
تعداد VkQueueهای مورد استفاده برای رندرینگ را کنترل می‌کند (محدود به مقداری که
دستگاه شما پشتیبانی می‌کند). در تئوری، استفاده از صف‌های بیشتر می‌تواند مقداری
موازی‌سازی بین فریم‌ها را امکان‌پذیر کند (هنگام استفاده از --swapchain-depth بیشتر از
1)، اما روی سخت‌افزارهایی که موازی‌سازی واقعی میان صف‌ها وجود ندارد می‌تواند
سرعت را نیز کاهش دهد. (پیش‌فرض: 1)
--vulkan-async-transfer
استفاده از صف‌های انتقال ناهمگام را در دستگاه‌های پشتیبانی‌شده vulkan فعال می‌کند. استفاده از
آن‌ها این امکان را فراهم می‌سازد که عملیات انتقال مانند بارگذاری بافت‌ها (texture uploads) و blitها
هم‌زمان با رندرینگ اصلی انجام شوند، و در نتیجه توان عملیاتی کلی و مصرف انرژی را
بهبود بخشند. به طور پیش‌فرض فعال است و باید نسبتاً امن باشد.
--vulkan-async-compute
استفاده از صف‌های محاسباتی ناهمگام را در دستگاه‌های پشتیبانی‌شده vulkan فعال می‌کند. استفاده
از این، در تئوری، زمان‌بندی خارج از نوبت شیدرهای محاسباتی را به همراه شیدرهای گرافیکی
میسر می‌سازد، و بدین ترتیب سخت‌افزار می‌تواند در حین انتظار برای وقفه‌های پایپ‌لاین و عملیات حافظه،
کارهای مفیدتری انجام دهد. روی همه GPUها سودمند نیست. شایان ذکر است که اگر محاسبات ناهمگام فعال باشد
و دستگاه از صف‌های محاسباتی بیشتری نسبت به صف‌های گرافیکی پشتیبانی کند (محدود به محدودیت‌های
تعیین‌شده توسط --vulkan-queue-count)، mpv به طور داخلی تلاش خواهد کرد هر جا که ممکن باشد
استفاده از compute shaderها را به fragment shaderها ترجیح دهد. به طور پیش‌فرض فعال است،
اگرچه کاربران Nvidia ممکن است تمایل به غیرفعال کردن آن داشته باشند..TP
--vulkan-display-display=<n>
اندیس نمایشگر روی دستگاه Vulkan انتخاب‌شده برای نمایش تصویر هنگام استفاده از زمینه پردازنده گرافیکی displayvk. از --vulkan-display-display=help برای دیدن فهرست نمایشگرهای دردسترس استفاده کنید. در صورت مشخص نشدن، از نخستین نمایشگر شمارش‌شده استفاده خواهد شد.
--vulkan-display-mode=<n>
اندیس حالت نمایش روی نمایشگر Vulkan انتخاب‌شده برای استفاده هنگام به‌کارگیری زمینه پردازنده گرافیکی displayvk. از --vulkan-display-mode=help برای مشاهده فهرست حالت‌های دردسترس استفاده کنید. در صورت مشخص نشدن، نخستین حالت شمارش‌شده استفاده خواهد شد.
--vulkan-display-plane=<n>
اندیس صفحه (plane) روی دستگاه Vulkan انتخاب‌شده برای نمایش هنگام استفاده از زمینه پردازنده گرافیکی displayvk. از --vulkan-display-plane=help برای دیدن فهرست صفحه‌های دردسترس استفاده کنید. در صورت مشخص نشدن، از نخستین صفحه شمارش‌شده استفاده خواهد شد.
--d3d11-exclusive-fs=<yes|no>
هنگامی که ویدیوی تمام‌صفحه درخواست شود، وضعیت تمام‌صفحه swap chain مربوط به D3D11 را به 'fullscreen' تغییر می‌دهد. در برنامه‌های دیگر با نام‌های "exclusive fullscreen" یا "D3D fullscreen" نیز شناخته می‌شود. این گزینه کنترل کامل رندرینگ روی صفحه نمایش swap chain را به mpv می‌دهد. به‌طور پیش‌فرض خاموش است.
--d3d11-warp=<yes|no|auto>
استفاده از WARP (پلتفرم شطرنجی‌سازی پیشرفته ویندوز - Windows Advanced Rasterization Platform) با پشتیبان پردازنده گرافیکی D3D11 (پیش‌فرض: auto). این یک رندرکننده نرم‌افزاری با کارایی بالا است. به‌طور پیش‌فرض، فقط زمانی استفاده می‌شود که سامانه فاقد آداپتورهای سخت‌افزاری پشتیبانی‌کننده از D3D11 باشد. اگرچه قابلیت‌های گسترش‌یافته پردازنده گرافیکی با WARP کار خواهند کرد، اما ممکن است بسیار کُند باشند.
--d3d11-output-mode=<auto|window|composition>
استفاده از یک حالت خروجی مشخص برای ایجاد swapchain در D3D11. حالت "composition" پنجره‌ای ایجاد نمی‌کند. اگر می‌خواهید از پشتیبان پردازنده گرافیکی D3D11 در برنامه‌های WinUI استفاده کنید، باید این را روی "composition" تنظیم کنید. حالت "window" یک پنجره ایجاد کرده و از DWM برای ارائه ویدیو استفاده می‌کند. مقدار "auto" همانند "window" است. پس از ایجاد swapchain، می‌توانید با دریافت ویژگی display-swapchain، آدرس swapchain (مقداری از نوع int64) را به دست آورید.
--d3d11-feature-level=<12_1|12_0|11_1|11_0|10_1|10_0|9_3|9_2|9_1>
انتخاب یک سطح ویژگی (feature level) مشخص هنگام استفاده از پشتیبان پردازنده گرافیکی D3D11. به‌طور پیش‌فرض، بالاترین سطح ویژگیِ دردسترس استفاده می‌شود. از این گزینه می‌توان برای انتخاب یک سطح ویژگی پایین‌تر استفاده کرد که عمدتاً برای اشکال‌زدایی مفید است. بیشتر ویژگی‌های گسترش‌یافته GPU در سطوح ویژگی 9_x کار نخواهند کرد.
--d3d11-flip=<yes|no>
فعال‌سازی مدل نمایش flip-model، که با به اشتراک‌گذاری سطوح با DWM از کپی غیرضروری بافر پشتی (backbuffer) جلوگیری می‌کند (پیش‌فرض: yes). این ممکن است در درایورهای قدیمی‌تر باعث مشکلات کارایی شود. اگر ارائه از نوع flip-model پشتیبانی نشود (برای نمونه در Windows 7 بدون به‌روزرسانی پلتفرم)، mpv به‌طور خودکار به مدل نمایش قدیمی‌تر bitblt پس‌گرد خواهد کرد.
برای اینکه شفافیت پس‌زمینه کار کند، باید ارائه flip-model غیرفعال شود.
--d3d11-sync-interval=<0..4>
زمان‌بندی هر فریم برای ارائه در این تعداد از بازه‌های VBlank. (پیش‌فرض: 1) تنظیم روی 1 موجب فعال‌سازی VSync شده و تنظیم روی 0 آن را غیرفعال می‌کند.
--d3d11-adapter=<adapter name|help>
انتخاب یک آداپتور خاص D3D11 برای استفاده در رندرینگ D3D11.
در صورت عدم تنظیم، آداپتور پیش‌فرض انتخاب خواهد شد. در صورت ارائه نام "help"، گزینه‌های جایگزین فهرست می‌شوند.
بررسی تطابق‌ها بر اساس ابتدای رشته و بدون حساسیت به بزرگی و کوچکی حروف انجام می‌شود. بنابراین، اگر توضیحات آداپتور با نام سازنده آغاز شود، می‌توان از آن به عنوان پارامتر انتخاب استفاده کرد.
رمزگشاهای سخت‌افزاری که برای دریافت یک دستگاه از قابلیت کمکی انتزاع رندرینگ D3D11 استفاده می‌کنند (مانند D3D11VA یا حالت DXGI در DXVA2)، تحت تأثیر این انتخاب قرار خواهند گرفت.
--d3d11-output-format=<auto|rgba8|bgra8|rgb10_a2|rgba16f>
انتخاب یک قالب خروجی خاص D3D11 برای به‌کارگیری در رندرینگ D3D11.
مقدار "auto" پیش‌فرض است که بسته به عمق بیت پیکربندی‌شده میزکار، rgba8 یا rgb10_a2 را انتخاب می‌کند. مقادیر rgba16f و bgra8 از منطق تشخیص خودکار کنار گذاشته شده‌اند و برای آزمون دستی در دسترس هستند.
نکته:
7.0
3.5
استعلام عمق بیت میزکار تنها از طریق یک API در دسترس از Windows 10 به بعد امکان‌پذیر است. بنابراین در سامانه‌های قدیمی‌تر، به‌طور خودکار تنها از قالب خروجی rgba8 استفاده خواهد کرد.
168u
168u
نکته:
7.0
3.5
برای --vo=gpu-next، این به عنوان یک راهنمایی حداکثری (best-effort) به کار می‌رود و حرف نهایی درباره اینکه چه قالبی استفاده شود را libplacebo می‌زند.
168u
168u
--d3d11-output-csp=<auto|srgb|linear|pq|bt.2020>
انتخاب یک فضای رنگی خروجی خاص D3D11 برای استفاده در رندرینگ D3D11.
مقدار "auto" پیش‌فرض است، که فضای رنگیِ میزکاری را که swap chain روی آن قرار دارد انتخاب خواهد کرد.
مقادیر غیر از "srgb" و "pq" در آزمایش‌ها مشکلاتی داشته‌اند، بنابراین عمدتاً برای آزمون دستی در دسترس هستند.
نکته:
7.0
3.5
پیکربندی فضای رنگی swap chain تنها از طریق یک API در دسترس از Windows 10 به بعد امکان‌پذیر است. بنابراین در سامانه‌های قدیمی‌تر کار نخواهد کرد.
168u
168u
--d3d11va-zero-copy=<yes|no>
به‌طور پیش‌فرض، هنگام استفاده از رمزگشایی سخت‌افزاری با --gpu-api=d3d11، تصویر ویدیو (از GPU به GPU) از سطح رمزگشا به یک منبع سایه‌زن (shader resource) کپی می‌شود. این گزینه را تنظیم کنید تا با نمونه‌برداری مستقیم از تصویر رمزگشا، از آن کپی‌برداری جلوگیری شود. این کار ممکن است کارایی را افزایش داده و مصرف انرژی را کاهش دهد، اما می‌تواند به دلیل لایه‌گذاری (padding) باعث نمونه‌برداری نادرست از لبه‌های پایینی و راست تصویر شده و همچنین باگ‌های درایور را برانگیزد؛ چرا که Direct3D 11 از نظر فنی اجازه نمونه‌برداری از سطح رمزگشا را نمی‌دهد (اگرچه اکثر درایورها از آن پشتیبانی می‌کنند).
در حال حاضر تنها برای --gpu-api=d3d11 کاربرد دارد.
--wayland-app-id=<string>
تنظیم شناسه برنامه کاربر (client app id) برای روش‌های خروجی ویدیوی مبتنی بر Wayland (پیش‌فرض: mpv).
--wayland-configure-bounds=<auto|yes|no>
کنترل می‌کند که آیا در صورت ارسال رویداد configure bounds توسط کامپوزیتور، mpv آن را بپذیرد یا خیر (پیش‌فرض: auto). این امر اندازه اولیه پنجره mpv را به یک حداکثر اندازه خاصِ مدنظر کامپوزیتور محدود می‌کند. در بیشتر موارد، این گزینه فقط از بزرگ‌تر شدن پنجره mpv نسبت به اندازه نمایشگر در نخستین رندر جلوگیری می‌کند. با مقدار پیش‌فرض auto، در صورتی که هر گزینه‌ای از نوع autofit یا geometry نیز تنظیم شده باشد، configure-bounds بدون هشدار نادیده گرفته خواهد شد.
--wayland-content-type=<auto|none|photo|video|game>
در صورت پشتیبانی کامپوزیتور، mpv با استفاده از پروتکل content-type یک راهنمایی (hint) ارسال می‌کند و به کامپوزیتور اعلام می‌دارد چه نوع محتوایی در حال نمایش است. مقدار auto (پیش‌فرض) بسته به ارزیابی‌های درونی، به‌طور خودکار بین اعلام کردن محتوا به عنوان تصویر، ویدیو یا احتمالاً هیچ‌کدام جابه‌جا خواهد شد.
--wayland-edge-pixels-pointer=<value>
اندازه حاشیه لبه را برای آغاز رویدادهای تغییر اندازه سمت کاربر در زمینه‌های Wayland با ماوس تعیین می‌کند (پیش‌فرض: 16). این گزینه تنها در صورتی فعال است که هیچ تزییناتی در سمت سرور (server side decorations) از سوی کامپوزیتور وجود نداشته باشد.
--wayland-edge-pixels-touch=<value>
اندازه حاشیه لبه را برای آغاز رویدادهای تغییر اندازه سمت کاربر در زمینه‌های Wayland با رویدادهای لمسی تعیین می‌کند (پیش‌فرض: 32).
--wayland-internal-vsync=<no|auto|yes>
تعیین می‌کند که آیا از vsync درونی mpv برای خروجی‌های ویدیویی مبتنی بر Wayland استفاده شود یا خیر (پیش‌فرض: auto). این گزینه به‌ویژه هنگام ترکیب با video-sync=display-desync، --audio=no و --untimed=yes برای بنچمارک گرفتن از خروجی‌های ویدیویی (VOs) در Wayland کاربرد دارد. هنگام استفاده از --gpu-api=vulkan، مقدار ویژه auto در صورتی که کامپوزیتور از پروتکل fifo و نسخه ۲ از پروتکل presentation time پشتیبانی کند، vsync درونی را غیرفعال خواهد کرد. در هر وضعیت دیگری، عملکرد آن دقیقاً مشابه yes است.
--wayland-present=<yes|no>
فعال‌سازی استفاده از پروتکل presentation time در Wayland برای نمایش دقیق‌تر فریم در صورت پشتیبانی کامپوزیتور (پیش‌فرض: yes). این گزینه تنها در صورتی اثرگذار است که از --video-sync=display-... استفاده شود.
--spirv-compiler=<compiler>
کنترل می‌کند که کدام کامپایلر برای ترجمه GLSL به SPIR-V استفاده شود. این گزینه تنها برای --gpu-api=d3d11 به همراه --vo=gpu کاربرد دارد.
انتخاب‌های ممکن در حال حاضر عبارت‌اند از:
7.0
auto
استفاده از نخستین کامپایلر دردسترس. (پیش‌فرض)
shaderc
استفاده از libshaderc، که یک پوششگر API پیرامون glslang است. در صورت دردسترس بودن، این گزینه عموماً بیشترین اولویت را دارد.
168u
نکته:
7.0
3.5
این گزینه منسوخ شده است، زیرا تنها یک مقدار قابل‌استفاده وجود دارد. ممکن است در آینده حذف شود.
168u
--glsl-shader=<file>, --glsl-shaders=<file-list>
قلاب‌های (hooks) سفارشی GLSL. این‌ها روشی انعطاف‌پذیر برای افزودن سایه‌زن‌های قطعه‌ای (fragment shaders) سفارشی هستند که می‌توان آن‌ها را تقریباً در هر نقطه‌ای از خط لولهٔ رندر تزریق کرد و به تمام بافت‌های میانی پیشین دسترسی داشت.
هر بار استفاده از گزینهٔ --glsl-shader یک فایل دیگر به فهرست داخلی سایه‌زن‌ها اضافه می‌کند، در حالی که --glsl-shaders فهرستی از فایل‌ها را دریافت کرده و فهرست داخلی را با آن بازنویسی می‌کند. مورد دوم یک گزینه از نوع فهرست مسیر است (برای جزئیات به گزینه‌های فهرست مراجعه کنید).
هشدار:
7.0
3.5
این نحو (syntax) هنوز پایدار نیست و ممکن است در هر زمانی تغییر کند.
168u
168u
نحو کلی یک سایه‌زن کاربر به این صورت است:
7.0
3.5
//!METADATA ARGS...
//!METADATA ARGS...
vec4 hook() {
...
return something;
}
//!METADATA ARGS...
//!METADATA ARGS...
...
168u
168u
هر بخش از متادیتا، همراه با خطوط غیرمتادیتای پس از آن، یک بلوک واحد را تعریف می‌کند. در حال حاضر دو نوع بلوک وجود دارد: HOOKها و TEXTUREها.
یک بلوک TEXTURE می‌تواند گزینه‌های زیر را تنظیم کند:
7.0
TEXTURE <name> (الزامی)
نام این بافت (texture). سپس قلاب‌ها می‌توانند با استفاده از BIND، بافت را تحت این نام متصل (bind) کنند. این باید اولین گزینهٔ بلوک بافت باشد.
SIZE <width> [<height>] [<depth>] (الزامی)
ابعاد بافت. ارتفاع و عمق اختیاری هستند. نوع بافت (1D، 2D یا 3D) به تعداد مؤلفه‌های مشخص‌شده بستگی دارد.
FORMAT <name> (الزامی)
قالب بافت برای نمونه‌ها. قالب‌های بافت پشتیبانی‌شده هنگام مقداردهی اولیهٔ خروجی ویدئوی (VO) gpu در گزارش‌های اشکال‌زدایی فهرست می‌شوند (به دنبال Texture formats: بگردید). معمولاً این مورد از قراردادهای نام‌گذاری OpenGL پیروی می‌کند. برای مثال، rgb16 تعداد ۳ کانال با مؤلفه‌های ۱۶ بیتی نرمال‌شده ارائه می‌دهد. یک مورد خاص، قالب‌های اعشاری (float) هستند: برای مثال، rgba16f دارای دقت داخلی ۱۶ بیتی است، اما داده‌های بافت به صورت اعداد اعشاری ۳۲ بیتی ارائه می‌شوند و راه‌انداز هنگام بارگذاری بافت، داده‌ها را تبدیل می‌کند.
اگرچه نام قالب‌ها از یک قرارداد نام‌گذاری رایج پیروی می‌کنند، اما همهٔ آن‌ها روی تمام سخت‌افزارها، راه‌اندازها، نسخه‌های GL و غیره در دسترس نیستند.
FILTER <LINEAR|NEAREST>
فیلتر کوچک‌نمایی/بزرگ‌نمایی (min/magnification) مورد استفاده هنگام نمونه‌برداری از این بافت.
BORDER <CLAMP|REPEAT|MIRROR>
حالت پیچش مرزی (border wrapping) مورد استفاده هنگام نمونه‌برداری از این بافت.
168u
به دنبال متادیتا، رشته‌ای از بایت‌ها در نمادگذاری هگزادسیمال قرار می‌گیرد که داده‌های خام بافت را متناظر با قالب مشخص‌شده توسط FORMAT، در یک خط واحد بدون فاصله‌های خالی اضافی تعریف می‌کند.
یک بلوک HOOK می‌تواند گزینه‌های زیر را تنظیم کند:
7.0
HOOK <name> (الزامی)
بافتی که باید به آن قلاب شود. ممکن است تا یک سقف از پیش تعیین‌شده، چندین بار در یک بلوک متادیتا تکرار شود. برای فهرستی از بافت‌های قابل قلاب‌شدن به زیر مراجعه کنید.
DESC <title>
توضیحات کاربرپسند از این مرحله (pass). این نامی است که هنگام نمایش این سایه‌زن در فهرست مراحل برای ویژگی vo-passes استفاده می‌شود.
BIND <name>
بافتی را بارگذاری می‌کند (خواه از طرف mpv باشد یا از یک بلوک TEXTURE) و آن را در دسترس مرحله قرار می‌دهد. هنگام متصل کردن بافت‌ها از mpv، این کار همچنین ماکروهایی را برای تسهیل دسترسی صحیح به آن تنظیم می‌کند. برای یک فهرست به پایین مراجعه کنید. به صورت پیش‌فرض، هیچ بافتی متصل نمی‌شود. نام ویژهٔ HOOKED می‌تواند برای اشاره به بافتی که این مرحله را فعال کرده است، استفاده شود.
SAVE <name>
نام بافتی را تعیین می‌کند که نتیجهٔ این مرحله باید در آن ذخیره شود. به صورت پیش‌فرض، این روی نام ویژهٔ HOOKED تنظیم شده است که اثر آن بازنویسی بافت قلاب‌شده است.
WIDTH <szexpr>, HEIGHT <szexpr>
اندازهٔ بافت حاصل را برای این مرحله مشخص می‌کند. szexpr به یک عبارت در نمادگذاری معکوس لهستانی (RPN) اشاره دارد که از عملگرهای + - * / > < !، مقادیر ممیز شناور، و ارجاع به اندازه‌های بافت‌های موجود (مانند MAIN.width یا CHROMA.height)، OUTPUT، یا NATIVE_CROPPED (اندازهٔ یک بافت ورودی برش‌خورده پس از pan-and-scan، video-align-x/y، video-pan-x/y و غیره و احتمالاً از پیش مقیاس‌بندی‌شده) استفاده می‌کند. به طور پیش‌فرض، این مقادیر به ترتیب روی HOOKED.w و HOOKED.h تنظیم شده‌اند.
WHEN <szexpr>
شرطی را مشخص می‌کند که برای ارزیابی شدن این مرحله از سایه‌زن، باید برقرار (غیر صفر) باشد. در صورت عدم برقراری، در سکوت نادیده گرفته می‌شود. (توجه داشته باشید که یک مرحله از سایه‌زن مانند این که به یک نقطهٔ قلاب اختیاری وابستگی دارد، همچنان می‌تواند باعث ذخیره شدن آن نقطهٔ قلاب شود که بار پردازشی اندکی به همراه دارد)
OFFSET <ox oy | ALIGN>
نشان‌دهندهٔ جابه‌جایی پیکسلی (offset) ایجادشده توسط این مرحله است. این جابه‌جایی‌های پیکسلی انباشته شده و در مرحلهٔ مقیاس‌بندی بعدی (cscale یا scale) تصحیح می‌شوند. مقادیر پیش‌فرض 0 0 هستند که متناظر با عدم جابه‌جایی است. توجه داشته باشید که در صورت عدم بازنویسی بافت قلاب‌شده، این جابه‌جایی‌ها نادیده گرفته می‌شوند.
مقدار ویژهٔ ALIGN تلاش می‌کند تا جابه‌جایی موجود HOOKED را از طریق هم‌تراز کردن آن با مرجع تصحیح کند. این کار مستلزم آن است که HOOKED قابلیت تغییر اندازه داشته باشد (به پایین مراجعه کنید). این قابلیت با سایه‌زن قطعه‌ای (fragment shader) به صورت شفاف کار می‌کند. برای سایه‌زن محاسباتی (compute shader)، ماکروی از پیش تعریف‌شدهٔ texmap جهت مدیریت نگاشت مختصات الزامی است.
COMPONENTS <n>
مشخص می‌کند که چند مؤلفه از خروجی این مرحله مرتبط بوده و باید در بافت ذخیره شوند، حداکثر تا ۴ (rgba). به طور پیش‌فرض، این مقدار برابر با تعداد مؤلفه‌ها در HOOKED است.
COMPUTE <bw> <bh> [<tw> <th>]
مشخص می‌کند که این سایه‌زن باید به عنوان یک سایه‌زن محاسباتی (compute shader)، با اندازهٔ بلوک bw و bh رفتار شود. سایه‌زن محاسباتی با هر تعداد بلوکی که برای کاشی‌کاری کامل روی خروجی لازم باشد، اعزام (dispatch) می‌شود. در هر بلوک، tw*th رشته (thread) وجود خواهد داشت که یک گروه کاری (work group) واحد را تشکیل می‌دهند. به عبارت دیگر: tw و th اندازهٔ گروه کاری را مشخص می‌کنند که می‌تواند با اندازهٔ بلوک متفاوت باشد. بنابراین برای مثال، یک سایه‌زن محاسباتی با bw, bh = 32 و tw, th = 8 که روی بافتی با ابعاد 500x500 اجرا می‌شود، ۱۶x۱۶ بلوک (گرد شده به بالا) اعزام می‌کند که هر کدام دارای ۸x۸ رشته هستند.
سایه‌زن‌های محاسباتی در mpv کمی متفاوت از سایه‌زن‌های قطعه‌ای عمل می‌کنند. به جای تعریف یک vec4 hook که یک نمونهٔ خروجی تولید می‌کند، مستقیماً یک void hook تعریف می‌کنید که با استفاده از imageStore در یک واحد تصویر فقط‌نوشتنی ثابت به نام out_image (که توسط mpv متصل شده است) می‌نویسد. برای کمک به تبدیل مختصات بافت در نبود رأس‌ها (vertices)، mpv یک تابع ویژه به نام NAME_map(id) فراهم می‌کند تا از فضای تکسل تصویر خروجی به مختصات بافت برای تمام بافت‌های متصل‌شده نگاشت انجام دهد. به‌ویژه، NAME_pos معادل NAME_map(gl_GlobalInvocationID) است، هرچند استفاده از این تنها در صورتی واقعاً منطقی است که (tw,th) == (bw,bh) باشد.
168u
هر بافت متصل‌شدهٔ mpv (از طریق BIND) تعاریف زیر را در دسترس آن مرحله از سایه‌زن قرار می‌دهد، که در آن NAME نام بافت پیوند داده‌شده است:
7.0
vec4 NAME_tex(vec2 pos)
تابع نمونه‌برداری برای دسترسی به بافت در یک نقطهٔ معین (در فضای مختصات بافت، بازهٔ [0,1]). این تابع تبدیل‌های نرمال‌سازی لازم را انجام می‌دهد.
vec4 NAME_texOff(vec2 offset)
نمونه‌برداری از بافت در یک جابه‌جایی (offset) معین بر حسب پیکسل. این تابع مانند NAME_tex عمل می‌کند اما علاوه بر آن، چرخش‌های لازم را نیز اعمال می‌کند، به طوری که نمونه‌برداری در مثلاً vec2(-1,0) همیشه یک پیکسل به سمت چپ باشد.
vec2 NAME_pos
مختصات محلی بافت برای آن بافت، در بازهٔ [0,1].
vec2 NAME_size
اندازهٔ (چرخانده‌شدهٔ) بافت بر حسب پیکسل..TP
mat2 NAME_rot
ماتریس چرخش مرتبط با این بافت. (فضای پیکسل را به مختصات بافت می‌چرخاند)
vec2 NAME_pt
اندازه (نچرخیده) یک تک‌پیکسل، در بازه [0,1].
float NAME_mul
ضریبی که به منظور نرمال‌سازی محتوای بافت به بازه [0,1]، باید در آن ضرب شود.
sampler NAME_raw
خود بافت خام متصل‌شده (bound). باید از استفاده از این مورد اجتناب شود مگر آنکه کاملاً ضروری باشد.
168u
به‌طور معمول، کاربران باید از NAME_tex یا NAME_texOff برای خواندن از بافت استفاده کنند. با این حال برای برخی شیدرها، از نظر کارایی ممکن است نمونه‌برداری سفارشی از NAME_raw بهتر باشد، که در این حالت باید دقت شود تا NAME_mul و NAME_rot رعایت شوند.
علاوه بر این پارامترها، متغیرهای یکنواخت (uniforms) زیر نیز به‌صورت سراسری در دسترس هستند:
7.0
float random
یک عدد تصادفی در بازه [0-1]، متفاوت در هر فریم.
int frame
شمارش ساده‌ای از فریم‌های رندرشده؛ به ازای هر فریم یکی افزایش می‌یابد و هرگز بازنشانی نمی‌شود (صرف‌نظر از پرش‌ها یا seekها).
vec2 input_size
اندازه تصویر ورودی بر حسب پیکسل (احتمالاً برش‌خورده و از پیش مقیاس‌بندی‌شده).
vec2 target_size
اندازه بخش مرئی تصویر مقیاس‌بندی‌شده (و احتمالاً برش‌خورده) بر حسب پیکسل.
vec2 tex_offset
آفست بافت که توسط شیدرهای کاربر یا گزینه‌هایی مانند panscan، video-align-x/y و video-pan-x/y ایجاد می‌شود.
168u
در لایه درونی، vo_gpu ممکن است هر تعدادی از بافت‌های زیر را ایجاد کند. هر زمان که یک بافت توسط vo_gpu رندر و ذخیره شود، تمام گذارهایی (passes) که به آن متصل شده‌اند (hooked)، به ترتیبی که توسط کاربر اضافه شده‌اند اجرا خواهند شد. این فهرستی از نقاط اتصال (hook points) مجاز است:
7.0
RGB, LUMA, CHROMA, ALPHA, XYZ (resizable)
صفحه‌های مبدأ (خام). فعال‌شدن هر یک از این‌ها به قالب تصویر مبدأ بستگی دارد.
CHROMA_SCALED, ALPHA_SCALED (fixed)
صفحه‌های مبدأ (بزرگ‌نمایی‌شده). این موارد فقط روی محتوای زیرنمونه‌برداری‌شده (subsampled) فعال می‌شوند.
NATIVE (resizable)
تصویر ترکیبی، در فضای رنگ مبدأ، قبل از تبدیل به RGB.
MAINPRESUB (resizable)
تصویر، پس از تبدیل به RGB، اما پیش از اعمال --blend-subtitles=video.
نکته:
7.0
3.5
با --vo=gpu، مراحل شیدر MAIN و MAINPRESUB مجزا هستند؛ این امر امکان رندر لایه‌های روکش (overlays) را مستقیماً روی مرحله ویدیوی پیش‌مقیاس‌بندی‌شده فراهم می‌کند. --vo=gpu-next از این قابلیت پشتیبانی نمی‌کند و به همین دلیل مرحله شیدر MAINPRESUB در آن وجود ندارد. ارجاع به این نام در شیدرها همچنان معتبر است، اما دقیقاً مشابه با MAIN مدیریت می‌شود.
168u
168u
MAIN (resizable)
تصویر اصلی، پس از تبدیل به RGB اما قبل از بزرگ‌نمایی (upscaling).
LINEAR (fixed)
تصویر در نور خطی (linear light)، قبل از مقیاس‌بندی. این مورد فقط زمانی فعال می‌شود که --linear-upscaling، --linear-downscaling یا --sigmoid-upscaling فعال باشند.
SIGMOID (fixed)
نور سیگموئیدی‌شده، قبل از مقیاس‌بندی. این مورد فقط زمانی فعال می‌شود که --sigmoid-upscaling فعال باشد.
PREKERNEL (fixed)
تصویر بلافاصله قبل از اجرای هسته مقیاس‌بندی (scaler kernel).
POSTKERNEL (fixed)
تصویر بلافاصله پس از اجرای هسته مقیاس‌بندی (scaler kernel).
SCALED (fixed)
تصویر نهایی بزرگ‌نمایی‌شده، قبل از مدیریت رنگ.
OUTPUT (fixed)
تصویر خروجی نهایی، بعد از مدیریت رنگ اما قبل از ترام‌ریزی (dithering) و ترسیم روی صفحه نمایش.
168u
تنها بافت‌های علامت‌گذاری‌شده با resizable می‌توانند توسط گذار (pass) دگرگون شوند. هنگام رونویسی بافتی که به صورت fixed مشخص شده است، مقادیر WIDTH، HEIGHT و OFFSET باید در مقادیر پیش‌فرض خود باقی بمانند.
--glsl-shader=<file>
نام مستعار فقط برای خط فرمان/فایل پیکربندی برای --glsl-shaders-append.
--glsl-shader-opts=param1=value1,param2=value2,...
گزینه‌های مورد استفاده برای پارامترهای قابل تنظیم شیدر را مشخص می‌کند. می‌توانید با افزودن پیشوند / به نام شیدر، شیدرهای مشخصی را هدف قرار دهید، مانند shader/param=value. بدون پیشوند، پارامترها بر روی تمامی شیدرها اعمال می‌شوند. نام شیدر همان بخش اصلی نام فایل شیدر بدون پسوند آن است. (فقط در --vo=gpu-next)
در صورتی که شیدر درخواست کند، برخی پارامترها به‌طور خودکار مقداردهی می‌شوند. در حال حاضر پارامترهای زیر در دسترس هستند:
7.0
PTS
مقدار PTS فریم جاری بر حسب ثانیه.
chroma_offset_x
آفست کروما نسبت به صفحه مرجع در جهت x.
chroma_offset_y
آفست کروما نسبت به صفحه مرجع در جهت y.
min_luma
حداقل مقدار درخشندگی (بر حسب cd/m²).
max_luma
حداکثر مقدار درخشندگی (بر حسب cd/m²).
max_cll
حداکثر سطح روشنایی محتوا (بر حسب cd/m²).
max_fall
حداکثر میانگین روشنایی فریم (بر حسب cd/m²).
scene_max_r
حداکثر سطح روشنایی صحنه در کانال قرمز (بر حسب cd/m²).
scene_max_g
حداکثر سطح روشنایی صحنه در کانال سبز (بر حسب cd/m²).
scene_max_b
حداکثر سطح روشنایی صحنه در کانال آبی (بر حسب cd/m²).
scene_avg
میانگین سطح روشنایی صحنه (بر حسب cd/m²).
max_pq_y
حداکثر درخشندگی PQ (در مقیاس PQ، بین 0-1).
avg_pq_y
میانگین درخشندگی PQ (در مقیاس PQ، بین 0-1).
168u
--deband
فعال‌سازی الگوریتم نوارزدایی (debanding). این گزینه میزان نواری‌شدن (banding)، بلوک‌بندی و سایر مصنوعات کوانتش قابل مشاهده را تا حد زیادی کاهش می‌دهد، البته به قیمت تاری بسیار جزئی در برخی از ریزترین جزئیات. در عمل، این گزینه تقریباً همیشه یک ارتقاء به حساب می‌آید - تنها دلیل غیرفعال کردن آن بهبود کارایی است.
--deband-iterations=<0..16>
تعداد مراحل نوارزدایی برای اجرا در هر نمونه. هر مرحله میزان نواری‌شدن را کمی بیشتر کاهش می‌دهد، اما محاسبه آن زمان می‌برد. توجه داشته باشید که تأثیر هر مرحله بسیار سریع کاهش می‌یابد، بنابراین مقادیر بالا (>4) عملاً بی‌فایده هستند. (پیش‌فرض: 1)
--deband-threshold=<0..4096>
آستانه قطع فیلتر نوارزدایی. مقادیر بالاتر شدت نوارزدایی را به‌طور چشمگیری افزایش می‌دهند اما به تدریج جزئیات تصویر را محو می‌کنند. (پیش‌فرض: 48)
--deband-range=<1..64>
شعاع اولیه فیلتر نوارزدایی. شعاع در هر تکرار به‌صورت خطی افزایش می‌یابد. شعاع بالاتر گرادیان‌های بیشتری را پیدا می‌کند، اما شعاع کمتر با شدت بیشتری عمل هموارسازی را انجام می‌دهد. (پیش‌فرض: 16).sp
اگر مقدار --deband-iterations را افزایش دهید، احتمالاً برای جبران باید
این مقدار را کاهش دهید.
--deband-grain=<0..4096>
مقداری نویز اضافی به تصویر اضافه می‌کند. این کار به پوشش مصنوعات (artifacts) باقی‌مانده
از کوانتش کمک شایانی می‌کند. مقادیر بالاتر نویز بیشتری اضافه می‌کنند. (پیش‌فرض: 32)
--corner-rounding=<0..1>
اگر روی مقداری بیشتر از 0.0 تنظیم شود، خروجی با گوشه‌های گرد رندر می‌شود،
گویی یک ماسک شفافیت آلفا اعمال شده است. این مقدار بیانگر کسر نسبی از طول
لبه برای گرد کردن است - مقدار 1.0 گوشه‌ها را تا جای ممکن گرد می‌کند. (تنها برای --vo=gpu-next)
--sharpen=<value>
اگر روی مقداری غیر از 0 تنظیم شود، یک فیلتر unsharp masking را فعال می‌کند.
مقادیر مثبت تصویر را واضح‌تر (sharpen) می‌کنند (اما ringing و aliasing بیشتری اضافه می‌کنند).
مقادیر منفی تصویر را تار (blur) می‌کنند. اگر پردازنده گرافیکی (GPU) شما به اندازه کافی قدرتمند است،
جایگزین‌هایی مانند فیلتر مقیاس‌بندی ewa_lanczossharp یا گزینه
--scale-blur را در نظر بگیرید. (تنها برای --vo=gpu)
--opengl-glfinish
پیش از تعویض بافرها (buffer swap)، تابع glFinish() را فراخوانی می‌کند (پیش‌فرض: غیرفعال).
کندتر است، اما ممکن است هنگام افت فریم (framedropping) نتایج بهتری بدهد. می‌تواند کارایی
را کاملاً خراب کند. جزئیات این مورد کاملاً به درایور OpenGL بستگی دارد.
--opengl-waitvsync
پس از هر بار تعویض بافر، تابع glXWaitVideoSyncSGI را فراخوانی می‌کند (پیش‌فرض: غیرفعال).
این ممکن است به دقت زمان‌بندی ویدیو و افت فریم کمک کند یا نکند. این احتمال
وجود دارد که خروجی ویدیو را کندتر کند، یا اصلاً هیچ تاثیری نداشته باشد.
تنها برای X11/GLX.
--opengl-dwmflush=<no|windowed|yes|auto>
(تنها در Windows)
پس از تعویض بافرها در ویندوز، تابع DwmFlush را فراخوانی می‌کند (پیش‌فرض: auto). همچنین
SwapInterval(0) را برای نادیده گرفتن زمان‌بندی OpenGL تنظیم می‌کند. مقادیر عبارتند از:
no (غیرفعال)، windowed (تنها در حالت پنجره‌ای)، yes (همچنین در حالت تمام‌صفحه).
مقدار auto تلاش خواهد کرد تا فعال بودن compositor را تشخیص دهد،
و تنها در صورتی که فعال به نظر برسد DwmFlush را فراخوانی می‌کند.
این گزینه ممکن است به دستیابی به فواصل فریم سازگارتر، به‌ویژه با کلیپ‌های با fps بالا کمک کند -
که ممکن است فریم‌های افتاده را نیز کاهش دهد. به طور معمول، مقدار windowed باید
کافی باشد، زیرا حالت تمام‌صفحه ممکن است DWM را دور بزند.
--angle-d3d11-feature-level=<11_0|10_1|10_0|9_3>
هنگام استفاده از بک‌اند ANGLE با D3D11، سطح قابلیت (feature level) خاصی را انتخاب می‌کند.
به طور پیش‌فرض، بالاترین سطح قابلیت در دسترس استفاده می‌شود. از این گزینه می‌توان
برای انتخاب سطح قابلیت پایین‌تر استفاده کرد که عمدتاً برای اشکال‌زدایی مفید است.
توجه داشته باشید که OpenGL ES 3.0 تنها در سطح قابلیت 10_1 یا بالاتر پشتیبانی می‌شود.
بیشتر قابلیت‌های پیشرفته OpenGL در سطوح قابلیت پایین‌تر کار نخواهند کرد
(مشابه --gpu-dumb-mode).
تنها در Windows با ANGLE.
--angle-d3d11-warp=<yes|no|auto>
هنگام استفاده از بک‌اند ANGLE با D3D11، از WARP (پلتفرم شطرنجی‌سازی پیشرفته ویندوز - Windows Advanced Rasterization Platform)
استفاده می‌کند (پیش‌فرض: auto). این یک رندرکننده نرم‌افزاری با کارایی بالا است. به طور پیش‌فرض،
زمانی استفاده می‌شود که سخت‌افزار Direct3D از سطح قابلیت Direct3D 11 9_3 پشتیبانی نکند.
اگرچه قابلیت‌های پیشرفته OpenGL با WARP کار خواهند کرد، اما می‌توانند بسیار کند باشند.
تنها در Windows با ANGLE.
--angle-egl-windowing=<yes|no|auto>
از توابع پنجره‌سازی EGL داخلی ANGLE برای ایجاد یک swap chain استفاده می‌کند
(پیش‌فرض: auto). اگر این گزینه روی no تنظیم شود و رندرکننده D3D11 در حال استفاده باشد،
swap chain داخلی ANGLE استفاده نخواهد شد و در عوض یک swap chain سفارشی که
برای رندر ویدیو بهینه‌سازی شده ایجاد می‌شود. اگر روی auto تنظیم شود، یک swap chain سفارشی
برای D3D11 و swap chain داخلی برای D3D9 استفاده خواهد شد. این گزینه عمدتاً برای اهداف اشکال‌زدایی است،
در صورتی که swap chain سفارشی کارایی ضعیفی داشته باشد یا کار نکند.
اگر روی yes تنظیم شود، گزینه --angle-flip هیچ تاثیری نخواهد داشت.
تنها در Windows با ANGLE.
--angle-flip=<yes|no>
مدل نمایش flip-model را فعال می‌کند، که با اشتراک‌گذاری سطوح با DWM
از کپی غیرضروری backbuffer جلوگیری می‌کند (پیش‌فرض: yes). این ممکن است
در درایورهای قدیمی‌تر باعث مشکلات کارایی شود. اگر نمایش flip-model پشتیبانی نشود
(برای مثال، در Windows 7 بدون به‌روزرسانی پلتفرم)، mpv به طور
خودکار به مدل نمایش قدیمی‌تر bitblt بازمی‌گردد.
اگر روی no تنظیم شود، گزینه --angle-swapchain-length هیچ
تاثیری نخواهد داشت.
تنها در Windows با ANGLE.
--angle-renderer=<d3d9|d3d11|auto>
هنگام استفاده از بک‌اند ANGLE، رندرکننده خاصی را تحمیل می‌کند (پیش‌فرض: auto). در
حالت auto، برای سیستم‌هایی که از سطح قابلیت Direct3D 11 9_3 یا بالاتر پشتیبانی
می‌کنند D3D11 و در غیر این صورت D3D9 را انتخاب می‌کند. این گزینه عمدتاً برای
اهداف اشکال‌زدایی است. معمولاً دلیلی برای تحمیل یک رندرکننده خاص وجود ندارد،
اگرچه --angle-renderer=d3d9 ممکن است در سخت‌افزارهای قدیمی کارایی
کمی بهتری ارائه دهد. توجه داشته باشید که رندرکننده D3D9 تنها از OpenGL ES 2.0 پشتیبانی
می‌کند، بنابراین در صورت انتخاب این رندرکننده، اکثر قابلیت‌های پیشرفته OpenGL کار نخواهند کرد
(مشابه --gpu-dumb-mode).
تنها در Windows با ANGLE.
--macos-force-dedicated-gpu=<yes|no>
سوئیچ خودکار گرافیک را غیرفعال کرده و استفاده از پردازنده گرافیکی اختصاصی (dedicated GPU) را تحمیل می‌کند.
(پیش‌فرض: no)
تنها در macOS.
--cocoa-cb-sw-renderer=<yes|no|auto>
هنگام استفاده از cocoa-cb، از Apple Software Renderer استفاده می‌کند (پیش‌فرض: auto). اگر روی
no تنظیم شود، رندرکننده نرم‌افزاری هرگز استفاده نمی‌شود و در صورت عدم امکان ایجاد قالب
پیکسل معمول با شکست مواجه می‌شود، yes همیشه و فقط از رندرکننده نرم‌افزاری استفاده می‌کند،
و auto تنها در صورتی به رندرکننده نرم‌افزاری بازمی‌گردد که قالب پیکسل معمول قابل ایجاد نباشد.
تنها در macOS و cocoa-cb.
--cocoa-cb-10bit-context=<yes|no>
یک قالب پیکسل با قابلیت 10 بیت برای ایجاد کانتکست (context) می‌سازد (پیش‌فرض: yes).
به جای بافر فریم عدد صحیح 8 بیتی، یک بافر فریم 16 بیتی ممیز شناور نیمه‌دقیق (half-float)
درخواست می‌شود.
تنها در macOS و cocoa-cb.
--cocoa-cb-output-csp=<csp>
فضای رنگی لایه را برای فعال‌سازی تبدیل رنگ macOS تنظیم می‌کند. بسته به فضای
رنگی استفاده شده، پشتیبانی سیستم از EDR (HDR) فعال خواهد شد. برای دستیابی به
نتایج درست، این گزینه باید روی مشخصه‌های انتقال/رنگ‌های اصلی (primaries) هدف VO تنظیم شود.
توصیه می‌شود از این سوئیچ همراه با --target-trc و --target-prim استفاده شود.
<csp> می‌تواند یکی از موارد زیر باشد:
7.0
auto
فضای رنگی را روی نمایه icc نمایشگر تنظیم می‌کند (پیش‌فرض).
display-p3
رنگ‌های اصلی DCI P3، نقطه سفید D65 و تابع انتقال sRGB.
display-p3-hlg
رنگ‌های اصلی DCI P3، نقطه سفید D65 و تابع انتقال Hybrid Log-Gamma (HLG).
display-p3-pq
رنگ‌های اصلی DCI P3، نقطه سفید D65 و تابع انتقال Perceptual Quantizer (PQ).
display-p3-linear
رنگ‌های اصلی DCI P3، نقطه سفید D65 و تابع انتقال خطی.
dci-p3
فضای رنگی DCI P3.
bt.2020
فضای رنگی ITU BT.2020.
bt.2020-linear
فضای رنگی ITU BT.2020 و تابع انتقال خطی.
bt.2100-hlg
ITU BT.2100 و تابع انتقال Hybrid Log-Gamma (HLG).
bt.2100-pq
ITU BT.2100 و تابع انتقال Perceptual Quantizer (PQ).
bt.709
فضای رنگی ITU BT.709.
srgb
رنگ‌سنجی (colorimetry) sRGB و تابع انتقال غیرخطی.
srgb-linear
مشابه sRGB اما با تابع انتقال خطی.
rgb-linear
RGB و تابع انتقال خطی.
adobe
فضای رنگی Adobe RGB (1998).
168u
فقط در macOS و cocoa-cb.
--macos-title-bar-appearance=<appearance>
ظاهر نوار عنوان را تنظیم می‌کند (پیش‌فرض: auto). تمام ترکیب‌های ظاهر و
جنس‌های --macos-title-bar-material معنادار یا یکتا نیستند.
ظواهری که توسط نسخه فعلی macOS شما پشتیبانی نمی‌شوند، به مقدار پیش‌فرض
بازمی‌گردند.
فقط در macOS
<appearance> می‌تواند یکی از موارد زیر باشد:
7.0
auto
تنظیمات سیستم را شناسایی کرده و ظاهر نوار عنوان را متناسب با آن تنظیم
می‌کند. در macOS 10.14 تغییرات زمان اجرا را نیز شناسایی می‌کند.
aqua
ظاهر استاندارد روشن (Light) در macOS.
darkAqua
ظاهر استاندارد تیره (Dark) در macOS. (macOS 10.14+)
vibrantLight
ظاهر پویایی روشن (Light vibrancy).
vibrantDark
ظاهر پویایی تیره (Dark vibrancy).
aquaHighContrast
ظاهر روشن با کنتراست بالا برای دسترسی‌پذیری (Accessibility). (macOS 10.14+)
darkAquaHighContrast
ظاهر تیره با کنتراست بالا برای دسترسی‌پذیری. (macOS 10.14+)
vibrantLightHighContrast
ظاهر پویایی روشن با کنتراست بالا برای دسترسی‌پذیری.
(macOS 10.14+)
vibrantDarkHighContrast
ظاهر پویایی تیره با کنتراست بالا برای دسترسی‌پذیری.
(macOS 10.14+)
168u
--macos-title-bar-material=<material>
جنس نوار عنوان را تنظیم می‌کند (پیش‌فرض: titlebar). تمام جنس‌های منسوخ‌شده
نباید در macOS 10.14+ استفاده شوند زیرا عملکرد آن‌ها تضمین نشده است. تمام
ترکیب‌های جنس و ظواهر --macos-title-bar-appearance معنادار یا
یکتا نیستند. جنس‌هایی که توسط نسخه فعلی macOS شما پشتیبانی نمی‌شوند، به
مقدار پیش‌فرض بازمی‌گردند.
فقط در macOS
<material> می‌تواند یکی از موارد زیر باشد:
7.0
titlebar
جنس نوار عنوان استاندارد macOS.
selection
جنس انتخاب (selection) استاندارد macOS.
menu
جنس منوی استاندارد macOS. (macOS 10.11+)
popover
جنس پنجره بازشو (popover) استاندارد macOS. (macOS 10.11+)
sidebar
جنس نوار کناری استاندارد macOS. (macOS 10.11+)
headerView
جنس سربرگ (header view) استاندارد macOS.
(macOS 10.14+)
sheet
جنس برگه (sheet) استاندارد macOS. (macOS 10.14+)
windowBackground
جنس پس‌زمینه پنجره استاندارد macOS.
(macOS 10.14+)
hudWindow
جنس پنجره hudWindow استاندارد macOS. (macOS 10.14+)
fullScreen
جنس تمام‌صفحه استاندارد macOS.
(macOS 10.14+)
toolTip
جنس راهنمای متنی (tool tip) استاندارد macOS. (macOS 10.14+)
contentBackground
جنس پس‌زمینه محتوا استاندارد macOS.
(macOS 10.14+)
underWindowBackground
جنس زیر پس‌زمینه پنجره استاندارد macOS.
(macOS 10.14+)
underPageBackground
جنس زیر پس‌زمینه برگه استاندارد macOS.
(منسوخ‌شده در macOS 10.14+)
dark
جنس تیره استاندارد macOS.
(منسوخ‌شده در macOS 10.14+)
light
جنس روشن استاندارد macOS.
(macOS 10.14+)
mediumLight
جنس نیمه‌روشن (mediumLight) استاندارد macOS.
(macOS 10.11+، منسوخ‌شده در macOS 10.14+)
ultraDark
جنس خیلی تیره (ultraDark) استاندارد macOS.
(macOS 10.11+، منسوخ‌شده در macOS 10.14+)
168u
--macos-title-bar-color=<color>
رنگ نوار عنوان را تنظیم می‌کند (پیش‌فرض: کاملاً شفاف). تحت تأثیر
--macos-title-bar-appearance و
--macos-title-bar-material قرار می‌گیرد.
برای ساختار نحوی رنگ به --sub-color مراجعه کنید.
--macos-fs-animation-duration=<default|0-1000>
مدت زمان پویانمایی تغییر اندازه در حالت تمام‌صفحه را بر حسب میلی‌ثانیه تنظیم
می‌کند (پیش‌فرض: default). مقدار پیش‌فرض کمی کمتر از مدت زمان پویانمایی
سیستم (500ms) است تا از بروز برخی مشکلات هنگام پایان هم‌زمان یک پویانمایی
ناهمگام با پایان پویانمایی سراسری تمام‌صفحه سیستم جلوگیری شود. تنظیم هر مقداری
بیشتر از 500ms تنها باعث لغو زودهنگام پویانمایی تغییر اندازه پس از پایان
پویانمایی سراسری سیستم می‌شود. حد بالا همچنان روی 1000ms تنظیم شده است چرا که
ممکن است اپل یا کاربر پیش‌فرض‌های سیستم را تغییر دهند. با این حال مقادیر بیشتر از
1000ms بیش از حد طولانی به نظر می‌رسند و در هر صورت نباید تنظیم شوند.
(فقط در macOS)
--macos-app-activation-policy=<regular|accessory|prohibited>
سیاست فعال‌سازی برنامه را تغییر می‌دهد. با مقدار accessory می‌توان آیکون mpv را
در Dock پنهان کرد. (پیش‌فرض: regular)
فقط در macOS.
--macos-geometry-calculation=<visible|whole>
مستطیلی را که برای محاسبه موقعیت و اندازه پنجره روی صفحه نمایش استفاده می‌شود
تغییر می‌دهد (پیش‌فرض: visible). مقدار visible نوار منو و Dock را در نظر
می‌گیرد و پنجره فقط درون مستطیل کادر قابل مشاهده صفحه قرار می‌گیرد یا اندازه آن تعیین
می‌شود، مقدار whole کل مستطیل کادر صفحه را در نظر گرفته و نوار منو و Dock را
نادیده می‌گیرد. سایر محدودیت‌های قبلی همچنان اعمال می‌شوند؛ مانند اینکه پنجره
نمی‌تواند روی نوار منو قرار گیرد و غیره.
فقط در macOS.
--macos-render-timer=<timer>
حالت همگام‌سازی رندر فریم‌ها با نرخ نوسازی عمودی نمایشگر را تنظیم می‌کند
(پیش‌فرض: callback).
فقط در macOS و Vulkan (macvk).
<timer> می‌تواند یکی از موارد زیر باشد:
7.0
callback
با کال‌بک CVDisplayLink همگام‌سازی می‌کند
precise
با زمان نوسازی عمودی بعدی نمایشگر که توسط اطلاعات ارائه‌شده کال‌بک
CVDisplayLink گزارش شده است همگام‌سازی می‌کند
system
بدون همگام‌سازی دستی، به مکانیزم لایه و drawable بعدی وابسته است
feedback
مشابه precise است اما از سازوکار هسته بازخورد ارائه (presentation feedback)
استفاده می‌کند
--macos-menu-shortcuts=<yes|no>
میانبرهای پیش‌فرض نوار منو را فعال می‌کند (پیش‌فرض: yes). میانبرهای نوار منو همواره بر هر میانبر دیگری اولویت دارند، به هسته mpv منتقل نمی‌شوند و نمی‌توان از آن‌ها در فایل‌های پیکربندی مانند input.conf یا اتصالات اسکریپت استفاده کرد.
--macos-bundle-path=path1,path2,...
بسته‌های برنامه (App Bundles) در محیط شل اختصاصی خود که با محیط ترمینال متفاوت است عمل می‌کنند. متغیر PATH پیش‌فرض برای همه Bundleها /usr/bin:/bin:/usr/sbin:/sbin است. به همین دلیل mpv نمی‌تواند باینری‌های نصب‌شده توسط مدیر بسته را که ممکن است برای نمونه در اسکریپت‌ها استفاده شوند، پیدا کند. این گزینه تمام مسیرهای داده‌شده را به ابتدای PATH پیش‌فرض Bundle اضافه می‌کند.
مقدار پیش‌فرض به ترتیب زیر است:
7.0
/usr/local/bin
مسیر نصب homebrew (Intel)
/usr/local/sbin
مسیر نصب homebrew (Intel)
/opt/local/bin
مسیر نصب MacPorts
/opt/local/sbin
مسیر نصب MacPorts
/opt/homebrew/bin
مسیر نصب homebrew (ARM)
/opt/homebrew/sbin
مسیر نصب homebrew (ARM)
168u
--android-surface-size=<WxH>
ابعاد سطح رندرینگ مورد استفاده توسط بافتار gpu اندروید را تنظیم می‌کند.
در صورتی که ابعاد در زمان اجرا تغییر کند (برای نمونه، چرخاندن دستگاه)، باید توسط برنامه جاسازی‌کننده از طریق بازخورد (callback) surfaceChanged تنظیم شود.
تنها در اندروید همراه با --gpu-context=android.
--d3d11-composition-size=<WxH>
اندازه خروجی را برای حالت ترکیب (composition mode) در d3d11 تنظیم می‌کند.
هنگام استفاده از حالت ترکیب، پنجره‌ای وجود ندارد و اندازه خروجی باید توسط برنامه جاسازی‌کننده تنظیم شود.
تنها در ویندوز همراه با --gpu-context=d3d11 و --d3d11-output-mode=composition.
--gpu-sw
حتی در صورت شناسایی یک رندرکننده نرم‌افزاری ادامه می‌دهد. این فقط با پشتیبان‌های OpenGL/Vulkan کار می‌کند. برای d3d11، گزینه --d3d11-warp را ببینید.
--gpu-context=<context1,context2,...[,]>
فهرستی اولویت‌بندی‌شده از بافتارهای GPU برای استفاده را مشخص می‌کند.
مقدار auto (پیش‌فرض) بافتار GPU را بر اساس ترتیب کاوش خودکار پیش‌فرض انتخاب می‌کند. همچنین می‌توانید help را وارد کنید تا فهرست کاملی از پشتیبان‌های کامپایل‌شده (مرتب‌شده بر اساس ترتیب کاوش خودکار پیش‌فرض) را دریافت نمایید.
توجه داشته باشید که بافتار GPU پیش‌فرض ممکن است تغییر کند و نباید به آن اتکا کرد. اگر نیاز به استفاده از بافتار GPU خاصی است، باید صراحتاً مشخص شود.
7.0
auto
انتخاب خودکار (پیش‌فرض). توجه داشته باشید که این بافتار باید به‌تنهایی استفاده شود و در فهرست اولویت شرکت نمی‌کند.
win
Win32/WGL
winvk
VK_KHR_win32_surface
angle
Direct3D11 از طریق لایه ترجمه OpenGL ES به نام ANGLE. این پشتیبان تقریباً از تمام امکاناتی که پشتیبان win فراهم می‌کند پشتیبانی می‌نماید (اگر ساخت ANGLE به‌اندازه کافی جدید باشد).
dxinterop (experimental)
Win32، استفاده از WGL برای رندر و Direct3D 9Ex برای نمایش. روی Nvidia و AMD کار می‌کند. تراشه‌های جدیدتر Intel با آخرین درایورها نیز ممکن است کار کنند.
d3d11
Win32، با رندر بومی Direct3D 11.
x11
X11/GLX (منسوخ/قدیمی، این روزها EGL ترجیح داده می‌شود)
x11vk
VK_KHR_xlib_surface
wayland
Wayland/EGL
waylandvk
VK_KHR_wayland_surface
drm
DRM/EGL
displayvk
VK_KHR_display. این پشتیبان تقریباً معادلِ Vulkan برای DRM/EGL است و امکان رندر مستقیم از طریق Vulkan را بدون نیاز به مدیر نمایش فراهم می‌سازد.
x11egl
X11/EGL
android
Android/EGL. نیازمند تنظیم --wid بر روی یک android.view.Surface است.
macvk
Vulkan در macOS با یک سطح metal از طریق یک لایه ترجمه (آزمایشی)
168u
این گزینه از نوع فهرست تنظیمات شیء است. برای جزئیات به «گزینه‌های فهرست» مراجعه کنید.
--gpu-api=<type1,type2,...[,]>
فهرستی اولویت‌بندی‌شده از APIهای گرافیکی قابل قبول را مشخص می‌کند.
7.0
auto
استفاده از هر API موجود (پیش‌فرض). توجه داشته باشید که GPU API پیش‌فرض استفاده‌شده برای این مقدار ممکن است تغییر کند و نباید به آن اتکا شود. اگر نیاز به استفاده از یک GPU API خاص است، باید صراحتاً مشخص گردد.
opengl
تنها اجازه استفاده از OpenGL (نیازمند OpenGL 2.1+ یا GLES 2.0+)
vulkan
تنها اجازه استفاده از Vulkan (نیازمند یک --spirv-compiler معتبر/کارآمد)
d3d11
تنها اجازه استفاده از --gpu-context=d3d11
168u
این گزینه از نوع فهرست تنظیمات شیء است. برای جزئیات به «گزینه‌های فهرست» مراجعه کنید.
--opengl-es=<mode>
کنترل می‌کند چه نوعی از بافتار OpenGL پذیرفته شود:
7.0
auto
اجازه به تمام انواع OpenGL (پیش‌فرض)
yes
تنها اجازه به GLES
no
تنها اجازه به desktop/core GL
168u
--fbo-format=<fmt>
قالب داخلی بافت‌های مورد استفاده برای FBOها را انتخاب می‌کند. این قالب می‌تواند بر کارایی و کیفیت خروجی ویدیو تأثیر بگذارد. fmt می‌تواند یکی از موارد زیر باشد:
rgb8, rgb10, rgb10_a2, rgb16, rgb16f, rgb32f, rgba12, rgba16, rgba16f, rgba16hf, rgba32f.
پیش‌فرض: auto، که ابتدا تلاش می‌کند از ممیز شناور ۱۶ بیتی (rgba16f, rgba16hf) استفاده کند، و در صورت در دسترس نبودن آن‌ها به rgba16 عقب‌نشینی می‌کند. در نهایت، اگر هیچ‌کدام از قالب‌های پیشین در دسترس نباشند، تلاش می‌کند از rgb10_a2 یا rgba8 استفاده کند.
--gamma-factor=<0.1..2.0>
یک ضریب گامای خام اضافی تعیین می‌کند (پیش‌فرض: 1.0). اگر گاما به روش‌های دیگری تنظیم شده باشد (مانند گزینه --gamma یا کلیدهای میانبر و ویژگی gamma)، این مقدار در مقدار دیگر گاما ضرب می‌شود.
--gamma-auto
به‌طور خودکار مقدار گاما را بسته به شرایط روشنایی محیط تصحیح می‌کند (افزایش گاما برای اتاق‌های روشن).
این گزینه منسوخ شده است و ممکن است در آینده حذف شود.
نکته: فقط روی macOS و همراه با --vo=gpu پیاده‌سازی شده است.
--image-lut=<file>
یک فایل سفارشی LUT (در قالب Adobe .cube) را مشخص می‌کند تا در حین رمزگشایی تصویر روی رنگ‌ها اعمال شود. تفسیر دقیق LUT به مقدار --image-lut-type بستگی دارد. (تنها برای --vo=gpu-next).TP
--image-lut-type=<value>
تفسیر مقادیر رنگ ورودی و خروجی به LUT مشخص‌شده در --image-lut را کنترل می‌کند. مقادیر معتبر عبارتند از:
7.0
auto
تفسیر LUT را به‌طور خودکار از متادیتای برچسب‌خورده انتخاب می‌کند و در غیر این صورت به native بازمی‌گردد. (پیش‌فرض)
native
روی محتوای خام تصویر در فضای رنگی بومی آن، پیش از رمزگشایی به RGB اعمال می‌شود. برای نمونه، برای یک تصویر HDR10، مقادیر YCbCr کدگذاری‌شده با PQ در محدوده 0.0 - 1.0 به آن داده می‌شود.
normalized
روی محتویات نرمال‌سازی‌شده تصویر RGB، پس از رمزگشایی از کدگذاری رنگی بومی آن اما پیش از خطی‌سازی اعمال می‌شود.
conversion
رمزگشایی رنگ را کاملاً جایگزین می‌کند. یک LUT از این نوع باید فضای رنگی بومی تصویر را دریافت کرده و RGB غیرخطی نرمال‌سازی‌شده خروجی دهد.
168u
--target-colorspace-hint=<auto|yes|no>
در صورت فعال بودن، متادیتای فضای رنگی خروجی روی swapchain تنظیم می‌شود؛ بسته به زمینه GPU و پلتفرم، این امر ممکن است بر کامپوزیتور/نمایشگر تأثیر بگذارد. این گزینه می‌تواند برای "HDR passthrough" و تنظیم فضای رنگی خروجی برای محتوای SDR استفاده شود. در حالت auto، فضای رنگی هدف تنها در صورتی تنظیم می‌شود که پارامترهای نمایشگر فعلی شناخته‌شده باشند. در حال حاضر، این ویژگی در زمینه‌های Wayland، D3D11 و winvk پشتیبانی می‌شود. گزینه yes همواره تلاش می‌کند فضای رنگی را تنظیم کند، که ممکن است برای تطابق با توانایی‌های نمایشگر خود نیاز به تنظیم گزینه‌های --target-* داشته باشید.
نیازمند یک درایور با قابلیت پشتیبانی و --vo=gpu-next است. (پیش‌فرض: auto)
نکته:
7.0
3.5
تضمینی نیست که متادیتای فضای رنگی هدف که به‌طور خودکار شناسایی شده همواره بهترین انتخاب باشد. این به کامپوزیتور، درایور و توانایی‌های نمایشگر شما بستگی دارد. با این حال در بیشتر موارد حالت auto باید به خوبی کار کند.
168u
168u
--target-colorspace-hint-mode=<target|source|source-dynamic>
انتخاب می‌کند که کدام متادیتا برای --target-colorspace-hint استفاده شود.
(فقط برای --vo=gpu-next)
7.0
target
از متادیتا بر پایه توانایی‌های واقعی نمایشگر هدف استفاده می‌کند. این حالت محتوای مبدأ را پیش از ارسال به خروجی، با نمایشگر هدف تطبیق می‌دهد.
نکته: رنگ‌های پایه (primaries) در HDR توسط گزینه --target-prim بازنویسی نمی‌شوند؛ این تنها بر کانتینر دربرگیرنده فضای رنگی اثر می‌گذارد. در صورت نیاز می‌توان از --target-gamut برای محدود کردن گاموت خروجی استفاده کرد.
source
از متادیتای محتوای مبدأ استفاده می‌کند. این همان حالت سنتی "HDR passthrough" (و همچنین SDR) است، که در آن فرض می‌شود کامپوزیتور و نمایشگر مستقیماً فضای رنگی را مدیریت کرده و هرگونه نگاشت لازم را انجام می‌دهند.
source-dynamic
همانند source است، اما به جای HDR10 ایستا از متادیتای پویای صحنه‌به‌صحنه استفاده می‌کند. این حالت آزمایشی است و به توانایی نمایشگر در واکنش نشان دادن به تغییرات متادیتا بستگی دارد. توجه داشته باشید که این گزینه متادیتای کامل HDR10+ یا Dolby Vision را ارسال نمی‌کند، بلکه از آن اطلاعات برای تولید HDR10 با مقادیر روشنایی (luminance) مجزا برای هر صحنه استفاده می‌کند.
168u
پیش‌فرض target است. اگر پارامترهای نمایشگر هدف در دسترس نباشند، به source بازمی‌گردد. توجه داشته باشید که این کار بر اساس مشخصات مجزا انجام می‌شود؛ یعنی برای مشخصات نامشخص، پارامترهای مبدأ را در هدف ادغام می‌کند، اگرچه عکس آن انجام نمی‌شود.
گزینه‌های --target-* متادیتا را در هر دو حالت بازنویسی می‌کنند.
نکته:
7.0
3.5
پروفایل ICC همواره نسبت به هر متادیتایی اولویت دارد.
168u
168u
نکته:
7.0
3.5
اکیداً توصیه می‌شود از --target-colorspace-hint=<auto|yes> استفاده کنید تا از تنظیم صحیح فضای رنگی خروجی مطمئن شوید. این امر برای تمام محتواهای غیر sRGB، حتی SDR، حیاتی است تا به کامپوزیتور، درایور و نمایشگر اجازه دهد سیگنال را به درستی تفسیر کنند.
متأسفانه، این کار به آن سادگی که به نظر می‌رسد نیست. اگرچه mpv پردازش رنگی با کیفیتی بالا انجام می‌دهد، اما ما نمی‌توانیم تضمین کنیم پس از خروج سیگنال از mpv چه اتفاقی خواهد افتاد. بنابراین، ممکن است برای اطمینان از خروجی مناسب نیاز به تنظیم گزینه‌های اضافی داشته باشید. وجود یک پیش‌فرض یکسان که برای همه مناسب باشد امکان‌پذیر نیست.
اکنون پس از بیان این مقدمه:
برای خروجی HDR، مقدار پیش‌فرض target باید به خوبی کار کند؛ این حالت بهترین پارامترهای HDR هدف و قالب سطح (surface format) را به‌طور خودکار استنتاج می‌کند. برای سازگاری، فرض می‌شود نمایشگرها در حالت HDR هستند، مگر اینکه خلاف آن گزارش شود (می‌توانید این را با --target-trc بازنویسی کنید). به این ترتیب متادیتای HDR تنظیم می‌شود و امیدواریم کامپوزیتور بقیه کارها را انجام دهد. اگر ورودی SDR باشد، به PQ تبدیل شده و پایه‌ها روی مقادیر مبدأ تنظیم می‌شوند.
برای خروجی SDR، در اهدافی که mpv نمی‌تواند تشخیص دهد که هدف HDR است یا SDR، می‌توانید از حالت source استفاده کنید. متادیتای تنظیم‌شده با فضای رنگی ورودی مطابقت خواهد داشت. در صورت وجود ورودی HDR، به‌صورت دست‌نخورده عبور داده می‌شود (passthrough). از طرف دیگر، می‌توانید از حالت target استفاده کرده و --target-trc را روی یک تابع انتقال SDR تنظیم کنید. به این ترتیب هر ورودی به SDR تبدیل خواهد شد.
از صفحه نمایش آمار (stats display) برای بررسی و تأیید تنظیمات فضای رنگی ورودی و خروجی استفاده کنید.
خلاصه (TL;DR): از --target-colorspace-hint=auto استفاده کنید و پارامترهای --target-* را برای تطابق با توانایی‌های نمایشگر هدف خود تغییر دهید، تا زمانی که بهترین ظاهر را برای شما داشته باشد. برای تنظیمات ویژه از پروفایل‌های خودکار شرطی استفاده کنید. از --target-colorspace-hint=no دوری کنید مگر برای محتوای sRGB، که حتی در آن حالت نیز بهتر است متادیتای فضای رنگی تنظیم شود.
168u
168u
نکته:
7.0
3.5
توضیحات بیشتر پیرامون حالت "HDR passthrough": این باور وجود دارد که این حالت باید سیگنال HDR مبدأ را همان‌طور که هست به نمایشگر ارسال کند و نمایشگر به گونه‌ای جادویی در هر شرایطی آن را مدیریت کند. این همیشه درست نیست. در برخی موارد بهتر است سیگنال HDR به صورت نگاشت تن (tone-mapped) شده و متناسب با توانایی‌های نمایشگر هدف ارسال شود، و بهترین روش برای انجام این کار در داخل خود mpv است.
این موضوع عموماً توسط کامپوزیتور یا درایور GPU مدیریت می‌شود. احتمالاً می‌توانید گزینه‌های کالیبراسیون ("calibration") حالت HDR را در جایی از سیستم خود بیابید.
می‌توانید انتخاب کنید که کدام متادیتا به نمایشگر ارسال شود و آن را با استفاده از گزینه‌های --target-* به‌صورت دستی دستکاری کنید. همچنین در صورتی که می‌خواهید همه چیز بیشتر شبیه HDR به نظر برسد، می‌توانید --inverse-tone-mapping را امتحان کنید.
نتایج ممکن است در شرایط گوناگون متفاوت باشد؛ این موضوع به‌شدت به نمایشگر هدف وابسته است و پاسخ یکسانی وجود ندارد، اما آزمایش کردن را امتحان کنید؛ ممکن است شگفت‌زده شوید.
168u
168u
--target-colorspace-hint-strict
در صورت فعال بودن (پیش‌فرض)، فضای رنگی پیکربندی‌شده swapchain (همراه با hint) رعایت خواهد شد. در این حالت، گزینه‌های --target-* تنها به عنوان یک اشاره (hint) عمل می‌کنند، در حالی که قالب توافق‌شده swapchain برای رندر خروجی استفاده می‌شود. این امر نتایج صحیح را تضمین می‌کند، چرا که پردازش‌های بعدی به فضای رنگی اعلام‌شده وابسته‌اند. در صورت غیرفعال بودن، فضای رنگی swapchain برای مطابقت با گزینه‌های --target-* بازنویسی می‌شود. (فقط برای --vo=gpu-next)
--target-prim=<value>
رنگ‌های پایه (primaries) نمایشگر را مشخص می‌کند. در صورتی که مدیریت رنگ ICC استفاده نشود، رنگ‌های ویدیو با این فضای رنگی تطبیق داده می‌شوند. مقادیر معتبر عبارتند از:
7.0
auto
هرگونه تطبیق را غیرفعال می‌کند، به جز برای فضاهای رنگی نامعمول. به‌طور مشخص، گاموت‌های گسترده/نامعمول به‌طور خودکار با BT.709 تطبیق داده می‌شوند، در حالی که محتوای با گاموت استاندارد (مانند BT.601 و BT.709) دست‌نخورده باقی می‌ماند. (پیش‌فرض)
bt.470m
ITU-R BT.470 M
bt.601-525
ITU-R BT.601 (سیستم‌های SD با ۵۲۵ خط، مانند NTSC)، SMPTE 170M/240M
bt.601-625
ITU-R BT.601 (سیستم‌های SD با ۶۲۵ خط، مانند PAL/SECAM)، ITU-R BT.470 B/G
bt.709
ITU-R BT.709 (HD)، IEC 61966-2-4 (sRGB)، SMPTE RP177 Annex B
bt.2020
ITU-R BT.2020 (UHD).TP
apple
Apple RGB
adobe
Adobe RGB (1998)
prophoto
ProPhoto RGB (ROMM)
cie1931
CIE 1931 RGB (با CIE XYZ اشتباه گرفته نشود)
dci-p3
DCI-P3 (فضای رنگ سینمای دیجیتال)، SMPTE RP431-2
display-p3
DCI-P3 با نقطهٔ سفید D65
v-gamut
رنگ‌های پایهٔ Panasonic V-Gamut (VARICAM)
s-gamut
رنگ‌های پایهٔ Sony S-Gamut (S-Log)
168u
--target-trc=<value>
مشخصه‌های انتقال (گاما) نمایشگر را تعیین می‌کند. هنگامی که مدیریت رنگ ICC استفاده نمی‌شود، رنگ‌های ویدیو بر اساس این منحنی تنظیم خواهند شد. مقادیر معتبر عبارتند از:
7.0
auto
غیرفعال‌سازی هرگونه تطبیق، به‌جز موارد انتقال غیرمعمول. به‌طور خاص، محتوای منبع HDR یا نور خطی (linear light) به‌طور خودکار به gamma 2.2 تبدیل می‌شود، در حالی که محتوای SDR دست‌نخورده باقی می‌ماند. (پیش‌فرض)
bt.1886
منحنی ITU-R BT.1886 (با فرض کنتراست بی‌نهایت)
srgb
IEC 61966-2-4 (sRGB)
linear
خروجی نور خطی (Linear light)
gamma1.8
منحنی توانی خالص (گاما ۱.۸)، همچنین برای Apple RGB استفاده می‌شود
gamma2.0
منحنی توانی خالص (گاما ۲.۰)
gamma2.2
منحنی توانی خالص (گاما ۲.۲)
gamma2.4
منحنی توانی خالص (گاما ۲.۴)
gamma2.6
منحنی توانی خالص (گاما ۲.۶)
gamma2.8
منحنی توانی خالص (گاما ۲.۸)، همچنین برای BT.470-BG استفاده می‌شود
prophoto
ProPhoto RGB (ROMM)
pq
منحنی ITU-R BT.2100 PQ (کوانتایزر ادراکی)، معروف به SMPTE ST2084
hlg
منحنی ITU-R BT.2100 HLG (گاما لگاریتمی ترکیبی)، معروف به ARIB STD-B67
v-log
منحنی Panasonic V-Log (VARICAM)
s-log1
منحنی Sony S-Log1
s-log2
منحنی Sony S-Log2
168u
نکته:
7.0
3.5
هنگام استفاده از قالب‌های خروجی HDR، برنامهٔ mpv بر اساس منحنی مشخص‌شده کدگذاری می‌کند، اما هیچ پرچم HDMI یا سیگنال‌دهی دیگری را که ممکن است برای نمایش صحیح سیگنال HDR توسط دستگاه مقصد لازم باشد تنظیم نخواهد کرد. کاربر باید پیش از استفاده از این قالب‌های سیگنال برای نمایش، این موضوع را به‌طور مستقل تضمین کند.
168u
168u
--target-peak=<auto|nits>
روشنایی اوج اندازه‌گیری‌شدهٔ نمایشگر خروجی را بر حسب cd/m^2 (معروف به nits) مشخص می‌کند. تفسیر این روشنایی به --target-trc پیکربندی‌شده بستگی دارد. در تمام موارد، این گزینه محدودیتی بر مقادیر سیگنالی که به نمایشگر ارسال خواهد شد اعمال می‌کند. اگر منبع از این سطح روشنایی فراتر رود، یک فیلتر نگاشت تن (tone mapping) اعمال خواهد شد. برای HLG، این گزینه اثر مضاعفی در پارامتریک‌سازی معکوس OOTF دارد تا نتایجی از نظر رنگ‌سنجی سازگار با نمایشگر مسترینگ به‌دست آید. برای SDR یا هنگام استفاده از نمایهٔ ICC (--icc-profile)، تنظیم این مقدار روی عددی بالاتر از 203 اساساً باعث می‌شود با نمایشگر طوری رفتار شود که گویی در واقع یک نمایشگر HDR در لباس مبدل است. (نکتهٔ زیر را ببینید)
در حالت auto (پیش‌فرض)، اوج انتخابی مقداری مناسب بر اساس TRC مورد استفاده است. برای منحنی‌های SDR از 203 استفاده می‌کند. برای منحنی‌های HDR از حاصل‌ضرب 203 در اوج اسمی تابع انتقال استفاده می‌کند. در صورت موجود بودن، از اوج روشنایی نمایشگر هدف همان‌گونه که توسط خود نمایشگر گزارش شده است استفاده خواهد کرد.
نکته:
7.0
3.5
هنگام استفاده از یک تابع انتقال SDR، معمولاً به این مورد نیازی نیست و تنظیم آن ممکن است به نتایج بسیار غیرمنتظره‌ای منجر شود. تنها زمانی که این گزینه واقعاً مفید است زمانی است که بخواهید یک نمایشگر HDR را با استفاده از توابع انتقال و تجهیزات کالیبراسیون سنتی کالیبره کنید. در چنین مواردی، می‌توانید نمایشگر HDR خود را روی روشنایی بالایی مانند 800 cd/m^2 قرار دهید و سپس آن را بر روی یک منحنی استاندارد مانند gamma2.8 کالیبره نمایید. در این صورت تنظیم این مقدار روی 800 به mpv دستور می‌دهد که اساساً با آن مانند یک نمایشگر HDR با اوج مشخص‌شده رفتار کند. این می‌تواند جایگزین مناسبی در محیط‌هایی باشد که ارسال ورودی PQ یا HLG به نمایشگر ممکن نیست، و امکان استفاده از نمایشگرهای HDR با mpv را بدون در نظر گرفتن پشتیبانی سیستم‌عامل از متاداده‌های HDMI HDR فراهم می‌سازد.
در چنین پیکربندی‌ای، اکیداً توصیه می‌کنیم --tone-mapping را روی mobius یا حتی clip تنظیم کنید.
168u
168u
--target-contrast=<auto|10-1000000|inf>
کنتراست اندازه‌گیری‌شدهٔ نمایشگر خروجی را مشخص می‌کند. --target-contrast در ترکیب با مقدار --target-peak برای محاسبهٔ نقطهٔ سیاه نمایشگر استفاده می‌شود. در جبران نقطهٔ سیاه حین نگاشت تن HDR کاربرد دارد. مقدار auto پیش‌فرض است و کنتراست 1000:1 را به عنوان یک نمایشگر SDR معمولی یا کنتراست بی‌نهایت را در صورت استفاده از --target-trc مربوط به HDR در نظر می‌گیرد. در صورت پشتیبانی توسط API، از کنتراست نمایشگر بر اساس آنچه گزارش شده استفاده خواهد شد. کنتراست inf نمایشگری با سطح سیاه کامل را مشخص می‌کند که در عمل همان OLED است. (تنها برای --vo=gpu-next)
--target-gamut=<value>
گاموت (وسعت رنگ) نمایشگر را محدود می‌کند. می‌توانید از این گزینه برای خروجی مواردی مانند DCIP3-in-BT.2020 استفاده کنید. مقدار --target-prim را روی رنگ‌های پایهٔ فضای رنگی دربرگیرنده (که مقادیر در آن کدگذاری می‌شوند) و --target-gamut را روی گاموتی که می‌خواهید رنگ‌ها به آن محدود شوند تنظیم کنید. مقادیری مشابه --target-prim می‌پذیرد. (تنها برای --vo=gpu-next)
نکته:
7.0
3.5
اگر گاموت انتخاب‌شده وسیع‌تر باشد، به --target-prim محدود خواهد شد. علاوه بر این، در صورت مشخص شدن --target-colorspace-hint، گاموت اعلام‌شده به گاموت پشتیبانی‌شده توسط swapchain محدود خواهد شد که ممکن است با --target-prim درخواست‌شده متفاوت باشد.
168u
168u
--target-lut=<file>
یک فایل سفارشی LUT (در قالب .cube ادوبی) را برای اعمال روی رنگ‌ها پیش از نمایش روی صفحه مشخص می‌کند. مقادیر در حالت RGB نرمال‌شده و پس از کدگذاری در فضای رنگی هدف (یعنی پس از اعمال --target-trc) به این LUT داده می‌شوند. (تنها برای --vo=gpu-next)
--hdr-reference-white=<auto|10-1000000>
روشنایی اوج مفروض نمایشگر مسترینگ را برای محتوای SDR بر حسب cd/m² (nits) مشخص می‌کند. این مقدار به عنوان سطح سفید پراکندهٔ HDR برای محتوای SDR استفاده می‌شود. در اصل این همان روشنایی SDR درون کانتینر HDR است. مقدار پیش‌فرض 203 cd/m² است. (تنها برای --vo=gpu-next)
نکته:
7.0
3.5
این گزینه در صورت تنظیم شدن و SDR بودن تابع انتقال هدف، مقدار --target-peak را لغو کرده و جایگزین آن می‌شود. از این طریق می‌توانید خروجی SDR را جدا از خروجی HDR کنترل کنید.
168u
168u
--sdr-adjust-gamma=<auto|yes|no>
توابع انتقال SDR اغلب مبهم یا ناسازگار هستند. حتی اگر فایل‌ها با یک تابع خاص (مانند bt.709) برچسب‌گذاری شده باشند، محتوای واقعی ممکن است مطابقت نداشته باشد. به عنوان مثال، اکثر نرم‌افزارهای تصویربرداری از صفحه نمایش خروجی خود را با برچسب bt.709 مشخص می‌کنند، در حالی که محتوا معمولاً ضبط مستقیم sRGB است..sp
در سمت مقصد، عبارت "sRGB" نیز مبهم است؛ برخی نمایشگرها در کارخانه روی یک گامای توان ۲.۲ خالص کالیبره شده‌اند، در حالی که برخی دیگر ممکن است از منحنی چندبخشی sRGB استفاده کنند. هر دوی این‌ها معمولاً در پیکربندی swapchain به صورت "sRGB" تنظیم می‌شوند. ناسازگاری‌های مشابهی میان پیاده‌سازی‌های مختلف compositor از مدیریت رنگ وجود دارد، زیرا پلتفرم‌های مختلف به شیوه‌های متفاوتی با این موضوع برخورد می‌کنند. همچنین --treat-srgb-as-power22 را ببینید.
علاوه بر این، bt.1886 برای رندر صحیح نیازمند دانستن نسبت کنتراست نمایشگر است که اغلب در دسترس نیست. از ``--target-contrast`` برای مشخص کردن آن استفاده کنید.
این گزینه کنترل می‌کند که آیا گامای محتوای SDR باید تنظیم شود یا خیر. این گزینه فقط برای پیکربندی مقصد swapchain با عنوان "sRGB" اعمال می‌شود، چرا که رایج‌ترین و مبهم‌ترین حالت است. اگر روی no تنظیم شود، محتوای برچسب‌خورده به عنوان sRGB، gamma2.2 یا bt.1886 همان‌گونه که هست رندر خواهد شد. اگر روی yes تنظیم شود، بر اساس متادیتای موجود تبدیل خواهد شد.
حالت auto (پیش‌فرض) مانند no عمل می‌کند، مگر زمانی که --target-trc به صورت صریح تنظیم شده باشد که در آن صورت مانند yes رفتار خواهد کرد.
به طور کلی توصیه می‌شود در صورتی که می‌توانید از صحت متادیتای مبدأ و مقصد اطمینان حاصل کنید، این گزینه را فعال نمایید.
(فقط برای --vo=gpu-next)
--treat-srgb-as-power22=<no|input|output|both|auto>
در صورت فعال بودن، sRGB به جای تابع انتقال چندبخشی استاندارد sRGB، با استفاده از یک منحنی توان ۲.۲ خالص، خطی‌سازی یا غیرخطی‌سازی (de/linearized) می‌شود.
حالت auto مانند both رفتار می‌کند، به همراه تنظیمات احتمالی مختص پلتفرم برای اطمینان از ظاهری یکپارچه. بسته به پلتفرم، تابع EOTF مربوط به sRGB که توسط compositor سیستم استفاده می‌شود ممکن است متفاوت باشد.
پیش‌فرض auto است. (فقط برای --vo=gpu-next)
--tone-mapping=<value>
الگوریتم مورد استفاده برای نگاشت تن (tone-mapping) تصاویر روی نمایشگر مقصد را مشخص می‌کند. این گزینه هم برای تبدیل HDR->SDR و هم برای کاهش گاموت (مانند بازپخش محتوای BT.2020 روی نمایشگری با گاموت استاندارد) کاربرد دارد.
مقادیر معتبر عبارتند از:
7.0
auto
هنگام استفاده از --vo=gpu به bt.2390، و با --vo=gpu-next به spline نگاشت می‌شود. (پیش‌فرض)
clip
برش سخت (hard-clip) تمام مقادیر خارج از محدوده. زمانی از این گزینه استفاده کنید که دقت رنگ بی‌نقص برای مقادیر داخل محدوده، به بهای تحریف کامل مقادیر خارج از محدوده برایتان اهمیت دارد. به طور کلی توصیه نمی‌شود.
mobius
تعمیم حالت Reinhard به یک تبدیل موبیوس با بخش خطی.
مقادیر خارج از محدوده را به آرامی نگاشت می‌کند و در عین حال کنتراست و رنگ‌ها را تا حد امکان برای محتوای داخل محدوده حفظ می‌نماید. زمانی از این گزینه استفاده کنید که دقت رنگ بیش از حفظ جزئیات برایتان اهمیت دارد. این حالت بسته به مقدار --tone-mapping-param چیزی میان clip و reinhard است.
reinhard
الگوریتم نگاشت تن Reinhard. یک منحنی پیوسته بسیار ساده.
روشنایی کلی تصویر را حفظ می‌کند اما از کنتراست غیرخطی استفاده می‌نماید که به تخت شدن جزئیات و کاهش دقت رنگ منجر می‌شود.
hable
مشابه reinhard اما جزئیات تاریک و روشن را بهتر حفظ می‌کند (کمی سیگموئیدی)، به قیمت کمی تاریک‌تر شدن و کاهش اشباع همه‌چیز. توسط John Hable برای استفاده در بازی‌های ویدیویی توسعه یافته است. زمانی از این گزینه استفاده کنید که حفظ جزئیات بیشتر از دقت رنگ/روشنایی برایتان اهمیت دارد. این حالت تقریباً معادل --tone-mapping=reinhard --tone-mapping-param=0.24 است. در صورت امکان، باید --hdr-compute-peak را نیز برای بهترین نتایج فعال کنید.
bt.2390
منحنی ادراکی نگاشت تن (EETF) مشخص‌شده در گزارش ITU-R BT.2390.
gamma
یک انتقال لگاریتمی را میان منحنی‌های تن برازش می‌کند.
linear
کل گاموت مرجع را به صورت خطی به (یک مضرب خطی از) نمایشگر امتداد می‌دهد.
spline
چندجمله‌ای تک‌محوری از نظر ادراکی خطی. (فقط --vo=gpu-next)
bt.2446a
نگاشت HDR<->SDR مشخص‌شده در گزارش ITU-R BT.2446، روش A. این منحنی برای محتوایی که به خوبی مستر شده باشد توصیه می‌شود. (فقط --vo=gpu-next)
st2094-40
روش پویای نگاشت تن HDR10+ مشخص‌شده در پیوست B استاندارد SMPTE ST2094-40. در نبود متادیتا، به یک اسپلاین ثابت منطبق با مشخصات میانگین روشنایی ورودی/خروجی تنزل می‌یابد. (فقط --vo=gpu-next)
st2094-10
روش پویای نگاشت تن مشخص‌شده در پیوست B.2 استاندارد SMPTE ST2094-10. از نظر مفهومی ساده‌تر از ST2094-40 است و به طور کلی نتایج بدتری تولید می‌کند.
168u
--tone-mapping-param=<value>
پارامترهای نگاشت تن را تعیین می‌کند. به طور پیش‌فرض، روی رشتهٔ ویژهٔ default تنظیم شده است که به مقدار پیش‌فرض مختص الگوریتم نگاشت می‌شود. در صورتی که الگوریتم نگاشت تن قابل تنظیم نباشد، نادیده گرفته می‌شود. این گزینه روی الگوریتم‌های نگاشت تن زیر اثر می‌گذارد:
7.0
clip
یک ضریب خطی اضافی را مشخص می‌کند تا پیش از برش در سیگنال ضرب شود. پیش‌فرض 1.0 است.
mobius
نقطهٔ گذار از تبدیل خطی به موبیوس را مشخص می‌کند. تمام مقادیر زیر این نقطه تضمین می‌شوند که به صورت 1:1 نگاشت شوند. هر چه این مقدار بالاتر باشد، نتیجه دقیق‌تر خواهد بود، اما به قیمت از دست رفتن جزئیات روشن. پیش‌فرض 0.3 است، که به دلیل شیب تند اولیه همچنان رنگ‌های داخل محدوده را به شکلی نسبتاً دقیق حفظ می‌کند.
reinhard
ضریب کنتراست محلی در اوج روشنایی نمایشگر را مشخص می‌کند. پیش‌فرض 0.5 است، به این معنی که مقادیر داخل گاموت روشنایی حدوداً نصف حالت برش خواهند داشت.
bt.2390
میزان آفست را برای نقطهٔ زانو مشخص می‌کند. پیش‌فرض 1.0 است که از مقدار مشخصات اولیهٔ ITU-R (یعنی 0.5) بیشتر است. (فقط --vo=gpu-next)
gamma
توان تابع را مشخص می‌کند. پیش‌فرض 1.8 است.
linear
ضریب مقیاس مورد استفاده هنگام کشیدگی را مشخص می‌کند. پیش‌فرض 1.0 است.
spline
نقطهٔ زانو (در فضای PQ) را مشخص می‌کند. پیش‌فرض 0.30 است.
st2094-10
کنتراست (شیب) را در نقطهٔ زانو مشخص می‌کند. پیش‌فرض 1.0 است.
168u
--inverse-tone-mapping
در صورت تنظیم، امکان نگاشت تن معکوس (گسترش دامنه دینامیکی) را فراهم می‌کند. می‌تواند برای افزایش مقیاس محتوای SDR به HDR، یا برای روشن‌تر کردن محتوای HDR استفاده شود. توسط همهٔ منحنی‌های نگاشت تن پشتیبانی نمی‌شود. با احتیاط استفاده شود. (فقط --vo=gpu-next)
--tone-mapping-max-boost=<1.0..10.0>
حد بالای مجاز برای الگوریتم نگاشت تن جهت افزایش روشنایی میانگین از طریق نوردهی بیش از حد (over-exposing) تصویر. مقدار پیش‌فرض 1.0 اجازه هیچ افزایش روشنایی اضافه‌ای را نمی‌دهد. مقدار 2.0 امکان ۲ برابر نوردهی بیش از حد را فراهم می‌کند و به همین ترتیب. افزایش این تنظیم می‌تواند به آشکار کردن جزئیاتی که در غیر این صورت در صحنه‌های تاریک پنهان می‌ماندند کمک کند، اما افزایش بیش از حد آن باعث می‌شود صحنه‌های تاریک به طور غیرطبیعی روشن به نظر برسند. (فقط --vo=gpu)
--tone-mapping-visualize
یک نمودار (PQ-PQ) از LUT فعال نگاشت تن را نمایش می‌دهد. فقط برای اهداف اشکال‌زدایی در نظر گرفته شده است. محور X مقادیر ورودی PQ و محور Y مقادیر خروجی PQ را نشان می‌دهد. منحنی نگاشت تن به رنگ سبز/زرد نشان داده می‌شود. رنگ زرد به این معنی است که روشنایی نسبت به مبدأ افزایش یافته است، نواحی آبی تیره نشان می‌دهند که روشنایی در کجا کاهش یافته است. نواحی و خطوط رنگی اضافی محدودیت‌های گوناگون مانیتور و همچنین قطر مرجع (نگاشت تن خنثی) و اطلاعات میانگین روشنایی صحنهٔ مبدأ (در صورت وجود) را نشان می‌دهند. (فقط --vo=gpu-next)
--gamut-mapping-mode
الگوریتم مورد استفاده برای کاهش گاموت تصاویر برای نمایشگر مقصد را پس از انجام هرگونه نگاشت تن مشخص می‌کند.
7.0
auto
انتخاب بهترین حالت به صورت خودکار. (پیش‌فرض)
clip
برش سخت به گاموت (به ازای هر کانال). کیفیت بسیار پایین، اما بدون بار پردازشی.
perceptual
نگاشت گاموت با تعادل ادراکی را با استفاده از یک تابع زانوی نرم (soft knee) برای کاهش تدریجی (roll-off) نواحی برش‌خورده، و یک تابع تغییر فام برای حفظ اشباع رنگ انجام می‌دهد. (فقط --vo=gpu-next).TP
relative
برش‌زنی کالریمتری نسبی (relative colorimetric clipping) را با حفظ یک رابطه‌ی نمایی میان روشنایی و فام‌مندی (chromaticity) انجام می‌دهد.
(فقط --vo=gpu-next)
saturation
نگاشت اشباع ساده‌ی RGB->RGB را انجام می‌دهد. کانال‌های R/G/B ورودی مستقیماً روی کانال‌های R/G/B خروجی نگاشت می‌شوند. هرگز برش (clip) ایجاد نمی‌کند، اما تمام رنگ‌بست‌ها (hues) را دگرگون کرده و/یا منجر به ظاهری رنگ‌پریده می‌شود.
(فقط --vo=gpu-next)
absolute
برش‌زنی کالریمتری مطلق را انجام می‌دهد. مانند relative است، اما نقطه‌ی سفید را تطبیق نمی‌دهد. (فقط --vo=gpu-next)
desaturate
برش‌زنی کالریمتری با درخشندگی (luminance) ثابت را انجام می‌دهد، به این صورت که رنگ‌ها را تا رسیدن به محدوده‌ی مجاز به سمت سفید اشباع‌زدایی می‌کند.
darken
ورودی را به صورت یکنواخت و اندکی تیره می‌کند تا از برش در هایلایت‌های بیش از حد روشن (blown-out highlights) جلوگیری شود، سپس به صورت کالریمتری روی مرز گستره رنگی (gamut) ورودی محدود (clamp) می‌شود، با گرایش جزئی به حفظ فام‌مندی نسبت به درخشندگی.
(فقط --vo=gpu-next)
warn
هیچ نگاشت گستره رنگی انجام نمی‌دهد، بلکه صرفاً پیکسل‌های خارج از گستره را برجسته و نمایان می‌کند.
linear
تصویر را به صورت خطی/یکنواخت اشباع‌زدایی می‌کند تا کل تصویر به گستره رنگی هدف آورده شود. (فقط --vo=gpu-next)
168u
--hdr-compute-peak=<auto|yes|no>
نقطه اوج HDR و میانگین روشنایی فریم را برای هر فریم به جای اتکا به فراداده‌های برچسب‌خورده محاسبه می‌کند. این مقادیر روی نواحی محلی و همچنین در طول چندین فریم میانگین‌گیری می‌شوند تا از لرزش و نوسان شدید مقادیر جلوگیری شود. این گزینه اساساً یک نگاشت تن (tone mapping) پویا و صحنه‌به‌صحنه ارائه می‌دهد.
نیازمند شیدرهای محاسباتی (compute shaders) است که قابلیتی نسبتاً جدید در OpenGL به شمار می‌رود، و احتمالاً در برخی درایورها عملکرد بسیار نامطلوبی خواهد داشت، بنابراین مسئولیت فعال‌سازی آن با خودتان است.
مقدار ویژه auto (پیش‌فرض) در صورت پشتیبانی از compute shaders و SSBOها، محاسبه اوج HDR را به طور خودکار فعال می‌کند.
--allow-delayed-peak-detect
هنگام استفاده از --hdr-compute-peak، در صورت سودمند بودن برای کارایی، اجازه می‌دهد اوج شناسایی‌شده به اندازه یک فریم به تعویق بیفتد. به طور خاص، برای جلوگیری از یک ارجاع غیرمستقیم (indirection) غیرضروری FBO در حالتی که نیاز به رندر پیشرفته دیگری نباشد، این گزینه الزامی است. اگر از قبل یک گذر غیرمستقیم وجود داشته باشد (مانند زمانی که مقیاس‌بندی پیشرفته فعال است)، تأثیری ندارد. پیش‌فرض no است. (تنها بر --vo=gpu-next تأثیر می‌گذارد؛ توجه داشته باشید که --vo=gpu همیشه اوج را به تعویق می‌اندازد.)
--hdr-peak-percentile=<0.0..100.0>
مشخص می‌کند کدام صدک از هیستوگرام روشنایی تصویر ورودی به عنوان اوج واقعی صحنه در نظر گرفته شود. اگر روی 100 (پیش‌فرض) تنظیم شود، روشن‌ترین پیکسل اندازه‌گیری می‌شود. در غیر این صورت، بخش بالایی توزیع فراوانی به صورت تدریجی بریده و حذف می‌شود. تنظیم بیش از حد پایین این مقدار باعث برش جزئیات بسیار روشن خواهد شد، اما می‌تواند دامنه روشنایی پویای صحنه‌هایی با هایلایت‌های درخشان و مجزا را بهبود بخشد. مقادیر غیر از 100 افت اندکی در عملکرد به همراه دارند. (فقط برای --vo=gpu-next)
--hdr-peak-decay-rate=<0.0..1000.0>
نرخ فروکش (decay rate) مورد استفاده برای الگوریتم تشخیص اوج HDR (پیش‌فرض: 20.0).
این گزینه تنها زمانی کاربرد دارد که --hdr-compute-peak فعال باشد. مقادیر بالاتر باعث می‌شوند اوج به آرامی فروکش کند که به مقادیر پایدارتر به بهای جلوه‌های بیشتر مشابه «انطباق چشم» ("eye adaptation") منجر می‌شود (اگرچه این مورد تا حدی توسط --hdr-scene-threshold تعدیل می‌گردد). مقدار 0.0 (کمترین مقدار ممکن) تمام میانگین‌گیری‌ها را غیرفعال می‌کند، به این معنی که مقدار هر فریم مستقیماً همان‌طور که اندازه‌گیری شده استفاده می‌شود؛ با این حال استفاده از آن برای منابع دارای «نویز» توصیه نمی‌شود زیرا ممکن است به سوسو زدن (flicker) شدید منجر گردد. (در اصطلاحات نظریه سیگنال، این گزینه ثابت زمانی «tau» یک فیلتر پایین‌گذر IIR را کنترل می‌کند)
--hdr-scene-threshold-low=<0.0..100.0>, --hdr-scene-threshold-high=<0.0..100.0>
آستانه‌های پایینی و بالایی (به dB) برای اینکه اختلاف روشنایی به عنوان تغییر صحنه تلقی شود (پیش‌فرض: 1.0 برای پایین، 3.0 برای بالا). این تنها زمانی کاربرد دارد که --hdr-compute-peak فعال باشد. در حالت عادی، نوسانات کوچک در روشنایی فریم توسط سازوکار میانگین‌گیری اوج جبران می‌شوند، اما برای پرش‌های بزرگ روشنایی، این امر می‌تواند باعث شود بسته به مقدار --hdr-peak-decay-rate فریم تا چندین ثانیه بیش از حد روشن یا تاریک باقی بماند. برای جبران این موضوع، هنگامی که اختلاف روشنایی میان میانگین متحرک و فریم فعلی از آستانه پایین فراتر رود، mpv فیلتر میانگین‌گیری را تهاجمی‌تر می‌کند تا جایی که به مرز آستانه بالا برسد (در این نقطه عملکرد فیلتر آنی می‌شود).
--hdr-contrast-recovery=<0.0..2.0>, --hdr-contrast-smoothness=<1.0..100.0>
الگوریتم بازیابی کنتراست HDR را فعال می‌کند که برای بهبود کنتراست ویدیوی HDR پس از نگاشت تن طراحی شده است. شدت (پیش‌فرض: 0.0) درجه بازیابی کنتراست را مشخص می‌کند که در آن 0.0 به معنای غیرفعال بودن کامل و 1.0 برابر با شدت ۱۰۰٪ است. مقادیر بالاتر از 1.0 مجاز هستند، اما ممکن است منجر به وضوح‌بخشی (sharpening) بیش از حد شوند. نرمی (پیش‌فرض: 3.5) مشخص می‌کند منبع HDR تا چه اندازه از فیلتر پایین‌گذر عبور داده شود تا اطلاعات کنتراست به دست آید - مقدار 2.0 معادل با کاهش مقیاس 2 برابری (2x downscaling) است. کاربران نمایشگرهای با DPI پایین (<= 100) ممکن است مایل به کاهش این مقدار باشند، در حالی که کاربران نمایشگرهای بسیار متراکم با DPI بالا ("retina") ممکن است مایل به افزایش آن باشند. (فقط برای vo=gpu-next)
--use-embedded-icc-profile
پروفایل ICC تعبیه‌شده در فایل‌های چندرسانه‌ای مانند تصاویر PNG را بارگذاری می‌کند. (پیش‌فرض: yes). توجه داشته باشید که این گزینه فقط زمانی کار می‌کند که از یک پروفایل ICC نمایشگر نیز استفاده شود (--icc-profile یا --icc-profile-auto)، و همچنین به پشتیبانی از LittleCMS 2 نیاز دارد.
--icc-profile=<file>
یک پروفایل ICC را بارگذاری کرده و از آن برای تبدیل RGB ویدیو به خروجی صفحه‌نمایش استفاده می‌کند. نیاز دارد که پشتیبانی از LittleCMS 2 به صورت کامپایل‌شده موجود باشد. این گزینه بر گزینه‌های --target-prim، --target-trc و --icc-profile-auto تقدم دارد و آن‌ها را لغو می‌کند.
--icc-profile-auto
پروفایل ICC نمایشگری را که در حال حاضر در تنظیمات نمایشگر سیستم‌عامل مشخص شده است، به صورت خودکار انتخاب می‌کند.
نکته: در Windows، پروفایل پیش‌فرض باید یک پروفایل ICC باشد. پروفایل‌های WCS پشتیبانی نمی‌شوند.
برنامه‌هایی که از libmpv همراه با render API استفاده می‌کنند، باید پروفایل ICC را از طریق MPV_RENDER_PARAM_ICC_PROFILE ارائه دهند.
--icc-cache
جدول‌های 3DLUT ایجادشده از پروفایل ICC را روی دیسک در دایرکتوری حافظه موقت (cache) ذخیره و بارگذاری می‌کند (پیش‌فرض: yes). این کار می‌تواند برای افزایش سرعت بارگذاری استفاده شود، چرا که ساخت یک 3D LUT توسط LittleCMS 2 ممکن است زمان‌بر باشد. توجه داشته باشید که این فایل‌ها شامل LUTهای فشرده‌نشده هستند. اندازه آن‌ها به --icc-3dlut-size بستگی دارد و می‌تواند بسیار زیاد باشد.
در --vo=gpu-next، در صورت فراتر رفتن از حد مجاز حافظه موقت (1.5 GiB)، ممکن است فایل‌هایی که در ۲۴ ساعت گذشته به آن‌ها دسترسی پیدا نشده است پاک شوند.
در --vo=gpu، این پاک‌سازی به طور خودکار انجام نمی‌شود، بنابراین فایل‌های قدیمی و بدون استفاده در حافظه موقت ممکن است تا ابد باقی بمانند.
--icc-cache-dir
دایرکتوری محل ذخیره حافظه موقت icc. در صورت تنظیم نشدن، حافظه موقت در دایرکتوری کش سیستم (معمولاً ~/.cache/mpv) ذخیره می‌شود.
--icc-intent=<value>
هدف تبدیل رنگ ICC (موسوم به ICC intent) را که برای تبدیل رنگ استفاده می‌شود، تعیین می‌کند (هنگام استفاده از --icc-profile).
7.0
0
perceptual (ادراکی)
1
relative colorimetric (کالریمتری نسبی، پیش‌فرض)
2
saturation (اشباع)
3
absolute colorimetric (کالریمتری مطلق)
168u
--icc-3dlut-size=<auto|RxGxB>
اندازه 3D LUT تولیدشده از پروفایل ICC در هر بعد. مقدار پیش‌فرض auto به معنای انتخاب خودکار اندازه بر اساس ویژگی‌های پروفایل است. اندازه‌ها می‌توانند در بازه ۲ تا ۵۱۲ باشند.
نکته: تنظیم این گزینه روی مقداری غیر از auto، به جز برای مقاصد آزمایشی، اکیداً نهی می‌شود.
--icc-force-contrast=<no|0-1000000|inf>
نسبت کنتراست شناسایی‌شده دستگاه مقصد را با یک مقدار مشخص جایگزین می‌کند. این مقدار در صورت امکان به طور خودکار از پروفایل شناسایی می‌شود، اما در برخی پروفایل‌ها ممکن است وجود نداشته باشد که باعث می‌شود کنتراست بی‌نهایت فرض شود. در نتیجه، ممکن است ویدیو تاریک‌تر از حد انتظار به نظر برسد. در چنین شرایطی، تنظیم این گزینه ممکن است کمک‌کننده باشد. این گزینه فقط بر محتوای BT.1886 تأثیر می‌گذارد. مقدار پیش‌فرض no به معنای استفاده از مقادیر پروفایل است. مقدار ویژه inf باعث می‌شود منحنی BT.1886 به عنوان یک تابع توانی خالص gamma 2.4 پردازش شود.
--icc-use-luma
استفاده از مقدار روشنایی (luminance) پروفایل ICC. (فقط برای --vo=gpu-next)
--lut=<file>
یک LUT سفارشی (در قالب Adobe .cube) را برای اعمال به رنگ‌ها به عنوان بخشی از تبدیل رنگ تعیین می‌کند. تفسیر دقیق آن به مقدار --lut-type بستگی دارد. (فقط برای --vo=gpu-next)
--lut-type=<value>
تفسیر مقادیر رنگی ورودی و خروجی از LUT تعیین‌شده در --lut را کنترل می‌کند. مقادیر معتبر عبارتند از:
7.0.TP
auto
تفسیر جدول جستجو (LUT) را به‌طور خودکار از فراداده‌های برچسب‌گذاری‌شده انتخاب می‌کند، و در غیر این صورت به native بازمی‌گردد. (پیش‌فرض)
native
بر روی محتوای خام تصویر در فضای رنگی بومی RGB آن (نور غیرخطی)، پیش از تبدیل به فضای رنگی خروجی اعمال می‌شود.
normalized
بر روی محتوای تصویر RGB نرمال‌سازی‌شده، در نور خطی، پیش از تبدیل به فضای رنگی خروجی اعمال می‌شود.
conversion
به‌طور کامل جایگزین تبدیل از فضای رنگی تصویر به فضای رنگی خروجی می‌شود. در صورت وجود چنین LUTای، بالاترین اولویت را خواهد داشت و هرگونه نمایه ICC و همچنین گزینه‌های مربوط به نگاشت تن رنگ و رنگ‌سنجی خروجی (--target-prim، --target-trc و غیره) را بازنویسی می‌کند.
168u
--blend-subtitles=<yes|video|no>
ترکیب مستقیم زیرنویس‌ها روی فریم‌های مقیاس‌بندی‌شده‌ی ویدیو، پیش از درونیابی و/یا مدیریت رنگ (پیش‌فرض: no). فعال کردن این گزینه باعث می‌شود زیرنویس‌ها تحت تأثیر --icc-profile، --target-prim، --target-trc، --interpolation، --gamma-factor و --glsl-shaders قرار گیرند. همچنین کارایی زیرنویس را هنگام استفاده از --interpolation افزایش می‌دهد.
نقطه ضعف فعال‌سازی این گزینه این است که زیرنویس‌ها را به بخش مرئی ویدیو محدود می‌کند؛ بنابراین (برای مثال) نمی‌توانید زیرنویس‌ها را در حاشیه‌های سیاه زیر ویدیو داشته باشید.
اگر video انتخاب شود، رفتار مشابه با yes خواهد بود، اما زیرنویس‌ها با وضوح تصویر بومی ویدیو رسم شده و همراه با ویدیو مقیاس‌بندی می‌شوند.
نکته:
7.0
3.5
گزینه --vo=gpu-next همراه با --blend-subtitles=video در صورت چرخش در گام‌های ۹۰ درجه، به‌درستی از --video-rotate پیروی می‌کند.
168u
168u
هشدار:
7.0
3.5
با --vo=gpu-next، حالت --blend-subtitles=video مشابه با --blend-subtitles=yes زیرنویس‌ها را پس از مقیاس‌بندی ویدیو ترکیب می‌کند. تفاوت در این است که زیرنویس‌ها با وضوح بومی ویدیو رندر شده و سپس برای ترکیب با ویدیو به‌طور جداگانه مقیاس می‌شوند. این ویژگی به دلایل کارایی مفید است، زیرا اجازه می‌دهد زیرنویس‌ها با وضوح پایین‌تری رندر شوند، اما تأثیری مشابه با زیرنویس چسبیده (hardsubbing) که نیازمند ترکیب پیش از مقیاس‌بندی است ندارد. این رفتار ممکن است در آینده تغییر کند.
168u
168u
هشدار:
7.0
3.5
این گزینه نحوه مدیریت رنگ‌های زیرنویس را تغییر می‌دهد. در حالت عادی، فرض می‌شود رنگ‌های زیرنویس در فضای sRGB هستند و بر این اساس مدیریت رنگ می‌شوند. فعال کردن این گزینه باعث می‌شود که در عوض در فضای رنگی ویدیو در نظر گرفته شوند. این حالت برای زمانی که می‌خواهید نشانه‌های ASS سافت‌ساب با رنگ‌های ویدیو مطابقت داشته باشند خوب است، اما ممکن است باعث شود زیرنویس‌های SRT یا مشابه آن کمی نامناسب به نظر برسند.
168u
168u
--background=<none|color|tiles>
اگر فریم دارای مؤلفه آلفا باشد، مشخص می‌کند که در صورت وجود، با چه نوع پس‌زمینه‌ای ترکیب شود. در صورت عدم وجود مؤلفه آلفا، این گزینه هیچ کاری انجام نمی‌دهد.
7.0
color
ترکیب فریم با رنگ پس‌زمینه (--background-color، معمولاً سیاه).
tiles
ترکیب فریم با الگوی شطرنجی با رنگ‌های مشخص‌شده در گزینه‌های --background-tile-color-0 و --background-tile-color-1 و اندازه کاشی مشخص‌شده در گزینه‌ی --background-tile-size (پیش‌فرض).
none
فریم را ترکیب نکن و مؤلفه آلفا را دست‌نخورده باقی بگذار.
168u
شفافیت پس‌زمینه در d3d11 نیازمند --d3d11-flip=no است.
پیش از نسخه 0.38.0 برنامه mpv، این گزینه مقداری رنگی را برای تعیین رنگ پس‌زمینه می‌پذیرفت. این کار اکنون توسط گزینه --background-color انجام می‌شود. به‌جای آن از این گزینه استفاده کنید.
--background-color=<color>
رنگ مورد استفاده برای ترسیم بخش‌هایی از پنجره mpv که توسط ویدیو در حالت --background=color پوشش داده نشده‌اند.
برای چگونگی تعریف رنگ‌ها، گزینه --sub-color را ببینید.
--background-tile-color-0=<color>, --background-tile-color-1=<color>
رنگ‌های مورد استفاده برای ترسیم بخش‌هایی از پنجره mpv که توسط ویدیو در حالت --background=tiles پوشش داده نشده‌اند.
برای چگونگی تعریف رنگ‌ها، گزینه --sub-color را ببینید.
--background-tile-size=<1-4096>
اندازه کاشی مورد استفاده برای ترسیم بخش‌هایی از پنجره mpv که توسط ویدیو در حالت --background=tiles پوشش داده نشده‌اند (پیش‌فرض: 16).
--border-background=<none|color|tiles|blur>
مشابه --background اما فقط برای ناحیه نوار سیاه/کادر پنجره اعمال می‌شود. فقط برای vo=gpu-next. پیش‌فرض color است.
--background-blur-radius=<radius>
شعاع مات‌شدگی (برحسب پیکسل) برای استفاده در --border-background=blur.
--opengl-rectangle-textures
اجبار به استفاده از بافت‌های مستطیلی (پیش‌فرض: no). به‌طور معمول این گزینه نباید هیچ مزیتی نسبت به بافت‌های عادی داشته باشد. توجه داشته باشید که رمزگشایی سخت‌افزاری بر این پرچم ارجحیت دارد. ممکن است در هر زمانی حذف شود.
--gpu-tex-pad-x, --gpu-tex-pad-y
بزرگ کردن بافت‌های منبع ویدیو به این تعداد پیکسل. صرفاً برای اشکال‌زدایی (به‌طور معمول اندازه بافت‌ها دقیق است، اما به‌دلیل تعامل‌پذیری با رمزگشایی سخت‌افزاری ممکن است مجبور باشیم با فاصله‌گذاری اضافی سر و کار داشته باشیم که می‌تواند با این گزینه‌ها آزمایش شود). ممکن است در هر زمانی حذف شود.
--opengl-early-flush=<yes|no|auto>
فراخوانی glFlush() پس از رندر کردن یک فریم و پیش از تلاش برای نمایش آن (پیش‌فرض: auto). در برخی موارد می‌تواند لکنت تصویر را برطرف کند و در موارد دیگر احتمالاً باعث ایجاد آن می‌شود. حالت auto تابع glFlush() را تنها در صورتی فراخوانی می‌کند که رندرکننده پس از رندر قصد داشته باشد مدتی منتظر بماند، به‌جای اینکه بافرهای جلو و عقب GL را فوراً جابجا کند (یعنی در حالت display-sync آن را فراخوانی نمی‌کند).
در macOS این گزینه همیشه غیرفعال است زیرا تنها باعث بروز مشکلات کارایی و پس‌رفت‌های دیگر می‌شود.
--gpu-dumb-mode=<yes|no|auto>
این حالت بسیار محدود است و بیشتر قابلیت‌های گسترش‌یافته را غیرفعال می‌کند. این شامل مقیاس‌دهنده‌های باکیفیت و سایه‌زن‌های سفارشی نیز می‌شود!
این گزینه برای سخت‌افزارهایی در نظر گرفته شده است که از FBOها پشتیبانی نمی‌کنند (از جمله GLES که پشتیبانی ناکافی از آن دارد)، یا برای به‌دست آوردن کارایی بیشتر از سخت‌افزارهای ضعیف یا قدیمی.
این حالت در صورت نیاز به‌طور خودکار تحمیل می‌شود و این گزینه بیشتر برای اشکال‌زدایی کاربرد دارد. مقدار پیش‌فرض auto در صورتی که هیچ چیزی از قابلیت‌های نیازمند FBO استفاده نکند، آن را به‌طور خودکار فعال خواهد کرد.
این گزینه ممکن است در آینده بدون اعلان حذف شود.
--gpu-shader-cache
ذخیره و بارگذاری سایه‌زن‌های کامپایل‌شده‌ی GLSL در دایرکتوری حافظه موقت (کش) (پیش‌فرض: yes). معمولاً کامپایل سایه‌زن بسیار سریع است، بنابراین به‌طور معمول نیازی به این گزینه نیست. این گزینه بیشتر برای مواردی که شامل تبدیل GLSL به SPIR-V هستند اهمیت دارد؛ یعنی: D3D11، ANGLE یا Vulkan، و همچنین در برخی دیگر از درایورهای اختصاصی. فعال کردن این گزینه می‌تواند کارایی راه‌اندازی را در این پلتفرم‌ها بهبود بخشد.
در --vo=gpu-next، فایل‌هایی که در ۲۴ ساعت گذشته به آن‌ها دسترسی پیدا نشده است، در صورت فراتر رفتن از حد مجاز حافظه موقت (128 MiB) ممکن است پاک شوند.
در --vo=gpu، این پاک‌سازی به‌طور خودکار انجام نمی‌شود، بنابراین ممکن است فایل‌های کش قدیمی و استفاده‌نشده برای همیشه باقی بمانند.
--gpu-shader-cache-dir
دایرکتوری که کش سایه‌زن gpu در آن ذخیره می‌شود. در صورت تنظیم نشدن این گزینه، کش در دایرکتوری حافظه موقت سیستم (معمولاً ~/.cache/mpv) ذخیره می‌شود.
--libplacebo-opts=<key>=<value>[,<key>=<value>[,...]]
ارسال گزینه‌های خام اضافی به بخش پشتیبان رندرینگ libplacebo (مورد استفاده توسط --vo=gpu-next). ممکن است تأثیرات سایر گزینه‌های تنظیم‌شده از طریق سیستم گزینه‌های معمول را نادیده بگیرد. نیازمند libplacebo نسخه v6.309 یا بالاتر است. صرفاً برای اهداف اشکال‌زدایی گنجانده شده است. برای اطلاعات بیشتر، ببینید:
https://libplacebo.org/options
0.0
--mc=<seconds/frame>
حداکثر تصحیح همگام‌سازی A-V در هر فریم (به ثانیه)
--autosync=<factor>
همگام‌سازی A/V را به‌تدریج بر اساس اندازه‌گیری‌های تاخیر صدا تنظیم می‌کند.
مشخص کردن --autosync=0 (پیش‌فرض)، باعث می‌شود زمان‌بندی فریم‌ها
تماماً بر اساس اندازه‌گیری‌های تاخیر صدا باشد. مشخص کردن --autosync=1
همان نتیجه را دارد، اما الگوریتم تصحیح A/V را اندکی تغییر می‌دهد. نرخ فریم
ناهموار در ویدیویی که با --audio=no به‌خوبی پخش می‌شود، اغلب با
تنظیم این گزینه روی یک عدد صحیح بزرگ‌تر از ۱ بهبود می‌یابد. هرچه مقدار
بزرگ‌تر باشد، زمان‌بندی به --audio=no نزدیک‌تر خواهد بود. مقدار
--autosync=30 را امتحان کنید تا مشکلات درایورهای صوتی که اندازه‌گیری
تاخیر صدا را به‌طور کامل و دقیق پیاده‌سازی نکرده‌اند هموار شود. با این مقدار،
اگر انحراف‌های بزرگ در همگام‌سازی A/V رخ دهد، تثبیت و حل آن‌ها تنها حدود ۱ یا
۲ ثانیه طول می‌کشد. این تاخیر در زمان واکنش به انحراف‌های ناگهانی A/V باید
تنها اثر جانبی فعال کردن این گزینه برای تمام درایورهای صوتی باشد.
--video-timing-offset=<seconds>
مدت زمانی را که فریم باید پیش از زمان هدف نمایش ویدیو رندر شود کنترل می‌کند
(پیش‌فرض: 0.050). اگر قرار باشد یک فریم ویدیو در زمان مشخصی نمایش داده شود،
VO رندر کردن فریم را زودتر آغاز کرده و سپس تا زمان نمایش در حالت انتظار
انسدادی (blocking wait) می‌ماند، و تنها پس از آن فریم را برای نمایش "جابجا" (swap)
می‌کند. رندر فریم نمی‌تواند پیش از نمایش فریم قبلی آغاز شود، بنابراین این مقدار
به‌طور ضمنی با نرخ فریم ویدیو محدود می‌شود. در نرخ فریم‌های عادی ویدیو، مقدار
پیش‌فرض تضمین می‌کند که رندر همواره بلافاصله پس از نمایش فریم پیشین آغاز گردد.
از سوی دیگر، تنظیم مقداری بیش از حد بالا می‌تواند پاسخ‌دهی را در مقادیر پایین FPS
کاهش دهد.
این گزینه برای کاربران API کلاینت که از API رندر استفاده می‌کنند سودمند است،
زیرا می‌توانید از محدود کردن FPS توسط آن جلوگیری کنید
(مستندات mpv_render_context_render() را ببینید).
این گزینه تنها روی حالت‌های زمان‌بندی صوتی اعمال می‌شود (مانند --video-sync=audio).
در حالت‌های دیگر (--video-sync=display-...)، زمان‌بندی ویدیو به مسدودسازی
vsync وابسته است و این گزینه استفاده نمی‌شود.
--video-sync=<audio|...>
نحوه همگام‌سازی صدا و تصویر توسط پخش‌کننده.
اگر از این گزینه استفاده می‌کنید، معمولاً می‌خواهید آن را روی display-resample
تنظیم کنید تا یک حالت زمان‌بندی فعال شود که تلاش می‌کند برای مثال هنگام پخش ویدیوی
24fps روی یک نمایشگر 24Hz، فریم‌ها حذف یا تکرار نشوند.
حالت‌هایی که با display- آغاز می‌شوند تلاش می‌کنند فریم‌های ویدیو را کاملاً
همگام با نمایشگر ارسال کنند؛ این کار با استفاده از نرخ نوسازی عمودی شناسایی‌شده‌ی
نمایشگر به‌عنوان راهنمایی برای تخمین میانگین سرعت نمایش فریم‌ها صورت می‌گیرد.
این حالت‌ها سرعت ویدیو را اندکی تغییر می‌دهند تا با نمایشگر هماهنگ شود. برای
تنظیم دقیق، گزینه‌های --video-sync-... را ببینید. پایداری این حالت با در
نظر گرفتن برخی فرضیات آرمانی که ممکن است همیشه در عمل برقرار نباشند، تا حدی
کاهش می‌یابد. رفتار می‌تواند به VO و درایورهای ویدیویی و صوتی سیستم بستگی داشته
باشد. فایل‌های چندرسانه‌ای باید از نرخ فریم ثابت (CFR) استفاده کنند. ممکن است
VFR بخش‌به‌بخش نیز با برخی قالب‌های حامل کار کند (اما مثلاً در mkv کار نمی‌کند).
تحت شرایطی خاص، پخش‌کننده به‌طور خودکار برای مدتی یا به‌صورت دائمی به حالت audio
بازمی‌گردد. این حالت ممکن است در ویدیوهایی با نرخ فریم بسیار پایین، یا در حالتی
که نرخ فریم قابل شناسایی نباشد رخ دهد.
همچنین در حالت‌های display-sync ممکن است وقفه‌ها در پخش ویدیو (مانند رفتن به
حالت تمام‌صفحه یا صرفاً تغییر اندازه پنجره) باعث پرش از روی فریم‌هایی شوند که باید
نمایش داده می‌شدند، در حالی که حالت audio آن‌ها را پس از ازسرگیری مجدد رندرکننده
نمایش می‌دهد (که معمولاً به یک ناهماهنگی کوتاه A/V و "شتاب گرفتن ویدیو برای رسیدن به صدا"
منجر می‌شود).
پیش از نسخه 0.30.0 نرم‌افزار mpv، در صورت وقوع ناهماهنگی شدید A/V یک بازگشت خودکار
به حالت audio وجود داشت. این سازوکار تغییر کرد تا پخش ویدیو به‌صورت مقطعی متوقف نشود.
اکنون display-desync دقیقاً وظیفه خود را انجام می‌دهد و ممکن است به هر میزانی
با صدا ناهماهنگ شود، تا زمانی که با یک پرش (seek) به‌طور دستی رفع شود.
این حالت‌ها همچنین به یک شیوه ارائه با vsync مسدودشده نیاز دارند. برای OpenGL،
این به معنی --opengl-swapinterval=1 است. برای Vulkan، این معادل با
--vulkan-swap-mode=fifo (یا fifo-relaxed) خواهد بود.
حالت‌هایی که کلمه desync در نام آن‌ها وجود دارد هیچ تلاشی برای همگام نگه داشتن
صدا و تصویر نمی‌کنند. آن‌ها به آرامی (یا به‌سرعت) ناهماهنگ می‌شوند تا زمانی که
مثلاً پرش بعدی انجام گیرد. این حالت‌ها صرفاً برای آزمایش در نظر گرفته شده‌اند و
نه کاربرد معمول.
7.0
audio
زمان‌بندی فریم‌های ویدیو بر اساس صدا. این پایدارترین حالت است،
چرا که پخش‌کننده نیازی ندارد فرضیاتی درباره نحوه رفتار نمایشگر
در نظر بگیرد. ایراد این شیوه آن است که گاهی می‌تواند باعث افت
یا تکرار فریم‌ها شود. اگر صدا غیرفعال باشد، از ساعت سیستم استفاده
می‌شود. این حالت پیش‌فرض است.
display-resample
نمونه‌برداری مجدد (resample) صدا برای تطبیق با ویدیو. این حالت همچنین
تلاش می‌کند تا سرعت صدا را برای جبران سایر انحراف‌ها تنظیم کند.
(این یعنی گهگاه صدا را با سرعت متفاوتی پخش می‌کند تا اختلاف A/V را
کاهش دهد.)
display-resample-vdrop
نمونه‌برداری مجدد صدا برای تطبیق با ویدیو. فریم‌های ویدیو را برای
جبران انحراف حذف می‌کند (drop).
display-resample-desync
مشابه حالت پیشین، اما بدون جبران ناهماهنگی A/V.
display-tempo
مشابه display-resample، اما اعمال تغییرات سرعت صدا روی فیلترهای صوتی
به جای نمونه‌برداری مجدد، تا از تغییر زیروبمی (pitch) جلوگیری شود. توجه
داشته باشید برخی از فیلترهای صوتی با سرعتی نزدیک به ۱ عملکرد مناسبی ندارند.
پیشنهاد می‌شود از یک نمایه شرطی (conditional profile) استفاده کنید تا در
صورتی که سرعت برای پیکربندی فیلتر شما بیش از حد به ۱ نزدیک شد، به‌طور
خودکار به display-resample تغییر کند. از عبارت (speed * video_speed_correction)
برای دریافت سرعت واقعی پخش در شرط استفاده کنید. برای جزئیات به نمایه‌های
خودکار شرطی مراجعه کنید.
display-vdrop
حذف یا تکرار فریم‌های ویدیو برای جبران ناهماهنگ شدن ویدیو. (اگرچه
باید اثری مشابه با حالت audio داشته باشد، اما پیاده‌سازی آن بسیار متفاوت است.)
display-adrop
حذف یا تکرار داده‌های صوتی برای جبران ناهماهنگ شدن ویدیو. این حالت
اگر نرخ نوسازی واقعی مانیتور با مقدار گزارش‌شده یا اجباری تفاوت زیادی
داشته باشد، اعوجاج‌های صوتی شدیدی ایجاد می‌کند. از نسخه 0.33.0 نرم‌افزار mpv،
این گزینه به جای نمونه‌های منفرد صوتی، روی کل فریم‌های صوتی عمل می‌کند.
display-desync
همگام‌سازی ویدیو با نمایشگر، و پخش مستقل صدا.
desync
همگام‌سازی ویدیو بر اساس ساعت سیستم، و پخش مستقل صدا.
168u
--video-sync-max-factor=<value>
حداکثر مضربی که تلاش می‌شود طی آن FPS ویدیو با FPS نمایشگر تطبیق داده شود
(پیش‌فرض: 5).
برای نمونه، اگر این مقدار روی ۱ تنظیم شود، FPS ویدیو مجبور به پیروی از یک
مضرب صحیح از FPS نمایشگر می‌شود، تا زمانی که تغییر سرعت از مقدار تعیین‌شده با
--video-sync-max-video-change فراتر نرود.
برای چگونگی تأثیر این گزینه بر درونیابی، --interpolation-threshold را ببینید.
--video-sync-max-video-change=<value>
حداکثر اختلاف سرعت به درصد که با --video-sync=display-... روی ویدیو
اعمال می‌شود (پیش‌فرض: 1). اگر مانیتور و روش نوسازی ویدیو در بازه ارائه‌شده
همخوانی نداشته باشند، حالت همگام‌سازی با نمایشگر غیرفعال خواهد شد. این گزینه
مضرب‌ها را نیز بررسی می‌کند: پخش ویدیوی 30 fps روی صفحه‌نمایش 60 Hz هر فریم دوم
را تکرار می‌کند. پخش ویدیوی 24 fps روی صفحه‌نمایش 60 Hz ویدیو را بر اساس الگوی
پخش خواهد کرد.
تنظیمات پیش‌فرض به اندازه کافی منعطف نیستند که بتوانند ویدیوی 23.976 fps را به
25 fps شتاب دهند. ما تغییر زیروبمی (pitch) صدا را شدیدتر از آن می‌دانیم که به‌طور
پیش‌فرض مجاز باشد. این گزینه را روی مقدار 5 تنظیم کنید تا فعال شود.
توجه داشته باشید که --video-sync=display-tempo از این تغییر زیروبمی
جلوگیری می‌کند.
همچنین توجه داشته باشید که در حالت‌های --video-sync=display-resample یا
--video-sync=display-tempo، در صورت لزوم برای همگام‌سازی A/V، سرعت صدا
علاوه بر این به میزان اندکی تغییر خواهد کرد. به --video-sync-max-audio-change
مراجعه کنید.
--video-sync-max-audio-change=<value>
حداکثر اختلاف سرعت اضافی به درصد که با --video-sync=display-... روی
صدا اعمال می‌شود (پیش‌فرض: 0.125). در حالت معمول، پخش‌کننده صدا را با سرعت ویدیو
پخش می‌کند. اما اگر فاصله بین موقعیت صدا و تصویر بیش از حد زیاد باشد، مثلاً به
دلیل انحراف زمانی یا سایر خطاهای زمان‌بندی، تلاش می‌کند تا سرعت صدا را به میزان این
ضریب اضافی افزایش یا کاهش دهد. مقادیر بسیار کم در صورتی که ناهماهنگی A/V قابل
جبران نباشد، می‌تواند به حذف یا تکرار فریم‌های ویدیو بیانجامد؛ مقادیر بیش از حد زیاد
نیز ممکن است باعث افت آشفته فریم‌ها به دلیل "فرارفتن" (overshooting) صدا و رد کردن
چندین فریم پیش از واکنش منطق همگام‌سازی شود.
0.0
--display-tags=tag1,tags2,...
تنظیم فهرست برچسب‌هایی که باید در ترمینال و بخش آمار (stats) نمایش داده شوند.
برچسب‌هایی که در فهرست هستند اما در فایل در حال پخش وجود ندارند، نشان داده
نخواهند شد. اگر مقداری با * خاتمه یابد، همهٔ برچسب‌ها بر اساس پیشوند
تطبیق داده می‌شوند (هرچند الگوی فراگیر عام یا همان globbing وجود ندارد).
صرفاً ارسال * عملاً فیلتر کردن را نادیده می‌گیرد.
پیش‌فرض شامل فهرستی متداول از برچسب‌ها است؛ برای مشاهدهٔ آن mpv را با
--list-options فراخوانی کنید.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
--mf-fps=<value>
نرخ فریم مورد استفاده هنگام رمزگشایی از چندین فایل PNG یا JPEG با mf://
(پیش‌فرض: 1).
--mf-type=<value>
نوع فایل ورودی برای mf:// (مقادیر در دسترس: jpeg، png، tga، sgi). به طور
پیش‌فرض، این مقدار از روی پسوند فایل حدس زده می‌شود.
--stream-dump=<destination-filename>
به جای پخش فایل، جریان بایتی آن را خوانده و در فایل مقصد مشخص‌شده می‌نویسد.
فایل مقصد رونویسی می‌شود. این گزینه می‌تواند برای آزمایش رفتارهای مرتبط با شبکه
مفید باشد.
--stream-lavf-o=opt1=value1,opt2=value2,...
تنظیم AVOptions بر روی جریان‌های باز شده با libavformat. گزینه‌های ناشناخته
یا با املای نادرست در سکوت نادیده گرفته می‌شوند. (آن‌ها در خروجی ترمینال در
حالت پرحرف، یعنی --v ذکر می‌شوند. به طور کلی نمی‌توان خطاها را چاپ کرد،
زیرا گزینه‌های دیگر مانند user agent در تمام پروتکل‌ها موجود نیستند و چاپ
خطاها برای گزینه‌های ناشناخته در نهایت بیش از حد شلوغ‌کننده خواهد بود.)
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
--backdrop-type=<auto|none|mica|acrylic|mica-alt>
(فقط Windows)
سبک پس‌زمینه/حاشیه را کنترل می‌کند.
7.0
auto
رفتار پیش‌فرض Windows
none
پس‌زمینه بسته به تنظیمات پوستهٔ سیستم سیاه یا سفید خواهد بود.
mica
سبک Mica را فعال می‌کند، که در Windows 11 پیش‌فرض است.
acrylic
سبک Acrylic را فعال می‌کند (ظاهر شیشه مات).
mica-alt
مشابه Mica، به استثنای معکوس بودن.
168u
--window-affinity=<default|excludefromcmcapture|monitor>
(فقط Windows)
رفتار وابستگی پنجره (window affinity) را در mpv کنترل می‌کند.
7.0
default
رفتار پیش‌فرض Windows
excludefromcapture
پنجرهٔ mpv به طور کامل از ضبط توسط برنامه‌های خارجی یا نرم‌افزارهای تصویربرداری از صفحه مستثنی خواهد شد.
monitor
پنجرهٔ mpv را کاملاً سیاه می‌کند
168u
--vo-mmcss-profile=<name>
(فقط Windows)
تنظیم نمایهٔ MMCSS برای ریسهٔ رندرکننده ویدیو (پیش‌فرض: Playback).
--priority=<prio>
(فقط Windows)
تنظیم اولویت فرایند برای mpv با توجه به اولویت‌های از پیش تعریف‌شده و
در دسترس در Windows.
مقادیر ممکن برای <prio>:
idle|belownormal|normal|abovenormal|high|realtime
هشدار:
7.0
3.5
استفاده از اولویت realtime می‌تواند موجب قفل شدن سیستم شود.
168u
168u
--media-controls=<yes|no>
(فقط Windows)
فعال‌سازی یکپارچه‌سازی رابط کنترل چندرسانه‌ای SystemMediaTransportControls.
ممکن است Windows عبارت "Unknown app" را نمایش دهد یا آیکون mpv در کنترل پنل
رسانه وجود نداشته باشد. برای پشتیبانی کامل از آن، باید با استفاده از دستور
--register نرم‌افزار mpv را ثبت کنید.
پیش‌فرض: yes (به جز در libmpv)
--force-media-title=<string>
محتوای ویژگی media-title را به این مقدار تحمیل می‌کند. برای اسکریپت‌هایی
کاربرد دارد که می‌خواهند عنوانی را تعیین کنند، بدون این که تنظیمات کاربر در
--title بازنویسی شود.
--external-files=<file-list>
بارگذاری یک فایل و افزودن تمامی ترک‌های آن. این گزینه برای پخش هم‌زمان
فایل‌های مختلف (برای مثال صدا از یک فایل و تصویر از فایلی دیگر)، یا برای
موارد استفادهٔ پیشرفته از --lavfi-complex (مانند پخش هم‌زمان دو فایل
ویدیویی) مفید است.
برخلاف --sub-files و --audio-files، این گزینه شامل تمام ترک‌ها
می‌شود و باعث گزینش پیش‌فرض جریان بر روی فایل "اصلی" نخواهد شد. این امر
باعث تداخل به مراتب کمتری می‌شود. (در mpv نسخهٔ 0.28.0 و پیش از آن، این مورد
چندان با سخت‌گیری اعمال نمی‌شد.)
این یک گزینه از نوع فهرست مسیر است. برای جزئیات به List Options مراجعه کنید.
--external-file=<file>
نام مستعار فقط برای خط فرمان/فایل پیکربندی برای --external-files-append.
هر بار استفاده از این گزینه، یک فایل خارجی جدید اضافه خواهد کرد.
--cover-art-files=<file-list>
استفاده از یک فایل خارجی به عنوان کاور آرت (تصویر روی جلد) هنگام پخش صدا.
این کار باعث می‌شود فایل در فهرست ترک‌ها قرار گیرد و مشمول گزینش خودکار ترک شود.
گزینه‌هایی مانند --audio-display تعیین می‌کنند که آیا چنین ترک‌هایی باید
انتخاب شوند یا خیر.
(تفاوت این گزینه با بارگذاری فایل از طریق --external-files این است که
ترک‌های ویدیویی به عنوان تصویر نشانه‌گذاری می‌شوند که بر روش گزینش خودکار
تأثیر می‌گذارد. اگر فایل ارسال‌شده ویدیو باشد، فقط فریم اول رمزگشایی و
نمایش داده خواهد شد. در صورتی که فایل منبع ویدیو باشد، فعال کردن ترک کاور آرت
در حین پخش ممکن است یک فریم تصادفی را نشان دهد. معمولاً نباید ویدیوها را به
این گزینه ارسال کنید، از این رو این بند صرفاً رفتاری را توضیح می‌دهد که بر حسب
اتفاق ناشی از جزئیات پیاده‌سازی است.)
این یک گزینه از نوع فهرست مسیر است. برای جزئیات به List Options مراجعه کنید.
--cover-art-file=<file>
نام مستعار فقط برای خط فرمان/فایل پیکربندی برای --cover-art-files-append.
هر بار استفاده از این گزینه، یک فایل خارجی جدید اضافه خواهد کرد.
--cover-art-auto=<no|exact|fuzzy|all>
تعیین این که آیا کاور آرت _خارجی_ به طور خودکار بارگذاری شود یا خیر. مشابه با
--sub-auto و --audio-file-auto. اگر ویدیو از قبل ترک‌هایی
داشته باشد (که به عنوان کاور آرت علامت‌گذاری نشده‌اند)، کاور آرت خارجی بارگذاری
نخواهد شد.
7.0
no
کاور آرت را به طور خودکار بارگذاری نمی‌کند.
exact
نام فایل رسانه را همراه با پسوند فایل تصویری بارگذاری می‌کند (پیش‌فرض).
fuzzy
همهٔ کاور آرت‌های حاوی نام فایل رسانه را بارگذاری می‌کند.
all
همهٔ تصاویر موجود در دایرکتوری فعلی را بارگذاری می‌کند.
168u
برای جزئیات بیشتر در مورد آنچه کاور آرت به شمار می‌آید، به --cover-art-files مراجعه کنید.
برای چگونگی کنترل نمایش کاور آرت، به --audio-display مراجعه کنید (از این
گزینه می‌توان برای غیرفعال کردن کاور آرتی که بخشی از خود فایل است استفاده کرد).
--image-exts=ext1,ext2,...
پسوندهای فایل‌های تصویری برای تلاش جهت تطبیق هنگام استفاده از --cover-art-auto،
--autocreate-playlist یا --directory-filter-types.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
برای مشاهدهٔ پسوندهای پیش‌فرض از --help=image-exts استفاده کنید.
--cover-art-whitelist=filename1,filename2,...
نام فایل‌ها برای بارگذاری به عنوان کاور آرت، که به ترتیب اولویت نزولی مرتب
شده‌اند. آن‌ها با پسوندهای موجود در --image-exts ترکیب می‌شوند.
در صورتی که مقدار cover-art-auto برابر با no باشد، این گزینه
هیچ اثری ندارد.
پیش‌فرض: AlbumArt,Album,cover,front,AlbumArtSmall,Folder,.folder,thumb
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید..TP
--video-exts=ext1,ext2,...
پسوندهای فایل ویدیویی برای مطابقت هنگام استفاده از --autocreate-playlist یا
--directory-filter-types.
این گزینه از نوع فهرست رشته‌ای است. برای جزئیات به بخش List Options مراجعه کنید.
برای دیدن پسوندهای پیش‌فرض از --help=video-exts استفاده کنید.
--archive-exts=ext1,ext2,...
پسوندهای فایل آرشیو برای مطابقت هنگام استفاده از --autocreate-playlist
یا --directory-filter-types.
این گزینه از نوع فهرست رشته‌ای است. برای جزئیات به بخش List Options مراجعه کنید. برای دیدن
پسوندهای پیش‌فرض از --help=archive-exts استفاده کنید.
--playlist-exts=ext1,ext2,...
پسوندهای فایل لیست پخش برای مطابقت هنگام استفاده از
--autocreate-playlist یا --directory-filter-types.
این گزینه از نوع فهرست رشته‌ای است. برای جزئیات به بخش List Options مراجعه کنید. برای دیدن
پسوندهای پیش‌فرض از --help=playlist-exts استفاده کنید.
--autoload-files=<yes|no>
بارگذاری/انتخاب خودکار فایل‌های خارجی (پیش‌فرض: yes).
اگر روی no تنظیم شود، فایل‌های خارجی تعیین‌شده توسط --sub-auto،
--audio-file-auto و --cover-art-auto به‌طور خودکار بارگذاری نمی‌شوند.
اگر فایل‌های خارجی به‌طور اجباری اضافه شوند (مانند --sub-files)، به‌طور
خودکار انتخاب نخواهند شد.
این گزینه بر گسترش لیست پخش، تغییر مسیر، یا بارگذاری‌های دیگر فایل‌های
ارجاع‌شده مانند فصل‌های مرتب‌شده (ordered chapters) تأثیری ندارد.
--stream-record=<file>
نوشتن داده‌های دریافتی/خوانده‌شده از demuxer در فایل خروجی داده‌شده. فایل
خروجی همیشه بدون پرسش بازنویسی خواهد شد. قالب خروجی بر اساس پسوند فایل
خروجی تعیین می‌شود.
تعویض جریان‌ها یا پرش زمانی در حین ضبط ممکن است باعث متوقف شدن ضبط
و/یا خرابی فایل‌ها شود. با احتیاط استفاده کنید.
پرش به خارج از حافظه موقت (cache) مربوط به demuxer باعث ایجاد «پرش‌ها» ("skips") در
فایل خروجی می‌شود، اما پرش درون حافظه موقت demuxer نباید بر ضبط تأثیر بگذارد.
یک استثنا زمانی است که آن‌قدر به عقب پرش کنید که از اندازه بافر رو به جلو
فراتر رود؛ در این حالت حافظه موقت خواندن فعال را متوقف می‌کند. در صورتی که با
یک پخش زنده (live stream) روبرو باشید، این امر منجر به از دست رفتن داده‌ها خواهد شد.
اگر این گزینه در زمان اجرا (runtime) تنظیم شود، فایل قدیمی بسته شده و فایل جدید
باز می‌شود. توجه داشته باشید که این کار تنها داده‌هایی را که در انتهای حافظه موقت
الحاق می‌شوند می‌نویسد، و داده‌هایی که پیش‌تر در حافظه موقت قرار گرفته‌اند قابل
نوشتن نیستند. می‌توانید دستور dump-cache را به عنوان یک جایگزین امتحان کنید.
فایل‌های خارجی (--audio-file و غیره) در این گزینه نادیده گرفته می‌شوند؛
این قابلیت تنها روی فایل «اصلی» ("main") کار می‌کند. همچنین استفاده از این
ویژگی با فایل‌هایی که از فصل‌های مرتب‌شده یا فایل‌های EDL استفاده می‌کنند به‌طور
کلی به درستی کار نخواهد کرد.
در این قابلیت برخی ایرادات و ناسازگاری‌ها وجود دارد زیرا از libavformat متعلق
به FFmpeg برای نوشتن فایل خروجی استفاده می‌کند. به عنوان مثال، معمولاً تنها در صورتی
کار می‌کند که قالب خروجی با قالب ورودی یکسان باشد. این حالت حتی اگر با ابزار
ffmpeg کار کند نیز صادق است. یک دلیل برای این امر آن است که ffmpeg
و کتابخانه‌های آن شامل ترفندها و راه‌حل‌های موقتی خاصی برای این مسائل هستند که
در دسترس کاربران خارجی قرار ندارد.
--lavfi-complex=<string>
تنظیم یک فیلتر «پیچیده» ("complex") در libavfilter، به این معنی که یک گراف
فیلتر منفرد می‌تواند از چندین قطعه صوتی و ویدیویی منبع ورودی بگیرد. این گراف می‌تواند
به یک خروجی صوتی یا ویدیویی منفرد (یا هر دو) ختم شود.
در حال حاضر، برچسب‌های گراف فیلتر برای انتخاب قطعه‌های ورودی و خروجی صوتی/ویدیویی
مشارکت‌کننده استفاده می‌شوند. قواعد زیر اعمال می‌شوند:
7.0
• 2
برچسبی به شکل aidN، قطعه صوتی N را به عنوان ورودی انتخاب می‌کند (مانند
aid1).
• 2
برچسبی به شکل vidN، قطعه ویدیویی N را به عنوان ورودی انتخاب می‌کند.
• 2
برچسبی به نام ao به خروجی صوتی متصل خواهد شد.
• 2
برچسبی به نام vo به خروجی ویدیویی متصل خواهد شد.
168u
هر برچسب فقط یک بار می‌تواند استفاده شود. اگر مثلاً می‌خواهید از یک جریان صوتی
برای چندین فیلتر استفاده کنید، باید از فیلتر asplit استفاده کنید. داشتن
چندین خروجی صوتی یا ویدیویی ممکن نیست، اما می‌توانید از فیلترها برای ادغام
آن‌ها در یکی استفاده نمایید.
تغییر قطعه‌های متصل به فیلتر در زمان اجرا امکان‌پذیر نیست، مگر اینکه صراحتاً ویژگی
lavfi-complex را تغییر داده و انتساب‌های جدیدی برای قطعه‌ها تنظیم کنید. با
تغییر گراف، انتخاب قطعه‌ها نیز بر اساس برچسب‌های استفاده‌شده تغییر خواهد کرد.
سایر قطعه‌ها، مادامی که به فیلتر متصل نباشند و خروجی مربوطه نیز به فیلتر متصل
نباشد، همچنان می‌توانند آزادانه با روش‌های معمول تغییر داده شوند.
توجه داشته باشید که زنجیره‌های فیلتر معمولی (--af، --vf) بین گراف‌های
پیچیده (مانند برچسب ao) و خروجی واقعی اعمال می‌شوند.
7.0
3.5
"مثال‌ها"
0.0
• 2
--lavfi-complex='[aid1] [aid2] amix [ao]'
پخش هم‌زمان قطعه‌های صوتی ۱ و ۲.
• 2
--lavfi-complex='[vid1] [vid2] vstack [vo]'
روی هم چیدن قطعه‌های ویدیویی ۱ و ۲ و پخش هم‌زمان آن‌ها. توجه داشته باشید که هر
دو قطعه باید عرض یکسانی داشته باشند، وگرنه مقداردهی اولیه فیلتر با شکست مواجه
خواهد شد (می‌توانید برای اصلاح اندازه، فیلترهای scale را پیش از فیلتر
vstack اضافه کنید).
برای بارگذاری یک قطعه ویدیویی از فایلی دیگر، می‌توانید از
--external-file=other.mkv استفاده کنید.
• 2
--lavfi-complex='[vid1] [vid2] [vid3] hstack=inputs=3 [vo]'
استفاده از گزینه inputs برای کنار هم چیدن بیش از ۲ قطعه.
• 2
--lavfi-complex='[aid1] asplit [t1] [ao] ; [t1] showvolume [t2] ; [vid1] [t2] overlay [vo]'
پخش قطعه صوتی ۱، و انداختن حجم صدای اندازه‌گیری‌شده برای هر بلندگو بر روی
قطعه ویدیویی ۱.
168u
168u
168u
برای جزئیات مربوط به فیلترهای موجود، مستندات FFmpeg libavfilter را ببینید.
--metadata-codepage=<codepage>
صفحه‌کد برای فراداده‌های ورودی گوناگون (پیش‌فرض: auto). این امر بر چگونگی
تفسیر برچسب‌های فایل، عناوین فصل‌ها و غیره تأثیر می‌گذارد. در بیشتر موارد، این
گزینه صرفاً به UTF-8 ارزیابی می‌شود زیرا صفحه‌کدهای غیر UTF-8 نامعمول هستند.
برای چگونگی مشخص کردن صفحه‌کدها و جزئیات بیشتر پیرامون تشخیص خودکار و
تبدیل صفحه‌کد، گزینه --sub-codepage را ببینید. (کد زیربنایی یکسان است.)
تبدیل بر روی فراداده‌هایی که در زمان اجرا به‌روزرسانی می‌شوند اعمال نمی‌شود.
--clipboard-backends=<backend1,backend2,...[,]>
مشخص کردن یک فهرست اولویت‌بندی‌شده از backendهای کلیپ‌بورد برای استفاده.
همچنین می‌توانید help را پاس دهید تا فهرستی کامل از backendهای کامپایل‌شده
را دریافت کنید.
اگر این فهرست خالی نباشد، پشتیبانی بومی کلیپ‌بورد را برای backendهای مشخص‌شده
فعال می‌کند. این کار امکان خواندن و نوشتن در ویژگی clipboard را برای
دریافت و تنظیم محتوای کلیپ‌بورد فراهم می‌سازد.
پشتیبانی بومی کلیپ‌بورد به‌طور پیش‌فرض فعال است. برای غیرفعال کردن آن، تمامی
backendهای این فهرست را با --clipboard-backends-clr حذف کنید.
توجه داشته باشید که backendهای پیش‌فرض کلیپ‌بورد ممکن است تغییر کنند و
نباید به آن‌ها تکیه کرد.
backendهای کلیپ‌بورد زیر پیاده‌سازی شده‌اند:
7.0
win32
پشتانه Windows.
mac
پشتانه macOS.
x11
پشتانه X11. این backend تنها در صورتی در دسترس است که سرور X از
افزونه Xfixes پشتیبانی کند.
wayland
پشتانه Wayland. این backend تنها در صورتی در دسترس است که کامپوزیتور
از پروتکل ext-data-control-v1 پشتیبانی کند.
vo
پشتانه VO. نیازمند یک پنجره VO فعال است و پشتیبانی از آن در پلتفرم‌های
مختلف متفاوت است. در حال حاضر، از این پشتانه به عنوان جایگزین پشتیبان (fallback)
برای کامپوزیتورهای Wayland فاقد پشتیبانی از پروتکل ext-data-control-v1،
یا در صورت غیرفعال بودن backend مربوط به wayland استفاده می‌شود.
168u
این گزینه از نوع فهرست تنظیمات شیء است. برای جزئیات به بخش List Options مراجعه کنید.
--clipboard-monitor=<yes|no>
فعال‌سازی پایش کلیپ‌بورد تا ویژگی clipboard بتواند برای تغییرات محتوا
تحت نظارت قرار گیرد (پیش‌فرض: no). این گزینه تنها بر پیاده‌سازی‌های کلیپ‌بوردی
اثر می‌گذارد که از نظرسنجی دوره‌ای (polling) برای پایش به‌روزرسانی‌های کلیپ‌بورد
استفاده می‌کنند. سایر پلتفرم‌ها در حال حاضر این گزینه را نادیده گرفته و همواره
یا هرگز تغییرات را اعلام نمی‌کنند..sp
در Wayland، این گزینه تنها روی backend مربوط به wayland تأثیر دارد و روی backend مربوط به vo بی‌تأثیر است. برای جزئیات بیشتر، ویژگی current-clipboard-backend را ببینید.
--clipboard-xwayland=<yes|no>
فعال‌سازی backend بریده‌دان X11 در محیط‌های مشکوک به Wayland (پیش‌فرض: no).
بسته به مدیر ترکیب Wayland (کامپوزیتور)، استفاده از backend مربوط به X11 ممکن است باعث ناتوانی mpv در دریافت داده‌های بریده‌دان از کلاینت‌های بومی Wayland شود. غیرفعال‌سازی backend مربوط به X11 هنگامی که backend مربوط به Wayland در دسترس نیست، باعث بازگشت (fallback) mpv به backend مربوط به VO می‌شود که اجازه می‌دهد بریده‌دان به‌درستی کار کند.
--register
(تنها در Windows) (همچنین به عنوان برنامه کمکی mpv-register در دسترس است)
برنامه mpv را به عنوان یک پخش‌کننده رسانه در Windows ثبت می‌کند. این عمل شامل افزودن مدخل‌های رجیستری برای مرتبط‌سازی mpv با فایل‌ها و پروتکل‌های رسانه‌ای، و همچنین فعال‌سازی گرداننده‌های پخش خودکار (autoplay) برای Blu-ray، DVD و CD-Audio است.
توجه داشته باشید که ثبت در همان محل (in-place) انجام می‌شود، بنابراین مسیر فعلی mpv.exe استفاده خواهد شد. اگر mpv را پس از ثبت جابه‌جا کنید، می‌توانید این دستور را دوباره اجرا کنید تا مدخل‌های رجیستری به‌روزرسانی شوند. شما همچنین می‌توانید در هر زمان و با استفاده از هر باینری mpv که از این دستور پشتیبانی می‌کند، عمل --unregister را انجام دهید؛ نیازی نیست مشخصاً همان فایلی باشد که برای ثبت آن استفاده شده است.
هنگام استفاده از این گزینه، mpv پس از تکمیل فرایند خارج خواهد شد. برای مشاهده فهرست دقیق عملیات‌ها، mpv را با گزینه -v اجرا کنید.
فهرست پسوندهای فایل برای ثبت را می‌توان با گزینه‌های --video-exts، --audio-exts، --image-exts، --playlist-exts و --archive-exts کنترل کرد.
به‌طور پیش‌فرض، mpv برای کاربر فعلی ثبت خواهد شد. برای ثبت آن برای همه کاربران، mpv را همراه با این گزینه به عنوان مدیر سیستم (administrator) اجرا کنید. با این حال، این کار توصیه نمی‌شود، زیرا ثبت به ازای هر کاربر به‌طور کلی ارجح است.
می‌توانید ثبت mpv را از بخش Windows Settings یا با اجرای mpv به همراه گزینه --unregister لغو کنید.
--register-rpath=<string>
(تنها در Windows)
هنگام ثبت با گزینه --register، این گزینه به شما اجازه می‌دهد مسیر(هایی) را برای درج در ابتدای متغیر PATH تعیین کنید تا mpv بتواند DLLهای لازم را پیدا کند. رشته مشخص‌شده هر زمان که mpv اجرا شود، به ابتدای متغیر PATH زمان اجرا افزوده خواهد شد.
این گزینه برای تنظیم مسیر کتابخانه‌های خارجی مورد نیاز mpv بدون افزودن آنها به متغیر محیطی سراسری PATH مفید است.
قالب این رشته از ساختار متغیر محیطی PATH پیروی می‌کند؛ یعنی فهرستی از مسیرها که با نقطه‌ویرگول (semicolon) از یکدیگر جدا شده‌اند.
نکته:
7.0
3.5
این گزینه کلید App Paths را برای mpv در رجیستری Windows تنظیم می‌کند، که پوسته ویندوز (Windows Shell) از آن برای یافتن فایل اجرایی و وابستگی‌های آن استفاده می‌کند. در نتیجه، mpv در بیشتر موارد به‌طور یکپارچه اجرا می‌شود، اما نه در هر سناریویی. به‌ویژه، اجرای mpv از خط فرمان در پشت صحنه از ShellExecute استفاده نمی‌کند، بلکه از CreateProcess استفاده می‌کند که کلید رجیستری App Paths را مدیریت نمی‌کند.
برای حل این مشکل، می‌توانید یک اسکریپت پوششی کوچک PowerShell ایجاد کنید که دستور Start-Process <mpv path> را اجرا کند و همه چیز طبق انتظار کار خواهد کرد.
168u
168u
--unregister
(تنها در Windows) (همچنین به عنوان برنامه کمکی mpv-unregister در دسترس است)
ثبت mpv را به عنوان یک پخش‌کننده رسانه در Windows لغو می‌کند و تمام تغییرات اعمال‌شده توسط گزینه --register را بازمی‌گرداند. این عمل فایل باینری mpv را حذف نخواهد کرد.
برای لغو ثبت، می‌توانید از هر باینری mpv که از این دستور پشتیبانی می‌کند استفاده کنید؛ نیازی نیست حتماً همان فایلی باشد که برای ثبت آن استفاده شده بود.
مدخل برنامه در بخش Windows Settings به مسیر mpv.exe وابسته است. اگر فایل باینری را حذف کنید، کار نخواهد کرد. با این حال، همچنان می‌توانید با استفاده از این دستور ثبت آن را لغو کنید، آن را در مکانی جدید ثبت کنید، یا mpv را به مکان اصلی‌اش بازگردانید.
اگر mpv قبلاً برای همه کاربران ثبت شده بود، این دستور را به عنوان مدیر سیستم (administrator) اجرا کنید تا برای همه کاربران حذف شود.
درایورهای خروجی صدا رابط‌هایی به امکانات مختلف خروجی صدا هستند. نحو دستور
به این صورت است:
0.0
--ao=<driver1,driver2,...[,]>
فهرستی اولویت‌بندی‌شده از درایورهای خروجی صدا را برای استفاده تعیین می‌کند.
168u
اگر انتهای فهرست به ',' ختم شود، mpv به درایورهایی که در فهرست وجود ندارند
بازگردانی (fall back) خواهد کرد.
این یک گزینه از نوع فهرست تنظیمات شیء است. برای جزئیات به بخش گزینه‌های فهرست (List Options) مراجعه کنید.
نکته:
0.0
3.5
برای دیدن فهرستی از درایورهای خروجی صدای همگردانی‌شده که بر اساس ترتیب
کاوش خودکار (autoprobe) مرتب شده‌اند، --ao=help را ببینید.
توجه داشته باشید که درایور پیش‌فرض خروجی صدا ممکن است تغییر کند و نباید به آن
اتکا کرد. اگر درایور خروجی صدای (AO) خاصی مد نظر است، باید صراحتاً تعیین شود.
168u
168u
درایورهای خروجی صدای موجود عبارتند از:
0.0
alsa
درایور خروجی صدای ALSA.
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--alsa-resample=yes
پلاگین بازنمونه‌برداری (resampling) در ALSA را فعال می‌کند. (این گزینه به طور
پیش‌فرض غیرفعال است، زیرا برخی درایورها در بعضی موارد تاخیر صدا را نادرست
گزارش می‌کنند.)
--alsa-mixer-device=<device>
دستگاه میکسر مورد استفاده با ao-volume را تنظیم می‌کند (پیش‌فرض: default).
--alsa-mixer-name=<name>
نام عنصر میکسر را تعیین می‌کند (پیش‌فرض: Master). برای نمونه
PCM یا Master.
--alsa-mixer-index=<number>
شاخص کانال میکسر را تعیین می‌کند (پیش‌فرض: 0). خروجی دستور
"amixer scontrols" را در نظر بگیرید؛ در آن صورت شاخص همان عددی است که
پس از نام عنصر می‌آید.
--alsa-non-interleaved
اجازه خروجی با قالب‌های غیرتودرتو (non-interleaved) را می‌دهد (اگر رمزگشای
صدا از این قالب استفاده کند). در حال حاضر به طور پیش‌فرض غیرفعال است، زیرا برخی
پلاگین‌های محبوب ALSA با قالب‌های non-interleaved کاملاً از کار می‌افتند.
--alsa-ignore-chmap
نقشه کانال دستگاه ALSA را نمی‌خواند یا تنظیم نمی‌کند - تنها تعداد کانال‌های
مورد نیاز را درخواست کرده و سپس صدا را به همان صورت به آن ارسال می‌کند.
به احتمال زیاد این گزینه نباید استفاده شود. این گزینه می‌تواند برای اشکال‌زدایی
یا برای پیکربندی‌های ثابت با تنظیمات مهندسی‌شده ALSA مفید باشد (در این حالت
همیشه باید همان چیدمان را با --audio-channels اجبار کنید، در غیر این صورت
تنها برای فایل‌هایی کار خواهد کرد که از چیدمان ضمنی دستگاه ALSA شما استفاده می‌کنند).
--alsa-buffer-time=<microseconds>
زمان بافر درخواستی را به میکروثانیه تنظیم می‌کند. مقدار 0 از ارسال هرگونه درخواستی به
ALSA API صرف‌نظر می‌کند. این گزینه و گزینه --alsa-periods از توابع
near در ALSA برای تنظیم پارامترهای درخواستی استفاده می‌کنند. اگر انجام این کار
به یک مجموعه پیکربندی خالی منجر شود، از تنظیم این پارامترها صرف‌نظر می‌شود.
هر دو گزینه اندازه بافر را کنترل می‌کنند. اندازه بافر کم می‌تواند به مصرف بیشتر
CPU و قطعی صدا منجر شود، در حالی که اندازه بافر زیاد می‌تواند باعث تاخیر بیشتر
در تغییرات بلندی صدا و سایر فیلترها گردد.
--alsa-periods=<number>
تعداد دوره‌های (periods) درخواستی از ALSA API. برای توضیحات بیشتر به
--alsa-buffer-time مراجعه کنید.
168u
هشدار:
7.0
3.5
برای دریافت صدای چندکاناله/فراگیر، از --audio-channels=auto استفاده
کنید. پیش‌فرض این گزینه auto-safe است، که باعث می‌شود این خروجی صدا
به طور صریح خروجی چندکاناله را رد کند، زیرا هیچ راهی برای تشخیص این‌که آیا یک
چیدمان کانال خاص واقعاً پشتیبانی می‌شود یا خیر وجود ندارد.
همچنین می‌توانید استفاده از افزونه upmix را امتحان کنید: https://github.com/mpv-player/mpv/wiki/ALSA-Surround-Sound-and-Upmixing.
این پیکربندی صدای چندکاناله را روی دستگاه default با ترکیب رو به بالای
خودکار (upmixing) و با دسترسی اشتراکی فعال می‌کند، به طوری که پخش صدای
استریو و چندکاناله به صورت همزمان طبق انتظار کار خواهد کرد.
168u
168u
oss
درایور خروجی صدای OSS
jack
درایور خروجی صدای JACK (Jack Audio Connection Kit).
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--jack-port=<name>
به درگاه‌های دارای نام داده‌شده متصل می‌شود (پیش‌فرض: درگاه‌های فیزیکی).
--jack-name=<client>
نام کلاینتی که به JACK ارسال می‌شود (پیش‌فرض: mpv). در صورتی که
بخواهید اتصالات خاصی به طور خودکار برقرار شوند مفید است.
--jack-autostart=<yes|no>
در صورت نیاز jackd را به طور خودکار راه‌اندازی می‌کند (پیش‌فرض: غیرفعال). توجه
داشته باشید که این روش معمولاً غیرقابل‌اعتماد است و stdout را با پیام‌های سرور پر خواهد کرد.
--jack-connect=<yes|no>
به طور خودکار اتصال‌ها به درگاه‌های خروجی را ایجاد می‌کند (پیش‌فرض: فعال). هنگام
فعال بودن، حداکثر تعداد کانال‌های خروجی به تعداد درگاه‌های خروجی موجود محدود خواهد شد.
--jack-std-channel-layout=<waveext|any>
چیدمان استاندارد کانال را انتخاب می‌کند (پیش‌فرض: waveext). خود JACK تصوری
از چیدمان کانال‌ها ندارد (یعنی اختصاص این‌که یک کانال معین قرار است به کدام
بلندگو نگاشت شود) - این سامانه صرفاً هر آنچه برنامه خروجی می‌دهد را دریافت کرده
و به آنچه کاربر تعریف کرده هدایت می‌کند. این بدان معناست که کاربر و برنامه
مسئول مدیریت چیدمان کانال هستند. waveext از ترتیب WAVE_FORMAT_EXTENSIBLE
استفاده می‌کند که با وجود اینکه توسط مایکروسافت تعریف شده، روی بسیاری از
سیستم‌ها استاندارد است. مقدار any باعث می‌شود JACK هر آنچه را که از
زنجیره فیلتر صوتی می‌آید، صرف‌نظر از چیدمان کانال و بدون تغییر ترتیب بپذیرد.
این حالت به جز برای اشکال‌زدایی یا در راه‌اندازی‌های ثابت، احتمالاً چندان کاربردی ندارد.
168u
coreaudio (فقط در macOS)
درایور خروجی صدای بومی macOS که از AudioUnits و سرور صدای CoreAudio
استفاده می‌کند.
هنگام پخش قالب‌های فشرده، به طور خودکار به coreaudio_exclusive تغییر مسیر می‌دهد.
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--coreaudio-change-physical-format=<yes|no>
قالب فیزیکی را به قالبی مشابه با قالب صوتی درخواستی تغییر می‌دهد (پیش‌فرض: no).
این مزیت را دارد که خروجی صدای چندکاناله عملاً کار خواهد کرد. عیب آن
این است که تنظیمات صدای سراسری سیستم را تغییر می‌دهد. این عمل معادل تغییر
تنظیم Format در کادر گفتگوی Audio Devices در ابزار Audio MIDI Setup
است. توجه داشته باشید که این گزینه بر چینش بلندگوی انتخاب‌شده تاثیری نمی‌گذارد.
--coreaudio-spdif-hack=<yes|no>
تلاش می‌کند تا داده‌های AC3/DTS را به عنوان PCM عبور دهد (pass through).
این گزینه برای درایورهایی که پشتیبانی از AC3 را گزارش نمی‌کنند مفید است. داده‌های
AC3 را به ممیز شناور (float) تبدیل می‌کند و فرض را بر این می‌گذارد که درایور تبدیل
معکوس را انجام خواهد داد؛ بدین معنا که یک گیرنده صوتی/تصویری (A/V) معمولی آن را
به عنوان یک جریان فشرده با قالب‌بندی IEC برای AC3 دریافت کرده و علامت‌گذاری آن
به عنوان PCM را نادیده می‌گیرد. این امر ارسال مستقیم عادی AC3 را غیرفعال می‌کند
(حتی اگر دستگاه آن را به عنوان پشتیبانی‌شده گزارش کند). با احتیاط فراوان استفاده شود.
168u
coreaudio_exclusive (فقط در macOS)
درایور خروجی صدای بومی macOS که از دسترسی مستقیم به دستگاه و حالت اختصاصی
استفاده می‌کند (سرور صدا را دور می‌زند).
avfoundation (فقط در macOS)
درایور خروجی صدای بومی macOS که از AVSampleBufferAudioRenderer در
AVFoundation استفاده می‌کند، که از صدای فضایی (spatial audio) پشتیبانی می‌کند https://support.apple.com/en-us/HT211775.
هشدار:
7.0
3.5
فعال کردن صدای فضایی در صورتی که mpv از خارج از بسته نرم‌افزاری (bundle) اجرا
شود ممکن است باعث متوقف شدن پخش گردد؛ هرچند پخش با خاموش بودن صدای
فضایی همواره کار می‌کند.
168u
168u
audiounit (فقط در iOS)
درایور خروجی صدای بومی iOS با استفاده از AudioUnits و AudioToolbox..TP
openal
درایور خروجی صوتی OpenAL.
7.0
--openal-num-buffers=<2-128>
تعداد بافرهای صوتی مورد استفاده را مشخص می‌کند. مقادیر کمتر برای مصرف کمتر پردازنده (CPU) مناسب‌ترند. پیش‌فرض: 4.
--openal-num-samples=<256-32768>
تعداد نمونه‌های کامل مورد استفاده برای هر بافر را مشخص می‌کند. مقادیر بیشتر برای مصرف کمتر پردازنده (CPU) مناسب‌ترند. پیش‌فرض: 8192.
--openal-direct-channels=<yes|no>
در صورت دردسترس بودن، افزونهٔ کانال مستقیم OpenAL Soft را فعال می‌کند تا از تغییر رنگ صدا توسط آمبیسونیکس (ambisonics) یا HRTF جلوگیری شود. پیش‌فرض: yes.
168u
pulse
درایور خروجی صوتی PulseAudio
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--pulse-host=<host>
میزبان مورد استفاده را مشخص می‌کند. یک رشتهٔ <host> خالی از اتصال محلی استفاده می‌کند، "localhost" از انتقال شبکه استفاده می‌کند (به احتمال زیاد چیزی نیست که می‌خواهید).
--pulse-buffer=<1-2000|native>
اندازهٔ بافر صوتی را بر حسب میلی‌ثانیه تنظیم می‌کند. مقدار بزرگتر داده‌های بیشتری را بافر می‌کند و احتمال کمبود داده در بافر (buffer underrun) را کاهش می‌دهد. مقدار کوچکتر باعث واکنش سریع‌تر جریان صوتی می‌شود، مانند تغییرات سرعت پخش. مقدار "native" اجازه می‌دهد تا کارساز صوتی اندازهٔ بافرها را تعیین کند.
--pulse-latency-hacks=<yes|no>
ترفندهایی را برای دور زدن باگ‌های زمان‌بندی PulseAudio فعال می‌کند (پیش‌فرض: yes). در صورت فعال بودن، mpv محاسبات دقیق تأخیر را خود انجام می‌دهد. در صورت غیرفعال بودن، از اطلاعات زمان‌بندی PulseAudio که به‌طور خودکار به‌روزرسانی می‌شوند استفاده می‌کند. غیرفعال کردن این گزینه ممکن است مثلاً به صدای تحت شبکه یا برخی افزونه‌ها کمک کند، در حالی که فعال کردن آن ممکن است در برخی شرایط نامشخص مفید باشد (در حال حاضر به دلیل باگ‌های شناخته‌شده در PulseAudio 16.0 فعال است).
--pulse-allow-suspended=<yes|no>
به mpv اجازه می‌دهد حتی در صورت تعلیق سینک (sink)، از PulseAudio استفاده کند (پیش‌فرض: no).
می‌تواند زمانی مفید باشد که PulseAudio به عنوان یک پل برای jack اجرا می‌شود و mpv ورودی سینک (sink-input) خود را روی موردی که jack در حال استفاده از آن است تنظیم کرده باشد.
168u
pipewire
درایور خروجی صوتی PipeWire
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--pipewire-buffer=<1-2000|native>
اندازهٔ بافر صوتی را بر حسب میلی‌ثانیه تنظیم می‌کند. مقدار بزرگتر داده‌های بیشتری را بافر می‌کند و احتمال کمبود داده در بافر (buffer underrun) را کاهش می‌دهد. مقدار کوچکتر باعث واکنش سریع‌تر جریان صوتی می‌شود، مانند تغییرات سرعت پخش. مقدار "native" اجازه می‌دهد تا کارساز صوتی اندازهٔ بافرها را تعیین کند.
--pipewire-remote=<remote>
نام دیمن راه دور PipeWire را برای اتصال از طریق سوکت‌های محلی UNIX مشخص می‌کند.
یک رشتهٔ <remote> خالی از مورد راه دور پیش‌فرض به نام pipewire-0 استفاده می‌کند.
--pipewire-volume-mode=<channel|global>
مشخص می‌کند که آیا ویژگی ao-volume باید روی حجم صدای کانال‌ها اعمال شود یا حجم صدای سراسری.
به‌طور پیش‌فرض از حجم صدای کانال‌ها استفاده می‌شود.
168u
sdl
درایور خروجی صوتی SDL 2.0+. باید روی هر بستری که توسط SDL 2.0 پشتیبانی می‌شود کار کند، اما ممکن است نیاز داشته باشد که متغیر محیطی SDL_AUDIODRIVER متناسب با سیستم شما تنظیم شود.
نکته:
7.0
3.5
این درایور برای سازگاری با محیط‌های بسیار ناآشنا و نامتعارف است، مانند سیستم‌هایی که هیچ‌کدام از درایورهای دیگر در آن‌ها در دسترس نیستند.
168u
168u
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--sdl-buflen=<length>
طول بافر صوتی را بر حسب ثانیه تنظیم می‌کند. تنها به عنوان یک توصیه (hint) توسط سیستم صوتی استفاده می‌شود. پخش یک فایل همراه با -v اندازهٔ دقیق بافر درخواست‌شده و دریافت‌شده را نشان خواهد داد. مقدار 0 پیش‌فرض سیستم صوتی را انتخاب می‌کند.
168u
null
هیچ خروجی صوتی تولید نمی‌کند اما سرعت پخش ویدیو را حفظ می‌کند. می‌توانید از --ao=null --ao-null-untimed برای معیارسنجی (benchmarking) استفاده کنید.
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--ao-null-untimed
زمان‌بندی یک دستگاه صوتی بی‌نقص را شبیه‌سازی نمی‌کند. این بدان معناست که رمزگشایی صدا به جای همگام‌سازی با ساعت سیستم، تا حد امکان سریع پیش خواهد رفت.
--ao-null-buffer
طول بافر شبیه‌سازی‌شده بر حسب ثانیه.
--ao-null-outburst
اندازهٔ قطعه‌های داده (chunk) شبیه‌سازی‌شده بر حسب نمونه‌ها.
--ao-null-speed
سرعت پخش صوتی شبیه‌سازی‌شده به عنوان یک ضریب. معمولاً یک دستگاه صوتی واقعی دقیقاً با سرعت ساعت سیستم کار نمی‌کند؛ بلکه کمی انحراف دارد و این گزینه به شبیه‌سازی این موضوع کمک می‌کند.
--ao-null-latency
تأخیر شبیه‌سازی‌شدهٔ دستگاه. این مقدار علاوه بر EOF است.
--ao-null-broken-eof
شبیه‌سازی درایورهای صوتی معیوب که همیشه تأخیر ثابت دستگاه را به موقعیت پخش صوتی گزارش‌شده اضافه می‌کنند.
--ao-null-broken-delay
شبیه‌سازی درایورهای صوتی معیوب که تأخیر را به درستی گزارش نمی‌کنند.
--ao-null-channel-layouts
اگر خالی نباشد، این یک فهرست جداشده با , از چیدمان‌های کانالی است که AO مجاز می‌داند. این مورد می‌تواند برای آزمایش انتخاب چیدمان کانال استفاده شود.
--ao-null-format
قالب خروجی صوتی را که AO خواهد پذیرفت اجبار می‌کند. در صورت عدم تنظیم، هر قالبی را می‌پذیرد.
168u
pcm
خروجی صوتی نویسندهٔ فایل خام PCM/WAVE
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--ao-pcm-waveheader=<yes|no>
گنجاندن یا نگنجاندن سرایند WAVE (پیش‌فرض: گنجانده می‌شود). در صورت عدم گنجاندن، PCM خام تولید خواهد شد.
--ao-pcm-file=<filename>
صدا را به جای مقدار پیش‌فرض audiodump.wav در <filename> می‌نویسد. اگر no-waveheader مشخص شده باشد، مقدار پیش‌فرض audiodump.pcm است.
--ao-pcm-append=<yes|no>
به جای بازنویسی فایل، به انتهای آن اضافه می‌کند. همیشه از این گزینه به همراه گزینهٔ no-waveheader استفاده کنید - با waveheader کارکرد نادرستی دارد، زیرا هر بار که فایل باز می‌شود، یک سرایند WAVE می‌نویسد.
168u
sndio
خروجی صوتی به سیستم صوتی sndio در OpenBSD
(نکته: تنها از چیدمان‌های کانالی mono، stereo، 4.0، 5.1 و 7.1 پشتیبانی می‌کند.)
wasapi
خروجی صوتی به رابط Windows Audio Session API.
گزینه‌های سراسری زیر توسط این خروجی صدا پشتیبانی می‌شوند:
7.0
--wasapi-exclusive-buffer=<default|min|1-2000000>
مدت‌زمان بافر را در حالت اختصاصی (یعنی با --audio-exclusive=yes) تنظیم می‌کند. مقادیر default و min به‌ترتیب از دورهٔ تناوب پیش‌فرض و حداقل دستگاه که توسط WASAPI گزارش شده‌اند استفاده می‌کنند. همچنین می‌توانید مستقیماً مدت‌زمان بافر را بر حسب میکروثانیه مشخص کنید که در این حالت، مدت‌زمانی کوتاه‌تر از حداقل دورهٔ دستگاه به سمت بالا به حداقل دوره گرد می‌شود.
مدت‌زمان پیش‌فرض بافر باید در اکثر موارد پخشی پایدار را فراهم کند، اما گزارش شده است که در برخی دستگاه‌ها با تنظیم پیش‌فرض، پس از بازنشانی جریان‌ها پرش‌ها و لکنت‌هایی (glitch) رخ می‌دهد. در چنین مواردی، مشخص کردن مدت‌زمانی کوتاه‌تر ممکن است کمک کند.
168u
راه‌اندازهای خروجی ویدیو واسط‌هایی برای امکانات مختلف خروجی ویدیو هستند. ساختار دستوری به صورت زیر است:
0.0
--vo=<driver1,driver2,...[,]>
فهرست اولویت‌بندی‌شده‌ای از راه‌اندازهای خروجی ویدیو را برای استفاده مشخص می‌کند.
168u
اگر در انتهای فهرست یک , آمده باشد، mpv به راه‌اندازهایی که در فهرست وجود ندارند بازگشت (fallback) خواهد کرد.
این یک گزینه از نوع فهرست تنظیمات شیء است. برای جزئیات، بخش گزینه‌های فهرست (List Options) را ببینید.
نکته:
0.0
3.5
برای مشاهدهٔ فهرستی از راه‌اندازهای خروجی ویدیوی کامپایل‌شده، --vo=help را ببینید.
راه‌انداز خروجی توصیه‌شده --vo=gpu-next است که پیش‌فرض نیز می‌باشد. تمامی راه‌اندازهای دیگر برای سازگاری یا اهداف خاص هستند. اگر راه‌انداز پیش‌فرض کار نکند، به راه‌اندازهای دیگر بازگشت خواهد کرد (به همان ترتیبی که توسط --vo=help فهرست شده‌اند).
توجه داشته باشید که راه‌انداز خروجی ویدیوی پیش‌فرض ممکن است تغییر کند و نباید به آن اتکا کرد. اگر باید از یک VO خاص استفاده شود (برای نمونه برای API رندرینگ libmpv)، باید صراحتاً مشخص گردد.
168u
168u
راه‌اندازهای خروجی ویدیوی موجود عبارتند از:
0.0
gpu-next
رندرکنندهٔ ویدیو بر پایهٔ libplacebo. این راه‌انداز تقریباً از همان مجموعه ویژگی‌های --vo=gpu پشتیبانی می‌کند. برای مشاهدهٔ فهرست، گزینه‌های رندرکنندهٔ GPU را ببینید.
به طور کلی باید سریع‌تر و دارای کیفیت بالاتری باشد، در حالی که برخی ویژگی‌های مختص به gpu-next را نیز پیاده‌سازی می‌کند؛ اما ممکن است برخی ویژگی‌ها عمداً حذف شده باشند یا تفاوت‌های کارکردی با --vo=gpu وجود داشته باشد. برای فهرستی از تفاوت‌های شناخته‌شده اینجا را ببینید:
https://github.com/mpv-player/mpv/wiki/GPU-Next-vs-GPU
gpu
راه‌انداز خروجی ویدیوی همه‌منظوره، سفارشی‌سازی‌پذیر و شتاب‌یافته با GPU. این راه‌انداز از روش‌های مقیاس‌بندی گسترش‌یافته، dithering، مدیریت رنگ، سایه‌زن‌های سفارشی (custom shaders)، HDR و موارد دیگر پشتیبانی می‌کند.
برای گزینه‌های مختص به این VO، گزینه‌های رندرکنندهٔ GPU را ببینید.
به طور پیش‌فرض، mpv از تنظیماتی استفاده می‌کند که بین کیفیت و کارایی تعادل برقرار می‌کنند. علاوه بر این، دو نمایهٔ از پیش تعریف‌شده در دسترس هستند: fast برای بیشترین کارایی و high-quality برای کیفیت رندرینگ برتر. می‌توانید با استفاده از گزینهٔ --profile=<name> یک نمایهٔ خاص را اعمال کرده و محتویات آن را با استفاده از --show-profile=<name> بررسی کنید.
این VO چندین API گرافیکی و بسترهای پنجره‌بندی (windowing contexts) ممکن را انتزاع می‌کند که می‌توان با استفاده از گزینه‌های --gpu-api و --gpu-context بر آنها اثر گذاشت.
رمزگشایی سخت‌افزاری از طریق OpenGL-interop تا حدی پشتیبانی می‌شود. توجه داشته باشید که در این حالت، ممکن است برخی حالت‌های خاص به شکل مناسب مدیریت نشوند، و تبدیل فضای رنگی و بیش‌نمونه‌برداری کروما (chroma upsampling) عموماً بر عهدهٔ APIهای رمزگشای سخت‌افزاری است.
به طور پیش‌فرض، gpu از FBOها استفاده می‌کند. گاهی اوقات می‌توانید با تغییر گزینهٔ --fbo-format به rgb16f، rgb32f یا rgb به کیفیت یا کارایی بهتری دست یابید. مشکلات شناخته‌شده شامل عدم پذیرش rgb16 توسط Mesa/Intel، عدم کامپایل گاه‌به‌گاه Mesa با پشتیبانی از بافت ممیز شناور (float texture)، و بسیار کند بودن برخی پیکربندی‌های macOS با rgb16 اما سریع بودن با rgb32f است. در صورت بروز مشکل، می‌توانید فعال کردن گزینهٔ --gpu-dumb-mode=yes را نیز امتحان کنید.
xv (تنها در X11)
از افزونهٔ XVideo برای فعال‌سازی نمایش شتاب‌یافته با سخت‌افزار استفاده می‌کند. این سازگارترین VO در سامانهٔ X است، اما ممکن است کیفیت پایینی داشته باشد و در نمایش OSD و زیرنویس با مشکلاتی همراه است.
نکته:
7.0
3.5
این راه‌انداز برای سازگاری با سامانه‌های قدیمی است.
168u
168u
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--xv-adaptor=<number>
یک آداپتور مشخص XVideo را انتخاب می‌کند (نتایج xvinfo را بررسی کنید).
--xv-port=<number>
یک درگاه مشخص XVideo را انتخاب می‌کند.
--xv-ck=<cur|use|set>
منبعی را که کلید رنگ (color key) از آن گرفته می‌شود انتخاب می‌کند (پیش‌فرض: cur).
7.0
cur
حالت پیش‌فرض؛ از کلید رنگی که در حال حاضر در Xv تنظیم شده است استفاده می‌کند.
use
استفاده از کلید رنگ در mpv بدون تنظیم مجدد آن (برای تغییر آن از گزینهٔ --colorkey استفاده کنید).
set
مشابه use، اما کلید رنگ ارائه‌شده را نیز تنظیم می‌کند.
168u
--xv-ck-method=<none|man|bg|auto>
روش رسم کلید رنگ را تعیین می‌کند (پیش‌فرض: man).
7.0
none
کلیدگذاری رنگی (color-keying) را غیرفعال می‌کند.
man
رسم دستی کلید رنگ (در برخی موارد پرش تصویر را کاهش می‌دهد).
bg
تنظیم کلید رنگ به عنوان پس‌زمینهٔ پنجره.
auto
واگذاری رسم کلید رنگ به Xv.
168u
--xv-colorkey=<number>
کلید رنگ را به یک مقدار RGB انتخابی شما تغییر می‌دهد. مقدار 0x000000 سیاه و 0xffffff سفید است.
--xv-buffers=<number>
تعداد بافرهای تصویری مورد استفاده برای بافر حلقوی داخلی (پیش‌فرض: 2). افزایش این مقدار حافظهٔ بیشتری مصرف خواهد کرد، اما در صورتی که نرخ فریم (FPS) ویدیو نزدیک به نرخ نوسازی نمایشگر یا بالاتر از آن باشد، ممکن است در مواردی که کارساز X با سرعت کافی پاسخ نمی‌دهد کمک کند.
168u
x11 (تنها در X11)
راه‌انداز خروجی ویدیوی حافظهٔ اشتراکی بدون شتاب‌دهندهٔ سخت‌افزاری که در صورت وجود X11 کار می‌کند.
از نسخهٔ mpv 0.30.0 به بعد، ممکن است برای دستیابی به کارایی مناسب نیاز به استفاده از --profile=sw-fast داشته باشید.
نکته:
7.0
3.5
این راه‌انداز فقط یک گزینهٔ بازگشتی (fallback) است و در حالت عادی نباید استفاده شود.
168u
168u
vdpau (تنها در X11)
از واسط VDPAU برای نمایش و در صورت تمایل، رمزگشایی ویدیو استفاده می‌کند. رمزگشایی سخت‌افزاری با --hwdec=vdpau استفاده می‌شود. توجه داشته باشید که به جز سازگاری، مطلقاً هیچ دلیلی برای استفاده از این راه‌انداز وجود ندارد. اکیداً توصیه می‌کنیم که به جای آن از --vo=gpu همراه با --hwdec=nvdec استفاده کنید.
نکته:
7.0
3.5
نسخه‌های قبلی mpv (و MPlayer، mplayer2) گزینه‌های فرعی را برای تنظیم پس‌پردازش vdpau ارائه می‌کردند، مانند deint، sharpen، denoise، chroma-deint، pullup، hqscaling. این گزینه‌های فرعی منسوخ شده‌اند و باید به جای آنها از فیلتر ویدیویی vdpaupp استفاده کنید.
168u
168u
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--vo-vdpau-sharpen=<-1-1>
(منسوخ شده است. نکتهٔ مربوط به vdpaupp را ببینید.)
برای مقادیر مثبت، یک الگوریتم تیز کردن (sharpening) و برای مقادیر منفی، یک الگوریتم تار کردن (blurring) را روی ویدیو اعمال می‌کند (پیش‌فرض: 0).
--vo-vdpau-denoise=<0-1>
(منسوخ شده است. نکتهٔ مربوط به vdpaupp را ببینید.).sp
اعمال یک الگوریتم کاهش نویز روی ویدیو (پیش‌فرض: 0؛ بدون کاهش نویز).
--vo-vdpau-chroma-deint
(منسوخ شده است. یادداشت مربوط به vdpaupp را ببینید.)
باعث می‌شود دی‌اینترلیسرهای زمانی روی هر دو مولفه لوما و کروما عمل کنند (پیش‌فرض).
برای استفاده صرف از لوما و افزایش سرعت دی‌اینترلیس پیشرفته، از no-chroma-deint استفاده کنید.
برای حافظه ویدیویی کُند مفید است.
--vo-vdpau-pullup
(منسوخ شده است. یادداشت مربوط به vdpaupp را ببینید.)
تلاش برای اعمال معکوس telecine؛ به دی‌اینترلیس زمانی تطبیقی با حرکت (motion adaptive temporal deinterlacing) نیاز دارد.
--vo-vdpau-hqscaling=<0-9>
(منسوخ شده است. یادداشت مربوط به vdpaupp را ببینید.)
7.0
0
استفاده از مقیاس‌بندی پیش‌فرض VDPAU (پیش‌فرض).
1-9
اعمال مقیاس‌بندی با کیفیت بالای VDPAU (نیاز به سخت‌افزار توانمند دارد).
168u
--vo-vdpau-fps=<number>
بازنویسی مقدار تشخیص‌داده‌شده خودکار برای نرخ نوسازی نمایشگر (این مقدار برای framedrop جهت امکان‌پذیر ساختن نرخ‌های پخش ویدیویی بالاتر از نرخ نوسازی نمایشگر، و همچنین برای تنظیمات زمان‌بندی فریم آگاه از vsync مورد نیاز است). مقدار پیش‌فرض 0 به معنای استفاده از مقدار تشخیص‌داده‌شده خودکار است. یک مقدار مثبت به عنوان نرخ نوسازی بر حسب هرتز تفسیر شده و مقدار شناسایی‌شده خودکار را بازنویسی می‌کند. یک مقدار منفی تمام منطق‌های framedrop و تنظیم زمان‌بندی را غیرفعال می‌سازد.
--vo-vdpau-composite-detect
پیاده‌سازی فعلی VDPAU شرکت NVIDIA تحت یک مدیر پنجره کامپوزیتینگ (compositing window manager) تا حدی متفاوت عمل می‌کند و اطلاعات دقیقی از زمان‌بندی فریم‌ها ارائه نمی‌دهد. با فعال بودن این گزینه، پخش‌کننده تلاش می‌کند تشخیص دهد که آیا یک مدیر پنجره کامپوزیتینگ فعال است یا خیر. در صورت تشخیص، پخش‌کننده تنظیمات زمان‌بندی را طوری غیرفعال می‌کند که گویی کاربر fps=-1 را مشخص کرده است (زیرا بر مبنای ورودی نادرست خواهند بود). این بدان معناست که زمان‌بندی نسبت به حالت بدون کامپوزیتینگ تا حدی دقت کمتری دارد، اما با رفتار حالت کامپوزیت‌شده در درایور NVIDIA، حتی بدون منطق غیرفعال‌شده نیز هیچ محدودیت سرعتی سختگیرانه‌ای برای پخش وجود ندارد. به‌طور پیش‌فرض فعال است، برای غیرفعال‌سازی از --vo-vdpau-composite-detect=no استفاده کنید.
--vo-vdpau-queuetime-windowed=<number> و queuetime-fs=<number>
استفاده از قابلیت صف نمایش (presentation queue) در VDPAU برای قرار دادن تغییرات فریم‌های بعدی ویدیو در صف تا حداکثر این تعداد میلی‌ثانیه جلوتر (پیش‌فرض: 50). برای اطلاعات بیشتر به بخش زیر مراجعه کنید.
--vo-vdpau-output-surfaces=<2-15>
تخصیص این تعداد سطح خروجی برای نمایش فریم‌های ویدیو (پیش‌فرض: 3). برای اطلاعات بیشتر به بخش زیر مراجعه کنید.
--vo-vdpau-colorkey=<#RRGGBB|#AARRGGBB>
تنظیم رنگ پس‌زمینه صف نمایش VDPAU، که در عمل همان کلید رنگی (colorkey) است که در صورت کارکرد VDPAU در حالت همپوشانی (overlay) استفاده می‌شود (پیش‌فرض: #020507، طیفی از سیاه). اگر مولفه آلفای این مقدار 0 باشد، به‌جای آن colorkey پیش‌فرض VDPAU استفاده خواهد شد (که معمولاً سبز است).
--vo-vdpau-force-yuv
هرگز ورودی RGBA را نمی‌پذیرد. این بدان معناست که mpv پیش از VO فیلتری را برای تبدیل به قالب YUV درج خواهد کرد. گاهی برای اجبار به دسترسی‌پذیری برخی قابلیت‌های اختصاصی YUV مانند اکولایزر ویدیو یا دی‌اینترلیس کردن مفید است.
168u
استفاده از قابلیت صف‌بندی فریم VDPAU که توسط گزینه‌های queuetime کنترل می‌شود، زمان‌بندی تعویض فریم (frame flip) برنامه mpv را نسبت به بار CPU سیستم کمتر حساس می‌کند و به mpv اجازه می‌دهد فریم(های) بعدی را کمی زودتر رمزگشایی کند، که می‌تواند لرزش و پرش (jitter) ناشی از تک‌فریم‌های کُند در رمزگشایی را کاهش دهد. با این حال، درایورهای گرافیکی NVIDIA می‌توانند در صورتی که VDPAU از صف blit استفاده کند (عمدتاً زمانی رخ می‌دهد که افزونه composite فعال باشد) و این ویژگی فعال باشد، رفتار پنجره‌های دیگر مانند جابجایی پنجره را ناهموار و دارای لگ (choppy) کنند. اگر این اتفاق در سیستم شما رخ می‌دهد و آزاردهنده است، می‌توانید مقدار queuetime را روی 0 قرار دهید تا این ویژگی غیرفعال شود. تنظیمات حالت پنجره‌ای و تمام‌صفحه از هم جدا هستند زیرا دلیلی برای غیرفعال کردن آن در حالت تمام‌صفحه وجود ندارد (زیرا مشکل درایور نباید خود ویدیو را تحت تاثیر قرار دهد).
می‌توانید با افزایش مقادیر queuetime و تعداد output_surfaces، فریم‌های بیشتری را از پیش در صف قرار دهید (برای اطمینان از وجود سطوح کافی جهت بافر کردن ویدیو برای مدت‌زمان مشخصی در پیش رو، حداقل به همان تعداد فریم‌هایی که ویدیو در طول آن زمان دارد بعلاوه دو سطح نیاز دارید). این کار می‌تواند در برخی موارد به روان‌تر شدن ویدیو کمک کند. معایب اصلی آن عبارتند از افزایش حافظه ویدیویی (VRAM) مورد نیاز برای سطوح و پاسخ‌دهی کندتر تصویر به دستورهای کاربر (تغییرات صفحه نمایش تنها مدتی پس از قرار گرفتن در صف قابل مشاهده می‌شوند). همچنین ممکن است پیاده‌سازی درایور گرافیک محدودیت‌هایی در حداکثر زمان صف‌بندی یا تعداد سطوح در صف داشته باشد که به درستی یا اصلاً کار کنند.
direct3d (فقط Windows)
درایور خروجی ویدیو که از رابط Direct3D استفاده می‌کند.
نکته:
7.0
3.5
این درایور برای سازگاری با سیستم‌هایی است که درایورهای مناسب OpenGL را ارائه نمی‌دهند، و ANGLE در آن‌ها عملکرد خوبی ندارد.
168u
168u
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--vo-direct3d-disable-texture-align
معمولاً اندازه‌های بافت (texture) همیشه با مضارب ۱۶ تراز می‌شوند. با فعال بودن این گزینه، بافت ویدیو همیشه دقیقاً همان اندازه خود ویدیو را خواهد داشت.
168u
گزینه‌های دیباگ. این گزینه‌ها ممکن است نادرست باشند، ممکن است در آینده حذف شوند، ممکن است موجب کرش یا کُندی شوند، و غیره. در صورتی که برای عملکرد یا کارکرد صحیح واقعاً به هر یک از این‌ها نیاز دارید با توسعه‌دهندگان تماس بگیرید.
7.0
--vo-direct3d-force-power-of-2
همواره بافت‌ها را به توانی از ۲ وادار می‌کند، حتی اگر دستگاه گزارش دهد که از اندازه‌های بافت غیر توانی از ۲ پشتیبانی می‌کند.
--vo-direct3d-texture-memory=<mode>
تنها روی عملکرد با شیدرها/بافت‌دهی فعال و (E)OSD تأثیر می‌گذارد.
مقادیر ممکن:
7.0
default (پیش‌فرض)
استفاده از D3DPOOL_DEFAULT، با یک بافت D3DPOOL_SYSTEMMEM برای قفل کردن. اگر درایور از D3DDEVCAPS_TEXTURESYSTEMMEMORY پشتیبانی کند، D3DPOOL_SYSTEMMEM مستقیماً استفاده می‌شود.
default-pool
استفاده از D3DPOOL_DEFAULT. (مشابه default، اما هرگز از shadow-texture استفاده نمی‌کند.)
default-pool-shadow
استفاده از D3DPOOL_DEFAULT، با یک بافت D3DPOOL_SYSTEMMEM برای قفل کردن. (مشابه default، اما همیشه shadow-texture را تحمیل می‌کند.)
managed
استفاده از D3DPOOL_MANAGED.
scratch
استفاده از D3DPOOL_SCRATCH، با یک بافت D3DPOOL_SYSTEMMEM برای قفل کردن.
168u
--vo-direct3d-swap-discard
استفاده از D3DSWAPEFFECT_DISCARD، که ممکن است سریع‌تر باشد.
همچنین ممکن است کُندتر باشد، زیرا باید(؟) هر فریم را پاک کند.
--vo-direct3d-exact-backbuffer
همیشه اندازه backbuffer را به اندازه پنجره تغییر می‌دهد.
168u
sdl
درایور خروجی ویدیوی رندر +SDL 2.0، بسته به سیستم با یا بدون شتاب‌دهی سخت‌افزاری. باید روی همه پلتفرم‌های پشتیبانی‌شده توسط SDL 2.0 کار کند.
جهت تنظیم، به نسخه خود از فایل SDL_hints.h مراجعه کنید.
نکته:
7.0
3.5
این درایور برای سازگاری با سیستم‌هایی است که درایورهای گرافیکی مناسبی ارائه نمی‌دهند.
168u
168u
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--sdl-sw
حتی در صورت شناسایی یک رندرکننده نرم‌افزاری به کار ادامه می‌دهد.
--sdl-switch-mode
به SDL دستور می‌دهد هنگام رفتن به حالت تمام‌صفحه، حالت ویدیویی نمایشگر را تغییر دهد.
168u
dmabuf-wayland
درایور خروجی آزمایشی Wayland که برای استفاده با رمزگشایی سخت‌افزاری drm stateless یا VA API طراحی شده است. این درایور طوری طراحی شده است که از هرگونه کپی از GPU به CPU جلوگیری کند، و مقیاس‌بندی و تبدیل فضای رنگی را به جای شیدرهای GPU، در صورت وجود، با استفاده از سخت‌افزارهای با کارکرد ثابت (fixed-function hardware) انجام دهد. این امر منابع GPU را برای سایر وظایف آزاد می‌کند.
اکیداً توصیه می‌شود از این VO همراه با گزینه مناسب --hwdec مانند auto-safe استفاده کنید. به دلیل وجود فیلترهای تبدیل داخلی mpv، همچنان ممکن است در برخی شرایط بدون --hwdec نیز کار کند، اما این کار توصیه نمی‌شود زیرا یک گام اضافی غیرضروری است. خروجی صحیح به پشتیبانی GPU، درایورها و کامپوزیتور شما بستگی دارد. این ویژگی نیازمند پشتیبانی کامپوزیتور و mpv از color-management-v1 است تا بتواند فضاهای رنگی متفاوت از پیش‌فرض کامپوزیتور (در بیشتر موارد bt.601) را به‌طور دقیق نمایش دهد..sp
هشدار:
7.0
3.5
این راه‌انداز برای کارکرد mpv روی Wayland ضروری نیست. گزینه‌های vo=gpu
و vo=gpu-next به‌طور خودکار به بافتار (context) مناسب Wayland سوئیچ
می‌کنند. این راه‌انداز آزمایشی است و عموماً کیفیت پایین‌تری نسبت به
gpu/gpu-next دارد.
168u
168u
vaapi
راه‌انداز خروجی ویدیوی Intel VA API با پشتیبانی از رمزگشایی سخت‌افزاری.
توجه داشته باشید که به جز سازگاری، مطلقاً هیچ دلیلی برای استفاده از این راه‌انداز
وجود ندارد. کیفیت آن پایین است و با OSD مشکلاتی دارد. اکیداً توصیه می‌کنیم
که در عوض از --vo=gpu به همراه --hwdec=vaapi استفاده کنید.
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--vo-vaapi-scaling=<algorithm>
7.0
default
پیش‌فرض راه‌انداز (که پیش‌فرض mpv نیز هست).
fast
سریع، اما با کیفیت پایین.
hq
مقیاس‌بندی باکیفیت و وابسته به راه‌انداز (نامشخص)، کند.
nla
مقیاس‌بندی آنامورفیک غیرخطی (non-linear anamorphic scaling)
168u
--vo-vaapi-scaled-osd=<yes|no>
در صورت فعال بودن، OSD با وضوح ویدیو رندر شده و به وضوح نمایشگر مقیاس‌بندی
می‌شود. به‌طور پیش‌فرض این گزینه غیرفعال است و OSD در صورت پشتیبانی راه‌انداز،
با وضوح نمایشگر رندر می‌شود.
168u
null
هیچ خروجی ویدیویی تولید نمی‌کند. برای بنچمارک (سنجش کارایی) مفید است.
معمولاً بهتر است به جای آن، ویدیو را با --video=no غیرفعال کنید.
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--vo-null-fps=<value>
شبیه‌سازی FPS نمایشگر. این گزینه تعداد فریم‌هایی را که خروجی ویدیو (VO)
در هر ثانیه می‌پذیرد به‌طور مصنوعی محدود می‌کند.
168u
caca
راه‌انداز خروجی ویدیویی هنر اسکی (ASCII art) رنگی که روی کنسول متنی کار می‌کند.
این راه‌انداز برخی کلیدها را برای پیکربندی زمان اجرا رزرو می‌کند. این کلیدها
به‌صورت درون‌برنامه‌ای (hardcode) تعیین شده‌اند و نمی‌توان آن‌ها را تغییر داد:
7.0
d و D
تغییر الگوریتم دیترینگ (dithering).
a و A
تغییر روش هموارسازی (antialiasing).
h و H
تغییر روش مجموعه‌نویسه (charset).
c و C
تغییر روش رنگ‌بندی.
168u
نکته:
7.0
3.5
این راه‌انداز صرفاً یک شوخی است.
168u
168u
tct
راه‌انداز خروجی ویدیویی هنر یونیکد (Unicode art) رنگی که روی کنسول متنی کار می‌کند.
به‌طور پیش‌فرض برای نمایش تصاویر در دامنهٔ کامل رنگ، به پشتیبانی پایانه‌های نوین
از رنگ واقعی (true color) وابسته است، اما از خروجی ۲۵۶ رنگ نیز پشتیبانی می‌شود
(پایین را ببینید). در ویندوز به یک پایانهٔ ansi مانند mintty نیاز دارد.
از نسخهٔ mpv 0.30.0 به بعد، ممکن است برای دستیابی به عملکرد مناسب نیاز به استفاده
از --profile=sw-fast داشته باشید.
نکته: خروجی تصویر TCT با سایر خروجی‌های پایانه از سوی mpv همگام‌سازی نمی‌شود،
که می‌تواند منجر به خرابی و به‌هم‌ریختگی تصاویر گردد. گزینه‌های --terminal=no
یا --really-quiet می‌توانند به رفع این مشکل کمک کنند.
7.0
--vo-tct-algo=<algo>
نحوهٔ نوشتن پیکسل‌ها روی پایانه را انتخاب می‌کند.
7.0
half-blocks
برای دستیابی به وضوح عمودی بالاتر از نویسهٔ LOWER HALF BLOCK در یونیکد
استفاده می‌کند. (پیش‌فرض.)
plain
از فاصله‌ها (spaces) استفاده می‌کند. باعث افت نصفهٔ وضوح عمودی می‌شود،
اما در تئوری در محیط‌های بیشتری کار می‌کند.
168u
--vo-tct-buffering=<pixel|line|frame>
اندازهٔ دسته‌های داده‌ای که پیش از ارسال به پایانه بافر می‌شوند را مشخص می‌کند.
خروجی تصویر TCT با سایر خروجی‌های پایانهٔ mpv همگام نمی‌شود، که می‌تواند منجر
به خراب شدن تصاویر گردد. ارسال داده‌ها به پایانه در دسته‌های کوچک ممکن است
موازی‌سازی بین پردازش پایانه و پردازش mpv را بهبود بخشد، اما سربار ثابتی ناشی
از ایجاد ده‌ها هزار عملیات نوشتن کوچک به همراه دارد. همچنین بسته به پایانهٔ
مورد استفاده، ارسال فریم‌ها در یک قطعهٔ یکپارچه ممکن است به رفع بریدگی تصویر (tearing)
کمک کند، به‌ویژه اگر با --really-quiet استفاده نشود و سایر گزارش‌ها جریان
داده را قطع کنند.
7.0
pixel
ارسال داده‌ها به پایانه به ازای هر پیکسل.
line
ارسال داده‌ها به پایانه به ازای هر خط. (پیش‌فرض)
frame
ارسال داده‌ها به پایانه به ازای هر فریم.
168u
--vo-tct-width=<width> --vo-tct-height=<height>
فرض می‌کند که پایانه دارای پهنا و/یا ارتفاع نویسه‌ای مشخص‌شده است.
در صورتی که اندازهٔ پایانه قابل تشخیص نباشد، این مقادیر به‌طور پیش‌فرض 80x25 هستند.
--vo-tct-256=<yes|no> (پیش‌فرض: no)
استفاده از ۲۵۶ رنگ - برای پایانه‌هایی که از رنگ واقعی (true color) پشتیبانی نمی‌کنند.
168u
kitty
خروجی گرافیکی برای پایانه، با استفاده از پروتکل گرافیکی kitty.
روی kitty و Konsole آزمایش شده است.
ممکن است برای دستیابی به عملکرد مناسب نیاز به استفاده از --profile=sw-fast داشته باشید.
گزینه‌های اندازه و تراز Kitty:
7.0
--vo-kitty-cols=<columns>, --vo-kitty-rows=<rows> (پیش‌فرض: 0)
اندازهٔ پایانه را برحسب سلول‌های نویسه مشخص می‌کند، در غیر این صورت (0) آن را
از پایانه می‌خواند یا در نهایت به 80x25 بازمی‌گردد.
--vo-kitty-width=<width>, --vo-kitty-height=<height> (پیش‌فرض: 0)
اندازهٔ موجود را برحسب پیکسل مشخص می‌کند، در غیر این صورت (0) آن را از پایانه
می‌خواند یا در نهایت به 320x240 بازمی‌گردد.
--vo-kitty-left=<col>, --vo-kitty-top=<row> (پیش‌فرض: 0)
موقعیت شروع تصویر را برحسب سلول‌های نویسه مشخص می‌کند (1 نشان‌دهندهٔ ستون یا سطر اول است).
اگر مقدار 0 (پیش‌فرض) باشد، سعی می‌کند آن را به‌طور خودکار بر اساس سایر مقادیر و
نسبت ابعاد تصویر و بزرگ‌نمایی تعیین کند.
--vo-kitty-config-clear=<yes|no> (پیش‌فرض: yes)
اینکه آیا هر زمان خروجی دوباره پیکربندی می‌شود (مثلاً هنگام تغییر اندازهٔ ویدیو)،
پایانه پاک شود یا خیر.
--vo-kitty-alt-screen=<yes|no> (پیش‌فرض: yes)
اینکه آیا از بافر صفحه‌نمایش جایگزین (alternate screen) استفاده شود و پایانه هنگام
خروج به وضعیت پیشین خود بازگردد یا خیر. در صورت تنظیم روی no، آخرین تصویر kitty
پس از خروج روی صفحه باقی می‌ماند و مکان‌نما به دنبال آن قرار می‌گیرد.
--vo-kitty-use-shm=<yes|no> (پیش‌فرض: no)
استفاده از اشیاء حافظهٔ مشترک (shared memory) برای انتقال داده‌های تصویر به پایانه.
این روش بسیار سریع‌تر از ارسال داده‌ها به صورت کدهای گریز (escape codes) است،
اما پایانه‌های کمتری از آن پشتیبانی می‌کنند. همچنین تنها روی ماشین محلی کار می‌کند
و از طریق مواردی مانند اتصالات SSH قابل استفاده نیست.
این گزینه روی ویندوز پیاده‌سازی نشده است.
--vo-kitty-auto-multiplexer-passthrough=<yes|no> (پیش‌فرض: no)
تشخیص خودکار چندگانه‌ساز پایانه (terminal multiplexer) برای عبور مستقیم (passthrough)
توالی‌های گریز. این ویژگی به پروتکل تصویر اجازه می‌دهد با عبور مستقیم توالی‌های گریز
به پایانه، در مالتی‌پلکسرهایی که ممکن است از پروتکل تصویر kitty پشتیبانی نکنند نیز
کار کند..sp
در حال حاضر تنها از tmux و GNU screen پشتیبانی می‌کند.
168u
sixel
خروجی گرافیکی برای ترمینال، با استفاده از sixelها. آزمایش‌شده با mlterm و
xterm.
نکته: خروجی تصویر Sixel با سایر خروجی‌های ترمینال از mpv همگام‌سازی نشده است،
که می‌تواند منجر به تصاویر خراب یا ناقص شود.
گزینهٔ --really-quiet می‌تواند به این موضوع کمک کند و توصیه می‌شود.
در برخی پلتفرم‌ها، استفاده از گزینهٔ --vo-sixel-buffered نیز ممکن است
مؤثر باشد.
ممکن است برای دریافت کارایی مناسب، به استفاده از --profile=sw-fast نیاز داشته باشید.
نکته: در زمان نگارش این متن، xterm به صورت پیش‌فرض sixel را فعال نمی‌کند -
راه‌اندازی آن به صورت xterm -ti 340 یکی از راه‌های فعال‌سازی آن است. همچنین، xterm
به صورت پیش‌فرض تصاویری بزرگ‌تر از 1000x1000 پیکسل را نمایش نمی‌دهد.
برای رندر و تراز کردن صحیح تصاویر sixel، لازم است mpv اندازهٔ ترمینال را
هم بر حسب سلول‌ها و هم بر حسب پیکسل‌ها بداند. به صورت پیش‌فرض تلاش می‌کند از مقادیری
که ترمینال گزارش می‌دهد استفاده کند، اما به دلیل تفاوت‌های بین ترمینال‌ها این فرآیندی
خطاپذیر است که نمی‌توان آن را با قطعیت خودکار کرد - برخی ترمینال‌ها اندازه را بر حسب پیکسل
به همراه حاشیه (padding) گزارش می‌کنند - مانند xterm، در حالی که برخی دیگر تعداد
پیکسل‌های قابل استفادهٔ واقعی را گزارش می‌دهند - مانند mlterm.
علاوه بر این، ممکن است هنگام بیشینه‌سازی (maximize) یا تمام‌صفحه رفتار متفاوتی داشته باشند،
و mpv نمی‌تواند این وضعیت را با روش‌های استاندارد تشخیص دهد.
گزینه‌های اندازه و تراز Sixel:
7.0
--vo-sixel-cols=<columns>، --vo-sixel-rows=<rows> (پیش‌فرض: 0)
اندازهٔ ترمینال را بر حسب سلول‌های نویسه تعیین می‌کند، در غیر این صورت (0) آن را
از ترمینال می‌خواند، یا به 80x25 بازمی‌گردد. توجه داشته باشید که mpv با sixel از
آخرین سطر استفاده نمی‌کند زیرا به نظر می‌رسد این کار منجر به پیمایش (اسکرول) می‌شود.
--vo-sixel-width=<width>، --vo-sixel-height=<height> (پیش‌فرض: 0)
اندازهٔ در دسترس را بر حسب پیکسل مشخص می‌کند، در غیر این صورت (0) آن را از
ترمینال می‌خواند، یا به 320x240 بازمی‌گردد. به جز نادیده گرفتن سطر آخر،
ارتفاع نیز به مضربی از ۶ (ارتفاع واحد sixel) به پایین گرد می‌شود تا از سرریز شدن به پایین‌تر
از اندازهٔ تعیین‌شده جلوگیری شود.
--vo-sixel-left=<col>، --vo-sixel-top=<row> (پیش‌فرض: 0)
موقعیت شروع تصویر را بر حسب سلول‌های نویسه مشخص می‌کند (۱ اولین
ستون یا سطر است). در صورت 0 (پیش‌فرض)، سعی می‌کند با توجه به مقادیر دیگر،
نسبت ابعاد تصویر و بزرگ‌نمایی، آن را به طور خودکار تعیین کند.
--vo-sixel-pad-x=<pad_x>، --vo-sixel-pad-y=<pad_y> (پیش‌فرض: -1)
تنها زمانی استفاده می‌شود که mpv اندازه را بر حسب پیکسل از ترمینال بخواند.
تعداد پیکسل‌های حاشیه (در یک طرف) را که در اندازهٔ گزارش‌شده توسط ترمینال گنجانده شده‌اند،
مشخص می‌کند. اگر -1 (پیش‌فرض) باشد، تعداد پیکسل‌ها به مضربی از تعداد سلول‌ها (در هر محور)
به سمت پایین گرد می‌شود تا حاشیه در گزارش لحاظ گردد - این حالت فقط زمانی به درستی کار می‌کند
که کل حاشیه در هر محور کوچک‌تر از تعداد سلول‌ها باشد.
--vo-sixel-config-clear=<yes|no> (پیش‌فرض: yes)
اینکه آیا هر زمان که خروجی بازپیکربندی می‌شود (برای مثال هنگام تغییر اندازهٔ ویدیو)،
ترمینال پاک شود یا خیر.
--vo-sixel-alt-screen=<yes|no> (پیش‌فرض: yes)
اینکه آیا از بافر صفحهٔ جایگزین (alternate screen) استفاده شود و ترمینال هنگام خروج
به وضعیت قبلی خود بازگردد یا خیر. هنگامی که روی no تنظیم شود، آخرین تصویر sixel
پس از خروج روی صفحه باقی می‌ماند و مکان‌نما پس از آن قرار می‌گیرد.
--vo-sixel-exit-clear یک نام مستعار منسوخ‌شده برای این گزینه است و
ممکن است در آینده حذف شود.
--vo-sixel-buffered=<yes|no> (پیش‌فرض: no)
دنبالهٔ کامل خروجی را پیش از نوشتن در ترمینال بافر می‌کند.
در پلتفرم‌های سازگار با POSIX، این امر می‌تواند به جلوگیری از تداخل (از جمله از سوی
سایر برنامه‌ها) و در نتیجه خرابی تصاویر کمک کند، اما ممکن است در برخی ترمینال‌ها
هزینهٔ کارایی به همراه داشته باشد و وابسته به جزئیات پیاده‌سازی است.
168u
گزینه‌های کیفیت تصویر Sixel:
7.0
--vo-sixel-dither=<algo>
الگوریتم ترام‌ریزی (dither) را که libsixel باید اعمال کند، انتخاب می‌کند.
بر اساس مستندات libsixel می‌تواند یکی از موارد فهرست زیر باشد:
7.0
auto (پیش‌فرض)
اجازه می‌دهد libsixel روش ترام‌ریزی را انتخاب کند.
none
عدم پخش خطا (بدون ترام).
atkinson
پخش خطا به روش بیل اتکینسون (Bill Atkinson).
fs
پخش خطا به روش فلوید-اشتاینبرگ (Floyd-Steinberg).
jajuni
پخش خطا به روش جارویس، جودیس و نینکه (Jarvis, Judice & Ninke).
stucki
پخش خطا به روش استوکی (Stucki).
burkes
پخش خطا به روش برکس (Burkes).
arithmetic
ترام‌ریزی حسابی با موقعیت پایدار.
xor
ترام‌ریزی مبتنی بر xor حسابی با موقعیت پایدار.
168u
--vo-sixel-fixedpalette=<yes|no> (پیش‌فرض: yes)
استفاده از پالت ایستا و درون‌ساخت libsixel با استفاده از نمایهٔ XTERM256
برای ترام‌ریزی. پالت ثابت از ۲۵۶ رنگ برای ترام‌ریزی استفاده می‌کند. توجه داشته باشید که
استفاده از no (در زمان نگارش این متن) سرعت xterm را کاهش می‌دهد.
--vo-sixel-reqcolors=<colors> (پیش‌فرض: 256)
در صورت استفاده از پالت ثابت تأثیری ندارد. libsixel را برای استفاده از تعداد رنگ‌های
مورد نیاز برای پالت پویا تنظیم می‌کند. این مقدار به شبیه‌ساز ترمینال نیز بستگی
دارد. Xterm از ۲۵۶ رنگ پشتیبانی می‌کند. می‌توانید برای دستیابی به عملکرد سریع‌تر این مقدار را
روی عدد کمتری تنظیم کنید.
--vo-sixel-threshold=<threshold> (پیش‌فرض: -1)
در صورت استفاده از پالت ثابت تأثیری ندارد. آستانهٔ تغییر پالت رنگ را به عنوان
درصدی از تعداد رنگ‌ها تعریف می‌کند؛ برای مثال، 20 پالت را زمانی تغییر می‌دهد که
تعداد رنگ‌ها ۲۰٪ تغییر کرده باشد. این یک معیار ساده برای کاهش تعداد دفعات تغییر پالت است،
زیرا این امر در برخی ترمینال‌ها (xterm) ممکن است کُند باشد. مقدار پیش‌فرض (-1)
در هر فریم یک پالت انتخاب می‌کند و کیفیت بهتری ارائه خواهد داد.
168u
image
خروجی دادن هر فریم در یک فایل تصویر درون دایرکتوری جاری. نام هر فایل
شمارهٔ فریم خواهد بود که با صفرهای ابتدایی پر شده است.
گزینه‌های سراسری زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--vo-image-format=<format>
قالب فایل تصویر را انتخاب می‌کند.
7.0
jpg
فایل‌های JPEG، با پسوند .jpg. (پیش‌فرض.)
jpeg
فایل‌های JPEG، با پسوند .jpeg.
png
فایل‌های PNG.
webp
فایل‌های WebP.
168u
--vo-image-png-compression=<0-9>
ضریب فشرده‌سازی PNG (موازنه بین سرعت و اندازهٔ فایل) (پیش‌فرض: 7)
--vo-image-png-filter=<0-5>
فیلتر اعمال‌شده پیش از فشرده‌سازی PNG (۰ = none؛ ۱ = sub؛ ۲ = up؛
۳ = average؛ ۴ = Paeth؛ ۵ = mixed) (پیش‌فرض: 5)
--vo-image-jpeg-quality=<0-100>
ضریب کیفیت JPEG (پیش‌فرض: 90)
--vo-image-jpeg-optimize=<0-100>
ضریب بهینه‌سازی JPEG (پیش‌فرض: 100)
--vo-image-webp-lossless=<yes|no>
فعال‌سازی نوشتن فایل‌های بدون افت کیفیت (lossless) WebP (پیش‌فرض: no)
--vo-image-webp-quality=<0-100>
کیفیت WebP (پیش‌فرض: 75)
--vo-image-webp-compression=<0-6>
ضریب فشرده‌سازی WebP (پیش‌فرض: 4)
--vo-image-outdir=<dirname>
دایرکتوری مورد نظر را برای ذخیرهٔ فایل‌های تصویری مشخص می‌کند (پیش‌فرض: ./).
libmpv
برای استفاده همراه با جاسازی مستقیم libmpv. به عنوان یک حالت خاص، در macOS مانند یک VO عادی درون mpv استفاده می‌شود (cocoa-cb). در غیر این صورت در هر زمینه دیگری بی‌فایده است.
(ببینید <mpv/render.h>.)
این درایور همچنین بسته به backend، از بسیاری از گزینه‌هایی که VO مربوط به gpu دارد پشتیبانی می‌کند.
drm (Direct Rendering Manager)
درایور خروجی ویدیو با استفاده از Kernel Mode Setting / Direct Rendering Manager.
زمانی باید استفاده شود که کاربر تمایلی به نصب یک محیط گرافیکی کامل (مثلاً بدون X) ندارد. از شتاب‌دهی سخت‌افزاری پشتیبانی نمی‌کند (اگر به آن نیاز دارید، backend مربوط به drm را برای VO gpu بررسی کنید).
از نسخه 0.30.0 mpv، ممکن است برای دریافت عملکرد مناسب نیاز به استفاده از --profile=sw-fast داشته باشید.
گزینه‌های عمومی زیر توسط این خروجی ویدیو پشتیبانی می‌شوند:
7.0
--drm-connector=<name>
کانکتور مورد استفاده را انتخاب می‌کند (معمولاً این یک مانیتور است.) اگر <name>
خالی یا auto باشد، mpv خروجی را روی نخستین کانکتور موجود رندر می‌کند. برای دریافت فهرستی از کانکتورهای در دسترس از --drm-connector=help استفاده کنید. (پیش‌فرض: خالی)
--drm-device=<path>
فایل دستگاه DRM مورد استفاده را انتخاب می‌کند. در صورت مشخص شدن، انتخاب خودکار کارت نادیده گرفته می‌شود. (پیش‌فرض: خالی)
--drm-mode=<preferred|highest|N|WxH[@R]>
حالت مورد استفاده (تفکیک‌پذیری و نرخ فریم).
مقادیر ممکن:
7.0
preferred
استفاده از حالت ترجیحی برای صفحه نمایش روی کانکتور انتخاب‌شده. (پیش‌فرض)
highest
استفاده از حالت دارای بالاترین تفکیک‌پذیری موجود در کانکتور انتخاب‌شده.
N
انتخاب حالت بر اساس اندیس.
WxH[@R]
مشخص کردن حالت با عرض، ارتفاع و به صورت اختیاری نرخ نوسازی.
در صورتی که چندین حالت تطابق داشته باشند، حالتی که در فهرست حالت‌های EDID اول بیاید انتخاب می‌شود.
168u
برای دریافت فهرستی از حالت‌های موجود برای همه کانکتورهای فعال از --drm-mode=help استفاده کنید.
--drm-draw-plane=<primary|overlay|N>
انتخاب DRM plane که در شرایط عادی ویدیو و OSD روی آن رسم می‌شوند. این plane می‌تواند به صورت primary مشخص شود که نخستین plane اصلی قابل اعمال را برمی‌گزیند؛ یا overlay که نخستین plane همپوشان قابل اعمال را برمی‌گزیند؛ یا با اندیس مشخص شود. اندیس بر مبنای صفر بوده و مرتبط با CRTC است.
(پیش‌فرض: primary)
هنگام استفاده از این گزینه همراه با تعامل سخت‌افزاری drmprime-overlay hwdec، فقط OSD روی این plane رندر می‌شود.
--drm-drmprime-video-plane=<primary|overlay|N>
انتخاب DRM plane مورد استفاده برای ویدیو هنگام تعامل سخت‌افزاری drmprime-overlay hwdec (استفاده‌شده مثلاً توسط rkmpp hwdec روی تراشه‌های RockChip و v4l2 hwdec روی تراشه‌های مختلف دیگر). این plane در غیر این صورت بلااستفاده است. این گزینه همان مقادیر --drm-draw-plane را می‌پذیرد. (پیش‌فرض: overlay)
برای توانایی پخش موفقیت‌آمیز ویدیوی 4K روی تراشه‌های مختلف (SoCها) ممکن است نیاز به تنظیم --drm-draw-plane=overlay --drm-drmprime-video-plane=primary
و تنظیم --drm-draw-surface-size=1920x1080 داشته باشید تا OSD با تفکیک‌پذیری پایین‌تری رندر شود (ویدیو هنگامی که توسط hwdec پردازش شود، روی drmprime-video plane و با تفکیک‌پذیری کامل 4K خواهد بود)
--drm-format=<xrgb8888|xbgr8888|xrgb2101010|xbgr2101010|yuyv>
انتخاب فرمت DRM مورد استفاده (پیش‌فرض: xrgb8888). این گزینه به شما امکان می‌دهد عمق بیتی و نوع رنگ حالت DRM را انتخاب کنید.
فرمت xrgb8888 همان فرمت فشرده معمول RGB با عمق 24bpp و ۸ بیت پدینگ است.
فرمت xrgb2101010 یک فرمت فشرده RGB با عمق 30bpp و ۲ بیت پدینگ است.
فرمت yuyv یک فرمت فشرده 32bpp با الگوی YUV 4:2:2 است. در حال حاضر هیچ فرمت مسطحی (planar) پشتیبانی نمی‌شود.
مواردی وجود دارد که در آن‌ها xrgb2101010 با VO drm کار می‌کند، اما با backend مربوط به drm برای VO gpu کار نمی‌کند. این بدان دلیل است که در VO gpu، علاوه بر نیاز به پشتیبانی در درایور DRM، نیاز به پشتیبانی از xrgb2101010 در درایور EGL شما نیز وجود دارد.
فرمت yuyv فقط با VO drm کار می‌کند.
--drm-draw-surface-size=<[WxH]>
اندازه سطح (surface) مورد استفاده در draw plane را تنظیم می‌کند. سپس این سطح به تفکیک‌پذیری فعلی صفحه نمایش ارتقا مقیاس می‌یابد. این گزینه می‌تواند هنگام استفاده همراه با تعامل سخت‌افزاری drmprime-overlay hwdec در تفکیک‌پذیری‌های بالا مفید باشد، زیرا امکان کاهش مقیاس draw plane (که در این حالت فقط OSD را پردازش می‌کند) به اندازه‌ای که GPU توانایی پردازش آن را داشته باشد فراهم می‌کند.
هنگام استفاده بدون تعامل سخت‌افزاری drmprime-overlay hwdec، این گزینه صرفاً باعث می‌شود ویدیو با تفکیک‌پذیری متفاوتی رندر شده و سپس به اندازه صفحه نمایش مقیاس‌بندی شود.
(پیش‌فرض: تفکیک‌پذیری نمایشگر)
--drm-vrr-enabled=<no|yes|auto>
تغییر وضعیت استفاده از نرخ نوسازی متغیر (VRR)، معروف به Freesync یا Adaptive Sync در سیستم‌های سازگار. فناوری VRR به نمایشگر اجازه می‌دهد با هر نرخی در یک محدوده مشخص (معمولاً بین ۴۰ تا ۶۰ هرتز برای نمایشگرهای ۶۰ هرتز) نوسازی شود. این می‌تواند به پخش محتوای 24/25/50fps کمک کند. پشتیبانی از آن به استفاده از یک مانیتور سازگار، GPU و یک هسته به اندازه کافی جدید همراه با درایورهایی که از این قابلیت پشتیبانی می‌کنند بستگی دارد.
7.0
no
تلاشی برای فعال‌سازی VRR انجام نده. (پیش‌فرض)
yes
صرف‌نظر از اینکه این قابلیت گزارش شده باشد یا خیر، برای فعال‌سازی VRR تلاش کن.
auto
در صورتی که پشتیبانی گزارش شده باشد، برای فعال‌سازی VRR تلاش کن.
168u
168u
mediacodec_embed (Android)
فریم‌های IMGFMT_MEDIACODEC را مستقیماً روی یک android.view.Surface رندر می‌کند.
برای رمزگشایی سخت‌افزاری به --hwdec=mediacodec به همراه --vo=mediacodec_embed و --wid=(intptr_t)(*android.view.Surface) نیاز دارد.
از آنجا که این درایور خروجی ویدیو از روتین‌های بومی رمزگشایی و رندر استفاده می‌کند، بسیاری از قابلیت‌های mpv (رندر زیرنویس، OSD/OSC، فیلترهای ویدیو و غیره) با این درایور در دسترس نیستند.
برای استفاده از رمزگشایی سخت‌افزاری با --vo=gpu به جای آن، از --hwdec=mediacodec یا mediacodec-copy به همراه --gpu-context=android استفاده کنید.
wlshm (Wayland only)
درایور خروجی ویدیوی حافظه اشتراکی بدون شتاب‌دهی سخت‌افزاری که در صورت حضور Wayland کار می‌کند.
از نسخه 0.30.0 mpv، ممکن است برای دریافت عملکرد مناسب نیاز به استفاده از --profile=sw-fast داشته باشید.
نکته:
7.0
3.5
این گزینه صرفاً یک حالت پشتیبان (fallback) است و در شرایط عادی نباید استفاده شود.
168u
168u
فیلترهای صوتی به شما امکان می‌دهند جریان صوتی و ویژگی‌های آن را تغییر دهید.
ساختار دستوری به این صورت است:
0.0
--af=...
راه‌اندازی یک زنجیره از فیلترهای صوتی. برای ساختار دستوری کامل به --vf (فیلترهای ویدیو) مراجعه کنید.
این یک گزینه از نوع فهرست تنظیمات شیء (object settings list) است. برای جزئیات به List Options مراجعه کنید.
168u
نکته:
0.0
3.5
برای دریافت فهرست کاملی از فیلترهای صوتی موجود، --af=help را مشاهده کنید.
همچنین به خاطر داشته باشید که اکثر فیلترهای واقعی از طریق پوشش‌دهنده lavfi در دسترس هستند که به شما امکان دسترسی به بیشتر فیلترهای libavfilter را می‌دهد. این شامل تمام فیلترهایی است که از MPlayer به libavfilter منتقل شده‌اند.
توضیحات مربوط به --vf نحوه استفاده از libavfilter و روش‌های جایگزین برای فیلترهای منسوخ‌شده mpv را شرح می‌دهد.
168u
168u
برای اطلاعات درباره نحوه عملکرد --af-add، --af-pre، --af-clr و موارد مشابه احتمالی دیگر، به گروه گزینه‌های --vf مراجعه کنید.
فیلترهای موجود عبارتند از:
0.0
lavcac3enc[=options]
کدگذاری صوت چندکاناله به AC-3 در زمان اجرا با استفاده از libavcodec. از قالب ورودی 16 بیتی native-endian با حداکثر ۶ کانال پشتیبانی می‌کند. جریان خروجی هنگام ذخیره به عنوان جریان خام AC-3 به صورت big-endian و هنگام ارسال به S/PDIF به صورت native-endian خواهد بود. اگر نرخ نمونه‌برداری (sample rate) ورودی ۴۸ کیلوهرتز، ۴۴.۱ کیلوهرتز یا ۳۲ کیلوهرتز نباشد، به ۴۸ کیلوهرتز بازنمونه‌برداری (resample) می‌شود.
7.0
tospdif=<yes|no>
در صورت انتخاب no جریان خام AC-3 خارج می‌شود، و در صورت انتخاب yes (پیش‌فرض) خروجی برای انتقال مستقیم (pass-through) به S/PDIF فرستاده می‌شود.
bitrate=<rate>
نرخ بیت (bitrate) مورد استفاده برای جریان AC-3. برای دستیابی به ۳۸۴ کیلوبیت بر ثانیه، آن را روی 384 تنظیم کنید.
مقدار پیش‌فرض 640 است. ممکن است برخی گیرنده‌ها قادر به پردازش این مقدار نباشند.
مقادیر مجاز: 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 576, 640.
مقدار ویژه auto یک نرخ بیت پیش‌فرض را بر اساس تعداد کانال‌های ورودی برمی‌گزیند:
7.0
1ch
96
2ch
192
3ch
224
4ch
384
5ch
448
6ch
448
168u
minch=<n>
اگر تعداد کانال‌های ورودی کمتر از <minch> باشد، فیلتر خود را غیرفعال (جدا) می‌کند (پیش‌فرض: 3).
encoder=<name>
انتخاب کدگذار مورد استفاده در libavcodec. در حال حاضر، این باید یک کدگذار AC-3 باشد و استفاده از هر کدک دیگری به طور کامل با خطا مواجه خواهد شد.
168u
format=format:srate:channels:out-srate:out-channels
به خودی خود هیچ تبدیلی روی قالب انجام نمی‌دهد. در عوض، ممکن است باعث شود سیستم فیلترها در صورت نیاز فیلترهای تبدیل لازم را قبل یا بعد از این فیلتر قرار دهد. این ویژگی اساساً برای کنترل قالب صوتی ورودی به فیلترهای دیگر کاربرد دارد. برای تعیین قالب خروجی صدا، --audio-format، --audio-samplerate و --audio-channels را ببینید. این فیلتر می‌تواند یک قالب خاص را تحمیل کند، در حالی که گزینه‌های --audio-* ممکن است بر اساس سازگاری خروجی، توسط ao بازنویسی شوند.
تمامی پارامترها اختیاری هستند. ۳ پارامتر اول مواردی که فیلتر به عنوان ورودی می‌پذیرد را محدود می‌کنند؛ بنابراین باعث درج فیلترهای تبدیل پیش از این فیلتر خواهند شد. پارامترهای out- به فیلترها یا خروجی‌های صوتی پس از این فیلتر می‌گویند که داده‌ها را بدون انجام تبدیل واقعی چگونه تفسیر کنند. تنظیم این موارد احتمالاً سیستم را دچار اختلال می‌کند مگر اینکه واقعاً به دلایلی خاص مانند آزمودن یا کار با رسانه‌های معیوب به آن نیاز داشته باشید.
7.0
<format>
اجبار به تبدیل به این قالب. برای مشاهده فهرستی از قالب‌های معتبر از --af=format=format=help استفاده کنید.
<srate>
اجبار به تبدیل به یک نرخ نمونه‌برداری معین. این مقدار یک عدد صحیح است، برای مثال 48000.
<channels>
اجبار به میکس به یک چیدمان کانال مشخص. برای مقادیر ممکن به گزینه --audio-channels مراجعه کنید.
168u
<out-srate>
<out-channels>
نکته: این فیلتر قبلاً با نام force شناخته می‌شد. فیلتر قدیمی format خود تبدیل‌ها را انجام می‌داد، بر خلاف این فیلتر که مدیریت تبدیل را به سیستم فیلترها واگذار می‌کند.
scaletempo[=option1:option2:...]
ضرب‌آهنگ (tempo) صوت را بدون دستکاری زیروبمی صدا (pitch) تغییر مقیاس می‌دهد؛ با امکان همگام‌سازی اختیاری با سرعت پخش.
نحوه کارکرد آن به این صورت است که 'stride' میلی‌ثانیه از صدا را با سرعت عادی پخش کرده و سپس 'stride*scale' میلی‌ثانیه از صدای ورودی را مصرف می‌کند. این فیلتر با ترکیب 'overlap'% از هر گام با صدای بعد از گام قبلی، گام‌ها (strides) را به هم پیوند می‌دهد. همچنین می‌تواند به صورت اختیاری یک تحلیل آماری کوتاه روی 'search' میلی‌ثانیه بعدی صدا انجام دهد تا بهترین موقعیت هم‌پوشانی را مشخص کند.
7.0
scale=<amount>
مقدار اسمی مقیاس ضرب‌آهنگ. علاوه بر سرعت، به این میزان نیز مقیاس را تغییر می‌دهد. (پیش‌فرض: 1.0)
stride=<amount>
طول هر گام خروجی بر حسب میلی‌ثانیه. مقدار بیش از اندازه بالا باعث پرش‌های محسوس در مقیاس‌های بالا و ایجاد اکو در مقیاس‌های پایین خواهد شد. مقادیر بسیار پایین، زیروبمی صدا را دستخوش تغییر می‌کنند. افزایش این مقدار باعث بهبود کارایی می‌شود. (پیش‌فرض: 60)
overlap=<factor>
ضریب هم‌پوشانی هر گام. کاهش آن باعث بهبود کارایی خواهد شد. (پیش‌فرض: .20)
search=<amount>
مدت زمان به میلی‌ثانیه برای جستجوی بهترین موقعیت هم‌پوشانی. کاهش آن کارایی را به شدت بهبود می‌دهد. در سیستم‌های ضعیف احتمالاً ترجیح می‌دهید این مقدار را بسیار پایین قرار دهید. (پیش‌فرض: 14)
speed=<tempo|pitch|both|none>
تنظیم پاسخ به تغییر سرعت.
7.0
tempo
تغییر مقیاس ضرب‌آهنگ به صورت همگام با سرعت (پیش‌فرض).
pitch
اثر فیلتر را معکوس می‌کند. زیروبمی صدا را بدون تغییر ضرب‌آهنگ مقیاس می‌دهد. این خطوط را به فایل input.conf خود بیفزایید تا تغییرات در قالب نیم‌پرده‌های موسیقی اعمال شوند:
7.0
3.5
[ multiply speed 0.9438743126816935
] multiply speed 1.059463094352953
168u
168u
هشدار:
7.0
3.5
همگام‌سازی صدا با ویدیو از دست می‌رود.
168u
both
مقیاس‌بندی هم‌زمان ضرب‌آهنگ (tempo) و زیروبمی (pitch).
none
نادیده گرفتن تغییرات سرعت.
168u
168u
7.0
3.5
"مثال‌ها"
0.0
mpv --af=scaletempo --speed=1.2 media.ogg
رسانه را با سرعت ۱.۲ برابر سرعت عادی، با زیروبمی عادی صدا پخش می‌کند. تغییر سرعت پخش، ضرب‌آهنگ صدا را متناسب با آن تغییر می‌دهد.
mpv --af=scaletempo=scale=1.2:speed=none --speed=1.2 media.ogg
رسانه را با سرعت ۱.۲ برابر سرعت عادی، با زیروبمی عادی صدا پخش می‌کند، اما تغییر سرعت پخش هیچ تأثیری بر ضرب‌آهنگ صدا نخواهد داشت.
mpv --af=scaletempo=stride=30:overlap=.50:search=10 media.ogg
پارامترهای کیفیت و کارایی را تنظیم می‌کند.
mpv --af=scaletempo=scale=1.2:speed=pitch audio.ogg
رسانه را با سرعت ۱.۲ برابر سرعت عادی، با زیروبمی عادی صدا پخش می‌کند. تغییر سرعت پخش، زیروبمی را تغییر داده و ضرب‌آهنگ صدا را روی ۱.۲ برابر باقی می‌گذارد.
168u
168u
168u
scaletempo2[=option1:option2:...]
ضرب‌آهنگ صدا را بدون تغییر دادن زیروبمی (pitch) مقیاس‌بندی می‌کند.
این الگوریتم از chromium پورت شده و از روش Waveform Similarity Overlap-and-add (WSOLA) استفاده می‌کند.
به نظر می‌رسد نسبت به scaletempo و موتور rubberband R2 یا engine=faster به کیفیت صوتی بالاتری دست می‌یابد. در صورت استفاده از گزینه audio-pitch-correction (به‌طور پیش‌فرض فعال)، این فیلتر هنگام تغییر سرعت پخش به‌طور خودکار درج می‌شود.
به‌طور پیش‌فرض، پارامترهای search-interval و window-size مقادیری مشابه با chromium دارند.
7.0
min-speed=<speed>
بی‌صدا کردن صوت در صورتی که سرعت پخش کمتر از <speed> باشد. (پیش‌فرض: 0.25)
max-speed=<speed>
بی‌صدا کردن صوت در صورتی که سرعت پخش بیشتر از <speed> و <speed> != 0 باشد. (پیش‌فرض: 8.0)
search-interval=<amount>
طول بازه بر حسب میلی‌ثانیه برای جستجوی بهترین موقعیت هم‌پوشانی. (پیش‌فرض: 40)
window-size=<amount>
طول بازه پنجره هم‌پوشانی-و-افزودن بر حسب میلی‌ثانیه. (پیش‌فرض: 12)
168u
rubberband
اصلاح زیروبمی (pitch) با کیفیت بالا با استفاده از librubberband. این فیلتر می‌تواند به جای scaletempo و scaletempo2 به کار رود، و هنگام پخش در سرعتی متفاوت از حالت عادی برای تنظیم زیروبمی صدا استفاده خواهد شد. همچنین می‌توان از آن برای تنظیم زیروبمی بدون تغییر سرعت پخش استفاده کرد.
7.0
pitch-scale=<amount>
ضریب مقیاس‌بندی زیروبمی را تنظیم می‌کند. فرکانس‌ها در این مقدار ضرب می‌شوند. (پیش‌فرض: 1.0)
engine=<faster|finer>
موتور اصلی Rubberband مورد استفاده را انتخاب می‌کند. دو مورد در دسترس است:
7.0
Faster
این همان موتور Rubberband R2 است. به‌طور قابل‌توجهی نسبت به موتور Finer (R3) از پردازنده کمتری استفاده می‌کند.
Finer
این همان موتور Rubberband R3 است. این موتور تنها با librubberband نسخه ۳ یا جدیدتر در دسترس است. این گزینه خروجی با کیفیت بسیار بالاتری تولید می‌کند، اما میزان مصرف پردازنده آن بیشتر است. (در صورت وجود، پیش‌فرض است)
168u
168u
این فیلتر تعدادی زیرگزینه اضافی دارد. می‌توانید آن‌ها را با mpv --af=rubberband=help فهرست کنید. این دستور همچنین مقادیر پیش‌فرض هر گزینه را نشان می‌دهد. این گزینه‌ها در اینجا مستند نشده‌اند، چرا که صرفاً به librubberband ارسال می‌شوند. برای آگاهی از عملکرد هر گزینه، مستندات librubberband را بررسی کنید:
https://breakfastquay.com/rubberband/code-doc/classRubberBand_1_1RubberBandStretcher.html
توجه داشته باشید که برخی گزینه‌ها فقط برای یکی از موتورهای R2 (سریع‌تر) یا R3 (دقیق‌تر) قابل اعمال هستند.
(نگاشت نام‌ها و مقادیر زیرگزینه‌های فیلتر rubberband در mpv به موارد librubberband از یک الگوی ساده پیروی می‌کند: "Option" + Name + Value.)
این فیلتر از دستورات af-command زیر پشتیبانی می‌کند:
7.0
set-pitch
آرگومان <pitch-scale> را به‌صورت پویا تنظیم می‌کند. این می‌تواند برای تغییر زیروبمی در حین پخش استفاده شود. توجه داشته باشید که سرعت از طریق ویژگی استاندارد speed کنترل می‌شود، نه با af-command.
multiply-pitch <factor>
مقدار فعلی <pitch-scale> را به‌صورت پویا ضرب می‌کند.
168u
lavfi=graph
فیلتر کردن صدا با استفاده از libavfilter مربوط به FFmpeg.
7.0
<graph>
گراف Libavfilter. برای جزئیات به فیلتر ویدیویی lavfi مراجعه کنید - نحو گراف یکسان است.
هشدار:
7.0
3.5
فراموش نکنید که گراف‌های libavfilter را همان‌طور که در بخش فیلتر ویدیویی lavfi شرح داده شده، درون گیومه قرار دهید.
168u
168u
o=<string>
گزینه‌های AVOptions.
fix-pts=<yes|no>
تعیین PTS بر اساس تعداد نمونه (پیش‌فرض: no). اگر این گزینه فعال باشد، پخش‌کننده به عبور دادن دقیق PTS توسط libavfilter اتکا نخواهد کرد. در عوض، تعداد نمونه را به عنوان PTS به libavfilter ارسال کرده، و PTS مورد استفاده mpv را بر اساس آن و PTS ورودی محاسبه می‌کند. این به فیلترهایی که به جای PTS اصلی یک PTS محاسبه‌شده مجدد را خروجی می‌دهند (شامل فیلترهایی که نیاز دارند PTS از 0 شروع شود) کمک می‌کند. mpv معمولاً انتظار دارد فیلترها به PTS دست نزنند (یا فقط در حد تغییر مرزهای فریم)، بنابراین این گزینه پیش‌فرض نیست، اما برای کار با فیلترهای معیوب ضروری خواهد بود. در عمل، این فیلترهای معیوب یا در طول زمان باعث ناهماهنگی تدریجی صدا و تصویر (A/V desync) می‌شوند (در برخی فایل‌ها)، یا در صورت پرش (seek) یا شروع پخش از میانه فایل، پخش را کاملاً مختل می‌کنند.
168u
drop
این فیلتر فریم‌های صوتی را حذف یا تکرار می‌کند تا با سرعت پخش تطبیق یابد. همیشه روی فریم‌های صوتی کامل عمل می‌کند، زیرا برای مدیریت SPDIF (انتقال مستقیم صدای فشرده) ساخته شده است. این فیلتر در صورت استفاده از گزینه --video-sync=display-adrop به‌طور خودکار به کار گرفته می‌شود. از این فیلتر (یا گزینه مذکور) استفاده نکنید؛ کیفیت بسیار پایینی دارند.
فیلترهای ویدیو به شما امکان می‌دهند تا جریان ویدیو و ویژگی‌های آن را تغییر دهید. تمام
اطلاعات شرح داده‌شده در این بخش برای فیلترهای صوتی نیز اعمال می‌شود
(عموماً با استفاده از پیشوند --af به جای --vf).
نحو دقیق به این صورت است:
0.0
--vf=<filter1[=parameter1:parameter2:...],filter2,...>
راه‌اندازی زنجیره‌ای از فیلترهای ویدیو. این زنجیره از نام فیلتر، و یک فهرست
اختیاری از پارامترها پس از = تشکیل می‌شود. پارامترها با
: از هم جدا می‌شوند (نه با ,، چرا که کاما ورودی فیلتر جدیدی را آغاز می‌کند).
پیش از نام فیلتر، می‌توان با @name: یک برچسب مشخص کرد؛ که در آن
name یک نام دلخواه تعیین‌شده توسط کاربر است که فیلتر را مشخص می‌کند. این
مورد تنها زمانی لازم است که بخواهید وضعیت فیلتر را در زمان اجرا تغییر دهید (toggle کنید).
یک ! پیش از نام فیلتر به این معنی است که فیلتر به‌طور پیش‌فرض غیرفعال است. هنگام
ایجاد فیلتر از آن صرف‌نظر خواهد شد. این مورد نیز برای فعال/غیرفعال کردن فیلتر در زمان
اجرا مفید است.
برای توضیحات بیشتر و مثال‌ها، دستور vf (و زیردستور toggle) را
ببینید.
این گزینه از نوع فهرست تنظیمات شیء است. برای جزئیات، List Options را ببینید.
نحو کلی ورودی فیلتر عبارت است از:
7.0
3.5
["@"<label-name>":"] ["!"] <filter-name> [ "=" <filter-parameter-list> ]
168u
168u
یا برای نحو خاص "toggle" (دستور vf را ببینید):
7.0
3.5
"@"<label-name>
168u
168u
و filter-parameter-list:
7.0
3.5
<filter-parameter> | <filter-parameter> "," <filter-parameter-list>
168u
168u
و filter-parameter:
7.0
3.5
( <param-name> "=" <param-value> ) | <param-value>
168u
168u
در صورتی که مقدار حاوی نویسه‌هایی مانند , یا = باشد، param-value
می‌تواند بیشتر درون [ / ] نقل‌قول شود. این مورد به‌ویژه در رابطه با
فیلتر lavfi استفاده می‌شود که برای تعیین فیلترها و پارامترهای آن‌ها از نحوی
بسیار مشابه mpv (از نظر تاریخی MPlayer) استفاده می‌کند.
168u
نکته:
0.0
3.5
گزینه --vf تنها می‌تواند یک قطعه را به عنوان ورودی بپذیرد، حتی اگر فیلتر از
ورودی پویا پشتیبانی کند. فیلترهایی که نیازمند چندین ورودی هستند را نمی‌توان
استفاده کرد. برای چنین مواردی از --lavfi-complex استفاده کنید. این نکته برای --af نیز صدق می‌کند.
168u
168u
فیلترها را می‌توان در زمان اجرا دستکاری کرد. می‌توانید برای داشتن کنترل بیشتر روی این
موضوع، برچسب‌های @ را همان‌طور که در بالا توضیح داده شد در ترکیب با دستور vf
(واسط دستورات یا COMMAND INTERFACE را ببینید) استفاده کنید. فیلترهایی که در ابتدا با
! غیرفعال شده‌اند نیز برای این منظور کاربردی هستند.
نکته:
0.0
3.5
برای دریافت فهرست کاملی از فیلترهای ویدیویی در دسترس، --vf=help و
https://ffmpeg.org/ffmpeg-filters.html را ببینید.
همچنین به خاطر داشته باشید که بیشتر فیلترهای واقعی از طریق پوشش‌دهنده lavfi
در دسترس هستند که به شما امکان دسترسی به بیشتر فیلترهای libavfilter را می‌دهد. این
مورد شامل تمام فیلترهایی است که از MPlayer به libavfilter پورت شده‌اند.
بیشتر فیلترهای توکار (builtin) به نوعی منسوخ شده‌اند، مگر اینکه تنها در mpv
موجود باشند (مانند فیلترهایی که با ویژگی‌های خاص mpv سروکار دارند، یا مواردی
که فقط در mpv پیاده‌سازی شده‌اند).
اگر فیلتری توکار نباشد، lavfi-bridge به‌طور خودکار آزمایش خواهد شد.
این پل از خروجی راهنما پشتیبانی نمی‌کند، و پارامترها را پیش از استفاده واقعی
از فیلتر اعتبارسنجی نمی‌نماید. اگرچه نحو mpv نسبتاً شبیه به libavfilter است،
اما کاملاً یکسان نیست. (به این معنی که هر آنچه توسط گزینه graph در vf_lavfi
پذیرفته می‌شود، لزوماً توسط --vf پذیرفته نخواهد شد.)
همچنین می‌توانید برای اجبار به استفاده از پوشش‌دهنده، نام فیلتر را با پیشوند lavfi-
مشخص کنید. این کار زمانی مفید است که نام فیلتر با یک فیلتر توکار منسوخ‌شده در mpv
تداخل داشته باشد. به عنوان مثال --vf=lavfi-scale=args به جای فیلتر توکار
و منسوخ mpv، از فیلتر scale مربوط به libavfilter استفاده خواهد کرد.
168u
168u
فیلترهای ویدیو در قالب فهرست‌ها مدیریت می‌شوند. چند دستور برای مدیریت
فهرست فیلترها وجود دارد.
0.0
--vf-append=filter
فیلتر داده‌شده به عنوان آرگومان را به انتهای فهرست فیلترها اضافه می‌کند.
--vf-add=filter
فیلتر داده‌شده به عنوان آرگومان را به انتهای فهرست فیلترها اضافه می‌کند. (ارسال چندین
فیلتر در حال حاضر امکان‌پذیر است، اما منسوخ شده است.)
--vf-pre=filter
فیلترهای داده‌شده به عنوان آرگومان را به ابتدای فهرست فیلترها اضافه می‌کند. (ارسال
چندین فیلتر در حال حاضر امکان‌پذیر است، اما منسوخ شده است.)
--vf-remove=filter
فیلتر را از فهرست حذف می‌کند. فیلتر را می‌توان یا به همان صورتی که اضافه شده
بود (نام فیلتر و فهرست کامل آرگومان‌های آن)، یا از طریق برچسب (با پیشوند @)
مشخص کرد. تطبیق فیلترها بدین صورت است: اگر برای هر یک از فیلترهای مورد مقایسه برچسبی
تنظیم شده باشد، فقط برچسب‌ها مقایسه می‌شوند. اگر هیچ‌یک از فیلترها برچسب نداشته باشند،
نام فیلتر، آرگومان‌ها، و ترتیب آرگومان‌ها مقایسه خواهند شد. (ارسال چندین فیلتر در حال
حاضر امکان‌پذیر است، اما منسوخ شده است.)
--vf-toggle=filter
اگر فیلتر داده‌شده هنوز در فهرست وجود ندارد آن را اضافه می‌کند، و اگر در فهرست
وجود داشته باشد آن را حذف می‌کند. تطبیق فیلترها همان‌طور که در --vf-remove
توضیح داده شد کار می‌کند.
--vf-clr
فهرست فیلترها را به‌طور کامل خالی می‌کند.
168u
در فیلترهایی که پشتیبانی می‌کنند، می‌توانید از طریق نام به پارامترها دسترسی داشته باشید.
0.0
--vf=<filter>=help
نام پارامترها و دامنه مقادیر مجاز آن‌ها را برای یک فیلتر خاص چاپ می‌کند.
168u
فیلترهای اختصاصی mpv که در دسترس هستند عبارتند از:
0.0
format=fmt=<value>:colormatrix=<value>:...
بازنویسی پارامترهای ویدیو را، به همراه تبدیل اختیاری اعمال می‌کند. به‌طور پیش‌فرض،
این گزینه پارامترهای ویدیو را بدون تبدیل بازنویسی می‌کند (به استثنای پارامتر
fmt)، اما می‌توان آن را طوری تنظیم کرد که با استفاده از convert=yes،
تبدیل مناسب را برای پارامترهایی که تبدیل از آن‌ها پشتیبانی می‌شود انجام دهد.
7.0
<fmt>
نام قالب تصویر، مانند rgb15، bgr24، 420p و غیره (پیش‌فرض: don't change).
این فیلتر همواره تبدیل به قالب داده‌شده را انجام می‌دهد.
نکته:
7.0
3.5
برای دریافت فهرستی از قالب‌های موجود، از --vf=format=fmt=help استفاده کنید.
168u
168u
نکته:
7.0
3.5
تبدیل بین قالب‌های سخت‌افزاری در برخی موارد پشتیبانی می‌شود.
مانند: cuda به vulkan، یا vaapi به vulkan.
168u
168u
<convert=yes|no>
اجبار به تبدیل پارامترهای رنگ (پیش‌فرض: no).
اگر این گزینه غیرفعال باشد (حالت پیش‌فرض)، تنها تبدیلی که احتمالاً انجام می‌شود
تبدیل قالب است در صورتی که <fmt> تنظیم شده باشد. سایر پارامترها
(مانند <colormatrix>) بدون تبدیل تحمیل می‌شوند. این حالت معمولاً زمانی
مفید است که برچسب‌گذاری مشخصات فایل‌ها به اشتباه انجام شده باشد..sp
اگر این گزینه فعال باشد، در صورت عدم تطابق هر یک از پارامترها، libswscale یا zimg به کار گرفته می‌شود. در صورتی که فرمت‌های تصویر ورودی/خروجی توسط wrapper متعلق به zimg در mpv پشتیبانی شوند و --sws-allow-zimg=yes استفاده شده باشد، از zimg استفاده می‌شود. ممکن است هیچ‌یک از این دو کتابخانه از همه انواع تبدیل‌ها پشتیبانی نکنند. این امر معمولاً منجر به تبدیل نادرست خاموش می‌شود. zimg در بسیاری از موارد شانس بیشتری برای انجام صحیح تبدیل دارد.
در هر دو حالت، پارامترهای رنگ در مرحله خروجی تبدیل فرمت تصویر تنظیم می‌شوند (اگر fmt تنظیم شده باشد). تفاوت در این است که با convert=no، پارامترهای رنگ به مبدل منتقل نمی‌شوند.
اگر پارامترهای ویدئوی ورودی و خروجی یکسان باشند، تبدیل همیشه نادیده گرفته می‌شود.
هنگام تبدیل میان فرمت‌های سخت‌افزاری، این پارامتر هیچ تأثیری ندارد و تنها تبدیلی که صورت می‌گیرد، تبدیل فرمت است.
7.0
3.5
"مثال‌ها"
0.0
mpv test.mkv --vf=format:colormatrix=ycgco
منجر به رنگ‌های نادرست می‌شود (اگر test.mkv به‌درستی برچسب‌گذاری شده باشد).
mpv test.mkv --vf=format:colormatrix=ycgco:convert=yes --sws-allow-zimg
منجر به تبدیل واقعی به ycgco می‌شود، با این فرض که رندرکننده از آن پشتیبانی کند (--vo=gpu معمولاً پشتیبانی می‌کند). می‌توانید --vo=xv را برای تحمیل یک VO که قطعاً از آن پشتیبانی نمی‌کند اضافه کنید، که برای تأیید باید رنگ‌های نادرستی را نمایش دهد.
استفاده از --sws-allow-zimg=no (یا غیرفعال کردن zimg در زمان ساخت) باعث استفاده از libswscale خواهد شد که در زمان نگارش این مستندات قادر به انجام این تبدیل نیست.
168u
168u
168u
<colormatrix>
تبدیل فضای رنگی YUV به RGB را هنگام پخش ویدئو کنترل می‌کند. استانداردهای گوناگونی وجود دارند. به‌طور معمول، باید از BT.601 برای ویدئوی SD و از BT.709 برای ویدئوی HD استفاده شود. (این کار به‌صورت پیش‌فرض انجام می‌شود.) استفاده از فضای رنگی نادرست منجر به رنگ‌هایی با اشباع اندکی کمتر یا بیشتر از حد و جابجا شده می‌شود.
این گزینه‌ها همیشه پشتیبانی نمی‌شوند. خروجی‌های ویدئویی مختلف، سطوح متفاوتی از پشتیبانی را ارائه می‌دهند. درایورهای خروجی ویدئوی gpu و vdpau معمولاً پشتیبانی کاملی ارائه می‌دهند. خروجی xv در صورتی که درایور ویدئوی سیستم از آن پشتیبانی کند می‌تواند فضای رنگی را تنظیم نماید، اما سطوح ورودی و خروجی را خیر. فیلتر ویدئویی scale می‌تواند فضای رنگی و سطوح ورودی را پیکربندی کند، اما تنها در صورتی که فرمت خروجی RGB باشد (اگر درایور خروجی ویدئو از خروجی RGB پشتیبانی می‌کند، می‌توانید این مورد را با --vf=scale,format=rgba تحمیل کنید).
اگر این گزینه روی auto تنظیم شود (که حالت پیش‌فرض است)، پرچم فضای رنگی ویدئو استفاده خواهد شد. اگر آن پرچم تنظیم نشده باشد، فضای رنگی به‌طور خودکار انتخاب می‌شود. این کار با استفاده از یک روش ابتکاری ساده انجام می‌شود که تلاش می‌کند ویدئوی SD و HD را از یکدیگر تشخیص دهد. اگر ابعاد ویدئو بزرگ‌تر از 1279x576 پیکسل باشد، از BT.709 (HD) استفاده می‌شود؛ در غیر این صورت BT.601 (SD) انتخاب می‌گردد.
فضاهای رنگی موجود عبارتند از:
7.0
auto
انتخاب خودکار (پیش‌فرض)
bt.601
ITU-R Rec. BT.601 (SD)
bt.709
ITU-R Rec. BT.709 (HD)
bt.2020-ncl
ITU-R Rec. BT.2020 (درخشندگی غیرثابت یا non-constant luminance)
bt.2020-cl
ITU-R Rec. BT.2020 (درخشندگی ثابت یا constant luminance)
bt.2100-pq
گونه ITU-R Rec. BT.2100 ICtCp PQ
bt.2100-hlg
گونه ITU-R Rec. BT.2100 ICtCp HLG
dolbyvision
Dolby Vision
smpte-240m
SMPTE-240M
168u
<colorlevels>
سطوح رنگی YUV مورد استفاده در تبدیل YUV به RGB. این گزینه تنها هنگام پخش فایل‌های معیوبی لازم است که از سطوح رنگی استاندارد پیروی نمی‌کنند یا به‌اشتباه برچسب‌گذاری شده‌اند. اگر ویدئو محدوده رنگی خود را مشخص نکرده باشد، محدوده محدود (limited range) فرض می‌شود.
همان محدودیت‌های <colormatrix> در اینجا نیز اعمال می‌شود.
محدوده‌های رنگی موجود عبارتند از:
7.0
auto
انتخاب خودکار (معمولاً محدوده محدود) (پیش‌فرض)
limited
محدوده محدود (16-235 برای luma و 16-240 برای chroma)
full
محدوده کامل (0-255 برای هر دو luma و chroma)
168u
<primaries>
رنگ‌های اصلی (primaries) در RGB که فایل مبدأ با آن‌ها انکود شده است. معمولاً این مقدار باید در هدر فایل مشخص باشد، اما هنگام پخش فایل‌های معیوب یا با برچسب‌گذاری نادرست، می‌توان از این گزینه برای نادیده گرفتن و بازنویسی تنظیمات استفاده کرد.
این گزینه تنها بر درایورهای خروجی ویدئویی تأثیر می‌گذارد که مدیریت رنگ را انجام می‌دهند، برای نمونه gpu در حالتی که زیرگزینه‌های target-prim یا icc-profile در آن تنظیم شده باشند.
اگر این گزینه روی auto تنظیم شده باشد (که حالت پیش‌فرض است)، از پرچم primaries ویدئو استفاده خواهد شد. اگر آن پرچم تنظیم نشده باشد، فضای رنگی به‌طور خودکار و با استفاده از روش‌های ابتکاری زیر انتخاب می‌شود: اگر <colormatrix> روی BT.2020 یا BT.709 تنظیم یا تعیین شده باشد، رنگ‌های اصلی متناظر استفاده می‌شوند. در غیر این صورت، اگر ارتفاع ویدئو دقیقاً 576 باشد (PAL)، از BT.601-625 استفاده می‌شود. اگر دقیقاً 480 یا 486 باشد (NTSC)، از BT.601-525 استفاده می‌شود. اگر وضوح تصویر هر مقدار دیگری باشد، BT.709 استفاده می‌گردد.
رنگ‌های اصلی موجود عبارتند از:
7.0
auto
انتخاب خودکار (پیش‌فرض)
bt.601-525
ITU-R BT.601 (SD) سیستم‌های 525 خطی (NTSC, SMPTE-C)
bt.601-625
ITU-R BT.601 (SD) سیستم‌های 625 خطی (PAL, SECAM)
bt.709
ITU-R BT.709 (HD) (رنگ‌های اصلی مشابه با sRGB)
bt.2020
ITU-R BT.2020 (UHD)
apple
Apple RGB
adobe
Adobe RGB (1998)
prophoto
ProPhoto RGB (ROMM)
cie1931
CIE 1931 RGB
dci-p3
DCI-P3 (Digital Cinema)
v-gamut
رنگ‌های اصلی Panasonic V-Gamut
168u
<transfer> یا <gamma>
تابع انتقال (transfer function) که فایل مبدأ با آن انکود شده است. معمولاً این مقدار باید در هدر فایل تنظیم شده باشد، اما هنگام پخش فایل‌های معیوب یا با برچسب‌گذاری نادرست، می‌تواند برای نادیده گرفتن و بازنویسی تنظیمات استفاده شود.
این گزینه تنها بر درایورهای خروجی ویدئویی اثر می‌گذارد که مدیریت رنگ را انجام می‌دهند.
اگر این گزینه روی auto تنظیم شود (که پیش‌فرض است)، مقدار گاما برای محتوای YCbCr روی BT.1886، برای محتوای RGB روی sRGB و برای محتوای XYZ روی st428 تنظیم خواهد شد.
توابع گامای موجود عبارتند از:
7.0.TP
auto
انتخاب خودکار (پیش‌فرض)
bt.1886
ITU-R BT.1886 (تابع انتقال EOTF متناظر با BT.601/BT.709/BT.2020)
srgb
IEC 61966-2-4 (sRGB)
linear
نور خطی (Linear light)
gamma1.8
منحنی توانی خالص (گاما ۱.۸)
gamma2.0
منحنی توانی خالص (گاما ۲.۰)
gamma2.2
منحنی توانی خالص (گاما ۲.۲)
gamma2.4
منحنی توانی خالص (گاما ۲.۴)
gamma2.6
منحنی توانی خالص (گاما ۲.۶)
gamma2.8
منحنی توانی خالص (گاما ۲.۸)
prophoto
منحنی ProPhoto RGB (ROMM)
pq
منحنی ITU-R BT.2100 PQ (کوانتایزر ادراکی)
hlg
منحنی ITU-R BT.2100 HLG (لاگ-گامای ترکیبی)
v-log
منحنی انتقال Panasonic V-Log
s-log1
منحنی انتقال Sony S-Log1
s-log2
منحنی انتقال Sony S-Log2
st428
مستر توزیع سینمای دیجیتال (DCDM) (XYZ)
168u
<sig-peak>
روشنایی اوج مرجع (peak illumination) برای فایل ویدیویی، نسبت به سطح سفید مرجع سیگنال. این گزینه عمدتاً برای HDR کاربرد دارد، اما همچنین می‌تواند برای نگاشت تن (tone map) محتوای SDR جهت شبیه‌سازی نوردهی (exposure) متفاوت استفاده شود. معمولاً از برچسب‌هایی مانند MaxCLL یا فراداده‌های مسترینگ استخراج می‌شود.
مقدار پیش‌فرض 0.0 به روشنایی اوج اسمی منبع تنظیم خواهد شد.
<light>
7.0
3.5
نوع نور صحنه. این مقدار عمدتاً بر اساس تابع گاما به‌درستی استنتاج می‌شود، اما در هنگام مشاهدهٔ ویدیوهای خام دوربین (مانند V-Log) که معمولاً به‌جای ارجاع به نمایشگر (display-referred) به صحنه ارجاع دارند (scene-referred)، لغو (override) آن می‌تواند مفید باشد.
انواع نور موجود عبارتند از:
168u
168u
7.0
auto
انتخاب خودکار (پیش‌فرض)
display
نور وابسته به نمایشگر (display-referred) (اکثر محتواها)
hlg
وابسته به صحنه (scene-referred) با استفاده از HLG OOTF (مانند محتوای HLG)
709-1886
وابسته به صحنه (scene-referred) با استفاده از تعامل BT709+BT1886
gamma1.2
وابسته به صحنه (scene-referred) با استفاده از OOTF توانی خالص (gamma=1.2)
168u
<dolbyvision=yes|no>
شامل شدن یا نشدن فراداده‌های Dolby Vision (پیش‌فرض: yes). در صورت غیرفعال شدن، تمام فراداده‌های Dolby Vision از فریم‌ها حذف خواهند شد.
<hdr10plus=yes|no>
شامل شدن یا نشدن فراداده‌های HDR10+ (پیش‌فرض: yes). در صورت غیرفعال شدن، تمام فراداده‌های HDR10+ از فریم‌ها حذف خواهند شد.
<min-luma>
تنظیم مقدار کمینهٔ روشنایی (luminance) برای فراداده‌های نمایشگر مسترینگ. این یک مقدار ممیز شناور بر حسب نیت (cd/m²) است.
نکته:
7.0
3.5
مقدار 0.0 به معنای تعریف‌نشده است که مقدار پیش‌فرض می‌باشد. برای تنظیم 0.0 به‌عنوان مقدار واقعی، از مقداری بسیار کوچک مانند 1e-6 استفاده کنید.
168u
168u
<max-luma>
تنظیم مقدار بیشینهٔ روشنایی (luminance) برای فراداده‌های نمایشگر مسترینگ. این یک مقدار ممیز شناور بر حسب نیت (cd/m²) است.
<max_cll>
تنظیم بیشینهٔ سطح نور محتوا (MaxCLL) برای فراداده‌های نمایشگر مسترینگ. این یک مقدار ممیز شناور بر حسب نیت (cd/m²) است.
<max_fall>
تنظیم بیشینهٔ میانگین سطح نور فریم (MaxFALL) برای فراداده‌های نمایشگر مسترینگ. این یک مقدار ممیز شناور بر حسب نیت (cd/m²) است.
<film-grain=yes|no>
شامل شدن یا نشدن فراداده‌های گرین فیلم (film grain) (پیش‌فرض: yes). در صورت غیرفعال شدن، هرگونه فرادادهٔ گرین فیلم از فریم‌ها حذف خواهد شد.
<chroma-location>
تنظیم موقعیت کروما (chroma location) ویدیو. برای فهرست کردن همهٔ حالت‌های موجود از --vf=format:chroma-location=help استفاده کنید.
<stereo-in>
تنظیم حالت سه‌بعدی/استریو که فرض می‌شود ویدیو با آن کدگذاری شده است. برای فهرست کردن همهٔ حالت‌های موجود از --vf=format:stereo-in=help استفاده کنید. برای مشاهدهٔ معنی هر نام، به مستندات فیلتر stereo3d مراجعه نمایید.
<rotate>
تنظیم زاویهٔ چرخش ویدیو بر حسب درجه که فرض می‌شود ویدیو با آن کدگذاری شده است. مقدار ویژهٔ -1 از قالب ورودی استفاده می‌کند.
<w>, <h>
اگر 0 نباشد، تبدیل به اندازهٔ مشخص‌شده را انجام می‌دهد. اگر convert=yes تنظیم نشده باشد، نادیده گرفته می‌شود.
<dw>, <dh>
تنظیم اندازهٔ نمایش (display size). توجه داشته باشید که تنظیم اندازهٔ نمایش به‌گونه‌ای که ویدیو در هر دو جهت مقیاس‌بندی شود به‌جای اینکه صرفاً نسبت ابعاد تغییر کند، یک جزئیات پیاده‌سازی است و ممکن است بعداً تغییر کند.
<dar>
تنظیم نسبت ابعاد نمایش (DAR) برای فریم ویدیو. این یک مقدار ممیز شناور است، اما مقادیری مانند [16:9] نیز می‌توانند ارسال شوند (استفاده از [...] برای نقل‌قول است تا از تفسیر نویسهٔ : توسط تجزیه‌کنندهٔ گزینه‌ها جلوگیری شود).
<force-scaler=auto|zimg|sws>
اجبار به استفاده از یک موتور مقیاس‌بندی (scaler backend) خاص، در صورت امکان. این یک گزینه برای اشکال‌زدایی (debug) است و ممکن است در هر زمانی حذف شود.
<alpha=auto|straight|premul|none>
تنظیم نوع آلفای مورد استفاده در ویدیو. در صورتی که قالب تصویر فاقد کانال آلفا باشد، تأثیر آن نامشخص است (بسته به نحوهٔ توسعهٔ بخش‌های داخلی mpv، ممکن است نادیده گرفته شود یا خطایی رخ دهد). بسته به پشتیبانی، تنظیم این گزینه ممکن است بر پردازش‌های بعدی تصویر در نحوهٔ برخورد با آلفا تأثیر بگذارد یا نگذارد. در صورت استفاده از convert و zimg، این گزینه کانال آلفا را تبدیل می‌کند. کتابخانهٔ libswscale و سایر مؤلفه‌های FFmpeg این مقدار را کاملاً نادیده می‌گیرند. گزینهٔ none تنها از نسخهٔ vN.344.0 کتابخانهٔ libplacebo به بعد در دسترس است.
168u
lavfi=graph[:sws-flags[:o=opts]]
فیلتر کردن ویدیو با استفاده از libavfilter از FFmpeg.
7.0
<graph>
رشتهٔ گراف libavfilter. فیلتر باید دقیقاً یک پد (pad) ورودی ویدیو و یک پد خروجی ویدیو داشته باشد.
برای نحو و فیلترهای موجود، به https://ffmpeg.org/ffmpeg-filters.html مراجعه کنید.
هشدار:
7.0
3.5
اگر می‌خواهید از نحو کامل فیلتر با این گزینه استفاده کنید، باید گراف فیلتر را نقل‌قول کنید تا از تداخل نحو mpv و نحو گراف فیلتر جلوگیری شود. برای جلوگیری از آشفتگی نقل‌قول‌ها و گریزدهی‌ها (escaping)، در صورتی که می‌دانید کدام قطعهٔ ویدیویی (video track) را از فایل ورودی می‌خواهید استفاده کنید، استفاده از --lavfi-complex را مد نظر قرار دهید. (به‌هرحال تقریباً در تمام فایل‌های ویدیویی فقط یک قطعهٔ ویدیویی وجود دارد.)
168u
168u
7.0
3.5.IP
0.0
--vf=lavfi=[gradfun=20:30,vflip]
فیلتر gradfun با پارامترهای نامعتبر، به‌دنبال آن یک فیلتر
vflip. (این مثال نشان می‌دهد که چگونه libavfilter یک
گراف و نه صرفاً یک فیلتر تکی را دریافت می‌کند.) رشته گراف فیلتر درون
[ و ] نقل‌قول شده است. این مورد در برخی پوسته‌ها
(مانند bash) به نقل‌قول یا گریز (escaping) اضافی نیاز ندارد، در حالی که
برخی دیگر (مانند zsh) نیازمند علامت‌های نقل‌قول " اضافی در اطراف رشته گزینه هستند.
'--vf=lavfi="gradfun=20:30,vflip"'
مشابه قبلی، اما از نقل‌قولی استفاده می‌کند که باید در تمام
پوسته‌ها ایمن باشد. علامت‌های نقل‌قول بیرونی ' اطمینان حاصل می‌کنند که پوسته
علامت‌های نقل‌قول " مورد نیاز mpv را حذف نمی‌کند.
'--vf=lavfi=graph="gradfun=radius=30:strength=20,vflip"'
مشابه قبلی، اما برای همه‌چیز از پارامترهای نام‌دار استفاده می‌کند.
168u
168u
168u
<sws-flags>
اگر libavfilter فیلترهایی را برای تبدیل قالب پیکسل وارد کند، این
گزینه پرچم‌هایی را مشخص می‌کند که باید به libswscale ارسال شوند. این
گزینه عددی است و یک ترکیب بیتی از پرچم‌های SWS_ را می‌پذیرد.
ببینید: https://git.videolan.org/?p=ffmpeg.git;a=blob;f=libswscale/swscale.h.
<o>
گزینه‌های AVFilterGraph را تنظیم می‌کند. این گزینه‌ها باید توسط FFmpeg مستند شده باشند.
7.0
3.5
"مثال (Example)"
0.0
'--vf=lavfi=yadif:o="threads=2,thread_type=slice"'
پیکربندی ریسه‌بندی (threading) خاصی را تحمیل می‌کند.
168u
168u
168u
168u
sub=[=bottom-margin:top-margin]
رندر کردن زیرنویس را به یک نقطه دلخواه در زنجیره فیلتر منتقل می‌کند، یا بر خلاف
استفاده از پشتیبانی OSD خروجی ویدیو، رندر زیرنویس را در فیلتر ویدیو تحمیل
می‌کند.
7.0
<bottom-margin>
یک نوار سیاه در پایین فریم اضافه می‌کند. رندرکننده SSA/ASS می‌تواند
زیرنویس‌ها را در آنجا قرار دهد (با --sub-use-margins).
<top-margin>
نوار سیاه در بالا برای زیرنویس‌های بالایی (با --sub-use-margins).
168u
7.0
3.5
"مثال‌ها (Examples)"
0.0
--vf=sub,eq
رندر زیرنویس را به قبل از فیلتر eq منتقل می‌کند. این کار هم رنگ‌های
زیرنویس و هم ویدیو را تحت تأثیر تنظیمات اکولایزر ویدیو
قرار می‌دهد.
168u
168u
168u
vapoursynth=file:buffered-frames:concurrent-frames:user-data
یک اسکریپت فیلتر VapourSynth را بارگذاری می‌کند. این گزینه برای پردازش
جریانی در نظر گرفته شده است: mpv در واقع یک فیلتر منبع ارائه می‌دهد، به جای اینکه
از یک منبع ویدیویی بومی VapourSynth استفاده کند. منبع mpv فقط به
درخواست‌های فریم در یک پنجره کوچک از فریم‌ها پاسخ می‌دهد (اندازه این پنجره
با پارامتر buffered-frames کنترل می‌شود)، و درخواست‌های خارج از
آن خطا برمی‌گردانند. به همین دلیل، شما نمی‌توانید از تمام توان
VapourSynth استفاده کنید، اما می‌توانید فیلترهای مشخصی را به کار ببرید.
هشدار:
7.0
3.5
از این فیلتر استفاده نکنید، مگر اینکه دانش تخصصی در VapourSynth داشته باشید
و بدانید چگونه باگ‌ها را در کد پوشش‌دهنده VapourSynth در mpv برطرف کنید.
168u
168u
اگر فقط می‌خواهید ویدیوی تولیدشده توسط VapourSynth را پخش کنید (یعنی با استفاده
از یک منبع ویدیویی بومی VapourSynth)، بهتر است از vspipe و یک
پایپ یا FIFO برای هدایت ویدیو به mpv استفاده کنید. همین امر زمانی که اسکریپت فیلتر
نیازمند دسترسی تصادفی به فریم‌ها باشد نیز صدق می‌کند (پارامتر buffered-frames را ببینید).
7.0
file
نام فایل مبدأ اسکریپت. در حال حاضر، این همیشه یک اسکریپت python
است (با پسوند .vpy طبق قرارداد VapourSynth).
متغیر video_in روی منبع ویدیویی mpv تنظیم می‌شود، و انتظار
می‌رود که اسکریپت ویدیو را از آن بخواند. (در غیر این صورت، mpv هیچ
ویدیویی را رمزگشایی نخواهد کرد، و صف بسته‌های ویدیویی سرریز می‌شود، که در نهایت
منجر به پخش تنها صدا، یا شرایط بدتر خواهد شد.)
همچنین انتظار می‌رود که گراف فیلتر ایجادشده توسط اسکریپت، برچسب‌های زمانی را
با استفاده از ویژگی‌های فریم _DurationNum و _DurationDen
عبور دهد.
برای فهرست کاملی از متغیرهای اسکریپت تعریف‌شده توسط mpv، انتهای فهرست
گزینه‌ها را ببینید.
7.0
3.5
"مثال:"
0.0
3.5
import vapoursynth as vs
from vapoursynth import core
core.std.AddBorders(video_in, 10, 10, 20, 20).set_output()
168u
168u
168u
168u
هشدار:
7.0
3.5
اسکریپت در هر پرش (seek) مجدداً بارگذاری خواهد شد. این کار برای بازنشانی
صحیح فیلتر در ناپیوستگی‌ها انجام می‌شود.
168u
168u
buffered-frames
حداکثر تعداد فریم‌های ویدیویی رمزگشایی‌شده که باید قبل از فیلتر بافر شوند
(پیش‌فرض: 4). این پارامتر حداکثر تعداد فریم‌هایی را مشخص می‌کند که
اسکریپت می‌تواند در جهت رو به عقب درخواست کند.
برای مثال، اگر buffered-frames=5 باشد، و اسکریپت به تازگی فریم 15 را درخواست کرده باشد،
همچنان می‌تواند فریم 10 را درخواست کند، اما فریم 9 دیگر در دسترس نیست.
اگر فریم 30 را درخواست کند، mpv تعداد 15 فریم دیگر را رمزگشایی کرده، و فقط
فریم‌های 25-30 را نگه می‌دارد.
تنها دلیل وجود این بافر، پاسخگویی به درخواست‌های دسترسی تصادفی
است که فیلتر VapourSynth می‌تواند ایجاد کند.
رابط برنامه‌نویسی VapourSynth دارای تابع getFrameAsync است، که یک
شماره فریم مطلق را می‌گیرد. فیلترهای منبع باید به تمام درخواست‌ها پاسخ دهند. برای
مثال، یک فیلتر منبع می‌تواند فریم 2432، و سپس فریم 3 را درخواست کند.
فیلترهای منبع معمولاً این کار را با نمایه‌سازی پیشاپیش کل فایل
پیاده‌سازی می‌کنند.
از طرف دیگر، mpv مبتنی بر جریان است و به فیلترها اجازه پرش
نمی‌دهد. (و اجازه دادن به آن منطقی نیست، زیرا عملکرد را به کلی نابود
می‌کند.) فیلترها فریم‌ها را به‌صورت متوالی در جهت پخش دریافت می‌کنند، و
نمی‌توانند آن‌ها را خارج از ترتیب درخواست کنند.
برای جبران این عدم تطابق، mpv به فیلتر اجازه می‌دهد تا به فریم‌ها
درون یک پنجره مشخص دسترسی داشته باشد. buffered-frames اندازه این
پنجره را کنترل می‌کند. بیشتر فیلترهای VapourSynth با این روش کار می‌کنند، زیرا mpv
فریم‌ها را به‌صورت ترتیبی و افزایشی از آن درخواست می‌کند، و بیشتر فیلترها تنها
به فریم‌های "نزدیک" به فریم درخواست‌شده نیاز دارند.
اگر فیلتر فریمی با شماره بالاتر از بالاترین فریم بافرشده را درخواست کند،
فریم‌های جدید تا رسیدن به شماره فریم درخواست‌شده رمزگشایی خواهند شد. فریم‌های
اضافی به روش FIFO تخلیه می‌شوند (حداکثر تنها buffered-frames فریم در این بافر وجود دارد).
اگر فیلتر فریمی با شماره پایین‌تر از پایین‌ترین فریم بافرشده را درخواست کند،
درخواست نمی‌تواند برآورده شود، و خطایی به فیلتر بازگردانده می‌شود. قرار
نیست چنین خطایی در یک محیط "مناسب" VapourSynth رخ دهد. اینکه دقیقاً چه اتفاقی می‌افتد
بستگی به فیلترهای درگیر دارد.
افزایش این بافر عملکرد را بهبود نخواهد بخشید؛ بلکه حافظه را هدر می‌دهد
و سرعت پرش‌ها را کاهش می‌دهد (زمانی که باید فریم‌های کافی برای پر کردن بافر
به‌یک‌باره رمزگشایی شوند). این بافر تنها برای جلوگیری از خطای شرح‌داده‌شده
در بند قبل مورد نیاز است.
اینکه یک فیلتر به چه تعداد فریم نیاز دارد به جزئیات پیاده‌سازی فیلتر بستگی دارد،
و mpv راهی برای دانستن آن ندارد. یک فیلتر مقیاس‌بندی (scale) ممکن است فقط به
1 فریم نیاز داشته باشد، یک فیلتر درونیابی (interpolation) ممکن است به تعداد کمی فریم نیاز داشته باشد،
و فیلتر Reverse به تعداد نامحدودی فریم نیاز خواهد داشت..sp
اگر عملکردی قابل اتکا تا نهایت توانایی VapourSynth می‌خواهید، از vspipe استفاده کنید.
تعداد واقعی فریم‌های بافر شده همچنین به مقدار گزینهٔ concurrent-frames بستگی دارد. در حال حاضر، مقادیر هر دو گزینه برای به دست آوردن اندازهٔ نهایی بافر در هم ضرب می‌شوند.
concurrent-frames
تعداد فریم‌هایی که باید به صورت موازی درخواست شوند. سطح همزمانی به فیلتر و سرعت رمزگشایی ویدیو توسط mpv جهت تغذیهٔ فیلتر بستگی دارد. این مقدار احتمالاً باید متناسب با تعداد هسته‌های دستگاه شما باشد. در بیشتر مواقع، افزایش آن فراتر از تعداد هسته‌ها می‌تواند در عمل باعث کندتر شدن آن شود.
از نظر فنی، mpv تابع getFrameAsync در VapourSynth را در یک حلقه فراخوانی می‌کند، تا زمانی که تعداد concurrent-frames فریم وجود داشته باشد که هنوز توسط فیلتر برگردانده نشده‌اند. همچنین فرض می‌شود که باقی زنجیرهٔ فیلترهای mpv خروجی فیلتر vapoursynth را به اندازهٔ کافی سریع می‌خوانند. (به عنوان مثال، اگر پخش‌کننده را موقتاً متوقف کنید، فیلترگذاری خیلی زود متوقف خواهد شد، زیرا فریم‌های فیلتر شده در یک صف منتظر می‌مانند.)
همزمانی واقعی به عوامل متعدد دیگری نیز بستگی دارد.
به‌طور پیش‌فرض، این گزینه از مقدار ویژهٔ auto استفاده می‌کند که گزینه را روی تعداد هسته‌های منطقی شناسایی‌شدهٔ پردازنده تنظیم می‌نماید.
user-data
رشتهٔ دلخواه اختیاری که به اسکریپت ارسال می‌شود. در صورت عدم تنظیم، مقدار پیش‌فرض یک رشتهٔ خالی است.
168u
متغیرهای اسکریپت .vpy زیر توسط mpv تعریف می‌شوند:
7.0
video_in
منبع ویدیویی mpv به عنوان کلیپ vapoursynth. توجه داشته باشید که طول نادرستی (بسیار زیاد) برای آن تنظیم شده است که بسیاری از فیلترها را سردرگم می‌کند. این کار ضروری است، زیرا تعداد واقعی فریم‌ها نامشخص است. می‌توانید از فیلتر Trim روی کلیپ برای کاهش طول استفاده کنید.
video_in_dw, video_in_dh
اندازهٔ نمایشی ویدیو. در صورتی که ویدیو از پیکسل‌های مربع استفاده نکند (مانند DVD) می‌تواند با اندازهٔ ویدیو متفاوت باشد.
container_fps
مقدار FPS طبق گزارش سربرگ‌های فایل. این مقدار ممکن است نادرست یا کاملاً نامعتبر باشد (مانند 0 یا NaN). حتی اگر مقدار درست باشد، چنانچه فیلتر دیگری FPS واقعی را تغییر دهد (با انداختن یا درج فریم‌ها)، مقدار این متغیر مفید نخواهد بود. توجه داشته باشید که گزینهٔ خط فرمان --container-fps-override این مقدار را بازنویسی می‌کند.
برای برخی فیلترها که بر داشتن FPS اصرار دارند مفید است.
display_fps
نرخ نوسازی نمایشگر فعلی. توجه داشته باشید که این مقدار می‌تواند 0 باشد.
display_res
تفکیک‌پذیری نمایشگر فعلی. این یک آرایهٔ عدد صحیح است که ورودی نخست مربوط به عرض و ورودی دوم مربوط به ارتفاع است. این مقادیر می‌توانند 0 باشند. توجه داشته باشید که این مقدار به تغییرات نمایشگر واکنش نشان نمی‌دهد و ممکن است روی تمام پلتفرم‌ها کار نکند.
user_data
داده‌های کاربر که از فیلتر ارسال شده است. این متغیر همیشه وجود دارد و پیش‌فرض آن رشتهٔ خالی است.
168u
vavpp
پس‌پردازش ویدیویی VA-API. نیازمند پشتیبانی سیستم از VA-API است، یعنی فقط لینوکس/BSD. تنها با --vo=vaapi و --vo=gpu کار می‌کند. در حال حاضر عمل دی‌اینترلیس را انجام می‌دهد. این فیلتر در صورت درخواست دی‌اینترلیس (خواه با استفاده از کلید d که به‌طور پیش‌فرض به دستور cycle deinterlace نگاشت شده، یا با گزینهٔ --deinterlace) به‌طور خودکار درج می‌شود.
7.0
deint=<method>
انتخاب الگوریتم دی‌اینترلیس.
7.0
no
دی‌اینترلیس انجام نده.
auto
انتخاب باکیفیت‌ترین الگوریتم دی‌اینترلیس (پیش‌فرض). این انتخاب بر اساس ترتیب گزینه‌ها طبق مستندات پیش می‌رود و motion-compensated دارای بالاترین کیفیت در نظر گرفته می‌شود.
first-field
نمایش فقط فیلد اول.
bob
دی‌اینترلیس bob.
weave, motion-adaptive, motion-compensated
الگوریتم‌های پیشرفتهٔ دی‌اینترلیس. این که این موارد در عمل کار کنند به سخت‌افزار GPU، درایورهای GPU، باگ‌های درایور و باگ‌های mpv بستگی دارد.
168u
<interlaced-only>
7.0
no
دی‌اینترلیس تمام فریم‌ها (پیش‌فرض).
yes
تنها دی‌اینترلیس فریم‌هایی که به عنوان درهم‌بافته (interlaced) علامت‌گذاری شده‌اند.
168u
reversal-bug=<yes|no>
7.0
no
استفاده از API به گونه‌ای که توسط درایورهای قدیمی‌تر Mesa تفسیر می‌شد. اگرچه این تفسیر آشکارتر و شهودی‌تر بود، اما ظاهراً نادرست بود و مورد تأیید توسعه‌دهندگان درایور Intel نبود.
yes
استفاده از تفسیر Intel برای مراجع رو به جلو و عقب سطوح (پیش‌فرض). این همان چیزی است که درایورهای Intel و درایورهای جدیدتر Mesa انتظار دارند. تنها برای الگوریتم‌های پیشرفتهٔ دی‌اینترلیس اهمیت دارد.
168u
168u
vdpaupp
پس‌پردازش ویدیویی VDPAU. تنها با --vo=vdpau و --vo=gpu کار می‌کند. این فیلتر در صورت درخواست دی‌اینترلیس (خواه با استفاده از کلید d که به‌طور پیش‌فرض به دستور cycle deinterlace نگاشت شده، یا با گزینهٔ --deinterlace) به‌طور خودکار درج می‌شود. هنگام فعال‌سازی دی‌اینترلیس، اگر VO vdpau استفاده شود و همچنین اگر gpu به کار رود و رمزگشایی سخت‌افزاری حداقل یک بار فعال شده باشد (یعنی vdpau بارگذاری شده باشد)، همیشه نسبت به فیلترهای نرم‌افزاری دی‌اینترلیس ترجیح داده می‌شود.
7.0
sharpen=<-1-1>
برای مقادیر مثبت، اعمال الگوریتم واضح‌سازی (sharpening) روی ویدیو، و برای مقادیر منفی الگوریتم محوسازی (blurring) (پیش‌فرض: 0).
denoise=<0-1>
اعمال یک الگوریتم کاهش نویز روی ویدیو (پیش‌فرض: 0؛ بدون کاهش نویز).
deint=<yes|no>
آیا دی‌اینترلیس فعال باشد یا خیر (پیش‌فرض: no). در صورت فعال بودن، از حالت انتخاب‌شده با deint-mode استفاده خواهد کرد.
deint-mode=<first-field|bob|temporal|temporal-spatial>
انتخاب حالت دی‌اینترلیس (پیش‌فرض: temporal).
توجه داشته باشید که در حال حاضر سازوکاری وجود دارد که به VO vdpau اجازه می‌دهد deint-mode فیلترهای خودکار درج‌شدهٔ vdpaupp را تغییر دهد. برای جلوگیری از سردرگمی، توصیه می‌شود از زیرگزینه‌های --vo=vdpau مرتبط با فیلترسازی استفاده نکنید.
7.0
first-field
نمایش فقط فیلد اول.
bob
دی‌اینترلیس Bob.
temporal
دی‌اینترلیس زمانی تطبیقی با حرکت. ممکن است با سخت‌افزار ویدیویی کُند یا تفکیک‌پذیری بالا منجر به عدم همگام‌سازی صدا و تصویر شود.
temporal-spatial
دی‌اینترلیس زمانی تطبیقی با حرکت همراه با درون‌یابی مکانی لبه‌محور. به سخت‌افزار ویدیویی سریع نیاز دارد.
168u
chroma-deint
باعث می‌شود دی‌اینترلیسرهای زمانی هم روی luma و هم روی chroma عمل کنند (پیش‌فرض). از no-chroma-deint برای عملکرد صرف روی luma و افزایش سرعت دی‌اینترلیس پیشرفته استفاده کنید. با حافظهٔ ویدیویی کُند مفید است.
pullup
تلاش برای اعمال تله‌سینه معکوس (inverse telecine)، نیازمند دی‌اینترلیس زمانی تطبیقی با حرکت است..TP
interlaced-only=<yes|no>
اگر yes باشد، تنها فریم‌هایی که به عنوان درهم‌بافته (interlaced) نشانه‌گذاری شده‌اند را دی‌اینترلیس می‌کند (پیش‌فرض: no).
hqscaling=<0-9>
7.0
0
استفاده از مقیاس‌بندی پیش‌فرض VDPAU (پیش‌فرض).
1-9
اعمال مقیاس‌بندی باکیفیت VDPAU (نیازمند سخت‌افزار توانمند).
168u
168u
d3d11vpp
پس‌پردازش ویدیویی Direct3D 11. به یک بافتار (context) D3D11 نیاز دارد و بهترین عملکرد را با رمزگشایی سخت‌افزاری ارائه می‌دهد. فریم‌های نرم‌افزاری به‌طور خودکار برای پردازش به سخت‌افزار منتقل می‌شوند.
7.0
format
تبدیل به قالب تصویر انتخاب‌شده، مانند nv12، p010 و غیره (پیش‌فرض: don't change).
نام‌های قالب را می‌توان با --vf=d3d11vpp=format=help استعلام کرد.
توجه داشته باشید که تنها زیرمجموعه محدودی پشتیبانی می‌شود و پشتیبانی واقعی به سخت‌افزار شما بستگی دارد. معمولاً این گزینه نباید تغییر کند، مگر اینکه پردازش خاصی تنها با قالبی ویژه کار کند که در این صورت می‌توان آن را در اینجا انتخاب کرد.
deint=<yes|no>
تعیین فعال بودن دی‌اینترلیس (پیش‌فرض: no).
scale
ضریب مقیاس‌بندی برای فریم‌های ویدیویی (پیش‌فرض: 1.0).
scaling-mode=<standard,intel,nvidia>
انتخاب حالت مقیاس‌بندی مورد استفاده. توجه داشته باشید که این گزینه تنها افزونه‌های پردازشی مربوطه را فعال می‌کند؛ اینکه آیا واقعاً کار می‌کند یا خیر، به سخت‌افزار شما و تنظیمات کنترل‌پنل درایور GPU بستگی دارد (پیش‌فرض: standard).
7.0
standard
حالت مقیاس‌بندی پیش‌فرض طبق پیاده‌سازی d3d11vpp.
intel
فناوری Intel Video Super Resolution.
nvidia
فناوری NVIDIA RTX Super Resolution.
168u
interlaced-only=<yes|no>
اگر yes باشد، تنها فریم‌هایی که به عنوان درهم‌بافته نشانه‌گذاری شده‌اند را دی‌اینترلیس می‌کند (پیش‌فرض: no).
mode=<blend|bob|adaptive|mocomp|ivctc|none>
تلاش می‌کند یک پردازنده ویدیویی با قابلیت پردازشی داده‌شده را انتخاب کند. اگر یک پردازنده ویدیویی از چندین قابلیت پشتیبانی کند، مشخص نیست که کدام الگوریتم واقعاً انتخاب می‌شود. مقدار none همیشه به حالت بازگشتی (fallback) عمل می‌کند. در بیشتر سخت‌افزارها (اگر نگوییم همه)، این گزینه احتمالاً کاری انجام نخواهد داد، چرا که یک پردازنده ویدیویی معمولاً از همه حالت‌ها پشتیبانی می‌کند یا از هیچ‌کدام.
nvidia-true-hdr
فعال‌سازی پردازش NVIDIA RTX Video HDR.
168u
fingerprint=...
محاسبه اثرانگشت فریم‌های ویدیو و ارائه آن‌ها به عنوان فراداده (metadata). در واقع، در حال حاضر به‌سختی شایسته نامیده شدن با عنوان fingerprint است، زیرا اثرانگشت‌های «درست و واقعی» محاسبه نمی‌کند، بلکه تنها تصاویر بسیار کوچک‌شده با مقیاس پایین هستند (که البته می‌توان از آن‌ها برای محاسبه هش‌های تصویر یا تطبیق تشابه استفاده کرد).
هدف اصلی این فیلتر پشتیبانی از اسکریپت skip-logo.lua است. اگر این اسکریپت کنار گذاشته شود، یا mpv راهکاری برای بارگذاری فیلترهای تعریف‌شده توسط کاربر (به‌جز VapourSynth) بیابد، این فیلتر حذف خواهد شد. با توجه به ماهیت «خاص» این فیلتر، بدون اخطار قبلی حذف خواهد شد.
روش مورد نظر برای خواندن از فیلتر، استفاده از vf-metadata است (همچنین پارامتر فیلتر clear-on-query را ببینید). این ویژگی فهرستی از جفت‌های کلید/مقدار را به صورت زیر برمی‌گرداند:
7.0
3.5
fp0.pts = 1.2345
fp0.hex = 1234abcdef...bcde
fp1.pts = 1.4567
fp1.hex = abcdef1234...6789
...
fpN.pts = ...
fpN.hex = ...
type = gray-hex-16x16
168u
168u
هر مدخل fp<N> برای یک فریم است. مدخل pts برچسب زمانی فریم را مشخص می‌کند (درون زنجیره فیلتر؛ در حالت‌های ساده این مقدار با برچسب زمانی نمایش برابر است). فیلد hex اثرانگشت کدگذاری‌شده در مبنای شانزده است که اندازه و معنای آن به گزینه فیلتر type بستگی دارد. فیلد type دارای همان مقداری است که فیلتر با آن ایجاد شده است.
این ویژگی فریم‌هایی را برمی‌گرداند که از زمان آخرین استعلامِ این ویژگی فیلتر شده‌اند. اگر clear-on-query=no تنظیم شده باشد، یک استعلام باعث بازنشانی فهرست فریم‌ها نمی‌شود. در هر دو حالت، حداکثر ۱۰ فریم برگردانده می‌شود. اگر فریم‌های بیشتری وجود داشته باشد، قدیمی‌ترین فریم‌ها دور ریخته می‌شوند. فریم‌ها به ترتیب فیلتر شدن بازگردانده می‌شوند.
(این دستور یک فهرست ساختاریافته برای جزئیات هر فریم بازنمی‌گرداند، چرا که ساختار داخلی سازوکار vf-metadata بسیار ضعیف است. قالب برگردانده‌شده ممکن است در آینده تغییر کند.)
این فیلتر برای سرعت و کارایی از zimg استفاده می‌کند. با این حال، در چندین موقعیت به libswscale بازگشت خواهد کرد: قالب‌های پیکسلی نامرسوم، اشاره‌گرهای داده یا گام‌های (strides) ترازنشده، یا در صورتی که راه‌اندازی zimg به دلایل نامعلومی با شکست مواجه شود. در این شرایط، فیلتر پردازنده (CPU) بیشتری مصرف خواهد کرد. همچنین اثرانگشت‌های متفاوتی تولید می‌کند، زیرا libswscale نمی‌تواند گسترش کامل دامنه‌ای را که ما معمولاً از zimg انتظار داریم انجام دهد. در نتیجه، ممکن است فیلتر کُندتر شده و در شرایط تصادفی به‌درستی کار نکند.
7.0
type=...
تعیین نوع اثرانگشتی که باید محاسبه شود. انواع موجود عبارتند از:
7.0
gray-hex-8x8
طیف خاکستری، ۸ بیتی، در اندازه 8x8
gray-hex-16x16
طیف خاکستری، ۸ بیتی، در اندازه 16x16 (پیش‌فرض)
168u
هر دو نوع صرفاً تمام رنگ‌ها را حذف کرده، مقیاس تصویر را کاهش می‌دهند، تمام مقادیر پیکسل‌ها را در یک آرایه بایتی ادغام نموده و آرایه را به یک رشته هگزادسیمال تبدیل می‌کنند.
clear-on-query=yes|no
پاک کردن فهرست اثرانگشت‌های فریم در صورتی که ویژگی vf-metadata برای این فیلتر استعلام شود (پیش‌فرض: yes). این مورد نیازمند دقت کاربر است؛ زیرا برخی از انواع دسترسی ممکن است فیلتر را چندین بار استعلام کنند که منجر به از دست رفتن فریم‌ها خواهد شد.
print=yes|no
چاپ اثرانگشت‌های محاسبه‌شده در پایانه (پیش‌فرض: no). این گزینه عمدتاً برای آزمایش و اهداف مشابه است. اسکریپت‌ها در عوض باید از vf-metadata برای خواندن اطلاعات از این فیلتر استفاده کنند.
168u
gpu=...
تبدیل ویدیو به RGB با استفاده از رندرکننده‌ی Vulkan یا OpenGL که معمولاً همراه با --vo=gpu استفاده می‌شود. در مورد OpenGL، این امر مستلزم آن است که پیاده‌سازی EGL از رندرینگ خارج از صفحه (off-screen rendering) در نمایشگر پیش‌فرض پشتیبانی کند. (این ویژگی در Mesa موجود است.)
زیرگزینه‌ها:
7.0
api=<type>
مقدار type رابط برنامه‌نویسی رندرینگ (rendering API) را انتخاب می‌کند. همچنین می‌توانید help را برای دریافت فهرست کاملی از پس‌انه‌های کامپایل‌شده ارسال کنید.
7.0
egl
EGL (پیش‌فرض در صورت موجود بودن)
vulkan
Vulkan
168u
w=<pixels>, h=<pixels>
اندازه خروجی به پیکسل (پیش‌فرض: 0). در صورت مثبت نبودن، از اندازه نخستین فریم ورودی فیلترشده استفاده می‌شود.
168u
هشدار:
7.0
3.5
این گزینه بسیار آزمایشی است. عملکرد آن ضعیف بوده و در وهله اول در همه‌جا کار نخواهد کرد. برخی ویژگی‌ها نیز پشتیبانی نمی‌شوند.
168u
هشدار:
7.0
3.5
این عمل رندر OSD را انجام نمی‌دهد. اگر OSD را مشاهده می‌کنید، توسط بک‌اند VO رندر شده است. (زیرنویس‌ها در صورت امکان توسط فیلتر gpu رندر می‌شوند.)
168u
168u
هشدار:
7.0
3.5
اگر از این قابلیت همراه با حالت کدگذاری استفاده می‌کنید، به یاد داشته باشید که حالت کدگذاری، خروجی فیلتر RGB را به صورت نرم‌افزاری و با استفاده از مقیاس‌بند نرم‌افزاری پیکربندی‌شده به yuv420p بازمی‌گرداند. استفاده از zimg ممکن است این وضعیت را بهبود ببخشد، اما در هر صورت ممکن است با اهداف شما از به‌کارگیری این فیلتر در تضاد باشد.
168u
168u
هشدار:
7.0
3.5
از این همراه با --vo=gpu استفاده نکنید. این کار فیلترگذاری را دو بار اعمال می‌کند، چرا که بیشتر گزینه‌های --vo=gpu بدون قید و شرط بر روی فیلتر gpu اعمال می‌شوند. هیچ سازوکاری در mpv برای جلوگیری از این موضوع وجود ندارد.
168u
168u
168u
"کدگذاری (ENCODING)"
با استفاده از این امکانات می‌توانید فایل‌ها را از یک قالب/کدک به دیگری کدگذاری کنید.
0.0
--o=<filename>
حالت کدگذاری را فعال کرده و نام فایل خروجی را مشخص می‌کند.
--of=<format>
قالب خروجی را مشخص می‌کند (تشخیص خودکار از روی پسوند نام فایل مشخص‌شده با --o را لغو می‌کند). برای مشاهده فهرست کامل قالب‌های پشتیبانی‌شده به --of=help مراجعه کنید.
--ofopts=<options>
گزینه‌های قالب خروجی را برای libavformat مشخص می‌کند.
برای دیدن فهرست کامل گزینه‌های پشتیبانی‌شده به --ofopts=help مراجعه کنید.
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
7.0
--ofopts-add=<option>
گزینه داده‌شده به عنوان آرگومان را به فهرست گزینه‌ها اضافه می‌کند. (ارسال هم‌زمان چندین گزینه در حال حاضر هنوز امکان‌پذیر است، اما منسوخ شده است.)
--ofopts=""
فهرست گزینه‌ها را به طور کامل خالی می‌کند.
168u
--oac=<codec>
کدک صوتی خروجی را مشخص می‌کند. برای دیدن فهرست کامل کدک‌های پشتیبانی‌شده به --oac=help مراجعه کنید.
--oacopts=<options>
گزینه‌های کدک صوتی خروجی را برای libavcodec مشخص می‌کند.
برای مشاهده فهرست کامل گزینه‌های پشتیبانی‌شده به --oacopts=help مراجعه کنید.
7.0
3.5
"مثال"
0.0
"--oac=libmp3lame --oacopts=b=128000"
کدگذاری MP3 با نرخ ۱۲۸ کیلوبیت بر ثانیه (128 kbps) را انتخاب می‌کند.
168u
168u
168u
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
7.0
--oacopts-add=<option>
گزینه داده‌شده به عنوان آرگومان را به فهرست گزینه‌ها اضافه می‌کند. (ارسال هم‌زمان چندین گزینه در حال حاضر هنوز امکان‌پذیر است، اما منسوخ شده است.)
--oacopts=""
فهرست گزینه‌ها را به طور کامل خالی می‌کند.
168u
--ovc=<codec>
کدک ویدئویی خروجی را مشخص می‌کند. برای دیدن فهرست کامل کدک‌های پشتیبانی‌شده به --ovc=help مراجعه کنید.
--ovcopts=<options>
گزینه‌های کدک ویدئویی خروجی را برای libavcodec مشخص می‌کند.
برای مشاهده فهرست کامل گزینه‌های پشتیبانی‌شده به --ovcopts=help مراجعه کنید.
7.0
3.5
"مثال‌ها"
0.0
"--ovc=mpeg4 --ovcopts=qscale=5"
مقیاس کوانتیزه‌کننده ثابت ۵ (constant quantizer scale 5) را برای کدگذاری MPEG-4 انتخاب می‌کند.
"--ovc=libx264 --ovcopts=crf=23"
ضریب کیفیت VBR با مقدار ۲۳ را برای کدگذاری H.264 انتخاب می‌کند.
168u
168u
168u
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
7.0
--ovcopts-add=<option>
گزینه داده‌شده به عنوان آرگومان را به فهرست گزینه‌ها اضافه می‌کند. (ارسال هم‌زمان چندین گزینه در حال حاضر هنوز امکان‌پذیر است، اما منسوخ شده است.)
--ovcopts=""
فهرست گزینه‌ها را به طور کامل خالی می‌کند.
168u
--orawts
مقادیر pts ورودی را در ویدئوی خروجی کپی می‌کند (توسط برخی از قالب‌های ظرف خروجی مانند AVI پشتیبانی نمی‌شود). در این حالت، ناپیوستگی‌ها برطرف نمی‌شوند و تمام مقادیر pts همان‌گونه که هستند منتقل می‌گردند. در این حالت هرگز به عقب جستجو (seek) نکنید و از چندین فایل ورودی استفاده ننمایید!
--ocopy-metadata=<yes|no>
هنگام کدگذاری، فراداده‌ها را از فایل‌های ورودی به فایل‌های خروجی کپی می‌کند (پیش‌فرض: yes).
--oset-metadata=<metadata-tag[,metadata-tag,...]>
فراداده‌هایی را که باید در فایل خروجی گنجانده شوند مشخص می‌کند.
کلیدهای پشتیبانی‌شده بین قالب‌های خروجی گوناگون متفاوت است. برای نمونه، Matroska (MKV) و FLAC کلیدهای تقریباً دلخواهی را مجاز می‌دانند، در حالی که پشتیبانی در MP4 و MP3 محدودتر است.
این یک گزینه از نوع فهرست کلید/مقدار است. برای جزئیات به List Options مراجعه کنید.
7.0
3.5
"مثال"
0.0
"--oset-metadata=title="Output title";,comment="Another tag""
یک عنوان و یک یادداشت به فایل خروجی اضافه می‌کند.
168u
168u
168u
--oremove-metadata=<metadata-tag[,metadata-tag,...]>
فراداده‌هایی را مشخص می‌کند که هنگام کپی از فایل ورودی، باید از فایل خروجی حذف (مستثنی) شوند.
این یک گزینه از نوع فهرست رشته‌ای است. برای جزئیات به List Options مراجعه کنید.
7.0
3.5
"مثال"
0.0
"--oremove-metadata=comment,genre"
از کپی شدن برچسب‌های comment و genre به فایل خروجی جلوگیری می‌کند.
168u
168u
168u
هستهٔ mpv را می‌توان از طریق دستورها و مشخصه‌ها (properties) کنترل کرد. چندین روش برای تعامل با پخش‌کننده از آن‌ها بهره می‌برند: نگاشت‌های کلید (input.conf)، OSD (نمایش اطلاعات با مشخصه‌ها)، JSON IPC و API کلاینت (libmpv).
input.conf
فایل input.conf از فهرستی از نگاشت‌های کلید تشکیل شده است، برای نمونه:
0.0
3.5
s screenshot # take a screenshot with the s key
LEFT seek 15 # map the left-arrow key to seeking forward by 15 seconds
168u
168u
هر سطر یک کلید را به یک دستور ورودی نگاشت می‌کند. کلیدها با مقدار نویسه‌ای عینی خود (در صورت ترکیب با Shift با حروف بزرگ)، یا با نامی برای کلیدهای خاص مشخص می‌شوند. برای نمونه، a به کلید a بدون shift نگاشت می‌شود، و A به a همراه با shift نگاشت می‌شود.
این فایل در دایرکتوری پیکربندی mpv قرار دارد (بسته به پلتفرم، معمولاً در ~/.config/mpv/input.conf). نگاشت‌های پیش‌فرض در اینجا تعریف شده‌اند:
0.0
3.5
https://github.com/mpv-player/mpv/blob/master/etc/input.conf
168u
168u
فهرستی از کلیدهای ویژه را می‌توان با دستور زیر به دست آورد:
0.0
3.5
mpv --input-keylist
168u
168u
به‌طور کلی، کلیدها می‌توانند با Shift، Ctrl و Alt ترکیب شوند:
0.0
3.5
ctrl+q quit
168u
168u
mpv را می‌توان در حالت آزمون ورودی راه‌اندازی کرد، که به جای اجرای دستورات، نگاشت‌های کلید و دستورهایی را که به آن‌ها متصل شده‌اند روی OSD نمایش می‌دهد:
0.0
3.5
mpv --input-test --force-window --idle
168u
168u
(تنها بستن پنجره باعث خروج mpv می‌شود؛ فشردن کلیدهای عادی صرفاً نگاشت مربوطه را نمایش می‌دهد، حتی اگر به quit نگاشت شده باشند.)
همچنین بخش Key names را ببینید.
"ساختار نحوی input.conf (input.conf syntax)"
[Shift+][Ctrl+][Alt+][Meta+]<key> [{<section>}] <command> ( ; <command> )*
توجه داشته باشید که به‌طور پیش‌فرض، کلید Alt سمت راست می‌تواند برای ایجاد نویسه‌های خاص استفاده شود و در نتیجه به‌عنوان یک کلید تبدیل‌کننده (modifier) ثبت نمی‌شود. این مورد را می‌توان با گزینهٔ --input-right-alt-gr تغییر داد.
سطرهای جدید همیشه یک نگاشت جدید را آغاز می‌کنند. # یک توضیح (comment) را آغاز می‌کند (به جز درون آرگومان‌های رشته‌ایِ در گیومه). برای نگاشت دستورها به کلید #، می‌توان از SHARP استفاده کرد.
<key> یا نویسهٔ عینی تولیدشده توسط کلید است (نویسهٔ ASCII یا Unicode)، یا یک نام نمادین (همان‌طور که توسط --input-keylist چاپ می‌شود).
<section> (درون آکولادهای { و }) بخش ورودی برای این دستور است.
<command> خود دستور است. این مؤلفه شامل نام دستور و چندین (یا هیچ) آرگومان است که همگی با فاصله از یکدیگر جدا می‌شوند. آرگومان‌های رشته‌ای باید درون گیومه قرار گیرند، معمولاً با ". بخش Flat command syntax را ببینید.
می‌توانید چندین دستور را به یک کلید متصل کنید. برای نمونه:
a show-text "command 1" ; show-text "command 2"

همچنین امکان نگاشت یک دستور به دنباله‌ای از کلیدها وجود دارد:
a-b-c show-text "command run after a, b, c have been pressed"

(این موضوع در ساختار کلی دستور نشان داده نشده است.).SS تطبیق کلید (Key matching)
mpv تاریخچه‌ای از فشرده‌شدن کلیدها را نگه می‌دارد. اگر کلید فعلی یک یا چند توالی متصل‌شده (شامل انتساب‌های تک‌کلیدی) را کامل کند، mpv طولانی‌ترین توالی را انتخاب می‌کند. اگر این توالی به ignore متصل شده باشد، ردگیری طوری ادامه می‌یابد که گویی هیچ چیزی مطابقت نیافته است. در غیر این صورت، فرمانی که به این توالی متصل شده را اجرا کرده و تاریخچهٔ کلید را پاک می‌کند.
توجه داشته باشید که اگرچه انتساب‌های تک‌کلیدی انتساب‌های توکار را لغو (override) می‌کنند، این موضوع در مورد توالی‌های چندکلیدی صدق نمی‌کند. برای نمونه، یک توالی b-c در input.conf توسط یک انتساب توکار b لغو خواهد شد. در این حالت، اگر به b نیازی ندارید، می‌توانید آن را به ignore متصل کنید.
به عنوان مثالی پیچیده‌تر، اگر بخواهید هم b و هم a-b-c را متصل کنید، کار نخواهد کرد، زیرا b توالی a-b-c را لغو می‌کند. با این حال، متصل کردن a-b به ignore این امکان را فراهم می‌سازد، چرا که پس از a-b طولانی‌ترین تطابق یعنی a-b نادیده گرفته می‌شود، و فشرده‌شدن یک c در ادامه، توالی a-b-c را فعال می‌کند در حالی که b به‌تنهایی همچنان کار خواهد کرد.
نام‌های کلید (Key names)
تمام ورودی‌های ماوس و صفحه‌کلید به نام‌های کلید مخصوص mpv تبدیل می‌شوند. نام‌های کلید یا شناسه‌های نمادین ویژه‌ای هستند که یک کلید فیزیکی را نشان می‌دهند، یا نام‌های متنی کلید هستند که کدپوینت‌های یونیکد انکودشده به‌صورت UTF-8 می‌باشند. این‌ها همان چیزی هستند که ورودی صفحه‌کلید به‌طور معمول تولید می‌کند، برای مثال a برای کلید A. این موارد تحت تأثیر کلیدهای تغییردهندهٔ صفحه‌کلید که بر متن تولیدشده اثر می‌گذارند (مانند shift و caps lock) قرار دارند. در نتیجه، mpv به‌جای کدهای اسکن فیزیکی، از ورودی ترجمه‌شده توسط چیدمان صفحه‌کلید فعلی سیستم‌عامل استفاده می‌کند.
در حال حاضر این فرض به‌صورت سخت‌کدشده وجود دارد که هر کلید متنی می‌تواند به صورت یک کدپوینت یونیکد منفرد (در فرم NFKC) نمایش داده شود.
تمام نام‌های کلید را می‌توان با تغییردهنده‌های Shift، Ctrl، Alt و Meta ترکیب کرد. آن‌ها باید به نام کلید اصلی پیشوند شوند، به‌طوری که بعد از هر تغییردهنده یک + قرار گیرد (برای مثال ctrl+q).
نکته:
0.0
3.5
تغییردهندهٔ Shift نیازمند توجه است. به‌طور کلی، هنگامی که تغییردهندهٔ Shift با کلیدی که متن تولید می‌کند ترکیب می‌شود، باید نام متنی واقعی کلید تولیدشده در زمان فشرده‌بودن shift استفاده شود.
برای نمونه، در چیدمان صفحه‌کلید US، عبارت Shift+2 معمولاً باید به‌صورت نام کلید @ در input.conf مشخص شود، و به همین ترتیب ترکیب Alt+Shift+2 معمولاً Alt+@ است، و غیره.
به‌طور کلی، تغییردهندهٔ Shift زمانی که با نام‌های متنی کلید مشخص شود، نادیده گرفته می‌شود؛ برای نمونه، mpv عبارت Shift+2 را به‌صورت 2 تفسیر می‌کند. تنها استثنا حروف ASCII هستند که توسط mpv نرمال‌سازی می‌شوند. برای مثال، Shift+a به‌صورت A تفسیر می‌شود.
نام‌های ویژهٔ کلید مانند Shift+LEFT طبق انتظار کار می‌کنند. در صورت تردید - از --input-test برای بررسی اینکه یک کلید یا ترکیب چگونه توسط mpv دیده می‌شود استفاده کنید.
168u
168u
نام‌های نمادین کلید و نام‌های تغییردهنده‌ها به بزرگی و کوچکی حروف حساس نیستند (case-insensitive). نام‌های کلید یونیکد دقیقاً همان‌گونه که ورودی متنی صفحه‌کلید تولید می‌کند، به بزرگی و کوچکی حروف حساس هستند (case-sensitive).
نوع دیگری از نام‌های کلید، نام‌های کلید هگزادسیمال هستند که با 0x شروع شده و به دنبال آن مقدار هگزادسیمال کلید می‌آید. مقدار هگزادسیمال می‌تواند مقدار یک کدپوینت یونیکد باشد، یا می‌تواند به‌عنوان یک جایگزین (fallback) برای کلیدهای ویژه‌ای که نام تعریف‌شدهٔ خاصی در mpv ندارند عمل کند. به‌محض این‌که mpv نام‌های مناسبی برای آن‌ها اضافه کند این نام‌ها از کار خواهند افتاد، اما می‌توانند در صورتی که نامی اضافه نشود، استفاده از یک کلید را برای شما ممکن سازند.
تمام نام‌های نمادین توسط --input-keylist فهرست شده‌اند. گزینهٔ --input-test یک حالت ویژه است که تمام ورودی‌ها را روی OSD چاپ می‌کند.
توضیحات دربارهٔ برخی نام‌های نمادین:
0.0
KP*
نام‌های صفحه‌کلید عددی (Keypad). رفتار بسته به بک‌اند متفاوت است (اینکه آیا آن را پیاده‌سازی کرده باشند و چگونه با numlock برخورد کنند)، اما معمولاً mpv تلاش می‌کند کلیدهای روی صفحه‌کلید عددی را به نام‌های جداگانه‌ای نگاشت کند، حتی اگر متنی مشابه با کلیدهای عادی تولید نمایند.
MOUSE_BTN*, MBTN*
دکمه‌های مختلف ماوس.
بسته به بک‌اند، چرخ ماوس نیز ممکن است به‌عنوان یک دکمه نشان داده شود. علاوه بر این، MOUSE_BTN3 تا MOUSE_BTN6 نام‌های مستعار منسوخ‌شده برای WHEEL_UP، WHEEL_DOWN، WHEEL_LEFT و WHEEL_RIGHT هستند.
MBTN* نام‌های مستعار برای MOUSE_BTN* هستند.
WHEEL_*
چرخ‌های ماوس و تاچ‌پدها (به‌طور معمول).
اگر دستگاه زیربنایی از پیمایش با تفکیک‌پذیری بالا پشتیبانی کند (مانند تاچ‌پدها)، این کلیدها در صورت استفاده با دستورهای مقیاس‌پذیر، مقیاس‌پذیر خواهند بود.
AXIS_*
نام‌های مستعار منسوخ‌شده برای WHEEL_*.
*_DBL
دوبار کلیک دکمه‌های ماوس.
MOUSE_MOVE, MOUSE_ENTER, MOUSE_LEAVE
توسط رویدادهای حرکت ماوس ارسال می‌شوند. ورود/خروج زمانی رخ می‌دهد که ماوس وارد پنجرهٔ mpv شود یا از آن خارج گردد (یا ناحیهٔ فعلی ماوس، با استفاده از مکانیزم منسوخ‌شدهٔ بخش ورودی ناحیهٔ ماوس).
CLOSE_WIN
شبه‌کلیدی که هنگام بستن پنجرهٔ mpv با استفاده از مدیر پنجرهٔ سیستم‌عامل ارسال می‌شود (برای نمونه، با کلیک روی دکمهٔ بستن در نوار عنوان پنجره).
GAMEPAD_*
کلیدهایی که توسط بک‌اند گیم‌پد SDL ارسال می‌شوند.
UNMAPPED
شبه‌کلیدی که با هر کلید نگاشت‌نشده مطابقت می‌کند. (در صورت امکان بهتر است از این کلید پرهیز کنید، چرا که ممکن است رفتارش تغییر کرده یا در آینده حذف شود.)
ANY_UNICODE
شبه‌کلیدی که با هر کلید تولیدکنندهٔ متن مطابقت می‌کند. (در صورت امکان بهتر است از این کلید پرهیز کنید، چرا که ممکن است رفتارش تغییر کرده یا در آینده حذف شود.)
این نحوی است که در input.conf استفاده می‌شود و در جاهای دیگر نیز با عنوان «نحو input.conf» از آن یاد شده است.
<command> ::= [<prefixes>] <command_name> (<argument>)*
<argument> ::= (<unquoted> | " <double_quoted> " | ' <single_quoted> ' | `X <custom_quoted> X`)

command_name یک رشتهٔ بدون نقل‌قول شامل نامِ خود دستور است. برای مشاهدهٔ فهرست، به List of Input Commands مراجعه کنید.
آرگومان‌ها با فاصله‌ها (whitespaces) از هم جدا می‌شوند، حتی اگر دستور تنها به یک آرگومان نیاز داشته باشد. آرگومان‌های حاوی فاصله یا سایر نویسه‌های خاص باید داخل نقل‌قول قرار گیرند، در غیر این صورت دستور به درستی تجزیه نخواهد شد.
نقل‌قول‌های دوتایی (Double quotes) گریزهای سبک JSON/C مانند \t یا \" یا \\ را تفسیر می‌کنند. گریزهای JSON مطابق با RFC 8259 هستند، منهای گریزهای جفت جانشین (surrogate pair). این تنها قالبی است که اجازهٔ درج خط جدید در مقدار را می‌دهد - به صورت \n.
نقل‌قول‌های تکی (Single quotes) محتوا را به صورت تحت‌اللفظی دریافت می‌کنند و مقدار نمی‌تواند شامل نویسهٔ نقل‌قول تکی باشد.
نقل‌قول‌های سفارشی (Custom quotes) نیز محتوا را تحت‌اللفظی دریافت می‌کنند، اما نسبت به نقل‌قول‌های تکی انعطاف‌پذیرترند. آن‌ها با ` (بک‌تیک یا back-quote) و به دنبال آن هر نویسهٔ ASCII آغاز می‌شوند و در نخستین وقوع همان جفت به ترتیب معکوس پایان می‌یابند؛ مانند `-foo-` یا ``bar``. توالی جفت پایانی در داخل مقدار مجاز نیست - در این مثال‌ها به ترتیب -` و ``. در مثال دوم، آخرین نویسهٔ مقدار نیز نمی‌تواند یک back-quote باشد.
نقل‌قول ترکیبی در یک آرگومان یکسان، مانند 'foo'"bar"، پشتیبانی نمی‌شود.
توجه داشته باشید که تجزیهٔ آرگومان‌ها و بسط مشخصه‌ها (property expansion) در مراحل مختلفی رخ می‌دهند. ابتدا، آرگومان‌ها همان‌طور که در بالا توضیح داده شد مشخص می‌شوند، و سپس در صورت لزوم، مشخصه‌ها - صرف‌نظر از نقل‌قول‌های آرگومان - بسط می‌یابند. با این حال، همچنان می‌توان با پیشوند raw یا $> از بسط جلوگیری کرد. بخش‌های Input Command Prefixes و Property Expansion را ببینید.
دستورهای مشخص‌شده به‌صورت آرایه
این مورد برای APIهای خاصی اعمال می‌شود؛ مانند mp.commandv() یا mp.command_native() (با پارامترهای آرایه‌ای) در اسکریپت‌نویسی Lua، یا mpv_command() یا mpv_command_node() (با MPV_FORMAT_NODE_ARRAY) در API کلاینت C libmpv.
دستور و همچنین همهٔ آرگومان‌ها به صورت یک آرایهٔ واحد ارسال می‌شوند. مشابه نحو دستور مسطح، می‌توانید ابتدا پیشوندها را به صورت رشته (هر کدام به عنوان یک عنصر مجزای آرایه)، سپس نام دستور را به صورت رشته و در نهایت هر آرگومان را به صورت رشته یا یک مقدار بومی (native) ارسال کنید.
از آنجا که این APIها آرگومان‌ها را به صورت رشته‌های مجزا یا مقادیر بومی ارسال می‌کنند، انتظار نقل‌قول ندارند و از گریز (escaping) پشتیبانی می‌کنند. از نظر فنی، تجزیه‌کنندهٔ input.conf وجود دارد که ابتدا رشتهٔ دستور را به آرگومان‌ها تقسیم می‌کند، و سپس تجزیه‌کننده‌های آرگومان را برای هر آرگومان فراخوانی می‌کند. تجزیه‌کنندهٔ input.conf معمولاً نقل‌قول‌ها و گریزها را مدیریت می‌کند. APIهای دستوریِ آرایه‌ایِ یادشده، رشته‌ها را مستقیماً به تجزیه‌کننده‌های آرگومان ارسال می‌کنند، یا می‌توانند با امکان ارسال مقادیر غیررشته‌ای، آن‌ها را دور بزنند.
بسط مشخصه‌ها به صورت پیش‌فرض برای این APIها غیرفعال است. این مورد را می‌توان با پیشوند expand-properties تغییر داد. بخش Input Command Prefixes را ببینید.
گاهی دستورها دارای آرگومان‌های رشته‌ای هستند که به نوبهٔ خود توسط مؤلفه‌های دیگر تجزیه می‌شوند (مانند رشته‌های فیلتر با vf add) - در این موارد، در input.conf مجبور به گریز دوگانه خواهید بود، اما در APIهای آرایه‌ای نیازی به آن نیست.
برای دستورهای پیچیده، استفاده از آرگومان‌های نام‌دار را به عنوان جایگزین در نظر بگیرید که سازگاری اندکی بیشتری ارائه می‌دهد. با این حال، برخی از دستورها از آرگومان‌های نام‌دار پشتیبانی نمی‌کنند و ذاتاً یک آرایه می‌گیرند.
آرگومان‌های نام‌دار
این مورد برای APIهای خاصی اعمال می‌شود؛ مانند mp.command_native() (با جدول‌هایی که کلیدهای رشته‌ای دارند) در اسکریپت‌نویسی Lua، یا mpv_command_node() (با MPV_FORMAT_NODE_MAP) در API کلاینت C libmpv.
نام دستور با یک فیلد رشته‌ای name ارائه می‌شود. نام هر دستور در توضیحات همان دستور در List of Input Commands مشخص شده است. گزینهٔ --input-cmdlist نیز آن‌ها را فهرست می‌کند. برای یک نمونه دستور subprocess را ببینید.
برخی از دستورها از آرگومان‌های نام‌دار پشتیبانی نمی‌کنند (مانند دستور run). در این موارد باید از APIهایی استفاده کنید که آرگومان‌ها را به صورت آرایه ارسال می‌کنند.
آرگومان‌های نام‌دار در نحو «مسطح» input.conf پشتیبانی نمی‌شوند، به این معنی که اصلاً نمی‌توانید از آن‌ها برای کلیدهای میانبر در input.conf استفاده کنید.
بسط مشخصه‌ها به صورت پیش‌فرض برای این APIها غیرفعال است. این مورد را می‌توان با پیشوند expand-properties تغییر داد. بخش Input Command Prefixes را ببینید..SS فهرست دستورهای ورودی (List of Input Commands)
دستورهایی که دارای پارامتر هستند، نام پارامتر آنها درون < / > قرار گرفته است.
این علامت‌ها را به دستور واقعی اضافه نکنید. آرگومان‌های اختیاری درون
[ / ] قرار دارند. در صورتی که آنها را ارسال نکنید، روی یک مقدار پیش‌فرض تنظیم خواهند شد.
به یاد داشته باشید که آرگومان‌های رشته‌ای را در input.conf داخل علامت نقل‌قول قرار دهید (به Flat command syntax مراجعه کنید).
کنترل پخش (Playback Control)
0.0
seek <target> [<flags>]
موقعیت پخش را تغییر می‌دهد. به‌طور پیش‌فرض، به میزان نسبی بر حسب ثانیه پرش می‌کند.
آرگومان دوم شامل پرچم‌هایی است که حالت پرش را کنترل می‌کنند:
7.0
relative (پیش‌فرض)
پرش نسبت به موقعیت فعلی (یک مقدار منفی به سمت عقب پرش می‌کند).
absolute
پرش به یک زمان مشخص (مقدار منفی از انتهای فایل محاسبه می‌شود).
absolute-percent
پرش به موقعیت درصدی مشخص‌شده.
relative-percent
پرش درصدی نسبت به موقعیت فعلی.
keyframes
پخش همیشه از مرزهای فریم‌های کلیدی (keyframes) دوباره آغاز می‌شود (سریع).
exact
همیشه پرش‌های دقیق/با وضوح بالا (exact/hr/precise) انجام می‌دهد (آهسته).
168u
می‌توان چندین پرچم را با یکدیگر ترکیب کرد؛ برای نمونه: absolute+keyframes.
به‌طور پیش‌فرض، keyframes برای پرش‌های relative، relative-percent
و absolute-percent استفاده می‌شود، در حالی که exact برای پرش‌های absolute
به کار می‌رود.
پیش از mpv 0.9، پرچم‌های keyframes و exact باید به عنوان پارامتر سوم
ارسال می‌شدند (اساساً با استفاده از فاصله به جای +). پارامتر سوم
همچنان تجزیه می‌شود، اما منسوخ در نظر گرفته می‌شود.
این یک دستور مقیاس‌پذیر است. برای جزئیات به مستندات پیشوند دستور
ورودی nonscalable در Input Command Prefixes مراجعه کنید.
revert-seek [<flags>]
دستور seek و برخی دستورهای دیگر را که پرش انجام می‌دهند (اما نه
لزوماً همه آنها را) واگردانی می‌کند. یک بار فراخوانی این دستور به
موقعیت پخش قبل از پرش بازمی‌گردد. فراخوانی آن برای بار دوم، خود دستور
revert-seek را واگردانی می‌کند. این قابلیت فقط در محدوده یک فایل کار می‌کند.
آرگومان اول اختیاری است و می‌تواند رفتار را تغییر دهد:
7.0
mark
موقعیت زمانی فعلی را علامت‌گذاری می‌کند. دستور عادی بعدی revert-seek،
صرف‌نظر از اینکه چه تعداد پرش از آخرین بار رخ داده باشد، به این نقطه بازمی‌گردد.
mark-permanent
در صورت تنظیم، موقعیت فعلی را علامت‌گذاری کرده و موقعیت علامت‌گذاری‌شده را
تا قبل از دستور بعدی revert-seek که mark یا
mark-permanent را تنظیم کرده باشد (یا پخش فایل فعلی پایان یابد) تغییر نمی‌دهد. تا
زمانی که این اتفاق بیفتد، revert-seek همیشه به نقطه علامت‌گذاری‌شده پرش می‌کند. این
پرچم را نمی‌توان با mark ترکیب کرد.
168u
استفاده از آن بدون هیچ آرگومانی، رفتار پیش‌فرض را به شما ارائه می‌دهد.
sub-seek <skip> [<flags>]
موقعیت ویدیو و صدا را به‌گونه‌ای تغییر می‌دهد که رویداد زیرنویسِ پس از
<skip> رویداد زیرنویس نمایش داده شود. برای نمونه، sub-seek 1 به
زیرنویس بعدی پرش می‌کند، sub-seek -1 به زیرنویس‌های قبلی پرش می‌کند، و
sub-seek 0 به ابتدای زیرنویس فعلی پرش می‌کند.
این دستور شبیه به sub-step است، با این تفاوت که به جای تنظیم تاخیر
زیرنویس، در ویدیو و صدا پرش انجام می‌دهد.
آرگومان ثانویه:
7.0
primary (پیش‌فرض)
در میان زیرنویس‌های اصلی پرش می‌کند.
secondary
در میان زیرنویس‌های فرعی پرش می‌کند.
168u
برای زیرنویس‌های تعبیه‌شده (مانند Matroska)، این قابلیت تنها با رویدادهای
زیرنویسی که قبلاً نمایش داده شده‌اند یا در یک محدوده پیش‌واکشی (prefetch) کوتاه
قرار دارند کار می‌کند. برای جزئیات در مورد نحوه کنترل محدوده پیش‌واکشی موجود، به Cache مراجعه کنید.
frame-step [<frames>] [<flags>]
به تعداد فریم مشخص‌شده به جلو یا عقب می‌رود. اگر <frames>
حذف شود، مقدار آن 1 در نظر گرفته می‌شود.
آرگومان دوم شامل پرچم‌هایی است که حالت پرش فریم (frameskip) را کنترل می‌کنند:
7.0
play (پیش‌فرض)
ویدیو را به تعداد فریم مورد نظر به جلو پخش کرده و سپس مکث می‌کند.
این قابلیت فقط با یک مقدار مثبت (یعنی گام فریم به جلو) کار می‌کند.
seek
یک پرش بسیار دقیق انجام می‌دهد که سعی می‌کند به میزان فریم‌های مورد نظر
پرش کند. اگر <frames> برابر با -1 باشد، این دقیقاً به
فریم قبلی می‌رود.
mute
مشابه play است، اما در صورت وجود جریان صوتی در طول مدت
گام فریم، صدای آن را قطع می‌کند.
168u
توجه داشته باشید که حالت پیش‌فرض پرش فریم، یعنی play، دقیق‌تر است اما بسته
به تعداد فریم‌هایی که رد می‌کنید می‌تواند کند باشد (یعنی رد کردن ۱۰۰ فریم
به جلو، پیش از توقف، ۱۰۰ فریم از ویدیو را پخش خواهد کرد). این حالت تنها
هنگام رفتن به جلو کار می‌کند. گام فریم به عقب همیشه یک پرش انجام می‌دهد.
هنگام استفاده از حالت seek، این عمل همچنان می‌تواند بسیار کند باشد (تلاش می‌کند دقیق
باشد، نه سریع) و گاهی اوقات آن‌طور که انتظار می‌رود عمل نمی‌کند. کیفیت عملکرد این مورد
به این بستگی دارد که آیا پرش دقیق به درستی کار می‌کند یا خیر (برای نمونه گزینه
--hr-seek-demuxer-offset را ببینید). فیلترهای ویدیو یا سایر
پس‌پردازش‌های ویدیو که زمان‌بندی فریم‌ها را تغییر می‌دهند (مانند deinterlacing) معمولاً
باید کار کنند، اما ممکن است در موارد خاص باعث شوند گام فریم بدون خطا رفتار نادرستی
نشان دهد. استفاده از --hr-seek-framedrop=no باید کمک کند، اگرچه ممکن
است پرش دقیق را کندتر کند. همچنین اگر ویدیو دارای نرخ فریم متغیر (VFR) باشد، گام فریم
با استفاده از پرش احتمالاً به درستی کار نخواهد کرد مگر برای حالت -1.
این قابلیت با پخش فقط-صوتی (audio-only) کار نمی‌کند.
frame-back-step
دستور frame-step را با مقدار -1 و پرچم seek فراخوانی می‌کند.
این قابلیت با پخش فقط-صوتی کار نمی‌کند.
stop [<flags>]
پخش را متوقف کرده و فهرست پخش را پاک می‌کند. با تنظیمات پیش‌فرض، این
اساساً مانند quit است. برای API سمت کلاینت مفید است: پخش می‌تواند
بدون بستن پخش‌کننده متوقف شود.
آرگومان اول اختیاری است و از پرچم‌های زیر پشتیبانی می‌کند:
7.0
keep-playlist
فهرست پخش را پاک نمی‌کند.
168u
0.0
set <name> <value>
ویژگی یا گزینه مشخص‌شده را روی مقدار داده‌شده تنظیم می‌کند.
del <name>
ویژگی مشخص‌شده را حذف می‌کند. بیشتر ویژگی‌ها قابل حذف نیستند.
add <name> [<value>]
مقدار داده‌شده را به ویژگی یا گزینه اضافه می‌کند. در صورت سرریز (overflow) یا زیرریز (underflow)، ویژگی را به مقدار بیشینه محدود می‌کند. اگر <value> ذکر نشود، مقدار 1 فرض می‌شود.
اینکه آیا تکرار کلید (key-repeat) به‌طور پیش‌فرض فعال باشد یا خیر به ویژگی بستگی دارد. در حال حاضر ویژگی‌هایی با مقادیر پیوسته به‌طور پیش‌فرض تکرارپذیر هستند (مانند volume)، در حالی که مقادیر گسسته این‌گونه نیستند (مانند osd-level).
این یک دستور مقیاس‌پذیر (scalable) است. برای جزئیات، مستندات پیشوند دستور ورودی nonscalable را در بخش Input Command Prefixes ببینید.
multiply <name> <value>
مشابه add، اما ویژگی یا گزینه را در مقدار عددی ضرب می‌کند.
cycle <name> [<value>]
بین مقادیر ویژگی یا گزینه داده‌شده می‌چرخد (cycle). آرگومان دوم می‌تواند برای تعیین جهت چرخش، up یا down باشد. در صورت سرریز، مقدار ویژگی را به کمینه برمی‌گرداند و در صورت زیرریز، آن را روی بیشینه تنظیم می‌کند. اگر up یا down حذف شود، مقدار up در نظر گرفته می‌شود.
اینکه آیا تکرار کلید به‌طور پیش‌فرض فعال باشد یا خیر به ویژگی بستگی دارد. در حال حاضر ویژگی‌هایی با مقادیر پیوسته به‌طور پیش‌فرض تکرارپذیر هستند (مانند volume)، در حالی که مقادیر گسسته این‌گونه نیستند (مانند osd-level).
این یک دستور مقیاس‌پذیر است. برای جزئیات، مستندات پیشوند دستور ورودی nonscalable را در بخش Input Command Prefixes ببینید.
cycle-values [<"!reverse">] <property> <value1> [<value2> [...]]
چرخش میان فهرستی از مقادیر. هر بار فراخوانی این دستور، ویژگی مشخص‌شده را روی مقدار بعدی در فهرست تنظیم می‌کند. این دستور از مقدار فعلی ویژگی/گزینه برای تعیین موقعیت فعلی در فهرست مقادیر استفاده می‌کند. پس از یافتن آن، مقدار بعدی در فهرست را تنظیم می‌کند (در صورت نیاز به اولین مورد برمی‌گردد).
این دستور تعداد متغیری آرگومان می‌پذیرد و نمی‌توان از آن همراه با آرگومان‌های نام‌دار استفاده کرد.
آرگومان ویژه !reverse می‌تواند برای چرخاندن معکوس فهرست مقادیر استفاده شود. تنها مزیت آن این است که هنگام افزودن یک کلید میانبر دوم برای چرخش معکوس، نیازی نیست خودتان فهرست مقادیر را برعکس کنید.
change-list <name> <operation> <value>
این دستور گزینه‌های فهرستی را همان‌طور که در بخش List Options شرح داده شده تغییر می‌دهد. پارامتر <name> نام عادی گزینه است، در حالی که <operation> پسوند یا عملیاتی است که روی گزینه اعمال می‌شود.
برخی عملیات هیچ مقداری نمی‌پذیرند، اما دستور همچنان به پارامتر مقدار نیاز دارد. در این موارد، مقدار باید یک رشته خالی باشد.
7.0
3.5
"مثال"
change-list glsl-shaders append file.glsl
افزودن نام یک فایل به فهرست glsl-shaders. معادل خط فرمانی آن --glsl-shaders-append=file.glsl یا در روش جایگزین --glsl-shader=file.glsl است.
168u
168u
168u
دستکاری فهرست پخش (Playlist Manipulation)
0.0
playlist-next [<flags>]
رفتن به مدخل بعدی در فهرست پخش.
آرگومان اول:
7.0
weak (پیش‌فرض)
اگر آخرین فایل فهرست پخش در حال حاضر در حال پخش باشد، هیچ کاری انجام نمی‌دهد.
force
اگر فایل دیگری در فهرست پخش نمانده باشد، پخش را خاتمه می‌دهد.
168u
playlist-prev [<flags>]
رفتن به مدخل قبلی در فهرست پخش.
آرگومان اول:
7.0
weak (پیش‌فرض)
اگر اولین فایل فهرست پخش در حال حاضر در حال پخش باشد، کاری انجام نمی‌دهد.
force
اگر اولین فایل در حال پخش باشد، پخش را خاتمه می‌دهد.
168u
playlist-next-playlist
رفتن به مدخل بعدی در فهرست پخش با یک playlist-path متفاوت.
playlist-prev-playlist
رفتن به اولین مورد از مدخل‌های قبلی در فهرست پخش با یک playlist-path متفاوت.
playlist-play-index <integer|current|none>
آغاز (یا راه‌اندازی مجدد) پخش از نمایه مشخص‌شده در فهرست پخش. علاوه بر نمایه ورودی فهرست پخش مبتنی بر ۰ (0-based)، مقادیر زیر را نیز پشتیبانی می‌کند:
7.0
<current>
مدخل فعلی فهرست پخش (همانند playlist-current-pos) دوباره پخش خواهد شد (تخلیه و بارگذاری مجدد). اگر موردی تنظیم نشده باشد، پخش متوقف می‌شود. (در حالت‌های خاص، playlist-current-pos حتی اگر پخش در حال حاضر غیرفعال باشد می‌تواند به یک مدخل فهرست پخش اشاره کند).
<none>
پخش متوقف می‌شود. اگر حالت بیکار (--idle) فعال باشد، پخش‌کننده وارد حالت بیکار می‌شود، در غیر این صورت خارج خواهد شد.
168u
این دستور از این جهت که تنها وضعیت مورد بعدی برای پخش را تعیین می‌کند، بدون اینکه منتظر بماند تا فایل فعلی تخلیه شده و فایل بعدی بارگذاری شود، شبیه به loadfile است.
تنظیم playlist-pos یا ویژگی‌های مشابه می‌تواند اثری مشابه این دستور داشته باشد. با این حال، این دستور صریح‌تر است و تضمین می‌کند که اگر برای مثال مدخل جدید فهرست پخش با قبلی یکسان باشد، پخش مجدداً راه‌اندازی خواهد شد.
loadfile <url> [<flags> [<index> [<options>]]]
بارگذاری فایل یا URL داده‌شده و پخش آن. از نظر فنی، این صرفاً یک دستور دستکاری فهرست پخش است (که یا کل فهرست پخش را جایگزین کرده یا مدخلی به آن اضافه می‌کند). بارگذاری واقعی فایل به‌صورت مستقل رخ می‌دهد. برای مثال، دستور loadfile که فایل فعلی را با فایلی جدید جایگزین می‌کند، پیش از آنکه فایل فعلی متوقف شود یا حتی بارگذاری فایل جدید آغاز گردد، بازمی‌گردد.
آرگومان دوم:
7.0
<replace> (پیش‌فرض)
توقف پخش فایل فعلی و پخش فوری فایل جدید.
<append>
پیوست کردن فایل به انتهای فهرست پخش.
<append-play>
پیوست کردن فایل به انتهای فهرست، و در صورتی که در حال حاضر چیزی پخش نمی‌شود، آغاز پخش. (همیشه پخش از فایل اضافه‌شده شروع می‌شود، حتی اگر فهرست پخش پیش از اجرای این دستور خالی نبوده باشد).
<insert-next>
درج فایل در فهرست پخش، دقیقاً بعد از مدخل فعلی.
<insert-next-play>
درج فایل در جایگاه بعدی، و در صورتی که در حال حاضر چیزی پخش نمی‌شود، آغاز پخش. (همیشه پخش از فایل اضافه‌شده شروع می‌شود، حتی اگر فهرست پخش پیش از اجرای این دستور خالی نبوده باشد).
<insert-at>
درج فایل در فهرست پخش، در نمایه‌ای که در آرگومان سوم مشخص شده است.
<insert-at-play>
درج فایل در نمایه‌ای که در آرگومان سوم مشخص شده است، و در صورتی که در حال حاضر چیزی پخش نمی‌شود، آغاز پخش. (همیشه پخش از فایل اضافه‌شده شروع می‌شود، حتی اگر فهرست پخش پیش از اجرای این دستور خالی نبوده باشد).
168u
آرگومان سوم یک نمایه درج است که تنها توسط کنش‌های insert-at و insert-at-play استفاده می‌شود. هنگام استفاده با این کنش‌ها، مورد جدید در موقعیت نمایه در فهرست پخش درج می‌شود، یا اگر نمایه کمتر از ۰ یا بیشتر از اندازه فهرست پخش باشد، به انتهای آن اضافه خواهد شد. این آرگومان برای تمامی کنش‌های دیگر نادیده گرفته می‌شود. این آرگومان در نسخه mpv 0.38.0 اضافه شده است.
آرگومان چهارم فهرستی از گزینه‌ها و مقادیر است که باید در هنگام پخش فایل تنظیم شوند. ساختار آن به شکل opt1=value1,opt2=value2,.. است. هنگام استفاده از API کلاینت، این می‌تواند یک MPV_FORMAT_NODE_MAP (یا یک جدول Lua) باشد، با این حال در حال حاضر خود مقادیر باید رشته باشند. این گزینه‌ها در حین پخش تنظیم شده و در پایان پخش به مقدار قبلی بازگردانده می‌شوند (بخش Per-File Options را ببینید)..sp
هشدار:
7.0
3.5
از نسخهٔ mpv 0.38.0 به بعد، یک آرگومان نمایهٔ درج به عنوان آرگومان سوم اضافه شده است.
این تغییر تمام استفاده‌های پیشین از این دستور را که از این آرگومان برای گنجاندن
فهرست گزینه‌ها جهت اعمال در زمان پخش فایل استفاده می‌کردند، با مشکل مواجه می‌کند.
برای برطرف کردن این مشکل، اکنون در صورتی که نیاز به استفاده از آرگومان چهارم باشد،
آرگومان سوم باید روی -1 تنظیم شود.
168u
168u
loadlist <url> [<flags> [<index>]]
بارگذاری فایل فهرست پخش یا URL مشخص‌شده (مشابه --playlist).
آرگومان دوم:
7.0
<replace> (پیش‌فرض)
توقف پخش و جایگزینی فهرست پخش درونی با فهرست جدید.
<append>
الحاق فهرست پخش جدید به انتهای فهرست پخش درونی جاری.
<append-play>
الحاق فهرست پخش جدید، و اگر در حال حاضر چیزی پخش نمی‌شود، شروع
پخش. (همواره پخش را با فهرست پخش جدید آغاز می‌کند، حتی اگر فهرست
پخش درونی پیش از اجرای این دستور خالی نبوده باشد.)
<insert-next>
درج فهرست پخش جدید در فهرست پخش درونی جاری، دقیقاً پس از مدخل جاری.
<insert-next-play>
درج فهرست پخش جدید، و اگر در حال حاضر چیزی پخش نمی‌شود، شروع
پخش. (همواره پخش را با فهرست پخش جدید آغاز می‌کند، حتی اگر فهرست
پخش درونی پیش از اجرای این دستور خالی نبوده باشد.)
<insert-at>
درج فهرست پخش جدید در نمایهٔ داده‌شده در آرگومان سوم.
<insert-at-play>
درج فهرست پخش جدید در نمایهٔ داده‌شده در آرگومان سوم، و اگر در حال
حاضر چیزی پخش نمی‌شود، شروع پخش. (همواره پخش را با فهرست پخش
جدید آغاز می‌کند، حتی اگر فهرست پخش درونی پیش از اجرای این دستور
خالی نبوده باشد.)
168u
آرگومان سوم یک نمایهٔ درج است که تنها توسط کنش‌های insert-at و
insert-at-play استفاده می‌شود. هنگام استفاده با این کنش‌ها، فهرست پخش
جدید در موقعیت این نمایه در فهرست پخش درونی درج خواهد شد، یا اگر نمایه
کمتر از ۰ یا بزرگ‌تر از اندازهٔ فهرست پخش درونی باشد، به انتهای آن الحاق
می‌گردد. این آرگومان برای سایر کنش‌ها نادیده گرفته می‌شود.
playlist-clear
پاک‌سازی فهرست پخش، به‌جز فایلی که هم‌اکنون در حال پخش است.
playlist-remove <index>
حذف مدخل فهرست پخش در نمایهٔ داده‌شده. شمارش مقادیر نمایه از ۰ آغاز می‌شود.
مقدار ویژهٔ current مدخل جاری را حذف می‌کند. توجه داشته باشید که حذف
مدخل جاری همچنین پخش را متوقف کرده و پخش مدخل بعدی را آغاز می‌نماید.
playlist-move <index1> <index2>
انتقال مدخل فهرست پخش در index1، به‌طوری که جایگاه مدخل index2 را بگیرد.
(به‌طور متناقض، در صورتی که index1 کمتر از index2 بوده باشد، مدخل جابه‌جاشده
پس از انتقال مقدار نمایهٔ index2 را نخواهد داشت؛ چرا که index2 به مدخل مقصد
اشاره می‌کند، نه نمایه‌ای که مدخل پس از جابه‌جایی خواهد داشت.)
playlist-shuffle
بُر زدن (درهم‌ریختن) فهرست پخش. این مشابه کاری است که در هنگام راه‌اندازی
در صورت استفاده از گزینهٔ --shuffle انجام می‌شود.
playlist-unshuffle
تلاش برای بازگرداندن دستور پیشین playlist-shuffle. این عمل تنها یک بار
کار می‌کند (دستورهای چندباره و متوالی playlist-unshuffle هیچ اثری ندارند).
اگر پس از اجرای یک دستور playlist-shuffle فهرست‌های پخش بازگشتی جدیدی
باز شده باشند، ممکن است به درستی کار نکند.
0.0
sub-add <url> [<flags> [<title> [<lang>]]]
فایل یا جریان (stream) زیرنویس مشخص‌شده را بارگذاری می‌کند. به‌طور پیش‌فرض، پس از بارگذاری به‌عنوان زیرنویس جاری انتخاب می‌شود.
آرگومان flags یکی از مقادیر زیر است:
<select>
7.0
3.5
زیرنویس را بلافاصله انتخاب می‌کند (پیش‌فرض).
168u
168u
<auto>
7.0
3.5
زیرنویس را انتخاب نمی‌کند. (یا در برخی موقعیت‌های خاص، اجازه می‌دهد سازوکار پیش‌فرضِ انتخاب جریان تصمیم‌گیری کند.)
168u
168u
<cached>
7.0
3.5
زیرنویس را انتخاب می‌کند. اگر زیرنویسی با همین نام فایل قبلاً اضافه شده باشد، به جای بارگذاری یک ورودی تکراری، همان انتخاب می‌شود. (در این حالت، عنوان/زبان نادیده گرفته می‌شوند، و اگر فایل از زمان بارگذاری تغییر کرده باشد، این تغییرات اعمال نخواهند شد.)
168u
168u
علاوه بر این، پرچم‌های زیر می‌توانند با یک + اضافه شوند:
<hearing-impaired>
7.0
3.5
شیار را به‌عنوان مناسب برای ناشنوایان و کم‌شنوایان علامت‌گذاری می‌کند.
168u
168u
<visual-impaired>
7.0
3.5
شیار را به‌عنوان مناسب برای نابینایان و کم‌بینایان علامت‌گذاری می‌کند.
168u
168u
<forced>
7.0
3.5
شیار را به‌عنوان اجباری (forced) علامت‌گذاری می‌کند.
168u
168u
<default>
7.0
3.5
شیار را به‌عنوان پیش‌فرض علامت‌گذاری می‌کند.
168u
168u
<attached-picture> (فقط برای video-add)
7.0
3.5
شیار را به‌عنوان یک تصویر پیوست‌شده علامت‌گذاری می‌کند، مشابه با آرگومان albumart برای `video-add.
168u
168u
آرگومان title عنوان شیار را در رابط کاربری تنظیم می‌کند.
آرگومان lang زبان شیار را مشخص می‌کند و همچنین در صورت تنظیم flags روی auto می‌تواند بر انتخاب جریان تأثیر بگذارد.
sub-remove [<id>]
شیار زیرنویس مشخص‌شده را حذف می‌کند. در صورت مشخص نشدن آرگومان id، شیار جاری حذف می‌شود. (فقط روی فایل‌های زیرنویس خارجی کار می‌کند.)
sub-reload [<id>]
شیارهای زیرنویس مشخص‌شده را مجدداً بارگذاری می‌کند. در صورت مشخص نشدن آرگومان id، شیار جاری مجدداً بارگذاری می‌شود. (فقط روی فایل‌های زیرنویس خارجی کار می‌کند.)
این عمل با تخلیه و افزودن مجدد شیار زیرنویس کار می‌کند.
sub-step <skip> [<flags>]
زمان‌بندی زیرنویس را به‌گونه‌ای تغییر می‌دهد که رویداد زیرنویسِ پس از <skip> رویداد زیرنویس بعدی نمایش داده شود. <skip> برای گام برداشتن به عقب می‌تواند منفی باشد.
آرگومان ثانویه:
7.0
primary (پیش‌فرض)
در میان زیرنویس‌های اصلی گام برمی‌دارد.
secondary
در میان زیرنویس‌های ثانویه گام برمی‌دارد.
168u
audio-add <url> [<flags> [<title> [<lang>]]]
فایل صوتی داده‌شده را بارگذاری می‌کند. دستور sub-add را ببینید.
audio-remove [<id>]
شیار صوتی مشخص‌شده را حذف می‌کند. دستور sub-remove را ببینید.
audio-reload [<id>]
شیارهای صوتی مشخص‌شده را مجدداً بارگذاری می‌کند. دستور sub-reload را ببینید.
video-add <url> [<flags> [<title> [<lang> [<albumart>]]]]
فایل ویدئویی داده‌شده را بارگذاری می‌کند. برای گزینه‌های مشترک، دستور sub-add را ببینید.
7.0
albumart (MPV_FORMAT_FLAG)
در صورت فعال بودن، mpv ویدئوی مشخص‌شده را به‌عنوان کاور آلبوم بارگذاری می‌کند.
168u
video-remove [<id>]
شیار ویدئویی مشخص‌شده را حذف می‌کند. دستور sub-remove را ببینید.
video-reload [<id>]
شیارهای ویدئویی مشخص‌شده را مجدداً بارگذاری می‌کند. دستور sub-reload را ببینید.
rescan-external-files [<mode>]
فایل‌های خارجی را با توجه به تنظیمات فعلی --sub-auto،
--audio-file-auto و --cover-art-auto دوباره پویش می‌کند. این دستور می‌تواند
برای بارگذاری خودکار فایل‌های خارجی پس از بارگذاری فایل استفاده شود.
آرگومان mode یکی از مقادیر زیر است:
7.0
<reselect> (پیش‌فرض)
جریان‌های صوتی و زیرنویس پیش‌فرض را انتخاب می‌کند، که معمولاً فایل‌های خارجی با بالاترین اولویت را برمی‌گزیند. (پیاده‌سازی بی‌نقص نیست و در صورت درخواست می‌تواند بهبود یابد.)
<keep-selection>
انتخاب‌های شیار جاری را تغییر نمی‌دهد.
168u
0.0
print-text <text>
چاپ متن در خروجی استاندارد (stdout). این رشته می‌تواند شامل ویژگی‌ها باشد (بخش Property Expansion را ببینید). دقت کنید که آرگومان را داخل علامت نقل‌قول قرار دهید.
expand-text <text>
ویژگی‌های آرگومان را بسط داده و رشتهٔ گسترش‌یافته را بازمی‌گرداند. این دستور تنها از طریق client API یا از درون یک اسکریپت با استفاده از mp.command_native قابل استفاده است (بخش Property Expansion را ببینید).
expand-path <text>
جایگزین‌های تیلد دوتایی (double-tilde) یک مسیر را به یک مسیر مختص پلتفرم بسط می‌دهد.
همانند expand-text، این دستور نیز تنها از طریق client API یا از درون یک اسکریپت با استفاده از mp.command_native قابل استفاده است.
7.0
3.5
"مثال (Example)"
mp.osd_message(mp.command_native({"expand-path", "~~home/"}))
این خط کد Lua مکان دایرکتوری پیکربندی mpv کاربر را روی OSD نمایش می‌دهد.
168u
168u
normalize-path <filename>
یک نمایش متعارف (canonical) از مسیر filename را با تبدیل آن به یک مسیر مطلق، حذف اسلش‌های متوالی، حذف مؤلفه‌های .، حل مؤلفه‌های ..، و تبدیل اسلش‌ها به بک‌اسلش در Windows بازمی‌گرداند. پیوندهای نمادین (Symlinks) حل نمی‌شوند مگر اینکه پلتفرم Unix-like بوده و یکی از مؤلفه‌های مسیر .. باشد. اگر filename یک URL باشد، بدون تغییر بازگردانده می‌شود. این دستور تنها از طریق client API یا از درون یک اسکریپت با استفاده از mp.command_native قابل استفاده است.
7.0
3.5
"مثال (Example)"
mp.osd_message(mp.command_native({"normalize-path", "/foo//./bar"}))
این خط کد Lua عبارت "/foo/bar" را روی OSD چاپ می‌کند.
168u
168u
escape-ass <text>
رشتهٔ text را طوری تغییر داده و بازمی‌گرداند که دستورها و توابعی که برچسب‌های ASS را تفسیر می‌کنند، مانند osd-overlay و mp.create_osd_overlay، آن را عیناً نمایش دهند. این دستور تنها از طریق client API یا از درون یک اسکریپت با استفاده از mp.command_native قابل استفاده است.
7.0
3.5
"مثال (Example)"
mp.osd_message(mp.command_native({"escape-ass", "foo {bar}"}))
این خط کد Lua عبارت "foo \{bar}" را روی OSD چاپ می‌کند.
168u
168u
168u
دستورات پیکربندی (Configuration Commands)
0.0
apply-profile <name> [<mode>]
محتویات یک نمایه (پروفایل) نام‌گذاری‌شده را اعمال می‌کند. این عمل مانند استفاده از profile=name در یک فایل پیکربندی است، با این تفاوت که می‌توانید آن را به یک کلید میانبر (key binding) نگاشت کنید تا در زمان اجرا تغییر کند.
آرگومان mode:
7.0
apply
اعمال نمایه. در صورت حذف این آرگومان، حالت پیش‌فرض است.
restore
گزینه‌هایی را که توسط دستور قبلی apply-profile برای این نمایه تنظیم شده‌اند، بازیابی می‌کند. تنها زمانی کار می‌کند که نمایه، profile-restore را روی یک حالت مرتبط تنظیم کرده باشد. اگر کاری قابل انجام نباشد، یک هشدار چاپ می‌کند. برای جزئیات به Runtime profiles مراجعه کنید.
168u
load-config-file <filename>
بارگذاری یک فایل پیکربندی، مشابه گزینهٔ --include. اگر فایل پیش‌تر اضافه (include) شده باشد، گزینه‌های قبلی آن پیش از تجزیه مجدد بازنشانی نمی‌شوند.
write-watch-later-config
فایل پیکربندی ادامهٔ پخش (resume config file) را که دستور quit-watch-later می‌نویسد، ذخیره می‌کند، اما پخش را به طور عادی ادامه می‌دهد.
delete-watch-later-config [<filename>]
هرگونه فایل پیکربندی ادامهٔ پخش موجود را که توسط quit-watch-later یا write-watch-later-config نوشته شده است، حذف می‌کند. اگر نام فایلی مشخص شده باشد، پیکربندی حذف‌شده مربوط به همان فایل خواهد بود؛ در غیر این صورت، همان فایلی است که تحت شرایط فعلی توسط quit-watch-later یا write-watch-later-config نوشته می‌شد.
0.0
show-text <text> [<duration>|-1 [<level>]]
نمایش متن روی OSD. رشته می‌تواند شامل مشخصه‌هایی باشد که همان‌طور که در Property Expansion شرح داده شده است بسط می‌یابند. می‌توان از این دستور برای نمایش زمان پخش، نام فایل و موارد دیگر استفاده کرد. no-osd هیچ تأثیری روی این دستور ندارد.
7.0
<duration>
مدت زمان به میلی‌ثانیه برای نمایش پیام. به طور پیش‌فرض، از همان مقدار --osd-duration استفاده می‌کند.
<level>
حداقل سطح OSD برای نمایش متن (به --osd-level مراجعه کنید).
168u
show-progress
نمایش نوار پیشرفت، زمان سپری‌شده و مدت زمان کل فایل روی OSD. no-osd هیچ تأثیری روی این دستور ندارد.
overlay-add <id> <x> <y> <file> <offset> <fmt> <w> <h> <stride> <dw> <dh>
افزودن یک همپوشان (overlay) برای OSD برگرفته از داده‌های خام. این قابلیت ممکن است برای اسکریپت‌ها و برنامه‌هایی که mpv را کنترل می‌کنند و می‌خواهند مواردی را روی پنجره ویدیو نمایش دهند، مفید باشد.
همپوشان‌ها معمولاً با وضوح تصویر صفحه نمایش داده می‌شوند، اما با برخی VOها، وضوح به وضوحِ ویدیو کاهش می‌یابد. می‌توانید مشخصه‌های osd-width و osd-height را بخوانید. دست‌کم با --vo-xv و ویدیوی آنامورفیک (مانند DVD)، osd-par نیز باید خوانده شود و نسبت تصویر همپوشان جبران‌سازی گردد (aspect-compensated).
این دستور آرگومان‌های نام‌دار زیر را دارد. ترتیب آن‌ها تضمین نشده است، بنابراین همیشه باید آن‌ها را با آرگومان‌های نام‌دار فراخوانی کنید؛ به Named arguments مراجعه کنید.
id یک عدد صحیح بین 0 و 63 است که عنصر همپوشان را مشخص می‌کند. این شناسه می‌تواند برای افزودن چندین بخش همپوشان، به‌روزرسانی یک بخش با استفاده از این دستور و با شناسه‌ای که از قبل وجود دارد، یا برای حذف یک بخش با overlay-remove استفاده شود. استفاده از یک شناسه قبلاً استفاده‌نشده، یک همپوشان جدید اضافه می‌کند، در حالی که استفاده مجدد از یک شناسه، آن را به‌روزرسانی خواهد کرد.
x و y موقعیتی را مشخص می‌کنند که OSD باید در آن نمایش داده شود.
file فایلی را مشخص می‌کند که داده‌های خام تصویر از آن خوانده می‌شوند. این می‌تواند یک توصیف‌کننده فایل یونیکس عددی با پیشوند @ (مانند @4)، یا یک نام فایل باشد. فایل با استفاده از mmap() در حافظه نگاشت شده، کپی می‌شود، و پیش از بازگشت دستور از نگاشت خارج می‌گردد (در mpv 0.18.1 تغییر کرده است).
همچنین می‌توان یک آدرس حافظه خام را برای استفاده به عنوان حافظه bitmap با ارسال یک آدرس حافظه به صورت عدد صحیح با پیشوند نویسه & ارسال کرد. دادن مقدار اشتباه در اینجا باعث کرش کردن پخش‌کننده خواهد شد. این حالت ممکن است برای استفاده با libmpv مفید باشد. پارامتر offset به سادگی به آدرس حافظه اضافه می‌شود (از mpv 0.8.0 به بعد؛ پیش‌تر نادیده گرفته می‌شد).
offset آفست بایتی نخستین پیکسل در فایل منبع است. (پیاده‌سازی فعلی همیشه کل فایل را از موقعیت 0 تا انتهای تصویر mmap می‌کند، بنابراین باید از آفست‌های بزرگ خودداری شود. پیش از mpv 0.8.0، آفست در واقع مستقیماً به mmap ارسال می‌شد، اما برای آسان‌تر کردن استفاده از آن تغییر یافت.)
fmt رشته‌ای است که فرمت تصویر را مشخص می‌کند. در حال حاضر، فقط bgra تعریف شده است. این فرمت دارای 4 بایت برای هر پیکسل و 8 بیت برای هر مؤلفه است. کم‌ارزش‌ترین 8 بیت، آبی (blue) و باارزش‌ترین 8 بیت، آلفا (alpha) است (در little endian، مؤلفه‌ها B-G-R-A هستند که B نخستین بایت است). این از premultiplied alpha استفاده می‌کند: هر مؤلفه رنگی از قبل در مؤلفه آلفا ضرب شده است. این بدان معناست که مقدار عددی هر مؤلفه برابر یا کوچک‌تر از مؤلفه آلفا است. (نقض این قاعده به نتایج متفاوتی در VOهای مختلف منجر خواهد شد: سرریزهای عددی ناشی از ترکیب مقادیر آلفای نادرست چیزی تلقی می‌شود که نباید رخ دهد، و بنابراین پیاده‌سازی‌ها تضمین نمی‌کنند که در این حالت رفتار قابل پیش‌بینی دریافت کنید.)
w، h و stride اندازه همپوشان را مشخص می‌کنند. w عرض قابل مشاهده همپوشان است، در حالی که stride عرض بر حسب بایت را در حافظه مشخص می‌کند. در حالت ساده و با فرمت bgra، stride==4*w است. به طور کلی، کل مقدار حافظه مورد دسترسی stride * h است. (از نظر فنی، حداقل اندازه stride * (h - 1) + w * 4 خواهد بود، اما برای سادگی، پخش‌کننده به تمام stride * h بایت دسترسی پیدا می‌کند.)
dw و dh اندازه نمایشی (اختیاری) همپوشان را مشخص می‌کنند. بخش قابل مشاهده همپوشان (w و h) در نمایش به dw و dh مقیاس‌بندی می‌شود. اگر پارامترها مشخص نشده باشند، از مقادیر w و h استفاده می‌شود.
نکته:
7.0
3.5
پیش از mpv 0.18.1، هنگام به‌روزرسانی یک همپوشان با جایگزین کردن آن با یک بافر حافظه دیگر، باید "double buffering" را به صورت دستی انجام می‌دادید. از mpv 0.18.1 به بعد، حافظه به سادگی کپی می‌شود و پس از بازگشت دستور، به هیچ یک از بخش‌های حافظه مشخص‌شده توسط آرگومان‌های دستور ارجاع نمی‌دهد. اگر می‌خواهید از این دستور پیش از mpv 0.18.1 استفاده کنید، مستندات قدیمی را بخوانید تا ببینید چگونه این مورد را به درستی مدیریت کنید.
168u
168u
overlay-remove <id>
حذف یک همپوشان که با overlay-add و همان ID اضافه شده است. اگر هیچ همپوشانی با این ID وجود نداشته باشد، کاری انجام نمی‌دهد.
osd-overlay
افزودن/به‌روزرسانی/حذف یک همپوشان OSD.
(اگرچه این شبیه به overlay-add به نظر می‌رسد، اما osd-overlay برای همپوشان‌های متنی است، در حالی که overlay-add برای bitmapها است. ممکن است overlay-add در آینده درون osd-overlay ادغام شود تا این دوگانگی برطرف گردد.)
می‌توانید از این دستور برای افزودن همپوشان‌های متنی در فرمت ASS استفاده کنید. ASS دارای تگ‌های پیشرفته موقعیت‌یابی و رندر است که می‌توان از آن‌ها برای رندر کردن تقریباً هر نوع گرافیک برداری استفاده کرد.
این دستور پارامترهای زیر را می‌پذیرد:
7.0
id
عدد صحیح دلخواهی که همپوشان را مشخص می‌کند. با فراخوانی این دستور با پارامترهای مختلف id می‌توان چندین همپوشان اضافه کرد. فراخوانی این دستور با همان id، همپوشانِ قبلاً تنظیم‌شده را جایگزین می‌کند.
برای هر کلاینت libmpv (یعنی اتصال IPC، اسکریپت) یک فضای‌نام (namespace) مجزا وجود دارد، بنابراین شناسه‌ها می‌توانند توسط کاربر API بدون تداخل با دیگر کاربران API ایجاد و تخصیص داده شوند.
اگر کلاینت libmpv از بین برود، تمام همپوشان‌های مرتبط با آن نیز حذف می‌شوند. به ویژه، اتصال از طریق --input-ipc-server، افزودن یک همپوشان و سپس قطع اتصال، باعث می‌شود همپوشان بلافاصله دوباره حذف شود.
format
رشته‌ای که نوع همپوشان را مشخص می‌کند. مقادیر زیر را می‌پذیرد (رندر HTML این بخش دچار مشکل است، در عوض صفحه راهنمای تولیدشده یا منبع خام RST را ببینید):
7.0
ass-events
پارامتر data یک رشته است. رشته بر اساس نویسه خط جدید (newline) تقسیم می‌شود. هر خط به بخش Text از یک رویداد Dialogue در ASS تبدیل می‌شود. زمان‌بندی (timing) استفاده نمی‌شود (اما رفتار تگ‌های ASS وابسته به زمان‌بندی ممکن است در نسخه‌های آینده mpv تغییر کند).
توجه داشته باشید که قرار دادن چندین خط در data بهتر از افزودن چندین همپوشان OSD است.
این دو استایل ASS ارائه می‌دهد: OSD شامل سبک متنی است که توسط گزینه‌های فعلی --osd-... تعریف شده است. Default مشابه است و شامل سبکی است که اگر همه گزینه‌ها روی مقدار پیش‌فرض تنظیم شده بودند، OSD می‌داشت.
علاوه بر این، گزینه‌های res_x و res_y مقدار فیلدهای هدر PlayResX و PlayResY در ASS را مشخص می‌کنند. اگر res_y روی 0 تنظیم شود، PlayResY با یک مقدار پیش‌فرض اختیاری مقداردهی اولیه می‌شود (اما توجه داشته باشید که مقدار پیش‌فرض برای این دستور 720 است، نه 0). اگر res_x روی 0 تنظیم شود، PlayResX بر اساس res_y به گونه‌ای تنظیم می‌شود که یک پیکسل مجازی ASS نسبت ابعاد پیکسل مربعی داشته باشد.
none
مقدار ویژه‌ای که باعث حذف همپوشان می‌شود. اکثر پارامترها به جز id و format عمدتاً نادیده گرفته می‌شوند.
168u
data
رشته‌ای که محتویات همپوشان را بر اساس پارامتر format تعریف می‌کند.
res_x, res_y
در صورتی استفاده می‌شود که format روی ass-events تنظیم شده باشد (توضیحات آن بخش را ببینید). اختیاری است و پیش‌فرض آن 0/720 می‌باشد.
z
ترتیب Z (عمق) همپوشان. اختیاری است و پیش‌فرض آن 0 می‌باشد.
توجه داشته باشید که ترتیب Z بین همپوشان‌های مختلف با فرمت‌های متفاوت، ایستا است و نمی‌تواند تغییر کند (در حال حاضر، این بدان معناست که همپوشان‌های bitmap اضافه‌شده توسط overlay-add همیشه بالای همپوشان‌های ASS اضافه‌شده توسط osd-overlay قرار می‌گیرند). علاوه بر این، مؤلفه‌های OSD داخلی همیشه زیر هر OSD سفارشی قرار دارند. (این شامل هر نوع زیرنویس و همچنین متن رندرشده توسط show-text می‌شود.)
ممکن است نسخه‌های آینده mpv نحوه مدیریت ترتیب Z بین فرمت‌های مختلف OSD و OSD داخلی را تغییر دهند..TP
hidden
در صورت تنظیم روی true، این مورد نمایش داده نمی‌شود (پیش‌فرض: false).
compute_bounds
در صورت تنظیم روی true، تلاش می‌کند تا محدوده‌ها را تعیین کرده و آن‌ها را به عنوان مستطیل x0، x1، y0، y1 در مقدار نتیجهٔ دستور بنویسد (پیش‌فرض: false). اگر مستطیل خالی، نامشخص یا به نوعی تباهیده باشد، مقداردهی نمی‌شود. x1/y1 مختصات گوشهٔ پایینی غیرشامل (exclusive) مستطیل است.
مقدار نتیجه ممکن است به اندازهٔ پنجرهٔ VO وابسته باشد، و بر اساس آخرین اندازهٔ شناخته‌شدهٔ پنجره در زمان فراخوانی محاسبه می‌شود. این بدان معناست که نتایج ممکن است با آنچه واقعاً رندر می‌شود تفاوت داشته باشد.
برای ass-events، مستطیل نتیجه مجدداً به مختصات PlayRes (res_x/res_y) بازحساب می‌شود. اگر اندازهٔ پنجره نامشخص باشد، یک مقدار جایگزین (fallback) انتخاب می‌گردد.
باید آگاه باشید که این سازوکار بسیار ناکارآمد است، زیرا تمام نتیجه را رندر می‌کند، و سپس از کادر محصورکنندهٔ (bounding box) فهرست بیت‌مپ رندرشده استفاده می‌نماید (حتی اگر hidden تنظیم شده باشد). این کار حافظه‌های موقت گوناگون را تخلیه می‌کند. نتایج آن نیز به نسخهٔ libass مورد استفاده بستگی دارد.
این ویژگی آزمایشی است و ممکن است دوباره دستخوش تغییر شود.
168u
نکته:
7.0
3.5
همیشه از آرگومان‌های نام‌دار (mpv_command_node()) استفاده کنید. اسکریپت‌های Lua باید به‌جای فراخوانی مستقیم این دستور، از تابع کمکی mp.create_osd_overlay() استفاده کنند.
168u
168u
168u
"دستورهای ورودی و مقیدسازی کلید (Input and Keybind Commands)"
0.0
mouse <x> <y> [<button> [<mode>]]
یک رویداد ماوس را با مختصات داده‌شده (<x>، <y>) ارسال می‌کند.
آرگومان دوم:
7.0
<button>
شمارهٔ کلید ماوس کلیک‌شده. این مقدار باید یکی از 0-19 باشد. اگر <button> نادیده گرفته شود، تنها موقعیت مکانی به‌روزرسانی خواهد شد.
168u
آرگومان سوم:
7.0
<single> (پیش‌فرض)
رویداد ماوس نمایانگر یک تک‌کلیک معمولی است.
<double>
رویداد ماوس نمایانگر دوبار کلیک (دابل‌کلیک) است.
168u
keypress <name> [<scale>]
یک رویداد کلید را از طریق کنترل‌کنندهٔ ورودی mpv ارسال می‌کند، و هر رفتاری را که برای آن کلید پیکربندی شده باشد فراخوانی می‌نماید. name از طرح نام‌گذاری input.conf برای کلیدها و کلیدهای تبدیل (modifiers) استفاده می‌کند. scale برای مقیاس‌بندی تغییر عددیِ ناشی از دستور مقیدشده به‌کار می‌رود (همان سازوکار پیمایش دقیق). این دستور برای API کلاینت مفید است: رویدادهای کلید را می‌توان به libmpv ارسال کرد تا به‌طور داخلی مدیریت شوند.
keydown <name>
مشابه keypress، اما پرچم KEYDOWN را تنظیم می‌کند تا در صورتی که کلید به یک دستور تکرارپذیر مقید شده باشد، با زمان‌بندی تکرار کلید در mpv به‌طور مکرر اجرا شود تا زمانی که دستور keyup فراخوانی گردد.
keyup [<name>]
پرچم KEYUP را تنظیم می‌کند، که هر رفتار تکرارشونده‌ای را که آغاز شده بود متوقف می‌سازد. name اختیاری است. اگر name داده نشود یا یک رشتهٔ خالی باشد، KEYUP روی تمام کلیدها تنظیم می‌شود. در غیر این صورت، KEYUP تنها روی کلید مشخص‌شده توسط name تنظیم خواهد شد.
keybind <name> <cmd> [<comment>]
یک کلید را به یک دستور ورودی مقید می‌کند. cmd باید یک دستور کامل حاوی تمام آرگومان‌ها و پرچم‌های مورد نظر باشد. هر دوی name و cmd از طرح نام‌گذاری input.conf استفاده می‌کنند. comment یک رشتهٔ اختیاری است که می‌تواند به عنوان مدخل comment در input-bindings خوانده شود. این گزینه اساساً برای API کلاینت کاربرد دارد.
enable-section <name> [<flags>]
این دستور منسوخ شده است، مگر برای مصارف داخلی mpv.
تمام مقیدسازی‌های کلید در بخش ورودی نام‌گذاری‌شده را فعال می‌کند.
بخش‌های ورودی فعال‌شده یک پشته (stack) تشکیل می‌دهند. مقیدسازی‌ها در بخش‌های بالای پشته نسبت به بخش‌های پایین‌تر ترجیح داده می‌شوند. این دستور بخش را در بالای پشته قرار می‌دهد. اگر بخش از قبل در پشته بود، پیشاپیش به‌طور ضمنی حذف می‌شود. (یک بخش نمی‌تواند بیش از یک‌بار در پشته قرار گیرد.)
پارامتر flags می‌تواند ترکیبی (جداشده با +) از پرچم‌های زیر باشد:
7.0
<exclusive>
تمام بخش‌هایی که قبل از بخش جدیداً فعال‌شده فعال شده‌اند، غیرفعال می‌شوند. به محض اینکه تمام بخش‌های انحصاری بالای آن‌ها حذف شوند، دوباره فعال خواهند شد. به عبارت دیگر، بخش جدید بر تمام بخش‌های پیشین سایه می‌اندازد.
<allow-hide-cursor>
این ویژگی از طریق API عمومی قابل استفاده نیست.
<allow-vo-dragging>
همانند مورد قبل.
168u
disable-section <name>
این دستور منسوخ شده است، مگر برای مصارف داخلی mpv.
بخش ورودی نام‌گذاری‌شده را غیرفعال می‌کند. اثر enable-section را خنثی می‌سازد.
define-section <name> <contents> [<flags>]
این دستور منسوخ شده است، مگر برای مصارف داخلی mpv.
یک بخش ورودی نام‌گذاری‌شده ایجاد می‌کند، یا محتویات یک بخش ورودی از پیش موجود را جایگزین می‌نماید. پارامتر contents از همان نحو فایل input.conf استفاده می‌کند (به جز اینکه استفاده از نحو section در آن مجاز نیست)، از جمله نیاز به جداسازی مقیدسازی‌ها با نویسهٔ خط جدید.
اگر پارامتر contents یک رشتهٔ خالی باشد، بخش حذف می‌شود.
بخش با نام default، بخش ورودی عادی است.
به‌طور کلی، بخش‌های ورودی باید با دستور enable-section فعال شوند، در غیر این صورت نادیده گرفته می‌شوند.
پارامتر آخر معنای زیر را دارد:
7.0
<default> (همچنین در صورت حذف پارامتر استفاده می‌شود)
تنها در صورتی از مقیدسازی کلیدِ تعریف‌شده توسط این بخش استفاده کن که کاربر قبلاً این کلید را به دستوری مقید نکرده باشد.
<force>
همیشه کلید را مقید کن. (در صورت وجود ابهام، بخش ورودی که اخیراً فعال شده است اولویت دارد.)
168u
از این دستور می‌توان برای ارسال کلیدهای دلخواه به یک اسکریپت یا یک کاربر API کلاینت استفاده کرد. اگر بخش ورودی دستورهای script-binding را تعریف کند، دریافت رویدادهای جداگانه هنگام بالا/پایین رفتن کلید و اطلاعات نسبتاً دقیق دربارهٔ وضعیت کلید نیز ممکن خواهد بود. از نام کلید ویژهٔ unmapped می‌توان برای تطبیق با هر کلید نقشه‌برداری‌نشده استفاده کرد.
load-input-conf <filename>
یک فایل پیکربندی ورودی را بارگذاری می‌کند، مشابه با گزینهٔ --input-conf. اگر فایل از قبل گنجانده شده باشد، مقیدسازی‌های قبلی آن پیش از تجزیهٔ مجدد بازنشانی نمی‌شوند.
0.0
run <command> [<arg1> [<arg2> [...]]]
دستور داده‌شده را اجرا می‌کند. برخلاف MPlayer/mplayer2 و نسخه‌های قدیمی‌تر mpv (نسخهٔ 0.2.x و قدیمی‌تر)، این دستور شل (shell) را فراخوانی نمی‌کند. در عوض، دستور مستقیماً اجرا می‌شود و هر آرگومان به‌صورت جداگانه ارسال می‌گردد. هر آرگومان همانند بخش Property Expansion بسط داده می‌شود.
این دستور تعداد متغیری از آرگومان‌ها را می‌پذیرد و نمی‌تواند همراه با آرگومان‌های نام‌دار استفاده شود.
برنامه به‌صورت تفکیک‌شده (detached) اجرا می‌شود. mpv منتظر کامل شدن دستور نمی‌ماند، بلکه بلافاصله پس از ایجاد فرایند، پخش را ادامه می‌دهد.
برای دست‌یابی به رفتار قدیمی، از /bin/sh و -c به‌علاوهٔ دو آرگومان نخست استفاده کنید.
7.0
3.5
"مثال (Example)"
run "/bin/sh" "-c" "echo ${title} > /tmp/playing"
این مثال چندان مناسبی نیست، چرا که گریزدهی (escaping) نویسه‌ها را مدیریت نمی‌کند و یک فایل دست‌کاری‌شده ممکن است به مهاجم اجازه دهد دستورهای دلخواه شل را اجرا کند. توصیه می‌شود یک اسکریپت شل کوچک بنویسید و آن را با run فراخوانی کنید.
168u
168u
subprocess
مشابه run است، اما کنترل بیشتری روی اجرای فرایند در اختیار فراخواننده قرار می‌دهد و فرایند را تفکیک (detach) نمی‌کند.
می‌توانید با اجرای ناهمگام (asynchronous) این دستور، از مسدود شدن تا پایان کار فرایند جلوگیری کنید (برای مثال با استفاده از mp.command_native_async() در اسکریپت‌نویسی Lua).
این دستور دارای آرگومان‌های نام‌دار زیر است. ترتیب آن‌ها تضمین نشده است، بنابراین همیشه باید آن‌ها را با آرگومان‌های نام‌دار فراخوانی کنید؛ بخش Named arguments را ببینید.
7.0
args (MPV_FORMAT_NODE_ARRAY[MPV_FORMAT_STRING])
آرایه‌ای از رشته‌ها با دستور به‌عنوان نخستین آرگومان، و آرگومان‌های خط فرمان پس از آن. این دقیقاً مشابه فهرست آرگومان‌های دستور run است.
نخستین مدخل آرایه یا یک مسیر مطلق به فایل اجرایی است، یا یک نام فایل بدون مؤلفه‌های مسیر که در این صورت فایل اجرایی در دایرکتوری‌های موجود در متغیر محیطی PATH جستجو می‌شود. در یونیکس، این معادل رفتار posix_spawnp و execvp است.
playback_only (MPV_FORMAT_FLAG)
مقدار بولی که مشخص می‌کند آیا هنگام پایان پخش مدخل جاری فهرست پخش، فرایند باید خاتمه داده شود (kill) یا خیر (اختیاری، پیش‌فرض: true). در صورت فعال بودن، متوقف کردن پخش به‌طور خودکار فرایند را می‌کشد و نمی‌توانید آن را خارج از وضعیت پخش آغاز کنید.
capture_size (MPV_FORMAT_INT64)
عدد صحیحی که حداکثر بایت‌های خروجی استاندارد (stdout) به‌علاوهٔ خروجی خطای استاندارد (stderr) قابل ضبط را مشخص می‌کند (اختیاری، پیش‌فرض: 64MB). اگر تعداد بایت‌ها از این مقدار فراتر رود، ضبط متوقف می‌شود. این محدودیت برای هر جریانِ ضبط‌شده اعمال می‌شود.
capture_stdout (MPV_FORMAT_FLAG)
تمام داده‌هایی را که فرایند در خروجی استاندارد (stdout) می‌نویسد ضبط کرده و پس از پایان فرایند بازمی‌گرداند (اختیاری، پیش‌فرض: no).
capture_stderr (MPV_FORMAT_FLAG)
همانند capture_stdout، اما برای stderr.
detach (MPV_FORMAT_FLAG)
اجرای فرایند در حالت تفکیک‌شده (detached) یا عدم آن (اختیاری، پیش‌فرض: no). در این حالت، فرایند در یک نشست فرایند (process session) جدید اجرا می‌شود و دستور منتظر خاتمهٔ فرایند نمی‌ماند. اگر نه capture_stdout و نه capture_stderr روی true تنظیم نشده باشند، دستور بلافاصله پس از آغاز فرایند جدید بازمی‌گردد؛ در غیر این صورت دستور تا زمانی که لوله‌ها (pipes) باز باشند به خواندن ادامه می‌دهد.
env (MPV_FORMAT_NODE_ARRAY[MPV_FORMAT_STRING])
تنظیم فهرستی از متغیرهای محیطی برای فرایند جدید (پیش‌فرض: خالی). اگر یک فهرست خالی ارسال شود، در عوض محیط فرایند mpv استفاده می‌شود. (برخلاف سازوکارهای سیستم‌عامل زیربنایی، دستور mpv نمی‌تواند فرایندی با محیط کاملاً خالی را آغاز کند. خوشبختانه این کار کاملاً بی‌استفاده است.) قالب این فهرست همانند فراخوانی سیستمی execle() است. هر عنصر رشته‌ای یک متغیر محیطی را به‌صورت NAME=VALUE تعریف می‌کند.
در Lua، اگر به‌عنوان مثال صرفاً می‌خواهید یک متغیر جدید اضافه کنید، می‌توانید از utils.get_env_list() برای بازیابی محیط جاری استفاده نمایید.
stdin_data (MPV_FORMAT_STRING)
تزریق رشتهٔ داده‌شده به ورودی استاندارد (stdin) فرایند جدید. از آنجا که این یک رشته است، نمی‌توانید داده‌های باینری دلخواه را ارسال کنید. اگر فرایند خاتمه یابد یا لوله را قبل از نوشته شدن تمام داده‌ها ببندد، داده‌های باقی‌مانده بدون اخطار دور ریخته می‌شوند. احتمالاً روی win32 کار نمی‌کند.
passthrough_stdin (MPV_FORMAT_FLAG)
در صورت فعال بودن، ورودی استاندارد (stdin) فرایند جدید را به ورودی استاندارد (stdin) برنامهٔ mpv متصل می‌کند (پیش‌فرض: no). قبل از نسخهٔ mpv 0.33.0 این آرگومان وجود نداشت، اما رفتار به‌گونه‌ای بود که گویی روی true تنظیم شده است.
168u
این دستور نتیجهٔ زیر را بازمی‌گرداند (به‌عنوان MPV_FORMAT_NODE_MAP):
7.0
status (MPV_FORMAT_INT64)
معمولاً در صورتی که فرایند به‌طور عادی خاتمه یابد، این مقدار کد خروج فرایند (۰ یا مثبت) است، یا برای سایر خطاها عددی منفی خواهد بود (شکست در راه‌اندازی، خاتمه‌یافته توسط mpv، و غیره). معنای مقادیر منفی، به‌جز دلالت بر خطا، تعریف‌نشده است (و با مقادیر وضعیت خروج سطح پایین سیستم‌عامل مطابقت ندارد).
در Windows، ممکن است حتی در صورت پایان عادی فرایند نیز یک مقدار بازگشتی منفی برگردانده شود، زیرا کد خروج UINT در win32 پیش از قرار گرفتن به‌عنوان فیلد int64_t در نگاشت نتیجه، به یک متغیر int تخصیص می‌یابد. این مورد ممکن است بعداً اصلاح شود.
stdout (MPV_FORMAT_BYTE_ARRAY)
جریان ضبط‌شدهٔ stdout، محدود به capture_size.
stderr (MPV_FORMAT_BYTE_ARRAY)
همانند stdout، اما برای stderr.
error_string (MPV_FORMAT_STRING)
در صورتی که فرایند به‌طور عادی خاتمه یافته باشد، رشته‌ای خالی است. رشتهٔ killed در صورتی که فرایند به روشی غیرمعمول خاتمه یافته باشد. رشتهٔ init در صورتی که فرایند نتوانسته باشد آغاز شود.
در Windows، رشتهٔ killed تنها زمانی بازگردانده می‌شود که فرایند در نتیجهٔ تنظیم playback_only روی true توسط mpv کشته شده باشد.
killed_by_us (MPV_FORMAT_FLAG)
مشخص می‌کند که آیا فرایند توسط mpv کشته شده است یا خیر، مثلاً در نتیجهٔ تنظیم playback_only روی true، لغو دستور (مثلاً توسط mp.abort_async_command())، یا در صورتی که پخش‌کننده در آستانهٔ خروج باشد.
168u
توجه داشته باشید که تا زمان درست بودن پارامترها، خود دستور همیشه موفقیت برمی‌گرداند. این‌که آیا فرایند توانسته ایجاد شود یا به نحوی کشته شده یا وضعیت خطا برگردانده است، باید از مقدار نتیجه پرس‌وجو شود.
این دستور می‌تواند به‌صورت ناهمگام از طریق API لغو شود. همچنین بخش Asynchronous command details را ببینید. تنها دستور run می‌تواند فرایندها را به روشی واقعاً تفکیک‌شده (detached) آغاز کند.
نکته:
7.0
3.5
زیرفرایند (subprocess) در صورت عدم شروع در حالت تفکیک‌شده (detached)، هنگام خروج پخش‌کننده همیشه خاتمه خواهد یافت، حتی اگر playback_only برابر با false باشد.
168u
168u
هشدار:
7.0
3.5
فراموش نکنید اگر می‌خواهید دستور در حالی که پخش‌کننده در حالت بیکار (idle) است اجرا شود، یا اگر نمی‌خواهید پایان پخش دستور را متوقف کند، فیلد playback_only را روی false تنظیم کنید.
168u
168u
7.0
3.5
"مثال (Example)"
0.0
3.5
local r = mp.command_native({
name = "subprocess",
playback_only = false,
capture_stdout = true,
args = {"cat", "/proc/cpuinfo"},
})
if r.status == 0 then
print("result: " .. r.stdout)
end
168u
این یک نمونه نسبتاً بی‌فایده از Lua است که نحوه اجرای یک فرآیند به صورت مسدودکننده (blocking) و دریافت خروجی stdout آن را نشان می‌دهد.
168u
168u
quit [<code>]
خروج از پخش‌کننده. اگر آرگومانی داده شود، به عنوان کد خروج فرآیند استفاده می‌شود.
quit-watch-later [<code>]
خروج از پخش‌کننده و ذخیره موقعیت کنونی پخش. پخش دوباره آن فایل در آینده، در آغاز به موقعیت قبلی پرش خواهد کرد. آرگومان (اختیاری) دقیقاً مانند دستور quit است. به RESUMING PLAYBACK مراجعه کنید.
168u
"دستورات اسکریپت‌نویسی (Scripting Commands)"
0.0
script-message [<arg1> [<arg2> [...]]]
ارسال یک پیام به همه کلاینت‌ها، و ارسال فهرست آرگومان‌های زیر به آن.
معنای این پیام، تعداد آرگومان‌هایی که می‌پذیرد، و معنای هر آرگومان کاملاً بر عهده گیرنده و فرستنده است. همه کلاینت‌ها پیام را دریافت می‌کنند، بنابراین مراقب تداخل نام‌ها باشید (یا از script-message-to استفاده کنید).
این دستور تعداد متغیری آرگومان می‌پذیرد و نمی‌توان از آن به همراه آرگومان‌های نام‌دار استفاده کرد.
script-message-to <target> [<arg1> [<arg2> [...]]]
مشابه script-message، اما ارسال پیام تنها به کلاینتی با نام <target>. هر کلاینت (اسکریپت‌ها و غیره) دارای یک نام یکتا است. برای نمونه، اسکریپت‌های Lua می‌توانند نام خود را از طریق mp.get_script_name() به دست آورند. توجه داشته باشید که نام کلاینت‌ها تنها از نویسه‌های الفبایی-عددی و _ تشکیل می‌شود.
این دستور تعداد متغیری آرگومان می‌پذیرد و نمی‌توان از آن به همراه آرگومان‌های نام‌دار استفاده کرد.
script-binding <name> [<arg>]
فراخوانی یک میانبر کلید (key binding) ارائه‌شده توسط اسکریپت. از این دستور می‌توان برای نگاشت مجدد میانبرهای کلیدیِ ارائه‌شده توسط اسکریپت‌های خارجی Lua استفاده کرد.
<name> نام میانبر است. <arg> یک رشته اختیاری ارائه‌شده توسط کاربر است که می‌تواند برای ارسال اطلاعات اضافی به کار رود.
می‌توان به صورت اختیاری نام اسکریپت را با استفاده از / به عنوان جداکننده به آن پیشوند کرد؛ مانند script-binding scriptname/bindingname. توجه داشته باشید که نام‌های اسکریپت تنها از نویسه‌های الفبایی-عددی و _ تشکیل می‌شوند.
برای کامل بودن مطلب، نحوه عملکرد درونی این دستور در اینجا آمده است. جزئیات ممکن است در هر زمانی تغییر کنند. در صورت وقوع هر رویداد کلید منطبق، script-message-to یا script-message (بسته به اینکه نام اسکریپت گنجانده شده باشد یا نه) با آرگومان‌های زیر در قالب رشته فراخوانی می‌شود:
7.0
1. 3
رشته key-binding.
2. 3
نام میانبر (همان‌طور که در بالا مشخص شد).
3. 3
وضعیت کلید به عنوان رشته (زیر را ببینید).
4. 3
نام کلید (از mpv 0.15.0 به بعد).
5. 3
متنی که کلید تولید می‌کند، یا در صورت عدم اعمال، یک رشته خالی.
6. 3
مقیاس کلید، مانند مواردی که توسط کلیدهای WHEEL_* تولید می‌شوند. اگر کلید مقیاس‌پذیر نباشد، مقیاس ۱ است.
7. 3
رشته ارائه‌شده توسط کاربر <arg>، یا در صورت عدم استفاده از آرگومان، یک رشته خالی.
168u
آرگومان پنجم تنها در صورتی مقداردهی می‌شود که هیچ کلید تبدیل‌کننده‌ای (modifier) وجود نداشته باشد (استفاده از کلید shift به همراه یک حرف معمولاً به عنوان داشتن تبدیل‌کننده منتشر نمی‌شود و در عوض منجر به متن با حروف بزرگ می‌شود، اما برخی بک‌اندها ممکن است درست عمل نکنند).
وضعیت کلید از ۳ نویسه تشکیل شده است:
7.0
1. 3
یکی از d (کلید به پایین فشرده شد)، u (رها شد)، r (کلید همچنان فشرده است و تکرار شد؛ تنها در صورتی که تکرار کلید برای این میانبر فعال باشد)، p (کلید فشرده شد؛ زمانی رخ می‌دهد که بالا/پایین قابل ردگیری نباشد).
2. 3
اینکه آیا رویداد از موشواره سرچشمه می‌گیرد: یا m (دکمه موشواره) یا - (چیز دیگر).
3. 3
اینکه آیا رویداد ناشی از لغو شدن است (برای نمونه، کلید به صورت منطقی رها شده اما فیزیکی رها نشده است): یا c (لغو شد) یا - (چیز دیگر). همه انواع لغو شدن این پرچم را تنظیم نمی‌کنند.
168u
نسخه‌های آینده می‌توانند برای پشتیبانی از ویژگی‌های خاص ورودی بیشتر، آرگومان‌ها و نویسه‌های وضعیت کلید بیشتری اضافه کنند.
این یک دستور مقیاس‌پذیر (scalable) است. برای جزئیات، به مستندات پیشوند دستور ورودی nonscalable در Input Command Prefixes مراجعه کنید.
load-script <filename>
بارگذاری یک اسکریپت، مشابه گزینه --script. اینکه آیا این دستور منتظر اتمام مقداردهی اولیه اسکریپت می‌ماند یا خیر چندین بار تغییر کرده و رفتار آینده آن تعریف‌نشده باقی مانده است.
در صورت موفقیت، یک mpv_node برمی‌گرداند که فیلد client_id آن روی مقدار بازگشتیِ فراخوانی APIِ mpv_client_id() برای دسته اسکریپت تازه‌تأسیس تنظیم شده است.
0.0
screenshot [<flags>]
یک اسکرین‌شات می‌گیرد.
چندین پرچم در دسترس است (برخی را می‌توان با + ترکیب کرد):
7.0
<video>
تصویر ویدیو را در وضوح اصلی‌اش، بدون OSD یا زیرنویس ذخیره می‌کند. این حالت
پیش‌فرض در صورت مشخص نشدن پرچم است، و هنگام ترکیب با سایر پرچم‌ها نیازی به
افزودن صریح آن نیست.
<scaled>
تصویر ویدیو را در وضوح پخش فعلی ذخیره می‌کند.
<subtitles> (پیش‌فرض)
تصویر ویدیو را همراه با زیرنویس ذخیره می‌کند.
برخی خروجی‌های ویدیو ممکن است تحت شرایط خاصی همچنان OSD را نیز در خروجی بگنجانند.
<osd>
تصویر ویدیو را همراه با OSD ذخیره می‌کند.
<window>
محتویات پنجرهٔ mpv را همراه با OSD و زیرنویس ذخیره می‌کند.
این یک نام مستعار برای scaled+subtitles+osd است.
<each-frame>
از هر فریم یک اسکرین‌شات می‌گیرد. این دستور را دوباره صادر کنید تا تصویربرداری
متوقف شود. توجه داشته باشید که هنگام استفاده از این حالت باید frame-dropping را
غیرفعال کنید - در غیر این صورت ممکن است در مواردی که فریم افتاده است، تصاویر تکراری
دریافت کنید. این پرچم را می‌توان با سایر پرچم‌ها ترکیب کرد، مانند
video+each-frame.
168u
رفتار دقیق تمام پرچم‌ها به غیر از each-frame به خروجی ویدیوی انتخاب‌شده
بستگی دارد.
نسخه‌های قدیمی‌تر mpv به ارسال single و each-frame به عنوان آرگومان
دوم نیاز داشتند (و پرچم نداشتند). این نحو هنوز پشتیبانی می‌شود، اما منسوخ شده
است و ممکن است در آینده حذف شود.
اگر این دستور را با استفاده از ; با دستور دیگری ترکیب کنید، می‌توانید از
پرچم async استفاده کنید تا کدگذاری/نوشتن فایل تصویر به صورت ناهمگام انجام
شود. برای دستورهای مستقل عادی، این کار همواره ناهمگام است و پرچم هیچ تاثیری
ندارد. (این رفتار با mpv 0.29.0 تغییر کرد.)
در صورت موفقیت، یک mpv_node برمی‌گرداند که فیلد filename آن روی
مکان اسکرین‌شات ذخیره‌شده تنظیم شده است.
screenshot-to-file <filename> [<flags>]
یک اسکرین‌شات می‌گیرد و آن را در فایل مشخص‌شده ذخیره می‌کند. قالب فایل بر اساس پسوند
حدس زده خواهد شد (و --screenshot-format نادیده گرفته می‌شود - رفتار برنامه
در صورت نبود پسوند یا ناشناخته بودن آن، دلخواه است).
آرگومان دوم مانند آرگومان اول screenshot است و از subtitles،
video و window پشتیبانی می‌کند.
اگر فایل از قبل موجود باشد، رونویسی می‌شود.
مانند همهٔ پارامترهای دستورهای ورودی، نام فایل مشمول بسط ویژگی به صورتی است
که در Property Expansion شرح داده شده است.
screenshot-raw [<flags> [<format>]]
یک اسکرین‌شات را در حافظه برمی‌گرداند. این دستور تنها از طریق client API یا از درون
یک اسکریپت با استفاده از mp.command_native قابل استفاده است. نگاشت
MPV_FORMAT_NODE_MAP بازگردانده شده توسط این دستور، فیلدهای w، h و
stride را با محتویات مشخص تنظیم می‌کند.
فیلد format روی قالب داده‌های تصویر اسکرین‌شات تنظیم می‌شود. این مقدار
می‌تواند توسط آرگومان format کنترل شود. این قالب می‌تواند یکی از موارد
زیر باشد:
7.0
bgr0 (پیش‌فرض)
این قالب به صورت B8G8R8X8 سازمان‌دهی شده است (که در آن B برابر
LSB است). محتویات پدینگ X تعریف‌نشده است.
bgra
این قالب به صورت B8G8R8A8 سازمان‌دهی شده است (که در آن B برابر
LSB است).
rgba
این قالب به صورت R8G8B8A8 سازمان‌دهی شده است (که در آن R برابر
LSB است).
rgba64
این قالب به صورت R16G16B16A16 سازمان‌دهی شده است (که در آن R برابر
LSB است). هر جزء ۲ بایت به ازای هر پیکسل اشغال می‌کند. هنگامی که از این قالب
استفاده می‌شود، داده‌های تصویر عمق بیتی بالایی خواهند داشت و
--screenshot-high-bit-depth نادیده گرفته می‌شود.
168u
فیلد data از نوع MPV_FORMAT_BYTE_ARRAY شامل داده‌های واقعی تصویر است.
تصویر به محض آزاد شدن mpv_node نتیجه، آزاد می‌شود. طبق روال معمول مفاهیم
client API، شما مجاز به نوشتن روی داده‌های تصویر نیستید.
مقدار stride تعداد بایت‌ها از یک پیکسل در (x0, y0) تا پیکسل در
(x0, y0 + 1) است. اگر تصویر برش خورده باشد یا پدینگ وجود داشته باشد،
این مقدار می‌تواند بزرگ‌تر از w * bpp باشد. این عدد همچنین می‌تواند منفی
باشد. دسترسی به یک پیکسل با byte_index = y * stride + x * bpp انجام
می‌شود. در اینجا، bpp تعداد بایت‌ها در هر پیکسل است که برای قالب
rgba64 برابر با ۸ و برای سایر قالب‌ها برابر با ۴ است.
آرگومان flags مانند آرگومان اول screenshot است و از subtitles،
video و window پشتیبانی می‌کند.
0.0
af <operation> <value>
تغییر زنجیرهٔ فیلترهای صوتی. دستور vf را ببینید.
vf <operation> <value>
تغییر زنجیرهٔ فیلترهای ویدیویی.
معناشناسی دقیقاً مشابه با تجزیهٔ گزینه‌ها است (بخش VIDEO FILTERS را ببینید). از این رو متن زیر خلاصه‌ای تکراری و ناقص است.
آرگومان نخست مشخص می‌کند چه اتفاقی رخ دهد:
7.0
<set>
بازنویسی زنجیرهٔ فیلتر قبلی با زنجیرهٔ جدید.
<add>
الحاق زنجیرهٔ فیلتر جدید به انتهای زنجیرهٔ قبلی.
<toggle>
بررسی می‌کند که آیا فیلتر داده‌شده (دقیقاً با همان پارامترها) هم‌اکنون در زنجیرهٔ ویدیویی وجود دارد یا خیر. اگر وجود داشته باشد، فیلتر را حذف می‌کند؛ اگر وجود نداشته باشد، فیلتر را اضافه می‌کند. (اگر چندین فیلتر به دستور ارسال شوند، این عمل برای تک‌تک فیلترها انجام می‌گیرد.)
یک حالت ویژه، ترکیب این عملکرد با برچسب‌ها و استفاده از @name بدون نام فیلتر و پارامترها به عنوان ورودی فیلتر است. این کار پرچم فعال/غیرفعال بودن (enable/disable) را تغییر وضعیت (toggle) می‌دهد.
<remove>
مانند toggle، اما همیشه فیلتر داده‌شده را از زنجیره حذف می‌کند.
<clr>
حذف تمامی فیلترها. توجه داشته باشید که این دستور نیز همانند دیگر زیردستورها، فیلترهایی را که به طور خودکار درج شده‌اند کنترل نمی‌کند.
168u
این آرگومان همیشه مورد نیاز است؛ برای نمونه در مورد clr از vf clr "" استفاده کنید.
می‌توانید با قرار دادن پیشوند @name: (که در آن name یک شناسهٔ دلخواه و انتخابی کاربر است) قبل از فیلترها، به آن‌ها برچسب اختصاص دهید. برچسب‌ها را می‌توان برای ارجاع به فیلترها از طریق نام در تمامی دستورهای اصلاح زنجیرهٔ فیلتر به کار برد. برای add، استفاده از برچسبی که پیش‌تر به کار رفته، فیلتر موجود را جایگزین خواهد کرد.
دستور vf پس از تغییر زنجیرهٔ فیلتر، فهرست فیلترهای درخواستی را روی OSD نمایش می‌دهد. این عملکرد تقریباً معادل با show-text ${vf} است. توجه داشته باشید فیلترهایی که برای تبدیل قالب به طور خودکار درج شده‌اند در فهرست نمایش داده نمی‌شوند و تنها موارد درخواستی کاربر نشان داده خواهند شد.
به طور معمول، دستورها بررسی می‌کنند که آیا زنجیرهٔ ویدیو با موفقیت دوباره ایجاد شده است یا خیر، و در صورت شکست، عملیات را بازگردانی (undo) می‌کنند. اگر دستور پیش از پیکربندی ویدیو اجرا شود (این امر زمانی ممکن است رخ دهد که دستور بلافاصله پس از باز کردن یک فایل و پیش از رمزگشایی فریم ویدیویی اجرا گردد)، امکان اجرای این بررسی وجود ندارد؛ در این حالت ممکن است ایجاد زنجیرهٔ ویدیو با شکست مواجه شود.
7.0
3.5
"مثالی برای input.conf"
0.0
• 2
a vf set vflip وارونه کردن ویدیو با کلید a
• 2
b vf set "" حذف تمامی فیلترهای ویدیویی با کلید b
• 2
c vf toggle gradfun تغییر وضعیت فیلتر deband با کلید c
168u
168u
168u
7.0
3.5
"مثالی از نحوهٔ فعال/غیرفعال کردن فیلترهای غیرفعال در زمان اجرا"
0.0
• 2
موردی مانند vf-add=@deband:!gradfun را به mpv.conf اضافه کنید. عبارت @deband: برچسب است؛ یک نام دلخواه تعیین‌شده توسط کاربر برای این مدخل فیلتر. علامت ! پیش از نام فیلتر، فیلتر را به طور پیش‌فرض غیرفعال می‌کند. هر آنچه پس از آن می‌آید نام عادی فیلتر و احتمالاً پارامترهای فیلتر است، درست همانند ساختار دستوری معمول --vf.
• 2
عبارت a vf toggle @deband را به input.conf اضافه کنید. این دستور با فشرده شدن کلید a، پرچم "disabled" (غیرفعال) را برای فیلتر دارای برچسب deband تغییر وضعیت می‌دهد (toggle می‌کند).
168u
168u
168u
vf-command <label> <command> <argument> [<target>]
ارسال یک دستور به فیلتر. توجه داشته باشید که در حال حاضر، این قابلیت تنها با فیلتر lavfi کار می‌کند. برای فهرست دستورهای پشتیبانی‌شده برای هر فیلتر، به مستندات libavfilter مراجعه کنید.
<label> یک برچسب فیلتر mpv است؛ برای ارسال هم‌زمان آن به تمامی فیلترها از all استفاده کنید.
<command> و <argument> رشته‌های مخصوص فیلتر هستند.
<target> نام یک فیلتر یا نمونه‌ای از فیلتر است و مقدار پیش‌فرض آن all می‌باشد. توجه داشته باشید که target یک مشخص‌کنندهٔ اضافی برای فیلترهایی است که از آن پشتیبانی می‌کنند، مانند زنجیره‌های پیچیدهٔ فیلتر lavfi.
af-command <label> <command> <argument> [<target>]
مشابه vf-command، اما برای فیلترهای صوتی.
0.0
ignore
از این دستور برای "مسدود کردن" کلیدهایی که نباید مقداری داشته باشند و نباید کاری انجام دهند، استفاده می‌شود. برای غیرفعال کردن کلیدهای میانبر پیش‌فرض، بدون غیرفعال‌سازی همهٔ کلیدها با --input-default-bindings=no مفید است.
drop-buffers
بافرهای صوتی/تصویری/دی‌ماکسر (demuxer) را خالی کرده و از نو آغاز می‌کند. ممکن است برای جریان‌های غیرقابل‌پیمایش (unseekable) که هماهنگی صدا و تصویر آن‌ها به هم می‌ریزد مفید باشد.
این دستور ممکن است در آینده تغییر یافته یا حذف شود.
dump-cache <start> <end> <filename>
کَش (حافظهٔ نهان) فعلی را در نام فایل مشخص‌شده ذخیره می‌کند. اگر فایل <filename> از قبل وجود داشته باشد، بازنویسی می‌شود. <start> و <end> بازهٔ زمانیِ محتوای مورد نظر برای ذخیره‌سازی را تعیین می‌کنند. اگر در بازهٔ زمانی ارائه‌شده هیچ داده‌ای کَش نشده باشد، ممکن است هیچ چیزی ذخیره نشود (منجر به ایجاد فایلی بدون بسته می‌شود).
استخراج بخش بزرگی از کَش باعث قفل شدن (freeze) پخش‌کننده خواهد شد. تلاشی برای رفع این مشکل صورت نگرفته است، چرا که این قابلیت اساساً برای ایجاد برش‌های کوتاه در نظر گرفته شده است.
برای هشدارهای مختلفی که عموماً به این دستور نیز مربوط می‌شوند، --stream-record را ببینید؛ چرا که هر دو از کد زیربنایی یکسانی برای نوشتن فایل خروجی استفاده می‌کنند.
اگر <filename> یک رشتهٔ خالی باشد، عملیات در حال اجرای dump-cache متوقف می‌شود.
اگر <end> برابر با no باشد، استخراج مداوم فعال می‌شود. در این حالت، پس از استخراج بخش‌های موجود کَش، هر داده‌ای که از شبکه خوانده شود نیز به آن ضمیمه می‌گردد. رفتار این قابلیت مشابه --stream-record است (اگرچه با آن گزینه تداخلی ندارد و هر دو می‌توانند به‌طور هم‌زمان فعال باشند).
اگر زمان <end> فراتر از محتوای کَش باشد، دستور منتظر داده‌های تازه دریافت‌شده _نخواهد_ ماند و آن‌ها را در فایل نخواهد نوشت.
انتهای فایل خروجی ممکن است کمی آسیب‌دیده یا در بخش انتهایی ناقص باشد. (تلاش کافی برای اطمینان از پایان یافتن منظم آن صورت نگرفته است.)
توجه داشته باشید که این دستور تنها زمانی پایان می‌یابد که استخراج داده‌ها به پایان برسد. به این معنی که عملکردی شبیه به دستور screenshot دارد، با این تفاوت که می‌تواند مدت زمان بسیار طولانی‌تری مسدود بماند (block کند). اگر از استخراج مداوم استفاده شود، دستور تا زمان توقف پخش، رخ دادن خطا، اجرای دستوری دیگر از dump-cache، یا فراخوانی یک API مانند mp.abort_async_command جهت توقف صریح دستور، خاتمه نخواهد یافت. بخش همگام در برابر ناهمگام (Synchronous vs. Asynchronous) را ببینید.
نکته:
7.0
3.5
این قابلیت بیشتر برای جریان‌های شبکه ایجاد شده است. برای فایل‌های محلی، ممکن است روش‌های بسیار بهتری جهت ایجاد قطعات جداگانه و مانند آن وجود داشته باشد. اسکریپت‌های Lua بسیار کاربرپسندتری وجود دارند که بخش‌هایی از یک فایل را با راه‌اندازی یک نمونهٔ جداگانه از ffmpeg بازکدگذاری (re-encode) می‌کنند. در جریان‌های شبکه، این کار به این سادگی امکان‌پذیر نیست، زیرا جریان باید دوباره بارگیری شود. حتی اگر از --stream-record برای ضبط جریان در سیستم فایل محلی استفاده شود، باز هم ممکن است مشکلاتی بروز کند، زیرا همچنان روی فایل در حال ضبط نوشته می‌شود.
168u
168u
این دستور آزمایشی است و تمامی جزئیات مربوط به آن ممکن است در آینده تغییر کند.
ab-loop
پیمایش چرخشی میان حالت‌های حلقهٔ A-B. اولین فراخوانی نقطهٔ A (ویژگی ab-loop-a) را تنظیم می‌کند؛ دومی نقطهٔ B را، و سومی هر دو نقطه را پاک می‌کند.
ab-loop-dump-cache <filename>
در واقع dump-cache را با نقاط فعلی حلقهٔ AB به عنوان آرگومان فراخوانی می‌کند. همانند dump-cache، این دستور فایل واقع در <filename> را بازنویسی خواهد کرد. به همین ترتیب، اگر نقطهٔ B روی no تنظیم شده باشد، پس از ذخیرهٔ کَش موجود، وارد حالت استخراج مداوم می‌شود.
نویسنده این حق را برای خود محفوظ می‌دارد که در صورت پیدا شدن انگیزهٔ کافی برای انتقال این کارکرد به یک اسکریپت سادهٔ Lua، این دستور را حذف کند.
ab-loop-align-cache
تنظیم مجدد نقاط حلقهٔ A/B بر روی نقطهٔ شروع و پایان درون کَش که دستور ab-loop-dump-cache (احتمالاً) آن را ذخیره خواهد کرد. اساساً زمان‌ها را روی فریم‌های کلیدی (keyframes) هم‌تراز می‌کند. این تخمین ممکن است به‌ویژه در انتها کمی نادرست باشد (به دلیل مسائل مربوط به تفکیک‌پذیری ناشی از بازترکیب یا remuxing). اگر کَش در این بین کاهش یابد، نقاط تعیین‌شده توسط این دستور نیز پارامترهای مؤثری نخواهند بود.
آیندهٔ این دستور حتی از ab-loop-dump-cache نیز نامشخص‌تر است و چنانچه نویسنده تصمیم بگیرد که بلااستفاده است، ممکن است بدون هیچ جایگزینی حذف شود.
begin-vo-dragging
در صورت پشتیبانی توسط VO فعلی، کشیدن (dragging) پنجره را آغاز می‌کند. این دستور تنها باید زمانی فراخوانی شود که یکی از کلیدهای ماوس فشرده نگه داشته شده باشد، در غیر این صورت نادیده گرفته خواهد شد. اثر دقیق این دستور به نحوهٔ پیاده‌سازی کشیدن پنجره در VO بستگی دارد. به عنوان مثال، در Windows و macOS تنها کلید چپ ماوس می‌تواند کشیدن پنجره را آغاز کند، در حالی که X11 و Wayland به کلیدهای دیگر ماوس نیز اجازهٔ این کار را می‌دهند.
context-menu
نمایش منوی زمینه (context menu) روی پنجرهٔ ویدیو. برای جزئیات به بخش Context Menu مراجعه کنید.
168u
دستورهای مستندنشده: ao-reload (آزمایشی/داخلی)..SS "فهرست رویدادها (List of events)"
این یک فهرست جزئی از رویدادها است. این بخش توضیح می‌دهد که
mpv_event_to_node() چه چیزی را بازمی‌گرداند، که همان چیزی است که APIهای اسکریپت‌نویسی و
JSON IPC مشاهده می‌کنند. توجه داشته باشید که C API دارای اعلان‌های جداگانه‌ای در سطح C با
mpv_event است، که ممکن است کمی متفاوت باشند.
توجه داشته باشید که رویدادها ناهمگام هستند: هسته پخش‌کننده در حالی که رویدادها
به اسکریپت‌ها و سایر کلاینت‌ها تحویل داده می‌شوند، به کار خود ادامه می‌دهد. در برخی موارد، می‌توانید از
قلاب‌ها (hooks) برای اعمال اجرای همگام استفاده کنید.
همه رویدادها می‌توانند دارای فیلدهای زیر باشند:
0.0
event
نام به عنوان رویداد (همان‌طور که توسط mpv_event_name() بازگردانده می‌شود).
id
فیلد reply_userdata (مقدار مات کاربر). اگر reply_userdata برابر با 0 باشد،
این فیلد اضافه نمی‌شود.
error
روی یک رشته خطا تنظیم می‌شود (همان‌طور که توسط mpv_error_string() بازگردانده می‌شود). این فیلد
در صورتی که خطایی رخ نداده باشد یا نوع رویداد خطا را گزارش نکند، وجود ندارد.
بیشتر رویدادها این فیلد را بدون مقدار رها می‌کنند.
168u
این فهرست از مقدار فیلد نام رویداد، و نماد C API در پرانتز استفاده می‌کند:
0.0
start-file (MPV_EVENT_START_FILE)
درست پیش از بارگیری یک فایل جدید رخ می‌دهد. هنگامی که این رویداد را دریافت می‌کنید،
پخش‌کننده در حال بارگیری فایل است (یا احتمالاً از قبل کار بارگیری آن به پایان رسیده است).
این رویداد دارای فیلدهای زیر است:
7.0
playlist_entry_id
شناسه ورودی فهرست پخش (playlist entry ID) فایلی که هم‌اکنون در حال بارگیری است.
168u
end-file (MPV_EVENT_END_FILE)
پس از تخلیه شدن یک فایل رخ می‌دهد. معمولاً پخش‌کننده بلافاصله فایل بعدی را بارگیری می‌کند،
یا اگر این آخرین فایل باشد، خارج می‌شود.
این رویداد دارای فیلدهای زیر است:
7.0
reason
یکی از این مقادیر را دارد:
7.0
eof
فایل به پایان رسیده است. این مورد می‌تواند (اما لزوماً نباید) تحت شرایط خاص
شامل فایل‌های ناقص یا اتصالات شبکه قطع‌شده نیز باشد.
stop
پخش با یک دستور متوقف شد.
quit
پخش با ارسال دستور quit پایان یافت.
error
خطایی رخ داد. در این حالت، فیلد error به همراه رشته خطا موجود است.
redirect
در رابطه با فهرست‌های پخش و موارد مشابه رخ می‌دهد. برای جزئیات،
MPV_END_FILE_REASON_REDIRECT را در C API ببینید.
unknown
نامشخص. به‌طور معمول رخ نمی‌دهد، مگر اینکه Lua API با C API ناهماهنگ باشد.
(به همین ترتیب، ممکن است اسکریپت شما رشته‌های دلیلی را دریافت کند که در زمان نگارش اسکریپت شما
هنوز وجود نداشته‌اند.)
168u
playlist_entry_id
شناسه ورودی فهرست پخش فایلی که در حال پخش بوده یا برای پخش آن تلاش شده است.
این فیلد دارای مقداری یکسان با فیلد playlist_entry_id در رویداد متناظر start-file است.
file_error
روی رشته خطای mpv تنظیم می‌شود که دلیل تقریبی شکست پخش را شرح می‌دهد. در صورت نبود خطای مشخص،
تنظیم نمی‌شود. (در اسکریپت‌نویسی Lua، این مقدار مستقیماً روی فیلد error تنظیم می‌شد. این قابلیت از
نسخه mpv 0.33.0 منسوخ شده است. در آینده، این فیلد error برای این رویداد خاص تنظیم نخواهد شد.)
playlist_insert_id
اگر بارگیری به این دلیل پایان یافت که ورودی فهرست پخش برای نمونه خودش یک فهرست پخش بود،
و ورودی فعلی فهرست پخش با تعدادی ورودی دیگر جایگزین شد. این موضوع ممکن است حداقل با MPV_END_FILE_REASON_REDIRECT
رخ دهد (انواع دیگر رویدادها ممکن است در آینده از این برای مقاصد مشابه اما متفاوت استفاده کنند).
در این حالت، playlist_insert_id روی شناسه ورودی فهرست پخشِ اولین ورودی درج‌شده، و playlist_insert_num_entries روی
تعداد کل ورودی‌های درج‌شده فهرست پخش تنظیم می‌شود. توجه داشته باشید که در این مورد خاص، شناسه آخرین ورودی درج‌شده
برابر با playlist_insert_id+num-1 است.
آگاه باشید که بسته به شرایط، ممکن است ورودی‌های جدید فهرست پخش را پیش از مشاهده رویداد متوجه شوید
(مثلاً خواندن ویژگی "playlist" یا دریافت اعلان تغییر ویژگی پیش از دریافت رویداد).
اگر در C API این مقدار برابر با 0 باشد، این فیلد اضافه نمی‌شود.
playlist_insert_num_entries
توضیحات playlist_insert_id را ببینید. تنها در صورتی وجود دارد که playlist_insert_id موجود باشد.
168u
file-loaded (MPV_EVENT_FILE_LOADED)
پس از بارگیری یک فایل و آغاز پخش آن رخ می‌دهد.
seek (MPV_EVENT_SEEK)
هنگام پرش (seek) رخ می‌دهد. (این ممکن است شامل مواردی باشد که پخش‌کننده به صورت درونی پرش می‌کند،
حتی بدون تعامل کاربر. برای مثال شامل تغییر بخش‌ها هنگام پخش فایل‌های Matroska با فصل‌های مرتب‌شده.)
playback-restart (MPV_EVENT_PLAYBACK_RESTART)
شروع پخش پس از پرش یا پس از بارگیری فایل.
shutdown (MPV_EVENT_SHUTDOWN)
هنگامی ارسال می‌شود که پخش‌کننده خارج شده و اسکریپت باید پایان یابد. معمولاً به صورت خودکار
رسیدگی می‌شود. جزئیات مقداردهی اولیه و چرخه حیات اسکریپت را ببینید.
log-message (MPV_EVENT_LOG_MESSAGE)
پیام‌های فعال‌شده با mpv_request_log_messages() (در Lua:
mp.enable_messages) را دریافت می‌کند.
این رویداد علاوه بر فیلدهای پیش‌فرض رویداد، شامل فیلدهای زیر است:
7.0
prefix
پیشوند ماژول، فرستنده پیام را مشخص می‌کند. این همان چیزی است که پخش‌کننده ترمینال هنگام استفاده از
گزینه --v در جلوی متن پیام قرار می‌دهد، و همچنین همان چیزی است که برای --msg-level استفاده می‌شود.
level
سطح لاگ به عنوان رشته. برای نام‌های احتمالی سطح لاگ، msg.log را ببینید.
توجه داشته باشید که نسخه‌های بعدی mpv ممکن است سطوح جدیدی اضافه کنند یا سطوح موجود (مستند نشده) را حذف نمایند.
text
پیام لاگ. متن با یک نویسه خط جدید پایان می‌یابد. گاهی ممکن است شامل چندین خط باشد.
168u
به یاد داشته باشید که این پیام‌ها به عنوان راهنمایی برای انسان‌ها در نظر گرفته شده‌اند. شما
نباید آن‌ها را تجزیه کنید، و prefix/level/text پیام‌ها ممکن است در هر زمانی تغییر کند.
hook
این رویداد دارای فیلدهای زیر است:
7.0
hook_id
شناسه‌ای برای ارسال به mpv_hook_continue(). لفاف اسکریپت‌نویسی Lua از طریق
mp.add_hook() یک API بهتر پیرامون این موضوع ارائه می‌دهد.
168u
get-property-reply (MPV_EVENT_GET_PROPERTY_REPLY)
مستندات C API را ببینید.
set-property-reply (MPV_EVENT_SET_PROPERTY_REPLY)
مستندات C API را ببینید.
command-reply (MPV_EVENT_COMMAND_REPLY)
این یکی از دستوراتی است که فیلد `error برای آن معنادار است.
محیط‌های JSON IPC و Lua و احتمالاً سایر بک‌اندها رفتاری ویژه با این دارند و ممکن است
رویداد واقعی را به کاربر منتقل نکنند. C API را ببینید.
این رویداد دارای فیلدهای زیر است:
7.0
result
نتیجه (در صورت موفقیت) از هر نوع mpv_node، در صورت وجود.
168u
client-message (MPV_EVENT_CLIENT_MESSAGE)
زبان Lua و احتمالاً سایر بک‌اندها رفتاری ویژه با این دارند و ممکن است رویداد واقعی را به کاربر منتقل نکنند..sp
این رویداد شامل فیلدهای زیر است:
7.0
args
آرایه‌ای از رشته‌ها با داده‌های پیام.
168u
video-reconfig (MPV_EVENT_VIDEO_RECONFIG)
هنگام پیکربندی مجدد خروجی یا فیلتر ویدیو رخ می‌دهد.
audio-reconfig (MPV_EVENT_AUDIO_RECONFIG)
هنگام پیکربندی مجدد خروجی یا فیلتر صوتی رخ می‌دهد.
property-change (MPV_EVENT_PROPERTY_CHANGE)
هنگامی رخ می‌دهد که مقدار یک ویژگیِ تحت نظر تغییر کند.
این رویداد شامل فیلدهای زیر است:
7.0
name
نام ویژگی.
data
مقدار جدید ویژگی.
168u
168u
رویدادهای زیر نیز رخ می‌دهند، اما منسوخ شده‌اند: idle، tick
به جای آن‌ها از mpv_observe_property() (در Lua: mp.observe_property()) استفاده کنید.
"قلاب‌ها (Hooks)"
قلاب‌ها رویدادهای همگام (synchronous) میان هستهٔ پخش‌کننده و یک اسکریپت یا موارد مشابه هستند. این موضوع برای API کلاینت (شامل رابط اسکریپت‌نویسی Lua) اعمال می‌شود. معمولاً رویدادها ناهمگام هستند، و API قلاب روشی را برای مدیریت رویدادهایی فراهم می‌کند که به هماهنگی دقیق‌تری نیاز دارند. عدم پیروی دقیق از پروتکل می‌تواند موجب قفل شدن پخش‌کننده شود. با احتیاط استفاده کنید؛ اگر نیازی به مدیریت همگام رویدادها نیست از آن اجتناب نمایید.
رابط C API در فایل‌های هدر شرح داده شده است. رابط Lua API در بخش Lua توضیح داده شده است.
پیش از آن‌که یک قلاب عملاً روی کلاینت‌های API فراخوانی شود، تلاش خواهد کرد مقادیر جدید را برای تمام ویژگی‌های تحت نظری که پیش از قلاب تغییر یافته‌اند برگرداند. این ممکن است تعیین "سدهای" مشخص بین اعلان‌های تغییر ویژگی را از طریق ثبت قلاب‌ها برای یک برنامه آسان‌تر کند. (بدین معنا که این قلاب‌ها حتی اگر کاری انجام ندهید و اجازه دهید بلافاصله ادامه پیدا کنند نیز تأثیرگذار خواهند بود.)
در حال حاضر قلاب‌های زیر تعریف شده‌اند:
0.0
on_load
هنگامی فراخوانی می‌شود که قرار است فایلی باز شود، قبل از این‌که عملاً کاری انجام شود. برای مثال، می‌توانید ویژگی stream-open-filename را بخوانید و بنویسید تا یک URL را به نشانی دیگری تغییر دهید (پشتیبانی از سایت‌های پخشی را در نظر بگیرید که به ندرت URL مستقیم رسانه را به کاربر می‌دهند)، یا می‌توانید با تنظیم ویژگی file-local-options/<option name> گزینه‌های مختص به هر فایل را تعیین کنید. پخش‌کننده تا زمانی که تمام قلاب‌ها اجرا شوند منتظر خواهد ماند.
ترتیب اجرا پس از start-file و پیش از playback-restart است.
on_load_fail
پس از باز شدن ناموفق یک فایل فراخوانی می‌شود. این می‌تواند برای فراهم کردن یک راهکار جایگزین (fallback) در صورتی که demuxerهای بومی در شناسایی فایل ناموفق باشند به کار رود، به جای این‌که مانند on_load همیشه پیش از demuxerهای بومی اجرا شود. عمل demux تنها در صورتی دوباره تلاش خواهد شد که stream-open-filename تغییر کرده باشد. اگر دوباره با شکست مواجه شود، این قلاب مجدداً فراخوانی نمی‌شود و بارگذاری قطعاً ناموفق خواهد بود.
ترتیب اجرا پس از on_load، و پیش از playback-restart و end-file است.
on_preloaded
پس از باز شدن فایل، و پیش از انتخاب قطعه‌ها (tracks) و ایجاد رمزگشاها (decoders) فراخوانی می‌شود. این امر در صورتی کاربرد دارد که کاربر API بخواهد قطعه‌ها را به صورت دستی و بر اساس مجموعهٔ قطعه‌های موجود انتخاب کند. همچنین برای مقداردهی اولیهٔ --lavfi-complex به روشی خاص از طریق API، بدون نیاز به کاوش اولیهٔ ("probe") استریم‌های موجود مفید است.
توجه داشته باشید که این قلاب هنوز انتخاب پیش‌فرض قطعه را اعمال نمی‌کند. این‌که دقیقاً چه عملیاتی مجاز یا غیرمجاز است، و چه اطلاعاتی در دسترس بوده یا هنوز در دسترس نیست، همگی ممکن است تغییر کنند.
ترتیب اجرا پس از on_load_fail و غیره، و پیش از playback-restart است.
on_unload
پیش از بستن یک فایل، و قبل از این‌که عملاً همه‌چیز از مقداردهی خارج شود اجرا می‌شود. در این وضعیت، از سرگیری پخش امکان‌پذیر نیست.
ترتیب اجرا پیش از end-file است. در حالت بروز خطا نیز رخ خواهد داد (در آن حالت پس از on_load_fail).
on_before_start_file
پیش از ارسال یک رویداد start-file اجرا می‌شود. (اگر کلاینتی ورودی کنونی در لیست‌پخش را تغییر دهد، یا دستور خروج به پخش‌کننده بفرستد، رویداد مربوطه پس از بازگشت قلاب عملاً رخ نخواهد داد.) برای تخلیه و دریافت تغییرات ویژگی‌ها پیش از بارگذاری فایل جدید مفید است.
on_after_end_file
پس از یک رویداد end-file اجرا می‌شود. برای تخلیه و دریافت تغییرات ویژگی‌ها پس از پایان یک فایل مفید است.
این پیشوندها بین نام کلید و دستور واقعی قرار می‌گیرند. می‌توان چندین
پیشوند را مشخص کرد. آن‌ها با فاصله (whitespace) از یکدیگر جدا می‌شوند.
0.0
osd-auto
استفاده از رفتار پیش‌فرض برای این دستور. این مورد پیش‌فرض برای دستورات
input.conf است. برخی از APIهای libmpv/اسکریپت‌نویسی/IPC از این مقدار به عنوان
پیش‌فرض استفاده نمی‌کنند، بلکه در عوض از no-osd استفاده می‌کنند.
no-osd
عدم استفاده از هیچ OSD برای این دستور.
osd-bar
در صورت امکان، نمایش یک نوار همراه با این دستور. دستورات پرش (seek) نوار
پیشرفت را نشان خواهند داد و دستورات تغییر ویژگی ممکن است مقدار جدیداً تنظیم‌شده را نشان دهند.
osd-msg
در صورت امکان، نمایش یک پیام OSD همراه با این دستور. دستورات پرش (seek)
زمان فعلی پخش را نشان می‌دهند و دستورات تغییر ویژگی، مقدار جدیداً تنظیم‌شده
را به صورت متنی نشان می‌دهند.
osd-msg-bar
ترکیب osd-bar و osd-msg.
raw
عدم بسط ویژگی‌ها در آرگومان‌های رشته‌ای. (مانند "${property-name}".)
این مورد برای برخی از APIهای libmpv/اسکریپت‌نویسی/IPC پیش‌فرض است.
expand-properties
تمام آرگومان‌های رشته‌ای همان‌طور که در Property Expansion شرح داده شده بسط می‌یابند.
این مورد پیش‌فرض برای دستورات input.conf است.
repeatable
برای برخی از دستورات، نگه داشتن یک کلید فشرده‌شده باعث اجرای مکرر دستور نمی‌شود.
این پیشوند فعال بودن تکرار کلید را در هر حالتی اجبار می‌کند. برای فهرستی از دستورات:
اولین دستور، قابلیت تکرار کل فهرست را تعیین می‌کند (تا نسخهٔ 0.33 و خود آن
- یک فهرست همیشه قابل تکرار بود).
nonrepeatable
برای برخی از دستورات، نگه داشتن یک کلید فشرده‌شده باعث اجرای مکرر دستور می‌شود.
این پیشوند غیرفعال کردن تکرار کلید را در هر حالتی اجبار می‌کند.
nonscalable
هنگامی که برخی دستورات (مانند add) به کلیدهای مقیاس‌پذیر مرتبط با یک
دستگاه ورودی با دقت بالا مانند تاچ‌پد (مانند WHEEL_UP) متصل شده‌اند، مقدار
مشخص‌شده در دستور بر اساس داده‌های ورودی با وضوح بالا (در صورت موجود بودن)
به گام‌های کوچک‌تر مقیاس‌بندی می‌شود.
این پیشوند غیرفعال کردن این رفتار را اجبار می‌کند، بنابراین مقدار همیشه
در واحد گسستهٔ مشخص‌شده در انتساب کلید تغییر می‌کند.
async
اجازه به اجرای ناهمگام (در صورت امکان). توجه داشته باشید که تنها چند دستور
از این مورد پشتیبانی می‌کنند (معمولاً این موضوع صراحتاً مستند شده است). برخی دستورات
به‌طور پیش‌فرض ناهمگام هستند (یا به عبارت دیگر، اثرات آن‌ها ممکن است پس از
اتمام دستور نمایان شود). معناشناسی این پرچم ممکن است در آینده تغییر کند.
تنها در صورتی آن را تنظیم کنید که بر تحقق کامل اثرات این دستور هنگام
بازگشت آن اتکا نکرده باشید. بخش Synchronous vs. Asynchronous را ببینید.
sync
اجازه به اجرای همگام (در صورت امکان). معمولاً همهٔ دستورات به‌طور پیش‌فرض
همگام هستند، اما برخی از آن‌ها جهت سازگاری با رفتارهای قدیمی‌تر به‌طور
پیش‌فرض ناهمگام می‌باشند.
168u
همهٔ پیشوندهای osd همچنان توسط تنظیمات سراسری --osd-level
بازنویسی می‌شوند.
همگام در برابر ناهمگام (Synchronous vs. Asynchronous)
پیشوندهای async و sync تنها برای چگونگی انتظار صادرکنندهٔ دستور
جهت تکمیل آن اهمیت دارند. این موضوع معمولاً بر چگونگی رفتار خود دستور
تأثیری ندارد. موارد زیر وجود دارد:
0.0
• 2
دستورات عادی input.conf همیشه به‌صورت ناهمگام اجرا می‌شوند. دستوراتی که اجرای
طولانی دارند در صف قرار می‌گیرند یا به‌صورت موازی اجرا می‌شوند.
• 2
دستورات چندگانهٔ ("Multi") در input.conf (۱ انتساب کلید که با ; زنجیر شده‌اند)
به ترتیب اجرا خواهند شد، به جز دستوراتی که ناهمگام هستند (خواه با پیشوند
async مشخص شده باشند، یا برای برخی دستورات به‌طور پیش‌فرض ناهمگام باشند). دستورات
ناهمگام به‌صورت تفکیک‌شده (detached) و احتمالاً هم‌زمان با باقی دستورات همگام
فهرست اجرا می‌شوند.
• 2
دستورات عادی Lua و libmpv (مانند mpv_command()) به‌صورت انسدادی (blocking)
اجرا می‌شوند، مگر اینکه از پیشوند async استفاده شود یا دستور به‌طور پیش‌فرض
ناهمگام باشد. این بدان معناست که در حالت همگام، فراخواننده مسدود خواهد شد،
حتی اگر هسته به پخش ادامه دهد. حالت ناهمگام، دستور را به‌صورت تفکیک‌شده اجرا می‌کند.
• 2
رابط‌های ناهمگام دستور libmpv (مانند mpv_command_async()) هرگز فراخواننده را
مسدود نمی‌کنند و همیشه تکمیل خود را با یک پیام اطلاع می‌دهند. پیشوندهای sync و
async هیچ تفاوتی ایجاد نمی‌کنند.
• 2
زبان Lua نیز APIهایی را برای اجرای دستورات ناهمگام فراهم می‌کند که رفتاری
مشابه همتایان C خود دارند.
• 2
در تمام موارد، حالت ناهمگام همچنان می‌تواند دستورات را به شیوه‌ای همگام اجرا کند،
حتی در حالت تفکیک‌شده. این حالت مثلاً زمانی می‌تواند رخ دهد که یک دستور پیاده‌سازی
ناهمگام نداشته باشد. رابط ناهمگام libmpv در این موارد نیز هرگز فراخواننده را
مسدود نمی‌کند.
168u
قبل از نسخهٔ mpv 0.29.0، پیشوند async تنها توسط دستورات screenshot استفاده می‌شد
و باعث می‌شد کد ذخیره‌سازی فایل به‌صورت تفکیک‌شده اجرا شود. اکنون این رفتار
پیش‌فرض است، و async تنها به روش‌های ذکرشده در بالا رفتار را تغییر می‌دهد.
در حال حاضر دستورات زیر دارای ویژگی‌های انتظار متفاوتی در حالت همگام در برابر
ناهمگام هستند: sub-add، audio-add، sub-reload، audio-reload،
rescan-external-files، screenshot، screenshot-to-file، dump-cache،
ab-loop-dump-cache..SS "جزئیات دستورهای ناهمگام (Asynchronous command details)"
در سطح API، هر دستور ناهمگام (asynchronous) به زمینه‌ای که آن را آغاز کرده
مقید است. برای نمونه، یک دستور ناهمگام که توسط mpv_command_async
آغاز شده است، به mpv_handle پاس‌داده‌شده به تابع مقید می‌شود. تنها
همین mpv_handle اعلان تکمیل (MPV_EVENT_COMMAND_REPLY) را دریافت
می‌کند، و فقط همین دستگیره می‌تواند دستوری را که همچنان در حال اجرا است مستقیماً
لغو کند. اگر mpv_handle نابود شود، هر دستور ناهمگام در حال اجرایی که
توسط آن آغاز شده باشد خاتمه می‌یابد.
رابط‌های برنامه‌نویسی اسکریپت و JSON IPC به هر اسکریپت/اتصال، mpv_handle
ضمنی و مستقل خودش را اختصاص می‌دهند.
اگر پخش‌کننده بسته شود، هسته ممکن است به خودی خود تمام دستورهای ناهمگام
معلق را لغو کند (مانند یک فراخوانی اجباری mpv_abort_async_command() برای
هر دستور معلق از طرف کاربر API). این امر هم‌زمان با ارسال MPV_EVENT_SHUTDOWN
رخ می‌دهد و هیچ راهی برای جلوگیری از آن وجود ندارد.
"بخش‌های ورودی (Input Sections)"
بخش‌های ورودی، مجموعه‌ای از مقیدسازی‌ها (bindings) را گروه‌بندی کرده و
آن‌ها را به‌طور هم‌زمان فعال یا غیرفعال می‌کنند. در input.conf، هر مقیدسازی
کلید به جای داشتن بخش‌های متنی صریح، به یک بخش ورودی منتسب می‌شود.
همچنین ببینید: دستورهای enable-section و disable-section.
مقیدسازی‌های از پیش تعریف‌شده:
0.0
default
مقیدسازی‌های بدون بخش ورودی، به‌طور ضمنی به این بخش اختصاص می‌یابند.
این بخش به صورت پیش‌فرض در طول پخش عادی فعال است.
encode
بخشی که در حالت رمزگذاری (encoding) فعال است. این بخش به صورت انحصاری
فعال می‌شود، به طوری که مقیدسازی‌های موجود در بخش‌های default نادیده
گرفته می‌شوند.
168u
"ویژگی‌ها (Properties)"
ویژگی‌ها برای تنظیم گزینه‌های mpv در زمان اجرا، یا برای دریافت اطلاعات
دلخواه به کار می‌روند. می‌توان آن‌ها را با دستورهای set/add/cycle
دستکاری کرد، و با show-text یا هر چیز دیگری که از بسط ویژگی (property expansion)
استفاده می‌کند، بازخوانی نمود. (بخش Property Expansion را ببینید.)
اگر به یک گزینه ارجاع داده شود، ویژگی معمولاً دقیقاً همان مقدارهای گزینه را
می‌پذیرد/برمی‌گرداند. در این موارد، ویژگی‌ها صرفاً راهی برای تغییر یک گزینه
در زمان اجرا هستند.
توجه داشته باشید که بسیاری از ویژگی‌ها هنگام راه‌اندازی در دسترس نیستند.
بخش Details on the script initialization and lifecycle را ببینید.
"فهرست ویژگی‌ها (Property list)"
نکته:
0.0
3.5
بیشتر گزینه‌ها را می‌توان در زمان اجرا از طریق ویژگی‌ها نیز تنظیم کرد. تنها کافی است
-- ابتدای نام گزینه را حذف کنید. این موارد در ادامه مستند نشده‌اند؛ به جای آن
بخش OPTIONS را ببینید. تنها ویژگی‌هایی که به عنوان گزینه‌ای با همان نام وجود ندارند،
یا رفتاری بسیار متفاوت از گزینه‌ها دارند در ادامه آورده شده‌اند.
ویژگی‌هایی که با (RW) مشخص شده‌اند قابل نوشتن هستند، در حالی که موارد فاقد آن
فقط‌خواندنی (read-only) می‌باشند.
168u
168u
0.0
audio-speed-correction, video-speed-correction
ضریبی که در speed ضرب می‌شود و پخش‌کننده تلاش می‌کند فایل را با آن سرعت
پخش کند. معمولاً این ضریب دقیقاً ۱ است. (حالت همگام‌سازی نمایشگر این ویژگی را
کاربردی می‌کند.)
قالب‌بندی OSD آن را به شکل +1.23456% نمایش می‌دهد، که در آن عدد برای
مقدار خام مشخص‌شده ویژگی برابر با (raw - 1) * 100 است.
display-sync-active
اینکه آیا --video-sync=display واقعاً فعال است یا خیر.
filename
فایلی که در حال حاضر پخش می‌شود، بدون مسیر. اگر این مقدار یک URL باشد،
تلاش می‌کند کدگذاری درصدی (percent encoding) را نیز واگردانی کند. (نتیجه
لزوماً دقیق نیست، اما برای مقاصد نمایشی بهتر به نظر می‌رسد. برای دریافت
نام فایل دست‌نخورده از ویژگی path استفاده کنید.)
این ویژگی دارای یک زیرویژگی است:
7.0
filename/no-ext
مانند ویژگی filename، اما اگر متن شامل یک . باشد، تمام متن
پس از آخرین . را حذف می‌کند. معمولاً این کار پسوند فایل را حذف می‌کند.
168u
file-size
اندازه فایل/جریان مبدا بر حسب بایت. (این مقدار مشابه ${stream-end}
است. برای فایل‌های قطعه‌بندی‌شده/چندبخشی، اندازه فایل اصلی یا فایل مانیفست
را برمی‌گرداند.)
estimated-frame-count
تعداد کل فریم‌ها در فایل جاری.
نکته:
7.0
3.5
این مقدار فقط یک برآورد است. (از دو کمیت غیرقابل‌اطمینان محاسبه می‌شود:
fps و طول جریان.)
168u
168u
estimated-frame-number
شماره فریم جاری در جریان فعلی.
نکته:
7.0
3.5
این مقدار فقط یک برآورد است. (از دو کمیت غیرقابل‌اطمینان محاسبه می‌شود:
fps و برچسب‌های زمانی احتمالاً گرد شده.)
168u
168u
pid
شناسه فرایند (Process-id) برنامه mpv.
path
مسیر کامل و مطلق فایلی که در حال حاضر پخش می‌شود.
stream-open-filename
مسیر کامل به رسانه‌ای که در حال حاضر پخش می‌شود. این ویژگی تنها در موارد
خاصی با path متفاوت است. به‌ویژه، اگر --ytdl=yes استفاده شود و URL
توسط youtube-dl شناسایی گردد، اسکریپت این ویژگی را برابر با URL واقعی رسانه
تنظیم می‌کند. این ویژگی تنها باید در قلاب‌های on_load یا on_load_fail
تنظیم شود، در غیر این صورت تاثیری نخواهد داشت (یا ممکن است در آینده رفتاری
وابسته به پیاده‌سازی داشته باشد). در صورت پایان پخش رسانه جاری، این ویژگی
بازنشانی می‌شود.
media-title
اگر فایل در حال پخش دارای برچسب title باشد، از آن استفاده می‌کند.
در غیر این صورت، ویژگی filename را برمی‌گرداند.
file-format
نام نمادین قالب (format) فایل. در برخی موارد، این یک فهرست جداشده با کاما
از نام‌های قالب است، برای نمونه mp4 به صورت mov,mp4,m4a,3gp,3g2,mj2
است (این فهرست ممکن است در آینده برای هر قالبی گسترش یابد).
current-demuxer
نام demuxer فعلی. (این ویژگی کاربردی ندارد.)
(تغییر نام‌یافته از demuxer.)
stream-path
نام فایل (مسیر کامل) لایه جریان (stream layer). (این ویژگی احتمالاً کاربردی
ندارد و تقریباً هیچ‌گاه با path تفاوتی ندارد.)
stream-pos
موقعیت بایتی خام در جریان مبدا. از نظر فنی، این مقدار موقعیت آخرین بسته‌ای
را برمی‌گرداند که به یک رمزگشا (decoder) تحویل داده شده است.
stream-end
موقعیت پایانی خام بر حسب بایت در جریان مبدا.
duration
مدت زمان فایل جاری بر حسب ثانیه. اگر مدت زمان ناشناخته باشد، این ویژگی در
دسترس نیست. توجه داشته باشید که مدت زمان فایل همیشه به طور دقیق مشخص
نیست، بنابراین این یک مقدار برآوردی است.
این ویژگی جایگزین ویژگی length شده است که پس از نسخه mpv 0.9 منسوخ
شد. (معنای آن‌ها یکسان است.)
این ویژگی دارای یک زیرویژگی است:
7.0
duration/full
duration همراه با میلی‌ثانیه.
168u
avsync
آخرین اختلاف همگام‌سازی صدا/تصویر (A/V). در صورت غیرفعال بودن صدا یا
تصویر، در دسترس نیست.
total-avsync-change
مجموع تصحیح انجام‌شده برای همگام‌سازی صدا/تصویر. در صورت غیرفعال بودن
صدا یا تصویر، در دسترس نیست.
decoder-frame-drop-count
فریم‌های ویدیویی کنار گذاشته‌شده توسط رمزگشا، به دلیل اینکه تصویر بیش از حد
از صدا عقب افتاده است (هنگام استفاده از --framedrop=decoder). گاهی اوقات
ممکن است این مقدار در شرایط دیگری نیز افزایش یابد، مثلاً زمانی که بسته‌های ویدیویی
آسیب دیده باشند، یا رمزگشا از قواعد معمول پیروی نکند. در صورت غیرفعال بودن ویدیو،
در دسترس نیست..TP
frame-drop-count
فریم‌های رهاشده توسط VO (هنگام استفاده از --framedrop=vo).
mistimed-frame-count
تعداد فریم‌های ویدیویی که در حالت display-sync برای حفظ هماهنگی صدا/تصویر (A/V sync) زمان‌بندی درستی نداشته‌اند. این شامل شرایط بیرونی مانند کندی بیش‌ازحد رندر ویدیو یا رد کردن vsync توسط راه‌انداز گرافیک نمی‌شود. همچنین خطاهای گرد کردن را نیز در بر نمی‌گیرد (که به ویژه با برچسب‌های زمانی نامناسب منبع ممکن است رخ دهد). برای مثال، استفاده از حالت display-desync هرگز نباید این مقدار را از 0 تغییر دهد.
vsync-ratio
میانگین تعداد vsyncهایی که یک فریم نمایش داده می‌شود. این ویژگی فقط در صورت فعال بودن display-sync در دسترس است. برای یک ویدیوی 30 FPS روی یک نمایشگر 60 Hz، این مقدار 2 خواهد بود. این مقدار میانگین متحرک چیزی است که واقعاً زمان‌بندی شده است، بنابراین 24 FPS روی 60 Hz هرگز دقیقاً روی 2.5 باقی نمی‌ماند، بلکه بسته به آخرین فریم نمایش‌داده‌شده نوسان (jitter) خواهد داشت.
vo-delayed-frame-count
تعداد تخمینی فریم‌های به تأخیر افتاده به دلیل شرایط بیرونی در حالت display-sync. توجه داشته باشید که به‌طور کلی، mpv باید وقوع این حالت را حدس بزند، و این حدس می‌تواند نادقیق باشد.
percent-pos (RW)
موقعیت در فایل فعلی (0-100). مزیت استفاده از این ویژگی به‌جای محاسبهٔ آن از سایر مشخصه‌ها این است که در صورت مشخص نبودن مدت‌زمان فایل، به‌درستی به تخمین موقعیت پخش از روی موقعیت بایت‌ها بازمی‌گردد.
time-pos (RW)
موقعیت در فایل فعلی بر حسب ثانیه.
این ویژگی یک زیرمشخصه دارد:
7.0
time-pos/full
time-pos به همراه میلی‌ثانیه.
168u
time-start
منسوخ شده است. همیشه 0 برمی‌گرداند. قبل از mpv 0.14، این ویژگی زمان شروع فایل را برمی‌گرداند (که می‌توانست به عنوان مثال روی جریان‌های ترابرد تأثیر بگذارد). گزینهٔ --rebase-start-time را ببینید.
time-remaining
مدت‌زمان باقی‌مانده از فایل بر حسب ثانیه. توجه داشته باشید که مدت‌زمان فایل همیشه دقیقاً مشخص نیست، بنابراین این یک تخمین است.
این ویژگی یک زیرمشخصه دارد:
7.0
time-remaining/full
time-remaining به همراه میلی‌ثانیه.
168u
audio-pts
موقعیت فعلی پخش صوت در فایل جاری بر حسب ثانیه. برخلاف time-pos، این مشخصه بیشتر از یک بار در هر فریم به‌روزرسانی می‌شود. این ویژگی برای فایل‌های فقط صوتی تا حد زیادی معادل time-pos است، با این حال تأخیر راه‌انداز صوتی را نیز در نظر می‌گیرد. این می‌تواند در موارد خاص به مقادیر منفی منجر شود، بنابراین به‌طور کلی احتمالاً ترجیح می‌دهید به سادگی از time-pos استفاده کنید.
این ویژگی یک زیرمشخصه دارد:
7.0
audio-pts/full
audio-pts به همراه میلی‌ثانیه.
168u
playtime-remaining
مقدار time-remaining مقیاس‌بندی‌شده با speed فعلی.
این ویژگی یک زیرمشخصه دارد:
7.0
playtime-remaining/full
playtime-remaining به همراه میلی‌ثانیه.
168u
playback-time (RW)
نام مستعاری برای time-pos.
پیش از mpv 0.39.0، ممکن بود time-pos و playback-time در شرایط خاص مقادیر متفاوتی را گزارش کنند.
این ویژگی یک زیرمشخصه دارد:
7.0
playback-time/full
playback-time به همراه میلی‌ثانیه.
168u
remaining-file-loops
تعداد دفعات باقی‌مانده‌ای که فایل فعلی قرار است تکرار (loop) شود. این مقدار از مقدار --loop-file مقداردهی اولیه می‌شود. این مشخصه تعداد دفعاتی را می‌شمارد که باعث پرش پخش‌کننده به ابتدای فایل می‌شود، بنابراین در آخرین باری که فایل پخش می‌شود مقدار آن 0 است. -1 متناظر با بی‌نهایت است.
remaining-ab-loops
تعداد دفعات باقی‌مانده‌ای که حلقهٔ A-B فعلی در صورت فعال بودن تکرار خواهد شد. این مقدار از مقدار --ab-loop-count مقداردهی اولیه می‌شود. این مشخصه تعداد دفعاتی را می‌شمارد که باعث پرش پخش‌کننده به --ab-loop-a می‌شود، بنابراین در آخرین باری که حلقه پخش می‌شود مقدار آن 0 است. -1 متناظر با بی‌نهایت است.
chapter (RW)
شمارهٔ فصل جاری. شمارهٔ فصل اول 0 است.
مقدار -1 نشان می‌دهد که موقعیت فعلی پخش پیش از شروع اولین فصل است،
تنظیم این ویژگی منجر به یک پرش (seek) مطلق به ابتدای فصل می‌شود. با این حال، اگر این ویژگی با دستور add یا cycle تغییر کند و منجر به کاهش مقدار شود، ممکن است به‌جای فصل قبلی به ابتدای فصل فعلی برود.
برای جزئیات --chapter-seek-threshold را ببینید.
edition (RW)
شمارهٔ ویرایش جاری. تنظیم این ویژگی به مقداری متفاوت باعث شروع مجدد پخش خواهد شد. شمارهٔ اولین ویرایش 0 است.
برای فایل‌های Matroska، این مورد همان ویرایش (edition) است. برای DVD/Blu-ray، این عنوان (title) است.
قبل از mpv 0.31.0، اگر گزینه یا ویژگی را به‌صورت دستی تنظیم نمی‌کردید، این مقدار ویرایش واقعی انتخاب‌شده در زمان اجرا را نشان می‌داد. از mpv 0.31.0 به بعد، این ویژگی دقیقاً مقدار گزینه یا ویژگی تنظیم‌شده توسط کاربر را برمی‌گرداند، و مشخصهٔ current-edition برای برگرداندن ویرایش انتخاب‌شده در زمان اجرا اضافه شد (این موضوع در --edition=auto که پیش‌فرض است اهمیت دارد).
current-edition
ویرایش انتخاب‌شده در حال حاضر. این ویژگی در صورتی که هیچ فایلی بارگذاری نشده باشد، یا فایل فاقد ویرایش باشد در دسترس نیست. (فایل‌های Matroska بین نداشتن ویرایش و داشتن یک ویرایش منفرد تفاوت قائل می‌شوند که توسط این ویژگی بازتاب داده خواهد شد، اگرچه در عمل تفاوتی ایجاد نمی‌کند.)
chapters
تعداد فصل‌ها.
editions
تعداد ویرایش‌ها.
edition-list
فهرست ویرایش‌ها، همراه با علامت‌گذاری ورودی جاری.
این ویژگی شامل تعدادی زیرمشخصه است. N را با شاخص ویرایش مبتنی بر 0 جایگزین کنید.
7.0
edition-list/count
تعداد ویرایش‌ها. اگر ویرایشی وجود نداشته باشد، این مقدار می‌تواند 0 یا 1 باشد (1 در صورتی که یک ویرایش ساختگی بلااستفاده وجود داشته باشد).
edition-list/N/id
شناسهٔ ویرایش به صورت عدد صحیح. در حال حاضر، این مقدار همان شاخص ویرایش است.
edition-list/N/default
آیا این ویرایش، ویرایش پیش‌فرض است یا خیر.
edition-list/N/title
عنوان ویرایش به شکلی که در فایل ذخیره شده است. همیشه در دسترس نیست.
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE، یا در Lua با mp.get_property_native، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each edition)
"id" MPV_FORMAT_INT64
"title" MPV_FORMAT_STRING
"default" MPV_FORMAT_FLAG
168u
168u
metadata
جفت‌های کلید/مقدار فراداده.
اگر این ویژگی با mp.get_property_native در Lua فراخوانی شود، یک جدول با کلیدهای فراداده که به مقادیر فراداده نگاشت شده‌اند برمی‌گرداند. اگر با API کلاینت فراخوانی شود، یک MPV_FORMAT_NODE_MAP بازمی‌گرداند که کلیدهای برچسب را به مقادیر برچسب نگاشت می‌کند..sp
برای OSD، یک فهرست قالب‌بندی‌شده بازمی‌گرداند. تلاش برای واکشی این ویژگی به عنوان یک رشتهٔ خام کار نمی‌کند.
این مورد دارای تعدادی زیرویژگی است:
7.0
metadata/by-key/<key>
مقدار مدخل فرادادهٔ <key>.
metadata/list/count
تعداد مدخل‌های فراداده.
metadata/list/N/key
نام کلید N‌اُمین مدخل فراداده. (نخستین مدخل 0 است).
metadata/list/N/value
مقدار N‌اُمین مدخل فراداده.
metadata/<key>
نسخهٔ قدیمی metadata/by-key/<key>. استفاده از آن توصیه نمی‌شود، زیرا رشتهٔ کلید فراداده ممکن است با سایر زیرویژگی‌ها تداخل داشته باشد.
168u
ساختار این ویژگی ممکن است دستخوش تغییر شود. از پیشنهادها دربارهٔ این‌که این ویژگی دقیقاً چگونه باید کار کند استقبال می‌شود.
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE، یا با mp.get_property_native در Lua، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_MAP
(key and string value for each metadata entry)
168u
168u
filtered-metadata
مانند metadata، اما فقط شامل فیلدهایی است که در گزینهٔ --display-tags فهرست شده‌اند. این همان مجموعه برچسب‌هایی است که در ترمینال چاپ می‌شود.
chapter-metadata
فرادادهٔ فصل جاری. مشابه با ویژگی metadata عمل می‌کند. همچنین روش‌های دسترسی یکسانی را (با استفاده از زیرویژگی‌ها) مجاز می‌داند.
فراداده برای هر فصل بسیار نادر است. معمولاً تنها عنوان فصل (title) تنظیم می‌شود.
برای دسترسی به اطلاعات دیگر، مانند زمان شروع فصل، ویژگی chapter-list را ببینید.
vf-metadata/<filter-label>
فرادادهٔ اضافه‌شده توسط فیلترهای ویدیو. دسترسی از طریق برچسب فیلتر انجام می‌شود، که اگر صراحتاً با استفاده از نحو @filter-label: مشخص نشده باشد، <filter-name>.NN خواهد بود.
مشابه با ویژگی metadata عمل می‌کند. روش‌های دسترسی یکسانی را (با استفاده از زیرویژگی‌ها) مجاز می‌داند.
یک نمونه از این نوع فراداده، پارامترهای برشی (cropping) هستند که توسط --vf=lavfi=cropdetect اضافه می‌شوند.
af-metadata/<filter-label>
معادل vf-metadata/<filter-label>، اما برای فیلترهای صوتی.
deinterlace-active
اگر فیلتر deinterlacing مربوط به mpv فعال باشد، مقدار yes/true را بازمی‌گرداند. توجه داشته باشید که هیچ‌یک از فیلترهای deinterlacing دستی اضافه‌شده از طریق --vf را شناسایی نخواهد کرد.
idle-active
اگر هیچ فایلی بارگذاری نشده باشد، اما پخش‌کننده به دلیل گزینهٔ --idle فعال بماند، مقدار yes/true را بازمی‌گرداند.
(تغییرنام‌یافته از idle.)
core-idle
مشخص می‌کند که آیا هستهٔ پخش متوقف (pause) شده است یا خیر. این مورد در شرایط خاص، مانند زمانی که پخش‌کننده خود را به دلیل کمبود کَش شبکه متوقف می‌کند، می‌تواند با pause تفاوت داشته باشد.
همچنین اگر پخش در حال راه‌اندازی مجدد باشد یا اگر اصلاً چیزی در حال پخش نباشد، مقدار yes/true را بازمی‌گرداند. به عبارت دیگر، تنها در صورتی no/false است که ویدیویی واقعاً در حال پخش باشد. (رفتار از mpv 0.7.0 به بعد.)
cache-speed
سرعت خواندن I/O فعلی بین کَش و لایهٔ پایین‌تر (مانند شبکه). این ویژگی تعداد بایت‌ها در ثانیه را در یک بازهٔ زمانی ۱ ثانیه‌ای ارائه می‌دهد (با استفاده از نوع MPV_FORMAT_INT64 برای API کلاینت).
این معادل با demuxer-cache-state/raw-input-rate است.
demuxer-cache-duration
مدت‌زمان تقریبی ویدیوی بافرشده در demuxer، بر حسب ثانیه. این تخمین بسیار غیرقابل اعتماد است و اغلب این ویژگی اصلاً در دسترس نخواهد بود، حتی اگر داده‌ها بافر شده باشند.
demuxer-cache-time
زمان تقریبی ویدیوی بافرشده در demuxer، بر حسب ثانیه. مشابه با demuxer-cache-duration است، اما آخرین برچسب زمانی داده‌های بافرشده در demuxer را بازمی‌گرداند.
demuxer-cache-idle
مشخص می‌کند که آیا demuxer بیکار است یا خیر، به این معنی که کَش demuxer به مقدار درخواستی پر شده است و در حال حاضر دادهٔ بیشتری نمی‌خواند.
demuxer-cache-state
هر مدخل در seekable-ranges نشان‌دهندهٔ ناحیه‌ای در کَش demuxer است که می‌توان به آن پرش (seek) کرد، همراه با فیلدهای start و end که شامل برچسب‌های زمانی مربوطه هستند. اگر چندین demuxer فعال باشند، این ویژگی تنها اطلاعات مربوط به demuxer «اصلی» را بازمی‌گرداند، اما ممکن است در آینده تغییر کند تا اطلاعات یکپارچه‌ای دربارهٔ همهٔ demuxerها برگرداند. این محدوده‌ها دارای ترتیب دلخواهی هستند. اغلب، محدوده‌ها پیش از پیوستن به یکدیگر، کمی با هم همپوشانی دارند. در موارد خاص و آسیب‌دیده، ممکن است محدوده‌ها در همه‌جا با یکدیگر همپوشانی داشته باشند.
پایان یک محدودهٔ پرش معمولاً کوچک‌تر از مقدار بازگردانده‌شده توسط ویژگی demuxer-cache-time است، زیرا آن ویژگی مقدار بافر تخمینی را برمی‌گرداند، در حالی که محدوده‌های پرش نشان‌دهندهٔ داده‌های بافرشده‌ای هستند که واقعاً می‌توانند برای پرش‌های کَش‌شده استفاده شوند.
bof-cached مشخص می‌کند که آیا محدودهٔ پرش با کمترین برچسب زمانی به ابتدای جریان (BOF) اشاره دارد یا خیر. این نشان می‌دهد که اصلاً نمی‌توانید به قبل از این موقعیت پرش کنید. eof-cached مشخص می‌کند که آیا محدودهٔ پرش با بیشترین برچسب زمانی به انتهای جریان (EOF) اشاره دارد یا خیر. اگر هر دو مقدار bof-cached و eof-cached برابر با true باشند و تنها ۱ محدودهٔ کَش وجود داشته باشد، کل جریان کَش شده است.
fw-bytes تعداد بایت‌های بسته‌های بافرشده در محدوده‌ای است که از موقعیت رمزگشایی فعلی شروع می‌شود. این یک برآورد تقریبی است (ممکن است سربارهای گوناگون را به‌درستی محاسبه نکند) و در موقعیت demuxer متوقف می‌شود (محدوده‌های پرش بعد از آن را نادیده می‌گیرد).
file-cache-bytes تعداد بایت‌های ذخیره‌شده در کَش فایل است. این مقدار شامل تمام سربارها و احتمالاً داده‌های استفاده‌نشده (مانند داده‌های هرس‌شده) می‌شود. اگر کَش فایل با --cache-on-disk=yes فعال نشده باشد، این عضو وجود نخواهد داشت.
cache-end همان demuxer-cache-time است. در صورت عدم دسترسی وجود نخواهد داشت.
reader-pts برچسب زمانی تقریبی شروع محدودهٔ بافرشده است. در صورت عدم دسترسی وجود نخواهد داشت.
cache-duration همان demuxer-cache-duration است. در صورت عدم دسترسی وجود نخواهد داشت.
raw-input-rate نرخ ورودی تخمینی لایهٔ شبکه (یا هر لایهٔ ورودی بایتمحور دیگر) بر حسب بایت بر ثانیه است. ممکن است نامعین باشد یا وجود نداشته باشد.
ts-per-stream آرایه‌ای شامل یک مدخل برای هر نوع جریان است: ویدیو، صدا، و زیرنویس. برای هر نوع جریان، جزئیات کَش demuxer برای آن نوع جریان به صورت cache-duration، reader-pts و cache-end در دسترس است.
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE، یا با mp.get_property_native در Lua، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_MAP
"seekable-ranges" MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP
"start" MPV_FORMAT_DOUBLE
"end" MPV_FORMAT_DOUBLE
"bof-cached" MPV_FORMAT_FLAG
"eof-cached" MPV_FORMAT_FLAG
"fw-bytes" MPV_FORMAT_INT64
"file-cache-bytes" MPV_FORMAT_INT64
"cache-end" MPV_FORMAT_DOUBLE
"reader-pts" MPV_FORMAT_DOUBLE
"cache-duration" MPV_FORMAT_DOUBLE
"raw-input-rate" MPV_FORMAT_INT64
"ts-per-stream" MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP
"type" MPV_FORMAT_STRING
"cache-duration" MPV_FORMAT_DOUBLE
"reader-pts" MPV_FORMAT_DOUBLE
"cache-end" MPV_FORMAT_DOUBLE
168u
سایر فیلدها (ممکن است در آینده تغییر کرده یا حذف شوند):
7.0
eof
آیا رشتهٔ خواننده (reader thread) به پایان فایل رسیده است یا خیر.
underrun
آیا رشتهٔ خواننده نتوانسته است درخواست رمزگشا (decoder) را برای یک بستهٔ
جدید برآورده کند یا خیر.
idle
آیا این رشته در حال حاضر مشغول خواندن نیست یا خیر.
total-bytes
مجموع بایت‌های بسته (به‌علاوه مقداری تخمین سربار) کل صف بسته‌ها،
شامل محدوده‌های قابل جستجو (seekable) در حافظهٔ موقت (cache).
168u
demuxer-via-network
آیا جریانی که از طریق تفکیک‌کنندهٔ (demuxer) اصلی تفکیک شده است، به احتمال زیاد از
طریق شبکه پخش می‌شود یا خیر. اینکه چه چیزی "شبکه" تلقی می‌شود همیشه مشخص نیست،
ممکن است برای انواع دیگری از جریان‌های نامعتمد استفاده شود، می‌تواند در برخی موارد نادرست باشد،
و تعریف آن ممکن است دستخوش تغییر شود. همچنین، فایل‌های خارجی (مانند فایل‌ها یا
جریان‌های صوتی جداگانه) روی مقدار این ویژگی تأثیری ندارند (در حال حاضر).
demuxer-start-time
زمان شروع گزارش‌شده توسط demuxer به کسر ثانیه.
paused-for-cache
آیا پخش به دلیل انتظار برای حافظهٔ موقت (cache) مکث شده است یا خیر.
cache-buffering-state
درصد (۰-۱۰۰) وضعیت پر شدن حافظهٔ موقت تا زمانی که پخش‌کننده از
حالت مکث خارج شود (مرتبط با paused-for-cache).
eof-reached
آیا پایان پخش فرا رسیده است یا خیر. توجه داشته باشید که این ویژگی معمولاً
تنها زمانی سودمند است که --keep-open فعال باشد، زیرا در غیر این صورت پخش‌کننده
بلافاصله فایل بعدی را پخش خواهد کرد (یا خارج می‌شود یا وارد حالت idle می‌شود)، و در
این موارد ویژگی eof-reached منطقاً بلافاصله پس از مقداردهی شدن، پاک
خواهد شد.
seeking
آیا پخش‌کننده در حال حاضر در حال جستجو (seeking) است، یا به نحوی در تلاش برای شروع مجدد
پخش است. (این احتمال وجود دارد که در حین بارگذاری یک فایل مقدار yes/true را
برگرداند. این به این دلیل است که از همان کد زیرین برای جستجو و
همگام‌سازی مجدد استفاده می‌شود.)
mixer-active
آیا میکسر صوتی فعال است یا خیر.
این گزینه نسبتاً بی‌فایده است. پیش از mpv 0.18.1، می‌توانست برای
استنباط رفتار ویژگی volume استفاده شود.
ao-volume (RW)
حجم صدای سیستم. این ویژگی تنها در صورتی در دسترس است که خروجی صوتی mpv
در حال حاضر فعال باشد، و تنها در صورتی که پیاده‌سازی زیرین از کنترل حجم صدا
پشتیبانی کند. اینکه این گزینه چه می‌کند، یا مقدار آن چگونه تفسیر می‌شود، به
API بستگی دارد. برای مثال، در ALSA معمولاً حجم صدای سراسری سیستم را
روی یک منحنی خطی تغییر می‌دهد، در حالی که در PulseAudio حجم صدای هر برنامه را
روی یک منحنی درجه سه (cubic) کنترل می‌کند.
ao-mute (RW)
مشابه ao-volume، اما وضعیت بی‌صدا (mute) را کنترل می‌کند. ممکن است حتی در صورت
کار کردن ao-volume نیز پیاده‌سازی نشده باشد.
audio-params
قالب صوتی تولیدشده به عنوان خروجی رمزگشای صوتی.
این ویژگی چندین زیرویژگی دارد:
7.0
audio-params/format
قالب نمونه (sample format) به صورت یک رشته. این مقدار از همان نام‌هایی استفاده می‌کند که در سایر
بخش‌های mpv استفاده شده است.
audio-params/samplerate
نرخ نمونه‌برداری (Samplerate).
audio-params/channels
چینش کانال‌ها (channel layout) به صورت یک رشته. این مقدار مشابه چیزی است که
--audio-channels می‌پذیرد.
audio-params/hr-channels
مشابه channels، اما به جای چینش واقعی و احتمالاً مبهمی که به دستگاه صوتی
ارسال می‌شود، شکلی خواناتر برای انسان برمی‌گرداند.
(معمولاً تنها audio-out-params/hr-channels کاربرد دارد.)
audio-params/channel-count
تعداد کانال‌های صوتی. این فیلد تکراری از فیلد channels است که در
بالا شرح داده شد.
168u
هنگام پرس‌وجوی این ویژگی از طریق API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با mp.get_property_native در Lua، یک mpv_node با
محتویات زیر برگردانده خواهد شد:
7.0
3.5
MPV_FORMAT_NODE_MAP
"format" MPV_FORMAT_STRING
"samplerate" MPV_FORMAT_INT64
"channels" MPV_FORMAT_STRING
"channel-count" MPV_FORMAT_INT64
"hr-channels" MPV_FORMAT_STRING
168u
168u
audio-out-params
مشابه audio-params، اما برای قالب داده‌های نوشته‌شده در API صوتی.
colormatrix
به video-params/colormatrix هدایت می‌شود. این پارامتر (و همچنین
موارد مشابه) را می‌توان با فیلتر ویدیویی format بازنویسی (override) کرد.
colormatrix-input-range
به colormatrix مراجعه کنید.
colormatrix-primaries
به colormatrix مراجعه کنید.
hwdec (RW)
منعکس‌کنندهٔ گزینهٔ --hwdec است.
نوشتن در آن ممکن است در صورت امکان، رمزگشای سخت‌افزاری فعلیِ در حال استفاده را تغییر دهد.
(در داخل برنامه، پخش‌کننده ممکن است رمزگشا را مجدداً مقداردهی اولیه کرده و برای نوسازی
مناسب ویدیو یک عمل جستجو (seek) انجام دهد.) می‌توانید سایر ویژگی‌های hwdec را
زیر نظر بگیرید تا ببینید آیا این کار موفقیت‌آمیز بوده است یا خیر.
برخلاف mpv نسخهٔ 0.9.x و پیش از آن، این گزینه رمزگشای سخت‌افزاری فعال فعلی را برنمی‌گرداند.
از mpv نسخهٔ 0.18.0، ویژگی hwdec-current برای این منظور در دسترس است.
hwdec-current
رمزگشایی سخت‌افزاری فعلیِ در حال استفاده. اگر رمزگشایی فعال باشد، یکی از
مقادیر استفاده‌شده توسط گزینه/ویژگی hwdec را برمی‌گرداند. مقدار no نشان‌دهندهٔ
رمزگشایی نرم‌افزاری است. اگر هیچ رمزگشایی بارگذاری نشده باشد، این ویژگی در دسترس نیست.
hwdec-interop
این ویژگی راه‌انداز تعامل‌پذیری (interop driver) خروجی/رمزگشایی سخت‌افزاری بارگذاری‌شدهٔ فعلی را برمی‌گرداند.
این مقدار تنها پس از باز شدن VO (و احتمالاً دیرتر) مشخص می‌شود. در برخی از
VOها (مانند gpu)، این مقدار ممکن است هرگز از قبل مشخص نباشد، بلکه تنها زمانی مشخص شود
که رمزگشا با موفقیت سعی در ایجاد رمزگشای سخت‌افزاری کند. (استفاده از
--gpu-hwdec-interop می‌تواند آن را مشتاقانه بارگذاری کند.) اگر چندین
راه‌انداز بارگذاری شده باشند، با , از یکدیگر جدا خواهند شد.
اگر هیچ VO فعالی وجود نداشته باشد یا راه‌انداز تعامل‌پذیری شناخته نشده باشد، این ویژگی
در دسترس نخواهد بود.
این ویژگی لزوماً از همان مقادیر hwdec استفاده نمی‌کند. بسته به
پلتفرم و VO، ممکن است چندین راه‌انداز تعامل‌پذیری برای یک رمزگشای سخت‌افزاری یکسان وجود داشته باشد.
width, height
اندازهٔ ویدیو. این ویژگی از اندازهٔ ویدیوی رمزگشایی‌شده، یا در صورتی که هنوز هیچ فریم
ویدیویی رمزگشایی نشده باشد، از اندازهٔ مشخص‌شده در کانتینر (که احتمالاً نادرست است)
استفاده می‌کند.
video-params
پارامترهای ویدیو، به عنوان خروجی تولیدشده توسط رمزگشا (با اعمال بازنویسی‌هایی مانند
نسبت تصویر و غیره). این ویژگی چندین زیرویژگی دارد:
7.0
video-params/pixelformat
قالب پیکسل (pixel format) به صورت یک رشته. این مقدار از همان نام‌هایی استفاده می‌کند که در سایر
بخش‌های mpv استفاده شده است.
video-params/hw-pixelformat
قالب پیکسل زیرین به صورت یک رشته. این مقدار برای برخی موارد
رمزگشایی سخت‌افزاری مرتبط است و در غیر این صورت در دسترس نیست.
video-params/average-bpp
میانگین بیت بر پیکسل (bits-per-pixel) به صورت یک عدد صحیح. قالب‌های صفحه‌ای فرونمونه‌شده (subsampled planar) از
تفکیک‌پذیری متفاوتی استفاده می‌کنند، که دلیل آن است که این مقدار گاهی اوقات ممکن است
عجیب یا گیج‌کننده باشد. در برخی قالب‌ها می‌تواند در دسترس نباشد.
video-params/w, video-params/h
اندازهٔ ویدیو به صورت اعداد صحیح، بدون اعمال هیچ‌گونه اصلاح نسبت تصویر..TP
video-params/dw, video-params/dh
اندازه ویدیو به صورت اعداد صحیح، مقیاس‌بندی‌شده برای نسبت ابعاد صحیح.
video-params/crop-x, video-params/crop-y
آفست برش فریم ویدیوی منبع.
video-params/crop-w, video-params/crop-h
اندازه ویدیو پس از برش.
video-params/aspect
نسبت ابعاد نمایش به صورت عدد اعشاری مضاعف (double).
video-params/aspect-name
نام نسبت ابعاد نمایش به صورت رشته. این نام متناظر با قالب فیلم سینمایی است که نسبت ابعاد داده‌شده را به سینما معرفی کرد.
video-params/par
نسبت ابعاد پیکسل.
video-params/sar
نسبت ابعاد ذخیره‌سازی.
video-params/sar-name
نام نسبت ابعاد ذخیره‌سازی به صورت رشته.
video-params/colormatrix
ماتریس رنگ در حال استفاده به صورت رشته. (مقادیر دقیق ممکن است تغییر کنند.)
video-params/colorlevels
سطوح رنگ به صورت رشته. (مقادیر دقیق ممکن است تغییر کنند.)
video-params/primaries
رنگ‌های اولیه در حال استفاده به صورت رشته. (مقادیر دقیق ممکن است تغییر کنند.)
video-params/gamma
تابع گامای در حال استفاده به صورت رشته. (مقادیر دقیق ممکن است تغییر کنند.)
video-params/sig-peak (منسوخ‌شده)
اوج سیگنال برچسب‌خورده فایل ویدیو به صورت عدد اعشاری شناور (float).
video-params/light
نوع نور در حال استفاده به صورت رشته. (مقادیر دقیق ممکن است تغییر کنند.)
video-params/chroma-location
موقعیت کروما به صورت رشته. (مقادیر دقیق ممکن است تغییر کنند.)
video-params/rotate
چرخش در نظر گرفته‌شده برای نمایش بر حسب درجه (در جهت عقربه‌های ساعت).
video-params/stereo-in
حالت سه‌بعدی استریوی فایل منبع. (گزینه stereo-in از فیلتر ویدیویی format را ببینید.)
video-params/alpha
نوع آلفا. اگر قالب فاقد کانال آلفا باشد، این مقدار در دسترس نخواهد بود (اما در نسخه‌های آینده ممکن است به no تغییر یابد). در صورت وجود آلفا، این مقدار روی straight یا premul تنظیم می‌شود.
video-params/min-luma
حداقل درخشندگی، گزارش‌شده توسط متادیتای HDR10 (بر حسب cd/m²)
video-params/max-luma
حداکثر درخشندگی، گزارش‌شده توسط متادیتای HDR10 (بر حسب cd/m²)
video-params/max-cll
حداکثر سطح روشنایی محتوا، گزارش‌شده توسط متادیتای HDR10 (بر حسب cd/m²)
video-params/max-fall
حداکثر میانگین سطح روشنایی فریم، گزارش‌شده توسط متادیتای HDR10 (بر حسب cd/m²)
video-params/scene-max-r
مقدار MaxRGB یک صحنه برای مؤلفه R، گزارش‌شده توسط متادیتای HDR10+ (بر حسب cd/m²)
video-params/scene-max-g
مقدار MaxRGB یک صحنه برای مؤلفه G، گزارش‌شده توسط متادیتای HDR10+ (بر حسب cd/m²)
video-params/scene-max-b
مقدار MaxRGB یک صحنه برای مؤلفه B، گزارش‌شده توسط متادیتای HDR10+ (بر حسب cd/m²)
video-params/max-pq-y
حداکثر درخشندگی PQ یک فریم، گزارش‌شده توسط تشخیص اوج (بر حسب PQ، بین 0-1)
video-params/avg-pq-y
میانگین درخشندگی PQ یک فریم، گزارش‌شده توسط تشخیص اوج (بر حسب PQ، بین 0-1)
video-params/prim-red-x، video-params/prim-red-y
مختصات فام‌داری رنگ اولیه قرمز، تنها در صورتی در دسترس است که با video-params/primaries تفاوت داشته باشد
video-params/prim-green-x، video-params/prim-green-y
مختصات فام‌داری رنگ اولیه سبز، تنها در صورتی در دسترس است که با video-params/primaries تفاوت داشته باشد
video-params/prim-blue-x، video-params/prim-blue-y
مختصات فام‌داری رنگ اولیه آبی، تنها در صورتی در دسترس است که با video-params/primaries تفاوت داشته باشد
video-params/prim-white-x، video-params/prim-white-y
مختصات فام‌داری نقطه سفید، تنها در صورتی در دسترس است که با video-params/primaries تفاوت داشته باشد
168u
هنگام پرس‌وجوی این ویژگی از طریق API کلاینت با استفاده از MPV_FORMAT_NODE یا با mp.get_property_native در Lua، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_MAP
"pixelformat" MPV_FORMAT_STRING
"hw-pixelformat" MPV_FORMAT_STRING
"w" MPV_FORMAT_INT64
"h" MPV_FORMAT_INT64
"dw" MPV_FORMAT_INT64
"dh" MPV_FORMAT_INT64
"aspect" MPV_FORMAT_DOUBLE
"par" MPV_FORMAT_DOUBLE
"colormatrix" MPV_FORMAT_STRING
"colorlevels" MPV_FORMAT_STRING
"primaries" MPV_FORMAT_STRING
"gamma" MPV_FORMAT_STRING
"sig-peak" MPV_FORMAT_DOUBLE
"light" MPV_FORMAT_STRING
"chroma-location" MPV_FORMAT_STRING
"rotate" MPV_FORMAT_INT64
"stereo-in" MPV_FORMAT_STRING
"average-bpp" MPV_FORMAT_INT64
"alpha" MPV_FORMAT_STRING
"min-luma" MPV_FORMAT_DOUBLE
"max-luma" MPV_FORMAT_DOUBLE
"max-cll" MPV_FORMAT_DOUBLE
"max-fall" MPV_FORMAT_DOUBLE
"scene-max-r" MPV_FORMAT_DOUBLE
"scene-max-g" MPV_FORMAT_DOUBLE
"scene-max-b" MPV_FORMAT_DOUBLE
"max-pq-y" MPV_FORMAT_DOUBLE
"avg-pq-y" MPV_FORMAT_DOUBLE
"prim-red-x" MPV_FORMAT_DOUBLE
"prim-red-y" MPV_FORMAT_DOUBLE
"prim-green-x" MPV_FORMAT_DOUBLE
"prim-green-y" MPV_FORMAT_DOUBLE
"prim-blue-x" MPV_FORMAT_DOUBLE
"prim-blue-y" MPV_FORMAT_DOUBLE
"prim-white-x" MPV_FORMAT_DOUBLE
"prim-white-y" MPV_FORMAT_DOUBLE
168u
168u
dwidth, dheight
اندازه نمایش ویدیو. این اندازه ویدیو پس از اعمال فیلترها و مقیاس‌بندی نسبت ابعاد است. اندازه واقعی پنجره ویدیو همچنان می‌تواند متفاوت از این باشد؛ برای مثال اگر کاربر اندازه پنجره ویدیو را به صورت دستی تغییر داده باشد.
این موارد مقادیری یکسان با video-out-params/dw و video-out-params/dh دارند.
video-dec-params
دقیقاً مانند video-params، اما بدون اعمال هیچ‌گونه بازنویسی (override).
video-out-params
همانند video-params، اما پس از اعمال فیلترهای ویدیو. اگر فیلتر ویدیویی در حال استفاده نباشد، این ویژگی حاوی مقادیر یکسانی با video-params خواهد بود. توجه داشته باشید که این لزوماً مقداری نیست که پنجره ویدیو استفاده می‌کند، زیرا کاربر می‌تواند اندازه پنجره را تغییر دهد و تمام VOهای واقعی مقیاس‌بندی خود را مستقل از زنجیره فیلترها انجام می‌دهند.
دارای زیرویژگی‌هایی مشابه با video-params است.
video-target-params
همانند video-params، اما همراه با ویژگی‌های مقصدی که VO به آن خروجی می‌دهد.
دارای زیرویژگی‌هایی مشابه با video-params است.
video-frame-info
اطلاعات تقریبی فریم فعلی. توجه داشته باشید که اگر هر یک از این‌ها در OSD استفاده شوند، اطلاعات ممکن است به دلیل رسم مجدد OSD و تا حدی ناپیوسته بودن نمایش فریم، به اندازه چند فریم اختلاف داشته باشد و ممکن است مجبور شوید پخش را متوقف کرده و رسم مجدد را اجبار کنید.
این ویژگی دارای تعدادی زیرویژگی است:
7.0.TP
video-frame-info/picture-type
نوع تصویر. می‌تواند "I" (درون‌کادری یا intra)، "P" (پیش‌بینی‌شده یا predicted)، "B"
(پیش‌بینی‌شدهٔ دوطرفه یا bi-dir predicted) یا ناموجود باشد.
video-frame-info/interlaced
آیا محتوای فریم درهم‌بافته (interlaced) است یا خیر.
video-frame-info/tff
در صورت درهم‌بافته بودن محتوا، مشخص می‌کند که آیا میدان بالایی (top field) اول نمایش داده می‌شود یا خیر.
video-frame-info/repeat
آیا فریم هنگام رمزگشایی باید به تعویق بیفتد یا خیر.
video-frame-info/gop-timecode
رشته‌ای حاوی کد زمانی GOP کدگذاری‌شده در فریم.
video-frame-info/smpte-timecode
رشته‌ای حاوی کد زمانی SMPTE کدگذاری‌شده در فریم.
video-frame-info/estimated-smpte-timecode
کد زمانی تخمینی بر اساس موقعیت فعلی پخش و تعداد فریم‌ها.
168u
container-fps
نرخ فریم (FPS) ظرف (container). این مقدار می‌تواند به‌راحتی حاوی مقادیر جعلی و نادرست باشد. برای ویدیوهایی که از
قالب‌های ظرف مدرن یا کدک‌های ویدیویی استفاده می‌کنند، این مقدار اغلب نادرست خواهد بود.
(تغییرنام‌یافته از fps.)
estimated-vf-fps
نرخ فریم (FPS) تخمینی/اندازه‌گیری‌شدهٔ خروجی زنجیرهٔ فیلتر ویدیو. (اگر فیلتری
استفاده نشود، با خروجی رمزگشا مطابقت دارد.) این ویژگی از میانگین مدت‌زمان
۱۰ فریم گذشته برای محاسبهٔ FPS استفاده می‌کند. اگر افت فریم (frame-dropping)
رخ دهد (مانند زمانی که framedrop صریحاً فعال شده است یا پس از پرش دقیق)، این مقدار
دقیق نخواهد بود. فایل‌هایی با برچسب‌های زمانی نادقیق (مانند Matroska) ممکن است
به نتایج ناپایدار منجر شوند.
current-window-scale (RW)
مقدار window-scale محاسبه‌شده از اندازهٔ فعلی پنجره. این ویژگی در صورتی
که اندازهٔ پنجره از زمان تنظیم گزینه تغییر نکرده باشد، و اندازهٔ پنجره به روش‌های
دیگر محدود نشده باشد، مقداری مشابه با window-scale دارد. اگر پنجره تمام‌صفحه
شود، این ویژگی مقدار مقیاس محاسبه‌شده از آخرین اندازهٔ غیرتمام‌صفحهٔ پنجره را برمی‌گرداند.
اگر هیچ ویدیویی فعال نباشد، این ویژگی در دسترس نیست.
همچنین امکان نوشتن روی این ویژگی وجود دارد. این کار رفتاری مشابه با
نوشتن روی window-scale دارد. توجه داشته باشید که نوشتن روی current-window-scale
تأثیری بر مقدار window-scale نخواهد گذاشت.
focused
آیا پنجره فوکوس دارد یا خیر. ممکن است توسط همهٔ VOها پشتیبانی نشود.
ambient-light
وضعیت نور محیط بر حسب لوکس (lux). تنها در macOS قابل مشاهده است (فقط macOS و Linux)
display-names
نام‌های نمایشگرهایی که پنجرهٔ mpv آن‌ها را پوشش می‌دهد. در X11، این‌ها
نام‌های xrandr هستند (LVDS1، HDMI1، DP1، VGA1 و غیره). در Windows، این‌ها
نام‌های GDI هستند (\.DISPLAY1، \.DISPLAY2 و غیره) و نخستین نمایشگر
موجود در فهرست همان نمایشی خواهد بود که Windows آن را مرتبط با پنجره در نظر می‌گیرد
(همان‌طور که توسط MonitorFromWindow API مشخص می‌شود). در macOS این‌ها
Display Product Names هستند همان‌طور که در System Information به همراه شماره سریال
درون پرانتز استفاده شده‌اند و تنها یک نام نمایشگر بازگردانده می‌شود زیرا یک پنجره تنها می‌تواند
روی یک نمایشگر باشد. در Wayland، اگر نسخهٔ پروتکل >= 4 باشد، این‌ها نام‌های wl_output
هستند (LVDS-1، HDMI-A-1، X11-1 و غیره)، یا در صورت استفاده از نسخهٔ پروتکل < 4،
مدل wl_output گزارش‌شده توسط رویداد geometry خواهند بود.
display-fps
نرخ نوسازی (refresh rate) نمایشگر فعلی. در حال حاضر، این کمترین نرخ فریم (FPS)
هر نمایشگری است که توسط ویدیو پوشش داده شده است، همان‌طور که توسط APIهای سیستمی
زیربنایی (مانند xrandr در X11) دریافت می‌شود. این مقدار، نرخ فریم اندازه‌گیری‌شده نیست. لزوماً
در همهٔ پلتفرم‌ها در دسترس نیست. توجه داشته باشید که هر یک از موارد ذکر شده ممکن است
در هر زمانی بدون هشدار قبلی تغییر کنند.
estimated-display-fps
نرخ واقعی که به نظر می‌رسد نوسازی‌های نمایشگر در آن رخ می‌دهند، اندازه‌گیری‌شده بر اساس
زمان سیستم. تنها در صورتی در دسترس است که حالت display-sync (همان‌طور که توسط
--video-sync انتخاب شده است) فعال باشد.
vsync-jitter
ضریب انحراف تخمینی مدت‌زمان vsync.
display-width, display-height
تفکیک‌پذیری (رزولوشن) افقی و عمودی نمایشگر فعلی بر حسب پیکسل. اینکه آیا این مقادیر
با تغییر نمایشگر توسط پنجرهٔ mpv به‌روزرسانی می‌شوند یا خیر، به backend پنجره
بستگی دارد. ممکن است در همهٔ پلتفرم‌ها در دسترس نباشد.
display-hidpi-scale
ضریب مقیاس HiDPI گزارش‌شده توسط backend پنجره. اگر هیچ VOای فعال نباشد،
یا اگر VO مقداری را گزارش نکند، این ویژگی در دسترس نخواهد بود. شاید منطقی‌تر باشد که
یک DPI مطلق گزارش شود، با این حال پشتیبانی از HiDPI در اکثر APIهای سیستم‌عامل بدین صورت
پیاده‌سازی شده است. همچنین ببینید: --hidpi-window-scale.
osd-width, osd-height
آخرین عرض شناخته‌شدهٔ OSD (می‌تواند ۰ باشد). این مقدار در صورتی که بخواهید از
دستور overlay-add استفاده کنید مورد نیاز است. اندازهٔ واقعی OSD/پنجره را در اختیارتان
می‌گذارد (بدون احتساب تزییناتی که توسط مدیر پنجرهٔ سیستم‌عامل رسم شده‌اند).
نام مستعار برای osd-dimensions/w و osd-dimensions/h.
osd-par
آخرین نسبت ابعاد پیکسل نمایش OSD شناخته‌شده (می‌تواند ۰ باشد).
نام مستعار برای osd-dimensions/osd-par.
osd-dimensions
آخرین ابعاد شناخته‌شدهٔ OSD.
دارای زیرویژگی‌های زیر است (که می‌توانند به‌صورت MPV_FORMAT_NODE
یا جدول Lua با mp.get_property_native خوانده شوند):
7.0
osd-dimensions/w
اندازهٔ پنجرهٔ VO بر حسب واحدهای رندر OSD (معمولاً پیکسل، اما در VOهایی مانند
xv ممکن است پیکسل‌های مقیاس‌بندی‌شده باشد).
osd-dimensions/h
اندازهٔ پنجرهٔ VO بر حسب واحدهای رندر OSD.
osd-dimensions/par
نسبت ابعاد پیکسل OSD (معمولاً ۱).
osd-dimensions/aspect
نسبت ابعاد نمایش پنجرهٔ VO. (محاسبه‌شده از ویژگی‌های بالا.)
osd-dimensions/mt, osd-dimensions/mb, osd-dimensions/ml, osd-dimensions/mr
حاشیه‌های OSD به ویدیو (بالا، پایین، چپ، راست). این ناحیه‌ای را توصیف می‌کند
که ویدیو در آن رندر می‌شود.
168u
در صورتی که پنجرهٔ VO ایجاد نشده یا قابل مشاهده نباشد، هر یک از این ویژگی‌ها
ممکن است در دسترس نبوده یا روی مقادیر ساختگی (dummy) تنظیم شده باشند.
term-size
اندازهٔ فعلی ترمینال.
این ویژگی دارای دو زیرویژگی است.
7.0
term-size/w
عرض ترمینال بر حسب سلول
term-size/h
ارتفاع ترمینال بر حسب سلول
168u
این ویژگی قابل نظارت (observable) نیست. واکنش به تغییرات اندازه نیازمند
بررسی دوره‌ای (polling) است.
window-id
فقط‌خواندنی - شناسهٔ پنجرهٔ mpv. ممکن است همیشه در دسترس نباشد، مثلاً به دلیل
باز نشدن پنجره تا این لحظه یا عدم پشتیبانی توسط VO.
display-swapchain
فقط‌خواندنی - آدرس Direct3D 11 swapchain. مقداری از نوع int64 برمی‌گرداند
که بیانگر آدرس حافظهٔ D3D11 swapchain است. ممکن است همیشه در دسترس
نباشد، مثلاً اگر d3d11-output-mode روی composition تنظیم نشده
باشد یا VO از آن پشتیبانی نکند.
mouse-pos
فقط‌خواندنی - آخرین موقعیت شناخته‌شدهٔ موشواره، نرمال‌شده نسبت به ابعاد OSD.
دارای زیرویژگی‌های زیر است (که می‌توانند به‌صورت MPV_FORMAT_NODE
یا جدول Lua با mp.get_property_native خوانده شوند):
7.0
mouse-pos/x, mouse-pos/y
آخرین مختصات شناخته‌شدهٔ نشانگر موشواره.
mouse-pos/hover
بولی - آیا نشانگر موشواره روی پنجرهٔ ویدیو قرار دارد (hover می‌کند) یا خیر. هنگامی که
این مقدار false باشد، مختصات باید نادیده گرفته شوند، زیرا backendهای ویدیو
تنها زمانی آن‌ها را به‌روز می‌کنند که نشانگر روی پنجره شناور باشد.
168u
touch-pos
فقط‌خواندنی - آخرین موقعیت‌های شناخته‌شدهٔ نقاط لمس، نرمال‌شده نسبت به ابعاد OSD.
این ویژگی دارای تعدادی زیرویژگی است. N را با شاخص مبتنی بر ۰ نقطهٔ لمس
جایگزین کنید. هر زمان که انگشت جدیدی صفحه را لمس کند، یک نقطهٔ لمس جدید با کوچک‌ترین
N استفاده‌نشدهٔ موجود به فهرست نقاط لمس افزوده می‌شود.
7.0.TP
touch-pos/count
تعداد نقاط لمسی فعال.
touch-pos/N/x, touch-pos/N/y
موقعیت Nاُمین نقطهٔ لمسی.
touch-pos/N/id
شناسهٔ یکتای نقطهٔ لمسی. این می‌تواند برای شناسایی نقاط لمسی مجزا هنگامی که نمایهٔ (ایندکس) آن‌ها تغییر می‌کند استفاده شود.
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE، یا در Lua با mp.get_property_native، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each touch point)
"x" MPV_FORMAT_INT64
"y" MPV_FORMAT_INT64
"id" MPV_FORMAT_INT64
168u
168u
tablet-pos
فقط‌خواندنی - آخرین موقعیت شناخته‌شدهٔ ابزار تبلت (قلم)، نرمال‌سازی‌شده بر اساس ابعاد OSD، و وضعیت ابزار.
دارای زیرویژگی‌های زیر است:
7.0
tablet-pos/x, tablet-pos/y
آخرین مختصات شناخته‌شدهٔ ابزار تبلت.
tablet-pos/tool-in-proximity
بولی - این که آیا ابزار تبلت در حال حاضر در مجاورت سطح تبلت قرار دارد / بالای سطح تبلت معلق است یا خیر.
tablet-pos/tool-tip,
وضعیت نوک ابزار تبلت، up یا down.
tablet-pos/tool-stylus-btn1, tablet-pos/tool-stylus-btn2, tablet-pos/tool-stylus-btn3
وضعیت دکمه‌های جانبی ابزار تبلت، pressed یا released.
tablet-pos/pad-focus
بولی - این که آیا پد تبلت در حال حاضر فوکوس دارد یا خیر.
tablet-pos/pad-btns/N
وضعیت Nاُمین دکمهٔ پد تبلت، pressed یا released.
168u
sub-ass-extradata
داده‌های اضافی (extradata) تِرَک زیرنویس ASS فعلی. هیچ قالب‌بندی انجام نمی‌شود. داده‌های اضافی به عنوان یک رشته همان‌گونه که هست برگردانده می‌شود. این ویژگی برای ترک‌های زیرنویس غیر ASS در دسترس نیست.
sub-text
متن زیرنویس فعلی بدون در نظر گرفتن وضعیت آشکار بودن آن. قالب‌بندی حذف می‌شود. اگر زیرنویس مبتنی بر متن نباشد (مانند زیرنویس‌های DVD/BD)، یک رشتهٔ خالی برگردانده می‌شود.
این گزینه دارای زیرویژگی‌هایی برای قالب‌های مختلف است:
7.0
sub-text/ass
مشابه sub-text، اما متن را در قالب ASS برمی‌گرداند. زیرنویس‌های متنی در قالب‌های دیگر تبدیل می‌شوند. برای زیرنویس‌های بومی ASS، رویدادهایی که حاوی هیچ متنی نیستند (اما رسم‌های برداری و غیره هستند) پالایش نمی‌شوند. اگر چندین رویداد با زمان پخش فعلی مطابقت داشته باشند، با خطوط جدید (line breaks) به یکدیگر متصل می‌شوند. فقط شامل بخش "Text" رویدادها است.
این ویژگی برای رندر صحیح زیرنویس‌های ASS کافی نیست، زیرا سرایند (header) ASS و فراداده‌های مربوط به هر رویداد بازگردانده نمی‌شوند. برای این منظور از /ass-full استفاده کنید.
sub-text/ass-full
مشابه sub-text-ass، اما رویداد کامل را با تمام فیلدها، قالب‌بندی‌شده به صورت خطوطی در یک فایل متنی .ass برمی‌گرداند. برای اطلاعات سبک (style) همراه با sub-ass-extradata استفاده شود.
168u
sub-text-ass (deprecated)
نام مستعار منسوخ‌شده برای sub-text/ass.
secondary-sub-text
مشابه sub-text (با همان زیرویژگی‌ها)، اما برای زیرنویس‌های ثانویه.
sub-start
زمان شروع زیرنویس فعلی (به ثانیه). اگر چندین زیرنویس فعلی وجود داشته باشد، نخستین زمان شروع را برمی‌گرداند. اگر هیچ زیرنویس فعلی وجود نداشته باشد، مقدار null برگردانده می‌شود.
این ویژگی دارای یک زیرویژگی است:
7.0
sub-start/full
sub-start همراه با میلی‌ثانیه.
168u
secondary-sub-start
مشابه sub-start، اما برای زیرنویس‌های ثانویه.
sub-end
زمان پایان زیرنویس فعلی (به ثانیه). اگر چندین زیرنویس فعلی وجود داشته باشد، آخرین زمان پایان را برمی‌گرداند. اگر هیچ زیرنویس فعلی وجود نداشته باشد، یا اگر وجود داشته باشد اما مدت‌زمان نامشخص یا نادرستی داشته باشد، مقدار null برگردانده می‌شود.
این ویژگی دارای یک زیرویژگی است:
7.0
sub-end/full
sub-end همراه با میلی‌ثانیه.
168u
secondary-sub-end
مشابه sub-end، اما برای زیرنویس‌های ثانویه.
playlist-pos (RW)
موقعیت فعلی در لیست پخش (playlist). نخستین مدخل در موقعیت 0 است. نوشتن در این ویژگی ممکن است پخش را در موقعیت جدید آغاز کند.
در برخی موارد، این لزوماً فایل در حال پخش فعلی نیست. توضیحات پرچم‌های current و playing را در playlist ببینید.
اگر لیست پخش خالی باشد، یا اگر غیرخالی باشد اما هیچ مدخلی "current" نباشد، این ویژگی مقدار -1 را برمی‌گرداند. به همین ترتیب، نوشتن -1 پخش‌کننده را در حالت بیکار (idle) قرار می‌دهد (یا اگر حالت idle فعال نباشد، از پخش خارج می‌شود). اگر نمایه‌ای خارج از محدوده در این ویژگی نوشته شود، رفتاری مشابه با نوشتن -1 خواهد داشت. (پیش از نسخهٔ mpv 0.33.0، به‌جای بازگرداندن -1، اگر هیچ مدخلی از لیست پخش current نبود، این ویژگی در دسترس نبود.)
نوشتن مجدد مقدار فعلی در این ویژگی هیچ اثری نخواهد داشت. در صورت تمایل، از playlist-play-index برای شروع مجدد پخش مدخل فعلی استفاده کنید.
playlist-pos-1 (RW)
مشابه playlist-pos، اما مبتنی بر ۱ (شروع از ۱).
playlist-current-pos (RW)
نمایهٔ مورد "current" در لیست پخش. این معمولاً، اما نه لزوماً، مورد در حال پخش فعلی است (نگاه کنید به playlist-playing-pos). بسته به وضعیت دقیق داخلی پخش‌کننده، ممکن است به مورد بعدی لیست پخش برای پخش، یا موردی که برای تعیین پخش بعدی به کار می‌رود اشاره داشته باشد.
برای خواندن، این دقیقاً مشابه playlist-pos است.
برای نوشتن، این تنها موقعیت مورد "current" را بدون توقف پخش فایل فعلی (یا آغاز پخش، در صورتی که این کار در حالت idle انجام شود) تعیین می‌کند. برای حذف پرچم current از مقدار -1 استفاده کنید.
این ویژگی کاربرد چندان مشخصی ندارد. اگر در حین پخش تنظیم شود، معمولاً باعث می‌شود مدخل لیست پخشِ بعد از آن، در نوبت بعدی پخش شود. وضعیت عجیب و قابل‌مشاهدهٔ دیگر این است که اگر playlist-next در حین پخش اجرا شود، این ویژگی روی مدخل بعدی لیست پخش برای پخش تنظیم می‌شود (برخلاف حالت پیشین). یک پرچم داخلی وجود دارد که تصمیم می‌گیرد مدخل فعلی لیست پخش باید پخش شود یا مدخل بعدی، و این پرچم در حال حاضر برای کاربران API غیرقابل‌دسترس است. (این که آیا این رفتار حفظ خواهد شد یا خیر، ممکن است دستخوش تغییر شود.)
playlist-playing-pos
نمایهٔ مورد "playing" در لیست پخش. یک مورد لیست پخش در صورتی "playing" تلقی می‌شود که در حال بارگیری باشد، در حال پخش واقعی باشد، یا در حال تخلیه شدن از حافظه باشد. این ویژگی در طول رویدادهای MPV_EVENT_START_FILE (start-file) و MPV_EVENT_START_END (end-file) تنظیم می‌شود. خارج از این رویدادها، مقدار -1 برمی‌گرداند. اگر مدخل لیست پخش به نحوی در حین پخش حذف شود، اما پخش هنوز متوقف نشده باشد، یا در حال توقف باشد، باز هم مقدار -1 برمی‌گرداند. (این اتفاق دست‌کم می‌تواند در طول تغییر وضعیت‌ها رخ دهد.)
در وضعیت "playing"، این مقدار معمولاً مشابه playlist-pos است، مگر در حین تغییر وضعیت‌ها، یا در صورتی که playlist-current-pos به طور صریح نوشته شده باشد.
playlist-count
تعداد کل مدخل‌های لیست پخش.
playlist-path
مسیر اصلی لیست پخش برای مدخل فعلی، پیش از آن‌که mpv مدخل‌ها را بسط دهد. در صورتی که فایل در اصل به نحوی با یک لیست پخش مرتبط نبوده باشد، در دسترس نیست..TP
playlist
لیست پخش، ورودی فعلی مشخص شده است. در حال حاضر، مقدار خام این ویژگی کاربردی ندارد.
این ویژگی چندین زیرویژگی دارد. مقدار N را با اندیس ورودی لیست پخش مبتنی بر صفر جایگزین کنید.
7.0
playlist/count
تعداد ورودی‌های لیست پخش (مشابه playlist-count).
playlist/N/filename
نام فایل Nاُمین ورودی.
playlist/N/playing
yes/true اگر ویژگی playlist-playing-pos به این ورودی اشاره کند؛ در غیر این صورت no/false یا غیرقابل دسترس.
playlist/N/current
yes/true اگر ویژگی playlist-current-pos به این ورودی اشاره کند؛ در غیر این صورت no/false یا غیرقابل دسترس.
playlist/N/title
نام Nاُمین ورودی. در صورتی در دسترس است که فایل لیست پخش شامل چنین فیلدهایی باشد و تجزیه‌کنندهٔ mpv برای قالب لیست پخش مربوطه از آن پشتیبانی کند، یا اگر ورودی لیست پخش قبلاً باز شده و عنوان رسانه‌ای غیر از نام فایل به دست آمده باشد.
playlist/N/id
شناسهٔ یکتا برای این ورودی. این یک شناسهٔ عددی صحیح است که به صورت خودکار اختصاص می‌یابد و برای تمام طول عمر نمونهٔ هستهٔ فعال mpv یکتاست. سایر دستورها، رویدادها و موارد دیگر از این شناسه در فیلدهای playlist_entry_id استفاده می‌کنند.
playlist/N/playlist-path
مسیر اصلی لیست پخش برای این ورودی، پیش از آن‌که mpv آن را بسط دهد. در صورتی که فایل در ابتدا به طریقی با یک لیست پخش مرتبط نبوده باشد، در دسترس نیست.
168u
هنگام پرس‌وجوی ویژگی با استفاده از client API و MPV_FORMAT_NODE، یا با تابع لوآی mp.get_property_native، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each playlist entry)
"filename" MPV_FORMAT_STRING
"current" MPV_FORMAT_FLAG (might be missing; since mpv 0.7.0)
"playing" MPV_FORMAT_FLAG (same)
"title" MPV_FORMAT_STRING (optional)
"id" MPV_FORMAT_INT64
168u
168u
track-list
فهرست تِرک‌های صوتی/تصویری/زیرنویس، ورودی فعلی مشخص شده است.
این ویژگی چندین زیرویژگی دارد. مقدار N را با اندیس تِرک مبتنی بر صفر جایگزین کنید.
7.0
track-list/count
تعداد کل تِرک‌ها.
track-list/video
فهرست تِرک‌های ویدیویی. این فقط برای چاپ مناسب است و مقدار آن را نمی‌توان دریافت کرد.
track-list/audio
فهرست تِرک‌های صوتی. این فقط برای چاپ مناسب است و مقدار آن را نمی‌توان دریافت کرد.
track-list/sub
فهرست تِرک‌های زیرنویس. این فقط برای چاپ مناسب است و مقدار آن را نمی‌توان دریافت کرد.
track-list/N/id
شناسه‌ای که برای --sid/--aid/--vid استفاده می‌شود. این شناسه میان تِرک‌هایی با نوع یکسان (sub/audio/video) یکتا است، اما در غیر این صورت خیر.
track-list/N/type
رشته‌ای که نوع رسانه را توصیف می‌کند. یکی از audio، video، sub.
track-list/N/src-id
شناسهٔ تِرک به‌گونه‌ای که در فایل مبدأ استفاده شده است. همیشه در دسترس نیست. (اگر قالب فاقد شناسهٔ بومی باشد، اگر تِرک یک تِرک ساختگی باشد که به این صورت در فایل واقعی وجود ندارد، یا اگر قالب توسط libavformat پردازش شود و در فهرست سفید قالب‌های دارای شناسهٔ تِرک نباشد، این فیلد وجود نخواهد داشت.)
track-list/N/title
عنوان تِرک همان‌گونه که در فایل ذخیره شده است. همیشه در دسترس نیست.
track-list/N/lang
زبان تِرک بر اساس شناسایی فایل. همیشه در دسترس نیست.
track-list/N/image
yes/true اگر این یک تِرک ویدیویی متشکل از یک تک‌تصویر باشد، در غیر این صورت no/false یا غیرقابل دسترس. روش مکاشفه‌ای (heuristic) مورد استفاده برای تشخیص اینکه آیا یک جریان، تصویر است یا خیر، تلاشی برای تشخیص تصویر در کدک‌هایی که معمولاً برای ویدیو استفاده می‌شوند نمی‌کند. در غیر این صورت، قابل اعتماد است.
track-list/N/albumart
yes/true اگر این یک تصویر جاسازی‌شده در فایل صوتی یا تصویر جلد خارجی باشد، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/default
yes/true اگر پرچم پیش‌فرض در فایل برای تِرک تنظیم شده باشد، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/forced
yes/true اگر پرچم اجباری (forced) در فایل برای تِرک تنظیم شده باشد، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/dependent
yes/true اگر پرچم وابسته (dependent) در فایل برای تِرک تنظیم شده باشد، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/visual-impaired
yes/true اگر پرچم آسیب‌دیدهٔ بینایی در فایل برای تِرک تنظیم شده باشد، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/hearing-impaired
yes/true اگر پرچم آسیب‌دیدهٔ شنوایی در فایل برای تِرک تنظیم شده باشد، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/hls-bitrate
نرخ بیت (bitrate) جریان HLS، در صورت در دسترس بودن.
track-list/N/program-id
شناسهٔ برنامه (program ID) مربوط به جریان HLS، در صورت در دسترس بودن.
track-list/N/codec
نام کدک مورد استفاده توسط این تِرک، برای مثال h264. در برخی موارد نادر در دسترس نیست.
track-list/N/codec-desc
نام توصیفی کدک مورد استفاده توسط این تِرک.
track-list/N/codec-profile
پروفایل کدک مورد استفاده توسط این تِرک. تنها زمانی در دسترس است که تِرک از قبل رمزگشایی شده باشد.
track-list/N/external
yes/true اگر تِرک یک فایل خارجی باشد، در غیر این صورت no/false یا غیرقابل دسترس. این برای فایل‌های زیرنویس جداگانه تنظیم می‌شود.
track-list/N/external-filename
نام فایل اگر تِرک مربوط به یک فایل خارجی باشد، در غیر این صورت غیرقابل دسترس.
track-list/N/selected
yes/true اگر تِرک در حال حاضر رمزگشایی می‌شود، در غیر این صورت no/false یا غیرقابل دسترس.
track-list/N/main-selection
ترتیب انتخاب تِرک‌ها را برای نوع یکسان مشخص می‌کند. اگر تِرکی انتخاب نشده باشد، یا توسط --lavfi-complex انتخاب شده باشد، در دسترس نیست. برای تِرک‌های زیرنویس، 0 نشان‌دهندهٔ sid و 1 نشان‌دهندهٔ secondary-sid است.
track-list/N/ff-index
اندیس جریان آن‌طور که معمولاً توسط ابزارهای FFmpeg استفاده می‌شود. توجه داشته باشید که در صورت استفاده از دی‌ماکسری غیر از libavformat (--demuxer=lavf)، این مقدار می‌تواند اشتباه باشد. برای فایل‌های mkv، حتی در صورت استفاده از دی‌ماکسر پیش‌فرض (داخلی)، معمولاً اندیس مطابقت دارد، اما هیچ تضمین قطعی وجود ندارد.
track-list/N/decoder
اگر این تِرک در حال رمزگشایی باشد، نام کوتاه رمزگشا،
track-list/N/decoder-desc
اگر این تِرک در حال رمزگشایی باشد، نام خوانا برای انسانِ رمزگشا،
track-list/N/demux-w, track-list/N/demux-h
راهنمای اندازهٔ ویدیو آن‌طور که توسط ظرف (container) مشخص شده است. (همیشه دقیق نیست.).TP
track-list/N/demux-crop-x, track-list/N/demux-crop-y
آفست برش (crop) فریم ویدیوی مبدأ.
track-list/N/demux-crop-w, track-list/N/demux-crop-h
اندازهٔ ویدیو پس از برش.
track-list/N/demux-channel-count
تعداد کانال‌های صوتی بر اساس اطلاعات ارائه‌شده توسط ظرف (container). (همیشه
دقیق نیست - به‌ویژه اینکه ممکن است قطعه صوتی با تعداد متفاوتی از کانال‌ها
رمزگشایی شود.)
track-list/N/demux-channels
چینش کانال‌ها بر اساس اطلاعات ارائه‌شده توسط ظرف (container). (همیشه دقیق نیست.)
track-list/N/demux-samplerate
نرخ نمونه‌برداری صوت بر اساس اطلاعات ارائه‌شده توسط ظرف (container). (همیشه دقیق نیست.)
track-list/N/demux-fps
نرخ فریم ویدیو (FPS) بر اساس اطلاعات ارائه‌شده توسط ظرف (container). (همیشه دقیق نیست.)
track-list/N/demux-bitrate
نرخ بیت میانگین صوت، بر حسب بیت در ثانیه. (همیشه دقیق نیست.)
track-list/N/demux-rotation
متادادهٔ چرخش ساعت‌گرد ویدیو، به درجه.
track-list/N/demux-par
نسبت ابعاد پیکسل (PAR).
track-list/N/format-name
نام کوتاه قالب (format) از ffmpeg. اگر قطعه صوتی باشد، نام قالب
نمونه‌برداری خواهد بود. اگر قطعه ویدیویی باشد، نام قالب پیکسل
خواهد بود.
track-list/N/audio-channels (منسوخ‌شده)
نام مستعار منسوخ‌شده برای track-list/N/demux-channel-count.
track-list/N/replaygain-track-peak, track-list/N/replaygain-track-gain
مقادیر replaygain بر پایهٔ هر قطعه (per-track). تنها برای قطعه‌های صوتی
دارای اطلاعات متناظر ذخیره‌شده در فایل مبدأ در دسترس است.
track-list/N/replaygain-album-peak, track-list/N/replaygain-album-gain
مقادیر replaygain بر پایهٔ هر آلبوم (per-album). در صورتی که فایل حاوی
اطلاعات هر قطعه باشد اما اطلاعات آلبوم را نداشته باشد، در حال حاضر مقادیر
آلبوم از روی مقادیر قطعه کپی خواهند شد. این احتمال وجود دارد که نگارش‌های
آیندهٔ mpv در این حالت این ویژگی‌ها را غیرقابل‌دسترس کنند.
track-list/N/dolby-vision-profile, track-list/N/dolby-vision-level
پروفایل و سطح (level) در فناوری Dolby Vision. اگر ظرف مربوطه این
اطلاعات را ارائه ندهد، ممکن است در دسترس نباشد.
track-list/N/metadata,
مشابه ویژگی metadata کار می‌کند، اما به‌جای مقادیر سراسری برای
کل فایل، به متاداده‌هایی دسترسی دارد که برای هر قطعه/جریان تنظیم شده‌اند.
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با تابع Lua mp.get_property_native، یک mpv_node با محتویات
زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each track)
"id" MPV_FORMAT_INT64
"type" MPV_FORMAT_STRING
"src-id" MPV_FORMAT_INT64
"title" MPV_FORMAT_STRING
"lang" MPV_FORMAT_STRING
"image" MPV_FORMAT_FLAG
"albumart" MPV_FORMAT_FLAG
"default" MPV_FORMAT_FLAG
"forced" MPV_FORMAT_FLAG
"dependent" MPV_FORMAT_FLAG
"visual-impaired" MPV_FORMAT_FLAG
"hearing-impaired" MPV_FORMAT_FLAG
"hls-bitrate" MPV_FORMAT_INT64
"program-id" MPV_FORMAT_INT64
"selected" MPV_FORMAT_FLAG
"main-selection" MPV_FORMAT_INT64
"external" MPV_FORMAT_FLAG
"external-filename" MPV_FORMAT_STRING
"codec" MPV_FORMAT_STRING
"codec-desc" MPV_FORMAT_STRING
"codec-profile" MPV_FORMAT_STRING
"ff-index" MPV_FORMAT_INT64
"decoder" MPV_FORMAT_STRING
"decoder-desc" MPV_FORMAT_STRING
"demux-w" MPV_FORMAT_INT64
"demux-h" MPV_FORMAT_INT64
"demux-crop-x" MPV_FORMAT_INT64
"demux-crop-y" MPV_FORMAT_INT64
"demux-crop-w" MPV_FORMAT_INT64
"demux-crop-h" MPV_FORMAT_INT64
"demux-channel-count" MPV_FORMAT_INT64
"demux-channels" MPV_FORMAT_STRING
"demux-samplerate" MPV_FORMAT_INT64
"demux-fps" MPV_FORMAT_DOUBLE
"demux-bitrate" MPV_FORMAT_INT64
"demux-rotation" MPV_FORMAT_INT64
"demux-par" MPV_FORMAT_DOUBLE
"format-name" MPV_FORMAT_STRING
"audio-channels" MPV_FORMAT_INT64
"replaygain-track-peak" MPV_FORMAT_DOUBLE
"replaygain-track-gain" MPV_FORMAT_DOUBLE
"replaygain-album-peak" MPV_FORMAT_DOUBLE
"replaygain-album-gain" MPV_FORMAT_DOUBLE
"dolby-vision-profile" MPV_FORMAT_INT64
"dolby-vision-level" MPV_FORMAT_INT64
"metadata" MPV_FORMAT_NODE_MAP
(key and string value for each metadata entry)
168u
168u
current-tracks/...
دسترسی به قطعه‌های انتخاب‌شدهٔ کنونی را فراهم می‌کند. این ویژگی به مدخل صحیح
در track-list هدایت می‌شود.
زیرمدخل‌های زیر تعریف شده‌اند: video، audio، sub،
sub2
برای مثال، current-tracks/audio/lang فیلد زبان قطعهٔ صوتی کنونی را
برمی‌گرداند (همان مقدار track-list/N/lang).
اگر قطعه‌هایی از نوع درخواستی از طریق --lavfi-complex انتخاب شده
باشند، اولین مورد برگردانده می‌شود.
chapter-list (RW)
فهرست فصل‌ها، مدخل کنونی نشانه‌گذاری شده است.
این ویژگی دارای تعدادی زیرویژگی است. N را با شاخص فصل مبتنی بر صفر
جایگزین کنید.
7.0
chapter-list/count
تعداد فصل‌ها.
chapter-list/N/title
عنوان فصل به‌صورتی که در فایل ذخیره شده است. همیشه در دسترس نیست.
chapter-list/N/time
زمان شروع فصل به ثانیه به‌صورت عدد اعشاری (float).
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با تابع Lua mp.get_property_native، یک mpv_node با محتویات
زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each chapter)
"title" MPV_FORMAT_STRING
"time" MPV_FORMAT_DOUBLE
168u
168u
af, vf (RW)
به --vf/--af و دستور vf/af مراجعه کنید.
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با تابع Lua mp.get_property_native، یک mpv_node با محتویات
زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each filter entry)
"name" MPV_FORMAT_STRING
"label" MPV_FORMAT_STRING [optional]
"enabled" MPV_FORMAT_FLAG [optional]
"params" MPV_FORMAT_NODE_MAP [optional]
"key" MPV_FORMAT_STRING
"value" MPV_FORMAT_STRING
168u
همچنین امکان نوشتن این ویژگی با استفاده از این قالب وجود دارد.
seekable
اینکه آیا به‌طور کلی امکان پرش (seek) در فایل جاری وجود دارد یا خیر.
partially-seekable
اینکه آیا فایل جاری قابل پرش در نظر گرفته می‌شود یا نه، اما تنها به این دلیل که حافظهٔ نهان (cache)
فعال است. این بدان معناست که پرش‌های نسبی کوچک ممکن است بدون مشکل باشند، اما پرش‌های بزرگ‌تر
در هر صورت ممکن است ناموفق باشند. اینکه آیا یک پرش موفقیت‌آمیز خواهد بود یا خیر عموماً از قبل مشخص نیست.
اگر این ویژگی مقدار yes/true را برگرداند، seekable نیز چنین خواهد بود.
playback-abort
اینکه آیا پخش متوقف شده یا قرار است متوقف شود. (کاربردی در شرایط مبهم
مانند حین پردازش قلاب on_load، زمانی که کاربر می‌تواند پخش را متوقف کند،
اما اسکریپت باید پردازش را به‌طور صریح پایان دهد.)
cursor-autohide (RW)
گزینهٔ --cursor-autohide را ببینید. تنظیم این ویژگی روی یک مقدار جدید همواره
مکان‌نما را به‌روزرسانی کرده و تایمر داخلی را بازنشانی می‌کند.
term-clip-cc
نمادی را برای اجبار برش خط به پهنای ترمینال جاری درج می‌کند.
این نماد می‌تواند برای show-text و سایر پیام‌های OSD استفاده شود. این نماد باید
نخستین نویسه در خط باشد و تأثیر آن تا انتهای خط برقرار است.
osd-sym-cc
نماد OSD جاری را به عنوان یک کد کنترلی (cc) مات OSD درج می‌کند. این فقط در
دستور show-text یا گزینه‌هایی که پیام‌های OSD را تنظیم می‌کنند معنا دارد.
این کد کنترلی وابسته به پیاده‌سازی است و برای هر کار دیگری بی‌استفاده است.
osd-ass-cc
${osd-ass-cc/0} گریزدهی (escaping) توالی‌های ASS را در متن OSD غیرفعال می‌کند و
${osd-ass-cc/1} آن را دوباره فعال می‌سازد. به‌طور پیش‌فرض، توالی‌های ASS برای
جلوگیری از قالب‌بندی تصادفی گریزدهی می‌شوند و این ویژگی می‌تواند این رفتار را
غیرفعال کند. توجه داشته باشید که این ویژگی‌ها یک کد کنترلی مات OSD را بازمی‌گردانند
که تنها برای دستور show-text یا گزینه‌هایی که پیام‌های OSD را تنظیم می‌کنند
معنا دارد.
7.0
3.5
"مثال"
0.0
• 2
--osd-msg3='This is ${osd-ass-cc/0}{\\b1}bold text'
• 2
show-text "This is ${osd-ass-cc/0}{\\b1}bold text"
168u
168u
168u
هرگونه برچسب بازنویسی (override) ASS که توسط libass پشتیبانی شود می‌تواند استفاده شود.
توجه داشته باشید که باید نویسهٔ \ را گریزدهی کنید، زیرا رشته قبل از
ارسال به کد OSD، برای توالی‌های گریز زبان C پردازش می‌شود. برای جزئیات
«ساختار دستورات مسطح» (Flat command syntax) را ببینید.
فهرستی از برچسب‌ها را می‌توانید در اینجا بیابید:
https://aegisub.org/docs/latest/ass_tags
vo-configured
اینکه آیا VO در حال حاضر پیکربندی شده است یا خیر. معمولاً این متناظر با
قابل مشاهده بودن پنجرهٔ ویدیو است. اگر از گزینهٔ --force-window استفاده شود،
این ویژگی معمولاً همیشه مقدار yes/true را برمی‌گرداند.
vo-passes
شامل اطلاعات درون‌نگری دربارهٔ مراحل رندر (render passes) فعال VO و زمان‌های
اجرای آن‌ها است. توسط همهٔ VOها پیاده‌سازی نشده است.
این ویژگی به دو نوع فریم تقسیم می‌شود: vo-passes/fresh برای فریم‌های تازه
(که باید بارگذاری، مقیاس‌بندی و غیره شوند) و vo-passes/redraw برای
فریم‌های بازترسیم‌شده (که فقط باید مجدداً رسم شوند). تعداد مراحل رندر برای هر
زیرنوع می‌تواند از فریمی به فریم دیگر تغییر کند و نباید به آن اتکا شود.
هر نوع فریم دارای چندین زیرویژگی دیگر است. TYPE را با نوع فریم،
N را با نمایهٔ مرحله (مبتنی بر صفر)، و M را با نمایهٔ نمونه
(مبتنی بر صفر) جایگزین کنید.
7.0
vo-passes/TYPE/count
تعداد مراحل (passes).
vo-passes/TYPE/N/desc
توضیحات خوانا برای انسان از مرحله.
vo-passes/TYPE/N/last
آخرین زمان اجرای اندازه‌گیری‌شده، به نانوثانیه.
vo-passes/TYPE/N/avg
میانگین زمان اجرای این مرحله، به نانوثانیه. بازهٔ زمانی دقیق متغیر است،
اما عموماً در حد چند ثانیه خواهد بود.
vo-passes/TYPE/N/peak
اوج زمان اجرا (بالاترین مقدار) در این بازهٔ میانگین‌گیری، به نانوثانیه.
vo-passes/TYPE/N/count
تعداد نمونه‌ها برای این مرحله.
vo-passes/TYPE/N/samples/M
زمان اجرای خام یک نمونهٔ مشخص برای این مرحله، به نانوثانیه.
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با mp.get_property_native در Lua، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_MAP
"TYPE" MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP
"desc" MPV_FORMAT_STRING
"last" MPV_FORMAT_INT64
"avg" MPV_FORMAT_INT64
"peak" MPV_FORMAT_INT64
"count" MPV_FORMAT_INT64
"samples" MPV_FORMAT_NODE_ARRAY
MP_FORMAT_INT64
168u
168u
توجه داشته باشید که دسترسی مستقیم به این ساختار از طریق کلیدهای فرعی (subkeys) پشتیبانی
نمی‌شود و تنها راه دسترسی از طریق MPV_FORMAT_NODE مذکور است.
perf-info
داده‌های عملکردی بیشتر. پرس‌وجوی این ویژگی جمع‌آوری داخلی برخی داده‌ها را
آغاز می‌کند و ممکن است سرعت پخش‌کننده را کاهش دهد. هر پرس‌وجو برخی از وضعیت‌های
داخلی را بازنشانی می‌کند. اعلان تغییر ویژگی کار نمی‌کند و کار نخواهد کرد.
همهٔ این‌ها ممکن است در آینده تغییر کنند، بنابراین از آن استفاده نکنید. اسکریپت درونی
stats قرار است تنها استفاده‌کننده از آن باشد؛ از آنجا که همراه با کد منبع
بسته‌بندی و کامپایل شده است، می‌تواند از شناخت ساختار داخلی mpv برای نمایش درست
اطلاعات استفاده کند. برای برخی جزئیات توضیحات اسکریپت stats را ببینید.
video-bitrate, audio-bitrate, sub-bitrate
مقادیر نرخ بیت (bitrate) که در سطح بسته (packet) محاسبه می‌شوند. این سازوکار
با تقسیم اندازهٔ بیتی تمامی بسته‌ها میان دو فریم کلیدی (keyframes) بر فاصلهٔ زمانی
برچسب زمان نمایش (PTS) آن‌ها کار می‌کند. (این ویژگی از برچسب‌های زمانی ذخیره‌شده
در فایل استفاده می‌کند، بنابراین برای نمونه سرعت پخش بر مقادیر بازگردانده‌شده تأثیری ندارد.)
به‌ویژه، نرخ بیت ویدیو فقط به ازای هر فریم کلیدی به‌روزرسانی شده و نرخ بیت «گذشته»
را نمایش می‌دهد. برای کاربرپسندتر شدن ویژگی در رابط کاربری، به‌روزرسانی‌های این
ویژگی‌ها به شیوهٔ خاصی مهار (throttled) می‌شوند.
واحد اندازه‌گیری بیت بر ثانیه است. قالب‌بندی OSD این مقادیر را به کیلوبیت
(یا در صورت لزوم مگابیت) تبدیل می‌کند، که با استفاده از مقدار خام ویژگی، برای نمونه
با ${=video-bitrate} می‌توان جلوی آن را گرفت.
توجه داشته باشید که دقت این ویژگی‌ها تحت تأثیر چند عامل قرار دارد. اگر demuxer
زیرین بسته‌ها را هنگام جداسازی (demuxing) بازنویسی کند (که برای برخی قالب‌های فایلی
انجام می‌شود)، نرخ بیت ممکن است اندکی نادقیق باشد. اگر برچسب‌های زمانی نامناسب یا
دارای لرزش باشند (مانند Matroska)، حتی جریان‌های با نرخ بیت ثابت نیز ممکن است
نرخ بیت نوسانی نشان دهند.
نحوهٔ دقیق محاسبهٔ این مقادیر ممکن است در آینده تغییر کند.
در نسخه‌های قبلی mpv، این ویژگی‌ها یک تخمین ثابت (اما نادرست) را با استفاده از
روشی کاملاً متفاوت بازمی‌گرداندند.
audio-device-list
فهرست دستگاه‌های صوتی شناسایی‌شده. این ویژگی عمدتاً برای استفاده در API کلاینت
بوده و بازتاب‌دهندهٔ خروجی --audio-device=help در پخش‌کنندهٔ خط فرمان است.
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با mp.get_property_native در Lua، یک mpv_node با محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each device entry)
"name" MPV_FORMAT_STRING
"description" MPV_FORMAT_STRING
168u
مقدار name چیزی است که باید به گزینهٔ --audio-device ارسال شود (و
اغلب یک شناسهٔ اختصاصی و تا حدودی نامفهوم از API صوتی است)، در حالی که description
یک متن آزاد و خوانا برای انسان است. اگر توضیحی در دسترس نباشد یا توضیح
یک رشتهٔ خالی باشد، مقدار description بر روی نام دستگاه (منهای پیشوند
اختصاصی mpv یعنی <driver>/) تنظیم می‌شود.
مدخل ویژه با نامِ تنظیم‌شده روی auto، درایور خروجی صدای پیش‌فرض
و دستگاه پیش‌فرض را انتخاب می‌کند.
این ویژگی را می‌توان با سازوکار پایش ویژگی در API کلاینت و در اسکریپت‌های
Lua پایش کرد. (از نظر فنی، اعلان تغییر با نخستین بار خوانده شدن این ویژگی فعال می‌شود.)
audio-device (RW)
تنظیم دستگاه صوتی. این ویژگی مستقیماً گزینهٔ --audio-device را
می‌خواند/می‌نویسد، اما در دسترسی‌های نوشتن، خروجی صدا برای بارگذاری
مجدد زمان‌بندی خواهد شد.
نوشتن در این ویژگی در حالی که هیچ خروجی صدایی فعال نیست، صدا را به‌طور
خودکار فعال نخواهد کرد. (این موضوع در حالتی که صدا به دلیل شکست در
مقداردهی اولیه پس از دسترسی نوشتنِ قبلی در audio-device غیرفعال شده
باشد نیز صدق می‌کند.)
این ویژگی همچنین مشخص نمی‌کند که در واقع کدام دستگاه صوتی در حال استفاده است.
نحوهٔ مدیریت این جزئیات ممکن است در آینده تغییر کند.
current-vo
درایور خروجی ویدئوی فعلی (نامی که با --vo استفاده می‌شود).
current-gpu-context
بافتار (context) فعلی GPU برای درایور خروجی ویدئو (نامی که با --gpu-context استفاده می‌شود).
معتبر برای --vo=gpu و --vo=gpu-next.
current-ao
درایور خروجی صدای فعلی (نامی که با --ao استفاده می‌شود).
user-data (RW)
این یک نگاشت کلید/مقدار بازگشتی از گره‌های دلخواه است که برای استفادهٔ عمومی
بین کلاینت‌ها (مانند اسکریپت‌ها، کلاینت‌های IPC، برنامه‌های میزبان و غیره) به اشتراک گذاشته می‌شود.
خود پخش‌کننده از داده‌های درون آن استفاده نمی‌کند (اگرچه برخی اسکریپت‌های توکار ممکن است استفاده کنند).
این ویژگی در طول راه‌اندازی‌های مجدد پخش‌کننده حفظ نمی‌شود.
مسیرهای فرعی می‌توانند مستقیماً مورد دسترسی قرار گیرند؛ برای مثال user-data/my-script/state/a می‌تواند
خوانده، نوشته یا پایش شود.
خود شیء سطح بالا را نمی‌توان مستقیماً نوشت؛ به‌جای آن در مسیرهای فرعی بنویسید.
تبدیل این ویژگی یا زیرویژگی‌های آن به رشته، یک بازنمایی JSON ارائه می‌دهد. در
صورت تبدیل یک شیء در سطح برگ (یعنی چیزی که نگاشت یا آرایه نباشد) و عدم
استفاده از حالت raw، محتوای اصلی ارائه خواهد شد (مثلاً رشته‌ها مستقیماً
چاپ می‌شوند، نه این که در گیومه قرار گیرند و به‌شکل JSON فرار داده شوند).
مسیرهای فرعی زیر برای مصارف داخلی رزرو شده‌اند یا دارای معانی خاصی هستند:
user-data/osc، user-data/mpv. مگر در مواردی که خلاف آن ذکر شده باشد، معنای
هر ویژگی زیر این مسیرهای فرعی می‌تواند در هر زمانی تغییر کند و نباید به آن‌ها
اتکا کرد، و نوشتن در این ویژگی‌ها ممکن است مانع از کارکرد صحیح اسکریپت‌های
توکار شود.
در حال حاضر، ویژگی‌های زیر دارای معانی خاصِ تعریف‌شده هستند:
7.0
user-data/osc/margins
این ویژگی توسط پیاده‌سازی OSC نوشته می‌شود تا حاشیه‌هایی را که اشغال می‌کند مشخص
سازد. زیرویژگی‌های آن شامل l، r، t و b همگی باید به‌ترتیب
روی حاشیه‌های چپ، راست، بالا و پایین تنظیم شوند.
مقادیر بین 0.0 و 1.0 و نرمال‌شده نسبت به عرض/ارتفاع پنجره هستند.
user-data/mpv/ytdl
داده‌های به اشتراک گذاشته‌شده توسط اسکریپت قلاب (hook script) توکار ytdl.
7.0
user-data/mpv/ytdl/path
مسیر فایل اجرایی ytdl در صورت یافت شدن، یا در غیر این صورت یک رشتهٔ خالی.
این ویژگی تا زمانی که اسکریپت اقدام به یافتن فایل اجرایی ytdl نکند،
یعنی تا زمانی که یک URL توسط اسکریپت بارگذاری نشود، تنظیم نمی‌شود.
user-data/mpv/ytdl/json-subprocess-result
نتیجهٔ اجرای ytdl برای بازیابی داده‌های JSON مربوط به URL در حال
بارگذاری. قالب آن همانند نتیجهٔ subprocess است که
stdout و stderr را دریافت می‌کند.
168u
user-data/mpv/console/open
نشان‌دهندهٔ این که آیا کنسول باز است یا خیر.
168u
menu-data (RW)
این ویژگی تعریف خام منو را ذخیره می‌کند. برای جزئیات بخش Context Menu را ببینید.
7.0
type
نوع آیتم منو. می‌تواند این مقادیر باشد: separator، submenu یا خالی.
title
عنوان آیتم منو. اگر نوع برابر با separator نباشد، الزامی است.
cmd
دستوری که هنگام کلیک روی آیتم منو اجرا می‌شود.
shortcut
کلید میانبر آیتم منو که در سمت راست آیتم منو نمایش داده می‌شود.
یک کلید میانبر لزوماً نباید کارکردی داشته باشد؛ این صرفاً یک راهنمای بصری است.
state
وضعیت آیتم منو. می‌تواند این مقادیر باشد: checked، disabled، hidden یا خالی.
submenu
آیتم‌های زیرمنو، که اگر نوع برابر با submenu باشد الزامی است.
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE یا با
mp.get_property_native در Lua، یک mpv_node با محتویات زیر بازگردانده
می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (menu item)
"type" MPV_FORMAT_STRING
"title" MPV_FORMAT_STRING
"cmd" MPV_FORMAT_STRING
"shortcut" MPV_FORMAT_STRING
"state" MPV_FORMAT_NODE_ARRAY[MPV_FORMAT_STRING]
"submenu" MPV_FORMAT_NODE_ARRAY[menu item]
168u
168u
نوشتن در این ویژگی از طریق API کلاینت با استفاده از MPV_FORMAT_NODE یا با
mp.set_property_native در Lua، در صورتی که خروجی ویدئوی mpv در حال حاضر
فعال باشد، به‌روزرسانی فوری منو را راه‌اندازی می‌کند. می‌توانید ویژگی current-vo
را پایش کنید تا بررسی نمایید که آیا این گونه است یا خیر.
working-directory
دایرکتوری کاری فرایند mpv. می‌تواند برای کاربران JSON IPC مفید باشد،
زیرا پخش‌کنندهٔ خط فرمان معمولاً با مسیرهای نسبی کار می‌کند.
current-watch-later-dir
دایرکتوری‌ای که فایل‌های پیکربندی تماشای بعدی (watch later) در آن ذخیره می‌شوند. این ویژگی
مقدار --watch-later-dir یا دایرکتوری پیش‌فرض را در صورتی که --watch-later-dir
تغییر نکرده باشد، همراه با بسط جانگهدارنده‌های مدک (tilde)، بازمی‌گرداند.
protocol-list
فهرست پیشوندهای پروتکل که به طور بالقوه توسط پخش‌کننده شناسایی می‌شوند. آن‌ها
بدون پسوند انتهایی :// بازگردانده می‌شوند (که با این وجود همچنان همواره الزامی است).
در برخی موارد، پروتکل در عمل پشتیبانی نخواهد شد (برای مثال
https اگر ffmpeg بدون پشتیبانی از TLS کامپایل شده باشد).
decoder-list
فهرست رمزگشاهای (decoders) پشتیبانی‌شده. این ویژگی رمزگشاهایی را فهرست می‌کند
که می‌توان آن‌ها را به --vd و --ad ارسال کرد.
7.0
codec
نام متعارف (canonical) کدک، که قالبی را که رمزگشا می‌تواند
مدیریت کند مشخص می‌سازد.
driver
نام خود رمزگشا. اغلب این نام با codec یکسان است.
گاهی اوقات می‌تواند متفاوت باشد. این نام برای تمایز بین چندین
رمزگشا برای یک کدک یکسان به کار می‌رود.
description
توضیحات خوانا برای انسان دربارهٔ رمزگشا و کدک.
168u
هنگام پرس‌وجوی این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با mp.get_property_native در Lua، یک mpv_node با
محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each decoder entry)
"codec" MPV_FORMAT_STRING
"driver" MPV_FORMAT_STRING
"description" MPV_FORMAT_STRING
168u
encoder-list
فهرست کُدگذارهای libavcodec. این ویژگی همان قالب decoder-list را دارد.
نام‌های کُدگذار (مدخل‌های driver) را می‌توان به --ovc و
--oac ارسال کرد (بدون پیشوند lavc: که برای --vd و --ad الزامی است).
demuxer-lavf-list
فهرست نام‌های دی‌مالتی‌پلکسرهای موجود در libavformat. از این ویژگی می‌توان برای بررسی
پشتیبانی از یک قالب مشخص یا استفاده به همراه --demuxer-lavf-format بهره برد.
input-key-list
فهرست نام‌های کلیدها، مشابه خروجی تولید شده توسط --input-keylist.
mpv-version
رشته نگارش/حق‌نشر mpv. بسته به نحوه ساخت باینری، ممکن است
شامل یک نگارش انتشاریافته یا صرفاً یک هش git باشد.
mpv-configuration
آرگومان‌های پیکربندی که به سامانه ساخت ارسال شده‌اند. اگر نگارش meson
استفاده‌شده برای کامپایل mpv قدیمی‌تر از 1.1.0 باشد، در عوض یک رشته کدگذاری‌شده
از چند گزینه دلخواه نمایش داده می‌شود.
ffmpeg-version
محتوای فراخوانی API تابع av_version_info(). این رشته‌ای است که
ساخت را به نحوی شناسایی می‌کند، چه از طریق شماره نگارش انتشاریافته
یا یک هش git. اگر mpv به نگارش‌های قدیمی‌تر FFmpeg پیوند خورده باشد،
این ویژگی در دسترس نخواهد بود.
libass-version
مقدار ass_library_version(). این یک عدد صحیح است که با قالبی
تا حدی نامتعارف (ظاهراً "hex BCD") کُدگذاری شده و نمایانگر نگارش انتشاریافته
کتابخانه libass پیوندیافته با mpv است.
platform
رشته‌ای بازمی‌گرداند که پلتفرم هدفی را که mpv برای آن ساخته شده توصیف می‌کند. مقدار
این ویژگی وابسته به آن چیزی است که سامانه ساخت زیربنایی شناسایی می‌کند. برخی از
رایج‌ترین مقادیر عبارتند از: windows، darwin (برای macos یا ios)، linux،
android و freebsd. توجه داشته باشید که این یک فهرست کامل نیست.
options/<name> (RW)
مقدار گزینه --<name>. بیشتر گزینه‌ها را می‌توان در زمان اجرا با
نوشتن در این ویژگی تغییر داد. توجه داشته باشید که بسیاری از گزینه‌ها برای اِعمال
تغییرات نیازمند بارگیری مجدد فایل هستند. در صورت وجود ویژگی معادل، ترجیحاً
به جای این گزینه، آن ویژگی را تنظیم کنید.
دلیلی برای دسترسی به options/<name> به جای <name> وجود
ندارد، مگر در شرایطی که ویژگی‌ها دارای رفتاری متفاوت یا معنایی ناسازگار باشند.
file-local-options/<name> (RW)
مشابه options/<name> است، اما هنگام تنظیم یک گزینه از طریق این
ویژگی، به محض متوقف شدن پخش فایل جاری، گزینه به مقدار پیشین خود بازنشانی می‌شود.
تلاش برای نوشتن روی یک گزینه در زمانی که هیچ فایلی در حال پخش (یا در حال بارگیری)
نیست، منجر به خطا می‌شود.
(توجه داشته باشید که اگر گزینه‌ای به عنوان محلی برای فایل (file-local) علامت‌گذاری شده باشد،
حتی options/ نیز به مقدار محلی دسترسی خواهد داشت و مقدار old (قدیمی)
که در پایان پخش بازگردانده می‌شود، تا اتمام پخش قابل خواندن یا نوشتن نیست.)
option-info/<name>
اطلاعات تکمیلی به ازای هر گزینه.
این ویژگی دارای تعدادی زیرویژگی است. <name> را با نام یک
گزینه سطح‌بالا جایگزین کنید. هیچ تضمینی برای پایداری هیچ‌یک از این
زیرویژگی‌ها داده نمی‌شود - ممکن است در آینده به‌طور اساسی تغییر کنند.
7.0
option-info/<name>/name
نام گزینه.
option-info/<name>/type
نام نوع گزینه، مانند String یا Integer. برای بسیاری
از انواع پیچیده، این مقدار خیلی دقیق نیست.
option-info/<name>/set-from-commandline
مشخص می‌کند که آیا گزینه از خط فرمان mpv تنظیم شده است یا خیر. مقدار آن
در صورتی که گزینه به عنوان مثال در زمان اجرا تغییر کند نامشخص گذاشته شده است
(به این معنی که ممکن است در آینده تغییر کند).
option-info/<name>/set-locally
مشخص می‌کند که آیا گزینه به ازای هر فایل تنظیم شده است یا خیر. این مورد در خصوص
پروفایل‌های بارگیری‌شده به‌صورت خودکار، پیکربندی‌های دایرکتوری فایل، و سایر موارد
صدق می‌کند. به این معنی است که مقدار گزینه در هنگام پایان پخش، به مقدار قبل از
شروع پخش بازگردانده خواهد شد.
option-info/<name>/expects-file
مشخص می‌کند که آیا گزینه مسیرهای فایل را به عنوان آرگومان می‌پذیرد یا خیر.
option-info/<name>/default-value
مقدار پیش‌فرض گزینه. ممکن است همیشه در دسترس نباشد.
option-info/<name>/min، option-info/<name>/max
مقادیر کمینه و بیشینه صحیح مجاز برای گزینه. تنها در صورتی در دسترس است
که گزینه‌ها عددی باشند و کمینه/بیشینه به‌طور داخلی تنظیم شده باشد.
همچنین این امکان وجود دارد که تنها یکی از این دو تنظیم شده باشد.
option-info/<name>/choices
اگر گزینه از نوع چندگزینه‌ای (choice) باشد، گزینه‌های انتخابی ممکن را نشان می‌دهد. انتخاب‌هایی
که عدد صحیح هستند ممکن است شامل شده یا نشده باشند (می‌توانند به‌طور تلویحی توسط min
و max استنباط شوند). توجه داشته باشید گزینه‌هایی که مانند گزینه‌های چندگزینه‌ای عمل می‌کنند،
اما در باطن گزینه‌های انتخابی واقعی نیستند، ممکن است این اطلاعات را در دسترس
نداشته باشند.
168u
property-list
فهرست ویژگی‌های سطح‌بالا.
profile-list
فهرست پروفایل‌ها و محتویات آن‌ها. این ویژگی به‌شدت وابسته به پیاده‌سازی
است و ممکن است در هر زمانی تغییر کند. در حال حاضر، آرایه‌ای از گزینه‌ها را
برای هر پروفایل بازمی‌گرداند. هر گزینه یک نام و یک مقدار دارد که این مقدار هم‌اکنون
همیشه رشته است. توجه داشته باشید که آرایه گزینه‌ها یک نگاشت (map) نیست، زیرا
ترتیب اهمیت دارد و مدخل‌های تکراری امکان‌پذیر هستند. پروفایل‌های بازگشتی بسط داده
نمی‌شوند و به صورت گزینه‌های ویژه profile نشان داده می‌شوند.
فیلد profile-restore در صورتی که حاوی مقدار پیش‌فرض باشد در حال حاضر وجود ندارد
(خواه به دلیل عدم تنظیم، یا تنظیم صریح آن روی default)،
اما در آینده ممکن است مقدار default را در بر بگیرد.
command-list
فهرست دستورهای ورودی. این ویژگی آرایه‌ای از نگاشت‌ها را بازمی‌گرداند که هر گره
نگاشت در آن نشان‌دهنده یک دستور است. این نگاشت دارای مدخل‌های زیر است:
7.0
name
نام دستور.
vararg
مشخص می‌کند که آیا دستور تعداد متغیری از آرگومان‌ها را می‌پذیرد یا خیر.
args
آرایه‌ای از نگاشت‌ها، که در آن هر گره نگاشت نشان‌دهنده یک آرگومان با
مدخل‌های زیر است:
7.0
name
نام آرگومان.
type
نام نوع آرگومان، مانند String یا Integer.
optional
مشخص می‌کند که آیا آرگومان اختیاری است یا خیر.
168u
168u
هنگام استعلام این ویژگی با API کلاینت با استفاده از MPV_FORMAT_NODE،
یا با mp.get_property_native در Lua، یک mpv_node با
محتویات زیر بازگردانده می‌شود:
7.0
3.5
MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP (for each command entry)
"name" MPV_FORMAT_STRING
"vararg" MPV_FORMAT_FLAG
"args" MPV_FORMAT_NODE_ARRAY
MPV_FORMAT_NODE_MAP
"name" MPV_FORMAT_STRING
"type" MPV_FORMAT_STRING
"optional" MPV_FORMAT_FLAG
168u
168u
input-bindings
فهرست نگاشت‌های کلید ورودی (bindings) فعلی. این ویژگی آرایه‌ای از نگاشت‌ها را
برمی‌گرداند که هر گره نگاشت در آن نشان‌دهنده یک نگاشت برای یک کلید/دستور منفرد است. این نگاشت
دارای مدخل‌های زیر است:
7.0
key
نام کلید. این نام نرمال‌سازی شده است و ممکن است با نحوه تعیین آن
در منبع (مثلاً در input.conf) کمی تفاوت داشته باشد.
cmd
دستور نگاشت‌شده به کلید. (در حال حاضر، این دقیقاً همان رشته تعیین‌شده
در منبع است، به جز حذف فاصله‌های خالی و کامنت‌ها. این امکان وجود دارد
که در آینده نرمال‌سازی شود.).TP
is_weak
اگر روی true تنظیم شود، هرگونه کلید مقیدشده‌ی (binding) کاربری موجود و فعال اولویت خواهد داشت.
owner
در صورت وجود این مدخل، نام اسکریپت (یا مورد مشابهی) است که این کلید مقیدشده را افزوده است.
section
نام بخشی (section) که این کلید مقیدشده جزئی از آن است. این یک سازوکار به ندرت استفاده‌شده است. این مدخل ممکن است در آینده حذف شود یا معنای آن تغییر کند.
priority
یک عدد. کلیدهای مقیدشده با مقدار بالاتر بر کلیدهای مقیدشده با مقدار پایین‌تر ارجحیت دارند. اگر مقدار منفی باشد، این کلید مقیدشده غیرفعال است و توسط ورودی فعال (trigger) نخواهد شد. توجه داشته باشید که mpv این مقدار را در درون خود استفاده نمی‌کند، و تطبیق کلیدهای مقیدشده ممکن است در برخی موارد اندکی متفاوت عمل کند. علاوه بر این، این مقدار پویا است و می‌تواند در زمان اجرا تغییر کند.
comment
در صورت موجود بودن، توضیحی (کامنت) است که پس از دستور در همان خط آمده است. (برای نمونه، مدخل f cycle bla # toggle bla در input.conf منجر به مدخلی با comment = "toggle bla", cmd = "cycle bla" خواهد شد.)
168u
این ویژگی فقط‌خواندنی است و اعلان تغییرات (change notification) پشتیبانی نمی‌شود.
clipboard
محتویات کلیپ‌بورد. فقط زمانی کار می‌کند که کلیپ‌بورد بومی بر روی پلتفرم پشتیبانی شود.
بسته به پلتفرم، برخی زیرویژگی‌ها، نوشتن روی ویژگی‌ها، یا اعلان‌های تغییرات در حال حاضر کار نمی‌کنند.
این مورد شامل تعدادی زیرویژگی است:
7.0
clipboard/text (RW)
محتوای متنی در کلیپ‌بورد.
نوشتن روی این ویژگی محتوای متنی کلیپ‌بورد را تنظیم می‌کند.
clipboard/text-primary (RW)
محتوای متنی در انتخاب اولیه (primary selection) (فقط در X11 و Wayland).
168u
نکته:
7.0
3.5
در Wayland با پس‌بند (backend) کلیپ‌بورد vo، محتوای کلیپ‌بورد تنها زمانی به‌روزرسانی می‌شود که کامپوزیتور یک پیشنهاد داده انتخابی (selection data offer) بفرستد (معمولاً هنگامی که پنجره VO فوکوس شده باشد). پس‌بند wayland معمولاً این محدودیت را ندارد.
برای جزئیات بیشتر به ویژگی current-clipboard-backend مراجعه کنید.
168u
168u
current-clipboard-backend
رشته‌ای حاوی پس‌بند فعال کلیپ‌بورد در حال حاضر.
برای دیدن فهرست پس‌بندهای موجود، گزینه --clipboard-backends را ببینید.
clock
زمان محلی فعلی در قالب ساعت:دقیقه (hour:minutes).
168u
"ناسازگاری‌ها میان گزینه‌ها و ویژگی‌ها (Inconsistencies between options and properties)"
شما می‌توانید به (تقریباً) تمام گزینه‌ها به عنوان ویژگی دسترسی داشته باشید، هرچند که در مورد برخی ویژگی‌ها (به دلایل تاریخی) نکاتی وجود دارد:
0.0
vid, aid, sid
در حین فعال بودن پخش، این‌ها شیارهای (tracks) واقعاً فعال را برمی‌گردانند. برای نمونه، اگر aid=5 را تنظیم کنید و فایل در حال پخش فاقد شیار صوتی با شناسه 5 باشد، ویژگی aid مقدار no را برمی‌گرداند.
پیش از mpv 0.31.0، تنها در زمان اجرا می‌توانستید شیارهای موجود را تنظیم کنید.
display-fps
این رفتار ناسازگار منسوخ شده است. پس از منسوخ‌سازی، مقدار گزارش‌شده و مقدار گزینه به طور واضح از هم تفکیک شده‌اند (override-display-fps برای مقدار گزینه).
vf, af
اگر ویژگی‌ها را در حین پخش تنظیم کنید و زنجیره فیلتر نتواند مجدداً راه‌اندازی شود، گزینه تنظیم خواهد شد اما زنجیره فیلتر در زمان اجرا تغییر نمی‌کند. از سوی دیگر، پخش ویدیوی بعدی با شکست مواجه خواهد شد، زیرا زنجیره فیلتر اولیه نمی‌تواند ایجاد شود.
این رفتار در mpv 0.31.0 تغییر کرد. پیش از آن، مقدار جدید اگر و تنها اگر یک شیار ویدیویی (برای vf) یا یک شیار صوتی (برای af) فعال بود، رد می‌شد. اگر پخش فعال نبود، رفتار مشابه رفتار کنونی بود.
playlist
این ویژگی فقط‌خواندنی است و فهرست‌پخش داخلی فعلی را برمی‌گرداند. گزینه مربوطه برای بارگذاری فهرست‌پخش هنگام تجزیه خط فرمان است. برای مصارف client API، باید به جای آن از دستور loadlist استفاده کنید.
profile, include
این موارد فقط‌نوشتنی هستند و به محض اینکه مقداری روی آن‌ها نوشته شود، دقیقاً همانند زمانی که در خط فرمان CLI برنامه mpv به کار رفته باشند، اقداماتی را انجام می‌دهند. تنها کاربرد آن‌ها هنگام استفاده از libmpv پیش از mpv_initialize() است، که آن هم به نوبه خود احتمالاً فقط در حالت کدگذاری (encoding mode) مفید است. کاربران عادی libmpv باید از سازوکارهای دیگر، مانند دستور apply-profile و تابع API موسوم به mpv_load_config_file استفاده کنند. از این ویژگی‌ها اجتناب کنید.
تمامی آرگومان‌های رشته‌ای دستورات ورودی و همچنین گزینه‌های خاصی (مانند
--term-playing-msg) مشمول بسط ویژگی می‌شوند. توجه داشته باشید که بسط
ویژگی در جاهایی که برای مثال پارامترهای عددی مورد انتظار است کار نمی‌کند.
(به عنوان مثال، دستور add بسط ویژگی را انجام نمی‌دهد. دستور set
یک استثنا است و نه یک قاعده کلی.)
0.0
3.5
"مثالی برای input.conf"
0.0
i show-text "Filename: ${filename}"
هنگام فشردن کلید i نام فایل جاری را نمایش می‌دهد
168u
168u
168u
این‌که بسط ویژگی به طور پیش‌فرض فعال باشد یا خیر به این بستگی دارد که از کدام API استفاده
می‌شود (بخش‌های Flat command syntax، Commands specified as arrays و Named
arguments را ببینید)، اما همان‌طور که در Input Command Prefixes شرح داده شده است،
همواره می‌توان آن را با پیشوند expand-properties فعال یا با پیشوند raw
غیرفعال کرد.
بسط‌های زیر پشتیبانی می‌شوند:
0.0
${NAME}
به مقدار ویژگی NAME بسط می‌یابد. اگر بازیابی ویژگی ناموفق باشد،
به یک رشته خطا بسط می‌یابد. (برای بسط یافتن به یک رشته خالی به جای آن،
از ${NAME:} همراه با یک : در انتها استفاده کنید.)
اگر NAME دارای پیشوند = باشد، به مقدار خام ویژگی بسط می‌یابد
(بخش زیر را ببینید).
${NAME:STR}
به مقدار ویژگی NAME بسط می‌یابد، یا در صورتی که ویژگی قابل بازیابی
نباشد به STR بسط می‌یابد. STR به صورت بازگشتی بسط داده می‌شود.
${?NAME:STR}
در صورتی که ویژگی NAME در دسترس باشد، به STR (به‌صورت بازگشتی)
بسط می‌یابد.
${!NAME:STR}
در صورتی که ویژگی NAME قابل بازیابی نباشد، به STR (به‌صورت بازگشتی)
بسط می‌یابد.
${?NAME==VALUE:STR}
در صورتی که ویژگی NAME به رشته‌ای برابر با VALUE بسط یابد، به
STR (به‌صورت بازگشتی) بسط می‌یابد. می‌توانید پیشوند = را به
NAME اضافه کنید تا مقدار خام یک ویژگی مقایسه شود (بخش زیر را ببینید).
اگر ویژگی در دسترس نباشد یا هنگام بازیابی آن خطاهای دیگری رخ دهد، مقدار هرگز
برابر در نظر گرفته نمی‌شود.
توجه داشته باشید که VALUE نمی‌تواند شامل هیچ‌یک از نویسه‌های : یا
} باشد. همچنین، در صورت نیاز ممکن است در آینده امکان گریز با "
یا % اضافه شود.
${!NAME==VALUE:STR}
مشابه حالت ? است، با این تفاوت که در صورت نابرابر بودن مقدار، STR
بسط می‌یابد. (با استفاده از همان معناشناسی مشابه با ?.)
$$
به $ بسط می‌یابد.
$}
به } بسط می‌یابد. (برای تولید این نویسه در داخل بسط بازگشتی.)
$>
بسط ویژگی و پردازش ویژه $ را برای ادامه رشته غیرفعال می‌کند.
168u
در جاهایی که بسط ویژگی مجاز است، نویسه‌های گریز به سبک C نیز اغلب
پذیرفته می‌شوند. مثال:
0.0
3.5
0.0
• 2
\n به یک نویسه خط جدید تبدیل می‌شود
• 2
\\ به \ بسط می‌یابد
168u
168u
به‌طور معمول، ویژگی‌ها به صورت متنی خوانا برای انسان قالب‌بندی می‌شوند که هدف آن، نمایش در OSD یا پایانه است. بازیابی مقدار قالب‌بندی‌نشده (خام) از یک ویژگی با قرار دادن پیشوند = قبل از نام آن امکان‌پذیر است. این مقادیر خام می‌توانند توسط برنامه‌های دیگر پردازش (parse) شوند و از همان قواعد گزینه‌های مرتبط با ویژگی‌ها پیروی می‌کنند. علاوه بر این، یک پیشوند > برای قالب‌بندی متن خوانا برای انسان، با دقت ثابت برای مقادیر ممیز شناور (floating-point) وجود دارد. این قابلیت برای چاپ مقادیری که عرض ثابت در آن‌ها اهمیت دارد، مفید است.
0.0
3.5
"مثال‌ها (Examples)"
0.0
• 2
${time-pos} به 00:14:23 بسط می‌یابد (اگر موقعیت پخش در ۱۴ دقیقه و ۲۳ ثانیه باشد)
• 2
${=time-pos} به 863.4 بسط می‌یابد (همان زمان، به‌علاوهٔ ۴۰۰ میلی‌ثانیه - میلی‌ثانیه‌ها معمولاً در حالت قالب‌بندی‌شده نمایش داده نمی‌شوند)
• 2
${avsync} به +0.003 بسط می‌یابد
• 2
${>avsync} به +0.0030 بسط می‌یابد
• 2
${=avsync} به 0.003028 بسط می‌یابد
168u
168u
168u
گاهی اوقات، تفاوت در میزان اطلاعات ارائه‌شده توسط مقادیر ویژگی‌های خام و قالب‌بندی‌شده می‌تواند نسبتاً زیاد باشد. در برخی موارد، مقادیر خام اطلاعات بیشتری دارند، مانند دقت بالاتر از ثانیه در time-pos. گاهی نیز برعکس است؛ برای نمونه aid در حالت قالب‌بندی‌شده، عنوان تراک و زبان را نشان می‌دهد، اما در حالت خام تنها شمارهٔ تراک را نمایش می‌دهد.
"کنترل‌کننده روی صفحه (ON SCREEN CONTROLLER)"
کنترل‌کنندهٔ روی صفحه (به‌اختصار: OSC) یک رابط کاربری گرافیکی (GUI) مینیمال یکپارچه‌شده با mpv است تا امکان کنترل اولیه با ماوس را فراهم کند. هدف آن، آسان‌تر کردن تعامل برای کاربران جدید و فعال‌سازی قابلیت پرش (seeking) دقیق و مستقیم است.
اگر mpv با پشتیبانی از Lua کامپایل شده باشد، OSC به‌طور پیش‌فرض فعال است. می‌توان آن را با استفاده از گزینهٔ --osc=no به‌طور کامل غیرفعال کرد.
"استفاده از OSC (Using the OSC)"
به‌طور پیش‌فرض، هر زمان که ماوس در داخل پنجرهٔ پخش‌کننده حرکت داده شود، OSC نمایان می‌شود و چنانچه ماوس به مدت ۰٫۵ ثانیه در خارج از OSC حرکت داده نشود یا از پنجره خارج شود، پنهان خواهد شد.
"رابط کاربری (The Interface)"
0.0
3.5
+------+---------+---------+-----------------------------------------------+
| menu | pl prev | pl next | title cache |
+------+------+------+---------+-----------+------+-------+-----+-----+----+
| play | skip | skip | time | seekbar | time | audio | sub | vol | fs |
| | back | frwd | elapsed | | left | | | | |
+------+------+------+---------+-----------+------+-------+-----+-----+----+
168u
168u
0.0
menu
box center;
l|l.
کلیک چپ باز کردن منو
کلیک چپ پخش فایل قبلی در فهرست پخش
Shift+کلیک چپ نمایش فهرست پخش
کلیک وسط نمایش فهرست پخش
کلیک راست باز کردن منوی فهرست پخش
کلیک چپ پخش فایل بعدی در فهرست پخش
Shift+کلیک چپ نمایش فهرست پخش
کلیک وسط نمایش فهرست پخش
کلیک راست باز کردن منوی فهرست پخش
موقعیت فعلی در فهرست پخش و media-title، نام فایل یا عنوان سفارشی، یا نام
فصل مقصد را هنگام نگه‌داشتن ماوس روی نوار جستجو (seekbar) نمایش می‌دهد.
کلیک چپ نمایش اطلاعات فایل و تراک
Shift+کلیک چپ نمایش مسیر
کلیک وسط نمایش مسیر
کلیک راست باز کردن منوی تاریخچه
وضعیت فعلی پر بودن حافظهٔ موقت (cache) را نمایش می‌دهد
کلیک چپ تغییر وضعیت پخش/توقف موقت (play/pause)
Shift+کلیک چپ تغییر وضعیت تکرار بی‌نهایت فهرست پخش
کلیک وسط تغییر وضعیت تکرار بی‌نهایت فهرست پخش
کلیک راست تغییر وضعیت تکرار بی‌نهایت فایل فعلی
skip back
box center;
l|l.
کلیک چپ رفتن به آغاز فصل / فصل قبلی
Shift+کلیک چپ نمایش فصل‌ها
کلیک وسط نمایش فصل‌ها
کلیک راست باز کردن منوی فصل‌ها
کلیک چپ رفتن به فصل بعدی
Shift+کلیک چپ نمایش فصل‌ها
کلیک وسط نمایش فصل‌ها
کلیک راست باز کردن منوی فصل‌ها
نمایش برچسب زمانی موقعیت فعلی پخش
کلیک چپ تغییر وضعیت نمایش کدهای زمانی با میلی‌ثانیه
نشان‌دهنده موقعیت فعلی پخش و موقعیت فصل‌ها
کلیک چپ پرش به موقعیت
کلیک راست پرش به نزدیک‌ترین فصل
چرخ ماوس پرش به جلو/عقب
نمایش برچسب زمانی زمان باقی‌مانده پخش
کلیک چپ جابه‌جایی بین زمان کل و زمان باقی‌مانده
نمایش ترک انتخاب‌شده و تعداد ترک‌های موجود
کلیک چپ پیمایش ترک‌های صوتی/زیرنویس رو به جلو
Shift+کلیک چپ پیمایش ترک‌های صوتی/زیرنویس رو به عقب
کلیک وسط پیمایش ترک‌های صوتی/زیرنویس رو به عقب
کلیک راست باز کردن منوی ترک‌های صوتی/زیرنویس
چرخ ماوس پیمایش ترک‌های صوتی/زیرنویس رو به جلو/عقب
کلیک چپ تغییر وضعیت بی‌صدا
کلیک راست باز کردن منوی دستگاه صوتی
چرخ ماوس افزایش/کاهش بلندی صدا
کلیک چپ تغییر وضعیت تمام‌صفحه
کلیک راست تغییر وضعیت بیشینه‌سازی پنجره
از زمان mpv 0.40.0، این امکان وجود دارد که دستورهایی را برای اجرا با کنش‌های ماوس روی برخی عناصر رابط کاربری پیکربندی کرد و رفتارهای پیش‌فرض چندین عنصر تغییر یافته است. اگر رفتارهای قدیمی‌تر را ترجیح می‌دهید، به etc/restore-osc-bindings.conf در مخزن گیت mpv نگاهی بیندازید.

این کلیدهای میانبر در حالت پیش‌فرض در صورتی که چیز دیگری به این کلیدها اختصاص نیافته باشد، فعال هستند. در صورت تداخل، این تابع باید به کلید دیگری اختصاص یابد. بخش Script Commands را ببینید.

del چرخش وضعیت نمایانی بین never / auto (mouse-move) / always

این اسکریپت را می‌توان از طریق فایل پیکربندی script-opts/osc.conf واقع در دایرکتوری کاربر mpv و همچنین از طریق گزینه خط فرمان --script-opts سفارشی‌سازی کرد. نحو پیکربندی در توابع mp.options شرح داده شده است.

برای جلوگیری از تداخل با اسکریپت‌های دیگر، تمام گزینه‌ها باید پیشوند osc- داشته باشند.

مثال:

--script-opts=osc-optionA=value1,osc-optionB=value2

پیش‌فرض: bottombar

طرح‌بندی برای OSC. موارد موجود در حال حاضر عبارتند از: box، slimbox، bottombar، topbar، slimbottombar و slimtopbar. پیش‌فرض قبل از نسخه 0.21.0 برابر 'box' بود.

پیش‌فرض: bar

سبک نشانگر موقعیت پخش و شکل کلی نوار پیمایش را تعیین می‌کند: bar، diamond یا knob.

پیش‌فرض: 0.6

نسبت اندازه دستگیره نوار پیمایش در صورتی که seekbarstyle روی diamond یا knob تنظیم شده باشد. این مقدار نسبت به ارتفاع کامل نوار پیمایش سنجیده می‌شود.

پیش‌فرض: yes

حالت مورد استفاده برای پیمایش هنگام کشیدن نوار پیمایش را کنترل می‌کند. اگر روی yes تنظیم شود، حالت پیمایش پیش‌فرض استفاده می‌شود (معمولاً فریم‌های کلیدی، اما پیش‌فرض‌ها و روش‌های اکتشافی پخش‌کننده می‌توانند آن را به دقیق تغییر دهند). اگر روی no تنظیم شود، به جای آن از پیمایش دقیق هنگام کشیدن ماوس استفاده خواهد شد. فریم‌های کلیدی ترجیح داده می‌شوند، اما پیمایش‌های دقیق ممکن است در مواردی که فریم‌های کلیدی یافت نمی‌شوند مفید باشند. توجه داشته باشید که استفاده از پیمایش دقیق می‌تواند کشیدن ماوس را به طور بالقوه بسیار کُندتر کند.

پیش‌فرض: inverted

نمایش محدوده‌های قابل پیمایش روی نوار پیمایش. bar آن‌ها را در تمام ارتفاع نوار نشان می‌دهد، line به صورت یک خط ضخیم و inverted به صورت یک خط باریک که بر روی نشانگرهای موقعیت پخش معکوس می‌شود. none آن‌ها را پنهان می‌کند. علاوه بر این، slider یک دستگیره دائمی را درون نوار پیمایش همراه با محدوده‌های کَش‌شده درون آن نشان می‌دهد. توجه داشته باشید که این موارد بر اساس گزینه seekbarstyle متفاوت به نظر می‌رسند. همچنین، slider در صورتی که seekbarstyle روی bar تنظیم شده باشد کار نمی‌کند.

پیش‌فرض: yes

کنترل می‌کند که آیا در صورت تنظیم seekbarstyle روی bar، محدوده‌های قابل پیمایشِ خطی روی نوار پیمایش نمایش داده شوند یا به صورت جداگانه.

پیش‌فرض: 20

مقدار آلفای (شفافیت) محدوده‌های قابل پیمایش، از 0 (کدر) تا 255 (کاملاً شفاف).

پیش‌فرض: yes

به طور پیش‌فرض، بالا یا پایین رفتن با چرخ ماوس در صورتی که ماوس روی یکی از عناصر OSC قرار داشته باشد، می‌تواند کنش‌های خاصی (مانند پیمایش) را فعال کند. برای غیرفعال کردن هرگونه رفتار ویژه چرخ ماوس، آن را روی no تنظیم کنید.

پیش‌فرض: 0.5

اندازه منطقه مرده (deadzone). منطقه مرده ناحیه‌ای است که باعث می‌شود حرکت ماوس رفتاری شبیه به خروج از پنجره داشته باشد. حرکت در آنجا باعث نمایش OSC نمی‌شود و در صورت ورود ماوس به آن، OSC فوراً پنهان خواهد شد. منطقه مرده از لبه پنجره مقابل OSC شروع می‌شود و اندازه آن مشخص می‌کند که چه میزان از پنجره را پوشش دهد. مقادیر بین 0.0 و 1.0 هستند، که 0 به معنای این است که OSC همیشه با حرکت ماوس در پنجره باز می‌شود، و 1 به این معناست که OSC تنها زمانی نمایش داده می‌شود که ماوس روی آن شناور شود. مقدار پیش‌فرض قبل از نسخه 0.21.0 برابر 0 بود.

پیش‌فرض: 0

حداقل تعداد پیکسل‌هایی که ماوس باید بین تیک‌ها حرکت کند تا OSC نمایش داده شود. مقدار پیش‌فرض قبل از نسخه 0.21.0 برابر 3 بود.

پیش‌فرض: yes

فعال‌سازی OSC در حالت پنجره‌ای

پیش‌فرض: yes

فعال‌سازی OSC در حالت تمام‌صفحه

پیش‌فرض: yes

نمایش نشان‌واره و پیام mpv در زمان بیکاری

پیش‌فرض: 1.0

ضریب مقیاس OSC در حالت پنجره‌ای.

پیش‌فرض: 1.0

ضریب مقیاس OSC در حالت تمام‌صفحه

پیش‌فرض: auto

مقیاس‌بندی OSC همراه با ویدیو. no تلاش می‌کند تا جایی که اندازه پنجره اجازه می‌دهد اندازه OSC را ثابت نگه دارد. auto مقیاس OSC را همراه با OSD تنظیم می‌کند، که بسته به گزینه --osd-scale-by-window همراه با پنجره مقیاس‌بندی می‌شود یا در اندازه ثابتی نگه داشته می‌شود.

پیش‌فرض: 0.8

تراز عمودی در طرح‌بندی‌های box و slimbox، از -1 (بالا) تا 1 (پایین).

پیش‌فرض: 0.0

تراز افقی در طرح‌بندی‌های box و slimbox، از -1 (چپ) تا 1 (راست).

پیش‌فرض: 0

حاشیه از پایین (bottombar، slimbottombar) یا بالا (topbar، slimtopbar)، به پیکسل.

پیش‌فرض: 80

مقدار آلفای جعبه پس‌زمینه، از 0 (کدر) تا 255 (کاملاً شفاف)

پیش‌فرض: 500

مدت زمان به میلی‌ثانیه تا پنهان شدن OSC در صورت عدم حرکت ماوس؛ نباید منفی باشد

پیش‌فرض: 200

مدت زمان جلوه‌های محو شدن به میلی‌ثانیه، 0 = بدون محو شدن..TP fadein پیش‌فرض: no

فعال‌سازی محو شدن تدریجی (fade-in).

title
پیش‌فرض: ${!playlist-count==1:[${playlist-pos-1}/${playlist-count}] }${media-title}

رشته‌ای با پشتیبانی از بسط ویژگی‌ها (property expansion) که به عنوان عنوان OSC نمایش داده خواهد شد. تگ‌های ASS گریز داده می‌شوند (escaped) و خطوط جدید به فاصله تبدیل می‌شوند.

پیش‌فرض: 1

اندازه حاشیه (outline) بالن راهنما (tooltip) هنگام استفاده از چیدمان‌های bottombar یا topbar

پیش‌فرض: no

نمایش کل زمان به جای زمان باقی‌مانده

پیش‌فرض: yes

اینکه آیا نمایش زمان باقی‌مانده، سرعت پخش را در نظر می‌گیرد یا خیر. yes - چقدر زمان پخش در سرعت فعلی باقی مانده است. no - چقدر از زمان ویدیو باقی مانده است.

پیش‌فرض: no

نمایش کدهای زمانی به همراه میلی‌ثانیه

پیش‌فرض: 100 (مجاز: 50-200)

تنظیم فضای رزرو شده برای کدهای زمانی (زمان فعلی و زمان باقی‌مانده) در چیدمان‌های bottombar و topbar. پهنای کد زمانی به قلم بستگی دارد و در برخی قلم‌ها فاصله‌گذاری نزدیک به کدهای زمانی بیش از حد کوچک می‌شود. برای افزایش این فاصله از مقادیر بالاتر از 100 یا برای کاهش آن از مقادیر کمتر از 100 استفاده کنید.

پیش‌فرض: auto (پنهان/نمایش خودکار با حرکت ماوس)

همچنین از never و always پشتیبانی می‌کند

پیش‌فرض: never_auto_always

فهرست حالت‌های نمایانی (visibility modes) برای چرخش میان آن‌ها هنگام فراخوانی پیام اسکریپت osc-visibility cycle. حالت‌ها با _ جدا می‌شوند.

پیش‌فرض: 80

حداکثر نویسه‌ها برای عنوان osc در چیدمان box. برنامه mpv پهنای متن را روی صفحه اندازه‌گیری نمی‌کند، بنابراین باید آن را با تعداد نویسه‌ها محدود کند. مقدار پیش‌فرض محافظه‌کارانه انتخاب شده است تا استفاده از قلم‌های عریض بدون سرریز امکان‌پذیر باشد. با این حال، در بسیاری از قلم‌های متداول می‌توان از مقادیر بزرگ‌تری استفاده کرد. بسته به شرایط ممکن است نتیجه متفاوت باشد.

پیش‌فرض: no

اینکه آیا osc روی ویدیو هم‌پوشانی داشته باشد (no)، یا ویدیو در نواحی پوشش‌داده‌نشده توسط osc محدود (box) شود (yes). اگر این گزینه تنظیم شده باشد، osc ممکن است گزینه‌های --video-margin-ratio-* را بازنویسی کند، حتی اگر کاربر آن‌ها را تنظیم کرده باشد. (اگر همه آن‌ها روی مقادیر پیش‌فرض تنظیم شده باشند، آن‌ها را بازنویسی نخواهد کرد.) علاوه بر این، visibility باید روی always تنظیم شده باشد. در غیر این صورت، این گزینه هیچ کاری انجام نمی‌دهد.

در حال حاضر، این قابلیت تنها برای چیدمان‌های bottombar، slimbottombar، topbar و slimtopbar پشتیبانی می‌شود. سایر چیدمان‌ها در صورت تنظیم این گزینه تغییر نمی‌کنند. به طور جداگانه، در صورت وجود کنترل‌های پنجره (زیر را ببینید)، بدون در نظر گرفتن اینکه کدام چیدمان osc در حال استفاده است، تحت تأثیر قرار خواهند گرفت.

حاشیه ثابت است و حتی اگر OSC طوری پیکربندی شده باشد که تنها با تعامل ماوس نمایان شود، ظاهر خواهد شد. اگر OSC نامرئی باشد، حاشیه صرفاً با رنگ پس‌زمینه (به‌طور پیش‌فرض سیاه) پر می‌شود.

در حال حاضر این مورد همچنان باعث هم‌پوشانی OSC با زیرنویس‌ها می‌شود (اگر گزینه --sub-use-margins روی yes که پیش‌فرض است، تنظیم شده باشد). ممکن است بعداً اصلاح شود.

این گزینه با خروجی‌های ویدیویی نظیر --vo=xv که OSD را روی ویدیوی مقیاس‌بندی‌نشده رندر می‌کنند به درستی کار نمی‌کند.

پیش‌فرض: auto (نمایش کنترل‌های پنجره در صورت نبود حاشیه پنجره)

اینکه آیا کنترل‌های مدیریت پنجره روی ویدیو نمایش داده شوند یا خیر، و در صورت نمایش، در کدام سمت پنجره قرار گیرند. این ویژگی ممکن است زمانی مطلوب باشد که پنجره بدون تزئینات (decorations) باشد، چه به این دلیل که صراحتاً غیرفعال شده‌اند (border=no) یا به این دلیل که بستر فعلی از آن‌ها پشتیبانی نمی‌کند (مانند: gnome-shell با wayland).

مجموعه کنترل‌های پنجره ثابت است و شامل minimize، maximize، و quit می‌شود. همه پلتفرم‌ها minimize و maximize را پیاده‌سازی نکرده‌اند، اما quit همیشه کار خواهد کرد.

پیش‌فرض: right

در صورت نمایش کنترل‌های پنجره، مشخص می‌کند که در کدام سمت باید تراز شوند.

از left و right پشتیبانی می‌کند که کنترل‌ها را در همان سمت‌های مربوطه قرار می‌دهد.

پیش‌فرض: ${media-title}

رشته‌ای با پشتیبانی از بسط ویژگی‌ها که به عنوان عنوان windowcontrols نمایش داده خواهد شد. تگ‌های ASS گریز داده می‌شوند (escaped)، و خطوط جدید و اسلش‌های انتهایی حذف می‌شوند.

پیش‌فرض: no

برای کاهش حال‌وهوای جشن روی yes تنظیم کنید (یعنی غیرفعال کردن کلاه بابانوئل در ماه دسامبر).

پیش‌فرض: yes

به‌روزرسانی موقعیت نشانگرهای فصل هنگام تغییر مدت زمان، برای مثال در پخش‌های زنده (live streams). این به‌روزرسانی‌ها بهینه‌سازی نشده‌اند - غیرفعال کردن آن را در سیستم‌های بسیار ضعیف مد نظر داشته باشید.

پیش‌فرض: Chapter: %s

الگویی برای نمایش نام فصل هنگام بردن ماوس روی نوار پیمایش (seekbar). از no برای غیرفعال کردن نمایش فصل با نگه‌داشتن ماوس استفاده کنید. در غیر این صورت این یک الگوی string.format در lua است و %s با نام واقعی جایگزین می‌شود.

پیش‌فرض: no

استفاده از علامت منفی یونیکد به جای خط پیوند اَسکی هنگام نمایش زمان باقی‌مانده پخش.

پیش‌فرض: #000000

رنگ پس‌زمینه OSC را تنظیم می‌کند.

پیش‌فرض: #FFFFFF

رنگ کد زمانی و نوار پیمایش OSC را تنظیم می‌کند.

پیش‌فرض: #FFFFFF

رنگ عنوان ویدیو را تنظیم می‌کند. قالب‌بندی شده به صورت #RRGGBB.

پیش‌فرض: #FFFFFF

رنگ کد زمانی در موقعیت نشانگر ماوس روی نوار پیمایش را تنظیم می‌کند.

پیش‌فرض: #FFFFFF

رنگ حاشیه (outline) کد زمانی در موقعیت نشانگر ماوس روی نوار پیمایش را تنظیم می‌کند. همچنین بر کد زمانی در چیدمان slimbox تأثیر می‌گذارد.

پیش‌فرض: #FFFFFF

رنگ‌های دکمه‌های بزرگ را تنظیم می‌کند.

پیش‌فرض: #FFFFFF

رنگ‌های دکمه‌های بالایی را تنظیم می‌کند.

پیش‌فرض: #FFFFFF

رنگ‌های دکمه‌های کوچک سمت چپ را در چیدمان box تنظیم می‌کند..TP small_buttonsR_color پیش‌فرض: #FFFFFF

رنگ دکمه‌های کوچک سمت راست را در چیدمان box تنظیم می‌کند.

پیش‌فرض: #999999

رنگ عناصری را که فشرده یا نگه داشته شده‌اند تنظیم می‌کند.

پیش‌فرض: 1/60

حداقل بازه زمانی بین بازترسیم‌های OSC را به ثانیه تنظیم می‌کند. این مقدار می‌تواند روی سیستم‌های سریع کاهش یابد تا رندرینگ OSC روان‌تر شود.

اگر tick_delay_follow_display_fps روی yes تنظیم شده باشد و VO از ویژگی display-fps پشتیبانی کند، نادیده گرفته می‌شود.

پیش‌فرض: no

استفاده از fps نمایشگر برای محاسبه بازه زمانی بین بازترسیم‌های OSC.

گزینه‌های زیر تعیین می‌کنند هنگام کلیک روی دکمه‌ها چه دستوراتی اجرا شوند. دستورات mbtn_mid با shift+mbtn_left نیز فعال می‌شوند.

menu_mbtn_left_command=script-binding select/menu; script-message-to osc osc-hide

menu_mbtn_mid_command=

menu_mbtn_right_command=

playlist_prev_mbtn_left_command=playlist-prev; show-text ${playlist} 3000

playlist_prev_mbtn_mid_command=show-text ${playlist} 3000

playlist_prev_mbtn_right_command=script-binding select/select-playlist; script-message-to osc osc-hide

playlist_next_mbtn_left_command=playlist-next; show-text ${playlist} 3000

playlist_next_mbtn_mid_command=show-text ${playlist} 3000

playlist_next_mbtn_right_command=script-binding select/select-playlist; script-message-to osc osc-hide

title_mbtn_left_command=script-binding stats/display-page-5

title_mbtn_mid_command=show-text ${path}

title_mbtn_right_command=script-binding select/select-watch-history; script-message-to osc osc-hide

play_pause_mbtn_left_command=cycle pause

play_pause_mbtn_mid_command=cycle-values loop-playlist inf no

play_pause_mbtn_right_command=cycle-values loop-file inf no

chapter_prev_mbtn_left_command=osd-msg add chapter -1

chapter_prev_mbtn_mid_command=show-text ${chapter-list} 3000

chapter_prev_mbtn_right_command=script-binding select/select-chapter; script-message-to osc osc-hide

chapter_next_mbtn_left_command=osd-msg add chapter 1

chapter_next_mbtn_mid_command=show-text ${chapter-list} 3000

chapter_next_mbtn_right_command=script-binding select/select-chapter; script-message-to osc osc-hide

audio_track_mbtn_left_command=cycle audio

audio_track_mbtn_mid_command=cycle audio down

audio_track_mbtn_right_command=script-binding select/select-aid; script-message-to osc osc-hide

audio_track_wheel_down_command=cycle audio

audio_track_wheel_up_command=cycle audio down

sub_track_mbtn_left_command=cycle sub

sub_track_mbtn_mid_command=cycle sub down

sub_track_mbtn_right_command=script-binding select/select-sid; script-message-to osc osc-hide

sub_track_wheel_down_command=cycle sub

sub_track_wheel_up_command=cycle sub down

volume_mbtn_left_command=no-osd cycle mute

volume_mbtn_mid_command=

volume_mbtn_right_command=script-binding select/select-audio-device; script-message-to osc osc-hide

volume_wheel_down_command=add volume -5

volume_wheel_up_command=add volume 5

fullscreen_mbtn_left_command="cycle fullscreen"

fullscreen_mbtn_mid_command=

fullscreen_mbtn_right_command="cycle window-maximized".SS دکمه‌های سفارشی (Custom Buttons)

گزینه‌های اسکریپت (script-opts) بیشتری برای تعریف دکمه‌های سفارشی در چیدمان‌های bottombar و topbar در دسترس هستند.

مثالی برای افزودن دکمه‌های تکرار، پخش تصادفی و سرعت
custom_button_1_content=🔁
custom_button_1_mbtn_left_command=cycle-values loop-file inf no
custom_button_1_mbtn_right_command=cycle-values loop-playlist inf no
custom_button_2_content=🔀
custom_button_2_mbtn_left_command=playlist-shuffle
custom_button_3_content=⏱
custom_button_3_mbtn_left_command=add speed 1
custom_button_3_mbtn_right_command=set speed 1
custom_button_3_wheel_up_command=add speed 0.25
custom_button_3_wheel_down_command=add speed -0.25

اسکریپت OSC به دستورات اسکریپتی خاصی گوش می‌دهد. این دستورات را می‌توان در input.conf مقید کرد، یا از طریق اسکریپت‌های دیگر فرستاد.

حالت نمایانی را میان never / auto (با حرکت ماوس) / always و همچنین cycle برای چرخش میان این حالت‌ها کنترل می‌کند. اگر آرگومان دوم داده شود (هر مقداری)، خروجی روی OSD نمایش داده نخواهد شد (بی‌صدا می‌شود).
باعث نمایان شدن OSC می‌شود، درست مانند زمانی که کاربر ماوس را حرکت داده باشد.
هنگامی که visibility روی auto باشد، OSC را پنهان می‌کند.

مثال

می‌توانید این را در input.conf قرار دهید تا OSC را با کلید a پنهان کنید و با کلید b آن را در حالت خودکار (پیش‌فرض) قرار دهید:

a script-message osc-visibility never
b script-message osc-visibility auto
نمایانی نشان‌وارهٔ mpv را در حالت بیکاری کنترل می‌کند. آرگومان‌های معتبر عبارتند از yes، no و cycle برای تغییر وضعیت میان yes و no. اگر آرگومان دومی داده شود (هر مقداری)، خروجی روی OSD نمایش داده نخواهد شد.

این اسکریپت داخلی، اطلاعات و آمارهای مربوط به فایل در حال پخش را نمایش می‌دهد. اگر mpv با پشتیبانی از Lua کامپایل شده باشد، به‌طور پیش‌فرض فعال است. می‌توان آن را با استفاده از گزینهٔ --load-stats-overlay=no به‌طور کامل غیرفعال کرد.

کلیدهای میانبر زیر به‌طور پیش‌فرض فعال هستند مگر اینکه عملکرد دیگری از قبل به آن‌ها اختصاص یافته باشد:

i نمایش آمارها برای یک مدت‌زمان معین
I تغییر وضعیت نمایش آمارها (تا زمان فشردن دوباره نمایش داده می‌شود)
? تغییر وضعیت نمایش کلیدهای میانبر

در حالی که آمارها روی صفحه نمایش داده می‌شوند، کلیدهای میانبر زیر صرف‌نظر از میانبرهای موجود فعال خواهند بود. آن‌ها به شما امکان می‌دهند میان صفحات مختلف آمار جابه‌جا شوید:

1 نمایش آمارهای معمول
2 نمایش زمان‌بندی فریم‌ها (پیمایش)
3 آمارهای حافظهٔ موقت ورودی (input cache)
4 کلیدهای میانبر فعال (پیمایش)
5 اطلاعات قطعه‌های برگزیده (پیمایش)
0 موارد داخلی (پیمایش)

اگر نمایش آمارها به‌صورت دائم فعال شده باشد، این کلید میانبر نیز کار می‌کند:

ESC بستن آمارها

در صفحاتی که از پیمایش پشتیبانی می‌کنند، این کلیدهای میانبر نیز فعال هستند:

UP پیمایش یک خط به بالا
DOWN پیمایش یک خط به پایین

در صفحهٔ ۴، این کلید میانبر نیز فعال است:

/ جستجوی کلیدهای میانبر
این اسکریپت می‌تواند از طریق فایل پیکربندی script-opts/stats.conf
واقع در دایرکتوری کاربری mpv و همچنین از طریق گزینه خط فرمان --script-opts
شخصی‌سازی شود. نحو (syntax) پیکربندی در توابع mp.options شرح داده شده است.
"گزینه‌های قابل تنظیم (Configurable Options)"
0.0
key_page_1
پیش‌فرض: 1
key_page_2
پیش‌فرض: 2
key_page_3
پیش‌فرض: 3
key_page_4
پیش‌فرض: 4
key_page_5
پیش‌فرض: 5
key_page_0
پیش‌فرض: 0
key_exit
پیش‌فرض: ESC
کلیدهای میان‌بر برای جابه‌جایی میان صفحات در زمان نمایش وضعیت (stats).
key_scroll_up
پیش‌فرض: UP
key_scroll_down
پیش‌فرض: DOWN
key_scroll_search
پیش‌فرض: /
scroll_lines
پیش‌فرض: 1
کلیدهای میان‌بر پیمایش و تعداد خطوط جهت پیمایش در صفحاتی که از آن پشتیبانی می‌کنند.
duration
پیش‌فرض: 4
مدت زمان نمایش وضعیت بر حسب ثانیه (حالت یک‌باره یا oneshot).
redraw_delay
پیش‌فرض: 1
مدت زمان لازم برای بازنشانی وضعیت نمایش‌یافته بر حسب ثانیه (در حالت فعال‌سازی مداوم یا toggling).
persistent_overlay
پیش‌فرض: no
هنگامی که روی no باشد، سایر اسکریپت‌هایی که متنی را روی صفحه چاپ می‌کنند می‌توانند روی وضعیت نمایش‌یافته بازنویسی کنند. هنگامی که روی yes باشد، وضعیت نمایش‌یافته به صورت پایدار برای مدت زمان مربوطه نشان داده می‌شود. این مورد در صورتی که چندین اسکریپت هم‌زمان تصمیم به چاپ متن بگیرند می‌تواند منجر به تداخل و هم‌پوشانی متن شود.
file_tag_max_length
پیش‌فرض: 128
تنها برچسب‌های فایلی را نمایش می‌دهد که طول آن‌ها (بر حسب بایت) کوتاه‌تر از این مقدار باشد.
file_tag_max_count
پیش‌فرض: 16
تنها تعداد مشخص‌شده‌ی نخست از برچسب‌های فایل را نمایش می‌دهد.
term_clip
پیش‌فرض: yes
تعیین می‌کند که آیا خطوط به اندازه عرض ترمینال برش داده شوند (clip) یا خیر.
plot_perfdata
پیش‌فرض: no
نمایش نمودارها برای داده‌های عملکرد و کارایی (صفحه ۲).
plot_vsync_ratio
پیش‌فرض: no
plot_vsync_jitter
پیش‌فرض: no
نمایش نمودارها برای مقادیر vsync و jitter (صفحه ۱). تنها در حالت فعال بودن (toggled).
plot_cache
پیش‌فرض: yes
نمایش نمودارها برای مقادیر حافظه نهان یا کش (صفحه ۳). تنها در حالت فعال بودن (toggled).
plot_tonemapping_lut
پیش‌فرض: no
فعال‌سازی خودکار مصورسازی LUT مربوط به نگاشت رنگمایه (tone-mapping). تنها در حالت فعال بودن (toggled).
flush_graph_data
پیش‌فرض: yes
پاک‌سازی بافرهای داده استفاده‌شده برای رسم نمودارها هنگام تغییر وضعیت (toggling).
font
پیش‌فرض: مشابه osd-font
نام قلم. برای تجربه بصری بهینه، باید تا حد امکان از وزن‌های مختلف قلم پشتیبانی کند.
font_mono
پیش‌فرض: monospace
نام قلم برای بخش‌هایی که نویسه‌های با عرض ثابت (monospaced) جهت تراز کردن متن ضروری هستند. در حال حاضر، ارقام با عرض ثابت کفایت می‌کنند.
font_size
پیش‌فرض: 20
اندازه قلم استفاده‌شده برای رندر متن.
font_color
پیش‌فرض: مشابه osd-color
رنگ متن.
border_size
پیش‌فرض: 1.65
اندازه حاشیه کشیده‌شده دور قلم.
border_color
پیش‌فرض: مشابه osd-border-color
رنگ حاشیه متن.
shadow_x_offset
پیش‌فرض: مشابه --osd-shadow-offset
فاصله افقی از متن برای قرارگیری سایه.
shadow_y_offset
پیش‌فرض: مشابه --osd-shadow-offset
فاصله عمودی از متن برای قرارگیری سایه.
shadow_color
پیش‌فرض: مشابه osd-shadow-color
رنگ سایه متن.
alpha
پیش‌فرض: 11
میزان شفافیت متن در صورت تعیین font_color، شفافیت حاشیه‌های متن در صورت تعیین border_color، و شفافیت سایه‌های متن در صورت تعیین shadow_color.
plot_bg_border_color
پیش‌فرض: 0000FF
رنگ حاشیه استفاده‌شده برای رسم نمودارها.
plot_bg_border_width
پیش‌فرض: 1.25
عرض حاشیه استفاده‌شده برای رسم نمودارها.
plot_bg_color
پیش‌فرض: 262626
رنگ پس‌زمینه استفاده‌شده برای رسم نمودارها.
plot_color
پیش‌فرض: FFFFFF
رنگ استفاده‌شده برای رسم نمودارها.
vidscale
پیش‌فرض: auto.sp
متن و نمودارها را همراه با ویدیو مقیاس‌بندی می‌کند.
مقدار no تلاش می‌کند اندازه‌ها را ثابت نگه دارد.
مقدار auto متن و نمودارها را همراه با OSD مقیاس‌بندی می‌کند؛ که خود بسته به گزینهٔ --osd-scale-by-window با اندازهٔ پنجره مقیاس‌بندی شده یا در اندازه‌ای ثابت نگه داشته می‌شود.
168u
نکته: رنگ‌ها به‌صورت مقادیر هگزادسیمال مشخص می‌شوند و از ترتیب برچسب‌های ASS پیروی می‌کنند: BBGGRR
(آبی سبز قرمز).
کلیدهای میانبر گوناگون (Different key bindings)
کلیدهای بیشتری را می‌توان برای نمایش آمار در input.conf پیکربندی کرد:
0.0
3.5
e script-binding stats/display-stats
E script-binding stats/display-stats-toggle
168u
168u
و برای نمایش مستقیم یک صفحهٔ مشخص:
0.0
3.5
i script-binding stats/display-page-1
h script-binding stats/display-page-4-toggle
168u
168u
صفحهٔ کلیدهای میانبر فعال (Active key bindings page)
کلیدهای میانبر فعال و دستورهایی را که به آن‌ها متصل شده‌اند، به‌جز کلیدهای تعاملیِ خود اسکریپت آمار، فهرست می‌کند. همچنین برای نمایی دقیق‌تر از هر اتصال کلید، --input-test را ببینید.
کلیدها به‌طور خودکار با استفاده از تحلیلی ساده روی رشتهٔ دستور گروه‌بندی می‌شوند و نباید انتظار دقت گروه‌بندی در سطح مستندات را داشت، با این وجود همچنان تا حد معقولی مفید است.
استفاده از --idle --script-opt=stats-bindlist=yes فهرست را در ترمینال چاپ کرده و بلافاصله خارج می‌شود. خطوط طولانی به پهنای ترمینال بریده می‌شوند، مگر آنکه این ویژگی با --script-opt=stats-term_clip=no غیرفعال شود. توالی‌های گریز (escape sequences) را می‌توان با افزودن - پیش از yes غیرفعال کرد، یعنی --script-opt=stats-bindlist=-yes.
همانند --input-test، این فهرست شامل اتصال‌های input.conf و اسکریپت‌های کاربر می‌شود. از --no-config برای فهرست کردن تنها اتصال‌های توکار استفاده کنید.
صفحهٔ اطلاعات داخلی (Internal stuff page)
بیشتر مدخل‌های نشان‌داده‌شده در این صفحه معنای نسبتاً مبهمی دارند. احتمالاً هیچ‌کدام از آن‌ها برای شما مفید نیستند. تلاشی برای استفاده از آن نکنید. وجودش را فراموش کنید.
انتخاب این مورد برای نخستین بار، جمع‌آوری برخی داده‌های عملکردی داخلی را آغاز می‌کند. این بدان معناست که در ادامهٔ زمان اجرای پخش‌کننده، عملکرد کمی پایین‌تر از حد معمول خواهد بود (حتی اگر صفحهٔ آمار بسته شود). توجه داشته باشید که خود صفحهٔ آمار منابع زیادی از پردازنده (CPU) و حتی پردازنده گرافیکی (GPU) مصرف می‌کند و ممکن است تأثیر شدیدی بر عملکرد بگذارد.
اطلاعات نمایش‌داده‌شده در طول تأخیر بازطراحی (نشان‌داده‌شده در فیلد poll-time) انباشته می‌شوند.
این بخش مدخل‌هایی برای هر اسکریپت Lua اضافه می‌کند. اگر اسکریپت‌های در حال اجرای زیادی وجود داشته باشند، بخش‌هایی از فهرست خارج از صفحه قرار می‌گیرد، اما می‌توان آن را پیمایش کرد.
اگر پلتفرم زیرین از زمان‌های مجزای ریسه در pthread پشتیبانی نکند، زمان‌های نمایش‌داده‌شده ۰ یا مقداری تصادفی خواهند بود (گمان می‌رود در زمان نگارش این متن، تنها لینوکس مقادیر صحیح را از طریق APIهای pthread برای زمان‌های اختصاصی هر ریسه فراهم می‌کند).
بیشتر مدخل‌ها به‌صورت غیرشتاب‌زده (lazy) و تنها در حین جمع‌آوری داده اضافه می‌شوند، به همین دلیل ممکن است مدخل‌ها پس از مدتی به‌طور ناگهانی ظاهر شوند. همچنین به همین دلیل است که مدخل‌های مصرف حافظه برای اسکریپت‌هایی که از زمان شروع جمع‌آوری داده غیرفعال بوده‌اند وجود ندارند.
میزان مصرف حافظه تقریبی است و تکه‌تکه‌شدگی داخلی (internal fragmentation) را بازتاب نمی‌دهد.
گزارش مصرف حافظهٔ اسکریپت‌های JS به‌طور پیش‌فرض غیرفعال است زیرا جمع‌آوری داده‌ها در سمت JS دارای سربار بوده و مصرف حافظه را افزایش می‌دهد. این امکان را می‌توان با تنظیم گزینهٔ --js-memory-report پیش از آغاز به کار mpv فعال کرد.
اگر مدخل‌ها دارای دو حالت /time و /cpu باشند، اولی زمان واقعی (ساعت یکنواخت یا monotonic clock) را نشان می‌دهد، در حالی که دومی زمان CPU ریسه را ارائه می‌دهد (تنها در صورتی که API مربوطه در pthread فعال بوده و پشتیبانی شود)..SH "کنسول (CONSOLE)"
این اسکریپت امکان پردازش ورودی متنی کاربر را برای سایر اسکریپت‌ها از طریق API با نام mp.input فراهم می‌کند. این کنسول می‌تواند هم در پنجرهٔ ویدیو و هم در ترمینال نمایش داده شود. همچنین می‌توان آن را با استفاده از گزینهٔ --load-console=no به‌طور کامل غیرفعال کرد.
کنسول می‌تواند متن آزاد را پردازش کند یا موردی را از یک فهرست از پیش‌تعریف‌شده انتخاب نماید.
"کلیدهای میان‌بر حالت متن آزاد (Free-form text mode keybindings)"
0.0
ESC و Ctrl+[
پنهان کردن کنسول.
ENTER، Ctrl+j و Ctrl+m
انتخاب نخستین گزینهٔ تکمیل خودکار اگر پیش‌تر به‌صورت دستی موردی انتخاب نشده باشد، و اجرای دستور تایپ‌شده.
Shift+ENTER
تایپ یک نویسهٔ سطر جدید به‌صورت مستقیم (literal).
LEFT و Ctrl+b
انتقال مکان‌نما به نویسهٔ قبلی.
RIGHT و Ctrl+f
انتقال مکان‌نما به نویسهٔ بعدی.
Ctrl+LEFT و Alt+b
انتقال مکان‌نما به ابتدای کلمهٔ جاری، یا در صورت قرار داشتن بین کلمات، به ابتدای کلمهٔ قبلی.
Ctrl+RIGHT و Alt+f
انتقال مکان‌نما به انتهای کلمهٔ جاری، یا در صورت قرار داشتن بین کلمات، به انتهای کلمهٔ بعدی.
HOME و Ctrl+a
انتقال مکان‌نما به ابتدای سطر جاری.
END و Ctrl+e
انتقال مکان‌نما به انتهای سطر جاری.
BACKSPACE و Ctrl+h
حذف نویسهٔ قبلی.
Ctrl+d
پنهان کردن کنسول در صورت خالی بودن سطر جاری؛ در غیر این صورت، حذف نویسهٔ بعدی.
Ctrl+BACKSPACE و Ctrl+w
حذف متن از محل مکان‌نما تا ابتدای کلمهٔ جاری، یا در صورت قرار داشتن بین کلمات، تا ابتدای کلمهٔ قبلی.
Ctrl+DEL و Alt+d
حذف متن از محل مکان‌نما تا انتهای کلمهٔ جاری، یا در صورت قرار داشتن بین کلمات، تا انتهای کلمهٔ بعدی.
Ctrl+u
حذف متن از محل مکان‌نما تا ابتدای سطر جاری.
Ctrl+k
حذف متن از محل مکان‌نما تا انتهای سطر جاری.
Ctrl+c
پاک کردن سطر جاری.
UP و Ctrl+p
حرکت به عقب در تاریخچهٔ دستورها.
DOWN و Ctrl+n
حرکت به جلو در تاریخچهٔ دستورها.
PGUP
رفتن به اولین دستور در تاریخچه.
PGDN
توقف پیمایش در تاریخچهٔ دستورها.
Ctrl+r
جست‌وجو در تاریخچهٔ دستورها. برای کلیدهای میان‌بر در این حالت، SELECT را ببینید.
INSERT
تغییر وضعیت حالت درج (insert mode).
Ctrl+v
جای‌گذاری متن (استفاده از کلیپ‌بورد در X11 و Wayland).
Shift+INSERT
جای‌گذاری متن (استفاده از انتخاب اولیه [primary selection] در X11 و Wayland).
Ctrl+y
کپی کردن سطر جاری در کلیپ‌بورد.
TAB و Ctrl+i
پیمایش چرخشی میان گزینه‌های تکمیل خودکار.
Shift+TAB
پیمایش چرخشی معکوس میان گزینه‌های تکمیل خودکار.
Ctrl+l
پاک کردن تمام پیام‌های لاگ از کنسول.
MBTN_MID
جای‌گذاری متن (استفاده از انتخاب اولیه [primary selection] در X11 و Wayland).
WHEEL_UP
حرکت به عقب در تاریخچهٔ دستورها.
WHEEL_DOWN
حرکت به جلو در تاریخچهٔ دستورها.
0.0
• 2
ورودی صفحه‌کلید غیر-ASCII دارای محدودیت‌هایی است
• 2
کلیدهای مکان‌نما بین نقاط کد (code-points) در Unicode حرکت می‌کنند، نه خوشه‌های نویسه‌ای (grapheme clusters)
168u
"پیکربندی"
این اسکریپت می‌تواند از طریق فایل پیکربندی script-opts/console.conf
واقع در دایرکتوری کاربری mpv و همچنین از طریق گزینه خط فرمان --script-opts
سفارشی‌سازی شود. ساختار نحوی پیکربندی در توابع mp.options شرح داده شده است.
"گزینه‌های قابل پیکربندی"
0.0
monospace_font
پیش‌فرض: وابسته به پلتفرم
قلم تک‌عرض (monospace) مورد استفاده هنگامی که کامل‌سازی‌هایی برای تراز شدن در یک شبکه (grid) وجود دارد.
هنگامی که هیچ کامل‌سازی وجود ندارد، از --osd-font استفاده می‌شود.
font_size
پیش‌فرض: 24
اندازه قلم. زمانی که کنسول با پنجره مقیاس‌بندی نمی‌شود، این مقدار در
display-hidpi-scale ضرب خواهد شد.
border_size
پیش‌فرض: 1.65
اندازه حاشیه قلم.
background_alpha
پیش‌فرض: 80
میزان شفافیت پس‌زمینه منو. در محدوده 0 (کدر) تا 255
(کاملاً شفاف).
gap
پیش‌فرض: 0.2
فاصله بین موارد منو، که بر حسب درصدی از اندازه قلم مشخص می‌شود.
padding
پیش‌فرض: 10
فاصله درونی (padding) منو.
menu_outline_size
پیش‌فرض: 0
اندازه خط دور منو.
menu_outline_color
پیش‌فرض: #FFFFFF
رنگ خط دور منو.
corner_radius
پیش‌فرض: 8
شعاع گوشه‌های منو.
margin_x
پیش‌فرض: همانند --osd-margin-x
فاصله حاشیه از سمت چپ پنجره.
margin_y
پیش‌فرض: همانند --osd-margin-y
فاصله حاشیه از پایین پنجره.
scale_with_window
پیش‌فرض: auto
اینکه آیا کنسول با ارتفاع پنجره مقیاس‌بندی شود یا خیر. می‌تواند yes، no
یا auto باشد، که از مقدار --osd-scale-by-window پیروی می‌کند.
focused_color
پیش‌فرض: #222222
رنگ مورد انتخاب‌شده.
focused_back_color
پیش‌فرض: #FFFFFF
رنگ پس‌زمینه مورد انتخاب‌شده.
match_color
پیش‌فرض: #0088FF
رنگ نویسه‌هایی که با رشته جست‌وجوشده مطابقت دارند.
exact_match
پیش‌فرض: no
اینکه آیا پرس‌وجوهای جست‌وجوی منو به‌جای حالت فازی (fuzzy)، به‌طور دقیق مطابقت داده شوند یا خیر. بدون
این گزینه، قرار دادن پیشوند ' در ابتدای پرس‌وجوها تطابق دقیق را فعال می‌کند.
case_sensitive
پیش‌فرض: no
اینکه آیا جست‌وجوهای دقیق به بزرگی و کوچکی حروف حساس باشند یا خیر. تنها با نویسه‌های ASCII کار می‌کند.
history_dedup
پیش‌فرض: true
حذف موارد تکراری در تاریخچه به‌گونه‌ای که فقط آخرین مورد نگه‌داری شود.
font_hw_ratio
پیش‌فرض: auto
نسبت ارتفاع قلم به عرض قلم.
عرض شبکه کامل‌سازی‌ها را تنظیم می‌کند.
مقدارهای در محدوده 1.8..2.5 برای قلم‌های تک‌عرض (monospace) متداول معقول هستند.
این اسکریپت امکان اجرا و تکمیل تعاملی دستورهای ورودی را در کنسول
فراهم می‌کند و همچنین لاگ mpv را به لاگ کنسول می‌افزاید.
"کلیدهای میانبر (Keybindings)"
0.0
`
باز کردن کنسول برای وارد کردن دستورها.
168u
"دستورها (Commands)"
script-binding commands/open
0.0
3.5
باز کردن کنسول برای وارد کردن دستورها.
168u
168u
0.0
script-message-to commands type <text> [<cursor_pos>]
نمایش کنسول و پر کردن اولیه‌ی آن با متن ارائه‌شده، همراه با امکان تعیین اختیاری
موقعیت اولیه مکان‌نما به صورت یک عدد صحیح مثبت که از ۱ شروع می‌شود. کنسول پس
از اجرای دستور به‌طور خودکار بسته می‌شود.
7.0
3.5
"مثال‌ها برای input.conf"
0.0
% script-message-to commands type "seek absolute-percent" 6
یک موقعیت درصدی برای پرش (seek) وارد کنید.
Ctrl+o script-message-to console type "loadfile ''" 11
یک فایل یا URL را برای پخش وارد کنید، همراه با تکمیل خودکار مسیرها در
فایل‌سیستم.
168u
168u
168u
168u
"پیکربندی (Configuration)"
این اسکریپت را می‌توان از طریق فایل پیکربندی script-opts/commands.conf
واقع در دایرکتوری کاربری mpv و از طریق گزینه خط فرمان --script-opts
شخصی‌سازی کرد. نحو پیکربندی در توابع mp.options شرح داده شده است.
"گزینه‌های قابل پیکربندی (Configurable Options)"
0.0
persist_history
پیش‌فرض: no
تعیین اینکه آیا تاریخچه دستورها در یک فایل ذخیره و بارگذاری شود یا خیر.
history_path
پیش‌فرض: ~~state/command_history.txt
مسیر فایل برای persist_history (بخش FILES را ببینید).
remember_input
پیش‌فرض: yes
تعیین اینکه آیا هنگام بستن کنسول، سطر ورودی و موقعیت مکان‌نما به خاطر سپرده شده
و در نوبت بعدی باز شدن، از پیش پر شود یا خیر.
168u
"انتخاب (SELECT)"
کنسول می‌تواند با استفاده از API مربوط به mp.input.select، فهرستی از آیتم‌ها
را برای مرور و انتخاب نمایش دهد. select.lua یک کلاینت توکار برای این API است
که مقیدسازی‌های اسکریپتی (script bindings) را فراهم می‌کند؛ این مقیدسازی‌ها داده‌های
مورد نظر برای انتخاب در کنسول را جمع‌آوری و قالب‌بندی کرده و عملیات لازم را روی آیتم
انتخاب‌شده انجام می‌دهند. این قابلیت را می‌توان با استفاده از گزینه
--load-select=no غیرفعال کرد.
"کلیدهای میانبر (Key bindings)"
هنگام استفاده از mp.input.select، کلیدهای میانبر فهرست‌شده در CONSOLE
با موارد زیر گسترش می‌یابند:
0.0
ENTER, Ctrl+j و Ctrl+m
انتخاب آیتم دارای فوکوس.
UP و Ctrl+p
فوکوس روی آیتم بالایی، یا رفتن به آخرین آیتم زمانی که اولین آیتم انتخاب شده است.
DOWN و Ctrl+n
فوکوس روی آیتم پایینی، یا رفتن به اولین آیتم زمانی که آخرین آیتم انتخاب شده است.
PGUP و Ctrl+b
پیمایش یک صفحه به بالا.
PGDN و Ctrl+f
پیمایش یک صفحه به پایین.
Ctrl+y
رونوشت (کپی) آیتم دارای فوکوس در کلیپ‌بورد.
MBTN_LEFT
انتخاب آیتم زیر مکان‌نما، یا بستن کنسول در صورت کلیک در خارج از کادر مستطیلی منو.
WHEEL_UP
پیمایش به بالا.
WHEEL_DOWN
پیمایش به پایین.
168u
تایپ نویسه‌های قابل چاپ، یک جستجوی فازی (fuzzy search) را در میان آیتم‌های ارائه‌شده انجام می‌دهد.
اگر عبارت جستجو با ' آغاز شود، تنها مواردی که تطابق دقیق دارند فیلتر می‌شوند.
همچنین می‌توانید چندین عبارت جستجو را که با فاصله از هم جدا شده‌اند مشخص کنید که
در این حالت فقط آیتم‌هایی که با تمام عبارت‌ها همخوانی دارند فیلتر خواهند شد..SS "اتصال‌های اسکریپت (Script bindings)"
به‌طور پیش‌فرض، اتصال‌های اسکریپت select.lua به دنباله‌های کلیدی که با g آغاز می‌شوند و در «کنترل صفحه‌کلید» (Keyboard Control) فهرست شده‌اند، متصل هستند. از نام‌های اتصال‌های اسکریپت که در زیر آورده شده است می‌توان برای متصل کردن آن‌ها به کلیدهای دیگر استفاده کرد.
0.0
3.5
"مثال برای اتصال مجدد انتخاب فهرست پخش در input.conf"
Ctrl+p script-binding select/select-playlist
168u
168u
اتصال‌های اسکریپت در دسترس عبارت‌اند از:
0.0
select-playlist
انتخاب یک مدخل از فهرست پخش. گزینهٔ --osd-playlist-entry نحوهٔ قالب‌بندی مدخل‌های فهرست پخش را تعیین می‌کند.
select-sid
انتخاب یک ترک زیرنویس، یا غیرفعال کردن ترک فعلی.
select-secondary-sid
انتخاب یک ترک زیرنویس ثانویه، یا غیرفعال کردن ترک فعلی.
select-aid
انتخاب یک ترک صوتی، یا غیرفعال کردن ترک فعلی.
select-vid
انتخاب یک ترک ویدیو، یا غیرفعال کردن ترک فعلی.
select-track
انتخاب یک ترک از هر نوع، یا غیرفعال کردن ترک انتخاب‌شده.
select-chapter
انتخاب یک فصل (chapter).
select-edition
انتخاب یک نسخهٔ MKV یا عنوان DVD/Blu-ray.
select-subtitle-line
انتخاب یک خط از زیرنویس برای پرش به آن. این ویژگی با زیرنویس‌های تصویری کار نمی‌کند.
این ویژگی در حال حاضر نیازمند وجود ffmpeg در PATH یا در ویندوز، در همان پوشهٔ mpv است.
select-audio-device
انتخاب یک دستگاه صوتی.
select-watch-history
انتخاب یک فایل از تاریخچهٔ تماشا. نیازمند --save-watch-history است.
اگر قبلاً از --autocreate-playlist استفاده نمی‌کنید، توصیه می‌شود آن را به همراه این اتصال اسکریپت فعال کنید تا فهرست پخش با سایر فایل‌های موجود در پوشهٔ آن مدخل پر شود.
7.0
3.5
"مثال برای input.conf جهت پخش فایل‌های هم‌جوار مدخل تاریخچه"
g-h script-binding select/select-watch-history; no-osd set autocreate-playlist filter
168u
168u
select-watch-later
انتخاب یک فایل از فایل‌های پیکربندی «تماشا در آینده» (بخش RESUMING PLAYBACK را ببینید) برای ازسرگیری پخش. نیازمند --write-filename-in-watch-later-config است. این ویژگی با --ignore-path-in-watch-later-config کار نمی‌کند.
اگر قبلاً از --autocreate-playlist استفاده نمی‌کنید، توصیه می‌شود آن را به همراه این اتصال اسکریپت فعال کنید تا فهرست پخش با سایر فایل‌های موجود در پوشهٔ آن مدخل پر شود.
7.0
3.5
"مثال برای input.conf جهت پخش فایل‌های هم‌جوار مدخل تماشا در آینده"
g-w script-binding select/select-watch-later; no-osd set autocreate-playlist filter
168u
168u
select-binding
فهرست کردن کلیدهای ورودی تعریف‌شده. همچنین می‌توانید یکی را انتخاب کنید تا دستور مرتبط با آن اجرا شود.
show-properties
فهرست کردن نام‌ها و مقادیر تمام مشخصه‌ها (properties). همچنین می‌توانید یکی را انتخاب کنید تا مقدار آن روی OSD چاپ شود، که برای مقادیر طولانی که بریده می‌شوند مفید است.
edit-config-file
باز کردن mpv.conf در ویرایشگر متن سیستم؛ اگر از قبل وجود نداشته باشد، ایجاد می‌شود.
edit-input-conf
باز کردن input.conf در ویرایشگر متن سیستم؛ اگر از قبل وجود نداشته باشد، ایجاد می‌شود.
open-docs
باز کردن مستندات برخط mpv در مرورگر وب.
menu
نمایش منویی با گزینه‌ها و مدخل‌های گوناگون.
این اسکریپت می‌تواند از طریق فایل پیکربندی script-opts/select.conf
واقع در پوشهٔ کاربری mpv و همچنین از طریق گزینهٔ خط فرمانی --script-opts
سفارشی‌سازی شود. نحو پیکربندی در توابع mp.options شرح داده شده است.
"گزینه‌های قابل‌پیکربندی (Configurable options)"
0.0
history_date_format
پیش‌فرض: %Y-%m-%d %H:%M:%S
قالب تاریخ مدخل‌های تاریخچه. این مقدار به os.date در Lua فرستاده می‌شود
که از همان قالب‌های strftime(3) استفاده می‌کند.
hide_history_duplicates
پیش‌فرض: yes
این‌که آیا فقط آخرین مدخل از تاریخچه با مسیر یکسان نمایش داده شود یا خیر.
168u
"اسکریپت منوی زمینه (CONTEXT MENU SCRIPT)"
این اسکریپت یک منوی زمینه برای سکوهایی که فاقد یکپارچه‌سازی با منوی زمینهٔ
بومی هستند ارائه می‌دهد. در این سکوها، می‌توان آن را با استفاده از گزینهٔ
--load-context-menu=no به طور کامل غیرفعال کرد. در سکوهایی که این
یکپارچه‌سازی پیاده‌سازی شده است، به‌طور پیش‌فرض از قبل غیرفعال است.
"پیام‌های اسکریپت (Script messages)"
0.0
open
نمایش منوی زمینه.
select
انتخاب مورد دارای فوکوس، در صورت وجود.
168u
"پیکربندی (Configuration)"
این اسکریپت می‌تواند از طریق فایل پیکربندی
script-opts/context_menu.conf واقع در پوشهٔ کاربری mpv و همچنین از طریق
گزینهٔ خط فرمانی --script-opts سفارشی‌سازی شود. نحو پیکربندی در
توابع mp.options شرح داده شده است.
"گزینه‌های قابل‌پیکربندی (Configurable Options)"
0.0
font_size
پیش‌فرض: 14
اندازهٔ قلم.
gap
پیش‌فرض: 0.2
فاصلهٔ بین موارد منو، مشخص‌شده به عنوان درصدی از اندازهٔ قلم.
padding_x
پیش‌فرض: 8
فاصلهٔ درونی (padding) افقی منو.
padding_y
پیش‌فرض: 4
فاصلهٔ درونی (padding) عمودی منو.
menu_outline_size
پیش‌فرض: 0
اندازهٔ حاشیهٔ منو.
menu_outline_color
پیش‌فرض: #FFFFFF
رنگ حاشیهٔ منو.
corner_radius
پیش‌فرض: 5
شعاع گردی گوشه‌های منو.
scale_with_window
پیش‌فرض: auto
این‌که آیا اندازه‌ها با ارتفاع پنجره مقیاس‌بندی شوند یا خیر. می‌تواند yes، no یا
auto باشد که از مقدار --osd-scale-by-window پیروی می‌کند.
هنگامی که اندازه‌ها با پنجره مقیاس‌بندی نمی‌شوند، با
display-hidpi-scale مقیاس‌بندی می‌شوند.
focused_color
پیش‌فرض: #222222
رنگ مورد دارای فوکوس.
focused_back_color
پیش‌فرض: #FFFFFF
رنگ پس‌زمینهٔ مورد دارای فوکوس.
disabled_color
پیش‌فرض: #555555
رنگ موارد غیرفعال.
seconds_to_open_submenus
پیش‌فرض: 0.2
تعداد ثانیه‌ها تا باز شدن زیرمنوها پس از ورود مکان‌نما به موارد دارای
زیرمنو.
seconds_to_close_submenus
پیش‌فرض: 0.2
تعداد ثانیه‌ها تا بسته شدن زیرمنوها پس از ورود مکان‌نما به یک منوی
والد.
این اسکریپت پیوندهایی را برای حرکت دادن (pan) ویدیوها و تصاویر فراهم می‌کند. این قابلیت را می‌توان با استفاده از گزینهٔ --load-positioning=no غیرفعال کرد.
"پیوندهای اسکریپت (Script bindings)"
0.0
pan-x <amount>
تنظیم --video-align-x نسبت به عرض OSD، به‌جای تنظیم نسبت به عرض ویدیو مانند رفتار معمول این گزینه. این قابلیت برای حرکت دادن یکنواخت تصاویر بزرگ مفید است.
amount عددی است به گونه‌ای که مقدار ۱، به اندازهٔ عرض OSD پیمایش می‌کند.
pan-y <amount>
تنظیم --video-align-y نسبت به ارتفاع OSD، به‌جای تنظیم نسبت به ارتفاع ویدیو مانند رفتار معمول این گزینه.
amount عددی است به گونه‌ای که مقدار ۱، به اندازهٔ ارتفاع OSD پیمایش می‌کند.
drag-to-pan
حرکت دادن ویدیو هم‌زمان با نگه داشتن کلید ماوس، به گونه‌ای که بخش کلیک‌شدهٔ ویدیو در زیر مکان‌نما باقی بماند.
align-to-cursor
پیمایش در سرتاسر ویدیو هنگام نگه داشتن کلید ماوس، یا پس از یک بار کلیک کردن اگر toggle_align_to_cursor برابر yes باشد.
cursor-centric-zoom <amount>
افزایش --video-zoom به میزان amount، در حالی که بخشی از ویدیو که زیر مکان‌نما قرار دارد همچنان زیر آن نگه داشته می‌شود، یا با حفظ موقعیت میانگین نقاط لمس در صورت مشخص بودن.
168u
"پیکربندی (Configuration)"
این اسکریپت می‌تواند از طریق فایل پیکربندی script-opts/positioning.conf واقع در پوشهٔ کاربری mpv و همچنین از طریق گزینهٔ خط فرمان --script-opts سفارشی‌سازی شود. نحو (syntax) پیکربندی در توابع mp.options شرح داده شده است.
"گزینه‌های قابل تنظیم (Configurable Options)"
0.0
toggle_align_to_cursor
پیش‌فرض: no
اینکه آیا align-to-cursor برای حرکت دادن تصویر نیاز به پایین نگه داشتن کلید ماوس دارد یا خیر. اگر no باشد، کشیدن (drag) تصویر را حرکت می‌دهد. اگر yes باشد، کلیک کردن برای بار نخست باعث دنبال کردن مکان‌نما شده و دومین کلیک آن را غیرفعال می‌کند.
suppress_osd
پیش‌فرض: no
اینکه هنگام استفاده از cursor-centric-zoom مقدار جدید --video-zoom نمایش داده نشود یا خیر.
168u
"اسکریپت‌نویسی LUA (LUA SCRIPTING)"
برنامهٔ mpv می‌تواند اسکریپت‌های Lua را بارگذاری کند. (بخش Script location را ببینید.)
برنامهٔ mpv پودمان توکار mp را فراهم می‌کند که شامل توابعی برای ارسال دستورها به هستهٔ mpv و بازیابی اطلاعات دربارهٔ وضعیت پخش، تنظیمات کاربر، اطلاعات فایل و غیره است.
از نظر فنی، کد Lua در درون خود از client API استفاده می‌کند.
"مثال (Example)"
اسکریپتی که هنگام متوقف شدن (pause) پخش‌کننده، از حالت تمام‌صفحه خارج می‌شود:
0.0
3.5
function on_pause_change(name, value)
if value == true then
mp.set_property("fullscreen", "no")
end
end
mp.observe_property("pause", "bool", on_pause_change)
168u
اسکریپت‌ها را می‌توان به گزینهٔ --script ارسال کرد، و آن‌ها به‌طور خودکار از زیردایرکتوری scripts در دایرکتوری پیکربندی mpv (معمولاً ~/.config/mpv/scripts/) بارگیری می‌شوند.
یک اسکریپت می‌تواند یک فایل تکی باشد. پسوند فایل برای انتخاب بک‌اند اسکریپت‌نویسی مورد استفاده برای آن به کار می‌رود. برای Lua، این پسوند .lua است. اگر پسوند ناشناخته باشد، یک خطا چاپ می‌شود. (اگر خطایی رخ دهد، یا پسوند به اشتباه تایپ شده، یا اینکه بک‌اند در باینری mpv شما کامپایل نشده است.)
برنامهٔ mpv به صورت داخلی نام اسکریپت را با حذف پسوند .lua و جایگزین کردن تمام نویسه‌های غیرحرفی-عددی با _ بارگیری می‌کند. به عنوان مثال، my-tools.lua تبدیل به my_tools می‌شود. اگر چند اسکریپت با نام یکسان وجود داشته باشند، با افزودن یک عدد، نام آن یکتا می‌شود. این همان نامی است که توسط mp.get_script_name() برگردانده می‌شود.
ورودی‌هایی با پسوند .disable همیشه نادیده گرفته می‌شوند.
اگر یک اسکریپت یک دایرکتوری باشد (چه دایرکتوری به --script ارسال شده باشد، یا هر زیردایرکتوری دیگری در دایرکتوری اسکریپت، مانند ~/.config/mpv/scripts/something/)، آن‌گاه آن دایرکتوری نشان‌دهندهٔ یک اسکریپت منفرد است. پخش‌کننده تلاش خواهد کرد تا فایلی به نام main.x را بارگیری کند، که در آن x با پسوند فایل جایگزین می‌شود. برای مثال، اگر main.lua وجود داشته باشد، با بک‌اند اسکریپت‌نویسی Lua بارگیری می‌شود.
نباید هیچ فایل یا دایرکتوری دیگری را که با main. آغاز می‌شود در دایرکتوری سطح بالای اسکریپت قرار دهید. اگر دایرکتوری اسکریپت به عنوان مثال شامل هر دوی main.lua و main.js باشد، تنها یکی از آن‌ها بارگیری خواهد شد (و این‌که کدام یک بارگیری شود به سازوکارهای داخلی mpv بستگی دارد که ممکن است در هر زمان تغییر کند). به همین ترتیب، اگر به عنوان مثال main.foo وجود داشته باشد، به محض اینکه mpv بک‌اندی اضافه کند که از پسوند فایل .foo استفاده می‌کند، اسکریپت شما با مشکل مواجه خواهد شد.
همچنین mpv دایرکتوری سطح بالای اسکریپت را به ابتدای مسیر بسته (package path) در Lua الحاق می‌کند تا بتوانید اسکریپت‌ها را از آنجا نیز درون‌ریزی کنید. آگاه باشید که این کار بر روی کتابخانه‌های Lua که از مسیر بستهٔ یکسانی استفاده می‌کنند سایه خواهد انداخت و آن‌ها را می‌پوشاند. (اسکریپت‌های تک‌فایلی دایرکتوری‌های مخصوص mpv را در مسیر بستهٔ Lua لحاظ نمی‌کنند. این موضوع در mpv 0.32.0 بدون اعلان تغییر یافت.)
استفاده از دایرکتوری اسکریپت، روش توصیه‌شده برای بسته‌بندی اسکریپتی است که از چندین فایل منبع تشکیل شده یا به فایل‌های دیگری نیاز دارد (می‌توانید از mp.get_script_directory() برای دریافت مکان و مثلاً بارگیری فایل‌های داده استفاده کنید).
تبدیل کردن اسکریپت به یک مخزن git، اساساً مخزنی که شامل یک فایل main.lua در دایرکتوری ریشه است، به‌روزرسانی اسکریپت‌ها را بسیار آسان می‌سازد (بدون خطرات به‌روزرسانی‌های خودکار). پیشنهاد دیگر استفاده از زیرماژول‌های git برای به اشتراک‌گذاری فایل‌ها یا کتابخانه‌های مشترک است.
"جزئیات مقداردهی اولیه و چرخهٔ حیات اسکریپت (Details on the script initialization and lifecycle)"
اسکریپت شما در هنگام شروع برنامه توسط پخش‌کننده از زیردایرکتوری پیکربندی scripts یا از مسیری که با گزینهٔ --script مشخص شده است بارگیری می‌شود. برخی اسکریپت‌ها به طور داخلی بارگیری می‌شوند (مانند --osc). هر اسکریپت در ریسهٔ (thread) اختصاصی خود اجرا می‌شود. اسکریپت شما ابتدا "همان‌طور که هست" اجرا می‌شود و پس از اتمام آن، وارد حلقهٔ رویداد می‌شود. این حلقهٔ رویداد، رویدادهای دریافت‌شده توسط mpv را ارسال کرده و گرداننده‌های رویداد خودتان را که با mp.register_event ثبت کرده‌اید، یا زمان‌سنج‌هایی که با mp.add_timeout یا موارد مشابه اضافه شده‌اند را فراخوانی می‌کند. توجه داشته باشید از آنجا که اجرای اسکریپت هم‌زمان با مقداردهی اولیهٔ پخش‌کننده آغاز می‌شود، برخی ویژگی‌ها ممکن است تا زمان مقداردهی اولیهٔ زیرسیستم‌های مربوطه، دارای مقادیر معناداری نباشند. به جای واکشی این ویژگی‌ها در ابتدای اسکریپت، باید از mp.observe_property استفاده کنید یا آن‌ها را درون گرداننده‌های رویداد بخوانید.
هنگامی که پخش‌کننده خارج می‌شود، از همهٔ اسکریپت‌ها درخواست خاتمه خواهد شد. این کار از طریق یک رویداد shutdown رخ می‌دهد که به طور پیش‌فرض موجب پایان حلقهٔ رویداد می‌شود. اگر اسکریپت شما وارد یک حلقهٔ بی‌پایان شود، mpv احتمالاً در طول پخش رفتار مناسبی خواهد داشت، اما در زمان خروج خاتمه نخواهد یافت، چرا که منتظر اسکریپت شما می‌ماند.
به صورت داخلی، کد C پس از بارگیری یک اسکریپت Lua، تابع Lua به نام mp_event_loop را فراخوانی می‌کند. این تابع معمولاً توسط مقدمهٔ پیش‌فرضی که پیش از اسکریپت شما بارگیری می‌شود، تعریف شده است (ببینید: player/lua/defaults.lua در سورس‌کدهای mpv). حلقهٔ رویداد منتظر رویدادها مانده و رویدادهای ثبت‌شده با mp.register_event را ارسال می‌کند. این حلقه همچنین زمان‌سنج‌های اضافه‌شده با mp.add_timeout و موارد مشابه را مدیریت می‌کند (با انتظار همراه با مهلت زمانی).
از نسخهٔ 0.6.0 mpv، پخش‌کننده پیش از ادامهٔ عملکرد عادی، تا زمان بارگیری کامل اسکریپت منتظر می‌ماند. پخش‌کننده به محض اینکه اسکریپت شروع به انتظار برای رویدادهای mpv کند (یا خارج شود)، آن را به عنوان کاملاً بارگیری‌شده در نظر می‌گیرد. در عمل، این بدان معناست که پخش‌کننده کم‌وبیش معلق می‌ماند تا زمانی که اسکریپت از قطعهٔ اصلی بازگردد (و mp_event_loop فراخوانی شود)، یا اسکریپت مستقیماً mp_event_loop یا mp.dispatch_events را فراخوانی کند. این کار به این منظور انجام شده است تا اسکریپت بتواند قبل از شروع واقعی پخش، گرداننده‌های رویداد و موارد دیگر را به‌طور کامل راه‌اندازی کند. در نسخه‌های قدیمی‌تر mpv، این فرآیند به صورت ناهمگام انجام می‌شد. با mpv 0.29.0، این رفتار کمی تغییر کرد و پخش‌کننده صرفاً به عنوان بخشی از فاز مقداردهی اولیهٔ خود، قبل از شروع پخش، منتظر می‌ماند تا اسکریپت‌ها به این شیوه بارگیری شوند. اسکریپت‌ها مقداردهی اولیه را به صورت موازی اجرا می‌کنند. ممکن است این مورد دوباره تغییر کند..SS توابع mp (mp functions)
ماژول mp از پیش بارگذاری شده است، هرچند می‌توان آن را به صورت دستی با
require 'mp' نیز بارگذاری کرد. این ماژول API اصلی کلاینت را فراهم می‌کند.
0.0
mp.command(string)
اجرای دستور داده‌شده. این تابع مشابه دستورهای استفاده‌شده در input.conf است.
بخش List of Input Commands را ببینید.
به‌طور پیش‌فرض، این کار چیزی را روی OSD (بسته به دستور) نمایش می‌دهد،
گویی در input.conf استفاده شده است. برای چگونگی تأثیرگذاری بر استفاده از OSD در هر دستور،
بخش Input Command Prefixes را ببینید.
در صورت موفقیت true، یا در صورت بروز خطا nil, error را برمی‌گرداند.
mp.commandv(arg1, arg2, ...)
مشابه mp.command، اما هر آرگومان دستور را به عنوان پارامتری مجزا
ارسال می‌کند. این مزیت را دارد که در برخی موارد نیازی نیست نگران نقل‌قول‌ها
(quoting) و فرار کاراکترها (escaping) باشید.
مثال:
7.0
3.5
mp.command("loadfile " .. filename .. " append")
mp.commandv("loadfile", filename, "append")
168u
168u
این دو دستور معادل یکدیگرند، به جز این‌که نسخه اول در صورتی که نام فایل شامل فاصله
یا نویسه‌های خاص معینی باشد، با شکست مواجه می‌شود.
توجه داشته باشید که ویژگی‌ها بسط داده نمی‌شوند. می‌توانید از mp.command،
پیشوند expand-properties، یا خانواده توابع mp.get_property استفاده کنید.
برخلاف mp.command، این تابع نیز به‌طور پیش‌فرض از OSD استفاده نمی‌کند (به جز
در برخی دستورهای خاص OSD).
mp.command_native(table [,def])
مشابه mp.commandv، اما فهرست آرگومان‌ها را به عنوان یک جدول (table) ارسال می‌کند. این
مزیت را دارد که دست‌کم در برخی موارد، آرگومان‌ها می‌توانند به عنوان انواع داده بومی
(native types) ارسال شوند. همچنین به شما اجازه می‌دهد از آرگومان‌های نام‌دار استفاده کنید.
اگر جدول یک آرایه باشد، هر عنصر آرایه مانند یک آرگومان در mp.commandv()
است (اما می‌تواند به جای رشته، یک نوع داده بومی باشد).
اگر جدول شامل کلیدهای رشته‌ای باشد، به عنوان دستوری با آرگومان‌های نام‌دار تفسیر می‌شود.
این حالت نیازمند وجود دست‌کم یک مدخل با کلید name است که باید رشته بوده
و نام دستور را در بر داشته باشد. مدخل ویژه _flags اختیاری است و در صورت وجود،
باید آرایه‌ای از Input Command Prefixes برای اعمال باشد. تمام مدخل‌های دیگر به عنوان
آرگومان تفسیر می‌شوند.
در صورت موفقیت یک جدول نتیجه (معمولاً خالی)، یا در صورت بروز خطا def, error
را برمی‌گرداند. def دومین پارامتر ارائه‌شده به تابع است و در صورت عدم ارائه،
nil خواهد بود.
mp.command_native_async(table [,fn])
مانند mp.command_native()، اما دستور تا جای ممکن به صورت ناهمگام (asynchronous)
اجرا می‌شود و پس از اتمام، fn فراخوانی می‌گردد. fn سه آرگومان دارد:
fn(success, result, error):
7.0
3.5
0.0
success
همواره یک مقدار بولی (Boolean) است و در صورت موفقیت‌آمیز بودن دستور true،
و در غیر این صورت false است.
result
مقدار نتیجه (می‌تواند nil باشد) در صورت موفقیت، و در غیر این صورت nil (همان‌طور
که توسط mp.command_native() بازگردانده می‌شود).
error
رشته خطا در صورت بروز خطا، و در غیر این صورت nil.
168u
168u
168u
جدولی با محتویات تعریف‌نشده برمی‌گرداند که می‌تواند به عنوان آرگومان برای
mp.abort_async_command استفاده شود.
اگر شروع دستور به دلیلی با شکست مواجه شود، nil, error بازگردانده شده و
fn با ارسال همان مقدار خطا، با نشان دادن شکست فراخوانی می‌شود.
تابع fn همواره به صورت ناهمگام فراخوانی می‌شود، حتی اگر دستور در شروع با شکست مواجه شده باشد.
mp.abort_async_command(t)
لغو یک فراخوانی mp.command_native_async. آرگومان آن، مقدار بازگشتی
همان دستور است (که اجرای ناهمگام دستور را آغاز می‌کند). این‌که این کار موثر واقع شود
و چقدر زمان ببرد، به دستور و شرایط بستگی دارد. خود فراخوانی لغو نیز ناهمگام است.
هیچ مقداری را برنمی‌گرداند.
mp.del_property(name)
حذف ویژگی داده‌شده. برای اطلاعات بیشتر درباره ویژگی‌ها به mp.get_property
و بخش Properties مراجعه کنید. بیشتر ویژگی‌ها قابل حذف نیستند.
در صورت موفقیت true، یا در صورت بروز خطا nil, error را برمی‌گرداند.
mp.get_property(name [,def])
مقدار ویژگی داده‌شده را به عنوان رشته برمی‌گرداند. این‌ها همان ویژگی‌های استفاده‌شده
در input.conf هستند. برای فهرستی از ویژگی‌ها بخش Properties را ببینید.
رشته بازگردانده‌شده قالب‌بندی مشابهی با ${=name} دارد (بخش Property Expansion را ببینید).
در صورت موفقیت رشته و در صورت بروز خطا def, error را برمی‌گرداند. def دومین
پارامتر ارائه‌شده به تابع است و در صورت عدم ارائه، nil خواهد بود.
mp.get_property_osd(name [,def])
مشابه mp.get_property، اما مقدار ویژگی را با قالب‌بندی مناسب OSD برمی‌گرداند.
این همان رشته‌ای است که هنگام استفاده از ${name} در input.conf چاپ می‌شود.
در صورت موفقیت رشته و در صورت بروز خطا def, error را برمی‌گرداند. def
دومین پارامتر ارائه‌شده به تابع است و در صورت عدم ارائه، یک رشته خالی خواهد بود.
برخلاف get_property()، انتساب مقدار بازگشتی به یک متغیر همواره منجر به یک رشته خواهد شد.
mp.get_property_bool(name [,def])
مشابه mp.get_property، اما مقدار ویژگی را به عنوان یک بولی (Boolean) برمی‌گرداند.
در صورت موفقیت یک بولی، یا در صورت بروز خطا def, error را برمی‌گرداند.
mp.get_property_number(name [,def])
مشابه mp.get_property، اما مقدار ویژگی را به عنوان عدد برمی‌گرداند.
توجه داشته باشید که اگرچه Lua تفاوتی بین اعداد صحیح و ممیز شناور قائل نمی‌شود،
اما بخش‌های درونی mpv قائل می‌شوند. این تابع صرفاً یک ممیز شناور با دقت مضاعف (double float)
از mpv درخواست می‌کند و mpv معمولاً مقادیر ویژگی‌های صحیح را به ممیز شناور تبدیل می‌کند.
در صورت موفقیت یک عدد، یا در صورت بروز خطا def, error را برمی‌گرداند.
mp.get_property_native(name [,def])
مشابه mp.get_property، اما مقدار ویژگی را با استفاده از بهترین نوع داده Lua
برای آن ویژگی برمی‌گرداند. در اغلب مواقع، این تابع یک رشته، بولی یا عدد را برمی‌گرداند.
برخی از ویژگی‌ها (برای مثال chapter-list) به عنوان جدول برگردانده می‌شوند.
در صورت موفقیت یک مقدار، یا در صورت بروز خطا def, error را برمی‌گرداند.
توجه داشته باشید که در برخی حالت‌های خاص، nil نیز ممکن است مقداری ممکن و معتبر باشد.
mp.set_property(name, value)
تنظیم ویژگی داده‌شده روی مقدار رشته‌ای داده‌شده. برای اطلاعات بیشتر درباره ویژگی‌ها،
به mp.get_property و بخش Properties مراجعه کنید.
در صورت موفقیت true، یا در صورت بروز خطا nil, error را برمی‌گرداند.
mp.set_property_bool(name, value)
مشابه mp.set_property، اما ویژگی داده‌شده را روی مقدار بولی داده‌شده
تنظیم می‌کند.
mp.set_property_number(name, value)
مشابه mp.set_property، اما ویژگی داده‌شده را روی مقدار عددی داده‌شده
تنظیم می‌کند.
توجه داشته باشید که اگرچه Lua تفاوتی بین اعداد صحیح و ممیز شناور قائل نمی‌شود،
بخش‌های درونی mpv تفاوت قائل می‌شوند. این تابع بررسی می‌کند که آیا عدد می‌تواند
به عنوان یک عدد صحیح نمایش داده شود یا خیر؛ در این صورت یک مقدار صحیح را به mpv
ارسال می‌کند، در غیر این صورت یک ممیز شناور با دقت مضاعف (double float) ارسال خواهد شد.
mp.set_property_native(name, value)
مشابه mp.set_property، اما ویژگی داده‌شده را با استفاده از نوع داده بومی آن
تنظیم می‌کند.
از آنجا که چندین نوع داده وجود دارد که نمی‌توانند به‌طور بومی در Lua نمایش داده شوند،
این تابع ممکن است همیشه مطابق انتظار کار نکند. برای نمونه، در حالی که پوشش (wrapper)
زبان Lua می‌تواند حدس‌هایی بزند تا مشخص کند که آیا یک جدول Lua یک آرایه است یا یک نگاشت (map)،
این امر با جدول‌های خالی شکست خواهد خورد. همچنین ویژگی‌های زیادی وجود ندارد که استفاده
از این تابع به جای set_property، set_property_bool یا set_property_number
در آن‌ها منطقی باشد. به این دلایل، احتمالاً فعلاً باید از این تابع اجتناب شود، مگر برای
ویژگی‌هایی که به‌طور بومی از جدول‌ها استفاده می‌کنند.
mp.get_time()
زمان درونی فعلی mpv را به ثانیه و به عنوان یک عدد برمی‌گرداند. این در اصل
همان زمان سیستم است، همراه با یک آفست دلخواه..TP
mp.add_key_binding(key, name|fn [,fn [,flags]])
یک بازخوانی (callback) را برای اجرا هنگام فشردن یک کلید مقیدشده ثبت می‌کند. این قید به key مشخص‌شده نگاشت خواهد شد، که رشته‌ای برای توصیف کلید فیزیکی است. این تابع از همان نام‌های کلید موجود در input.conf استفاده می‌کند و همچنین ترکیب‌ها را نیز مجاز می‌داند (مانند ctrl+a). اگر کلید خالی یا nil باشد، هیچ کلید فیزیکی ثبت نمی‌شود، اما کاربر همچنان می‌تواند قیدهای اختصاصی خود را ایجاد کند (ادامه را ببینید).
پس از فراخوانی این تابع، فشردن کلیدها باعث فراخوانی تابع fn خواهد شد (مگر اینکه کاربر کلید را با قید دیگری بازنگاشت کرده باشد). با این حال، اگر قید کلید لغو شود، تابع فراخوانی نخواهد شد، مگر اینکه پرچم complex روی true تنظیم شده باشد، که در این حالت تابع با ورودی canceled تنظیم‌شده روی true فراخوانی می‌شود.
برای نمونه، لغو شدن یک کلید مقیدشده می‌تواند در شرایط زیر رخ دهد:
7.0
• 2
اگر کلید A فشرده شود در حالی که کلید B نگه داشته شده است، کلید B به صورت منطقی رها می‌شود (توسط کلید A "canceled" می‌شود)، که این عمل تکرار خودکار فعال کلید B را متوقف می‌کند.
• 2
اگر کلید A فشرده شود در حالی که یک دکمهٔ ماوس پایین نگه داشته شده است، دکمهٔ ماوس به صورت منطقی رها می‌شود، اما عملیات دکمهٔ ماوس فراخوانی نخواهد شد، مگر اینکه پرچم complex روی true تنظیم شده باشد.
168u
آرگومان name باید یک رشتهٔ نمادین کوتاه باشد. این آرگومان به کاربر اجازه می‌دهد با استفاده از دستور script-message و نام قید کلید، کلید مقیدشده را از طریق input.conf بازنگاشت کند (برای نمونه به ادامه مراجعه کنید). نام باید در میان سایر قیدهای همان اسکریپت یکتا باشد - در غیر این صورت، قید قبلی با همان نام بازنویسی خواهد شد. می‌توانید نام را نادیده بگیرید، که در این حالت یک نام تصادفی به صورت داخلی تولید می‌شود. (نادیده گرفتن به این صورت کار می‌کند: یا برای name مقدار nil را ارسال کنید، یا آرگومان fn را به جای نام ارسال کنید. مورد دوم توصیه نمی‌شود و صرفاً برای سازگاری پشتیبانی می‌شود.)
آرگومان flags برای پارامترهای اختیاری استفاده می‌شود. این یک جدول (table) است که می‌تواند ورودی‌های زیر را داشته باشد:
7.0
3.5
0.0
repeatable
اگر روی true تنظیم شود، تکرار کلید (key repeat) را برای این قید خاص فعال می‌کند. این گزینه تنها زمانی کاربرد دارد که complex روی true تنظیم نشده باشد.
scalable
اگر روی true تنظیم شود، مقیاس‌پذیری کلید را برای این قید خاص فعال می‌کند. این گزینه تنها زمانی کاربرد دارد که complex روی true تنظیم شده باشد. توجه داشته باشید در صورتی که قید کلید توسط دستور script-binding فراخوانی شود، این مورد تأثیری ندارد؛ چرا که مقیاس‌پذیری دستور اولویت خواهد داشت.
complex
اگر روی true تنظیم شود، تابع fn در رویدادهای فشرده‌شدن (down)، تکرار (repeat) و بالا آمدن کلید (up) فراخوانی می‌شود، به طوری که آرگومان اول یک جدول خواهد بود. این جدول شامل ورودی‌های زیر است (و ممکن است ورودی‌های مستندنشده‌ای را نیز در بر داشته باشد):
7.0
3.5
0.0
event
روی یکی از رشته‌های down، repeat، up یا press (مورد آخر در صورتی که بالا/پایین/تکرار کلید قابل ردیابی نباشد) تنظیم می‌شود که وضعیت منطقی کلید را نشان می‌دهد.
is_mouse
بولی: مشخص می‌کند که آیا رویداد توسط یکی از دکمه‌های ماوس ایجاد شده است یا خیر.
canceled
بولی: مشخص می‌کند که آیا رویداد لغو شده است یا خیر. همهٔ انواع لغوها این پرچم را تنظیم نمی‌کنند.
key_name
نام کلیدی که این رویداد را برانگیخته است، یا nil در صورتی که به صورت مصنوعی فراخوانی شده باشد. اگر نام کلید نامشخص باشد، یک رشتهٔ خالی خواهد بود.
key_text
متن کلید در صورتی که توسط یک کلید متنی برانگیخته شده باشد، در غیر این صورت nil. برای جزئیات به توضیحات دستور script-binding مراجعه کنید (این فیلد معادل آرگومان پنجم است).
scale
مقیاس کلید، مانند مواردی که توسط کلیدهای WHEEL_* تولید می‌شوند. اگر کلید غیرقابل‌مقیاس باشد، مقدار مقیاس 1 است.
arg
رشتهٔ ارائه‌شده توسط کاربر در آرگومان arg در دستور script-binding، در صورتی که قید کلید توسط آن دستور فراخوانی شده باشد.
168u
168u
168u
168u
168u
168u
به صورت داخلی، قیدهای کلید از طریق دستورهای ورودی script-message-to یا script-binding و mp.register_script_message ارسال می‌شوند.
تلاش برای نگاشت چند دستور به یک کلید، اساساً یک قید تصادفی را ترجیح می‌دهد، در حالی که سایر قیدها فراخوانی نمی‌شوند. تضمین می‌شود که قیدهای تعریف‌شده توسط کاربر در فایل اصلی input.conf نسبت به قیدهای اضافه‌شده با این تابع در اولویت هستند (اما mp.add_forced_key_binding را ببینید).
مثال:
7.0
3.5
function something_handler()
print("the key was pressed")
end
mp.add_key_binding("x", "something", something_handler)
168u
168u
این کد هنگام فشرده‌شدن کلید x، پیام the key was pressed را چاپ خواهد کرد.
کاربر می‌تواند این قیدهای کلید را بازنگاشت کند. برای این کار، کاربر باید خط زیر را در input.conf خود قرار دهد تا دستور را به کلید y بازنگاشت کند:
7.0
3.5
y script-binding something
168u
168u
این کار باعث می‌شود هنگام فشردن کلید y پیام چاپ شود. (کلید x همچنان کار خواهد کرد، مگر اینکه کاربر آن را بازنگاشت کرده باشد.)
شما همچنین می‌توانید به طور صریح پیامی را فقط به یک اسکریپت با نام مشخص ارسال کنید. فرض کنید اسکریپت بالا از نام فایل fooscript.lua استفاده می‌کرده است:
7.0
3.5
y script-binding fooscript/something
168u
168u
mp.add_forced_key_binding(...)
عملکرد این تابع تقریباً مشابه mp.add_key_binding است، اما قید کلید را به گونه‌ای ثبت می‌کند که قیدهای سفارشی کاربر در input.conf را بازنویسی خواهد کرد. (mp.add_key_binding تنها قیدهای پیش‌فرض کلیدها را بازنویسی می‌کند، نه قیدهای موجود در input.conf کاربر را.)
mp.remove_key_binding(name)
حذف یک کلید مقیدشده که با mp.add_key_binding یا mp.add_forced_key_binding اضافه شده است. از همان نامی استفاده کنید که در هنگام افزودن قیدها استفاده کرده‌اید. حذف قیدهایی که نام آن‌ها را تعیین نکرده‌اید امکان‌پذیر نیست.
mp.register_event(name, fn)
فراخوانی یک تابع مشخص در هنگام رخ دادن یک رویداد. نام رویداد یک رشته و تابع fn یک مقدار تابع لوآ (Lua function value) است.
برخی رویدادها داده‌های مرتبط دارند. این داده‌ها درون یک جدول Lua قرار داده شده و به عنوان آرگومان به fn ارسال می‌شوند. جدول Lua به طور پیش‌فرض دارای فیلد name است که رشته‌ای شامل نام رویداد است. اگر رویداد دارای خطای مرتبط باشد، فیلد error روی رشته‌ای که خطا را توصیف می‌کند تنظیم می‌شود؛ در صورت موفقیت، این فیلد تنظیم نمی‌گردد.
اگر چندین تابع برای یک رویداد یکسان ثبت شده باشند، به ترتیبِ ثبت اجرا می‌شوند، به طوری که اولین تابع ثبت‌شده قبل از سایر توابع اجرا خواهد شد.
در صورتی که چنین رویدادی وجود داشته باشد مقدار true و در غیر این صورت مقدار false را برمی‌گرداند.
برای جزئیات بیشتر به بخش‌های Events و List of events مراجعه کنید.
mp.unregister_event(fn)
لغو عملیات mp.register_event(..., fn). این دستور تمام گرداننده‌های رویدادی را که با پارامتر fn برابر هستند، حذف می‌کند. این تابع از مقایسهٔ معمول == در Lua استفاده می‌کند، بنابراین هنگام استفاده از کلوژرها (closures) مراقب باشید..TP
mp.observe_property(name, type, fn)
نظارت بر تغییرات یک ویژگی (property). اگر ویژگی name تغییر کند،
تابع fn(name) فراخوانی خواهد شد. type می‌تواند nil باشد، یا روی
یکی از مقادیر none، native، bool، string، یا number تنظیم شود.
none همانند nil است. برای سایر مقادیر، مقدار جدید ویژگی به عنوان آرگومان
دوم به fn ارسال می‌شود که برای بازیابی آن از mp.get_property_<type>
استفاده می‌گردد. این بدان معناست که اگر برای مثال type برابر string باشد،
fn تقریباً به صورت fn(name, mp.get_property(name)) فراخوانی می‌شود.
در صورت امکان، رویدادهای تغییر ادغام می‌شوند. اگر یک ویژگی چندین بار پشت سر هم
تغییر کند، تنها آخرین تغییر تابع را فعال خواهد کرد. (رفتار دقیق به زمان‌بندی
و عوامل دیگر بستگی دارد.)
اگر ویژگی در دسترس نباشد یا خطایی رخ دهد، آرگومان مقدار ارسال‌شده به fn
برابر nil خواهد بود. (فراخوانی observe_property() همیشه با موفقیت
انجام می‌شود، حتی اگر ویژگی وجود نداشته باشد.)
در برخی موارد، حتی اگر ویژگی تغییر کند نیز تابع فراخوانی نمی‌شود. این موضوع به
ویژگی بستگی دارد و درخواست برای بهبود نحوهٔ مدیریت به‌روزرسانی یک ویژگی خاص،
یک درخواست قابلیت معتبر محسوب می‌شود.
اگر type برابر none یا nil باشد، تابع تغییر fn حتی در صورتی
که ویژگی در واقع تغییری نکرده باشد نیز گه‌گاه فراخوانی خواهد شد. بنابراین
باید از استفاده از این نوع‌ها خودداری کنید.
شما همیشه یک اعلان تغییر اولیه دریافت می‌کنید. هدف از این کار، مقداردهی اولیهٔ
وضعیت کاربر با مقدار فعلی ویژگی است.
mp.unobserve_property(fn)
باطل کردن اثر mp.observe_property(..., fn). این کار تمام گرداننده‌های
ویژگی را که با پارامتر fn برابر باشند حذف می‌کند. این تابع از مقایسهٔ معمولی
== در Lua استفاده می‌کند، بنابراین هنگام کار با کلوژرها (closures) دقت کنید.
mp.add_timeout(seconds, fn [, disabled])
فراخوانی تابع داده‌شدهٔ fn پس از سپری شدن تعداد ثانیه‌های مشخص‌شده.
توجه داشته باشید که تعداد ثانیه‌ها می‌تواند کسری (اعشاری) باشد. در حال حاضر،
دقت زمان‌سنج ممکن است تا ۵۰ میلی‌ثانیه پایین باشد، اگرچه در آینده بهبود
خواهد یافت.
اگر آرگومان disabled روی true یا یک مقدار با ارزش درستی تنظیم شده باشد،
زمان‌سنج منتظر می‌ماند تا با فراخوانی متد resume() خود به صورت دستی آغاز شود.
این یک زمان‌سنج یک‌باره (one-shot) است: پس از فعال شدن حذف خواهد شد.
یک شیء زمان‌سنج را برمی‌گرداند. برای جزئیات به mp.add_periodic_timer مراجعه کنید.
mp.add_periodic_timer(seconds, fn [, disabled])
فراخوانی تابع داده‌شده به صورت دوره‌ای. این متد مانند mp.add_timeout عمل می‌کند،
با این تفاوت که پس از اجرای تابع fn، زمان‌سنج مجدداً اضافه می‌شود.
یک شیء زمان‌سنج برمی‌گرداند. شیء زمان‌سنج متدهای زیر را ارائه می‌دهد:
7.0
3.5
0.0
stop()
غیرفعال کردن زمان‌سنج. اگر زمان‌سنج از قبل غیرفعال باشد کاری انجام نمی‌دهد.
هنگام توقف، این متد زمان سپری‌شدهٔ فعلی را به خاطر می‌سپارد، به طوری که
resume() در اصل زمان‌سنج را از حالت مکث خارج می‌کند.
kill()
غیرفعال کردن زمان‌سنج. زمان سپری‌شده را بازنشانی می‌کند. متد resume()
زمان‌سنج را مجدداً راه‌اندازی خواهد کرد.
resume()
راه‌اندازی مجدد زمان‌سنج. اگر زمان‌سنج با stop() غیرفعال شده بود، اجرا
از همان زمانی که متوقف شده بود ادامه می‌یابد. اگر زمان‌سنج با kill() غیرفعال
شده بود، یا اگر یک زمان‌سنج یک‌باره باشد که پیش‌تر اجرا شده است (اضافه‌شده با
add_timeout())، زمان‌سنج با استفاده از مهلت اولیهٔ پیکربندی‌شده از ابتدا
آغاز می‌شود.
is_enabled()
مشخص می‌کند که آیا زمان‌سنج در حال حاضر فعال است یا پیش‌تر غیرفعال شده است
(مثلاً توسط stop() یا kill()).
timeout (RW)
این فیلد شامل دورهٔ مهلت زمانی فعلی است. این مقدار هم‌زمان با گذشت زمان به‌روزرسانی
نمی‌شود. این فیلد تنها برای محاسبهٔ زمان اجرای بعدی، هنگام منقضی شدن زمان‌سنج استفاده می‌شود.
اگر این مقدار را بنویسید (تغییر دهید)، می‌توانید t:kill() ; t:resume() را
برای بازنشانی مهلت فعلی به مقدار جدید فراخوانی کنید. (t:stop() از مهلت
زمانی جدید استفاده نخواهد کرد.)
oneshot (RW)
مشخص می‌کند که آیا زمان‌سنج دوره‌ای است (false) یا تنها یک بار اجرا
می‌شود (true). این مقدار هنگام انقضای زمان‌سنج (اما پیش از اجرای تابع بازخوانی
fn زمان‌سنج) استفاده می‌شود.
168u
168u
168u
توجه داشته باشید که این‌ها متد هستند و باید آنها را به جای . با استفاده از
: فراخوانی کنید (به https://www.lua.org/manual/5.2/manual.html#3.4.9 مراجعه کنید).
مثال:
7.0
3.5
seconds = 0
timer = mp.add_periodic_timer(1, function()
print("called every second")
-- stop it after 10 seconds
seconds = seconds + 1
if seconds >= 10 then
timer:kill()
end
end)
168u
168u
mp.get_opt(key)
برگرداندن یک تنظیم از گزینهٔ --script-opts. نحوهٔ استفاده از این سازوکار
به کاربر و اسکریپت بستگی دارد. در حال حاضر، تمام اسکریپت‌ها دسترسی یکسانی به
این بخش دارند، بنابراین باید مراقب تداخل نام‌ها باشید.
mp.get_script_name()
برگرداندن نام اسکریپت فعلی. نام معمولاً از نام فایل اسکریپت با حذف دایرکتوری و
پسوند فایل ساخته می‌شود. اگر چندین اسکریپت نام یکسانی داشته باشند، با افزودن
یک عدد منحصر‌به‌فرد می‌شوند. هر نویسهٔ غیرالفبایی-عددی با _ جایگزین می‌شود.
7.0
3.5
"مثال"
اسکریپت /path/to/foo-script.lua به foo_script تبدیل می‌شود.
168u
168u
mp.get_script_directory()
اگر اسکریپت به صورت یک دایرکتوری بسته‌بندی شده باشد، دایرکتوری آن را برمی‌گرداند
(برای توضیحات به مکان اسکریپت مراجعه کنید). اگر اسکریپت به صورت یک تک‌فایل
باشد، هیچ مقداری برنمی‌گرداند.
mp.osd_message(text [,duration])
نمایش یک پیام OSD بر روی صفحه. duration بر حسب ثانیه و اختیاری است
(به طور پیش‌فرض از --osd-duration استفاده می‌کند).
این توابع نیز در ماژول mp قرار دارند، اما از آن‌جا که تنها در شرایط خاص سودمند هستند، به‌صورت جداگانه مستند شده‌اند.
0.0
mp.get_wakeup_pipe()
تابع mpv_get_wakeup_pipe() را فراخوانی می‌کند و انتهای خواندن (read end) پایپ بیدارباش را بازمی‌گرداند. این تابع منسوخ شده است، اما همچنان کار می‌کند. (برای جزئیات client.h را ببینید.)
mp.get_next_timeout()
زمان نسبی بر حسب ثانیه را تا هنگام منقضی شدن تایمر بعدی (mp.add_timeout و موارد مشابه) بازمی‌گرداند. اگر تایمری وجود نداشته باشد، nil را بازمی‌گرداند.
mp.dispatch_events([allow_wait])
از این تابع می‌توان برای اجرای حلقه‌های رویداد سفارشی استفاده کرد. اگر می‌خواهید کنترل مستقیمی بر آنچه اسکریپت Lua انجام می‌دهد داشته باشید (به‌جای اینکه توسط حلقهٔ رویداد پیش‌فرض فراخوانی شود)، می‌توانید متغیر سراسری mp_event_loop را روی تابع خودتان که حلقهٔ رویداد را اجرا می‌کند تنظیم کنید. از درون حلقهٔ رویداد خود، باید mp.dispatch_events() را فراخوانی کنید تا رویدادهای mpv از صف خارج شده و اعزام شوند.
اگر پارامتر allow_wait روی true تنظیم شود، تابع تا زمان دریافت رویداد بعدی یا منقضی شدن تایمر بعدی مسدود می‌شود. در غیر این صورت (که رفتار پیش‌فرض است)، به محض خالی شدن حلقهٔ رویداد بازمی‌گردد. اگر به دریافت درست اعلان‌های رویدادهای جدید و کارکرد صحیح تایمرها نیاز دارید، اکیداً توصیه می‌شود از mp.get_next_timeout() و mp.get_wakeup_pipe() استفاده کنید.
mp.register_idle(fn)
یک گردانندهٔ بیکاری (idle handler) برای حلقهٔ رویداد ثبت می‌کند. گرداننده‌های بیکاری پس از رسیدگی به تمامی رویدادهای جدید و پیش از به خواب رفتن اسکریپت فراخوانی می‌شوند. این تابع می‌تواند برای مثال جهت به تعویق انداختن پردازش رویدادهای تغییر ویژگی (property change) استفاده شود: اگر چند ویژگی را هم‌زمان زیر نظر دارید، ممکن است نخواهید با تغییر هر ویژگی وارد عمل شوید، بلکه تنها پس از دریافت تمام اعلان‌های تغییر اقدام کنید.
mp.unregister_idle(fn)
ثبت انجام‌شده با mp.register_idle(fn) را لغو می‌کند. این تابع تمامی گرداننده‌های بیکاری را که برابر با پارامتر fn باشند حذف می‌کند. در اینجا از مقایسهٔ استاندارد == در Lua استفاده می‌شود، بنابراین هنگام کار با کلوژرها (closures) دقت کنید.
mp.enable_messages(level)
حداقل سطح گزارش‌گیری (log level) دریافتی برای پیام‌های خروجی mpv را تنظیم می‌کند. این پیام‌ها معمولاً در ترمینال چاپ می‌شوند. با فراخوانی این تابع، می‌توانید حداقل سطح پیام‌هایی را که باید از طریق رویداد log-message دریافت شوند، مشخص کنید. برای جزئیات به توضیحات این رویداد مراجعه کنید. مقدار سطح یک رشته است؛ برای سطوح مجاز گزارش‌گیری msg.log را ببینید.
mp.register_script_message(name, fn)
یک تابع کمکی برای اعزام فراخوانی‌های script-message یا script-message-to به توابع Lua است. اگر script-message یا script-message-to (با تعیین این اسکریپت به عنوان مقصد) با name به عنوان اولین پارامتر اجرا شود، fn فراخوانی خواهد شد. سایر پارامترها به fn فرستاده می‌شوند. اگر پیامی با نام داده‌شده قبلاً ثبت شده باشد، بازنویسی می‌شود.
توسط mp.add_key_binding استفاده می‌شود، بنابراین مراقب تداخل نام‌ها باشید.
mp.unregister_script_message(name)
ثبت قبلی با mp.register_script_message را باطل می‌کند. اگر name ثبت نشده باشد، هیچ اثری ندارد.
mp.create_osd_overlay(format)
یک لایهٔ OSD ایجاد می‌کند. این تابع یک پوستهٔ بسیار نازک (wrapper) به دور دستور osd-overlay است. تابع یک جدول (table) برمی‌گرداند که عمدتاً شامل فیلدهایی است که به osd-overlay ارسال می‌شوند. پارامتر format برای مقداردهی اولیهٔ فیلد format به کار می‌رود. فیلد data حاوی متنی است که باید به عنوان لایه استفاده شود. برای جزئیات، دستور osd-overlay را ببینید.
علاوه بر این، متدهای زیر را ارائه می‌دهد:
7.0
update()
لایهٔ OSD را روی صفحه ثبت (commit) می‌کند، یا به عبارت دیگر، دستور osd-overlay را با فیلدهای فعلی جدول روکش اجرا می‌نماید. نتیجهٔ خود دستور osd-overlay را بازمی‌گرداند.
remove()
لایه را از روی صفحه حذف می‌کند. فراخوانی update() مجدداً آن را اضافه خواهد کرد.
168u
مثال:
7.0
3.5
ov = mp.create_osd_overlay("ass-events")
ov.data = "{\\an5}{\\b1}hello world!"
ov:update()
168u
168u
مزیت استفاده از این پوشش (در مقایسه با اجرای مستقیم osd-overlay) این است که فیلد id به‌طور خودکار تخصیص می‌یابد.
mp.get_osd_size()
یک تاپل از osd_width, osd_height, osd_par را بازمی‌گرداند. دو مورد اول اندازهٔ OSD را بر حسب پیکسل مشخص می‌کنند (برای خروجی‌های ویدیو مانند --vo=xv، ممکن است پیکسل‌های «مقیاس‌بندی‌شده» باشد). مورد سوم نسبت ابعاد پیکسل نمایشگر است.
اگر OSD هنوز مقداردهی اولیه نشده باشد، ممکن است مقادیر نامعتبر یا بی‌معنی برگرداند.
exit() (global)
باعث خروج اسکریپت در پایان تکرار جاری حلقهٔ رویداد می‌شود. این دستور خود mpv یا سایر اسکریپت‌ها را متوقف نمی‌کند.
می‌توان این عملکرد را برای پشتیبانی از نگارش‌های mpv قدیمی‌تر از 0.40 به‌صورت زیر جایگزین (polyfill) کرد:
7.0
3.5
if not _G.exit then
function exit()
mp.keep_running = false
end
end
168u
168u
این ماژول امکان ارسال پیام‌ها به ترمینال را فراهم می‌کند و می‌تواند با require 'mp.msg' بارگذاری شود.
0.0
msg.log(level, ...)
پارامتر level اولویت پیام است. این پارامتر یک رشته و یکی از مقادیر
fatal، error، warn، info، v، debug و trace است.
تنظیمات کاربر مشخص خواهد کرد که کدام‌یک از این پیام‌ها قابل مشاهده خواهند بود.
به‌طور معمول، همهٔ پیام‌ها به‌جز v، debug و trace نمایش داده می‌شوند.
پارامترهای پس از آن همگی به رشته تبدیل می‌شوند. برای جداسازی پارامترهای
چندگانه، فاصله (space) درج می‌شود.
نیازی به افزودن خطوط جدید (newline) نیست.
msg.fatal(...), msg.error(...), msg.warn(...), msg.info(...), msg.verbose(...), msg.debug(...), msg.trace(...)
همگی این موارد میان‌بر بوده و معادل فراخوانی مربوطهٔ
msg.log(level, ...) هستند.
168u
"توابع mp.options (mp.options functions)"
برنامهٔ mpv به همراه یک ماژول داخلی برای مدیریت گزینه‌ها از طریق فایل‌های
پیکربندی و خط فرمان ارائه می‌شود. تمام کاری که باید انجام دهید تحویل یک
جدول (table) شامل گزینه‌های پیش‌فرض به تابع read_options است. این تابع
مقادیر پیش‌فرض را با مقادیر یافت‌شده در فایل پیکربندی و خط فرمان (به همین ترتیب)
بازنویسی می‌کند.
0.0
options.read_options(table [, identifier [, on_update]])
یک table با جفت‌های کلید-مقدار. نوع دادهٔ مقادیر پیش‌فرض برای بازگرداندن
و تبدیل مقادیر خوانده‌شده از فایل پیکربندی یا خط فرمان اهمیت دارد.
از nil به عنوان مقدار پیش‌فرض استفاده نکنید!
شناسهٔ identifier برای تشخیص فایل پیکربندی و گزینه‌های خط فرمان
استفاده می‌شود. این شناسه برای جلوگیری از تداخل با دیگر اسکریپت‌ها باید
یکتا باشد. در صورتی که این پارامتر nil بوده یا ارسال نشود، مقدار پیش‌فرض
آن mp.get_script_name() خواهد بود.
پارامتر on_update امکان به‌روزرسانی در زمان اجرای مقادیر تمام گزینه‌های
منطبق را از طریق گزینه/ویژگی script-opts فعال می‌سازد. اگر هر یک از گزینه‌های
منطبق تغییر کند، مقادیر موجود در table (که در ابتدا به تابع تحویل داده شده بود)
تغییر یافته و on_update(list) فراخوانی می‌شود. list جدولی است
که در آن برای هر گزینهٔ به‌روزرسانی‌شده یک ورودی list[option_name] = true
وجود دارد. هیچ فراخوانی اولیه‌ای برای on_update() وجود ندارد. این سازوکار
هرگز فایل پیکربندی را دوباره بازخوانی نمی‌کند. script-opts همواره روی فایل
پیکربندی اصلی اعمال می‌شود و مقادیر قبلی script-opts را نادیده می‌گیرد
(برای مثال، اگر گزینه‌ای در زمان اجرا از script-opts حذف گردد، آن گزینه
مقدار موجود در فایل پیکربندی را خواهد داشت). ورودی‌های table تنها برای مقادیر
گزینه‌هایی بازنویسی می‌شوند که مقدار آن‌ها به‌طور مؤثر تغییر کند (این امر زمانی اهمیت
دارد که اسکریپت ورودی‌های table را به‌طور مستقل تغییر دهد).
168u
نمونهٔ پیاده‌سازی:
0.0
3.5
local options = {
optionA = "defaultvalueA",
optionB = -0.5,
optionC = true,
}
require "mp.options".read_options(options, "myscript")
print(options.optionA)
168u
168u
فایل پیکربندی در مسیر script-opts/identifier.conf درون پوشهٔ کاربری
mpv ذخیره خواهد شد. خطوط توضیحات را می‌توان با # آغاز کرد و فاصله‌های سرگردان
حذف نمی‌شوند. مقادیر بولی با yes/no نمایش داده می‌شوند.
نمونهٔ پیکربندی:
0.0
3.5
# comment
optionA=Hello World
optionB=9999
optionC=no
168u
168u
گزینه‌های خط فرمان از پارامتر --script-opts خوانده می‌شوند. برای
جلوگیری از تداخل، تمام کلیدها باید دارای پیشوند identifier- باشند.
نمونهٔ خط فرمان:
0.0
3.5
--script-opts=myscript-optionA=TEST,myscript-optionB=0,myscript-optionC=yes
168u
این ماژول توکار (built-in) توابع کمکی عمومی را برای Lua فراهم می‌کند و اگر دقیق بررسی شود، هیچ ارتباطی با mpv یا پخش ویدیو/صدا ندارد. این توابع صرفاً برای راحتی کار ارائه شده‌اند و بیشتر آن‌ها کمبودهای کتابخانهٔ استاندارد محدود Lua را جبران می‌کنند.
هشدار داده می‌شود که هر یک از این توابع ممکن است در هر زمانی حذف شوند. آن‌ها دقیقاً بخشی از API تضمین‌شده به شمار نمی‌روند.
0.0
utils.getcwd()
دایرکتوری‌ای را که mpv از آن اجرا شده است برمی‌گرداند. در صورت بروز خطا، nil, error بازگردانده می‌شود.
utils.readdir(path [, filter])
تمام مدخل‌های موجود در مسیر داده‌شده روی فایل‌سیستم را شمارش کرده و آن‌ها را به صورت آرایه برمی‌گرداند. هر مدخل، یک مدخل دایرکتوری (بدون مسیر) است.
این فهرست نامرتب است (به هر ترتیبی که سیستم‌عامل آن را برگرداند).
اگر آرگومان filter داده شده باشد، باید یکی از رشته‌های زیر باشد:
7.0
3.5
0.0
files
تنها فایل‌های معمولی را فهرست می‌کند. این گزینه شامل دایرکتوری‌ها، فایل‌های ویژه (مانند فایل‌های دستگاه یونیکس یا FIFOها) و پیوندهای نمادین مرده نمی‌شود. پیوندهای نمادین یونیکس به فایل‌های معمولی در آن لحاظ می‌شوند.
dirs
تنها دایرکتوری‌ها یا پیوندهای نمادین به دایرکتوری‌ها را فهرست می‌کند. مدخل‌های . و .. شامل نمی‌شوند.
normal
نتایج هر دو مورد files و dirs را شامل می‌شود. (این حالت پیش‌فرض است.)
all
تمام مدخل‌ها را فهرست می‌کند، حتی فایل‌های دستگاه، پیوندهای نمادین مرده، FIFOها و مدخل‌های . و .. را.
168u
168u
168u
در صورت بروز خطا، nil, error برگردانده می‌شود.
utils.file_info(path)
اطلاعات وضعیت (stat) مسیر داده‌شده را دریافت کرده و جدولی با مدخل‌های زیر را برمی‌گرداند:
7.0
3.5
0.0
mode
بیت‌های سطح دسترسی و حفاظت (در ویندوز، همواره 755 (در مبنای هشت) برای دایرکتوری‌ها و 644 (در مبنای هشت) برای فایل‌ها)
size
اندازه بر حسب بایت
atime
زمان آخرین دسترسی
mtime
زمان آخرین تغییر محتوا
ctime
زمان آخرین تغییر فراداده
is_file
اینکه آیا path یک فایل معمولی است یا خیر (بولی)
is_dir
اینکه آیا path یک دایرکتوری است یا خیر (بولی)
168u
168u
168u
mode و size عدد صحیح هستند.
مُهرهای زمانی (atime، mtime و ctime) اعداد صحیحی بر حسب ثانیه از مبدأ زمان یونیکس (Unix time) هستند.
مقادیر بولی is_file و is_dir جهت راحتی ارائه شده‌اند؛ این مقادیر از mode مشتق می‌شوند و قابل دریافت هستند.
در صورت بروز خطا (مثلاً اگر مسیر وجود نداشته باشد)، nil, error برگردانده می‌شود.
utils.split_path(path)
یک مسیر را به مؤلفه دایرکتوری و مؤلفه نام فایل تقسیم کرده و آن‌ها را برمی‌گرداند. مقدار بازگشتی اول همواره دایرکتوری است. مقدار بازگشتی دوم بخش انتهایی مسیر، یعنی مدخل دایرکتوری است.
utils.join_path(p1, p2)
نتیجهٔ پیوند دادن دو مسیر را برمی‌گرداند. تلاش می‌کند هوشمندانه عمل کند؛ برای مثال، اگر p2 یک مسیر مطلق باشد، p2 بدون تغییر برگردانده می‌شود.
utils.subprocess(t)
یک فرایند خارجی را اجرا کرده و تا زمان خروج آن منتظر می‌ماند. وضعیت فرایند و خروجی دریافت‌شده را برمی‌گرداند. این یک پوشش قدیمی (legacy wrapper) پیرامون فراخوانی دستور subprocess با استفاده از mp.command_native است. این تابع عملیات زیر را انجام می‌دهد:
7.0
• 2
کپی کردن جدول t
• 2
تغییر نام فیلد cancellable به playback_only
• 2
تغییر نام max_size به capture_size
• 2
تنظیم فیلد capture_stdout روی true در صورت مقداردهی نشدن
• 2
تنظیم فیلد name روی subprocess
• 2
فراخوانی mp.command_native(copied_t)
• 2
اگر دستور با خطا مواجه شد، ایجاد یک جدول نتیجهٔ ساختگی
• 2
کپی کردن error_string به فیلد error در صورتی که رشته خالی نباشد
• 2
برگرداندن جدول نتیجه
168u
توصیه می‌شود به جای فراخوانی این پوشش قدیمی، مستقیماً از mp.command_native یا mp.command_native_async استفاده کنید. این تابع صرفاً جهت حفظ سازگاری نگه‌داشته شده است.
برای آشنایی با معناشناسی و پارامترهای بیشتر، مستندات دستور subprocess را ببینید.
utils.subprocess_detached(t)
یک فرایند خارجی را اجرا کرده و آن را از نظارت و کنترل mpv جدا (detach) می‌کند.
پارامتر t یک جدول است. این تابع مدخل‌های زیر را می‌خواند:
7.0
3.5
0.0
args
آرایه‌ای از رشته‌ها با همان معناشناسی args مورد استفاده در تابع subprocess.
168u
168u
168u
این تابع مقدار nil برمی‌گرداند.
این یک پوشش قدیمی پیرامون فراخوانی دستور run با mp.commandv و توابع دیگر است.
utils.getpid()
شناسه فرایند (PID) مربوط به پردازش در حال اجرای mpv را برمی‌گرداند. این می‌تواند برای شناسایی mpv فراخواننده هنگام اجرای زیرفرایندهای (جدا شده) استفاده شود.
utils.get_env_list()
محیط C را به عنوان فهرستی از رشته‌ها برمی‌گرداند. (این را با "محیط" در Lua که مفهومی نامرتبط است اشتباه نگیرید.)
utils.parse_json(str [, trail])
آرگومان رشته‌ای داده‌شده را به عنوان JSON تجزیه می‌کند و آن را به صورت یک جدول Lua برمی‌گرداند. در صورت بروز خطا، nil, error برمی‌گرداند. (در حال حاضر، error صرفاً یک رشته حاوی عبارت error است، زیرا هیچ نوع گزارش خطای دقیق و ریزدانه‌ای وجود ندارد.)
مقدار بازگردانده‌شده از قواعدی مشابه با mp.get_property_native() برای تشخیص اشیاء خالی و آرایه‌ها استفاده می‌کند.
اگر پارامتر trail برابر با true (یا هر مقدار معادل با true) باشد، متن‌های غیرفضای‌خالی (non-whitespace) انتهایی توسط تابع نادیده گرفته شده و متن انتهایی به عنوان سومین مقدار بازگشتی ارائه می‌شود. (مقدار بازگشتی سوم همواره وجود دارد، اما با تنظیم trail، خطایی صادر نمی‌شود.)
utils.format_json(v)
جدول (یا مقدار) داده‌شدهٔ Lua را به صورت یک رشته JSON قالب‌بندی کرده و آن را برمی‌گرداند. در صورت بروز خطا، nil, error برمی‌گرداند. (خطاها معمولاً فقط در انواع داده‌های ناسازگار با JSON رخ می‌دهند.)
مقدار آرگومان از قواعدی مشابه با mp.set_property_native() برای تشخیص اشیاء خالی و آرایه‌ها استفاده می‌کند.
utils.to_string(v)
مقدار داده‌شده را به رشته تبدیل می‌کند. جدول‌ها و محتوای آن‌ها را قالب‌بندی می‌کند. این تابع کار خاصی انجام نمی‌دهد؛ وجود آن صرفاً به این دلیل لازم است که Lua در این زمینه افتضاح است.
این پودمان به اسکریپت‌ها اجازه می‌دهد با استفاده از کنسول REPL ورودی متنی را از کاربر دریافت کنند.
0.0
input.get(table)
کنسول را نمایش می‌دهد تا کاربر بتواند متن را وارد کند.
مدخل‌های زیر از table خوانده می‌شوند:
7.0
prompt
رشته‌ای که باید پیش از فیلد ورودی نمایش داده شود.
submit
یک تابع بازفراخوان که هنگام فشردن Enter توسط کاربر فراخوانی می‌شود. آرگومان نخست، متن درون کنسول است.
keep_open
اینکه آیا کنسول پس از ثبت (submit) باز بماند یا خیر. مقدار پیش‌فرض false است.
opened
یک تابع بازفراخوان که با نمایش کنسول فراخوانی می‌شود. از این تابع می‌توان برای نمایش فهرستی از گزینه‌ها با input.set_log() استفاده کرد.
edited
یک تابع بازفراخوان که با تغییر متن فراخوانی می‌شود. آرگومان نخست، متن درون کنسول است.
complete
یک تابع بازفراخوان که هنگام ویرایش متن یا جابه‌جا کردن مکان‌نما توسط کاربر فراخوانی می‌شود. آرگومان نخست، متن پیش از مکان‌نما است. این تابع بازفراخوان باید یک جدول از رشته‌های مقادیر نامزد تکمیل و موقعیت مکان‌نمای مبنای ۱ (1-based) را که تکمیل از آنجا شروع می‌شود، بازگرداند. کنسول تکمیل‌هایی را که به صورت تقریبی (fuzzy) با متن بین این موقعیت و مکان‌نما مطابقت دارند نمایش می‌دهد و امکان انتخاب آن‌ها را فراهم می‌سازد.
سومین مقدار بازگشتی که اختیاری است، رشته‌ای است که بدون نمایش در تکمیل‌ها، به انتهای خط ورودی افزوده می‌شود.
autoselect_completion
اینکه آیا در صورت عدم انتخاب دستی، در هنگام ثبت (submit) اولین تکمیل به طور خودکار انتخاب شود یا خیر. مقدار پیش‌فرض false است.
closed
یک تابع بازفراخوان که با پنهان شدن کنسول فراخوانی می‌شود؛ چه به دلیل فراخوانی input.terminate() از سایر توابع بازفراخوان باشد، یا اینکه کاربر آن را با یک کلید میانبر بسته باشد. آرگومان نخست متن درون کنسول، و آرگومان دوم موقعیت مکان‌نما است.
default_text
رشته‌ای برای پر کردن اولیه‌ی فیلد ورودی.
cursor_position
موقعیت اولیه‌ی مکان‌نما، که از ۱ شروع می‌شود.
history_path
در صورت تعیین، مسیر ذخیره و بارگذاری تاریخچه‌ی خطوط وارد شده است.
id
شناسه‌ای که مشخص می‌کند کدام تاریخچه ورودی و بافر گزارش (log buffer) در میان موارد ذخیره‌شده برای فراخوانی‌های input.get() استفاده شود. پیش‌فرض، نام اسکریپت فراخواننده به همراه prompt چسبیده به آن است.
168u
input.terminate()
کنسول را می‌بندد.
input.log(message, style, terminal_style)
یک خط به بافر گزارش اضافه می‌کند. style می‌تواند حاوی برچسب‌های ASS بیشتری برای اعمال روی message باشد، و terminal_style می‌تواند شامل دنباله‌های گریز (escape sequences) باشد که هنگام نمایش کنسول در ترمینال استفاده می‌شوند.
input.log_error(message)
ابزار کمکی برای افزودن یک خط به بافر گزارش با همان رنگی که برای دستورهای با خطا استفاده می‌شود. هنگام ارسال ورودی نامعتبر توسط کاربر سودمند است.
input.set_log(log)
کل بافر گزارش را جایگزین می‌کند.
log جدولی از رشته‌ها، یا جدول‌هایی با کلیدهای text، style و terminal_style است.
مثال:
7.0
3.5
input.set_log({
"regular text",
{
text = "error text",
style = "{\\c&H7a77f2&}",
terminal_style = "\027[31m",
}
})
168u
168u
input.select(table)
فهرستی از موارد را مشخص می‌کند که برای انتخاب به کاربر ارائه می‌شوند.
مدخل‌های زیر از table خوانده می‌شوند:
7.0
prompt
رشته‌ای که باید پیش از فیلد ورودی نمایش داده شود.
items
جدولی از مدخل‌ها برای انتخاب از میان آن‌ها.
default_item
اندیس عدد صحیحِ مبنای ۱ (1-based) از موردِ از‌پیش‌انتخاب‌شده.
submit
تابع بازفراخوانی که هنگام فشردن Enter توسط کاربر فراخوانی می‌شود. نخستین آرگومان، اندیس مبنای ۱ از مورد انتخاب‌شده است.
keep_open
اینکه آیا کنسول پس از ثبت (submit) باز بماند یا خیر. مقدار پیش‌فرض false است.
168u
مثال:
7.0
3.5
0.0
3.5
input.select({
items = {
"First playlist entry",
"Second playlist entry",
},
submit = function (id)
mp.commandv("playlist-play-index", id - 1)
end,
})
168u
168u
168u
168u
رویدادها اعلان‌هایی از هستهٔ پخش‌کننده به اسکریپت‌ها هستند. می‌توانید یک گردانندهٔ رویداد را با mp.register_event ثبت کنید.
توجه داشته باشید که تمام اسکریپت‌ها (و بخش‌های دیگر پخش‌کننده) رویدادها را به طور یکسان دریافت می‌کنند، و سازوکاری برای مسدود کردن دریافت رویدادها توسط سایر اسکریپت‌ها وجود ندارد.
مثال:
0.0
3.5
function my_fn(event)
print("start of playback!")
end
mp.register_event("file-loaded", my_fn)
168u
168u
برای انواع رویدادهای موجود، بخش فهرست رویدادها (List of events) را ببینید.
"موارد اضافی (Extras)"
این بخش ویژگی‌های آزمایشی یا ویژگی‌هایی را مستند می‌کند که برای تضمین یک رابط پایدار "بیش از حد خاص" هستند.
0.0
mp.add_hook(type, priority, fn)
یک قلاب بازخوانی (hook callback) برای type (رشته‌ای که نوع خاصی از قلاب را مشخص می‌کند) اضافه می‌کند. این قلاب‌ها به پخش‌کننده اجازه می‌دهند توابع اسکریپت را فراخوانی کرده و منتظر نتیجهٔ آن‌ها بماند (به طور معمول، رابط اسکریپت‌نویسی Lua از دیدگاه هستهٔ پخش‌کننده ناهمگام است). priority یک عدد صحیح اختیاری است که امکان ترتیب‌بندی میان قلاب‌های هم‌نوع را فراهم می‌سازد. استفاده از مقدار 50 به عنوان مقدار پیش‌فرض خنثی توصیه می‌شود.
fn(hook) تابعی است که در هنگام اجرای قلاب فراخوانی خواهد شد. پارامتر ارسال‌شده به آن (hook) یک شیء Lua است که می‌تواند جنبه‌های بیشتری از قلاب فراخوانی‌شدهٔ کنونی را کنترل کند. این شیء متدهای زیر را ارائه می‌دهد:
7.0
3.5
0.0
defer()
بازگشت از تابع قلاب نباید به طور خودکار قلاب را ادامه دهد. در عوض، کاربر API می‌خواهد خودش در زمان دیگری (قبل یا بعد از بازگشت تابع) hook:cont() را فراخوانی کند.
cont()
قلاب را ادامه می‌دهد. نیازی به فراخوانی آن نیست مگر اینکه defer() فراخوانی شده باشد.
168u
168u
168u
برای قلاب‌های موجود و کارکرد آن‌ها، بخش Hooks را ببینید - تنها فهرست قلاب‌ها اهمیت دارد؛ مدیریت اجرای قلاب به طور خودکار توسط تابع اسکریپت Lua انجام می‌شود.
168u
"جاوااسکریپت (JAVASCRIPT)"
پشتیبانی از JavaScript در mpv تقریباً با پشتیبانی از Lua یکسان است. از این بخش به عنوان مرجعی برای تفاوت‌ها و در دسترس بودن APIها استفاده کنید، اما در غیر این صورت باید برای جزئیات API و اسکریپت‌نویسی عمومی در mpv به مستندات Lua مراجعه کنید.
"مثال (Example)"
کد JavaScript که هنگام متوقف شدن پخش‌کننده (pause)، از حالت تمام‌صفحه خارج می‌شود:
0.0
3.5
function on_pause_change(name, value) {
if (value == true)
mp.set_property("fullscreen", "no");
}
mp.observe_property("pause", "bool", on_pause_change);
168u
اگر یک فایل اسکریپت دارای پسوند .js باشد، mpv تلاش می‌کند آن را به عنوان JavaScript بارگذاری کند، اما در غیر این صورت، گزینه‌ها، دایرکتوری‌های اسکریپت، شیوه بارگذاری و غیره مستندشده برای Lua برای فایل‌های JavaScript نیز اعمال می‌شوند.
مقداردهی اولیه و چرخه حیات اسکریپت مشابه با Lua است، و بیشتر توابع Lua در ماژول‌های mp، mp.utils، mp.msg، mp.options و mp.input با APIهای یکسان در دسترس JavaScript هستند - از جمله اجرای دستورها، دریافت/تنظیم ویژگی‌ها، ثبت رویدادها/کلیدهای میانبر/قلاب‌ها (hooks) و غیره.
"تفاوت‌ها با Lua"
نیازی به بارگذاری ماژول‌ها نیست. mp، mp.utils، mp.msg، mp.options و mp.input از پیش بارگذاری شده‌اند، و می‌توانید به عنوان مثال از var cwd = mp.utils.getcwd(); بدون آماده‌سازی قبلی استفاده کنید.
خطاها کمی متفاوت هستند. در جایی که APIهای Lua برای خطا مقدار nil برمی‌گردانند، APIهای JavaScript مقدار undefined را برمی‌گردانند. در جایی که Lua مقادیر something, error را برمی‌گرداند، JavaScript تنها something را برمی‌گرداند - و error را از طریق mp.last_error() در دسترس قرار می‌دهد. توجه داشته باشید که تنها برخی از توابع این مقدار اضافی error را دارند - معمولاً همان‌هایی که در Lua نیز آن را دارند.
APIهای استاندارد ترجیح داده می‌شوند. برای نمونه setTimeout و JSON.stringify در دسترس هستند، اما mp.add_timeout و mp.utils.format_json موجود نیستند.
کتابخانه استانداردی وجود ندارد. این بدان معناست که تعامل با هر چیزی خارج از mpv به APIهای موجود، معمولاً از طریق mp.utils، محدود است. با این حال، برخی توابع فایلی اضافه شده‌اند، و require در CommonJS نیز در دسترس است - که در آن ماژول‌های بارگذاری‌شده همان مجوزهای اسکریپت‌های عادی را دارند.
"ویژگی‌های زبان - ECMAScript 5"
موتور پشتیبان اسکریپت‌نویسی که mpv در حال حاضر استفاده می‌کند MuJS است - یک مفسر کمینه و سازگار ES5. بدین ترتیب، به عنوان مثال String.substring پیاده‌سازی شده است، در حالی که String.substr متداول اما غیراستاندارد پیاده‌سازی نشده است. لطفاً برای ویژگی‌های زبان و پشتیبانی از پلتفرم به صفحات MuJS مراجعه کنید - https://mujs.com .
"APIهای پشتیبانی‌نشده Lua و جایگزین‌های JS آن‌ها"
mp.add_timeout(seconds, fn) در JS: id = setTimeout(fn, ms)
mp.add_periodic_timer(seconds, fn) در JS: id = setInterval(fn, ms)
utils.parse_json(str [, trail]) در JS: JSON.parse(str)
utils.format_json(v) در JS: JSON.stringify(v)
utils.to_string(v) بخش dump در زیر را ببینید.
mp.get_next_timeout() بخش حلقه رویداد (event loop) در زیر را ببینید.
mp.dispatch_events([allow_wait]) بخش حلقه رویداد در زیر را ببینید.
"APIهای اسکریپت‌نویسی - یکسان با Lua"
(LE) - آخرین خطا (Last-Error)، نشان می‌دهد که می‌توان پس از فراخوانی از mp.last_error() برای بررسی موفقیت (رشته خالی) یا شکست (رشته غیرخالی حاوی دلیل) استفاده کرد. در جایی که APIهای Lua از nil برای نشان دادن خطا استفاده می‌کنند، APIهای JS از undefined استفاده می‌کنند.
mp.command(string) (LE)
mp.commandv(arg1, arg2, ...) (LE)
mp.command_native(table [,def]) (LE)
id = mp.command_native_async(table [,fn]) (LE) یادداشت: id در صورت موفقیت دارای مقدار true-thy است، error در صورت موفقیت رشته‌ای خالی است.
mp.abort_async_command(id)
mp.del_property(name) (LE)
mp.get_property(name [,def]) (LE)
mp.get_property_osd(name [,def]) (LE)
mp.get_property_bool(name [,def]) (LE)
mp.get_property_number(name [,def]) (LE)
mp.get_property_native(name [,def]) (LE)
mp.set_property(name, value) (LE)
mp.set_property_bool(name, value) (LE)
mp.set_property_number(name, value) (LE)
mp.set_property_native(name, value) (LE)
mp.get_time()
mp.add_key_binding(key, name|fn [,fn [,flags]])
mp.add_forced_key_binding(...)
mp.remove_key_binding(name)
mp.register_event(name, fn)
mp.unregister_event(fn)
mp.observe_property(name, type, fn)
mp.unobserve_property(fn)
mp.get_opt(key)
mp.get_script_name()
mp.get_script_directory()
mp.osd_message(text [,duration])
mp.get_wakeup_pipe()
mp.register_idle(fn)
mp.unregister_idle(fn)
mp.enable_messages(level)
mp.register_script_message(name, fn)
mp.unregister_script_message(name)
mp.create_osd_overlay(format)
mp.get_osd_size() (شیء بازگردانده‌شده دارای ویژگی‌های width ،height و aspect است)
mp.msg.log(level, ...)
mp.msg.fatal(...)
mp.msg.error(...)
mp.msg.warn(...)
mp.msg.info(...)
mp.msg.verbose(...)
mp.msg.debug(...)
mp.msg.trace(...)
mp.utils.getcwd() (LE)
mp.utils.readdir(path [, filter]) (LE)
mp.utils.file_info(path) (LE) نکته: همانند lua - این تابع مسیرهای فرا (meta-paths) مانند ~~/foo را بسط نمی‌دهد (سایر توابع فایلی JS مسیرهای فرا را بسط می‌دهند).
mp.utils.split_path(path)
mp.utils.join_path(p1, p2)
mp.utils.subprocess(t)
mp.utils.subprocess_detached(t)
mp.utils.get_env_list()
mp.utils.getpid() (LE)
mp.add_hook(type, priority, fn(hook))
mp.options.read_options(obj [, identifier [, on_update]]) (انواع:
string/boolean/number)
mp.input.get(obj)
mp.input.select(obj)
mp.input.terminate()
mp.input.log(message, style)
mp.input.log_error(message)
mp.input.set_log(log)
exit() (سراسری).SS ابزارهای کمکی بیشتر (Additional utilities)
0.0
mp.last_error()
اگر پس از یک فراخوانی API استفاده شود که آخرین خطا را به‌روزرسانی می‌کند، در صورت موفقیت‌آمیز بودن فراخوانی API یک رشتهٔ خالی و در غیر این صورت رشته‌ای غیرخالی حاوی دلیل خطا برمی‌گرداند.
Error.stack (string)
هنگام استفاده از try { ... } catch(e) { ... }، مقدار e.stack همان ردگیری پشته (stack trace) خطا خواهد بود - در صورتی که با استفاده از سازندهٔ Error(...) ایجاد شده باشد.
print (global)
یک نام مستعار کاربردی برای mp.msg.info.
dump (global)
مشابه print، اما همچنین اشیاء و آرایه‌ها را به صورت بازگشتی بسط می‌دهد.
mp.utils.getenv(name)
مقدار متغیر محیطی میزبان با نام name، یا در صورت تعریف‌نشده بودن متغیر، undefined را برمی‌گرداند.
mp.utils.get_user_path(path)
پوششی ساده برای دستور expand-path در mpv که یک رشته برمی‌گرداند.
توابع read_file، write_file، append_file و require از پیش مسیر را به صورت داخلی بسط می‌دهند و مسیرهای فراداده‌ای (meta-paths) mpv مانند ~~desktop/foo را می‌پذیرند.
mp.utils.read_file(fname [,max])
محتوای فایل fname را به صورت رشته برمی‌گرداند. اگر max مشخص شده و نامنفی باشد، خواندن را به max بایت محدود می‌کند.
mp.utils.write_file(fname, str)
(رو)نوشتن در فایل fname با محتوای متنی str. به عنوان محافظتی ساده در برابر جابه‌جایی تصادفی آرگومان‌ها، fname باید با پیشوند file:// آغاز شود، مانند: mp.utils.write_file("file://~/abc.txt", "hello world").
mp.utils.append_file(fname, str)
در صورتی که فایل fname وجود نداشته باشد، مشابه mp.utils.write_file عمل می‌کند. اگر فایل وجود داشته باشد، به جای رونویسی، به انتهای آن الحاق می‌کند (append).
168u
نکته: توابع read_file، write_file و append_file در صورت بروز خطا استثنا صادر می‌کنند (throw) و تنها محتوای متنی را مجاز می‌دانند.
0.0
mp.get_time_ms()
مشابه mp.get_time() اما به جای ثانیه بر حسب میلی‌ثانیه است.
mp.get_script_file()
نام فایل اسکریپت کنونی را برمی‌گرداند.
mp.utils.compile_js(fname, content_str)
کد جاوه‌اسکریپت با محتوای content_str را با نام فایل fname (بدون بارگذاری چیزی از سیستم فایل) کامپایل می‌کند و آن را به عنوان یک تابع برمی‌گرداند. بسیار شبیه به سازندهٔ Function است، اما در ردگیری‌های پشته به صورت fname نمایش داده می‌شود.
mp.module_paths
آرایهٔ سراسری مسیرهای جستجوی ماژول برای تابع require (به پایین مراجعه کنید).
168u
تایمرها (سراسری) (Timers (global))
تایمرهای استاندارد HTML/node.js در دسترس هستند:
id = setTimeout(fn [,duration [,arg1 [,arg2...]]])
id = setTimeout(code_string [,duration])
clearTimeout(id)
id = setInterval(fn [,duration [,arg1 [,arg2...]]])
id = setInterval(code_string [,duration])
clearInterval(id)
توابع setTimeout و setInterval یک id برمی‌گردانند و بعداً پس از duration میلی‌ثانیه، fn را فراخوانی می‌کنند (یا code_string را اجرا می‌نمایند). همچنین تایمر فاصله‌ای (Interval) در هر duration تکرار می‌شود.
مقدار duration دارای کمینه و پیش‌فرض 0 است، code_string یک رشتهٔ معمولی است که به عنوان کد جاوه‌اسکریپت ارزیابی می‌شود، و [,arg1 [,arg2..]] در صورت ارائه به عنوان آرگومان هنگام فراخوانی بازگشتی fn استفاده می‌شوند.
توابع clear...(id) تایمر id را لغو می‌کنند و این عملیات برگشت‌ناپذیر است.
نکته: تایمرها همواره به صورت ناهمگام (asynchronously) فراخوانی بازگشتی دارند؛ برای نمونه setTimeout(fn) هرگز قبل از بازگشت خود، fn را فراخوانی نخواهد کرد. fn یا در پایان همین دور از حلقهٔ رویداد (event loop iteration) یا در دورهای بعدی حلقهٔ رویداد فراخوانی خواهد شد. این موضوع برای تایمرهای فاصله‌ای (intervals) نیز صادق است - که آن‌ها نیز هرگز دو بار در همان یک دور از حلقهٔ رویداد فراخوانی نمی‌شوند.
علاوه بر این، تایمرها پس از خالی شدن صف رویدادها پردازش می‌شوند؛ بنابراین استفاده از setTimeout(fn) به عنوان یک ناظر بی‌کاری (idle observer) یک‌باره کاملاً معتبر است..SS ماژول‌های CommonJS و require(id)
ماژول‌های CommonJS سامانه‌ای استاندارد هستند که در آن اسکریپت‌ها می‌توانند توابع مشترک را برای استفاده توسط دیگر اسکریپت‌ها صادر کنند. به‌طور مشخص، یک ماژول اسکریپتی است که مشخصه‌ها (توابع و غیره) را به شیء از پیش موجود exports خود می‌افزاید، که اسکریپت دیگر می‌تواند با require(module-id) به آن دسترسی داشته باشد. این عمل ماژول را اجرا کرده و شیء exports آن را بازمی‌گرداند. فراخوانی‌های بعدی require برای همان ماژول، شیء exports ذخیره‌شده در حافظهٔ موقت آن را بدون اجرای مجدد ماژول بازمی‌گرداند.
ماژول‌ها و require پشتیبانی می‌شوند، با استاندارد سازگارند، و به‌طور کلی شبیه به node.js هستند. با این حال، بیشتر ماژول‌های node.js به دلیل نبود ماژول‌هایی مانند fs، process و غیره اجرا نخواهند شد، اما برخی از ماژول‌های node.js با وابستگی‌های حداقلی کار می‌کنند. به‌طور کلی، این سازوکار برای ماژول‌های mpv است و جایگزینی برای node.js محسوب نمی‌شود.
پسوند فایلی .js همواره به id اضافه می‌شود؛ به عنوان مثال require("./foo") فایل ./foo.js را بارگذاری کرده و شیء exports آن را برمی‌گرداند.
شناسه‌ای (id) که با ./ یا ../ آغاز شود نسبت به اسکریپت یا ماژولی که آن را require می‌کند نسبی است. در غیر این صورت یک شناسهٔ سطح‌بالا (اصطلاح CommonJS) در نظر گرفته می‌شود.
شناسهٔ سطح‌بالا در صورت امکان به عنوان یک مسیر مطلق در سیستم‌فایل ارزیابی می‌شود، مانند /x/y یا ~/x. در غیر این صورت به عنوان یک شناسهٔ ماژول سراسری در نظر گرفته شده و طبق mp.module_paths به ترتیب معمول آرایه جستجو می‌شود؛ به عنوان مثال require("x") تلاش می‌کند تا x.js را در یکی از مسیرهای آرایه بارگذاری کند، و شناسهٔ foo/x تلاش می‌کند x.js را درون دایرکتوری foo در یکی از مسیرها بارگذاری نماید.
آرایهٔ mp.module_paths به‌طور پیش‌فرض خالی است، مگر برای اسکریپت‌هایی که به عنوان یک دایرکتوری بارگذاری می‌شوند که در آن صورت شامل یک مورد است - <directory>/modules/ . این آرایه می‌تواند از طریق یک اسکریپت (یا با استفاده از مقداردهی اولیهٔ سفارشی - به پایین مراجعه کنید) به‌روزرسانی شود که بر فراخوانی‌های بعدی require برای شناسه‌های ماژول‌های سراسری که هنوز بارگذاری/ذخیره نشده‌اند اثر خواهد گذاشت.
متغیر global وجود ندارد، اما this یک ماژول در بالاترین دامنهٔ واژگانی آن، همان شیء سراسری است - حتی در حالت strict. اگر ماژولی دارید که به global به عنوان شیء سراسری نیاز دارد، می‌توانید پیش از require دستور this.global = this; را اجرا کنید.
توابع و متغیرهای تعریف‌شده درون یک ماژول، شیء سراسری را آلوده نمی‌کنند.
مقداردهی اولیه سفارشی (Custom initialization)
پس از اینکه mpv محیط جاوااسکریپت را برای یک اسکریپت مقداردهی اولیه کرد اما پیش از بارگذاری اسکریپت - تلاش می‌کند فایل init.js را در ریشهٔ دایرکتوری پیکربندی mpv اجرا کند. کد موجود در این فایل می‌تواند محیط را برای تمام اسکریپت‌ها بیشتر به‌روزرسانی کند. برای مثال اگر حاوی mp.module_paths.push("/foo") باشد، آنگاه require در تمام اسکریپت‌ها شناسه‌های ماژول‌های سراسری را در /foo نیز جستجو خواهد کرد (دستور mp.module_paths = ["/foo"]; را اجرا نکنید زیرا این کار مسیرهای موجود را حذف می‌کند - مانند <script-dir>/modules برای اسکریپت‌هایی که از یک دایرکتوری بارگذاری می‌شوند).
اگر mpv با گزینهٔ --no-config فراخوانی شود، فایل مقداردهی اولیهٔ سفارشی نادیده گرفته می‌شود.
پیش از mpv 0.34، نام فایل در همان دایرکتوری .init.js (همراه با نقطه) بود.
حلقه رویداد (The event loop)
حلقهٔ رویداد تا زمانی که صف خالی نباشد رویدادهای mpv را پایش/توزیع (poll/dispatch) می‌کند، سپس تایمرها را پردازش کرده، سپس در انتظار رویداد بعدی می‌ماند و این روند را برای همیشه تکرار می‌کند.
می‌توانید این کد را در اسکریپت خود قرار دهید تا جایگزین حلقهٔ رویداد توکار شود، و همچنین هر رویدادی را که mpv به اسکریپت شما ارسال می‌کند چاپ کند:
0.0
3.5
function mp_event_loop() {
var wait = 0;
do {
var e = mp.wait_event(wait);
dump(e); // there could be a lot of prints...
if (e.event != "none") {
mp.dispatch_event(e);
wait = 0;
} else {
wait = mp.process_timers() / 1000;
if (wait != 0) {
mp.notify_idle_observers();
wait = mp.peek_timers_wait() / 1000;
}
}
} while (mp.keep_running);
}
168u
168u
mp_event_loop نامی است که mpv پس از بارگذاری اسکریپت تلاش می‌کند آن را فراخوانی کند. پیاده‌سازی داخلی شبیه به این است (البته بدون dump...).
دستور e = mp.wait_event(wait) زمانی بازمی‌گردد که رویداد بعدی mpv برسد، یا پس از wait ثانیه در صورتی که مثبت باشد و رویدادی از mpv نرسیده باشد. مقدار 0 برای wait بلافاصله بازمی‌گردد (در صورتی که صف خالی باشد با e.event == "none").
دستور mp.dispatch_event(e) گرداننده‌های ثبت‌شده برای e.event را فراخوانی می‌کند، در صورتی که چنین مواردی وجود داشته باشد (گرداننده‌های رویداد، ناظران مشخصه، پیام‌های اسکریپت و غیره).
دستور mp.process_timers() تایمرهای سررسیدشده، افزوده‌شده و لغونشده را فراخوانی می‌کند و مدت زمان باقی‌مانده تا تایمر سررسید بعدی را به میلی‌ثانیه برمی‌گرداند (احتمالاً 0)، یا در صورتی که تایمر معلقی نباشد -1 بازمی‌گرداند. نباید به‌صورت بازگشتی فراخوانی شود.
دستور mp.notify_idle_observers() ناظران بیکاری (idle observers) را فراخوانی می‌کند؛ کاری که هنگام رفتن به حالت خواب (wait != 0) انجام می‌دهیم، اما ممکن است ناظران تایمرهایی اضافه کنند یا اتمام کار آن‌ها مدت‌زمان قابل‌توجهی طول بکشد، بنابراین پس از آن مقدار wait را مجدداً محاسبه می‌کنیم.
دستور mp.peek_timers_wait() مقادیر یکسانی با mp.process_timers() بازمی‌گرداند اما بدون انجام هیچ عملی. در صورت فراخوانی از درون یک بازفراخوانی تایمر، نتیجه نامعتبر خواهد بود.
نکته: تابع exit() نیز برای رویداد shutdown ثبت شده است، و پیاده‌سازی آن صرفاً یک دستور سادهٔ mp.keep_running = false است..SH "ارتباط بین‌فرآیندی با JSON (JSON IPC)"
mpv می‌تواند توسط برنامه‌های خارجی با استفاده از پروتکل IPC مبتنی بر JSON کنترل شود.
این قابلیت را می‌توان با مشخص کردن مسیر یک unix socket یا یک named pipe با استفاده از
گزینهٔ --input-ipc-server، یا شماره توصیف‌گر فایل یک unix socket
یا یک named pipe با استفاده از --input-ipc-client فعال کرد.
کلاینت‌ها می‌توانند به این سوکت متصل شده و دستورها را به پخش‌کننده ارسال کنند یا
رویدادها را از آن دریافت نمایند.
هشدار:
0.0
3.5
این پروتکل برای تبدیل شدن به یک پروتکل امن شبکه‌ای در نظر گرفته نشده است. این پروتکل
صراحتاً ناامن است: هیچ احراز هویت و هیچ رمزنگاری‌ای وجود ندارد و خود دستورها نیز
ناامن هستند. برای مثال، دستور run در دسترس است که می‌تواند دستورهای دلخواه
سیستمی را اجرا کند. مورد کاربرد آن، کنترل محلی پخش‌کننده است. این سازوکار
تفاوتی با پروتکل slave در MPlayer ندارد.
168u
168u
"مثال با socat"
می‌توانید از ابزار socat برای ارسال دستورها (و دریافت پاسخ‌ها) از طریق شل
استفاده کنید. با فرض اینکه mpv به این صورت اجرا شده باشد:
0.0
3.5
mpv file.mkv --input-ipc-server=/tmp/mpvsocket
168u
168u
سپس می‌توانید با استفاده از socat آن را کنترل کنید:
0.0
3.5
> echo '{ "command": ["get_property", "playback-time"] }' | socat - /tmp/mpvsocket
{"data":190.482000,"error":"success"}
168u
168u
در این حالت، socat داده‌ها را بین stdin/stdout و اتصال سوکت mpv منتقل می‌کند.
برای نحوهٔ راه‌اندازی mpv بدون خروج فوری یا بدون پخش یک فایل، گزینهٔ --idle را ببینید.
همچنین ارسال دستورهای متنی به سبک input.conf نیز امکان‌پذیر است:
0.0
3.5
> echo 'show-text ${playback-time}' | socat - /tmp/mpvsocket
168u
168u
اما پاسخی از طریق سوکت دریافت نخواهید کرد. (این دستور به‌خصوص، زمان پخش
را روی OSD پخش‌کننده نمایش می‌دهد.)
"مثال خط فرمان (Command Prompt)"
متأسفانه آزمایش پروتکل IPC روی ویندوز به این سادگی نیست، زیرا پورت‌های ویندوزی
socat (در Cygwin و MSYS2) ساختار named pipeها را درک نمی‌کنند. در نبود ابزاری
ساده برای ارسال و دریافت از لوله‌های دوطرفه، می‌توان از دستور echo برای ارسال
دستورها استفاده کرد، اما پاسخی از طریق command prompt دریافت نمی‌شود.
با فرض اینکه mpv به این صورت اجرا شده باشد:
0.0
3.5
mpv file.mkv --input-ipc-server=\\.\pipe\mpvsocket
168u
168u
می‌توانید دستورها را از طریق command prompt ارسال کنید:
0.0
3.5
echo show-text ${playback-time} >\\.\pipe\mpvsocket
168u
168u
برای اینکه بتوان همانند لینوکس به صورت هم‌زمان از لولهٔ IPC خواند و در آن نوشت،
ضروری است که یک برنامهٔ خارجی بنویسید که از overlapped file I/O (یا نوعی
بسته‌بندی مانند NamedPipeClientStream در .NET) استفاده کند.
می‌توانید لوله را در PuTTY به عنوان یک دستگاه "serial" باز کنید. این روش چندان
راحت نیست، اما راهکاری را برای آزمایش تعاملی بدون نیاز به نوشتن کد فراهم می‌آورد..SS پروتکل (Protocol)
این پروتکل از JSON مبتنی بر فقط UTF-8، همان‌طور که در RFC-8259 تعریف شده است، استفاده می‌کند. برخلاف JSON استاندارد، دنباله‌های گریز "u" مجاز به ساخت جفت‌های جانشین (surrogate pairs) نیستند. برای جلوگیری از تداخل، تمام نویسه‌های متنی شامل و بالاتر از نقطه کد U+0020 را به‌صورت UTF-8 کدگذاری کنید. mpv ممکن است در موارد خاص UTF-8 ناقص خروجی دهد (بخش "UTF-8" را در زیر ببینید).
کلاینت‌ها می‌توانند با ارسال پیام‌های JSON به شکل زیر، دستورها را روی پخش‌کننده اجرا کنند:
0.0
3.5
{ "command": ["command_name", "param1", "param2", ...] }
168u
168u
که در آن command_name نام دستوری است که باید اجرا شود، و به دنبال آن فهرستی از پارامترها می‌آید. پارامترها باید به عنوان مقادیر بومی JSON (اعداد صحیح، رشته‌ها، مقادیر بولی، ...) قالب‌بندی شوند. هر پیام باید با \n خاتمه یابد. علاوه بر این، \n نباید در هیچ کجای درون پیام ظاهر شود. در عمل، این بدان معناست که پیام‌ها باید پیش از ارسال به mpv فشرده‌سازی (minify) شوند.
سپس mpv پاسخی ارسال می‌کند که نشان می‌دهد آیا دستور به درستی اجرا شده است یا خیر، همراه با یک فیلد اضافی که داده‌های بازگشتی ویژهٔ دستور را نگه می‌دارد (این فیلد می‌تواند null نیز باشد).
0.0
3.5
{ "error": "success", "data": null }
168u
168u
همچنین mpv رویدادها را با پیام‌های JSON به شکل زیر برای کلاینت‌ها ارسال می‌کند:
0.0
3.5
{ "event": "event_name" }
168u
168u
که در آن event_name نام رویداد است. فیلدهای اضافی ویژهٔ رویداد نیز می‌توانند وجود داشته باشند. برای فهرستی از تمام رویدادهای پشتیبانی‌شده، بخش List of events را ببینید.
از آنجا که رویدادها می‌توانند در هر زمانی رخ دهند، ممکن است گاهی تشخیص اینکه کدام پاسخ مربوط به کدام دستور است دشوار باشد. دستورها می‌توانند به صورت اختیاری شامل یک request_id باشند که در صورت ارائه در درخواست دستور، عیناً در پاسخ کپی خواهد شد. mpv به هیچ وجه request_id را تفسیر نمی‌کند؛ این فیلد صرفاً برای استفادهٔ درخواست‌کننده است. تنها شرط این است که فیلد request_id باید یک عدد صحیح باشد (یک عدد بدون اعشار در محدودهٔ -2^63..2^63-1). استفاده از انواع دیگر منسوخ شده است و در حال حاضر هشداری نمایش می‌دهد. در آینده، این کار خطایی ایجاد خواهد کرد.
برای نمونه، این درخواست:
0.0
3.5
{ "command": ["get_property", "time-pos"], "request_id": 100 }
168u
168u
این پاسخ را ایجاد می‌کند:
0.0
3.5
{ "error": "success", "data": 1.468135, "request_id": 100 }
168u
168u
اگر یک request_id مشخص نکنید، پاسخ‌های دستور مقدار آن را برابر 0 قرار می‌دهند.
تمام دستورها، پاسخ‌ها و رویدادها با یک نویسهٔ شکست خط (\n) از یکدیگر جدا می‌شوند.
اگر نویسهٔ نخست (پس از نادیده گرفتن فاصله‌های خالی) { نباشد، دستور به عنوان یک دستور متنی غیر JSON تفسیر خواهد شد، همان‌طور که در input.conf (یا mpv_command_string() در API کلاینت) استفاده می‌شوند. علاوه بر این، خطوطی که با # آغاز می‌شوند و خطوط خالی نادیده گرفته می‌شوند.
در حال حاضر، بایت‌های 0 تعبیه‌شده خط فعلی را خاتمه می‌دهند، اما نباید به این موضوع اتکا کنید..SS جریان داده (Data flow)
در حال حاضر، پیاده‌سازی IPC سمت mpv در حین اجرای یک دستور و نوشتن پاسخ، به سوکت
سرویس‌دهی نمی‌کند. برای مثال امکان ندارد رویدادهای دیگری که حین اجرای دستور رخ داده‌اند،
پیش از نوشتن پاسخ در سوکت نوشته شوند.
این موضوع ممکن است در آینده تغییر کند. تنها تضمین موجود این است که پاسخ پیام‌های IPC
به ترتیب ارسال می‌شوند.
همچنین، از آنجا که ورودی/خروجی (I/O) سوکت ذاتاً ناهمگام (asynchronous) است، ممکن است
پیش از خواندن پاسخ دستور قبلی که ارسال کرده‌اید، پیام‌های رویداد غیرمرتبطی را از
سوکت بخوانید. در این حالت، این رویدادها توسط سمت mpv پیش از آنکه پیام دستور شما
را بخواند و پردازش آن را آغاز کند، در صف قرار گرفته بودند.
اگر پیاده‌سازی IPC در سمت mpv از نوشتن مسدودکننده و اجرای مسدودکننده دستورات
فاصله بگیرد، ممکن است در هر زمان برای ارسال رویدادها تلاش کند.
شما همچنین می‌توانید از دستورهای ناهمگام استفاده کنید که می‌توانند به هر ترتیبی
برگردند، و در حین اجرای دستور در پس‌زمینه، تعامل پروتکل IPC را به هیچ وجه مسدود نمی‌کنند.
دستورهای ناهمگام (Asynchronous commands)
دستور می‌تواند به صورت ناهمگام اجرا شود. رفتار این حالت دقیقاً مشابه اجرای معمولی
دستور است، با این تفاوت که اجرا مسدودکننده نیست. دستورهای دیگر را می‌توان حین اجرای
آن ارسال کرد، و تکمیل دستورها می‌تواند با هر ترتیبی صورت پذیرد.
فیلد async این مورد را کنترل می‌کند. در صورت وجود، باید یک مقدار بولی (boolean) باشد.
در صورت عدم وجود، false فرض می‌شود.
برای مثال، این دستور یک دستور ناهمگام را آغاز می‌کند:
0.0
3.5
{ "command": ["screenshot"], "request_id": 123, "async": true }
168u
168u
و این پیام تکمیل است:
0.0
3.5
{"request_id":123,"error":"success","data":null}
168u
168u
طبق طراحی، شما تاییدیه‌ای مبنی بر شروع دستور دریافت نخواهید کرد. اگر دستوری
طولانی‌مدت باشد، ارسال پیام تا زمانی که دستور در آینده به پایان برسد منجر به هیچ پاسخی نخواهد شد.
برخی دستورها به صورت همگام اجرا می‌شوند، اما مانند دستورهای ناهمگامی رفتار خواهند کرد
که اجرای آن‌ها بلافاصله به پایان رسیده است.
لغو دستورهای ناهمگام در API مربوط به libmpv در دسترس است، اما هنوز در پروتکل IPC
پیاده‌سازی نشده است.
دستورهای دارای آرگومان‌های نام‌دار (Commands with named arguments)
اگر فیلد command یک شیء JSON باشد، آرگومان‌های نام‌دار مورد انتظار هستند. این مورد
در مستندات C API تابع mpv_command_node() (مورد MPV_FORMAT_NODE_MAP)
شرح داده شده است. در برخی موارد، این کار ممکن است خوانایی دستورها را افزایش دهد،
در حالی که برخی از دستورهای مبهم اساساً نیازمند استفاده از آرگومان‌های نام‌دار هستند.
در حال حاضر، تنها دستورهای «اصلی» (همان‌طور که در List of Input Commands فهرست شده‌اند)
از آرگومان‌های نام‌دار پشتیبانی می‌کنند.
دستورها (Commands)
علاوه بر دستورهای شرح داده‌شده در List of Input Commands، چند دستور اضافی نیز می‌توانند
به عنوان بخشی از پروتکل استفاده شوند:
0.0
client_name
نام کلاینت را به صورت رشته برمی‌گرداند. این نام رشته‌ای به صورت ipc-N است
که N یک عدد صحیح می‌باشد.
get_time_us
زمان داخلی کنونی mpv را بر حسب میکروثانیه به عنوان یک عدد برمی‌گرداند. این مقدار
در اصل همان زمان سیستم با یک آفست اختیاری است.
get_property
مقدار ویژگی داده‌شده را برمی‌گرداند. این مقدار در فیلد data از پیام پاسخ ارسال خواهد شد.
مثال:
7.0
3.5
{ "command": ["get_property", "volume"] }
{ "data": 50.0, "error": "success" }
168u
168u
get_property_string
مشابه get_property، اما داده‌های حاصل همیشه یک رشته خواهد بود.
مثال:
7.0
3.5
{ "command": ["get_property_string", "volume"] }
{ "data": "50.000000", "error": "success" }
168u
168u
set_property
ویژگی داده‌شده را به مقدار مشخص‌شده تنظیم می‌کند. برای اطلاعات بیشتر درباره ویژگی‌ها،
بخش Properties را ببینید.
مثال:
7.0
3.5
{ "command": ["set_property", "pause", true] }
{ "error": "success" }
168u
168u
set_property_string
نام مستعاری برای set_property. هر دو دستور مقدارهای بومی و رشته‌ها را می‌پذیرند.
observe_property
تغییرات یک ویژگی را زیر نظر می‌گیرد. اگر ویژگی مشخص‌شده تغییر کند، آنگاه رویدادی
از نوع property-change تولید خواهد شد.
مثال:
7.0
3.5
{ "command": ["observe_property", 1, "volume"] }
{ "error": "success" }
{ "event": "property-change", "id": 1, "data": 52.0, "name": "volume" }
168u
168u
هشدار:
7.0
3.5
اگر اتصال بسته شود، کلاینت IPC در داخل برنامه نابود شده و ویژگی‌های تحت‌نظر لغو ثبت می‌شوند.
این اتفاق برای مثال هنگام ارسال دستورها به یک سوکت با فراخوانی‌های جداگانه socat
رخ می‌دهد. این امر می‌تواند این تصور را ایجاد کند که نظارت بر ویژگی کار نمی‌کند.
برای اینکه نظارت کار کند، باید اتصال IPC را باز نگه دارید.
168u
168u
observe_property_string
مشابه observe_property، اما داده‌های حاصل همیشه یک رشته خواهد بود.
مثال:
7.0
3.5
{ "command": ["observe_property_string", 1, "volume"] }
{ "error": "success" }
{ "event": "property-change", "id": 1, "data": "52.000000", "name": "volume" }
168u
168u
unobserve_property
عملیات observe_property یا observe_property_string را لغو می‌کند. این دستور
به شناسه عددی ارسال‌شده به عنوان آرگومان به دستور نظارت‌شده نیاز دارد.
مثال:
7.0
3.5
{ "command": ["unobserve_property", 1] }
{ "error": "success" }
168u
request_log_messages
خروجی پیام‌های لاگ mpv را فعال می‌کند. این پیام‌ها به‌صورت رویداد دریافت خواهند شد.
پارامتر این دستور، سطح لاگ (log-level) است (تابع C API به نام
mpv_request_log_messages را ببینید).
خروجی پیام‌های لاگ صرفاً برای خواندن انسان در نظر گرفته شده است (عمدتاً برای اشکال‌زدایی).
تلاش برای استخراج اطلاعات با تجزیهٔ (parsing) این پیام‌ها تنها به ناسازگاری و خرابی در
انتشارهای آیندهٔ mpv منجر خواهد شد. در عوض، یک درخواست قابلیت (feature request) ثبت
کرده و رویداد مناسبی بخواهید که اطلاعات مورد نیاز شما را بازگرداند.
enable_event, disable_event
رویداد نام‌برده‌شده را فعال یا غیرفعال می‌کند. عملکرد تابع C API به نام
mpv_request_event را بازتاب می‌دهد. اگر به‌جای نام یک رویداد از رشتهٔ
all استفاده شود، تمام رویدادها فعال یا غیرفعال می‌شوند.
به‌طور پیش‌فرض، بیشتر رویدادها فعال هستند و کاربرد چندانی برای این دستور
وجود ندارد.
get_version
نگارش client API ارائه‌شده توسط C API نمونهٔ راه‌دور mpv را
برمی‌گرداند.
همچنین ببینید: DOCS/client-api-changes.rst.
168u
UTF-8
به‌طور معمول، تمام رشته‌ها در قالب UTF-8 هستند. گاهی ممکن است رخ دهد که رشته‌ها دارای
رمزگذاری معیوبی باشند (که اغلب برای برچسب‌های فایل و مواردی از این دست پیش می‌آید،
همچنین در بسیاری از یونیکس‌ها الزامی وجود ندارد که نام فایل‌ها نیز در قالب UTF-8 باشند).
این بدان معناست که mpv گاهی JSON نامعتبر ارسال می‌کند. اگر این مسئله برای تجزیه‌کنندهٔ
(parser) برنامهٔ کلاینت مشکل‌ساز است، باید پیش از ارسال داده‌ها به تجزیه‌کنندهٔ JSON،
داده‌های خام را برای توالی‌های نامعتبر UTF-8 پالایش کرده و جایگزینی مورد نظر را انجام دهد.
برنامهٔ mpv برای ساختن UTF-8 نامعتبر با توالی‌های گریز معیوب "u" تلاشی
نخواهد کرد. این مورد جفت‌های جایگزین (surrogate pairs) را نیز شامل می‌شود.
افزونه‌های JSON (JSON extensions)
افزونه‌های غیراستاندارد زیر پشتیبانی می‌شوند:
0.0
3.5
0.0
• 2
یک مورد در لیست یا شیء می‌تواند یک "," پایانی داشته باشد
• 2
نحو شیء علاوه بر ":" علامت "=" را نیز می‌پذیرد
• 2
کلیدهای شیء در صورتی که با نویسه‌ای از "A-Za-z_" شروع شوند و تنها شامل نویسه‌هایی از "A-Za-z0-9_" باشند، می‌توانند بدون گیومه باشند
• 2
گریزهای بایتی با "xAB" مجاز هستند (که در آن AB یک عدد هگزادسیمال ۲ رقمی است)
168u
168u
168u
مثال:
0.0
3.5
{ objkey = "value\x0A" }
168u
168u
معادل است با:
0.0
3.5
{ "objkey": "value\n" }
168u
168u
روش‌های جایگزین راه‌اندازی کلاینت‌ها (Alternative ways of starting clients)
می‌توانید بدون نیاز به تنظیم --input-ipc-server یک اتصال IPC ناشناس
ایجاد کنید. این کار از طریق یک پسانهٔ (backend) شبه‌اسکریپت‌نویسی mpv انجام می‌شود
که فرایندها را آغاز می‌کند.
می‌توانید فایل‌هایی با پسوند .run را در پوشهٔ اسکریپت‌های mpv در پوشهٔ
پیکربندی آن قرار دهید (برای جزئیات به بخش FILES مراجعه کنید)، یا آن‌ها را از طریق روش‌های
دیگر بارگذاری نمایید (به Script location مراجعه کنید). این اسکریپت‌ها صرفاً با سازوکار بومی
سیستم‌عامل اجرا می‌شوند (گویی آن‌ها را در شل اجرا کرده‌اید). آن‌ها باید دارای shebang
مناسب بوده و بیت اجرایی (executable bit) آن‌ها فعال باشد.
هنگام اجرا، یک سوکت (همان اتصال IPC) از طریق وراثت توصیف‌کنندهٔ فایل (file descriptor inheritance)
به آن‌ها منتقل می‌شود. توصیف‌کنندهٔ فایل به‌صورت آرگومان خط فرمان ویژهٔ
--mpv-ipc-fd=N مشخص می‌شود، که در آن N توصیف‌کنندهٔ عددی فایل است.
مابقی موارد همانند یک اتصال IPC عادی با --input-ipc-server است. برنامهٔ mpv
تلاشی برای نظارت یا هرگونه تعامل دیگر با فرایند اسکریپت راه‌اندازی‌شده نمی‌کند.
این قابلیت هنوز در Windows کار نمی‌کند..SH "تغییرات (CHANGELOG)"
هیچ تغییرات‌نامه (changelog) واقعی وجود ندارد، اما می‌توانید موارد زیر را بررسی کنید:
0.0
• 2
تغییرات نسخه‌های منتشرشده، که باید شامل بیش‌تر تغییرات قابل مشاهده برای کاربر، از جمله ویژگی‌های جدید و رفع اشکالات باشد:
https://github.com/mpv-player/mpv/releases
• 2
لاگ گیت (git log)، که در واقع تغییرات‌نامهٔ "واقعی" است
• 2
فایل https://github.com/mpv-player/mpv/blob/master/DOCS/interface-changes.rst
تغییرات رابط دستوری و کاربری، مانند گزینه‌ها و مشخصه‌ها (properties) را مستند می‌کند.
• 2
تغییرات C API در این نشانی فهرست شده‌اند:
https://github.com/mpv-player/mpv/blob/master/DOCS/client-api-changes.rst
• 2
فایل mplayer-changes.rst در زیرپوشهٔ DOCS در مخزن git، که پیش‌تر به جای این بخش قرار داشت. این فایل برخی تغییرات رخ‌داده از زمان انشعاب mplayer2 از MPlayer را مستند می‌کند. (دیگر به‌روزرسانی نمی‌شود.)
168u
"جاسازی در سایر برنامه‌ها (EMBEDDING INTO OTHER PROGRAMS (LIBMPV))"
برنامهٔ mpv می‌تواند به عنوان زیرساخت (backend) پخش صوت/تصویر در برنامه‌های دیگر جاسازی شود. روش توصیه‌شده برای این کار استفاده از libmpv است. فایل include/mpv/client.h را در مخزن کد منبع mpv ببینید. این فایل یک C API ارائه می‌دهد. اتصالات (bindings) برای زبان‌های دیگر نیز ممکن است در دسترس باشند (ویکی را ببینید).
از آن‌جا که libmpv صرفاً امکان دسترسی به سازوکارهای زیرین جهت واپایش mpv را فراهم می‌کند، مستندات تکمیلی در چند جای مختلف پراکنده شده‌اند:
0.0
• 2
https://github.com/mpv-player/mpv/blob/master/include/mpv/client.h
• 2
https://mpv.io/manual/master/#options
• 2
https://mpv.io/manual/master/#list-of-input-commands
• 2
https://mpv.io/manual/master/#properties
• 2
https://github.com/mpv-player/mpv-examples/tree/master/libmpv
168u
"افزونه‌های C (C PLUGINS)"
شما می‌توانید برای mpv افزونه‌های C بنویسید. این افزونه‌ها از libmpv API استفاده می‌کنند، هرچند از خود کتابخانهٔ libmpv مستقیماً استفاده نمی‌کنند.
در صورتی که کامپایلر در پلتفرم‌های Linux/BSD از پیوند با پرچم -rdynamic پشتیبانی کند، آن‌ها به صورت پیش‌فرض فعال هستند. در Windows آن‌ها همیشه فعال هستند.
"محل افزونه‌های C (C plugins location)"
افزونه‌های C در پوشهٔ اسکریپت‌های mpv درون دایرکتوری پیکربندی آن قرار می‌گیرند (برای جزئیات به بخش فایل‌ها (FILES) مراجعه کنید). آن‌ها باید دارای پسوند نام فایل .so یا .dll باشند. همچنین می‌توان آن‌ها را صراحتاً با گزینهٔ --script بارگذاری کرد.
"رابط برنامه‌نویسی (API)"
یک افزونهٔ C باید تابع زیر را برون‌ریزی (export) کند:
0.0
3.5
int mpv_open_cplugin(mpv_handle *handle)
168u
168u
تابع افزونه در زمان بارگذاری فراخوانی خواهد شد. این تابع تا زمانی که افزونهٔ شما بارگذاری شده است نباید بازگردد (در ریسه/thread اختصاصی خود اجرا می‌شود). متغیر handle به محض بازگشت تابع افزونه، آزاد‌سازی حافظه (deallocate) خواهد شد.
مقدار بازگشتی به عنوان وضعیت خطا تفسیر می‌شود. مقدار 0 به عنوان موفقیت در نظر گرفته می‌شود، در حالی که -1 نشان‌دهندهٔ خطا است. در حالت دوم، پخش‌کننده یک پیام خطای کلی مبنی بر شکست بارگذاری چاپ می‌کند.
مقادیر بازگشتی غیر از 0 و -1 رزرو شده هستند و باعث بروز رفتار تعریف‌نشده (undefined behavior) می‌شوند.
درون تابع افزونه، می‌توانید توابع libmpv API را فراخوانی کنید. شناسهٔ handle توسط mpv_create_client() (یا در واقع معادل درونی آن) ایجاد شده و متعلق به شما است. می‌توانید برای انتظار رویدادها، mpv_wait_event() و موارد مشابه را فراخوانی کنید. با این وجود، توابع mpv_destroy() یا mpv_terminate_destroy() را روی این handle فراخوانی نکنید.
توجه داشته باشید که ممکن است پخش‌کننده تا زمانی که افزونه برای نخستین‌بار mpv_wait_event() را فراخوانی کند متوقف (block) شود. این امکان به شما فرصت می‌دهد تا پیش از آغاز پخش، قلاب‌های (hooks) اولیه و موارد دیگر را راه‌اندازی کنید.
جزئیات تا حد زیادی مشابه اسکریپت‌های Lua هستند..SS پیوند با libmpv
پیاده‌سازی فعلی مستلزم آن است که افزونه‌های شما به libmpv پیوند داده نشوند. آنچه افزونه‌های شما استفاده می‌کنند نمادهایی از فایل باینری libmpv نیست، بلکه نمادهایی از باینری میزبان mpv است.
در ویندوز، برای در دسترس قرار دادن نمادهای باینری میزبان، باید هنگام کامپایل cplugin عبارت MPV_CPLUGIN_DYNAMIC_SYM را تعریف کنید. این کار نمادها را پیش از فراخوانی mpv_open_cplugin() به‌صورت پویا بارگذاری می‌کند.
مثال‌ها (EXAMPLES)
ببینید:
0.0
• 2
https://github.com/mpv-player/mpv-examples/tree/master/cplugins
168u
"متغیرهای محیطی (ENVIRONMENT VARIABLES)"
تعدادی متغیر محیطی وجود دارند که می‌توانند برای کنترل رفتار mpv استفاده شوند.
0.0
HOME، XDG_CONFIG_HOME
برای تعیین دایرکتوری پیکربندی mpv استفاده می‌شود. اگر XDG_CONFIG_HOME تنظیم نشده باشد، از $HOME/.config/mpv استفاده می‌شود.
مسیر $HOME/.mpv همیشه با اولویت پایین‌تر به فهرست مسیرهای جستجوی پیکربندی اضافه می‌شود.
MPV_HOME
دایرکتوری‌ای که mpv در آن به دنبال تنظیمات کاربر می‌گردد. بر HOME اولویت دارد و mpv تلاش خواهد کرد فایل پیکربندی را به عنوان $MPV_HOME/mpv.conf بارگذاری کند.
MPV_VERBOSE (همچنین ببینید: -v و --msg-level)
سطح پرگویی اولیه را در تمام ماژول‌های پیام تعیین می‌کند (پیش‌فرض: 0). این مقدار یک عدد صحیح است و میزان پرگویی حاصل با تعداد گزینه‌های --v ارسال‌شده در خط فرمان مطابقت دارد.
MPV_LEAK_REPORT
اگر روی 1 تنظیم شود، گزارش نشت حافظه داخلی talloc را فعال می‌کند. اگر روی مقدار دیگری تنظیم شود، گزارش نشت را غیرفعال می‌کند.
LADSPA_PATH
مسیر جستجو برای افزونه‌های LADSPA را مشخص می‌کند. در صورت عدم تنظیم، باید از نام مسیرهای کامل استفاده شود.
DISPLAY
نام استاندارد نمایشگر X11 مورد استفاده.
FFmpeg:
این کتابخانه به متغیرهای محیطی گوناگونی دسترسی دارد. با این حال، آنها به طور متمرکز مستند نشده‌اند و مستندسازی آنها وظیفه ما نیست؛ بنابراین این فهرست ناقص است.
متغیرهای محیطی قابل توجه:
7.0
http_proxy
نشانی URL پیشکار (proxy) برای آدرس‌های http:// و https://.
no_proxy
فهرستی از الگوهای دامنه که برای آنها نباید از هیچ پیشکاری استفاده شود. مدخل‌های فهرست با , جدا می‌شوند. الگوها می‌توانند شامل * باشند.
168u
libdvdcss:
7.0
DVDCSS_CACHE
دایرکتوری ذخیره‌سازی مقادیر کلید عنوان (title key) را مشخص می‌کند. این کار رمزگشایی DVDهایی را که در حافظه پنهان هستند سرعت می‌بخشد. اگر دایرکتوری DVDCSS_CACHE وجود نداشته باشد، ایجاد می‌شود و یک زیردایرکتوری با نام عنوان DVD یا تاریخ تولید آن ساخته خواهد شد. اگر DVDCSS_CACHE تنظیم نشده یا خالی باشد، libdvdcss از مقدار پیش‌فرض استفاده خواهد کرد که در یونیکس ${HOME}/.dvdcss/ و در ویندوز دایرکتوری داده‌های برنامه‌های رومینگ (%APPDATA%) است. مقدار ویژه "off" حافظه پنهان را غیرفعال می‌کند.
DVDCSS_METHOD
روش احراز هویت و رمزگشایی را که libdvdcss برای خواندن دیسک‌های به‌هم‌ریخته (scrambled) استفاده می‌کند، تعیین می‌نماید. می‌تواند یکی از مقادیر title، key یا disc باشد.
7.0
key
روش پیش‌فرض است. کتابخانه libdvdcss از مجموعه‌ای از کلیدهای پخش‌کننده محاسبه‌شده برای تلاش در جهت به دست آوردن کلید دیسک استفاده می‌کند. در صورتی که درایو هیچ‌یک از کلیدهای پخش‌کننده را تشخیص ندهد، این روش ممکن است با شکست مواجه شود.
disc
یک روش جایگزین در زمان شکست روش key است. به جای استفاده از کلیدهای پخش‌کننده، libdvdcss کلید دیسک را با استفاده از الگوریتم جستجوی فراگیر (brute force) کرک می‌کند. این فرآیند بار پردازشی بالایی بر CPU دارد و برای ذخیره داده‌های موقت به ۶۴ مگابایت حافظه رم نیاز دارد.
title
روش جایگزین در زمان شکست تمام روش‌های دیگر است. این روش به تبادل کلید با درایو DVD متکی نیست، بلکه از یک حمله رمزنگاری برای حدس زدن کلید عنوان استفاده می‌کند. در موارد نادر این روش ممکن است شکست بخورد زیرا داده‌های رمزگذاری‌شده کافی روی دیسک برای اجرای یک حمله آماری وجود ندارد، اما از سوی دیگر تنها راه برای رمزگشایی DVD ذخیره‌شده روی دیسک سخت، یا DVD با منطقه (region) اشتباه روی درایو RPC2 است.
168u
DVDCSS_RAW_DEVICE
دستگاه خام (raw device) مورد استفاده را مشخص می‌کند. کاربرد دقیق آن به سیستم‌عامل شما بستگی دارد؛ برای نمونه، ابزار لینوکس برای تنظیم دستگاه‌های خام raw(8) است. لطفاً توجه داشته باشید که در اکثر سیستم‌عامل‌ها، استفاده از دستگاه خام به بافرهای شدیداً تراز‌شده نیاز دارد: لینوکس به ترازبندی ۲۰۴۸ بایتی (که اندازه یک سکتور DVD است) نیاز دارد.
DVDCSS_VERBOSE
سطح پرگویی libdvdcss را تنظیم می‌کند.
7.0
0
هیچ پیامی در خروجی چاپ نمی‌کند.
1
پیام‌های خطا را در stderr چاپ می‌کند.
2
پیام‌های خطا و پیام‌های اشکال‌زدایی را در stderr چاپ می‌کند.
168u
DVDREAD_NOKEYS
صرف‌نظر کردن از دریافت تمام کلیدها هنگام راه‌اندازی. در حال حاضر غیرفعال است.
HOME
FIXME: این بخش مستند شود.
168u
به‌طور معمول mpv پس از پایان موفقیت‌آمیز پخش، عدد 0 را به عنوان کد خروج برمی‌گرداند.
اگر خطایی رخ دهد، ممکن است کدهای خروج زیر برگردانده شوند:
0.0
3.5
0.0
1
خطا در مقداردهی اولیه mpv. این کد همچنین در صورتی که گزینه‌های ناشناخته به mpv فرستاده شوند برگردانده می‌شود.
2
فایل داده‌شده به mpv قابل پخش نبود. این مورد تا حدودی مبهم است: در حال حاضر، اگر مقداردهی اولیه تا حد زیادی موفقیت‌آمیز باشد، پخش فایل موفق در نظر گرفته می‌شود، حتی اگر پخش بلافاصله پس از مقداردهی اولیه با شکست مواجه شود.
3
برخی از فایل‌ها قابل پخش بودند و برخی دیگر خیر (با استفاده از تعریف موفقیت در بالا).
4
خروج به دلیل دریافت سیگنال، فشردن Ctrl+c در یک پنجرهٔ VO (به‌صورت پیش‌فرض)، یا از طریق کلیدهای پیش‌فرض خروج در حالت انکودینگ (encoding mode).
168u
168u
168u
توجه داشته باشید که خروج دستی از پخش‌کننده همواره به کد خروج 0 می‌انجامد و بر کد خروجی که در حالت عادی بازگردانده می‌شد اولویت دارد. همچنین، دستور ورودی quit می‌تواند یک کد خروج دریافت کند: در این حالت، همان کد خروج برگردانده می‌شود.
"درایوهای نوری (OPTICAL DRIVES)"
بسته به سیستم‌عامل، mpv به‌طور پیش‌فرض دستگاه دیسک متفاوتی را انتخاب می‌کند. این موضوع برای پخش همهٔ انواع دیسک‌های نوری (CDDA، DVD و BD) صدق می‌کند.
box center;
l|l.
سیستم‌عامل درایو پیش‌فرض
Linux /dev/sr0
Windows D:
macOS /dev/disk1
FreeBSD /dev/cd0
OpenBSD /dev/rcd0c

توجه داشته باشید که این بخش سیستم‌عامل‌های Linux/BSD را فرض می‌کند. در سایر پلتفرم‌ها ممکن است مسیرها متفاوت باشند. برای موارد ویژهٔ Windows، بخش FILES ON WINDOWS را ببینید.

تمام فایل‌های پیکربندی باید با کدگذاری UTF-8 ذخیره شوند.

/usr/local/etc/mpv/mpv.conf
تنظیمات سراسری mpv در سطح سیستم (بسته به آرگومان --prefix داده‌شده به configure - برنامهٔ mpv در پیکربندی پیش‌فرض از /usr/local/etc/mpv/ به‌عنوان دایرکتوری پیکربندی استفاده می‌کند، در حالی که بیشتر توزیع‌های لینوکس آن را روی /etc/mpv/ تنظیم می‌کنند).
~/.cache/mpv
دایرکتوری استاندارد کِش (cache). گزینه‌های معینی در mpv ممکن است موجب شوند فایل‌های کش روی دیسک نوشته شوند. این مسیر می‌تواند توسط متغیرهای محیطی، به ترتیب صعودی، بازنویسی شود:
1
اگر $XDG_CACHE_HOME تنظیم شده باشد، دایرکتوری کش مشتق‌شده $XDG_CACHE_HOME/mpv خواهد بود.
2
اگر $MPV_HOME تنظیم شده باشد، دایرکتوری کش مشتق‌شده $MPV_HOME خواهد بود.

اگر این دایرکتوری وجود نداشته باشد، mpv تلاش خواهد کرد تا آن را به‌طور خودکار ایجاد کند.

~/.config/mpv
دایرکتوری استاندارد پیکربندی. این مسیر می‌تواند توسط متغیرهای محیطی، به ترتیب صعودی، بازنویسی شود:
1
اگر $XDG_CONFIG_HOME تنظیم شده باشد، دایرکتوری پیکربندی مشتق‌شده $XDG_CONFIG_HOME/mpv خواهد بود.
2
اگر $MPV_HOME تنظیم شده باشد، دایرکتوری پیکربندی مشتق‌شده $MPV_HOME خواهد بود.

اگر نه این دایرکتوری و نه دایرکتوری پیکربندی اولیه (به زیر نگاه کنید) هیچ‌کدام وجود نداشته باشند، mpv تلاش می‌کند این دایرکتوری را به‌طور خودکار بسازد.

~/.mpv/
دایرکتوری پیکربندی اولیه (پیش از نسخهٔ 0.5.0). در صورت وجود، همچنان خوانده خواهد شد. اگر این دایرکتوری موجود باشد و دایرکتوری استاندارد پیکربندی موجود نباشد، فایل‌های کش و فایل‌های پیکربندی تماشای بعدی (watch later) نیز در این دایرکتوری نوشته خواهند شد.

اگر هر دو دایرکتوری (هم این دایرکتوری و هم دایرکتوری استاندارد پیکربندی) موجود باشند، پیکربندی از هر دو خوانده می‌شود و اولویت با محتوای دایرکتوری استاندارد پیکربندی خواهد بود. با این حال، شما باید به‌طور کامل به دایرکتوری استاندارد مهاجرت کنید و در این حالت هشداری نمایش داده خواهد شد.

~/.config/mpv/mpv.conf
تنظیمات کاربر mpv (بخش CONFIGURATION FILES را ببینید)
~/.config/mpv/input.conf
کلیدهای میان‌بر (بخش INPUT.CONF را ببینید)
~/.config/mpv/fonts.conf
فایل fonts.conf مربوط به Fontconfig که برای mpv سفارشی‌سازی شده است. شما باید fonts.conf سیستم را در این فایل بگنجانید، در غیر این صورت mpv قلم‌هایی را که از پیش روی سیستم دارید شناسایی نخواهد کرد.

تنها در صورتی در دسترس است که libass همراه با fontconfig کامپایل شده باشد.

~/.config/mpv/subfont.ttf
قلم پشتیبان (fallback) برای زیرنویس
~/.config/mpv/fonts/
مکان پیش‌فرض برای --sub-fonts-dir (بخش Subtitles را ببینید) و --osd-fonts-dir (بخش OSD را ببینید).
~/.config/mpv/scripts/
تمام فایل‌های موجود در این دایرکتوری به‌گونه‌ای بارگذاری می‌شوند که گویی به گزینهٔ --script داده شده‌اند. این فایل‌ها به ترتیب الفبایی بارگذاری می‌شوند.

گزینهٔ --load-scripts=no بارگذاری این فایل‌ها را غیرفعال می‌کند.

برای جزئیات بیشتر، بخش Script location را ببینید.

~/.local/state/mpv/watch_later/
شامل فایل‌های موقت پیکربندی مورد نیاز برای ازسرگیری پخش فایل‌ها با قابلیت تماشای بعدی (watch later). برای مثال کلید میان‌بر Q یا دستور ورودی quit-watch-later را ببینید.

این مسیر می‌تواند توسط متغیرهای محیطی، به ترتیب صعودی، بازنویسی شود:

1
اگر $XDG_STATE_HOME تنظیم شده باشد، دایرکتوری مشتق‌شده برای تماشای بعدی $XDG_STATE_HOME/mpv/watch_later خواهد بود.
2
اگر $MPV_HOME تنظیم شده باشد، دایرکتوری مشتق‌شده برای تماشای بعدی $MPV_HOME/watch_later خواهد بود.

هر فایل، یک فایل پیکربندی کوچک است که در صورت بارگذاری فایل رسانه‌ای مربوطه، بارگذاری می‌شود. این فایل شامل موقعیت پخش و برخی از تنظیماتی است که حین پخش تغییر کرده‌اند (نه لزوماً همهٔ آن‌ها). نام این فایل‌ها با استفاده از هش مسیر کامل فایل‌های رسانه‌ای ساخته می‌شوند. به‌طور کلی استخراج نام فایل رسانه‌ای از این هش ممکن نیست. با این حال، می‌توانید گزینهٔ --write-filename-in-watch-later-config را تنظیم کنید تا پخش‌کننده نام فایل رسانه را به محتوای فایل پیکربندی ازسرگیری اضافه کند..TP ~/.config/mpv/script-opts/osc.conf این فایل توسط اسکریپت OSC بارگذاری می‌شود. برای جزئیات به مستندات ON SCREEN CONTROLLER مراجعه کنید.

سایر فایل‌های موجود در این دایرکتوری نیز مختص اسکریپت‌های مربوطه هستند و هستهٔ mpv به آن‌ها دست نمی‌زند.

در win32 (در صورت کامپایل با MinGW، اما نه Cygwin)، مکان‌های پیش‌فرض فایل پیکربندی متفاوت است. آن‌ها معمولاً در مسیر %APPDATA%/mpv/ قرار دارند. برای مثال، مسیر mpv.conf برابر %APPDATA%/mpv/mpv.conf است که به یک مسیر مشخص در سیستم و مختص کاربر نگاشت می‌شود، مانند:

C:\users\USERNAME\AppData\Roaming\mpv\mpv.conf

می‌توانید مسیر دقیق را با اجرای دستور echo %APPDATA%\mpv\mpv.conf در cmd.exe بیابید.

سایر فایل‌های پیکربندی (مانند input.conf) در همان دایرکتوری قرار دارند. بخش فایل‌ها (FILES) در بالا را ببینید.

دایرکتوری کَش در %LOCALAPPDATA%/mpv/cache قرار دارد.

دایرکتوری watch_later در %LOCALAPPDATA%/mpv/watch_later قرار دارد.

متغیر محیطی $MPV_HOME، مشابه سیستم‌های UNIX، این مسیرها را به‌طور کامل بازنویسی (override) می‌کند.

اگر دایرکتوری‌ای با نام portable_config در کنار mpv.exe وجود داشته باشد، تمامی پیکربندی‌ها تنها از این دایرکتوری بارگذاری خواهند شد. فایل‌های پیکربندی تماشای بعدی (watch later) و فایل‌های کَش نیز در همین دایرکتوری نوشته می‌شوند. (این قابلیت تنها در ویندوز وجود دارد و عملکردی موازی با $MPV_HOME دارد. با این حال، از آنجا که ویندوز با اسکریپت‌نویسی بسیار ناسازگار است، یک اسکریپت پوششی (wrapper) که صرفاً $MPV_HOME را تنظیم کند، برخلاف کاری که در سایر سیستم‌ها امکان‌پذیر است، عمل نخواهد کرد. portable_config جهت راحتی و برای دور زدن این محدودیت فراهم شده است.)

فایل‌های پیکربندی واقع در همان دایرکتوری mpv.exe با اولویت کمتری بارگذاری می‌شوند. برخی از فایل‌های پیکربندی تنها یک‌بار بارگذاری می‌شوند؛ این بدان معناست که برای نمونه از میان ۲ فایل input.conf موجود در دو دایرکتوری پیکربندی، تنها فایلی بارگذاری می‌شود که در دایرکتوری با اولویت بالاتر قرار دارد.

سومین دایرکتوری پیکربندی با کمترین اولویت، دایرکتوری‌ای به نام mpv در همان دایرکتوری حاوی mpv.exe است. در گذشته این دایرکتوری دارای بالاترین اولویت بود، اما اکنون استفاده از آن توصیه نمی‌شود و ممکن است در آینده حذف شود.

توجه داشته باشید که mpv برای سادگی جداکننده‌های مسیر / و \ را با یکدیگر ترکیب می‌کند. kernel32.dll این را می‌پذیرد، اما cmd.exe نمی‌پذیرد.

در macOS دایرکتوری watch later در مسیر ~/.config/mpv/watch_later/ قرار دارد و دایرکتوری کَش بر روی ~/Library/Caches/io.mpv/ تنظیم شده است. این دایرکتوری‌ها نمی‌توانند توسط متغیرهای محیطی بازنویسی شوند. سایر موارد مانند بخش FILES است.

GPLv2+