Interface BaseRtpEndpoint
-
- All Superinterfaces:
Endpoint
,KurentoObject
,MediaElement
,MediaObject
,SdpEndpoint
,SessionEndpoint
- All Known Subinterfaces:
RtpEndpoint
,WebRtcEndpoint
public interface BaseRtpEndpoint extends SdpEndpoint
Base class for the implementation of RTP-based communication endpoints.All endpoints that rely on the RTP protocol, like the :rom:cls:`RtpEndpoint` or the :rom:cls:`WebRtcEndpoint`, inherit from this class. This endpoint provides information about the Connection state and the Media state, which can be consulted at any time through the
getMediaState()
and thegetConnectionState()
methods. It is also possible subscribe to events fired when these properties change:-
ConnectionStateChangedEvent
: This event is raised when the connection between two peers changes. It can have two values:- CONNECTED
- DISCONNECTED
-
MediaStateChangedEvent
: This event provides information about the state of the underlying RTP session. Possible values are:- CONNECTED: There is an RTCP packet flow between peers.
-
DISCONNECTED: Either no RTCP packets have been received yet, or the
remote peer has ended the RTP session with a
BYE
message, or at least 5 seconds have elapsed since the last RTCP packet was received.
The standard definition of RTP (RFC 3550) describes a session as active whenever there is a maintained flow of RTCP control packets, regardless of whether there is actual media flowing through RTP data packets or not. The reasoning behind this is that, at any given moment, a participant of an RTP session might temporarily stop sending RTP data packets, but this wouldn't necessarily mean that the RTP session as a whole is finished; it maybe just means that the participant has some temporary issues but it will soon resume sending data. For this reason, that an RTP session has really finished is something that is considered only by the prolonged absence of RTCP control packets between participants.
Since RTCP packets do not flow at a constant rate (for instance, minimizing a browser window with a WebRTC's
RTCPeerConnection
object might affect the sending interval), it is not possible to immediately detect their absence and assume that the RTP session has finished. Instead, there is a guard period of approximately 5 seconds of missing RTCP packets before considering that the underlying RTP session is effectively finished, thus triggering aMediaStateChangedEvent = DISCONNECTED
event.In other words, there is always a period during which there might be no media flowing, but this event hasn't been fired yet. Nevertheless, this is the most reliable and useful way of knowing what is the long-term, steady state of RTP media exchange.
The
ConnectionStateChangedEvent
comes in contrast with more instantaneous events such as MediaElement'sMediaFlowInStateChangedEvent
andMediaFlowOutStateChangedEvent
, which are triggered almost immediately after the RTP data packets stop flowing between RTP session participants. This makes the MediaFlow events a good way to know if participants are suffering from short-term intermittent connectivity issues, but they are not enough to know if the connectivity issues are just spurious network hiccups or are part of a more long-term disconnection problem.
Bitrate management
Bandwidth control for the video component of the media session is done here. Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 Mbps).
-
Recv bandwidth: Used to request a remote sender that its media
bitrate is within the requested range.
-
MinVideoRecvBandwidth: Minimum inbound bitrate
requested by this endpoint. Signaled to compatible WebRTC and RTP
senders, as part of the REMB bandwidth estimation protocol.
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
MaxAudioRecvBandwidth and
MaxVideoRecvBandwidth: Maximum inbound bitrate
requested by this endpoint. Signaled to compatible WebRTC and RTP
senders as part of Kurento's REMB bandwidth estimations, and also as an
SDP bitrate attribute (
b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers.- Unit: kbps (kilobits per second).
- Default: 0 (unlimited).
-
MinVideoRecvBandwidth: Minimum inbound bitrate
requested by this endpoint. Signaled to compatible WebRTC and RTP
senders, as part of the REMB bandwidth estimation protocol.
-
Send bandwidth: Used to control bitrate of the outbound media stream
sent to remote peers. It is important to keep in mind that outbound bitrate
ultimately depends on network and remote peer capabilities.
-
MinVideoSendBandwidth: Minimum outbound bitrate sent by
this endpoint.
- Unit: kbps (kilobits per second).
- Default: 100.
- 0 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
MaxVideoSendBandwidth: Maximum outbound bitrate sent by
this endpoint. Remote peers themselves might also announce a maximum
bitrate as part of their REMB bandwidth estimations, and also as an SDP
bitrate attribute (
b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.- Unit: kbps (kilobits per second).
- Default: 500.
-
0 = unlimited: 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).
- RembParams.rembOnConnect: Initial local REMB bandwidth estimation that gets used when a new endpoint is connected. Only useful for connections that are compatible with the REMB bandwidth estimation protocol (such as most WebRTC peers).
-
MinVideoSendBandwidth: Minimum outbound bitrate sent by
this endpoint.
All bandwidth control parameters must be set before the SDP negotiation takes place, and can't be modified afterwards.
Take into consideration that setting a too high upper limit for the output bandwidth can be a reason for the network connection to be congested quickly.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description ListenerSubscription
addConnectionStateChangedListener(EventListener<ConnectionStateChangedEvent> listener)
Add aEventListener
for eventConnectionStateChangedEvent
.void
addConnectionStateChangedListener(EventListener<ConnectionStateChangedEvent> listener, Continuation<ListenerSubscription> cont)
Add aEventListener
for eventConnectionStateChangedEvent
.ListenerSubscription
addMediaStateChangedListener(EventListener<MediaStateChangedEvent> listener)
Add aEventListener
for eventMediaStateChangedEvent
.void
addMediaStateChangedListener(EventListener<MediaStateChangedEvent> listener, Continuation<ListenerSubscription> cont)
Add aEventListener
for eventMediaStateChangedEvent
.ConnectionState
getConnectionState()
Get Connection state.void
getConnectionState(Continuation<ConnectionState> cont)
Get Connection state.TFuture<ConnectionState>
getConnectionState(Transaction tx)
Get Connection state.int
getMaxVideoSendBandwidth()
Get Maximum outbound bitrate sent by this endpoint.void
getMaxVideoSendBandwidth(Continuation<Integer> cont)
Get Maximum outbound bitrate sent by this endpoint.TFuture<Integer>
getMaxVideoSendBandwidth(Transaction tx)
Get Maximum outbound bitrate sent by this endpoint.MediaState
getMediaState()
Get Media flow state.void
getMediaState(Continuation<MediaState> cont)
Get Media flow state.TFuture<MediaState>
getMediaState(Transaction tx)
Get Media flow state.int
getMinVideoRecvBandwidth()
Get Minimum inbound bitrate requested by this endpoint.void
getMinVideoRecvBandwidth(Continuation<Integer> cont)
Get Minimum inbound bitrate requested by this endpoint.TFuture<Integer>
getMinVideoRecvBandwidth(Transaction tx)
Get Minimum inbound bitrate requested by this endpoint.int
getMinVideoSendBandwidth()
Get Minimum outbound bitrate sent by this endpoint.void
getMinVideoSendBandwidth(Continuation<Integer> cont)
Get Minimum outbound bitrate sent by this endpoint.TFuture<Integer>
getMinVideoSendBandwidth(Transaction tx)
Get Minimum outbound bitrate sent by this endpoint.int
getMtu()
Get Maximum Transmission Unit (MTU) used for RTP.void
getMtu(Continuation<Integer> cont)
Get Maximum Transmission Unit (MTU) used for RTP.TFuture<Integer>
getMtu(Transaction tx)
Get Maximum Transmission Unit (MTU) used for RTP.RembParams
getRembParams()
Get Advanced parameters to configure the congestion control algorithm.void
getRembParams(Continuation<RembParams> cont)
Get Advanced parameters to configure the congestion control algorithm.TFuture<RembParams>
getRembParams(Transaction tx)
Get Advanced parameters to configure the congestion control algorithm.void
removeConnectionStateChangedListener(ListenerSubscription listenerSubscription)
Remove aListenerSubscription
for eventConnectionStateChangedEvent
.void
removeConnectionStateChangedListener(ListenerSubscription listenerSubscription, Continuation<Void> cont)
Remove aListenerSubscription
for eventConnectionStateChangedEvent
.void
removeMediaStateChangedListener(ListenerSubscription listenerSubscription)
Remove aListenerSubscription
for eventMediaStateChangedEvent
.void
removeMediaStateChangedListener(ListenerSubscription listenerSubscription, Continuation<Void> cont)
Remove aListenerSubscription
for eventMediaStateChangedEvent
.void
requestKeyframe()
Force sending a new keyframe request to the upstream elements in the Kurento Pipeline, towards the associated producer.void
requestKeyframe(Continuation<Void> cont)
Asynchronous version of requestKeyframe:Continuation.onSuccess(F)
is called when the action is done.void
requestKeyframe(Transaction tx)
Force sending a new keyframe request to the upstream elements in the Kurento Pipeline, towards the associated producer.void
setMaxVideoSendBandwidth(int maxVideoSendBandwidth)
Set Maximum outbound bitrate sent by this endpoint.void
setMaxVideoSendBandwidth(int maxVideoSendBandwidth, Continuation<Void> cont)
Set Maximum outbound bitrate sent by this endpoint.void
setMaxVideoSendBandwidth(int maxVideoSendBandwidth, Transaction tx)
Set Maximum outbound bitrate sent by this endpoint.void
setMinVideoRecvBandwidth(int minVideoRecvBandwidth)
Set Minimum inbound bitrate requested by this endpoint.void
setMinVideoRecvBandwidth(int minVideoRecvBandwidth, Continuation<Void> cont)
Set Minimum inbound bitrate requested by this endpoint.void
setMinVideoRecvBandwidth(int minVideoRecvBandwidth, Transaction tx)
Set Minimum inbound bitrate requested by this endpoint.void
setMinVideoSendBandwidth(int minVideoSendBandwidth)
Set Minimum outbound bitrate sent by this endpoint.void
setMinVideoSendBandwidth(int minVideoSendBandwidth, Continuation<Void> cont)
Set Minimum outbound bitrate sent by this endpoint.void
setMinVideoSendBandwidth(int minVideoSendBandwidth, Transaction tx)
Set Minimum outbound bitrate sent by this endpoint.void
setMtu(int mtu)
Set Maximum Transmission Unit (MTU) used for RTP.void
setMtu(int mtu, Continuation<Void> cont)
Set Maximum Transmission Unit (MTU) used for RTP.void
setMtu(int mtu, Transaction tx)
Set Maximum Transmission Unit (MTU) used for RTP.void
setRembParams(RembParams rembParams)
Set Advanced parameters to configure the congestion control algorithm.void
setRembParams(RembParams rembParams, Continuation<Void> cont)
Set Advanced parameters to configure the congestion control algorithm.void
setRembParams(RembParams rembParams, Transaction tx)
Set Advanced parameters to configure the congestion control algorithm.-
Methods inherited from interface org.kurento.client.KurentoObject
addEventListener, invoke, isCommited, release, release, release, removeEventListener, waitCommited, whenCommited, whenCommited
-
Methods inherited from interface org.kurento.client.MediaElement
addElementConnectedListener, addElementConnectedListener, addElementDisconnectedListener, addElementDisconnectedListener, addMediaFlowInStateChangedListener, addMediaFlowInStateChangedListener, addMediaFlowOutStateChangedListener, addMediaFlowOutStateChangedListener, addMediaTranscodingStateChangedListener, addMediaTranscodingStateChangedListener, connect, connect, connect, connect, connect, connect, connect, connect, connect, connect, connect, connect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, disconnect, getEncoderBitrate, getEncoderBitrate, getEncoderBitrate, getGstreamerDot, getGstreamerDot, getGstreamerDot, getGstreamerDot, getGstreamerDot, getGstreamerDot, getMaxEncoderBitrate, getMaxEncoderBitrate, getMaxEncoderBitrate, getMinEncoderBitrate, getMinEncoderBitrate, getMinEncoderBitrate, getSinkConnections, getSinkConnections, getSinkConnections, getSinkConnections, getSinkConnections, getSinkConnections, getSinkConnections, getSinkConnections, getSinkConnections, getSourceConnections, getSourceConnections, getSourceConnections, getSourceConnections, getSourceConnections, getSourceConnections, getSourceConnections, getSourceConnections, getSourceConnections, getStats, getStats, getStats, getStats, getStats, getStats, isMediaFlowingIn, isMediaFlowingIn, isMediaFlowingIn, isMediaFlowingIn, isMediaFlowingIn, isMediaFlowingIn, isMediaFlowingOut, isMediaFlowingOut, isMediaFlowingOut, isMediaFlowingOut, isMediaFlowingOut, isMediaFlowingOut, isMediaTranscoding, isMediaTranscoding, isMediaTranscoding, isMediaTranscoding, isMediaTranscoding, isMediaTranscoding, removeElementConnectedListener, removeElementConnectedListener, removeElementDisconnectedListener, removeElementDisconnectedListener, removeMediaFlowInStateChangedListener, removeMediaFlowInStateChangedListener, removeMediaFlowOutStateChangedListener, removeMediaFlowOutStateChangedListener, removeMediaTranscodingStateChangedListener, removeMediaTranscodingStateChangedListener, setAudioFormat, setAudioFormat, setAudioFormat, setEncoderBitrate, setEncoderBitrate, setEncoderBitrate, setMaxEncoderBitrate, setMaxEncoderBitrate, setMaxEncoderBitrate, setMinEncoderBitrate, setMinEncoderBitrate, setMinEncoderBitrate, setVideoFormat, setVideoFormat, setVideoFormat
-
Methods inherited from interface org.kurento.client.MediaObject
addErrorListener, addErrorListener, addTag, addTag, addTag, getChildren, getChildren, getChildren, getCreationTime, getCreationTime, getCreationTime, getId, getId, getId, getMediaPipeline, getMediaPipeline, getMediaPipeline, getName, getName, getName, getParent, getParent, getParent, getSendTagsInEvents, getSendTagsInEvents, getSendTagsInEvents, getTag, getTag, getTag, getTags, getTags, getTags, removeErrorListener, removeErrorListener, removeTag, removeTag, removeTag, setName, setName, setName, setSendTagsInEvents, setSendTagsInEvents, setSendTagsInEvents
-
Methods inherited from interface org.kurento.client.SdpEndpoint
generateOffer, generateOffer, generateOffer, generateOffer, generateOffer, generateOffer, getLocalSessionDescriptor, getLocalSessionDescriptor, getLocalSessionDescriptor, getMaxAudioRecvBandwidth, getMaxAudioRecvBandwidth, getMaxAudioRecvBandwidth, getMaxVideoRecvBandwidth, getMaxVideoRecvBandwidth, getMaxVideoRecvBandwidth, getRemoteSessionDescriptor, getRemoteSessionDescriptor, getRemoteSessionDescriptor, processAnswer, processAnswer, processAnswer, processOffer, processOffer, processOffer, setMaxAudioRecvBandwidth, setMaxAudioRecvBandwidth, setMaxAudioRecvBandwidth, setMaxVideoRecvBandwidth, setMaxVideoRecvBandwidth, setMaxVideoRecvBandwidth
-
Methods inherited from interface org.kurento.client.SessionEndpoint
addMediaSessionStartedListener, addMediaSessionStartedListener, addMediaSessionTerminatedListener, addMediaSessionTerminatedListener, removeMediaSessionStartedListener, removeMediaSessionStartedListener, removeMediaSessionTerminatedListener, removeMediaSessionTerminatedListener
-
-
-
-
Method Detail
-
getMinVideoRecvBandwidth
int getMinVideoRecvBandwidth()
Get Minimum inbound bitrate requested by this endpoint. Signaled to compatible WebRTC and RTP senders, as part of the REMB bandwidth estimation protocol.This is used to set a minimum value of local REMB during bandwidth estimation. The REMB estimation will then be sent to remote peers, causing them to send at least the indicated video bitrate. It follows that this parameter will only have effect for remote peers that support the REMB bandwidth estimation protocol (such as e.g. most web browsers compatible with WebRTC).
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
getMinVideoRecvBandwidth
void getMinVideoRecvBandwidth(Continuation<Integer> cont)
Get Minimum inbound bitrate requested by this endpoint. Signaled to compatible WebRTC and RTP senders, as part of the REMB bandwidth estimation protocol.This is used to set a minimum value of local REMB during bandwidth estimation. The REMB estimation will then be sent to remote peers, causing them to send at least the indicated video bitrate. It follows that this parameter will only have effect for remote peers that support the REMB bandwidth estimation protocol (such as e.g. most web browsers compatible with WebRTC).
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
getMinVideoRecvBandwidth
TFuture<Integer> getMinVideoRecvBandwidth(Transaction tx)
Get Minimum inbound bitrate requested by this endpoint. Signaled to compatible WebRTC and RTP senders, as part of the REMB bandwidth estimation protocol.This is used to set a minimum value of local REMB during bandwidth estimation. The REMB estimation will then be sent to remote peers, causing them to send at least the indicated video bitrate. It follows that this parameter will only have effect for remote peers that support the REMB bandwidth estimation protocol (such as e.g. most web browsers compatible with WebRTC).
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
setMinVideoRecvBandwidth
void setMinVideoRecvBandwidth(int minVideoRecvBandwidth)
Set Minimum inbound bitrate requested by this endpoint. Signaled to compatible WebRTC and RTP senders, as part of the REMB bandwidth estimation protocol.This is used to set a minimum value of local REMB during bandwidth estimation. The REMB estimation will then be sent to remote peers, causing them to send at least the indicated video bitrate. It follows that this parameter will only have effect for remote peers that support the REMB bandwidth estimation protocol (such as e.g. most web browsers compatible with WebRTC).
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
setMinVideoRecvBandwidth
void setMinVideoRecvBandwidth(int minVideoRecvBandwidth, Continuation<Void> cont)
Set Minimum inbound bitrate requested by this endpoint. Signaled to compatible WebRTC and RTP senders, as part of the REMB bandwidth estimation protocol.This is used to set a minimum value of local REMB during bandwidth estimation. The REMB estimation will then be sent to remote peers, causing them to send at least the indicated video bitrate. It follows that this parameter will only have effect for remote peers that support the REMB bandwidth estimation protocol (such as e.g. most web browsers compatible with WebRTC).
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
setMinVideoRecvBandwidth
void setMinVideoRecvBandwidth(int minVideoRecvBandwidth, Transaction tx)
Set Minimum inbound bitrate requested by this endpoint. Signaled to compatible WebRTC and RTP senders, as part of the REMB bandwidth estimation protocol.This is used to set a minimum value of local REMB during bandwidth estimation. The REMB estimation will then be sent to remote peers, causing them to send at least the indicated video bitrate. It follows that this parameter will only have effect for remote peers that support the REMB bandwidth estimation protocol (such as e.g. most web browsers compatible with WebRTC).
- Unit: kbps (kilobits per second).
- Default: 0.
- Note: The actual minimum value is 30 kbps, even if a lower value is set.
-
getMinVideoSendBandwidth
int getMinVideoSendBandwidth()
Get Minimum outbound bitrate sent by this endpoint.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.
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 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
getMinVideoSendBandwidth
void getMinVideoSendBandwidth(Continuation<Integer> cont)
Get Minimum outbound bitrate sent by this endpoint.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.
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 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
getMinVideoSendBandwidth
TFuture<Integer> getMinVideoSendBandwidth(Transaction tx)
Get Minimum outbound bitrate sent by this endpoint.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.
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 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
setMinVideoSendBandwidth
void setMinVideoSendBandwidth(int minVideoSendBandwidth)
Set Minimum outbound bitrate sent by this endpoint.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.
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 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
setMinVideoSendBandwidth
void setMinVideoSendBandwidth(int minVideoSendBandwidth, Continuation<Void> cont)
Set Minimum outbound bitrate sent by this endpoint.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.
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 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
setMinVideoSendBandwidth
void setMinVideoSendBandwidth(int minVideoSendBandwidth, Transaction tx)
Set Minimum outbound bitrate sent by this endpoint.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.
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 = unlimited: the video bitrate will drop as needed, even to the lowest possible quality, which could make the video completely blurry and pixelated, but would adapt better to losses caused by network congestion.
-
getMaxVideoSendBandwidth
int getMaxVideoSendBandwidth()
Get Maximum outbound bitrate sent by this endpoint. Remote peers themselves might also announce a maximum bitrate as part of their REMB bandwidth estimations, and also as an SDP bitrate attribute (b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.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.
Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 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 = unlimited: 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).
-
getMaxVideoSendBandwidth
void getMaxVideoSendBandwidth(Continuation<Integer> cont)
Get Maximum outbound bitrate sent by this endpoint. Remote peers themselves might also announce a maximum bitrate as part of their REMB bandwidth estimations, and also as an SDP bitrate attribute (b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.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.
Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 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 = unlimited: 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).
-
getMaxVideoSendBandwidth
TFuture<Integer> getMaxVideoSendBandwidth(Transaction tx)
Get Maximum outbound bitrate sent by this endpoint. Remote peers themselves might also announce a maximum bitrate as part of their REMB bandwidth estimations, and also as an SDP bitrate attribute (b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.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.
Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 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 = unlimited: 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).
-
setMaxVideoSendBandwidth
void setMaxVideoSendBandwidth(int maxVideoSendBandwidth)
Set Maximum outbound bitrate sent by this endpoint. Remote peers themselves might also announce a maximum bitrate as part of their REMB bandwidth estimations, and also as an SDP bitrate attribute (b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.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.
Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 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 = unlimited: 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).
-
setMaxVideoSendBandwidth
void setMaxVideoSendBandwidth(int maxVideoSendBandwidth, Continuation<Void> cont)
Set Maximum outbound bitrate sent by this endpoint. Remote peers themselves might also announce a maximum bitrate as part of their REMB bandwidth estimations, and also as an SDP bitrate attribute (b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.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.
Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 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 = unlimited: 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).
-
setMaxVideoSendBandwidth
void setMaxVideoSendBandwidth(int maxVideoSendBandwidth, Transaction tx)
Set Maximum outbound bitrate sent by this endpoint. Remote peers themselves might also announce a maximum bitrate as part of their REMB bandwidth estimations, and also as an SDP bitrate attribute (b=AS:{value}
, see RFC 8866 Section 5.8. Bandwidth Information) in sendrecv and recvonly SDP Offers or Answers. Kurento will always give priority to bitrate limitations specified by remote peers, over internal configurations.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.
Note that the default MaxVideoSendBandwidth is a VERY conservative value, and leads to a low maximum video quality. Most applications will probably want to increase this to higher values such as 2000 kbps (2 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 = unlimited: 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).
-
getMediaState
MediaState getMediaState()
Get Media flow state.- CONNECTED: There is an RTCP flow.
- DISCONNECTED: No RTCP packets have been received for at least 5 sec.
-
getMediaState
void getMediaState(Continuation<MediaState> cont)
Get Media flow state.- CONNECTED: There is an RTCP flow.
- DISCONNECTED: No RTCP packets have been received for at least 5 sec.
-
getMediaState
TFuture<MediaState> getMediaState(Transaction tx)
Get Media flow state.- CONNECTED: There is an RTCP flow.
- DISCONNECTED: No RTCP packets have been received for at least 5 sec.
-
getConnectionState
ConnectionState getConnectionState()
Get Connection state.- CONNECTED
- DISCONNECTED
-
getConnectionState
void getConnectionState(Continuation<ConnectionState> cont)
Get Connection state.- CONNECTED
- DISCONNECTED
-
getConnectionState
TFuture<ConnectionState> getConnectionState(Transaction tx)
Get Connection state.- CONNECTED
- DISCONNECTED
-
getMtu
int getMtu()
Get Maximum Transmission Unit (MTU) used for RTP.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.
-
getMtu
void getMtu(Continuation<Integer> cont)
Get Maximum Transmission Unit (MTU) used for RTP.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.
-
getMtu
TFuture<Integer> getMtu(Transaction tx)
Get Maximum Transmission Unit (MTU) used for RTP.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.
-
setMtu
void setMtu(int mtu)
Set Maximum Transmission Unit (MTU) used for RTP.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.
-
setMtu
void setMtu(int mtu, Continuation<Void> cont)
Set Maximum Transmission Unit (MTU) used for RTP.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.
-
setMtu
void setMtu(int mtu, Transaction tx)
Set Maximum Transmission Unit (MTU) used for RTP.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.
-
getRembParams
RembParams getRembParams()
Get Advanced parameters to configure the congestion control algorithm.
-
getRembParams
void getRembParams(Continuation<RembParams> cont)
Get Advanced parameters to configure the congestion control algorithm.
-
getRembParams
TFuture<RembParams> getRembParams(Transaction tx)
Get Advanced parameters to configure the congestion control algorithm.
-
setRembParams
void setRembParams(RembParams rembParams)
Set Advanced parameters to configure the congestion control algorithm.
-
setRembParams
void setRembParams(RembParams rembParams, Continuation<Void> cont)
Set Advanced parameters to configure the congestion control algorithm.
-
setRembParams
void setRembParams(RembParams rembParams, Transaction tx)
Set Advanced parameters to configure the congestion control algorithm.
-
requestKeyframe
void requestKeyframe()
Force sending a new keyframe request to the upstream elements in the Kurento Pipeline, towards the associated producer. Only valid for video consumers.
-
requestKeyframe
void requestKeyframe(Continuation<Void> cont)
Asynchronous version of requestKeyframe:Continuation.onSuccess(F)
is called when the action is done. If an error occurs,Continuation.onError(java.lang.Throwable)
is called.- See Also:
requestKeyframe()
-
requestKeyframe
void requestKeyframe(Transaction tx)
Force sending a new keyframe request to the upstream elements in the Kurento Pipeline, towards the associated producer. Only valid for video consumers.
-
addMediaStateChangedListener
ListenerSubscription addMediaStateChangedListener(EventListener<MediaStateChangedEvent> listener)
Add aEventListener
for eventMediaStateChangedEvent
. Synchronous call.- Parameters:
listener
- Listener to be called on MediaStateChangedEvent- Returns:
- ListenerSubscription for the given Listener
-
addMediaStateChangedListener
void addMediaStateChangedListener(EventListener<MediaStateChangedEvent> listener, Continuation<ListenerSubscription> cont)
Add aEventListener
for eventMediaStateChangedEvent
. Asynchronous call. Calls Continuation<ListenerSubscription> when it has been added.- Parameters:
listener
- Listener to be called on MediaStateChangedEventcont
- Continuation to be called when the listener is registered
-
removeMediaStateChangedListener
void removeMediaStateChangedListener(ListenerSubscription listenerSubscription)
Remove aListenerSubscription
for eventMediaStateChangedEvent
. Synchronous call.- Parameters:
listenerSubscription
- Listener subscription to be removed
-
removeMediaStateChangedListener
void removeMediaStateChangedListener(ListenerSubscription listenerSubscription, Continuation<Void> cont)
Remove aListenerSubscription
for eventMediaStateChangedEvent
. Asynchronous call. Calls Continuation<Void> when it has been removed.- Parameters:
listenerSubscription
- Listener subscription to be removedcont
- Continuation to be called when the listener is removed
-
addConnectionStateChangedListener
ListenerSubscription addConnectionStateChangedListener(EventListener<ConnectionStateChangedEvent> listener)
Add aEventListener
for eventConnectionStateChangedEvent
. Synchronous call.- Parameters:
listener
- Listener to be called on ConnectionStateChangedEvent- Returns:
- ListenerSubscription for the given Listener
-
addConnectionStateChangedListener
void addConnectionStateChangedListener(EventListener<ConnectionStateChangedEvent> listener, Continuation<ListenerSubscription> cont)
Add aEventListener
for eventConnectionStateChangedEvent
. Asynchronous call. Calls Continuation<ListenerSubscription> when it has been added.- Parameters:
listener
- Listener to be called on ConnectionStateChangedEventcont
- Continuation to be called when the listener is registered
-
removeConnectionStateChangedListener
void removeConnectionStateChangedListener(ListenerSubscription listenerSubscription)
Remove aListenerSubscription
for eventConnectionStateChangedEvent
. Synchronous call.- Parameters:
listenerSubscription
- Listener subscription to be removed
-
removeConnectionStateChangedListener
void removeConnectionStateChangedListener(ListenerSubscription listenerSubscription, Continuation<Void> cont)
Remove aListenerSubscription
for eventConnectionStateChangedEvent
. Asynchronous call. Calls Continuation<Void> when it has been removed.- Parameters:
listenerSubscription
- Listener subscription to be removedcont
- Continuation to be called when the listener is removed
-
-