GPU-SCREEN-RECORDER(1) GPU Screen Recorder Manual GPU-SCREEN-RECORDER(1)

gpu-screen-recorder - سریع‌ترین ابزار ضبط صفحه نمایش برای لینوکس

gpu-screen-recorder -w window_id|monitor|focused|portal|region|v4l2_device_path [گزینه‌ها] -o output_file

gpu-screen-recorder --help | --version | --info | --list-capture-options | --list-monitors | --list-v4l2-devices | --list-audio-devices | --list-application-audio

gpu-screen-recorder سریع‌ترین ابزار ضبط صفحه نمایش برای لینوکس است. این برنامه منحصراً از پردازنده گرافیکی (GPU) برای ضبط صفحه استفاده می‌کند تا تأثیر منفی بر کارایی و عملکرد سیستم را به حداقل برساند. این ابزار از ضبط ویدیو، پخش زنده (استریمینگ)، بازپخش آنی (مشابه قابلیت ShadowPlay در NVIDIA) و ثبت اسکرین‌شات پشتیبانی می‌کند. این برنامه در هر دو محیط X11 و Wayland با کارت‌های گرافیک AMD، Intel و NVIDIA کار می‌کند.

ویژگی‌های کلیدی شامل موارد زیر است:

  • کدگذاری با شتاب‌دهنده سخت‌افزاری GPU با استفاده از کدک‌های H264، HEVC، AV1، VP8 یا VP9
  • پشتیبانی از ضبط HDR (شامل HEVC HDR و AV1 HDR)
  • بافر بازپخش آنی (ضبط N ثانیه گذشته)
  • قابلیت‌های پخش زنده (استریمینگ)
  • ضبط صدا از دستگاه‌ها و برنامه‌ها (برای صدای برنامه‌ها به PipeWire نیاز است)
  • سیستم افزونه برای روکش گرافیکی سفارشی (Overlay)
  • حداقل افت کارایی در مقایسه با ابزارهای سنتی ضبط صفحه نمایش

مشخص کردن موردی که باید ضبط شود. قالب‌ها:
  • window - ضبط یک پنجره خاص (با استفاده از شناسه پنجره) (فقط در X11)
  • screen - ضبط اولین مانیتور یافت‌شده
  • screen-direct - فقط برای NVIDIA X11، جهت پشتیبانی از VRR/G-SYNC (به دلیل مشکلات درایور توصیه نمی‌شود)
  • focused - ضبط پنجره‌ای که اکنون فوکوس روی آن است (فقط در X11) (همراه با گزینه -s استفاده شود)
  • portal - استفاده از xdg-desktop-portal با PipeWire (فقط در Wayland)
  • region - ضبط یک ناحیه مشخص (همراه با گزینه -region استفاده شود)
  • نام مانیتور (مانند DP-1) - ضبط مانیتور مشخص‌شده
  • مسیر دستگاه V4L2 (مانند /dev/video0) - ضبط از دستگاه دوربین (V4L2).

    زمانی که GPU Screen Recorder در حال استفاده از دوربین است، برنامه‌های دیگر نمی‌توانند از دوربین استفاده کنند و در صورتی که برنامه دیگری در حال حاضر از دوربین استفاده کند، ممکن است GPU Screen Recorder نتواند به آن دسترسی داشته باشد.

  • ترکیب منابع با | (مانند monitor:screen|v4l2:/dev/video0)

برای مشاهده فهرست منابع تصویربرداری موجود، دستور زیر را اجرا کنید: --list-capture-options

