ROC-RECV(1) Roc Toolkit ROC-RECV(1)

roc-recv - دریافت بی‌درنگ صدا

roc-recv OPTIONS

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

چاپ راهنما و خروج
چاپ نسخه و خروج
افزایش سطح پرگویی (می‌تواند چندین بار استفاده شود)
فهرست کردن طرح‌واره‌ها و قالب‌های پشتیبانی‌شده
شناسه یکتای منبع (URI) فایل یا دستگاه خروجی
اجبار قالب فایل خروجی
شناسه یکتای منبع (URI) فایل یا دستگاه پشتیبان (در صورت تنظیم، زمانی که هیچ نشستی وجود ندارد استفاده می‌شود)
اجبار قالب فایل پشتیبان
نقطه پایانی منبع محلی
نقطه پایانی ترمیم محلی
نقطه پایانی کنترلی محلی
نشانی IPv4 یا IPv6 مربوط به رابط شبکه‌ای که باید به گروه چندپخشی (multicast) ملحق شود
فعال‌سازی SO_REUSEADDR هنگام متصل کردن (bind) سوکت‌ها
تأخیر هدف، بر حسب واحدهای TIME
تأخیر هدف پخش، بر حسب واحدهای TIME
حداکثر انحراف از تأخیر هدف، بر حسب واحدهای TIME
مهلت زمانی عدم پخش، بر حسب واحدهای TIME
مهلت زمانی پخش بریده‌بریده، بر حسب واحدهای TIME
مدت‌زمان فریم‌های داخلی، بر حسب واحدهای TIME
حداکثر اندازه بسته، بر حسب واحدهای SIZE
حداکثر اندازه فریم داخلی، بر حسب واحدهای SIZE
بازنویسی نرخ نمونه‌برداری خروجی، بر حسب هرتز (Hz)
کدام تأخیر در تنظیم‌کننده تأخیر استفاده شود (مقادیر ممکن="niq"، پیش‌فرض=`niq')
نمایه تنظیم تأخیر (مقادیر ممکن="default"، "responsive"، "gradual"، "intact"، پیش‌فرض=`default')
بخش پشتیبان بازنمونه‌بردار (مقادیر ممکن="default"، "builtin"، "speex"، "speexdec"، پیش‌فرض=`default')
نمایه بازنمونه‌بردار (مقادیر ممکن="low"، "medium"، "high"، پیش‌فرض=`medium')
-1, --oneshot
خروج هنگام قطع اتصال آخرین کلاینت متصل (پیش‌فرض=غیرفعال)
فعال‌سازی تحلیل عملکرد داخلی (self-profiling) (پیش‌فرض=غیرفعال)
فعال‌سازی بوق هشدار هنگام از دست رفتن بسته (پیش‌فرض=غیرفعال)
تنظیم حالت ثبت رویدادهای رنگی برای خروجی stderr (مقادیر ممکن="auto"، "always"، "never"، پیش‌فرض=`auto')

گزینه‌های --source، --repair و --control پایانه‌های شبکه‌ای را که ترافیک باید روی آن‌ها دریافت شود، مشخص می‌کنند.

ENDPOINT_URI باید قالب زیر را داشته باشد:

protocol://host[:port][/path][?query]

مثال‌ها:

  • rtsp://localhost:123/path?query
  • rtp+rs8m://localhost:123
  • rtp://0.0.0.0:123
  • rtp://[::1]:123
  • rtcp://0.0.0.0:123

فهرست پروتکل‌های پشتیبانی‌شده را می‌توان با استفاده از گزینهٔ --list-supported به دست آورد.

فیلد host باید یا FQDN (نام دامنه)، یا نشانی IPv4، یا نشانی IPv6 درون کروشه باشد. این فیلد می‌تواند 0.0.0.0 (برای IPv4) یا [::] (برای IPv6) باشد تا پایانه به تمام رابط‌های شبکه مقید (bind) شود.

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

فیلدهای path و query تنها برای پروتکل‌هایی مجاز هستند که از آن‌ها پشتیبانی می‌کنند، مانند RTSP.

اگر FEC روی فرستنده فعال باشد، باید یک جفت پایانهٔ منبع (source) و ترمیم (repair) ارائه شود. این دو پایانه باید از پروتکل‌های سازگار استفاده کنند، برای مثال rtp+rs8m:// برای پایانهٔ منبع و rs8m:// برای پایانهٔ ترمیم. اگر FEC غیرفعال باشد، باید تنها یک پایانهٔ منبع ارائه شود.

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

  • منبع rtp://، بدون ترمیم (RTP خام بدون FEC)
  • منبع rtp+rs8m://، ترمیم rs8m:// (RTP با Reed-Solomon FEC)
  • منبع rtp+ldpc://، ترمیم ldpc:// (RTP با LDPC-Staircase FEC)

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

پروتکل‌های کنترل پشتیبانی‌شده:

•
rtcp://

گزینه‌های --output و --backup به یک URI دستگاه یا فایل در یکی از قالب‌های زیر نیاز دارند:

  • DEVICE_TYPE://DEVICE_NAME -- دستگاه صوتی
  • DEVICE_TYPE://default -- دستگاه صوتی پیش‌فرض برای نوع دستگاه مشخص‌شده
  • file:///ABS/PATH -- مسیر مطلق فایل
  • file://localhost/ABS/PATH -- مسیر مطلق فایل (قالب جایگزین؛ فقط میزبان "localhost" پشتیبانی می‌شود)
  • file:/ABS/PATH -- مسیر مطلق فایل (قالب جایگزین)
  • file:REL/PATH -- مسیر نسبی فایل
  • file://- -- stdout
  • file:- -- stdout (قالب جایگزین)

فهرست طرح‌واره‌ها (schemes) و قالب‌های فایل پشتیبانی‌شده را می‌توان با استفاده از گزینهٔ --list-supported به دست آورد.

اگر --output حذف شود، گرداننده (driver) و دستگاه پیش‌فرض انتخاب می‌شوند. اگر --backup حذف شود، از هیچ منبع پشتیبانی استفاده نخواهد شد.

گزینه‌های --output-format و --backup-format را می‌توان برای تحمیل قالب فایل خروجی یا پشتیبان به کار برد. اگر گزینه حذف شود، قالب فایل به‌طور خودکار تشخیص داده می‌شود. زمانی که خروجی یا پشتیبان stdout یا stdin باشد، تعیین این گزینه همواره الزامی است.

بخش مسیر (path) در URI ارائه‌شده به‌صورت percent-decoded رمزگشایی می‌شود. برای سهولت، نویسه‌های کدگذاری‌نشده نیز مجاز هستند، جز اینکه % همواره باید به‌صورت %25 کدگذاری شود.

برای نمونه، فایلی با نام /foo/bar%/[baz] را می‌توان با هر یک از این URIها مشخص کرد: file:///foo%2Fbar%25%2F%5Bbaz%5D و file:///foo/bar%25/[baz].

اگر گزینهٔ --miface مشخص شده باشد، نشانی IP رابط شبکه‌ای را تعیین می‌کند که باید به گروه چندپخشی ملحق شود. در صورت عدم حضور، نباید به هیچ گروه چندپخشی ملحق شد.

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

MIFACE باید یک نشانی IP از رابط شبکه‌ای باشد که قرار است به گروه چندپخشی ملحق شود. این مقدار می‌تواند 0.0.0.0 (برای IPv4) یا :: (برای IPv6) باشد تا به گروه چندپخشی روی همهٔ رابط‌های در دسترس پیوسته شود.

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

این مجموعه‌های پایانه «اسلات» (slots) نامیده می‌شوند. همهٔ اسلات‌ها باید دارای مجموعه یکسانی از انواع پایانه (مانند source، repair و غیره) باشند و از پروتکل‌های یکسانی برای آن‌ها استفاده کنند. همچنین همهٔ اسلات‌ها در صورت استفاده، باید گزینهٔ رابط چندپخشی مختص به خود را داشته باشند.

اگر گزینهٔ --reuseaddr ارائه شود، گزینهٔ سوکت SO_REUSEADDR برای همهٔ سوکت‌ها فعال خواهد شد (به‌طور پیش‌فرض تنها برای سوکت‌های چندپخشی فعال است).

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

برای UDP، این گزینه اجازه می‌دهد چندین فرایند به یک نشانی یکسان متصل (bind) شوند که در صورت استفاده از فعال‌سازی سوکت systemd می‌تواند مفید باشد.

صرف‌نظر از این گزینه، SO_REUSEADDR هنگام اتصال به یک پورت زودگذر (ephemeral) همواره غیرفعال است..SS صدای پشتیبان (Backup audio)

اگر گزینهٔ --backup مشخص شده باشد، دستگاه صوتی ورودی یا فایلی را تعیین می‌کند که هنگام متصل نبودن هیچ نشست فعالی پخش خواهد شد. اگر این گزینه ارائه نشود، به جای آن سکوت پخش می‌شود.

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

اتصال یک نقطه پایانی خام RTP روی تمام رابط‌های IPv4:

$ roc-recv -vv -s rtp://0.0.0.0:10001

اتصال نقاط پایانی مبدأ، ترمیم و کنترل به تمامی رابط‌های IPv4 (به‌جز IPv6):

$ roc-recv -vv -s rtp+rs8m://0.0.0.0:10001 -r rs8m://0.0.0.0:10002 \
    -c rtcp://0.0.0.0:10003

اتصال نقاط پایانی مبدأ، ترمیم و کنترل به تمامی رابط‌های IPv6 (به‌جز IPv4):

$ roc-recv -vv -s rtp+rs8m://[::]:10001 -r rs8m://[::]:10002 -c rtcp://[::]:10003

اتصال نقاط پایانی مبدأ، ترمیم و کنترل به یک رابط شبکهٔ خاص:

$ roc-recv -vv -s rtp+rs8m://192.168.0.3:10001 -r rs8m://192.168.0.3:10002 \
    -c rtcp://192.168.0.3:10003

اتصال نقاط پایانی به یک نشانی چندپخشی (multicast) خاص و پیوستن به یک گروه چندپخشی روی یک رابط شبکهٔ مشخص:

$ roc-recv -vv -s rtp+rs8m://225.1.2.3:10001 -r rs8m://225.1.2.3:10002 \
    -c rtcp://225.1.2.3:10003 \
    --miface 192.168.0.3

اتصال دو مجموعه از نقاط پایانی مبدأ، ترمیم و کنترل (در کل شش نقطه پایانی):

$ roc-recv -vv \
    -s rtp+rs8m://192.168.0.3:10001 -r rs8m://192.168.0.3:10002 \
        -c rtcp://192.168.0.3:10003 \
    -s rtp+rs8m://198.214.0.7:10001 -r rs8m://198.214.0.7:10002 \
        -c rtcp://198.214.0.7:10003

ارسال خروجی به دستگاه پیش‌فرض (بدون ذکر -o):

$ roc-recv -vv -s rtp://0.0.0.0:10001

ارسال خروجی به دستگاه پیش‌فرض ALSA:

$ roc-recv -vv -s rtp://0.0.0.0:10001 -o alsa://default

ارسال خروجی به یک دستگاه خاص در PulseAudio:

$ roc-recv -vv -s rtp://0.0.0.0:10001 -o pulse://alsa_input.pci-0000_00_1f.3.analog-stereo

ارسال خروجی به یک فایل با قالب WAV (تشخیص قالب از طریق پسوند فایل):

$ roc-recv -vv -s rtp://0.0.0.0:10001 -o file:./output.wav

ارسال خروجی به یک فایل با قالب WAV (مشخص کردن قالب به‌صورت دستی):

$ roc-recv -vv -s rtp://0.0.0.0:10001 -o file:./output.file --output-format wav

ارسال خروجی به stdout با قالب WAV:

$ roc-recv -vv -s rtp://0.0.0.0:10001 -o file:- --output-format wav >./output.wav

ارسال خروجی به یک فایل با قالب WAV (مسیر مطلق):

$ roc-recv -vv -s rtp://0.0.0.0:10001 -o file:///home/user/output.wav

مشخص کردن فایل پشتیبان:

$ roc-recv -vv -s rtp://0.0.0.0:10001 --backup file:./backup.wav

اجبار یک نرخ مشخص روی دستگاه خروجی:

$ roc-recv -vv -s rtp://0.0.0.0:10001 --rate=44100

انتخاب طرح FEC از نوع LDPC-Staircase:

$ roc-recv -vv -s rtp+ldpc://0.0.0.0:10001 -r ldpc://0.0.0.0:10002 \
    -c rtcp://0.0.0.0:10003

انتخاب تأخیر نشست کمتر:

$ roc-recv -vv -s rtp://0.0.0.0:10001 --target-latency=50ms

انتخاب تأخیر ورودی/خروجی و طول فریم کمتر:

$ roc-recv -vv -s rtp://0.0.0.0:10001 \
    --io-latency=20ms --frame-len 4ms

تعیین دستی آستانه‌ها و مهلت‌های زمانی:

$ roc-recv -vv -s rtp://0.0.0.0:10001 \
    --target-latency=50ms --min-latency=40ms --max-latency 60ms \
    --no-play-timeout=200ms --choppy-play-timeout=500ms

تعیین دستی پارامترهای بازنمونه‌برداری:

$ roc-recv -vv -s rtp://0.0.0.0:10001 \
    --resampler-backend=speex --resampler-profile=high

تعیین دستی پارامترهای تنظیم تأخیر:

$ roc-recv -vv -s rtp://0.0.0.0:10001 \
    --latency-backend=niq --latency-profile=gradual

متغیرهای محیطی زیر پشتیبانی می‌شوند:

به‌طور پیش‌فرض، رنگی‌سازی ترمینال به‌صورت خودکار تشخیص داده می‌شود. این متغیر محیطی می‌تواند برای غیرفعال کردن رنگی‌سازی ترمینال روی یک رشته غیرخالی تنظیم شود. اولویت آن از گزینه --color کمتر است.
به‌طور پیش‌فرض، رنگی‌سازی ترمینال به‌صورت خودکار تشخیص داده می‌شود. این متغیر محیطی می‌تواند روی یک عدد صحیح مثبت تنظیم شود تا رنگی‌سازی ترمینال فعال/اجباری شود. اولویت آن از متغیر NO_COLOR و گزینه --color کمتر است.

roc-send(1)، و وب‌سایت Roc در https://roc-streaming.org

لطفاً هرگونه باگ پیدا شده را از طریق GitHub گزارش دهید (https://github.com/roc-streaming/roc-toolkit).

برای دیدن فهرست نگه‌دارنده‌ها و مشارکت‌کنندگان، صفحه نویسندگان را در وب‌سایت ببینید (https://roc-streaming.org/toolkit/docs/about_project/authors.html).

2024، نویسندگان Roc Streaming

2024 Roc Toolkit 0.4