.Dd $Mdocdate: July 30 2022 $ .Dt WF-RECORDER 1 .Os .Sh "نام (NAME)" .Nm wf-recorder .Nd برنامه‌ای ساده برای ضبط صفحه‌نمایش در کامپوزیتورهای مبتنی بر wlroots .Sh "خلاصه دستور (SYNOPSIS)" .Nm wf-recorder .Op Fl abcCdDefFghlmopPrRvxX .Op Fl a, -audio Op Ar =DEVICE .Op Fl b, -bframes Ar max_b_frames .Op Fl B, -buffrate Ar buffrate .Op Fl c, -codec Ar output_codec .Op Fl r, -framerate Ar framerate .Op Fl d, -device Ar encoding_device .Op Fl -no-dmabuf .Op Fl D, -no-damage .Op Fl f, -file Ar filename.ext .Op Fl F Ar filter_string .Op Fl g, -geometry Ar geometry .Op Fl h, -help .Op Fl l, -log .Op Fl m, -muxer Ar muxer .Op Fl L, -list-output .Op Fl o, -output Ar output .Op Fl p, -codec-param Op Ar option_param=option_value .Op Fl v, -version .Op Fl x, -pixel-format .Op Fl -audio-backend Ar audio_backend .Op Fl C, -audio-codec Ar output_audio_codec .Op Fl P, -audio-codec-param Op Ar option_param=option_value .Op Fl R, -sample-rate Ar sample_rate .Op Fl X, -sample-format Ar sample_format .Op Fl y, -overwrite .Sh "توضیحات (DESCRIPTION)" .Nm ابزاری است که برای ضبط صفحه‌نمایش در کامپوزیتورهای Wayland ساخته شده است. این ابزار از .Sy wlr-screencopy برای ضبط ویدیو و از .Xr ffmpeg 1 برای رمزگذاری آن استفاده می‌کند. .Pp در ساده‌ترین حالت، .Nm را برای آغاز ضبط اجرا کرده و از .Ql Ctrl+C برای توقف آن استفاده کنید. این کار فایلی با نام .Ql recording.mp4 را در دایرکتوری کاری فعلی با استفاده از .Ar codec پیش‌فرض ایجاد می‌کند. .Pp گزینه‌ها به شرح زیر هستند: .Pp .Bl -tag -width Ds -compact .It Fl a , -audio Op Ar =DEVICE ضبط صفحه‌نمایش همراه با صدا را آغاز می‌کند. .Pp آرگومان .Ar DEVICE اختیاری است. در صورتی که می‌خواهید دستگاه PulseAudio ضبط‌کننده صدا را مشخص کنید، می‌توانید این دستور را همراه با نام آن دستگاه اجرا نمایید. می‌توانید دستگاه خود را با اجرای دستور زیر پیدا کنید: .D1 $ pactl list sources | grep Name .Pp .It Fl b , -bframes Ar max_b_frames حداکثر تعداد B-Frameهای مورد استفاده را تنظیم می‌کند. .It Fl B , -buffrate Ar buffrate یک پیش‌بینی از نرخ فریم مورد انتظار را به انکودر اعلام می‌کند. این کار VFR را حفظ کرده و مشکل محدودیت FPS برخی از انکودرها (مانند svt-av1) را حل می‌کند. باید روی همان نرخ فریم نمایشگر تنظیم شود. .Pp .It Fl c , -codec Ar output_codec کدک ویدیوی خروجی را مشخص می‌کند. از خروجی GIF نیز پشتیبانی می‌کند. .Pp برای تغییر پارامترهای کدک، از .Fl p Ar option_name=option_value استفاده کنید. .Pp .It Fl r , -framerate Ar framerate یک نرخ فریم ثابت (CFR) سخت‌گیرانه تنظیم می‌کند. برای رسیدن به آن، فریم‌ها تکرار خواهند شد. این کار ویدیوی حاصل را CFR می‌کند و مشکل محدودیت FPS برخی از انکودرها را رفع می‌کند. .Pp .It Fl d , -device Ar encoding_device دستگاه مورد استفاده هنگام رمزگذاری ویدیو را انتخاب می‌کند. .Pp برخی از درایورها پشتیبانی از داده‌های .Ql rgb0 را برای ورودی vaapi گزارش می‌دهند، اما در واقع تنها از yuv پشتیبانی می‌کنند. علاوه بر گزینه‌های vaapi، از گزینه .Fl x Ar yuv420 استفاده کنید تا داده‌ها پیش از ارسال به GPU، به‌صورت نرم‌افزاری تبدیل شوند. .Pp .It Fl -no-dmabuf به‌طور پیش‌فرض، wf-recorder در صورت استفاده از انکودر GPU تلاش می‌کند تنها از بافرها و کپی‌های GPU استفاده کند. با این حال، این امر می‌تواند در برخی سیستم‌ها باعث بروز مشکلاتی شود. در چنین مواردی، این گزینه کپی GPU را غیرفعال کرده و استفاده از پردازنده (CPU) را اجباری می‌کند. .Pp .It Fl D , -no-damage به‌طور پیش‌فرض، wf-recorder تنها زمانی فریم جدیدی را از کامپوزیتور درخواست می‌کند که صفحه‌نمایش به‌روزرسانی شود. این امر منجر به ایجاد فایل خروجی بسیار کوچک‌تری می‌شود، هرچند که دارای نرخ نوسازی متغیر خواهد بود. زمانی که این گزینه فعال باشد، wf-recorder از این بهینه‌سازی استفاده نکرده و حتی اگر هیچ به‌روزرسانی در صفحه رخ ندهد، به‌طور پیوسته فریم‌های جدید را ضبط می‌کند. .Pp .It Fl f , -file Ar filename.ext با استفاده از گزینه .Fl f ، فایل خروجی نام .Ar filename.ext را خواهد داشت و قالب فایل بر اساس پسوند ارائه‌شده تعیین می‌شود. اگر پسوند توسط ماکسرهای .Xr ffmpeg 1 شما شناخته نشود، دستور با شکست مواجه خواهد شد. .Pp می‌توانید ماکسرهایی را که نصب .Xr ffmpeg 1 شما پشتیبانی می‌کند با اجرای دستور زیر بررسی کنید: .Dl $ ffmpeg -muxers .Pp .It Fl F , -filter Ar filter_string فیلتر ffmpeg مورد استفاده را تنظیم می‌کند. VAAPI برای عملکرد صحیح نیازمند `scale_vaapi=format=nv12:out_range=full` است. .Pp .It Fl g , -geometry Ar screen_geometry بخش خاصی از صفحه‌نمایش را انتخاب می‌کند. ساختار آن به صورت "x,y WxH" است. .Pp .It Fl h , -help صفحه راهنما را چاپ می‌کند. .Pp .It Fl l , -log یک گزارش (لاگ) روی ترمینال جاری تولید می‌کند. برای مقاصد اشکال‌زدایی. .Pp .It Fl m , -muxer Ar muxer قالب خروجی را به‌جای تشخیص از روی نام فایل، روی یک ماکسر مشخص تنظیم می‌کند. .Pp .It Fl L , -list-output خروجی‌های (نمایشگرهای) موجود را فهرست می‌کند. .Pp .It Fl o , -output خروجی‌ای که ویدیو باید از آن ضبط شود را مشخص می‌کند. .Pp .It Fl p , -codec-param Op Ar option_name=option_value یک پارامتر کدک را تغییر می‌دهد. می‌تواند چندین بار استفاده شود: .Fl p Ar option_name_1=option_value_1 .Fl p Ar option_name_2=option_value_2 .Pp .It Fl v , -version نسخه wf-recorder را چاپ می‌کند. .Pp .It Fl x , -pixel-format Ar pixel_format قالب پیکسل خروجی را تعیین می‌کند. .Pp فهرست قالب‌های موجود را با دستور زیر مشاهده کنید: .Dl $ ffmpeg -pix_fmts .Pp .It Fl -audio-backend Ar audio_backend بک‌اند صوتی مورد استفاده در زمان تنظیم بودن a- را مشخص می‌کند. .Pp .It Fl C , -audio-codec Ar output_audio_codec کدک صدا را مشخص می‌کند. .Pp .It Fl P , -audio-codec-param Op Ar option_name=option_value پارامترهای کدک صدا را تغییر می‌دهد. .Pp .It Fl R , -sample-rate Ar sample_rate نرخ نمونه‌برداری صدا را بر حسب هرتز (HZ) تغییر می‌دهد. مقدار پیش‌فرض 48000 است. .Pp .It Fl X , -sample-format Ar sample_format قالب نمونه صدای خروجی را تعیین می‌کند. .Pp فهرست قالب‌های موجود را با دستور زیر مشاهده کنید: .Dl $ ffmpeg -sample_fmts .Pp .It Fl y , -overwrite رونویسی فایل خروجی را بدون تایید خواستن اجبار می‌کند. .El .Sh "مثال‌ها (EXAMPLES)" برای انتخاب بخش خاصی از صفحه می‌توانید از .Fl -g Ar geometry استفاده کنید یا از https://github.com/emersion/slurp برای انتخاب تعاملی ناحیه‌ای از صفحه که ضبط خواهد شد بهره ببرید: .Dl $ wf-recorder -g \(dq$(slurp)\(dq .Pp می‌توانید صفحه‌نمایش و صدا را به‌طور همزمان ضبط کنید با: .Dl $ wf-recorder --audio --file=recording_with_audio.mp4 .Pp برای تعیین دستگاه صوتی، از گزینه‌های .Fl -a یا .Fl --audio= استفاده کنید. .Pp برای مشخص کردن یک .Ar codec از گزینه .Fl c Ar codec استفاده کنید. برای تغییر پارامترهای کدک، از گزینه .Fl p استفاده کنید: .Dl $ wf-recorder -c libx264 -p preset=slow -p crf=18 .Pp برای تنظیم یک قالب خروجی خاص، از گزینه .Fl m, -muxer استفاده کنید. به‌عنوان مثال، برای خروجی دادن به یک لوپ‌بک .Sy video4linux2 می‌توانید از دستور زیر استفاده کنید: .Dl $ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 .Pp برای استفاده از انکودینگ GPU، از یک کدک VAAPI (به‌عنوان مثال .Ql h264_vaapi ) استفاده کرده و یک دستگاه GPU را با گزینه .Fl d مشخص نمایید: .Dl $ wf-recorder -f test-vaapi.mkv -c h264_vaapi -d /dev/dri/renderD128 .Pp برخی درایورها پشتیبانی از داده‌های .Ql rgb0 را برای ورودی .Ql vaapi اعلام می‌کنند اما در واقعیت تنها از فرمت‌های سطحی (planar) yuv پشتیبانی می‌کنند. در این حالت، علاوه بر گزینه‌های .Ql vaapi از گزینه .Fl x Ar yuv420p استفاده کنید تا داده‌ها پیش از ارسال به GPU به داده‌های سطحی yuv تبدیل شوند. .Sh "همچنین ببینید (SEE ALSO)" .Xr ffmpeg 1 , .Xr pactl 1