با جدا کردن منبع تصویربرداری با کاراکتر ; می‌توان گزینه‌های اضافی را به هر منبع ارسال کرد؛ به عنوان مثال: screen;x=50;y=50.
این گزینه‌ها برای تمام منابع تصویربرداری در دسترس هستند (اختیاری):

  • x - موقعیت افقی (X) بر حسب پیکسل. اگر عدد با % خاتمه یابد، موقعیت X را نسبت به عرض ویدیو تنظیم می‌کند (درصد عدد صحیح که 100 = 100% است)
  • y - موقعیت عمودی (Y) بر حسب پیکسل. اگر عدد با % خاتمه یابد، موقعیت Y را نسبت به ارتفاع ویدیو تنظیم می‌کند (درصد عدد صحیح که 100 = 100% است)
  • width - عرض بر حسب پیکسل. اگر عدد با % خاتمه یابد، عرض را نسبت به عرض ویدیو تنظیم می‌کند (درصد عدد صحیح که 100 = 100% است).

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

  • height - ارتفاع بر حسب پیکسل. اگر عدد با % خاتمه یابد، ارتفاع را نسبت به ارتفاع ویدیو تنظیم می‌کند (درصد عدد صحیح که 100 = 100% است).

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

  • halign - تراز افقی، باید یکی از مقادیر start، center یا end باشد.

    در صورت استفاده از یک منبع تصویربرداری، به‌طور پیش‌فرض برابر با center است؛ در غیر این صورت به‌طور پیش‌فرض روی start تنظیم می‌شود.

  • valign - تراز عمودی، باید یکی از مقادیر start، center یا end باشد.

    در صورت استفاده از یک منبع تصویربرداری، به‌طور پیش‌فرض برابر با center است؛ در غیر این صورت به‌طور پیش‌فرض روی start تنظیم می‌شود.

  • hflip - تعیین اینکه آیا منبع باید به‌صورت افقی معکوس (آینه‌ای) شود یا خیر؛ باید true یا false باشد. به‌طور پیش‌فرض روی false تنظیم است.
  • vflip - تعیین اینکه آیا منبع باید به‌صورت عمودی معکوس شود یا خیر؛ باید true یا false باشد. به‌طور پیش‌فرض روی false تنظیم است.

گزینه‌های اضافی موجود برای منابع دوربین (V4L2) (اختیاری):

  • pixfmt - فرمت پیکسل، باید یکی از مقادیر auto، yuyv یا mjpeg باشد. به‌طور پیش‌فرض روی auto تنظیم است.
  • camera_fps - نرخ فریم (fps) دوربین. باید با نرخ فریم دوربین برگردانده‌شده در --info یا --list-v4l2-devices برای آن دستگاه مطابقت داشته باشد.

    مقدار 0 به معنای استفاده از بهترین گزینه موجود است.

  • camera_width - عرض دوربین بر حسب پیکسل. باید با عرض دوربین برگردانده‌شده در --info یا --list-v4l2-devices برای آن دستگاه مطابقت داشته باشد.

    مقدار 0 به معنای استفاده از بهترین گزینه موجود است.

  • camera_height - ارتفاع دوربین بر حسب پیکسل. باید با ارتفاع دوربین برگردانده‌شده در --info یا --list-v4l2-devices برای آن دستگاه مطابقت داشته باشد.

    مقدار 0 به معنای استفاده از بهترین گزینه موجود است.

مشخص کردن ناحیه برای ضبط هنگام استفاده از -w region. قالب به صورت عرض x ارتفاع + آفست X + آفست Y است. برای ضبط کل مانیتوری که این موقعیت را در بر دارد، عرض و ارتفاع را روی 0 قرار دهید.

این گزینه با ابزارهایی مانند slop (در X11) و slurp (در Wayland) سازگار است.

فرمت کانتینر (mp4، mkv، flv، webm). مقدار پیش‌فرض از پسوند نام فایل در -o تعیین می‌شود.
محدودیت وضوح خروجی (مانند 1920x1080). محتوای ضبط‌شده برای جا گرفتن در این وضوح با حفظ نسبت تصویر مقیاس‌بندی می‌شود و ابعاد ویدیو برای تناسب با محتوای مقیاس‌شده کاهش می‌یابد. برای وضوح اصلی از 0x0 استفاده کنید. برای -w focused الزامی است (که در آن وضوح ویدیو دقیقاً برابر با همین مقدار خواهد بود).
نرخ فریم (پیش‌فرض: 60). در حالت نرخ فریم متغیر، این مقدار حداکثر FPS است.
ضبط نشانگر ماوس (پیش‌فرض: yes).
بازیابی نشست قبلی پرتال (همراه با گزینه -w portal استفاده می‌شود، پیش‌فرض: no).

