| ROC-SEND(1) | Roc Toolkit | ROC-SEND(1) |
نام (NAME)
roc-send - ارسال بیدرنگ جریان صوتی
خلاصه دستور (SYNOPSIS)
roc-send گزینهها
توضیحات (DESCRIPTION)
خواندن جریان صوتی از یک دستگاه یا فایل صوتی و ارسال آن به گیرندهٔ دوردست.
گزینهها (OPTIONS)
- -h, --help
- نمایش راهنما و خروج
- -V, --version
- نمایش نسخه و خروج
- -v, --verbose
- افزایش سطح جزئیات گزارش (میتواند چندین بار استفاده شود)
- -L, --list-supported
- فهرست کردن طرحوارهها (schemes) و قالبهای پشتیبانیشده
- -i,--input=IO_URI
- نشانی URI فایل یا دستگاه ورودی
- --input-format=FILE_FORMAT
- اجبار قالب فایل ورودی
- -s,--source=ENDPOINT_URI
- نقطه پایانی (endpoint) منبع دوردست
- -r,--repair=ENDPOINT_URI
- نقطه پایانی ترمیم دوردست
- -c,--control=ENDPOINT_URI
- نقطه پایانی کنترل دوردست
- --reuseaddr
- فعالسازی SO_REUSEADDR هنگام اتصال (bind) سوکتها
- --target-latency=STRING
- تأخیر هدف، در واحدهای زمانی TIME
- --io-latency=STRING
- تأخیر هدف ضبط، در واحدهای زمانی TIME
- --latency-tolerance=STRING
- حداکثر انحراف مجاز از تأخیر هدف، در واحدهای زمانی TIME
- --nbsrc=INT
- تعداد بستههای منبع در بلوک FEC
- --nbrpr=INT
- تعداد بستههای ترمیم در بلوک FEC
- --packet-len=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
- نمایهٔ تنظیم تأخیر (مقادیر ممکن="responsive"، "gradual"، "intact"، پیشفرض=`intact')
- --resampler-backend=ENUM
- پشتانهٔ بازنمونهبردار (مقادیر ممکن="default"، "builtin"، "speex"، "speexdec"، پیشفرض=`default')
- --resampler-profile=ENUM
- نمایهٔ بازنمونهبردار (مقادیر ممکن="low"، "medium"، "high"، پیشفرض=`medium')
- --interleaving
- فعالسازی درهمبافی (interleaving) بستهها (پیشفرض=خاموش)
- --profiling
- فعالسازی پروفایلبندی درونی (پیشفرض=خاموش)
- --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://127.0.0.1:123
- rtp://[::1]:123
- rtcp://10.9.8.3:123
فهرست پروتکلهای پشتیبانیشده را میتوان با استفاده از گزینهٔ --list-supported دریافت کرد.
فیلد host باید یک FQDN (نام دامنه کامل)، نشانی IPv4، یا نشانی IPv6 درون قلابها (کروشهها) باشد.
اگر پروتکل درگاه پیشفرضی را تعریف کرده باشد، فیلد port میتواند حذف شود؛ در غیر این صورت، الزامی است.
فیلدهای path و query تنها برای پروتکلهایی مجاز هستند که از آنها پشتیبانی میکنند؛ برای نمونه RTSP.
اگر FEC فعال باشد، باید یک جفت نقطه پایانی مبدا (source) و تصحیح (repair) مشخص شود. این دو نقطه پایانی باید از پروتکلهای سازگار استفاده کنند؛ برای مثال rtp+rs8m:// برای نقطه پایانی مبدا، و rs8m:// برای نقطه پایانی تصحیح. اگر FEC غیرفعال باشد، باید تنها یک نقطه پایانی مبدا ارائه شود.
پروتکلهای مبدا و تصحیح پشتیبانیشده:
- مبدا rtp://، تصحیح none (RTP خام بدون FEC)
- مبدا rtp+rs8m://، تصحیح rs8m:// (RTP با Reed-Solomon FEC)
- مبدا rtp+ldpc://، تصحیح ldpc:// (RTP با LDPC-Staircase FEC)
علاوه بر این، پیشنهاد میشود که یک نقطه پایانی کنترلی مشخص شود. این نقطه برای تبادل دادههای غیررسانهای جهت شناسایی نشست، انتقال بازخورد و غیره به کار میرود. اگر هیچ نقطه پایانی کنترلی ارائه نشود، نشست در حالت تقلیلیافتهٔ جایگزین (fallback) کار میکند که ممکن است پایداری کمتری داشته باشد و از همهٔ قابلیتها پشتیبانی نکند.
پروتکلهای کنترلی پشتیبانیشده:
- •
- rtcp://
شناسه URI ورودی/خروجی (IO URI)
گزینهٔ --input نیازمند یک شناسه URI برای دستگاه یا فایل در یکی از قالبهای زیر است:
- DEVICE_TYPE://DEVICE_NAME -- دستگاه صوتی
- DEVICE_TYPE://default -- دستگاه صوتی پیشفرض برای نوع دستگاه مشخصشده
- file:///ABS/PATH -- مسیر مطلق فایل
- file://localhost/ABS/PATH -- مسیر مطلق فایل (حالت جایگزین؛ تنها میزبان "localhost" پشتیبانی میشود)
- file:/ABS/PATH -- مسیر مطلق فایل (حالت جایگزین)
- file:REL/PATH -- مسیر نسبی فایل
- file://- -- ورودی استاندارد (stdin)
- file:- -- ورودی استاندارد (stdin) (حالت جایگزین)
مثالها:
- pulse://default
- pulse://alsa_input.pci-0000_00_1f.3.analog-stereo
- alsa://hw:1,0
- file:///home/user/test.wav
- file://localhost/home/user/test.wav
- file:/home/user/test.wav
- file:./test.wav
- file:-
فهرست طرحوارهها (schemes) و قالبهای فایل پشتیبانیشده را میتوان با استفاده از گزینهٔ --list-supported دریافت کرد.
اگر گزینهٔ --input حذف شود، راهانداز (driver) و دستگاه پیشفرض انتخاب میشوند.
گزینهٔ --input-format میتواند برای اجبار قالب فایل ورودی به کار رود. اگر مشخص نشود، قالب فایل بهطور خودکار تشخیص داده میشود. این گزینه هنگامی که ورودی stdin باشد، همواره الزامی است.
بخش مسیر در URI ارائهشده، percent-decoded (رمزگشایی درصدی) میشود. برای راحتی، نویسههای کدگذارینشده نیز مجاز هستند، بهجز اینکه % باید همواره بهصورت %25 کدگذاری شود.
برای مثال، فایلی با نام /foo/bar%/[baz] میتواند با استفاده از هر یک از این URIها مشخص شود: file:///foo%2Fbar%25%2F%5Bbaz%5D و file:///foo/bar%25/[baz]..SS اسلاتهای چندگانه
میتوان چندین مجموعه از نقاط پایانی را برای ارسال رسانه به چندین نشانی مشخص کرد.
این مجموعههای نقاط پایانی، اسلات (slot) نامیده میشوند. تمامی اسلاتها باید دارای مجموعهای یکسان از انواع نقاط پایانی (source، repair و غیره) بوده و برای آنها از پروتکلهای یکسانی استفاده کنند.
SO_REUSEADDR
اگر گزینهٔ --reuseaddr مشخص شود، گزینهٔ سوکت SO_REUSEADDR برای تمام سوکتها فعال خواهد شد.
در TCP، این قابلیت امکان استفادهٔ مجدد و فوری از سوکت اخیراً بسته شده در وضعیت TIME_WAIT را فراهم میکند، که در صورت نیاز به راهاندازی سریع سرور میتواند مفید باشد.
در UDP، این قابلیت اجازه میدهد چندین فرایند به نشانی یکسانی متصل (bind) شوند، که در صورت استفاده از فعالسازی سوکت systemd میتواند کاربردی باشد.
صرفنظر از وضعیت این گزینه، SO_REUSEADDR هنگام اتصال به درگاه موقت (ephemeral port) همواره غیرفعال است.
واحدهای زمان
- TIME باید یکی از قالبهای زیر را داشته باشد:
- 123ns; 1.23us; 1.23ms; 1.23s; 1.23m; 1.23h;
واحدهای اندازه
- SIZE باید یکی از قالبهای زیر را داشته باشد:
- 123; 1.23K; 1.23M; 1.23G;
مثالها (EXAMPLES)
مثالهای نقطه پایانی
ارسال فایل به گیرنده با یک نقطه پایانی RTP ساده:
$ roc-send -vv -i file:./input.wav -s rtp://192.168.0.3:10001
ارسال فایل به گیرنده با نقاط پایانی منبع (source)، ترمیم (repair) و کنترل (control) مبتنی بر IPv4:
$ roc-send -vv -i file:./input.wav -s rtp+rs8m://192.168.0.3:10001 \
-r rs8m://192.168.0.3:10002 -c rtcp://192.168.0.3:10003
ارسال فایل به گیرنده با نقاط پایانی منبع (source)، ترمیم (repair) و کنترل (control) مبتنی بر IPv6:
$ roc-send -vv -i file:./input.wav -s rtp+rs8m://[2001:db8::]:10001 \
-r rs8m://[2001:db8::]:10002 -r rtcp://[2001:db8::]:10003
ارسال فایل به دو گیرنده، هر یک با سه نقطه پایانی:
$ roc-send -vv \
-i file:./input.wav \
-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):
$ roc-send -vv -s rtp://192.168.0.3:10001
ضبط صدا از دستگاه پیشفرض ALSA:
$ roc-send -vv -s rtp://192.168.0.3:10001 -i alsa://default
ضبط صدا از یک دستگاه مشخص PulseAudio:
$ roc-send -vv -s rtp://192.168.0.3:10001 -i pulse://alsa_input.pci-0000_00_1f.3.analog-stereo
ارسال فایل WAV (تشخیص قالب بر اساس پسوند):
$ roc-send -vv -s rtp://192.168.0.3:10001 -i file:./input.wav
ارسال فایل WAV (تعیین دستی قالب):
$ roc-send -vv -s rtp://192.168.0.3:10001 -i file:./input.file --input-format wav
ارسال WAV از stdin:
$ roc-send -vv -s rtp://192.168.0.3:10001 -i file:- --input-format wav <./input.wav
ارسال فایل WAV (تعیین مسیر مطلق):
$ roc-send -vv -s rtp://192.168.0.3:10001 -i file:///home/user/input.wav
اجبار یک نرخ مشخص برای دستگاه ورودی:
$ roc-send -vv -s rtp://192.168.0.3:10001 --rate=44100
انتخاب طرح FEC از نوع LDPC-Staircase و اندازه بلوک بزرگتر:
$ roc-send -vv -i file:./input.wav -s rtp+ldpc://192.168.0.3:10001 \
-r ldpc://192.168.0.3:10002 -c ldpc://192.168.0.3:10003 \
--nbsrc=1000 --nbrpr=500
انتخاب طول بسته کوچکتر:
$ roc-send -vv -i file:./input.wav -s rtp+ldpc://192.168.0.3:10001 \
--packet-len 2500us
انتخاب تاخیر I/O کمتر و طول فریم کوتاهتر:
$ roc-send -vv -s rtp://192.168.0.3:10001 \
--io-latency=20ms --frame-len 4ms
تعیین دستی پارامترهای نمونهبرداری مجدد (resampling):
$ roc-send -vv -s rtp://192.168.0.3:10001 \
--resampler-backend=speex --resampler-profile=high
انجام تنظیم تاخیر روی فرستنده به جای گیرنده:
$ roc-recv -vv -o pulse://default -s rtp+rs8m://0.0.0.0:10001 \
-r rs8m://0.0.0.0:10002 -c rtcp://0.0.0.0:10003 \
--latency-profile=intact --target-latency=200ms
$ roc-send -vv -i file:./input.wav -s rtp+rs8m://192.168.0.3:10001 \
-r rs8m://192.168.0.3:10002 -c rtcp://192.168.0.3:10003 \
--latency-profile=gradual --target-latency=200ms
متغیرهای محیطی زیر پشتیبانی میشوند:
- NO_COLOR
- بهطور پیشفرض، رنگآمیزی ترمینال بهصورت خودکار تشخیص داده میشود. این متغیر محیطی میتواند روی یک رشتهٔ غیرخالی تنظیم شود تا رنگآمیزی ترمینال غیرفعال گردد. تقدم آن از گزینهٔ --color کمتر است.
- FORCE_COLOR
- بهطور پیشفرض، رنگآمیزی ترمینال بهصورت خودکار تشخیص داده میشود. این متغیر محیطی میتواند روی یک عدد صحیح مثبت تنظیم شود تا رنگآمیزی ترمینال فعال/اجباری گردد. تقدم آن از متغیر NO_COLOR و گزینهٔ --color کمتر است.
همچنین ببینید (SEE ALSO)
roc-recv(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 |