-
Notifications
You must be signed in to change notification settings - Fork 46
/
default.example.yml
229 lines (223 loc) · 7.57 KB
/
default.example.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
kurento:
- ip: ""
url: ws://127.0.0.1:8888/kurento
# mediaType: (main|audio|content)
ipClassMappings:
local:
private:
public:
options:
failAfter: 5
request_timeout: 30000
response_timeout: 30000
# Number of attemps of connecting to the configured kurento instances the first
# time. Infinity means it tries forever until it's able to connect. Default is Infinity.
kurentoStartupRetries: Infinity
# Whether to allow Kurento to process mDNS ICE candidates
kurentoAllowMDNSCandidates: false
# Whether to track KMS's ICE state changes for every peer.
# Disabled by default for now until we trace the perf. impact of it
kurentoTrackIceStateChanges: false
# balancing-strategy: can be either ROUND_ROBIN or MEDIA_TYPE. The MEDIA_TYPE only
# works properly if you annotated the configured kurento instances in the
# 'kurento' config parameter with a mediaType field (main|audio|content) which
# will specify what will each server handle. Default is ROUND_ROBIN
balancing-strategy: ROUND_ROBIN
video-transposing-ceiling: 50
audio-transposing-ceiling: 100
acceptSelfSignedCertificate: false
redisHost: 127.0.0.1
redisPort: "6379"
# Uncomment to set a password if Redis requires auth.
# redisPassword: foobared
clientPort: "3008"
clientHost: 127.0.0.1
mediaFlowTimeoutDuration: 30000
mediaStateTimeoutDuration: 30000
requestQueueTimeout: 30000
screenshareSubscriberSpecSlave: false
screensharePlayStartEnabled: true
screenshareServerSideAkkaBroadcast: true
videoSubscriberSpecSlave: false
# Following three configurations: see media-server-adapters config
# to get a list of implemented adapters. The configuration values
# here are the adapter's name of choice
videoMediaServer: Kurento
screenshareMediaServer: Kurento
audioMediaServer: Kurento
# Whether to record screen raw files
recordScreenSharing: true
# Whether to record camera raw files
recordWebcams: true
# Base path where recording raw files will be stored
recordingBasePath: file:///var/kurento
# The base recording profile for video and screen sharing
# WEBM_VIDEO_ONLY|WEBM_AUDIO_ONLY|WEBM_FULL
recordingMediaProfile: WEBM_VIDEO_ONLY
# The base recording container format.
# webm|mp4
recordingFormat: webm
# Recording event keys expiry time in Redis
# 14 days is the default
redisExpireTime: 1209600
# mcs-core entrypoint configured on nginx
mcs-path: /mcs
mcs-port: 3010
mcs-host: 127.0.0.1
mcs-address: localhost
mcs-ws-timeout: 30000
freeswitch:
ip: 127.0.0.1
sip_ip: 127.0.0.1
port: 5066
esl_ip: 127.0.0.1
esl_port: 8021
handleExternalConnections: false
ipClassMappings:
local:
private:
public:
log:
filename: /var/log/bbb-webrtc-sfu/bbb-webrtc-sfu.log
level: info
stdout: true
modules:
- path: ./lib/mcs-core/process.js
name: core
dedicated: true
# IPC can be either native|redis right now. Defaults to native
ipc:
mode: native
options:
# inboundChannel: to-mcs-core
# outboundChannel: from-mcs-core
- path: ./lib/screenshare/ScreenshareProcess.js
name: screenshare
dedicated: true
ipc:
mode: native
options:
# inboundChannel: to-sfu-screenshare
# outboundChannel: from-sfu-screenshare
- path: ./lib/video/VideoProcess.js
name: video
dedicated: true
ipc:
mode: native
options:
# inboundChannel: to-sfu-video
# outboundChannel: from-sfu-video
- path: ./lib/audio/AudioProcess.js
name: audio
dedicated: true
ipc:
mode: native
options:
# inboundChannel: to-sfu-audio
# outboundChannel: from-sfu-audio
# media-server-adapters: path could refer to a npm module
media-server-adapters:
- path: kurento/kurento.js
name: Kurento
- path: freeswitch/freeswitch.js
name: Freeswitch
# strategies: path could refer to a npm module
strategies:
#- path: ./voice-switching-handler.js
# name: VOICE_SWITCHING
# Codec values (codec_video_main, codec_video_content, codec_audio):
# it'll force the specified codec.
# Put the 'ANY' value to prevent forcing a specific codec without the _priority options.
# For the 'ANY' option, there's a trio of optional configuration where you are
# able to specify the priority codec to force in a lenient way (codec_*_priority).
# If codec_*_priority is undefined or not found in the media description,
# no specific codec will be forced (base ANY behaviour).
# If the priority codec is found in the media description, any codec
# that doesn't match it will be filtered out (ie it will act as if the priority
# codec was forced).
# If you wanna add other codecs (e.g.: VP9)
# add it to the list with its specifiers. If the codec isn't in the list,
# it'll default to the specifier values in codec_*_priority OR VP8,
# but still force the entered codec option.
# P.S.: _video_main refers to webcam/main video content, _video_content refers to
# screenshare/content:slides streams.
conference-media-specs:
codec_video_main: VP8
codec_video_main_priority: VP8
codec_video_content: VP8
codec_video_content_priority: VP8
codec_audio: ANY
codec_audio_priority: OPUS
H264:
profile_level_id: "42e01f"
packetization_mode: "1"
level_asymmetry_allowed: "1"
tias_main: "300000"
as_main: "300"
tias_content: "1500000"
as_content: "1500"
max_mbps_main: "0"
max_fs_main: "0"
max_br_main: "0"
max_mbps_content: "0"
max_fs_content: "12288"
max_br_content: "0"
VP8:
tias_main: "300000"
as_main: "300"
tias_content: "1500000"
as_content: "1500"
OPUS:
useinbandfec: "1"
maxaveragebitrate: "30000"
maxplaybackrate: "48000"
ptime: "20"
minptime: "10"
maxptime: "40"
kurentoRembParams:
rembOnConnect: 300
upLosses: 12
decrementFactor: 0.5
thresholdFactor: 0.8
# Munges/removes the SDP REMB rtcp-fb support attribute (ie tries to disable REMB)
kurentoRemoveRembRtcpFb: false
# kurentoAllowedCandidateIps: optional configuration. List of VALID IPs to be used
# to define valid outbound ICE candidates.
# This is a short-term optimization to reduce the number of candidates sent to
# the client by filtering out anything that isn't in this list
kurentoAllowedCandidateIps:
#- <ipv4|ipv6>
# mediaThresholds: mandatory configuration. Establishes type-agnostic media thresholds
# that when hit will make the server refuse to negotiate new medias.
# Any attemps to inject medias past the thresholds will return an error with code
# 2002 and message MEDIA_SERVER_NO_RESOURCES.
# The threshold priority order is global -> perRoom -> perUser. Value 0 means unlimited
# (default). An optional API parameter may be sent on pub/sub calls (ignoreThresholds)
# to make the media ignore the configured thresholds. This is used here for recording
# and audio medias.
mediaThresholds:
global: 0
perRoom: 0
perUser: 0
# Whether to allow duplicate externalUserId's on join. If allowed, join requests with
# a externalUserId specified in the optional parameters will associate the new connection
# with a pre-existing user (if it exists), or create a new one.
# This will create a new virtual link between the request
# and the pre-existing user with a unique internal user ID. The user will be
# cleared from the system when a leave call for it is sent OR it has the autoLeave
# optional parameter set to true and all of its medias were cleared
allowDuplicateExtUserId: true
ejectOnUserLeft: true
permissionProbes: true
# Direct Prometheus instrumentation. Currently operating only over mcs-core.
# EXPERIMENTAL, so disabled by default.
prometheus:
enabled: false
# Scrape route host
host: localhost
# Scrape route port
port: 3014
# Metrics endpoint path
path: '/metrics'
# Whether default metrics for Node.js processes should be exported
collectDefaultMetrics: false