| ROC-RECV(1) | Roc Toolkit | ROC-RECV(1) |
نام (NAME)
roc-recv - دریافت بیدرنگ صدا
خلاصه دستور (SYNOPSIS)
roc-recv OPTIONS
توضیحات (DESCRIPTION)
دریافت جریانهای صوتی از فرستندههای راه دور و نوشتن آنها روی یک دستگاه صوتی یا فایل.
گزینهها (OPTIONS)
- -h, --help
- چاپ راهنما و خروج
- -V, --version
- چاپ نسخه و خروج
- -v, --verbose
- افزایش سطح پرگویی (میتواند چندین بار استفاده شود)
- -L, --list-supported
- فهرست کردن طرحوارهها و قالبهای پشتیبانیشده
- -o,--output=IO_URI
- شناسه یکتای منبع (URI) فایل یا دستگاه خروجی
- --output-format=FILE_FORMAT
- اجبار قالب فایل خروجی
- --backup=IO_URI
- شناسه یکتای منبع (URI) فایل یا دستگاه پشتیبان (در صورت تنظیم، زمانی که هیچ نشستی وجود ندارد استفاده میشود)
- --backup-format=FILE_FORMAT
- اجبار قالب فایل پشتیبان
- -s,--source=ENDPOINT_URI
- نقطه پایانی منبع محلی
- -r,--repair=ENDPOINT_URI
- نقطه پایانی ترمیم محلی
- -c,--control=ENDPOINT_URI
- نقطه پایانی کنترلی محلی
- --miface=MIFACE
- نشانی IPv4 یا IPv6 مربوط به رابط شبکهای که باید به گروه چندپخشی (multicast) ملحق شود
- --reuseaddr
- فعالسازی SO_REUSEADDR هنگام متصل کردن (bind) سوکتها
- --target-latency=STRING
- تأخیر هدف، بر حسب واحدهای TIME
- --io-latency=STRING
- تأخیر هدف پخش، بر حسب واحدهای TIME
- --latency-tolerance=STRING
- حداکثر انحراف از تأخیر هدف، بر حسب واحدهای TIME
- --no-play-timeout=STRING
- مهلت زمانی عدم پخش، بر حسب واحدهای TIME
- --choppy-play-timeout=STRING
- مهلت زمانی پخش بریدهبریده، بر حسب واحدهای TIME
- --frame-len=TIME
- مدتزمان فریمهای داخلی، بر حسب واحدهای TIME
- --max-packet-size=SIZE
- حداکثر اندازه بسته، بر حسب واحدهای SIZE
- --max-frame-size=SIZE
- حداکثر اندازه فریم داخلی، بر حسب واحدهای SIZE
- --rate=INT
- بازنویسی نرخ نمونهبرداری خروجی، بر حسب هرتز (Hz)
- --latency-backend=ENUM
- کدام تأخیر در تنظیمکننده تأخیر استفاده شود (مقادیر ممکن="niq"، پیشفرض=`niq')
- --latency-profile=ENUM
- نمایه تنظیم تأخیر (مقادیر ممکن="default"، "responsive"، "gradual"، "intact"، پیشفرض=`default')
- --resampler-backend=ENUM
- بخش پشتیبان بازنمونهبردار (مقادیر ممکن="default"، "builtin"، "speex"، "speexdec"، پیشفرض=`default')
- --resampler-profile=ENUM
- نمایه بازنمونهبردار (مقادیر ممکن="low"، "medium"، "high"، پیشفرض=`medium')
- -1, --oneshot
- خروج هنگام قطع اتصال آخرین کلاینت متصل (پیشفرض=غیرفعال)
- --profiling
- فعالسازی تحلیل عملکرد داخلی (self-profiling) (پیشفرض=غیرفعال)
- --beep
- فعالسازی بوق هشدار هنگام از دست رفتن بسته (پیشفرض=غیرفعال)
- --color=ENUM
- تنظیم حالت
ثبت
رویدادهای
رنگی برای
خروجی 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://
نشانی ورودی/خروجی (IO URI)
گزینههای --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].
رابط چندپخشی (Multicast interface)
اگر گزینهٔ --miface مشخص شده باشد، نشانی IP رابط شبکهای را تعیین میکند که باید به گروه چندپخشی ملحق شود. در صورت عدم حضور، نباید به هیچ گروه چندپخشی ملحق شد.
دریافت ترافیک چندپخشی بدون پیوستن به گروه چندپخشی امکانپذیر نیست. کاربر باید یا رابط چندپخشی را مشخص کند، یا با استفاده از ابزارهای خارجی بهطور دستی به گروه ملحق شود.
MIFACE باید یک نشانی IP از رابط شبکهای باشد که قرار است به گروه چندپخشی ملحق شود. این مقدار میتواند 0.0.0.0 (برای IPv4) یا :: (برای IPv6) باشد تا به گروه چندپخشی روی همهٔ رابطهای در دسترس پیوسته شود.
اسلاتهای چندگانه (Multiple slots)
میتوان چندین مجموعه پایانه را برای دریافت رسانه از نشانیهای چندگانه تعیین کرد.
این مجموعههای پایانه «اسلات» (slots) نامیده میشوند. همهٔ اسلاتها باید دارای مجموعه یکسانی از انواع پایانه (مانند source، repair و غیره) باشند و از پروتکلهای یکسانی برای آنها استفاده کنند. همچنین همهٔ اسلاتها در صورت استفاده، باید گزینهٔ رابط چندپخشی مختص به خود را داشته باشند.
SO_REUSEADDR
اگر گزینهٔ --reuseaddr ارائه شود، گزینهٔ سوکت SO_REUSEADDR برای همهٔ سوکتها فعال خواهد شد (بهطور پیشفرض تنها برای سوکتهای چندپخشی فعال است).
برای TCP، این گزینه اجازه میدهد سوکتی که بهتازگی بسته شده و در وضعیت TIME_WAIT قرار دارد بلافاصله دوباره استفاده شود، که در صورت نیاز به راهاندازی مجدد سریع سرور میتواند کاربردی باشد.
برای UDP، این گزینه اجازه میدهد چندین فرایند به یک نشانی یکسان متصل (bind) شوند که در صورت استفاده از فعالسازی سوکت systemd میتواند مفید باشد.
صرفنظر از این گزینه، SO_REUSEADDR هنگام اتصال به یک پورت زودگذر (ephemeral) همواره غیرفعال است..SS صدای پشتیبان (Backup audio)
اگر گزینهٔ --backup مشخص شده باشد، دستگاه صوتی ورودی یا فایلی را تعیین میکند که هنگام متصل نبودن هیچ نشست فعالی پخش خواهد شد. اگر این گزینه ارائه نشود، به جای آن سکوت پخش میشود.
فایل پشتیبان هر بار که آخرین نشست قطع شود، از ابتدا بازپخش میشود. پخش فایل پشتیبان بهطور خودکار در یک حلقه تکرار میگردد.
واحدهای زمان (Time units)
- TIME باید یکی از قالبهای زیر را داشته باشد:
- 123ns; 1.23us; 1.23ms; 1.23s; 1.23m; 1.23h;
واحدهای اندازه (Size units)
- SIZE باید یکی از قالبهای زیر را داشته باشد:
- 123; 1.23K; 1.23M; 1.23G;
مثالها (EXAMPLES)
مثالهای نقطه پایانی (Endpoint examples)
اتصال یک نقطه پایانی خام 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
مثالهای ورودی/خروجی (I/O examples)
ارسال خروجی به دستگاه پیشفرض (بدون ذکر -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
محیط (ENVIRONMENT)
متغیرهای محیطی زیر پشتیبانی میشوند:
- NO_COLOR
- بهطور پیشفرض، رنگیسازی ترمینال بهصورت خودکار تشخیص داده میشود. این متغیر محیطی میتواند برای غیرفعال کردن رنگیسازی ترمینال روی یک رشته غیرخالی تنظیم شود. اولویت آن از گزینه --color کمتر است.
- FORCE_COLOR
- بهطور پیشفرض، رنگیسازی ترمینال بهصورت خودکار تشخیص داده میشود. این متغیر محیطی میتواند روی یک عدد صحیح مثبت تنظیم شود تا رنگیسازی ترمینال فعال/اجباری شود. اولویت آن از متغیر NO_COLOR و گزینه --color کمتر است.
همچنین ببینید (SEE ALSO)
roc-send(1)، و وبسایت Roc در https://roc-streaming.org
گزارش باگها (BUGS)
لطفاً هرگونه باگ پیدا شده را از طریق GitHub گزارش دهید (https://github.com/roc-streaming/roc-toolkit).
نویسندگان (AUTHORS)
برای دیدن فهرست نگهدارندهها و مشارکتکنندگان، صفحه نویسندگان را در وبسایت ببینید (https://roc-streaming.org/toolkit/docs/about_project/authors.html).
کپیرایت و تکثیر (COPYRIGHT)
2024، نویسندگان Roc Streaming
| 2024 | Roc Toolkit 0.4 |