دستگاه صوتی یا برنامه‌ای که صدای آن ضبط می‌شود. می‌تواند چندین بار مشخص شود. قالب‌ها:
  • default_output - دستگاه خروجی پیش‌فرض
  • default_input - دستگاه ورودی پیش‌فرض
  • device:name - دستگاه مشخص
  • app:name - صدای برنامه (بدون حساسیت به بزرگی و کوچکی حروف)
  • app-inverse:name - تمام برنامه‌ها به جز برنامه مشخص‌شده
  • ترکیب منابع با | (مانند default_output|app:firefox)

برای مشاهده فهرست دستگاه‌های صوتی موجود، دستور زیر را اجرا کنید: --list-audio-devices
برای مشاهده فهرست برنامه‌های موجود جهت ضبط صدا، دستور زیر را اجرا کنید: --list-application-audio

کدک صوتی (پیش‌فرض: opus برای mp4/mkv، در غیر این صورت aac). کدک FLAC موقتاً غیرفعال است.
بیت‌ریت صدا بر حسب kbps (پیش‌فرض: 128 برای opus/flac، و 160 برای aac). مقدار 0 = خودکار.

کدک ویدیو: auto, h264, hevc, av1, vp8, vp9, hevc_hdr, av1_hdr, hevc_10bit, av1_10bit, h264_vulkan, hevc_vulkan, hevc_10bit_vulkan, av1_vulkan, av1_hdr_vulkan, av1_10bit_vulkan

گزینه‌های HDR در X11 یا ضبط از پرتال در دسترس نیستند. ضبط ۱۰ بیتی پدیده نواربندی رنگ (Banding) را کاهش می‌دهد، اما ممکن است به درستی توسط تمام پخش‌کننده‌های ویدیو پشتیبانی نشود.
گزینه‌های کدک Vulkan آزمایشی هستند و ممکن است به دلیل مشکلات درایور GPU در سیستم شما به درستی کار نکنند.
استفاده از کدک‌های Vulkan ممکن است در درایورهای قدیمی‌تر NVIDIA به عملکرد بهتر در بازی‌ها منجر شود، زیرا رمزگذاری ویدیویی Vulkan از مشکلی به نام "cuda p2 state" رنج نمی‌برد
که در آن هنگام استفاده از nvenc (کدک‌های ویدیویی معمول در NVIDIA)، فرکانس کاری GPU کاهش می‌یابد.

(پیش‌فرض: auto ← h264).

پریست کیفیت (medium، high، very_high، ultra) برای حالت QP/VBR، یا بیت‌ریت (kbps) برای حالت CBR (پیش‌فرض: very_high).
حالت بیت‌ریت (پیش‌فرض: auto ← qp). حالت CBR برای بافر بازپخش و پخش زنده توصیه می‌شود.

حالت QP به معنای ضبط با کیفیت ثابت حتی در صحنه‌های پرتحرک است، در حالی که VBR و CBR به معنای ضبط با حجم ثابت هستند.

حالت نرخ فریم: cfr (ثابت)، vfr (متغیر)، یا content (منطبق بر محتوا) (پیش‌فرض: vfr). حالت content فقط در X11 یا ضبط پرتال در دسترس است.

حالت content (با -fm content) ویدیو را با محتوای در حال ضبط همگام می‌کند و برای دستیابی به روان‌ترین ویدیو در حالتی که بازی با نرخ فریم برابر یا کمتر از نرخ فریم هدف اجرا می‌شود، توصیه می‌شود.

