STREAMLINK(1) Streamlink STREAMLINK(1)

streamlink - استخراج جریان‌های ویدیویی از سرویس‌های گوناگون و هدایت آن‌ها به پخش‌کننده ویدیوی دلخواه

streamlink [OPTIONS] <URL> [STREAM]

streamlink --loglevel debug youtu.be/VIDEO-ID best
streamlink --player mpv --player-args '--no-border --no-keepaspect-window' twitch.tv/CHANNEL 1080p60
streamlink --player-external-http --player-external-http-port 8888 URL STREAM
streamlink --output /path/to/file --http-timeout 60 URL STREAM
streamlink --stdout URL STREAM | ffmpeg -i pipe:0 ...
streamlink --http-header 'Authorization=OAuth TOKEN' --http-header 'Referer=URL' URL STREAM
streamlink --hls-live-edge 5 --stream-segment-threads 5 'hls://https://host/playlist.m3u8' best
streamlink --twitch-low-latency -p mpv -a '--cache=yes --demuxer-max-back-bytes=2G' twitch.tv/CHANNEL best

نشانی اینترنتی (URL) برای تلاش جهت استخراج جریان‌های ویدیویی از آن.

معمولاً بسته به پیاده‌سازی افزونه مورد استفاده، می‌توان پروتکل نشانی‌های http(s) (https://) را حذف کرد.

همچنین می‌توان URL را با استفاده از گزینه --url نیز مشخص نمود.

جریان ویدیویی (استریم) برای پخش.

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

جریان‌های جایگزین (fallback) را می‌توان با یک فهرست جداشده با کاما تعیین کرد:

"720p,480p,best"

اگر هیچ جریانی مشخص نشده باشد و از --default-stream نیز استفاده نشود، فهرستی از جریان‌های موجود چاپ خواهد شد.

نمایش این پیام راهنما و خروج.
نمایش رشته نسخه برنامه و خروج.
--version-check
بررسی نسخه برنامه و خروج.
فعال یا غیرفعال کردن بررسی خودکار برای نسخه جدید Streamlink.

پیش‌فرض: "no".

بارگذاری گزینه‌ها از این فایل پیکربندی.

برای بارگذاری چندین فایل می‌توان آن را تکرار کرد؛ در این حالت، گزینه‌ها روی یکدیگر ادغام می‌شوند و آخرین فایل پیکربندی بالاترین اولویت را خواهد داشت.

غیرفعال کردن بارگذاری هرگونه فایل پیکربندی پیش‌فرض یا سفارشی.
نادیده‌گرفتن تنظیم محلی (locale) سیستم جهت انتخاب زبان ترجیحی زیرنویس و صدا.

قالب مشخص‌کننده محلی به‌صورت [language_code]_[country_code] است؛ مانند en_US یا es_ES.

پیش‌فرض: system locale.

تنظیم آستانه پیام‌های گزارش‌گیری.

سطوح معتبر، به ترتیب افزایش میزان پرگویی (verbosity):

none, critical, error, warning, info, debug, trace, all

مقدار پیش‌فرض: "info".

تنظیم یک قالب سفارشی برای گزارش‌گیری.

برای اطلاعات بیشتر درباره قالب گزارش‌گیری و مشخصه‌های موجود در LogRecord، به مستندات logging.Formatter کتابخانه استاندارد پایتون مراجعه کنید. قالب‌بند Streamlink از سبک آکولاد ({}) استفاده می‌کند.

قالب پیش‌فرض به سطح لاگ انتخاب‌شده بستگی دارد.

برای سطوح با جزئیات بالا (trace و all):

مقدار پیش‌فرض: "[{asctime}][{threadName}][{name}][{levelname}] {message}".

در غیر این صورت:

مقدار پیش‌فرض: "[{name}][{levelname}] {message}".

تنظیم یک قالب تاریخ سفارشی برای گزارش‌گیری.

این گزینه مشخصه asctime مربوط به LogRecord را از طریق strftime() قالب‌بندی می‌کند.

قالب پیش‌فرض تاریخ به سطح لاگ انتخاب‌شده بستگی دارد.

برای سطوح با جزئیات بالا (trace و all):

مقدار پیش‌فرض: "%H:%M:%S.%f".

در غیر این صورت:

مقدار پیش‌فرض: "%H:%M:%S".

الحاق خروجی گزارش به FILE به‌جای نوشتن در stdout/stderr.

اعلان‌های کاربر و روند پیشرفت بارگیری در FILE نوشته نخواهند شد.

مقدار - (خط تیره) نام فایل را روی یک رشته شبیه به ISO8601 تنظیم می‌کند و دایرکتوری‌های پیش‌فرض زیر را برای گزارش‌گیری انتخاب خواهد کرد.

Windows:

%TEMP%\streamlink\logs

macOS:

${HOME}/Library/Logs/streamlink

Linux/BSD:

${XDG_STATE_HOME:-${HOME}/.local/state}/streamlink/logs
فرونشاندن تمامی خروجی‌های کنسول و گزارش‌گیری، و همچنین غیرفعال‌سازی اعلان‌های کاربر.
ارائه خروجی در قالب JSON به‌جای خروجی متنی عادی.

برای اسکریپت‌نویسی خارجی مفید است.

چاپ فهرستی از تمام افزونه‌های نصب‌شده فعلی.
نمایش فهرست تطبیق‌دهنده‌های یک افزونه خاص (الگوی regex برای URL به همراه اولویت اختیاری و نام اختیاری).

خروجی در قالبی شبیه به YAML و خوانا برای انسان است. لطفاً هنگام خواندن داده‌های تطبیق‌دهنده به صورت برنامه‌نویسی‌شده از --json استفاده کنید.

بررسی این‌که آیا Streamlink افزونه‌ای دارد که بتواند URL مشخص‌شده را مدیریت کند یا خیر.

کد وضعیت در صورت موفقیت 0 و در صورت شکست 1 است.

برای اسکریپت‌نویسی خارجی مفید است.

مشابه --can-handle-url، اما بدون دنبال کردن تغییرمسیرها (redirects) هنگام بررسی URL.
غیرفعال‌سازی ورودی/خروجی (I/O) مخزن کلید-مقدار افزونه.

در صورت غیرفعال بودن، افزونه‌ها قادر به بارگذاری یا ذخیره داده‌هایی مانند کوکی‌ها، اطلاعات احراز هویت و غیره نخواهند بود. داده‌هایی که بارگذاری یا ذخیره می‌شوند به پیاده‌سازی هر افزونه بستگی دارند.

غیرفعال‌سازی بارگذاری جانبی خودکار (sideloading) افزونه‌های شخص ثالث از مکان پیش‌فرض.

برای آگاهی از مکانی که افزونه‌های شخص ثالث از آن بارگذاری می‌شوند، به مستندات بارگذاری جانبی افزونه (plugin-sideloading) مراجعه کنید.

بارگذاری افزونه‌های اضافی از این دایرکتوری.

می‌تواند چندین بار برای بارگذاری افزونه‌ها از چند دایرکتوری مشخص شود.

بارگذاری افزونه‌های اضافی از فهرستی از دایرکتوری‌های جداشده با کاما. (منسوخ‌شده)
رابط شبکه را بر اساس نشانی IP یا نام رابط انتخاب می‌کند.

پیشوندهای اختیاری زیر پشتیبانی می‌شوند:

  • if!<name> نام رابط
  • host!<name> نشانی IP یا نام میزبان (hostname)
  • ifhost!<interface>!<host> نام رابط و نشانی IP یا نام میزبان

نکته:

در ویندوز، تنها نشانی‌های IP پشتیبانی می‌شوند و پیشوندها نادیده گرفته می‌شوند.
-4
نام‌های نشانی را فقط به IPv4 تحلیل (resolve) می‌کند. این گزینه بر --ipv6 اولویت دارد.
-6
نام‌های نشانی را فقط به IPv6 تحلیل (resolve) می‌کند. این گزینه بر --ipv4 اولویت دارد.

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

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

علاوه بر تنظیم مسیر فایل اجرایی پخش‌کننده، آرگومان‌های سفارشی پخش‌کننده را می‌توان از طریق --player-args تعیین کرد.

نکته:

در گذشته، --player اجازه می‌داد آرگومان‌های اضافی پخش‌کننده تعریف شوند، که در نتیجه مستلزم قرار دادن مسیرهای پخش‌کنندهٔ حاوی فاصله درون گیومه بود. این قابلیت از نگارش 6.0.0 به بعد دیگر پشتیبانی نمی‌شود.

پیش‌فرض: پخش‌کننده VLC در صورت موجود بودن.

رشته‌ای از آرگومان‌های سفارشی برای راه‌اندازی --player را تنظیم می‌کند که تجزیه و نشانه‌گذاری (tokenize) خواهند شد.

این مقدار می‌تواند شامل متغیرهای قالب‌بندی باشد که درون آکولاد { و } احاطه شده‌اند. نویسه‌های آکولاد را می‌توان با تکرار دوتایی آن‌ها، مانند {{ و }}، گریزدهی (escape) کرد.

متغیرهای قالب‌بندی موجود:

{playerinput}
این آرگومان ورودی است که --player دریافت خواهد کرد. برای ورودی استاندارد (stdin)، این مقدار - (خط تیره) است، اما بسته به گزینه‌های استفاده شده می‌تواند یک مسیر فایل یا URL نیز باشد. اگر تنظیم نشود، آرگومان ورودی پخش‌کننده به انتهای فهرست آرگومان‌های تجزیه‌شدهٔ پخش‌کننده پیوست خواهد شد.
{playertitleargs}
آرگومان‌های عنوان پخش‌کننده که به طور خودکار تولید می‌شوند، البته در صورتی که یک --player پشتیبانی‌شده پیدا شود. برای اطلاعات بیشتر --title را ببینید. در صورت عدم تنظیم، آرگومان‌های عنوان پخش‌کننده که به طور خودکار تولید شده‌اند به ابتدای فهرست آرگومان‌های تجزیه‌شدهٔ پخش‌کننده اضافه می‌شوند.

مثال:

streamlink -p vlc -a "--play-and-exit --no-one-instance" <url> [stream]

پیش‌فرض: "".

یک متغیر محیطی اضافی، افزون بر متغیرهای به ارث رسیده از فرایند والد Streamlink/Python، به فرایند ایجادشدهٔ --player اضافه می‌کند. این ویژگی امکان تنظیم متغیرهای محیطی پخش‌کننده را در فایل‌های پیکربندی فراهم می‌سازد.

برای افزودن چندین متغیر محیطی می‌توان آن را تکرار کرد.

خروجی stdout/stderr مربوط به --player را در خروجی stdout/stderr مربوط به Streamlink می‌نویسد.
منسوخ شده و به جای آن باید از --player-verbose استفاده شود.
باعث می‌شود --player جریان را از طریق یک لولهٔ نام‌گذاری‌شده (named pipe) به جای لولهٔ stdin بخواند.
منسوخ شده و به جای آن باید از --player-fifo استفاده شود.
باعث می‌شود --player جریان را به جای لولهٔ stdin از طریق HTTP بخواند.
باعث می‌شود --player جریان را از طریق HTTP بخواند، اما برخلاف --player-http، در صورت درخواست پخش‌کننده، به طور مداوم تلاش خواهد کرد تا جریان را دوباره باز کند.

این گزینه در صورتی که پخش‌کننده توانایی اتصال مجدد به یک جریان HTTP را داشته باشد، امکان مدیریت قطع شدن جریان را فراهم می‌کند. این کار معمولاً با تنظیم پخش‌کننده روی حالت «تکرار» ("repeat mode") انجام می‌شود.

داده‌های جریان را بدون باز کردن --player از طریق HTTP ارائه می‌دهد. این ویژگی به دستگاه‌های خارجی مانند گوشی‌های هوشمند یا گیرنده‌های استریم اجازه می‌دهد جریان‌هایی را تماشا کنند که در غیر این صورت قادر به پخش آن‌ها نبودند.

رفتار پیش‌فرض مشابه گزینهٔ --player-continuous-http است، اما هیچ برنامهٔ پخش‌کننده‌ای آغاز نخواهد شد، و کارساز به جای رابط محلی (loopback)، روی تمامی اتصالات در دسترس گوش خواهد داد.

برای انتخاب یک رابط شبکهٔ خاص، --player-external-http-interface و برای انتخاب یک درگاه غیرتصادفی، --player-external-http-port را ببینید.

به صورت اختیاری، گزینهٔ --player-external-http-continuous اجازه می‌دهد حالت اجرای مداوم غیرفعال شود تا Streamlink با پایان یافتن جریان متوقف شود.

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

حالت اجرای --player-external-http را روی مداوم (continuous) یا غیرمداوم (non-continuous) تنظیم می‌کند.

در حالت اجرای مداوم، Streamlink پس از پایان جریان به اجرا ادامه می‌دهد و منتظر درخواست HTTP بعدی می‌ماند، مگر اینکه با CTRL-C متوقف شود.

اگر روی غیرمداوم تنظیم شود، Streamlink به محض پایان یافتن جریان متوقف خواهد شد.

پیش‌فرض: true.

رابط شبکه‌ای را که کارساز HTTP روی آن گوش خواهد داد تنظیم می‌کند. در صورت عدم تعیین یا مقداردهی به 0.0.0.0، به تمامی رابط‌های در دسترس متصل خواهد شد.
در صورت فعال بودن این حالت، درگاه کارساز HTTP خارجی را تنظیم می‌کند. برای استفاده از یک درگاه تصادفی بالا (>1024)، این گزینه را نادیده بگیرید یا روی 0 تنظیم کنید.
فهرستی جداشده با کاما از انواع جریان برای ارسال به --player به صورت یک URL تا به جای Streamlink، انتقال جریان را مدیریت کند.

انواع جریان‌هایی که قابلیت تبدیل به یک URL قابل پخش را دارند عبارتند از:

hls, http

هنگام استفاده از این گزینه، مطمئن شوید که پخش‌کننده توانایی مدیریت این نوع جریان را دارد.

به طور پیش‌فرض، Streamlink پس از پایان جریان --player را می‌بندد. این کار برای جلوگیری از باز ماندن پخش‌کننده‌های گرافیکی معلق پس از خروج Streamlink است.

با این وجود، این موضوع اثر جانبی بستن پخش‌کننده را پیش از آنکه تمام داده‌های ذخیره‌شده در حافظهٔ موقت خود را پخش کند، به همراه دارد.

این گزینه در عوض به پخش‌کننده اجازه می‌دهد که خودش دربارهٔ زمان خروج تصمیم بگیرد.

-t TITLE
تغییر عنوان پنجره‌ی --player.

لطفاً برای مشاهده تمامی متغیرهای فراداده موجود به بخش "Metadata variables" در مستندات خط فرمان Streamlink و همچنین به بخش "Plugins" برای فهرست متغیرهای فراداده تعریف‌شده در هر افزونه مراجعه کنید.

تنها پخش‌کننده‌های زیر پشتیبانی می‌شوند:

  • mpv
  • PotPlayer
  • VLC

مثال:

streamlink -p mpv --title "{author} - {category} - {title}" <URL> [STREAM]

نوشتن داده‌های استریم در stdout به جای پخش آن در --player.
نوشتن داده‌های استریم در FILENAME به جای پخش آن در --player. اگر FILENAME روی - (خط تیره) تنظیم شده باشد، داده‌های استریم مشابه آرگومان --stdout در stdout نوشته خواهند شد.

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

مگر اینکه --force تنظیم شده باشد، Streamlink در صورتی که FILENAME از قبل وجود داشته باشد، پیش از نوشتن درخواست تأیید خواهد کرد.

لطفاً برای مشاهده تمامی متغیرهای فراداده موجود به بخش "Metadata variables" در مستندات خط فرمان Streamlink و همچنین به بخش "Plugins" برای فهرست متغیرهای فراداده تعریف‌شده در هر افزونه مراجعه کنید.

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

مثال:

streamlink --output "~/recordings/{author}/{category}/{id}-{time:%Y%m%d%H%M%S}.ts" <URL> [STREAM]
نوشتن داده‌های استریم در FILENAME همزمان با فراهم کردن امکان پخش در --player یا نوشتن آن در --stdout. اگر FILENAME روی - (خط تیره) تنظیم شده باشد، داده‌های استریم در عین باز نگه‌داشتن پخش‌کننده، مشابه آرگومان --stdout در stdout نوشته خواهند شد.

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

مگر اینکه --force تنظیم شده باشد، Streamlink در صورتی که FILENAME از قبل وجود داشته باشد، پیش از نوشتن درخواست تأیید خواهد کرد.

لطفاً برای مشاهده تمامی متغیرهای فراداده موجود به بخش "Metadata variables" در مستندات خط فرمان Streamlink و همچنین به بخش "Plugins" برای فهرست متغیرهای فراداده تعریف‌شده در هر افزونه مراجعه کنید.

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

مثال:

streamlink --record "~/recordings/{author}/{category}/{id}-{time:%Y%m%d%H%M%S}.ts" <URL> [STREAM]
منسوخ شده است؛ به جای آن از --stdout --record=FILENAME استفاده کنید.
قواعد مورد استفاده برای ایمن‌سازی متغیرهای قالب‌بندی برای سیستم‌فایل به صورت خودکار بر اساس نوع سیستمِ مورد استفاده انتخاب می‌شوند. این گزینه تشخیص خودکار را نادیده می‌گیرد.

برای زمانی در نظر گرفته شده است که Streamlink روی یک سیستم‌عامل شبه‌یونیکس اجرا می‌شود اما روی سیستم‌فایل‌های Windows مانند NTFS، دستگاه‌های USB دارای VFAT یا exFAT، اشتراک‌های CIFS که محدودیت‌های نام‌گذاری فایل ویندوز را اعمال می‌کنند و غیره داده می‌نویسد.

این نویسه‌ها برای قواعد مورد استفاده با یک زیرخط جایگزین می‌شوند:

  • POSIX: \x00-\x1F /
  • Windows: \x00-\x1F \x7F " * / : < > ? \ |
هنگام استفاده از --output یا --record، همیشه در فایل بنویس حتی اگر از قبل وجود داشته باشد (بازنویسی).
هنگام استفاده از --output یا --record، اگر فایل از قبل وجود داشته باشد هرگز درون آن ننویس (بدون اعلان و پرسش).

بر --force تقدم دارد.

هنگام استفاده از --output یا --record، نوار پیشرفت بارگیری را نمایش داده یا پنهان می‌کند، یا در صورت نبود ترمینال نمایش آن را اجباری می‌سازد.

پیش‌فرض: yes.

یک URL برای تلاش جهت استخراج استریم‌ها از آن.

معمولاً بسته به پیاده‌سازی افزونهٔ (plugin) مورد استفاده، می‌توان پروتکل نشانی‌های وب http(s) را حذف کرد (https://).

این گزینه جایگزینی برای تنظیم URL با استفاده از آرگومان مکانی است و در صورت تنظیم در فایل پیکربندی می‌تواند مفید باشد.

استریم برای پخش.

از best یا worst برای انتخاب بالاترین یا پایین‌ترین کیفیت موجود استفاده کنید.

استریم‌های جایگزین (fallback) را می‌توان با استفاده از یک فهرست جداشده با کاما مشخص کرد:

"720p,480p,best"

این گزینه جایگزینی برای تنظیم استریم با استفاده از یک آرگومان مکانی است و در صورت تنظیم در فایل پیکربندی می‌تواند مفید باشد.

در صورت امکان، استریم شناسایی‌شده را به یک URL تبدیل کرده و آن را چاپ می‌کند.
تلاش مجدد برای واکشی فهرست استریم‌های موجود تا زمان پیدا شدن استریم‌ها، با انتظار به مدت DELAY ثانیه بین هر تلاش.

تعداد دفعات تلاش مجدد را می‌توان با --retry-max محدود کرد. برای مقادیر غیرصفرِ --retry-max مقدار پیش‌فرض 1 در نظر گرفته می‌شود.

اگر هر دو گزینهٔ --retry-streams و --retry-max روی 0 تنظیم شوند، تنها یک تلاش برای دریافت فهرست استریم‌های موجود انجام خواهد شد. این رفتار پیش‌فرض است.

توقف دریافت فهرست استریم‌های موجود پس از COUNT بار تلاش مجدد.

در صورتی که --retry-streams روی مقداری غیرصفر تنظیم شده باشد، مقدار 0 باعث می‌شود که Streamlink استریم‌ها را به طور نامحدود واکشی کند. اگر --retry-streams تنظیم نشده باشد، تاخیر پیش‌فرض بین دریافت استریم‌های موجود ۱ ثانیه است.

پس از یک دریافت موفقیت‌آمیز، تا زمان صرف‌نظر کردن، به تعداد ATTEMPTS بار برای باز کردن استریم تلاش می‌کند.

پیش‌فرض: 1 است.

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

هنگامی که چندین استریم با نام یکسان اما انواع استریم متفاوت وجود داشته باشند، از این ترتیب برای تفکیک استریم‌ها استفاده خواهد شد. هر نوع استریمی که در فهرست قید نشده باشد، از فهرست استریم‌های موجود حذف خواهد شد. از * (ستاره) می‌توان به‌عنوان نویسه عمومی (wildcard) برای تطابق با هر نوع استریم دیگری، مانند dash استفاده کرد.

پیش‌فرض: "hls,http,*" است.

تنظیم دقیق مترادف‌های نام استریم best و worst با مستثنی کردن استریم‌های ناخواسته.

اگر تمام استریم‌های موجود مستثنی شوند، best و worst غیرقابل دسترس خواهند شد و مترادف‌های استریم ویژهٔ جدید best-unfiltered و worst-unfiltered می‌توانند به عنوان روش انتخاب جایگزین (fallback) استفاده شوند.

قالب عبارت فیلتر (filter-expression) عبارت است از:

[operator]<value>

عملگرهای معتبر عبارتند از >، >=، < و <=. در صورتی که هیچ عملگری مشخص نشود، برابری بررسی می‌شود.

برای مثال این عبارت استریم‌هایی با رتبهٔ بالاتر از "480p" را مستثنی می‌کند:

--stream-sorting-excludes ">480p"

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

برای مثال این عبارت استریم‌ها را از دو نوع کیفیت مستثنی می‌کند:

--stream-sorting-excludes ">480p,>medium"
حداکثر اندازه بافر حلقه‌ای (ringbuffer).

می‌توان مبی‌بایت یا کیبی‌بایت (بر مبنای ۲) را به ترتیب با پسوندهای M یا K مشخص کرد.

بافر حلقه‌ای به عنوان یک فضای ذخیره‌سازی موقت میان جریان و پخش‌کننده (player) استفاده می‌شود. این به Streamlink اجازه می‌دهد جریان را سریع‌تر از پخش‌کننده‌ای که داده‌ها را از بافر حلقه‌ای می‌خواند بارگیری کند.

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

بیشتر پخش‌کننده‌ها کَشِ اضافی مخصوص به خود را دارند و به محض در دسترس قرار گرفتن داده، محتوای بافر حلقه‌ای را خواهند خواند. اگر در زمان توقف موقت (pause) پخش، خواندن داده‌ها توسط پخش‌کننده متوقف شود، تا زمانی که بافر حلقه‌ای پر نشود، Streamlink در پس‌زمینه به بارگیری جریان ادامه خواهد داد.

پیش‌فرض: "16M".

تعداد دفعات تلاش برای بارگیری هر قطعه (segment) از جریان پیش از انصراف.

این گزینه برای تمام انواع مختلف جریان‌های قطعه‌بندی‌شده، مانند DASH ،HLS و غیره اعمال می‌شود.

پیش‌فرض: 3.

اندازه استخر رشته‌ها (thread pool) مورد استفاده برای بارگیری قطعات. حداقل مقدار 1 و حداکثر 10 است.

این گزینه برای تمام انواع مختلف جریان‌های قطعه‌بندی‌شده، مانند DASH ،HLS و غیره اعمال می‌شود.

پیش‌فرض: 1.

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

این گزینه برای تمام انواع مختلف جریان‌های قطعه‌بندی‌شده، مانند DASH ،HLS و غیره اعمال می‌شود.

پیش‌فرض: 10.0.

محدود کردن مدت‌زمان خروجی جریان‌های قطعه‌بندی‌شده، مانند HLS و DASH. مدت‌زمان واقعی ممکن است کمی طولانی‌تر باشد، چرا که به نزدیک‌ترین قطعه گرد می‌شود.

برای غیرفعال کردن، مقدار آن را 0 قرار دهید.

پیش‌فرض: 0.

ضریب ضربی برای بازه زمانی که قطعات جدید باید در آن در صف قرار گیرند تا از مشکلات پخش ناشی از کمبود داده‌های ویدیویی/صوتی جلوگیری شود. اگر این مهلت صف قطعه (segment-queue-deadline) برآورده نشود، جریان زودتر از موعد متوقف خواهد شد.

هدف از این مهلت صف قطعه این است که در صورت اعلام نشدن پایان جریان توسط سرور، امکان توقف زودهنگام وجود داشته باشد تا Streamlink مجبور نباشد تا زمان رخداد اتمام مهلت خواندن بافر (read-timeout) منتظر بماند. گزینه --stream-timeout را ببینید.

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

برای غیرفعال کردن، مقدار را 0 قرار دهید.

پیش‌فرض: 3.0.

به‌طور پیش‌فرض، برای در دسترس قرار گرفتن قطعات جدید، سه برابر بازه زمانی اعلام‌شده توسط سرور منتظر می‌ماند.

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

این گزینه برای تمام انواع مختلف جریان‌ها، مانند DASH ،HLS ،HTTP و غیره اعمال می‌شود.

پیش‌فرض: 60.0.

عبور دادن مستقیم داده‌ها از جریان‌های رمزگذاری‌شده بدون رمزگشایی یا بررسی‌های رمزگذاری.

این گزینه برای جریان‌های DASH و HLS اعمال می‌شود و به احتمال قوی منجر به خروجی مخدوش و غیرقابل استفاده خواهد شد.

ترکیب خودکار (mux) زیرنویس‌های موجود در جریان خروجی.

باید توسط پلاگین مورد استفاده پشتیبانی شود.

تعداد قطعات از موقعیت زنده کنونیِ جریان برای شروع پخش جریانی. اندازه یا طول هر قطعه توسط ارائه‌دهنده پخش تعیین می‌شود.

مقادیر کمتر، تاخیر (latency) را کاهش می‌دهند اما احتمال بافرینگ را نیز بالا می‌برند؛ زیرا زمان کمتری برای بارگیری قطعات و نوشتن داده‌های آن‌ها در بافر خروجی توسط Streamlink وجود دارد. تعداد بارگیری‌های موازی قطعات را می‌توان با --stream-segment-threads مشخص کرد و زمان بارگذاری مجدد فهرست پخش HLS برای واکشی و در صف قرار دادن قطعات جدید را می‌توان با --hls-playlist-reload-time بازنویسی کرد.

پیش‌فرض: 3.

نکته:

در حین پخش زنده، تنظیمات کَش/بافرینگِ پخش‌کننده مورد استفاده تاخیر بیشتری ایجاد خواهد کرد. برای تنظیم این مورد، لطفاً جهت پیکربندی لازم به مستندات خود پخش‌کننده مراجعه کنید. پارامترهای پخش‌کننده را می‌توان از طریق --player-args تعیین کرد.
نوشتن فوری داده‌های قطعه در بافر خروجی در حین بارگیری.
حداکثر تعداد تلاش‌ها برای بارگذاری مجدد فهرست پخش HLS پیش از انصراف.

پیش‌فرض: 3.

تنظیم یک مقدار سفارشی برای زمان بارگذاری مجدد فهرست پخش HLS، بر حسب ثانیه یا با استفاده از یکی از کلیدواژه‌های زیر:
  • segment: مدت‌زمان آخرین قطعه در فهرست پخش فعلی
  • live-edge: مجموع مدت‌زمان قطعات مربوط به مقدار لبه زنده منهای یک
  • default: فراداده (metadata) مدت‌زمان هدف فهرست پخش

پیش‌فرض: default.

منسوخ شده؛ به جای آن از --stream-segmented-queue-deadline استفاده کنید.
فهرستی جدا شده با ویرگول از نام‌های قطعات که پالایش (حذف) خواهند شد.

مثال: --hls-segment-ignore-names 000,001,002

این گزینه تمام قطعاتی را که نام آن‌ها به 000.ts، 001.ts و 002.ts ختم می‌شود نادیده می‌گیرد.

پیش‌فرض: None.

بازنویسی URIهای کلید رمزگذاری قطعه برای جریان‌های رمزگذاری‌شده.

این مقدار می‌تواند با استفاده از متغیرهای زیر که با بخش مربوطه خود از URI قطعه مبدأ جایگزین می‌شوند، الگوگذاری شود:

{url} {scheme} {netloc} {path} {query}

مثال‌ها:

--hls-segment-key-uri "https://example.com/hls/encryption_key"
--hls-segment-key-uri "{scheme}://1.2.3.4{path}{query}"
--hls-segment-key-uri "{scheme}://{netloc}/custom/path/to/key"

پیش‌فرض: None.

انتخاب یک یا چند منبع صوتی مشخص بر اساس کد زبان یا نام آن. می‌تواند روی * (ستاره) تنظیم شود تا شامل تمام منابع صوتی گردد.

مثال‌ها:

--hls-audio-select "English,German"
--hls-audio-select "en,de"
--hls-audio-select "*"

نکته:

این گزینه تنها در شرایط خاصی کاربرد دارد که گزینه معمول محلی‌سازی (locale) کارایی ندارد؛ مانند زمانی که چندین منبع با یک زبان یکسان وجود داشته باشند.
--hls-start-offset [[XX:]XX:]XX[.XX] | [XXh][XXm][XX[.XX]s] میزان زمانی که باید از ابتدای استریم نادیده گرفته (رد) شود. برای استریم‌های زنده، این مقدار یک آفست منفی از انتهای استریم است (بازگردانی به عقب).

پیش‌فرض: 0.

به نفع --stream-segmented-duration منسوخ شده است.
پرش به ابتدای استریم زنده، یا تا جای ممکن به عقب‌ترین نقطه.

حداکثر تعداد دفعات تلاش برای بارگذاری مجدد مانیفست DASH قبل از انصراف.

پیش‌فرض: 3.

تنظیم مکان فایل اجرایی FFmpeg در صورتی که نتوان آن را از مسیرهای متغیر محیطی PATH سیستم پیدا کرد.

برای دسترسی یا میکس (mux) استریم‌های ویدیویی و صوتی مجزا، مثلاً در استریم‌های DASH یا استریم‌های HLS با چند منبع، وجود FFmpeg ضروری است.

مثال: --ffmpeg-ffmpeg "/usr/local/bin/ffmpeg"

غیرفعال‌سازی اعتبارسنجی و ثبت گزارش نسخه FFmpeg.
نوشتن خروجی stderr مربوط به FFmpeg در خروجی stderr برنامه Streamlink.
نوشتن خروجی stderr مربوط به FFmpeg در PATH.
تغییر مقدار -loglevel در FFmpeg به LOGLEVEL.

مگر در صورتی که --ffmpeg-verbose یا --ffmpeg-verbose-path تنظیم شده باشد، تغییر سطح گزارش هیچ اثری نخواهد داشت.

پیش‌فرض: "info".

تنظیم قالب خروجی به OUTFORMAT. این مورد فقط برای استریم‌هایی که نیاز به muxing دارند اعمال می‌شود.

پیش‌فرض: "matroska".

مثال: --ffmpeg-fout "mpegts"

تبدیل کدک (transcode) ویدیو به CODEC. این مورد فقط برای استریم‌هایی که نیاز به muxing دارند اعمال می‌شود.

پیش‌فرض: "copy".

مثال: --ffmpeg-video-transcode "h264"

تبدیل کدک (transcode) صدا به CODEC. این مورد فقط برای استریم‌هایی که نیاز به muxing دارند اعمال می‌شود.

پیش‌فرض: "copy".

مثال: --ffmpeg-audio-transcode "aac"

تنظیم گزینه -copyts در FFmpeg تا برچسب‌های زمانی ورودی پردازش نشوند و مقدار آفست زمان شروع اولیه حفظ شود.
فعال کردن گزینه -start_at_zero در FFmpeg هنگام استفاده از --ffmpeg-copyts.
مهلت زمانی بر حسب ثانیه برای اعتبارسنجی نسخه FFmpeg.

پیش‌فرض: 4.0.

در صورت کند بودن شروع به کار FFmpeg در سیستم‌های کم‌توان، این مقدار را افزایش دهید.

یک پراکسی HTTP برای استفاده در تمام درخواست‌های HTTP و HTTPS، از جمله اتصالات WebSocket.

مثال: --http-proxy "http://hostname:port/"

یک کوکی برای افزودن به هر درخواست HTTP.

برای افزودن چند کوکی می‌تواند تکرار شود.

مسیری به یک فایل کوکی که داده‌های کوکی آن به درخواست‌های HTTP افزوده خواهد شد.

برای افزودن چند فایل کوکی می‌تواند تکرار شود.

قالب فایل باید از قالب فایل کوکی HTTP نت‌اسکیپ (MozillaCookieJar، curl و غیره) که با عنوان cookies.txt نیز شناخته می‌شود، پیروی کند. توجه داشته باشید که این قالب، اطلاعات مربوط به کوکی‌های RFC 2965 و همچنین مشخصه‌های جدیدتر یا غیر استاندارد کوکی مانند port را از دست می‌دهد.

برخلاف --http-cookie که داده‌ها را با هر درخواست ارسال می‌کند، این گزینه با رعایت دامنه، مسیر و سایر مشخصه‌های کوکی، امکان کنترل دقیق‌تری را فراهم می‌سازد.

یک هدر برای افزودن به هر درخواست HTTP.

برای افزودن چند هدر می‌تواند تکرار شود.

یک پارامتر کوئری برای افزودن به هر درخواست HTTP.

برای افزودن چند پارامتر کوئری می‌تواند تکرار شود.

نادیده گرفتن تنظیمات HTTP تعیین‌شده در محیط، مانند متغیرهای محیطی (HTTP_PROXY و غیره) یا احراز هویت ~/.netrc.
عدم تلاش برای اعتبارسنجی گواهی‌های TLS/SSL.

با احتیاط استفاده شود، زیرا پیامدهای امنیتی مربوط به TLS/SSL دارد.

غیرفعال کردن تبادل کلید Diffie Hellman.

با احتیاط استفاده شود، زیرا پیامدهای امنیتی مربوط به TLS/SSL دارد.

گواهی SSL مورد استفاده: یک فایل .pem.
گواهی SSL مورد استفاده: یک فایل .crt و یک فایل .key.
تنظیم مقدار مهلت زمانی عمومی مورد استفاده توسط تمامی درخواست‌های HTTP به جز مواردی که با گزینه‌های دیگر پوشش داده شده‌اند.

پیش‌فرض: 20.0.

فعال یا غیرفعال کردن پشتیبانی از API مرورگر وب در Streamlink.

رابط برنامه‌نویسی (API) مرورگر وب در Streamlink به پلاگین‌هایی که آن را پیاده‌سازی کرده‌اند اجازه می‌دهد تا یک مرورگر وب را راه‌اندازی کرده و داده‌ها را از وب‌سایت‌هایی استخراج کنند که در حالت عادی به‌دلیل محدودیت‌های خاص JavaScript، امکان دریافت آن‌ها از طریق نشست معمول HTTP در Python وجود ندارد.

مرورگر وب به‌صورت ایزوله و در محیطی تمیز، بدون دسترسی به داده‌های عادی کاربر اجرا می‌شود.

در حال حاضر Streamlink تنها از مرورگرهای وب مبتنی بر Chromium با استفاده از پروتکل Chrome Devtools Protocol (CDP) پشتیبانی می‌کند. این شامل خود Chromium، Google Chrome، Microsoft Edge، Brave، Vivaldi و سایر موارد می‌شود، اما پشتیبانی کامل از فورک‌های متفرقهٔ Chromium تضمین نمی‌شود. در صورت بروز هرگونه مشکل، لطفاً با Chromium یا Google Chrome امتحان کنید.

پیش‌فرض: true.

مسیر فایل اجرایی مرورگر وب.

به‌طور پیش‌فرض، این مسیر به‌صورت خودکار بر اساس قواعد پیاده‌سازیِ webbrowser API استفاده‌شده جستجو می‌شود. این فرایند معمولاً شامل فهرستی از نام‌های اجرایی شناخته‌شده و مسیرهای جایگزین در تمام سیستم‌عامل‌های پشتیبانی‌شده است.

حداکثر زمانی که مرورگر وب می‌تواند برای راه‌اندازی و اجرا صرف کند.
میزبان (Host) برای رابط ارتباط بین‌پردازشی مرورگر وب (مختص CDP).

پیش‌فرض: 127.0.0.1.

پورت برای رابط ارتباط بین‌پردازشی مرورگر وب (مختص CDP).

به‌طور پیش‌فرض تلاش می‌کند یک پورت آزاد پیدا کند.

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

لطفاً توجه داشته باشید که ممکن است حالت headless توسط وب‌سایت‌هایی که از سیستم‌های تشخیص ربات استفاده می‌کنند مسدود شود.

پیش‌فرض: false.

نام کاربری مورد استفاده برای ثبت‌نام در bbc.co.uk.
گذرواژه حساب bbc.co.uk جهت استفاده به همراه --bbciplayer-username.
ترجیح دادن استریم‌های HD نسبت به استریم‌های محلی SD؛ ممکن است برخی از برنامه‌های زنده با کیفیت HD پخش نشوند.

نام کاربری مورد استفاده برای ثبت‌نام در Clubbing TV.
گذرواژه حساب Clubbing TV جهت استفاده به همراه --clubbingtv-username.

فعال‌سازی پخش با تأخیر کم از طریق واکشی پیشاپیش (prefetching) بخش‌های HLS. در صورت بالاتر بودن، مقدار --hls-segment-stream-data را به true و --hls-live-edge را به 2 تغییر می‌دهد. کاهش دادن مقدار --hls-live-edge به 1 به کمترین میزان تأخیر ممکن منجر می‌شود، اما به احتمال بسیار زیاد باعث ایجاد بافرینگ خواهد شد.

برای دستیابی به پخش واقعی با تأخیر کم، لازم است تنظیمات کش/بافرینگ پخش‌کننده تنظیم شده و تا جای ممکن به کمترین مقدار کاهش یابد، اما همچنان باید به اندازه‌ای باشد که باعث بافر شدن نشود. این موضوع به نرخ بیت (bitrate) استریم و کیفیت اتصال به سرورهای Kick بستگی دارد. لطفاً برای پیکربندی لازم به مستندات خود پخش‌کننده مراجعه کنید. پارامترهای پخش‌کننده را می‌توان از طریق --player-args تنظیم کرد.

نکته:

استریم‌های با تأخیر کم باید توسط خود پخش‌کنندگان در Kick فعال شده باشند. در صورت فعال بودن این گزینه، استریم‌های عادی ممکن است به‌دلیل کاهش مقدار --hls-live-edge با مشکلات بافرینگ مواجه شوند.

ایمیل یا شماره تلفن مرتبط با حساب Niconico شما.
گذرواژه حساب Niconico شما.
مقدار توکن نشست کاربر (user-session).

می‌تواند به‌عنوان جایگزینی برای ارائه گذرواژه استفاده شود.

پاکسازی اعتبارنامه‌های ذخیره‌شدهٔ Niconico جهت شروع یک نشست جدید و احراز هویت مجدد.
میزان زمانی که باید از ابتدای استریم نادیده گرفته شده و رد شود.

پیش‌فرض: 0.

ایمیل مرتبط با حساب کاربری openrectv شما؛ برای دسترسی به هر پخش زنده openrectv مورد نیاز است.
گذرواژه حساب کاربری openrectv برای استفاده با --openrectv-email.

شناسه نشست (sessionid) در pixiv.net که در کوکی PHPSESSID متعلق به pixiv استفاده می‌شود.
توکن دستگاه (device token) در pixiv.net که در کوکی device_token متعلق به pixiv استفاده می‌شود.
پاک‌سازی اعتبارنامه‌های کش‌شده‌ی Pixiv برای آغاز یک نشست جدید و احراز هویت مجدد.
انتخاب پخش میزبان مشترک (co-host) به‌جای پخش مالک اصلی.

ایمیل استفاده‌شده برای ثبت‌نام در raiplay.it.
گذرواژه حساب کاربری raiplay.it برای استفاده با --raiplay-email.
پاک‌سازی اعتبارنامه‌های کش‌شده‌ی RaiPlay برای آغاز یک نشست جدید و احراز هویت مجدد.

نام کاربری استفاده‌شده برای ثبت‌نام در sooplive.com.
گذرواژه حساب کاربری sooplive.com برای استفاده با --soop-username.
پاک‌سازی اعتبارنامه‌های کش‌شده‌ی Soop برای آغاز یک نشست جدید و احراز هویت مجدد.
گذرواژه پخش زنده.

آدرس ایمیل حساب Steam برای دسترسی به پخش‌های خصوصی یا دوستان (friends/private).
گذرواژه حساب Steam برای استفاده با --steam-email.

نشانی URL مبدأ که iframe در آن قرار دارد؛ فقط برای URLهای مستقیم مربوط به ott.streann.com مورد نیاز است.

آدرس ایمیل استفاده‌شده برای ثبت‌نام در tf1.fr.
گذرواژه حساب کاربری tf1.fr برای استفاده با --tf1-email.
پاک‌سازی اعتبارنامه‌های کش‌شده‌ی tf1.fr برای آغاز یک نشست جدید و احراز هویت مجدد.

گذرواژه پخش‌های خصوصی Twitcasting.

پخش با تاخیر کم (low latency) را از طریق واکشی پیش‌دستانه‌ی قطعات HLS فعال می‌کند. مقدار --hls-segment-stream-data را روی true و اگر --hls-live-edge بیشتر از ۲ باشد، آن را روی 2 تنظیم می‌کند. کاهش --hls-live-edge به 1 کمترین تاخیر ممکن را در پی خواهد داشت، اما به احتمال زیاد موجب ایجاد بافرینگ می‌شود.

به‌منظور دستیابی به پخش واقعی با تاخیر کم در هنگام پخش، تنظیمات کش/بافرینگ پخش‌کننده (player) باید تنظیم شده و تا جای ممکن به کمترین مقدار کاهش یابد، اما همچنان آن‌قدر باشد که مانع از ایجاد بافرینگ شود. این موضوع به نرخ بیت (bitrate) پخش و کیفیت اتصال به سرورهای Twitch بستگی دارد. لطفاً برای پیکربندی لازم به مستندات اختصاصی پخش‌کننده مراجعه کنید. پارامترهای پخش‌کننده را می‌توان از طریق --player-args مشخص کرد.

نکته:

پخش‌های با تاخیر کم باید توسط خود پخش‌کنندگان در Twitch فعال شده باشند. پخش‌های عادی در صورت فعال بودن این گزینه ممکن است به دلیل مقدار کاهش‌یافته‌ی --hls-live-edge دچار مشکل بافرینگ شوند.
فهرستی جداشده با کاما از نام‌های کدک که اولویت کدک پخشِ کلاینت را به Twitch اعلام می‌کند. اینکه کدام پخش‌ها و کدام کدک‌ها در دسترس هستند، به کانال و پخش مربوطه بستگی دارد.

پیش‌فرض: "h264" است.

کدک‌های پشتیبانی‌شده عبارتند از h264، h265 و av1. برای فعال‌سازی همه کدک‌ها، روی "h264,h265,av1" تنظیم کنید.

پخش‌های با کیفیت بالاتر ممکن است تنها با فعال‌سازی h265 یا av1 در دسترس باشند. پخش‌های با کیفیت پایین‌تر که در سمت Twitch مجدداً کدگذاری می‌شوند، ممکن است حتی در صورت عدم درخواست همچنان h264 باشند.

یک سربرگ برای افزودن به هر درخواست HTTP در Twitch API.

برای افزودن چندین سربرگ می‌تواند تکرار شود.

برای افزودن داده‌های احراز هویت که می‌توانند از نمایش تبلیغات جلوگیری کنند مفید است. برای اطلاعات بیشتر به مستندات اختصاصی افزونه مراجعه کنید.

یک پارامتر برای افزودن به درخواست API جهت دریافت توکن دسترسی پخش (streaming access token).

برای افزودن چندین پارامتر می‌تواند تکرار شود.

بدون وجود توکن client-integrity، تلاشی برای درخواست توکن دسترسی پخش انجام نشود.
پاک‌سازی توکن client-integrity کش‌شده‌ی Twitch و دریافت یک توکن جدید.
گذرواژه‌ای برای دسترسی به کانال‌های دارای گذرواژه در UStream.tv.

نام کاربری حساب USTV Now شما
گذرواژه حساب USTV Now شما

رایانامه متصل به حساب WWE Network شما؛ برای دسترسی به هر یک از پخش‌های WWE Network الزامی است.
گذرواژه حساب WWE Network برای استفاده همراه با --wwenetwork-email.

مقدار boxid در yupptv.com که در کوکی BoxId استفاده می‌شود.
مقدار yuppflixtoken در yupptv.com که در کوکی YuppflixToken استفاده می‌شود.
پاک‌سازی اعتبارنامه‌های کش‌شده‌ی YuppTV برای آغاز یک نشست جدید و احراز هویت مجدد.

رایانامه متصل به حساب zattoo شما؛ برای دسترسی به هر یک از پخش‌های zattoo الزامی است.
گذرواژه حساب zattoo برای استفاده همراه با --zattoo-email.
پاک‌سازی اعتبارنامه‌های کش‌شده‌ی zattoo برای آغاز یک نشست جدید و احراز هویت مجدد.
فهرستی از انواع جریان‌های پخش جداشده با کاما که باید استفاده شوند.

انواع مجاز عبارتند از: dash, hls7

پیش‌فرض: "dash" است.

لطفاً یک گزارش مشکل جدید در ردیاب اشکالات Streamlink در GitHub ایجاد کرده و از فرم‌های گزارش مناسب استفاده کنید:

https://github.com/streamlink/streamlink/issues

برای دریافت اطلاعات دقیق‌تر درباره فایل‌های پیکربندی، بارگذاری جانبی پلاگین‌ها، پروتکل‌های پخش جریانی، پشتیبانی از پروکسی، متادیتا یا موارد خاص هر افزونه، لطفاً مستندات برخط CLI مربوط به Streamlink را در اینجا مشاهده کنید:

https://streamlink.github.io/cli.html

فهرست افزونه‌های موجود و توضیحات آن‌ها در اینجا قابل مشاهده است:

https://streamlink.github.io/plugins.html

مشارکت‌کنندگان Streamlink

2026, Streamlink

August 1, 2026 8.5.0