Class: PlayerEndpoint

elements.PlayerEndpoint()

Retrieves content from external sources.

PlayerEndpoint will access the given resource, read all available data, and inject it into KMS. will be available for passing through any other Filter or Endpoint to which the PlayerEndpoint gets connected.

The source can provide either seekable or non-seekable media; this will dictate whether the PlayerEndpoint is able (or not) to seek through the file, for example to jump to any given timestamp.

The Source URI supports these formats:

  • File: A file path that will be read from the local file system. Example:
    • file:///path/to/file
  • HTTP: Any file available in an HTTP server. Examples:
    • http(s)://{server-ip}/path/to/file
    • http(s)://{username}:{password}@{server-ip}:{server-port}/path/to/file
  • RTSP: Typically used to capture a feed from an IP Camera. Examples:
    • rtsp://{server-ip}
    • rtsp://{username}:{password}@{server-ip}:{server-port}/path/to/file
  • NOTE (for current versions of Kurento 6.x): special characters are not supported in {username} or {password}. This means that {username} cannot contain colons (:), and {password} cannot contain 'at' signs (@). This is a limitation of GStreamer 1.8 (the underlying media framework behind Kurento), and is already fixed in newer versions (which the upcoming Kurento 7.x will use).
  • NOTE (for upcoming Kurento 7.x): special characters in {username} or {password} must be url-encoded. This means that colons (:) should be replaced with %3A, and 'at' signs (@) should be replaced with %40.

Note that PlayerEndpoint requires read permissions to the source ; otherwise, the media server won't be able to retrieve any data, and an ErrorEvent will be fired. Make sure your application subscribes to event, otherwise troubleshooting issues will be difficult.

The list of valid operations is:

  • play : Starts streaming media. If invoked after pause, it will resume playback.
  • stop : Stops streaming media. If play is invoked afterwards, the file will be streamed from the beginning.
  • pause : Pauses media streaming. Play must be invoked in order to resume playback.
  • seek : If the source supports seeking to a different time position, then the PlayerEndpoint can:
    • setPosition : Allows to set the position in the file.
    • getPosition : Returns the current position being streamed.

Events fired

  • EndOfStreamEvent: If the file is streamed completely.

Constructor

new PlayerEndpoint()

Create a PlayerEndpoint
Source:
Fires:

Extends

Members

(static) constructorParams

Properties:
Name Type Attributes Description
mediaPipeline module:core.MediaPipeline The MediaPipeline this PlayerEndpoint belongs to.
networkCache external:Integer <optional>
RTSP buffer length.

When receiving media from an RTSP source, the streamed video can suffer spikes or stuttering, caused by hardware or network issues. Having a reception buffer helps alleviate these problems, because it smoothes the stream of incoming data to the receiving endpoint.

Finding a buffer length that works best for your connection might take some tweaking, which can be done with this optional property. Note that a longer buffer will be able to fix bigger network spikes, but at the cost of introducing more latency to the media playback.

  • Unit: milliseconds.
  • Default: 2000.
uri external:String URI pointing to the video. It has to be accessible to the KMS process.
  • Local resources: The user running the Kurento Media Server must have read permission over the file.
  • Remote resources: Must be accessible from the server where the media server is running.
useEncodedMedia external:Boolean <optional>
Feed the input media as-is to the Media Pipeline, instead of first decoding it.

When this property is not enabled, the input media gets always

When this property is enabled, the explained behavior gets disabled. Instead, The endpoint will provide any input media directly to the Media Pipeline, without prior decoding. Enabling this mode of operation could have a severe effect on stability, because lost video keyframes will not be regenerated; however, avoiding a full cycle of decoding and encoding can be very useful for certain applications, because it improves performance by greatly reducing the CPU processing

Keep in mind that if this property is enabled, the original source media MUST already have an encoding format which is compatible with the destination target. For example: given a pipeline which uses this endpoint to read a file and then streams it to a WebRTC browser such as Chrome, then the file must already be encoded with a VP8 or H.264 codec profile which Chrome is able to decode. Note that for this example, most browsers don't support ANY combination of H.264 encoding options; instead, they tend to support only a very specific subset of the codec features (also known as 'profiles').

We strongly recommend to avoid using this option, because correct behavior cannot be guaranteed.

Source:

(static) events

Source:

Methods

(static) play(callbackopt) → {external:Promise}

Starts reproducing the media, sending it to the :rom:cls:`MediaSource`. If the endpoint has been connected to other endpoints, those will start receiving media.
Parameters:
Name Type Attributes Description
callback module:elements.PlayerEndpoint~playCallback <optional>
Source:
Returns:
Type
external:Promise