حالت نرخ فریم ثابت (با -fm cfr) تضمین می‌کند که نرخ فریم ویدیو در سرتاسر فایل همان‌طور که با گزینه -f تنظیم شده ثابت بماند. این حالت ممکن است برای برخی از نرم‌افزارهای ویرایش ویدیو مورد نیاز باشد.
این گزینه توصیه نمی‌شود؛ زیرا برای مثال اگر قصد ضبط با نرخ ۶۰ فریم بر ثانیه را داشته باشید و بازی سنگینی انجام دهید که با کمتر از ۶۰ فریم بر ثانیه اجرا می‌شود، ضبط نیز ممکن است با همان نرخ فریم پایین تصویربرداری کند،
که انکودر را دچار اضافه بار کرده و ممکن است در نهایت ضبط با نرخ ۱ تا ۲ فریم بر ثانیه انجام شود و توانایی بازیابی نداشته باشد.
در این شرایط، سعی کنید در حالت نرخ فریم متغیر (با -fm vfr) در قالب فایل mkv ضبط کنید، زیرا نرم‌افزار Kdenlive از ویدیوهای با نرخ فریم متغیر در صورت قرار داشتن در کانتینر mkv پشتیبانی می‌کند.

دامنه رنگ (پیش‌فرض: limited). دامنه کامل (full) ممکن است در برخی پخش‌کننده‌های ویدیو یا وب‌سایت‌ها مشکل ایجاد کند.
تنظیم بهینه‌سازی رمزگذاری (پیش‌فرض: performance). در حال حاضر فقط برای NVIDIA.
فاصله فریم‌های کلیدی (Keyframe) بر حسب ثانیه (پیش‌فرض: 2.0). بر دقت پرش زمانی در ویدیو تأثیر می‌گذارد.
دستگاه رمزگذاری (پیش‌فرض: gpu). رمزگذاری با CPU فقط برای H264 است.
بازگشت به رمزگذاری CPU در صورت در دسترس نبودن شتاب‌دهنده سخت‌افزاری GPU (پیش‌فرض: no).

مدت زمان بافر بازپخش (۲ تا ۸۶۴۰۰ ثانیه). هنگام تنظیم، ویدیو تنها با دستور کاربر ذخیره می‌شود.
محل ذخیره‌سازی بافر (پیش‌فرض: ram). حالت دیسک ممکن است طول عمر حافظه SSD را کاهش دهد.
پاک کردن بافر پس از ذخیره بازپخش (پیش‌فرض: no).
سازماندهی بازپخش‌ها در پوشه‌های مبتنی بر تاریخ (پیش‌فرض: no).

