1ROC-SEND(1) Roc Toolkit ROC-SEND(1)
2
3
4
6 roc-send - send real-time audio
7
9 roc-send OPTIONS
10
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
98 • rtsp://localhost:123/path?query
99
100 • rtp+rs8m://localhost:123
101
102 • rtp://127.0.0.1:123
103
104 • rtp://[::1]:123
105
106 • rtcp://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
141 • rtcp://
142
143 IO URI
144 --input option requires a device or file URI in one of the following
145 forms:
146
147 • DEVICE_TYPE://DEVICE_NAME -- audio device
148
149 • DEVICE_TYPE://default -- default audio device for given device type
150
151 • file:///ABS/PATH -- absolute file path
152
153 • file://localhost/ABS/PATH -- absolute file path (alternative form;
154 only "localhost" host is supported)
155
156 • file:/ABS/PATH -- absolute file path (alternative form)
157
158 • file:REL/PATH -- relative file path
159
160 • file://- -- stdin
161
162 • file:- -- stdin (alternative form)
163
164 Examples:
165
166 • pulse://default
167
168 • pulse://alsa_input.pci-0000_00_1f.3.analog-stereo
169
170 • alsa://hw:1,0
171
172 • file:///home/user/test.wav
173
174 • file://localhost/home/user/test.wav
175
176 • file:/home/user/test.wav
177
178 • file:./test.wav
179
180 • file:-
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
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
279 roc-recv(1), and the Roc web site at https://roc-streaming.org/
280
282 Please report any bugs found via GitHub (‐
283 https://github.com/roc-streaming/roc-toolkit/).
284
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)