Extends
Members
(static) constructorParams
Properties:
Name | Type | Attributes | Description |
---|---|---|---|
certificateKeyType |
module:elements/complexTypes.CertificateKeyType |
<optional> |
Define the type of the certificate used in dtls |
mediaPipeline |
module:core.MediaPipeline | the MediaPipeline to which the endpoint belongs | |
recvonly |
external:Boolean |
<optional> |
Single direction, receive-only endpoint |
sendonly |
external:Boolean |
<optional> |
Single direction, send-only endpoint |
useDataChannels |
external:Boolean |
<optional> |
Activate data channels support |
(static) events
Methods
(static) addIceCandidate(candidate, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
candidate |
module:elements/complexTypes.IceCandidate | Remote ICE candidate | |
callback |
module:elements.WebRtcEndpoint~addIceCandidateCallback |
<optional> |
Returns:
- Type
- external:Promise
(static) closeDataChannel(channelId, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
channelId |
external:Integer | The channel identifier | |
callback |
module:elements.WebRtcEndpoint~closeDataChannelCallback |
<optional> |
Returns:
- Type
- external:Promise
(static) createDataChannel(labelopt, orderedopt, maxPacketLifeTimeopt, maxRetransmitsopt, protocolopt, callbackopt) → {external:Promise}
Being supported means that the WebRtcEndpoint has been created with data channel support, the client also supports data channels, and they have been negotiated in the SDP exchange. Otherwise, the method throws an exception, indicating that the operation is not possible.
Data channels can work in either unreliable mode (analogous to User Datagram Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol or TCP). The two modes have a simple distinction:
- Reliable mode guarantees the transmission of messages and also the order in which they are delivered. This takes extra overhead, thus potentially making this mode slower.
- Unreliable mode does not guarantee every message will get to the other side nor what order they get there. This removes the overhead, allowing this mode to work much faster.
If data channels are not supported, this method throws an exception.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
label |
external:String |
<optional> |
Channel's label |
ordered |
external:Boolean |
<optional> |
If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. |
maxPacketLifeTime |
external:Integer |
<optional> |
The time window (in milliseconds) during which transmissions and
retransmissions may take place in unreliable mode.
Note that this forces unreliable mode, even if ordered has been |
maxRetransmits |
external:Integer |
<optional> |
maximum number of retransmissions that are attempted in unreliable mode.
Note that this forces unreliable mode, even if ordered has been |
protocol |
external:String |
<optional> |
Name of the subprotocol used for data communication |
callback |
module:elements.WebRtcEndpoint~createDataChannelCallback |
<optional> |
Returns:
- Type
- external:Promise
(static) gatherCandidates(callbackopt) → {external:Promise}
It must be called after SdpEndpoint::generateOffer
or
SdpEndpoint::processOffer
for Trickle ICE. If
invoked before generating or processing an SDP offer, the candidates
gathered
will be added to the SDP processed.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~gatherCandidatesCallback |
<optional> |
Returns:
- Type
- external:Promise
getChildren(callbackopt) → {external:Promise}
MediaObject
.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getChildrenCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getChilds(callbackopt) → {external:Promise}
MediaObject
.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getChildsCallback |
<optional> |
- Inherited From:
- Deprecated:
- Use children instead.
- Source:
Returns:
- Type
- external:Promise
getConnectionState(callbackopt) → {external:Promise}
- CONNECTED
- DISCONNECTED
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getConnectionStateCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getCreationTime(callbackopt) → {external:Promise}
MediaObject
creation time in seconds since Epoch.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getCreationTimeCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getExternalAddress(callbackopt) → {external:Promise}
Forces all local IPv4 and IPv6 ICE candidates to have the given address. This is really nothing more than a hack, but it's very effective to force a public IP address when one is known in advance for the media server. In doing so, KMS will not need a STUN or TURN server, but remote peers will still be able to contact it.
You can try using this setting if KMS is deployed on a publicly accessible server, without NAT, and with a static public IP address. But if it doesn't work for you, just go back to configuring a STUN or TURN server for ICE.
Only set this parameter if you know what you're doing, and you understand 100% WHY you need it. For the majority of cases, you should just prefer to configure a STUN or TURN server.
externalAddress
is a single IPv4 or IPv6 address.
Examples:
externalAddress=198.51.100.1
externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getExternalAddressCallback |
<optional> |
- Deprecated:
- Use
externalIPv4
and/orexternalIPv6
instead.
- Use
- Source:
Returns:
- Type
- external:Promise
getExternalIPv4(callbackopt) → {external:Promise}
Forces all local IPv4 ICE candidates to have the given address. This is really nothing more than a hack, but it's very effective to force a public IP address when one is known in advance for the media server. In doing so, KMS will not need a STUN or TURN server, but remote peers will still be able to contact it.
You can try using this setting if KMS is deployed on a publicly accessible server, without NAT, and with a static public IP address. But if it doesn't work for you, just go back to configuring a STUN or TURN server for ICE.
Only set this parameter if you know what you're doing, and you understand 100% WHY you need it. For the majority of cases, you should just prefer to configure a STUN or TURN server.
externalIPv4
is a single IPv4 address.
Example:
externalIPv4=198.51.100.1
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getExternalIPv4Callback |
<optional> |
Returns:
- Type
- external:Promise
getExternalIPv6(callbackopt) → {external:Promise}
Forces all local IPv6 ICE candidates to have the given address. This is really nothing more than a hack, but it's very effective to force a public IP address when one is known in advance for the media server. In doing so, KMS will not need a STUN or TURN server, but remote peers will still be able to contact it.
You can try using this setting if KMS is deployed on a publicly accessible server, without NAT, and with a static public IP address. But if it doesn't work for you, just go back to configuring a STUN or TURN server for ICE.
Only set this parameter if you know what you're doing, and you understand 100% WHY you need it. For the majority of cases, you should just prefer to configure a STUN or TURN server.
externalIPv6
is a single IPv6 address.
Example:
externalIPv6=2001:0db8:85a3:0000:0000:8a2e:0370:7334
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getExternalIPv6Callback |
<optional> |
Returns:
- Type
- external:Promise
getICECandidatePairs(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getICECandidatePairsCallback |
<optional> |
Returns:
- Type
- external:Promise
getIceConnectionState(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getIceConnectionStateCallback |
<optional> |
Returns:
- Type
- external:Promise
getMaxAudioRecvBandwidth(callbackopt) → {external:Promise}
This is used to put a limit on the bitrate that the remote peer will send
to
this endpoint. The net effect of setting this parameter is that
when Kurento generates an SDP Offer, an 'Application Specific' (AS)
maximum bandwidth attribute will be added to the SDP media section:
b=AS:{value}
.
Note: This parameter has to be set before the SDP is generated.
- Unit: kbps (kilobits per second).
- Default: 0.
- 0 = unconstrained.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.SdpEndpoint~getMaxAudioRecvBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMaxOuputBitrate(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaElement~getMaxOuputBitrateCallback |
<optional> |
- Inherited From:
- Deprecated:
- Deprecated due to a typo. Use module:core/abstracts.MediaElement#maxOutputBitrate instead of this function.
- Source:
Returns:
- Type
- external:Promise
getMaxOutputBitrate(callbackopt) → {external:Promise}
- Unit: bps (bits per second).
- Default: MAXINT.
- 0 = unlimited.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaElement~getMaxOutputBitrateCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMaxVideoRecvBandwidth(callbackopt) → {external:Promise}
This is used to put a limit on the bitrate that the remote peer will send
to
this endpoint. The net effect of setting this parameter is that
when Kurento generates an SDP Offer, an 'Application Specific' (AS)
maximum bandwidth attribute will be added to the SDP media section:
b=AS:{value}
.
Note: This parameter has to be set before the SDP is generated.
- Unit: kbps (kilobits per second).
- Default: 0.
- 0 = unconstrained.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.SdpEndpoint~getMaxVideoRecvBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMaxVideoSendBandwidth(callbackopt) → {external:Promise}
With this parameter you can control the maximum video quality that will be sent when reacting to good network conditions. Setting this parameter to a high value permits the video quality to raise when the network conditions get better.
This parameter provides a way to limit the bitrate requested by remote REMB bandwidth estimations: the bitrate sent will be always equal or less than this parameter, even if the remote peer requests higher bitrates.
Note that the default value of 500 kbps is a VERY conservative one, and leads to a low maximum video quality. Most applications will probably want to increase this parameter to higher values such as 2000 mbps) or even 10000 (10 mbps).
The REMB congestion control algorithm works by gradually increasing the
output
video bitrate, until the available bandwidth is fully used or the maximum
send
bitrate has been reached. This is a slow, progressive change, which starts
at
300 kbps by default. You can change the default starting point of REMB
estimations, by setting RembParams.rembOnConnect
.
- Unit: kbps (kilobits per second).
- Default: 500.
-
0 = unconstrained: the video bitrate will grow until all the available
network bandwidth is used by the stream.
Note that this might have a bad effect if more than one stream is running (as all of them would try to raise the video bitrate indefinitely, until the network gets saturated).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getMaxVideoSendBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMediaPipeline(callbackopt) → {external:Promise}
MediaObject
belongs. It returns itself when invoked for a
pipeline object.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getMediaPipelineCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMediaState(callbackopt) → {external:Promise}
- CONNECTED: There is an RTCP flow.
- DISCONNECTED: No RTCP packets have been received for at least 5 sec.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getMediaStateCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMinOuputBitrate(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaElement~getMinOuputBitrateCallback |
<optional> |
- Inherited From:
- Deprecated:
- Deprecated due to a typo. Use module:core/abstracts.MediaElement#minOutputBitrate instead of this function.
- Source:
Returns:
- Type
- external:Promise
getMinOutputBitrate(callbackopt) → {external:Promise}
- Unit: bps (bits per second).
- Default: 0.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaElement~getMinOutputBitrateCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMinVideoRecvBandwidth(callbackopt) → {external:Promise}
This is used to set a minimum value of local REMB during bandwidth estimation, if supported by the implementing class. The REMB estimation will then be sent to remote peers, requesting them to send at least the indicated video bitrate. It follows that min values will only have effect in remote peers that support this congestion control mechanism, such as Chrome.
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The absolute minimum REMB value is 30 kbps, even if a lower value is set here.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getMinVideoRecvBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMinVideoSendBandwidth(callbackopt) → {external:Promise}
With this parameter you can control the minimum video quality that will be sent when reacting to bad network conditions. Setting this parameter to a low value permits the video quality to drop when the network conditions get worse.
This parameter provides a way to override the bitrate requested by remote REMB bandwidth estimations: the bitrate sent will be always equal or greater than this parameter, even if the remote peer requests even lower bitrates.
Note that if you set this parameter too high (trying to avoid bad video quality altogether), you would be limiting the adaptation ability of the congestion control algorithm, and your stream might be unable to ever recover from adverse network conditions.
- Unit: kbps (kilobits per second).
- Default: 100.
- 0 = unconstrained: the video bitrate will drop as needed, even to the lowest possible quality, which might make the video completely blurry and pixelated.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getMinVideoSendBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getMtu(callbackopt) → {external:Promise}
This setting affects the maximum size that will be used by RTP payloads. You can change it from the default, if you think that a different value would be beneficial for the typical network settings of your application.
The default value is 1200 Bytes. This is the same as in libwebrtc (from webrtc.org), as used by Firefox or Chrome . You can read more about this value in Why RTP max packet size is 1200 in WebRTC? .
WARNING: Change this value ONLY if you really know what you are doing and you have strong reasons to do so. Do NOT change this parameter just because it seems to work better for some reduced scope tests. The default value is a consensus chosen by people who have deep knowledge about network optimization.
- Unit: Bytes.
- Default: 1200.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getMtuCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getName(callbackopt) → {external:Promise}
MediaObject
's name.
This is just sugar to simplify developers' life debugging, it is not used internally for indexing nor identifying the objects. By default, it's the object's ID.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getNameCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getNetworkInterfaces(callbackopt) → {external:Promise}
If you know which network interfaces should be used to perform ICE (for WebRTC connectivity), you can define them here. Doing so has several advantages:
- The WebRTC ICE gathering process will be much quicker. Normally, it needs gather local candidates for all of the network interfaces, but this step can be made faster if you limit it to only the interface that you know will work.
-
It will ensure that the media server always decides to use the correct
network interface. With WebRTC ICE gathering it's possible that, under
some
circumstances (in systems with virtual network interfaces such as
docker0
) the ICE process ends up choosing the wrong local IP.
networkInterfaces
is a comma-separated list of network
interface
names.
Examples:
networkInterfaces=eth0
networkInterfaces=eth0,enp0s25
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getNetworkInterfacesCallback |
<optional> |
Returns:
- Type
- external:Promise
getParent(callbackopt) → {external:Promise}
MediaObject
.
The parent of a Hub or a MediaElement is its MediaPipeline. A MediaPipeline has no parent, so this property will be null.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getParentCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getRembParams(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.BaseRtpEndpoint~getRembParamsCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getSendTagsInEvents(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:core/abstracts.MediaObject~getSendTagsInEventsCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
getStunServerAddress(callbackopt) → {external:Promise}
The ICE process uses STUN to punch holes through NAT firewalls.
stunServerAddress
MUST be an IP address; domain names are NOT
supported.
You need to use a well-working STUN server. Use this to check if it
works:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
srflx).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getStunServerAddressCallback |
<optional> |
Returns:
- Type
- external:Promise
getStunServerPort(callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getStunServerPortCallback |
<optional> |
Returns:
- Type
- external:Promise
getTurnUrl(callbackopt) → {external:Promise}
When STUN is not enough to open connections through some NAT firewalls, using TURN is the remaining alternative.
Note that TURN is a superset of STUN, so you don't need to configure STUN if you are using TURN.
The provided URL should follow one of these formats:
user:password@ipaddress:port
-
user:password@ipaddress:port?transport=[udp|tcp|tls]
ipaddress
MUST be an IP address; domain names are NOT
supported.
transport
is OPTIONAL. Possible values: udp, tcp, tls.
Default: udp.
You need to use a well-working TURN server. Use this to check if it
works:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
srflx) AND one Relay Candidate (type relay
).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
callback |
module:elements.WebRtcEndpoint~getTurnUrlCallback |
<optional> |
Returns:
- Type
- external:Promise
setExternalAddress(externalAddress, callbackopt) → {external:Promise}
Forces all local IPv4 and IPv6 ICE candidates to have the given address. This is really nothing more than a hack, but it's very effective to force a public IP address when one is known in advance for the media server. In doing so, KMS will not need a STUN or TURN server, but remote peers will still be able to contact it.
You can try using this setting if KMS is deployed on a publicly accessible server, without NAT, and with a static public IP address. But if it doesn't work for you, just go back to configuring a STUN or TURN server for ICE.
Only set this parameter if you know what you're doing, and you understand 100% WHY you need it. For the majority of cases, you should just prefer to configure a STUN or TURN server.
externalAddress
is a single IPv4 or IPv6 address.
Examples:
externalAddress=198.51.100.1
externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
externalAddress |
external:String | ||
callback |
module:elements.WebRtcEndpoint~setExternalAddressCallback |
<optional> |
- Deprecated:
- Use
externalIPv4
and/orexternalIPv6
instead.
- Use
- Source:
Returns:
- Type
- external:Promise
setExternalIPv4(externalIPv4, callbackopt) → {external:Promise}
Forces all local IPv4 ICE candidates to have the given address. This is really nothing more than a hack, but it's very effective to force a public IP address when one is known in advance for the media server. In doing so, KMS will not need a STUN or TURN server, but remote peers will still be able to contact it.
You can try using this setting if KMS is deployed on a publicly accessible server, without NAT, and with a static public IP address. But if it doesn't work for you, just go back to configuring a STUN or TURN server for ICE.
Only set this parameter if you know what you're doing, and you understand 100% WHY you need it. For the majority of cases, you should just prefer to configure a STUN or TURN server.
externalIPv4
is a single IPv4 address.
Example:
externalIPv4=198.51.100.1
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
externalIPv4 |
external:String | ||
callback |
module:elements.WebRtcEndpoint~setExternalIPv4Callback |
<optional> |
Returns:
- Type
- external:Promise
setExternalIPv6(externalIPv6, callbackopt) → {external:Promise}
Forces all local IPv6 ICE candidates to have the given address. This is really nothing more than a hack, but it's very effective to force a public IP address when one is known in advance for the media server. In doing so, KMS will not need a STUN or TURN server, but remote peers will still be able to contact it.
You can try using this setting if KMS is deployed on a publicly accessible server, without NAT, and with a static public IP address. But if it doesn't work for you, just go back to configuring a STUN or TURN server for ICE.
Only set this parameter if you know what you're doing, and you understand 100% WHY you need it. For the majority of cases, you should just prefer to configure a STUN or TURN server.
externalIPv6
is a single IPv6 address.
Example:
externalIPv6=2001:0db8:85a3:0000:0000:8a2e:0370:7334
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
externalIPv6 |
external:String | ||
callback |
module:elements.WebRtcEndpoint~setExternalIPv6Callback |
<optional> |
Returns:
- Type
- external:Promise
setMaxAudioRecvBandwidth(maxAudioRecvBandwidth, callbackopt) → {external:Promise}
This is used to put a limit on the bitrate that the remote peer will send
to
this endpoint. The net effect of setting this parameter is that
when Kurento generates an SDP Offer, an 'Application Specific' (AS)
maximum bandwidth attribute will be added to the SDP media section:
b=AS:{value}
.
Note: This parameter has to be set before the SDP is generated.
- Unit: kbps (kilobits per second).
- Default: 0.
- 0 = unconstrained.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
maxAudioRecvBandwidth |
external:Integer | ||
callback |
module:core/abstracts.SdpEndpoint~setMaxAudioRecvBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMaxOuputBitrate(maxOuputBitrate, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
maxOuputBitrate |
external:Integer | ||
callback |
module:core/abstracts.MediaElement~setMaxOuputBitrateCallback |
<optional> |
- Inherited From:
- Deprecated:
- Deprecated due to a typo. Use module:core/abstracts.MediaElement#maxOutputBitrate instead of this function.
- Source:
Returns:
- Type
- external:Promise
setMaxOutputBitrate(maxOutputBitrate, callbackopt) → {external:Promise}
- Unit: bps (bits per second).
- Default: MAXINT.
- 0 = unlimited.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
maxOutputBitrate |
external:Integer | ||
callback |
module:core/abstracts.MediaElement~setMaxOutputBitrateCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMaxVideoRecvBandwidth(maxVideoRecvBandwidth, callbackopt) → {external:Promise}
This is used to put a limit on the bitrate that the remote peer will send
to
this endpoint. The net effect of setting this parameter is that
when Kurento generates an SDP Offer, an 'Application Specific' (AS)
maximum bandwidth attribute will be added to the SDP media section:
b=AS:{value}
.
Note: This parameter has to be set before the SDP is generated.
- Unit: kbps (kilobits per second).
- Default: 0.
- 0 = unconstrained.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
maxVideoRecvBandwidth |
external:Integer | ||
callback |
module:core/abstracts.SdpEndpoint~setMaxVideoRecvBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMaxVideoSendBandwidth(maxVideoSendBandwidth, callbackopt) → {external:Promise}
With this parameter you can control the maximum video quality that will be sent when reacting to good network conditions. Setting this parameter to a high value permits the video quality to raise when the network conditions get better.
This parameter provides a way to limit the bitrate requested by remote REMB bandwidth estimations: the bitrate sent will be always equal or less than this parameter, even if the remote peer requests higher bitrates.
Note that the default value of 500 kbps is a VERY conservative one, and leads to a low maximum video quality. Most applications will probably want to increase this parameter to higher values such as 2000 mbps) or even 10000 (10 mbps).
The REMB congestion control algorithm works by gradually increasing the
output
video bitrate, until the available bandwidth is fully used or the maximum
send
bitrate has been reached. This is a slow, progressive change, which starts
at
300 kbps by default. You can change the default starting point of REMB
estimations, by setting RembParams.rembOnConnect
.
- Unit: kbps (kilobits per second).
- Default: 500.
-
0 = unconstrained: the video bitrate will grow until all the available
network bandwidth is used by the stream.
Note that this might have a bad effect if more than one stream is running (as all of them would try to raise the video bitrate indefinitely, until the network gets saturated).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
maxVideoSendBandwidth |
external:Integer | ||
callback |
module:core/abstracts.BaseRtpEndpoint~setMaxVideoSendBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMinOuputBitrate(minOuputBitrate, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
minOuputBitrate |
external:Integer | ||
callback |
module:core/abstracts.MediaElement~setMinOuputBitrateCallback |
<optional> |
- Inherited From:
- Deprecated:
- Deprecated due to a typo. Use module:core/abstracts.MediaElement#minOutputBitrate instead of this function.
- Source:
Returns:
- Type
- external:Promise
setMinOutputBitrate(minOutputBitrate, callbackopt) → {external:Promise}
- Unit: bps (bits per second).
- Default: 0.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
minOutputBitrate |
external:Integer | ||
callback |
module:core/abstracts.MediaElement~setMinOutputBitrateCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMinVideoRecvBandwidth(minVideoRecvBandwidth, callbackopt) → {external:Promise}
This is used to set a minimum value of local REMB during bandwidth estimation, if supported by the implementing class. The REMB estimation will then be sent to remote peers, requesting them to send at least the indicated video bitrate. It follows that min values will only have effect in remote peers that support this congestion control mechanism, such as Chrome.
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The absolute minimum REMB value is 30 kbps, even if a lower value is set here.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
minVideoRecvBandwidth |
external:Integer | ||
callback |
module:core/abstracts.BaseRtpEndpoint~setMinVideoRecvBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMinVideoSendBandwidth(minVideoSendBandwidth, callbackopt) → {external:Promise}
With this parameter you can control the minimum video quality that will be sent when reacting to bad network conditions. Setting this parameter to a low value permits the video quality to drop when the network conditions get worse.
This parameter provides a way to override the bitrate requested by remote REMB bandwidth estimations: the bitrate sent will be always equal or greater than this parameter, even if the remote peer requests even lower bitrates.
Note that if you set this parameter too high (trying to avoid bad video quality altogether), you would be limiting the adaptation ability of the congestion control algorithm, and your stream might be unable to ever recover from adverse network conditions.
- Unit: kbps (kilobits per second).
- Default: 100.
- 0 = unconstrained: the video bitrate will drop as needed, even to the lowest possible quality, which might make the video completely blurry and pixelated.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
minVideoSendBandwidth |
external:Integer | ||
callback |
module:core/abstracts.BaseRtpEndpoint~setMinVideoSendBandwidthCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setMtu(mtu, callbackopt) → {external:Promise}
This setting affects the maximum size that will be used by RTP payloads. You can change it from the default, if you think that a different value would be beneficial for the typical network settings of your application.
The default value is 1200 Bytes. This is the same as in libwebrtc (from webrtc.org), as used by Firefox or Chrome . You can read more about this value in Why RTP max packet size is 1200 in WebRTC? .
WARNING: Change this value ONLY if you really know what you are doing and you have strong reasons to do so. Do NOT change this parameter just because it seems to work better for some reduced scope tests. The default value is a consensus chosen by people who have deep knowledge about network optimization.
- Unit: Bytes.
- Default: 1200.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
mtu |
external:Integer | ||
callback |
module:core/abstracts.BaseRtpEndpoint~setMtuCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setName(name, callbackopt) → {external:Promise}
MediaObject
's name.
This is just sugar to simplify developers' life debugging, it is not used internally for indexing nor identifying the objects. By default, it's the object's ID.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
name |
external:String | ||
callback |
module:core/abstracts.MediaObject~setNameCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setNetworkInterfaces(networkInterfaces, callbackopt) → {external:Promise}
If you know which network interfaces should be used to perform ICE (for WebRTC connectivity), you can define them here. Doing so has several advantages:
- The WebRTC ICE gathering process will be much quicker. Normally, it needs gather local candidates for all of the network interfaces, but this step can be made faster if you limit it to only the interface that you know will work.
-
It will ensure that the media server always decides to use the correct
network interface. With WebRTC ICE gathering it's possible that, under
some
circumstances (in systems with virtual network interfaces such as
docker0
) the ICE process ends up choosing the wrong local IP.
networkInterfaces
is a comma-separated list of network
interface
names.
Examples:
networkInterfaces=eth0
networkInterfaces=eth0,enp0s25
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
networkInterfaces |
external:String | ||
callback |
module:elements.WebRtcEndpoint~setNetworkInterfacesCallback |
<optional> |
Returns:
- Type
- external:Promise
setRembParams(rembParams, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
rembParams |
module:core/complexTypes.RembParams | ||
callback |
module:core/abstracts.BaseRtpEndpoint~setRembParamsCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setSendTagsInEvents(sendTagsInEvents, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
sendTagsInEvents |
external:Boolean | ||
callback |
module:core/abstracts.MediaObject~setSendTagsInEventsCallback |
<optional> |
- Inherited From:
- Source:
Returns:
- Type
- external:Promise
setStunServerAddress(stunServerAddress, callbackopt) → {external:Promise}
The ICE process uses STUN to punch holes through NAT firewalls.
stunServerAddress
MUST be an IP address; domain names are NOT
supported.
You need to use a well-working STUN server. Use this to check if it
works:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
srflx).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
stunServerAddress |
external:String | ||
callback |
module:elements.WebRtcEndpoint~setStunServerAddressCallback |
<optional> |
Returns:
- Type
- external:Promise
setStunServerPort(stunServerPort, callbackopt) → {external:Promise}
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
stunServerPort |
external:Integer | ||
callback |
module:elements.WebRtcEndpoint~setStunServerPortCallback |
<optional> |
Returns:
- Type
- external:Promise
setTurnUrl(turnUrl, callbackopt) → {external:Promise}
When STUN is not enough to open connections through some NAT firewalls, using TURN is the remaining alternative.
Note that TURN is a superset of STUN, so you don't need to configure STUN if you are using TURN.
The provided URL should follow one of these formats:
user:password@ipaddress:port
-
user:password@ipaddress:port?transport=[udp|tcp|tls]
ipaddress
MUST be an IP address; domain names are NOT
supported.
transport
is OPTIONAL. Possible values: udp, tcp, tls.
Default: udp.
You need to use a well-working TURN server. Use this to check if it
works:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
srflx) AND one Relay Candidate (type relay
).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
turnUrl |
external:String | ||
callback |
module:elements.WebRtcEndpoint~setTurnUrlCallback |
<optional> |
Returns:
- Type
- external:Promise
Type Definitions
addIceCandidateCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
closeDataChannelCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
createDataChannelCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
gatherCandidatesCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
getExternalAddressCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:String |
getExternalIPv4Callback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:String |
getExternalIPv6Callback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:String |
getICECandidatePairsCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
module:elements/complexTypes.IceCandidatePair |
getIceConnectionStateCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
module:elements/complexTypes.IceConnection |
getNetworkInterfacesCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:String |
getStunServerAddressCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:String |
getStunServerPortCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:Integer |
getTurnUrlCallback(error, result)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error | |
result |
external:String |
setExternalAddressCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
setExternalIPv4Callback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
setExternalIPv6Callback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
setNetworkInterfacesCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
setStunServerAddressCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
setStunServerPortCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |
setTurnUrlCallback(error)
Parameters:
Name | Type | Description |
---|---|---|
error |
external:Error |