بارگذاری افزونه (فایل .so). می‌تواند چندین بار مشخص شود.
اسکریپتی که پس از ذخیره ویدیو اجرا می‌شود. مسیر فایل و نوع آن ("regular"، "replay"، "screenshot") را دریافت می‌کند.
فایل توکن نشست پرتال (پیش‌فرض: ~/.config/gpu-screen-recorder/restore_token).
آرگومان‌های اضافی برای ارسال به FFmpeg برای فایل به صورت فهرستی از جفت‌های کلید-مقدار در قالب "key=value;key=value"،
برای مثال: -ffmpeg-opts "hls_list_size=3;hls_time=1;hls_flags=delete_segments".
نکته: این تنظیمات گزینه‌های هم‌نام تعیین‌شده توسط GPU Screen Recorder را بازنویسی می‌کنند.
آرگومان‌های اضافی برای ارسال به FFmpeg برای ویدیو به صورت فهرستی از جفت‌های کلید-مقدار در قالب "key=value;key=value"،
برای مثال: -ffmpeg-video-opts "codec=cabac;rc_mode=CQP;qp=16".
نکته: این تنظیمات گزینه‌های هم‌نام تعیین‌شده توسط GPU Screen Recorder را بازنویسی می‌کنند.
آرگومان‌های اضافی برای ارسال به FFmpeg برای صدا به صورت فهرستی از جفت‌های کلید-مقدار در قالب "key=value;key=value"،
برای مثال: -ffmpeg-audio-opts "aac_coder=fast;aac_pce=true".
نکته: این تنظیمات گزینه‌های هم‌نام تعیین‌شده توسط GPU Screen Recorder را بازنویسی می‌کنند.
توکن حامل (Bearer) اختیاری جهت احراز هویت هنگام پخش زنده، برای مثال هنگام استفاده از پروتکل whip (گزینه -c whip).
برای سرورهایی با احراز هویت نام کاربری/رمز عبور، توکن می‌تواند به صورت "username:password" تنظیم شود. استریم با پروتکل Whip نیازمند نسخه ۸.۰ یا بالاتر FFmpeg است.
همچنین می‌توان توکن را در متغیر محیطی GSR_AUTH قرار داد تا در خط فرمان فرآیند نمایش داده نشود. گزینه -auth بر متغیر محیطی اولویت دارد.
هنگام استریم با whip، گزینه ماکسر ts_buffer_size به طور پیش‌فرض روی 4194304 تنظیم است. این مقدار را می‌توان با -ffmpeg-opts "ts_buffer_size=<value>" بازنویسی کرد.
هسته سیستم‌عامل (کرنل) اندازه بافر را بر اساس متغیر sysctl مربوط به net.core.wmem_max محدود می‌کند (که معمولاً فقط حدود ۲۰۸ کیلوبایت است). اگر استریم whip با خطای "UDP send blocked" متوقف شد، این مقدار را افزایش دهید؛ برای مثال: sysctl -w net.core.wmem_max=8388608
خروجی خطایابی (دیباگ) OpenGL (پیش‌فرض: no).
چاپ اطلاعات FPS و آسیب دیدگی تصویر (damage info) (پیش‌فرض: yes).
اجرا در حالت کم‌مصرف. این گزینه در حال حاضر تنها بر کارت‌های AMD تأثیر دارد (چون این مسئله فقط در AMD وجود دارد) و به GPU اجازه می‌دهد هنگام ضبط به حالت مصرف توان کمتر برود (پیش‌فرض: no).
تنظیم این گزینه روی yes ممکن است همیشه به دلیل مشکلات درایور AMD ایده‌آل نباشد؛ جایی که پس از پخش یک ویدیو با VAAPI در سیستم، عملکرد رمزگذاری ویدیو نیز کاهش می‌یابد که بر GPU Screen Recorder اثر منفی می‌گذارد.
توصیه می‌شود هنگام فعال بودن این گزینه، از گزینه -fm content نیز استفاده کنید تا فریم‌ها تنها زمانی که محتوای صفحه به‌روز می‌شود رمزگذاری شوند و در زمان بیکاری سیستم، مصرف پردازنده گرافیکی و انکودر ویدیو کاهش یابد.
حذف فراداده‌های (متادیتا) شخصی از فایل ویدیو، مانند عنوان ترک صوتی که به طور پیش‌فرض از نام دستگاه صوتی تشکیل شده است (پیش‌فرض: no).
در صورت فعال بودن، یک فایل برچسب زمانی (Timestamp) با پسوند اضافی .ts در کنار ویدیوی خروجی ایجاد می‌کند که شامل موارد زیر است:
monotonic_microsec	realtime_microsec
<monotonic_microsec>	<realtime_microsec>
(پیش‌فرض: no). برای پخش زنده و زمانی که خروجی پایپ می‌شود نادیده گرفته می‌شود.
شنود دستورات روی یک سوکت یونیکس در مسیر socket_path به جای پذیرش صرف سیگنال‌ها. سوکت با شروع به کار GPU Screen Recorder ایجاد و هنگام خروج برنامه حذف می‌شود. برای مشاهده پروتکل به بخش IPC مراجعه کنید. هنگام ثبت اسکرین‌شات تأثیری ندارد.