getChildren(callbackopt) → {external:Promise}

Children of this MediaObject.
Parameters:
Name Type Attributes Description
callback module:core/abstracts.MediaObject~getChildrenCallback <optional>
Inherited From:
Source:
Returns:
Type
external:Promise

getChilds(callbackopt) → {external:Promise}

Children of this MediaObject.
Parameters:
Name Type Attributes Description
callback module:core/abstracts.MediaObject~getChildsCallback <optional>
Inherited From:
Deprecated:
  • Use children instead.
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

getElementGstreamerDot(callbackopt) → {external:Promise}

Returns the GStreamer DOT string for this element's private pipeline
Parameters:
Name Type Attributes Description
callback module:elements.PlayerEndpoint~getElementGstreamerDotCallback <optional>
Source:
Returns:
Type
external:Promise

getMaxOuputBitrate(callbackopt) → {external:Promise}

Maximum video bandwidth for transcoding.
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}

Maximum video bitrate for transcoding.
  • 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

getMediaPipeline(callbackopt) → {external:Promise}

MediaPipeline to which this 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

getMinOuputBitrate(callbackopt) → {external:Promise}

Minimum video bandwidth for transcoding.
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}

Minimum video bitrate for transcoding.
  • 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

getName(callbackopt) → {external:Promise}

This 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

getParent(callbackopt) → {external:Promise}

Parent of this 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

getPosition(callbackopt) → {external:Promise}

Get or set the actual position of the video in ms.
Note Setting the position only works for seekable videos
Parameters:
Name Type Attributes Description
callback module:elements.PlayerEndpoint~getPositionCallback <optional>
Source:
Returns:
Type
external:Promise

getSendTagsInEvents(callbackopt) → {external:Promise}

Flag activating or deactivating sending the element's tags in fired events.
Parameters:
Name Type Attributes Description
callback module:core/abstracts.MediaObject~getSendTagsInEventsCallback <optional>
Inherited From:
Source:
Returns:
Type
external:Promise

getState(callbackopt) → {external:Promise}

State of the endpoint
Parameters:
Name Type Attributes Description
callback module:core/abstracts.UriEndpoint~getStateCallback <optional>
Inherited From:
Source:
Returns:
Type
external:Promise

getUri(callbackopt) → {external:Promise}

The uri for this endpoint.
Parameters:
Name Type Attributes Description
callback module:core/abstracts.UriEndpoint~getUriCallback <optional>
Inherited From:
Source:
Returns:
Type
external:Promise

getVideoInfo(callbackopt) → {external:Promise}

Returns info about the source being played
Parameters:
Name Type Attributes Description
callback module:elements.PlayerEndpoint~getVideoInfoCallback <optional>
Source:
Returns:
Type
external:Promise

setMaxOuputBitrate(maxOuputBitrate, callbackopt) → {external:Promise}

Maximum video bandwidth for transcoding.
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}

Maximum video bitrate for transcoding.
  • 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

setMinOuputBitrate(minOuputBitrate, callbackopt) → {external:Promise}

Minimum video bandwidth for transcoding.
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}

Minimum video bitrate for transcoding.
  • 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

setName(name, callbackopt) → {external:Promise}

This 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

setPosition(position, callbackopt) → {external:Promise}

Get or set the actual position of the video in ms.
Note Setting the position only works for seekable videos
Parameters:
Name Type Attributes Description
position external:int64
callback module:elements.PlayerEndpoint~setPositionCallback <optional>
Source:
Returns:
Type
external:Promise

setSendTagsInEvents(sendTagsInEvents, callbackopt) → {external:Promise}

Flag activating or deactivating sending the element's tags in fired events.
Parameters:
Name Type Attributes Description
sendTagsInEvents external:Boolean
callback module:core/abstracts.MediaObject~setSendTagsInEventsCallback <optional>
Inherited From:
Source:
Returns:
Type
external:Promise

Type Definitions

getElementGstreamerDotCallback(error, result)

Parameters:
Name Type Description
error external:Error
result external:String
Source:

getPositionCallback(error, result)

Parameters:
Name Type Description
error external:Error
result external:int64
Source:

getVideoInfoCallback(error, result)

Parameters:
Name Type Description
error external:Error
result module:elements/complexTypes.VideoInfo
Source:

playCallback(error)

Parameters:
Name Type Description
error external:Error
Source:

setPositionCallback(error)

Parameters:
Name Type Description
error external:Error
Source: