1ROC-SEND(1)                       Roc Toolkit                      ROC-SEND(1)
2
3
4

NAME

6       roc-send - send real-time audio
7

SYNOPSIS

9       roc-send OPTIONS
10

DESCRIPTION

12       Read  audio  stream  from an audio device or file and send it to remote
13       receiver.
14
15   Options
16       -h, --help
17              Print help and exit
18
19       -V, --version
20              Print version and exit
21
22       -v, --verbose
23              Increase verbosity level (may be used multiple times)
24
25       -L, --list-supported
26              list supported schemes and formats
27
28       -i,--input=IO_URI
29              Input file or device URI
30
31       --input-format=FILE_FORMAT
32              Force input file format
33
34       -s,--source=ENDPOINT_URI
35              Remote source endpoint
36
37       -r,--repair=ENDPOINT_URI
38              Remote repair endpoint
39
40       -c,--control=ENDPOINT_URI
41              Remote control endpoint
42
43       --nbsrc=INT
44              Number of source packets in FEC block
45
46       --nbrpr=INT
47              Number of repair packets in FEC block
48
49       --packet-length=STRING
50              Outgoing packet length, TIME units
51
52       --packet-limit=INT
53              Maximum packet size, in bytes
54
55       --frame-limit=INT
56              Maximum internal frame size, in bytes
57
58       --frame-length=TIME
59              Duration of the internal frames, TIME units
60
61       --rate=INT
62              Override input sample rate, Hz
63
64       --no-resampling
65              Disable resampling  (default=off)
66
67       --resampler-backend=ENUM
68              Resampler  backend    (possible   values="default",   "builtin",
69              "speex" default=`default')
70
71       --resampler-profile=ENUM
72              Resampler  profile  (possible values="low", "medium", "high" de‐
73              fault=`medium')
74
75       --interleaving
76              Enable packet interleaving  (default=off)
77
78       --poisoning
79              Enable uninitialized memory poisoning (default=off)
80
81       --profiling
82              Enable self profiling  (default=off)
83
84       --color=ENUM
85              Set colored  logging  mode  for  stderr  output  (possible  val‐
86              ues="auto", "always", "never" default=`auto')
87
88   Endpoint URI
89       --source,  --repair,  and --control options define network endpoints to
90       which to send the traffic.
91
92       ENDPOINT_URI should have the following form:
93
94       protocol://host[:port][/path][?query]
95
96       Examples:
97
98rtsp://localhost:123/path?query
99
100rtp+rs8m://localhost:123
101
102rtp://127.0.0.1:123
103
104rtp://[::1]:123
105
106rtcp://10.9.8.3:123
107
108       The list of supported protocols can be retrieved using --list-supported
109       option.
110
111       The host field should be either FQDN (domain name), or IPv4 address, or
112       IPv6 address in square brackets.
113
114       The port field can be omitted if the protocol  defines  standard  port.
115       Otherwise, it is mandatory.
116
117       The  path  and query fields are allowed only for protocols that support
118       them, e.g. for RTSP.
119
120       If FEC is enabled, a pair of a source and repair  endpoints  should  be
121       provided.  The  two  endpoints  should  use  compatible protocols, e.g.
122       rtp+rs8m:// for source endpoint, and rs8m:// for  repair  endpoint.  If
123       FEC is disabled, a single source endpoint should be provided.
124
125       Supported source and repair protocols:
126
127       • source rtp://, repair none (bare RTP without FEC)
128
129       • source rtp+rs8m://, repair rs8m:// (RTP with Reed-Solomon FEC)
130
131       • source rtp+ldpc://, repair ldpc:// (RTP with LDPC-Staircase FEC)
132
133       In  addition, it is recommended to provide control endpoint. It is used
134       to exchange non-media information used to identify session, carry feed‐
135       back,  etc. If no control endpoint is provided, session operates in re‐
136       duced fallback mode, which may be less robust and may not  support  all
137       features.
138
139       Supported control protocols:
140
141rtcp://
142
143   IO URI
144       --input  option  requires  a device or file URI in one of the following
145       forms:
146
147DEVICE_TYPE://DEVICE_NAME -- audio device
148
149DEVICE_TYPE://default -- default audio device for given device type
150
151file:///ABS/PATH -- absolute file path
152
153file://localhost/ABS/PATH -- absolute file  path  (alternative  form;
154         only "localhost" host is supported)
155
156file:/ABS/PATH -- absolute file path (alternative form)
157
158file:REL/PATH -- relative file path
159
160file://- -- stdin
161
162file:- -- stdin (alternative form)
163
164       Examples:
165
166pulse://default
167
168pulse://alsa_input.pci-0000_00_1f.3.analog-stereo
169
170alsa://hw:1,0
171
172file:///home/user/test.wav
173
174file://localhost/home/user/test.wav
175
176file:/home/user/test.wav
177
178file:./test.wav
179
180file:-
181
182       The  list  of supported schemes and file formats can be retrieved using
183       --list-supported option.
184
185       If the --input is omitted, the default driver and device are selected.
186
187       The --input-format option can be used to force the input  file  format.
188       If  it is omitted, the file format is auto-detected. This option is al‐
189       ways required when the input is stdin.
190
191       The path component of the provided URI is percent-decoded.  For  conve‐
192       nience,  unencoded characters are allowed as well, except that % should
193       be always encoded as %25.
194
195       For example, the file named /foo/bar%/[baz] may be specified using  ei‐
196       ther   of  the  following  URIs:  file:///foo%2Fbar%25%2F%5Bbaz%5D  and
197       file:///foo/bar%25/[baz].
198
199   Multiple slots
200       Multiple sets of endpoints can be specified to send media  to  multiple
201       addresses.
202
203       Such endpoint sets are called slots. All slots should have the same set
204       of endpoint types (source, repair, etc) and should use the same  proto‐
205       cols for them.
206
207   Time units
208       TIME should have one of the following forms:
209              123ns, 123us, 123ms, 123s, 123m, 123h
210

EXAMPLES

212   Endpoint examples
213       Send file to receiver with one bare RTP endpoint:
214
215          $ roc-send -vv -i file:./input.wav -s rtp://192.168.0.3:10001
216
217       Send file to receiver with two IPv4 source and repair endpoints:
218
219          $ roc-send -vv -i file:./input.wav -s rtp+rs8m://192.168.0.3:10001 -r rs8m://192.168.0.3:10002
220
221       Send file to receiver with two IPv6 source and repair endpoints:
222
223          $ roc-send -vv -i file:./input.wav -s rtp+rs8m://[2001:db8::]:10001 -r rs8m://[2001:db8::]:10002
224
225       Send  file to receiver with three IPv4 source, repair, and control end‐
226       points:
227
228          $ roc-send -vv -i file:./input.wav \
229              -s rtp+rs8m://192.168.0.3:10001 -r rs8m://192.168.0.3:10002 -c rtcp://192.168.0.3:10003
230
231       Send file to two receivers, each with three endpoints:
232
233          $ roc-send -vv \
234              -i file:./input.wav \
235              -s rtp+rs8m://192.168.0.3:10001 -r rs8m://192.168.0.3:10002 -c rtcp://192.168.0.3:10003 \
236              -s rtp+rs8m://198.214.0.7:10001 -r rs8m://198.214.0.7:10002 -c rtcp://198.214.0.7:10003
237
238   I/O examples
239       Capture sound from the default device (omit -i):
240
241          $ roc-send -vv -s rtp://192.168.0.3:10001
242
243       Capture sound from the default ALSA device:
244
245          $ roc-send -vv -s rtp://192.168.0.3:10001 -i alsa://default
246
247       Capture sound from a specific PulseAudio device:
248
249          $ roc-send -vv -s rtp://192.168.0.3:10001 -i pulse://alsa_input.pci-0000_00_1f.3.analog-stereo
250
251       Send WAV file, specify format manually:
252
253          $ roc-send -vv -s rtp://192.168.0.3:10001 -i file:./input --input-format wav
254
255       Send WAV from stdin:
256
257          $ roc-send -vv -s rtp://192.168.0.3:10001 -i file:- --input-format wav <./input.wav
258
259       Send WAV file, specify full URI:
260
261          $ roc-send -vv -s rtp://192.168.0.3:10001 -i file:///home/user/input.wav
262
263   Tuning examples
264       Force a specific rate on the input device:
265
266          $ roc-send -vv -s rtp://192.168.0.3:10001 --rate=44100
267
268       Select the LDPC-Staircase FEC scheme and a larger block size:
269
270          $ roc-send -vv -i file:./input.wav \
271              -s rtp+ldpc://192.168.0.3:10001 -r ldpc://192.168.0.3:10002 \
272              --nbsrc=1000 --nbrpr=500
273
274       Select resampler profile:
275
276          $ roc-send -vv -s rtp://192.168.0.3:10001 --resampler-profile=high
277

SEE ALSO

279       roc-recv(1), and the Roc web site at https://roc-streaming.org/
280

BUGS

282       Please     report     any     bugs     found     via     GitHub      (‐
283       https://github.com/roc-streaming/roc-toolkit/).
284

AUTHORS

286       See authors page on the website for a list of maintainers and contribu‐
287       tors.
288
290       2023, Roc Streaming authors
291
292
293
294
295Roc Toolkit 0.2                      2023                          ROC-SEND(1)
Impressum