مسیر فایل خروجی (یا پوشه در حالت بازپخش). به جز در حالت خروجی به stdout الزامی است.
پوشه خروجی برای ضبط‌های معمولی در حین حالت بازپخش/استریم.

نمایش پیام راهنما.
نمایش نسخه (5.10.2).
نمایش اطلاعات سیستم (کدک‌ها، گزینه‌های تصویربرداری).
فهرست کردن منابع تصویربرداری موجود (پنجره، مانیتورها، پرتال، مسیر دستگاه v4l2).
فهرست کردن مانیتورهای موجود.
فهرست کردن دستگاه‌های دوربین موجود (V4L2).
فهرست کردن دستگاه‌های صوتی موجود.
فهرست کردن برنامه‌های موجود برای ضبط صدا.

برنامه GPU Screen Recorder را می‌توان از طریق سیگنال‌ها کنترل کرد:

توقف و ذخیره ضبط (توقف بدون ذخیره در حالت بازپخش).
ذخیره بازپخش (فقط در حالت بازپخش).
مکث/ادامه ضبط (برای استریم/بازپخش کاربرد ندارد).
شروع/توقف ضبط معمولی در حین بازپخش/استریم.
ذخیره ۱۰ ثانیه گذشته (حالت بازپخش).
ذخیره ۳۰ ثانیه گذشته (حالت بازپخش).
ذخیره ۶۰ ثانیه گذشته (حالت بازپخش).
ذخیره ۵ دقیقه گذشته (حالت بازپخش).
ذخیره ۱۰ دقیقه گذشته (حالت بازپخش).
ذخیره ۳۰ دقیقه گذشته (حالت بازپخش).

برای ارسال سیگنال‌ها از pkill استفاده کنید (مانند pkill -SIGUSR1 -f "^gpu-screen-recorder").

هنگامی که گزینه -ipc استفاده می‌شود، GPU Screen Recorder همچنین روی یک سوکت دامنه یونیکس به دستورات گوش می‌دهد. این قابلیت همان امکانات کنترلی سیگنال‌ها را فراهم می‌کند، با این تفاوت که بازپخش را می‌توان با هر تعداد ثانیه دلخواه ذخیره کرد. این سوکت تنها توسط کاربری که GPU Screen Recorder را اجرا کرده قابل استفاده است و با خروج برنامه حذف می‌شود.

دستور gsr-cli(1) برنامه‌ای است که این دستورات را ارسال کرده و پاسخ را گزارش می‌دهد؛ بنابراین پروتکل زیر تنها توسط برنامه‌هایی نیاز به پیاده‌سازی دارد که قصد ارتباط مستقیم با سوکت را دارند.

درخواست‌ها و پاسخ‌ها اشیاء JSON هستند که با خط جدید (newline) خاتمه می‌یابند. به هر درخواست یک پاسخ داده می‌شود. یک درخواست دارای این فیلدها است:

عددی که شناسه درخواست است. پاسخ مربوط به این درخواست دارای همین id خواهد بود.
رشته‌ای حاوی نام درخواست.
اختیاری است؛ نوع آن به نوع درخواست بستگی دارد.

یک پاسخ دارای این فیلدها است:

شناسه درخواستی که این پیام پاسخ آن است، یا 0 در صورتی که درخواست شناسه معتبری نداشته باشد.
یکی از دو مقدار ok یا error.
اختیاری است. برای نتیجه error یک رشته شامل شرح خطا است. برای نتیجه ok در دستورات stop، save-replay یا stop-replay-recording یک رشته حاوی مسیر فایل ذخیره‌شده است.

درخواست‌های stop، save-replay و stop-replay-recording یک فایل را ذخیره می‌کنند و پاسخ آن‌ها زمانی ارسال می‌شود که فایل ذخیره شده و اسکریپت تعیین‌شده با گزینه -sc اجرا شده باشد. سایر درخواست‌ها به محض پذیرفته شدن پاسخ داده می‌شوند.

درخواست‌های زیر در دسترس هستند:

توقف و ذخیره ضبط (توقف بدون ذخیره در حالت بازپخش). پاسخ شامل مسیر فایل ذخیره‌شده است، مگر در حالت بازپخش که فایلی ذخیره نمی‌شود.
ذخیره بازپخش (فقط در حالت بازپخش). فیلد data یک شیء با این فیلدهای اختیاری است:
تعداد ثانیه‌ها برای ذخیره، که باید بزرگتر از 0 باشد.
مقدار true/false، که گزینه -restart-replay-on-save را برای این ذخیره‌سازی بازنویسی می‌کند. همانند آن گزینه، بافر بازپخش تنها زمانی پاک می‌شود که کل بافر بازپخش ذخیره گردد.
زمانی که data یا seconds مشخص نشود یا null باشد، کل بافر بازپخش ذخیره می‌شود. پاسخ حاوی مسیر فایل ذخیره‌شده است.
مکث/ادامه ضبط (برای استریم/بازپخش کاربرد ندارد).
مکث/ادامه ضبط (برای استریم/بازپخش کاربرد ندارد). فیلد data باید برای مکث true و برای ادامه false باشد. برخلاف toggle-pause اگر ضبط از قبل در حالت مکث/ادامه باشد، این دستور با خطا مواجه نمی‌شود.
شروع/توقف ضبط معمولی در حین بازپخش/استریم، که نیازمند گزینه -ro است.
شروع ضبط معمولی در حین بازپخش/استریم، که نیازمند گزینه -ro است. اگر ضبطی از قبل در حال اجرا باشد، کاری انجام نمی‌دهد.
توقف ضبط معمولی در حال اجرا در حین بازپخش/استریم. اگر ضبطی در حال اجرا نباشد، با خطا مواجه می‌شود. پاسخ شامل مسیر فایل ذخیره‌شده است.

مثال:

gpu-screen-recorder -w screen -f 60 -c mp4 -r 60 -o ~/Videos -ipc "$XDG_RUNTIME_DIR/gsr.sock" &
echo '{"id":1,"name":"save-replay","data":{"seconds":30}}' | socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/gsr.sock"
پس از ذخیره بازپخش، پاسخی مانند زیر بازگردانده می‌شود:
{"id":1,"result":"ok","data":"/home/user/Videos/Replay_2026-08-05_14-04-22.mp4"}

ضبط مانیتور با نرخ ۶۰ فریم بر ثانیه به همراه صدای دسکتاپ:

gpu-screen-recorder -w screen -f 60 -a default_output -o video.mp4

ضبط مانیتور با نرخ ۶۰ فریم بر ثانیه به همراه صدای دسکتاپ و میکروفون:

gpu-screen-recorder -w screen -f 60 -a "default_output|default_input" -o video.mp4

ضبط پنجره مشخص (فقط در X11):

gpu-screen-recorder -w $(xdotool selectwindow) -f 60 -o video.mp4

بازپخش آنی (۶۰ ثانیه گذشته):

gpu-screen-recorder -w screen -c mp4 -r 60 -o ~/Videos

بازپخش آنی با نرخ فریم ثابت (توصیه‌شده برای مصرف حافظه رم پیش‌بینی‌پذیر):

gpu-screen-recorder -w screen -c mp4 -r 60 -bm cbr -q 40000 -o ~/Videos

ضبط ناحیه با استفاده از slop:

gpu-screen-recorder -w $(slop) -o video.mp4

ضبط ناحیه با استفاده از slurp:

gpu-screen-recorder -w $(slurp -f "%wx%h+%x+%y") -o video.mp4

بازپخش آنی و اجرای یک اسکریپت هنگام ذخیره بازپخش:

gpu-screen-recorder -w screen -c mp4 -r 60 -sc ./script.sh -o ~/Videos

استریم در Twitch با حالت بیت‌ریت ثابت:

gpu-screen-recorder -w screen -c flv -a default_output -bm cbr -q 8000 -o "rtmp://live.twitch.tv/app/stream_key"

ثبت اسکرین‌شات:

gpu-screen-recorder -w screen -o screenshot.jpg

ضبط صفحه و دوربین:

gpu-screen-recorder -w "screen|/dev/video0" -o video.mp4

ضبط صفحه و دوربین (دوربین در پایین سمت راست قرار گرفته و افقی معکوس شده است):

gpu-screen-recorder -w "screen|/dev/video0;halign=end;valign=end;hflip=true;width=30%;height=30%" -o video.mp4

ضبط دو مانیتور در کنار هم (با فرض اینکه مانیتور اول وضوح 1920x1080 دارد):

gpu-screen-recorder -w "DP-1|DP-2;x=1920" -o video.mp4

استریم با پروتکل whip به همراه کلید احراز هویت:

gpu-screen-recorder -w screen -bm cbr -q 3500 -auth "streamtest" -c whip -o https://b.siobud.com/api/whip

~/.config/gpu-screen-recorder/gpu-screen-recorder.env
متغیرهای محیطی برای سرویس systemd (اختیاری).
/usr/lib/modprobe.d/gsr-nvidia.conf
رفع مشکل تعلیق/ازسرگیری (Suspend/Resume) در NVIDIA.
~/.config/gpu-screen-recorder/restore_token
محل ذخیره توکن نشست پرتال (مسیر پیش‌فرض).

  • برخی نرم‌افزارهای ویرایش ویدیو از ویدیوها در حالت نرخ فریم متغیر پشتیبانی نمی‌کنند.

    برای دور زدن این مشکل، کانتینر ویدیو را به .mkv تغییر دهید یا در حالت نرخ فریم ثابت ضبط کنید.

  • نرخ فریم متغیر ممکن است در برخی پخش‌کننده‌های ویدیو مشکل ایجاد کند (از MPV استفاده کنید).
  • فرمت H.265/HEVC در مرورگرها/دیسکورد پشتیبانی نمی‌شود (برای اشتراک‌گذاری از H264 استفاده کنید).
  • برخی توزیع‌ها کدک‌های سخت‌افزاری را غیرفعال می‌کنند (از نسخه Flatpak استفاده کنید).
  • برای بافر بازپخش از حالت CBR (با -bm cbr ) استفاده کنید تا مصرف حافظه RAM کنترل شود.

  • ویدیوها را روی SSD ذخیره کنید (حافظه HDD ممکن است بیش از حد کند باشد).
  • سایر برنامه‌های ضبط صفحه را ببندید (از جمله OBS در حالت بیکار).

  • در NVIDIA: قابلیت CUDA پس از تعلیق (Suspend) از کار می‌افتد (وصله gsr-nvidia.conf را نصب کنید).
  • در AMD: احتمال ایجاد خطوط سیاه در ویدیوی خروجی با HEVC/AV1 (از H264 یا FFmpeg نسخه ۸ یا بالاتر استفاده کنید).

توسعه‌یافته توسط dec05eba و مشارکت‌کنندگان.

گزارش اشکالات به: dec05eba@protonmail.com.
مشاهده اطلاعات بیشتر درباره گزارش اشکالات در وب‌سایت gpu-screen-recorder: https://git.dec05eba.com/?p=about
لطفاً پیش از گزارش باگ، بخش FAQ در فایل README را بررسی کنید: https://git.dec05eba.com/gpu-screen-recorder/about
اشکال ممکن است قبلاً گزارش شده باشد یا به gpu-screen-recorder مرتبط نباشد (مانند مشکلات درایور).

حق نشر © dec05eba. تحت مجوز GPL-3.0-only.

gsr-cli(1)، gsr-kms-server(1)

صفحه اصلی پروژه
فایل راهنمای پروژه (README) با اطلاعات بیشتر
نسخه رابط گرافیکی GTK (منسوخ‌شده)
رابط کاربری به سبک ShadowPlay
xdotool(1)، slop(1)، slurp(1)

2026-08-18 6.0.1