Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The VidiStream application and its core functionalities are described in detail in Multimedia Content Delivery with VidiStream [INT ENT XY21.Z IG3 ARC]. Instances of VidiStream serve one or more of the following different purposes which are called modes from here on:

...

The following table gives an overview on the various aspects of the three modes of operation before going into detail regarding their differences.

Mode

stream

render

trickplay

Purpose

On-the-fly DASH packaging of individual files without processing them

On-the-fly DASH packaging of timeline segments involving decoding and encoding of potentially multiple sources

Serve individual video and/or audio frames as fast as possible

Used when?

Streaming without requiring following additional features:

  • individual audio track prelistening in client (not selection of stereo pairs only)

  • back-to-back playback of multiple files

  • effect processing

Streaming with need to enable one or more of these additional features:

  • individual audio track listening in client(not selection of stereo pairs only)

  • back-to-back playback of multiple files

  • effect processing

Need for very fast random access to individual video and/or audio frames but not for a linear playback

Used where?

  • MediaPortal preview pane with only stereo pair prelistening selection

  • VidiEditor preview pane

  • EditMate Proxy Mode

  • MediaPortal preview with individual audio track prelisten (Rogers)

  • MediaLogger preview pane

  • VidiEditor timeline pane

  • MediaPortal Gallery Hovering

  • VidiEditor preview pane

  • VidiEditor timeline pane

Resources
CPU
Memory
Network


Low to medium
Low to medium
High


High
High
High


Low to medium
Low to medium
High

Users per instance
(12 CPU/
32 GB RAM)

~ 150-200

~ 30-50
depending on:

  • number and length of source files

  • effect usage

~150-200 (question)

Loadbalancing Strategy

Bounded-load Consistent Hashing

Consistent Hashing

Consistent Hashing

External Endpoints

/stream/dash

/stream/metrics

/render/dash

/render/metrics

/trickplay/trickplay

/trickplay/metrics

Internal URL structure

/dash/<version>/<path>

  • /dash/: dash endpoint

  • /<version>: internal API version, e.g. v4

  • <path>: Base64-encoded URI of file which VidiStream tries to open

/dash/<version>/<session>

  • /dash/: dash endpoint

  • /<version>: internal API version, e.g. v4

  • <session>: Base64-encoded session identifier

Timeline is in POST body

/trickplay/<version>/
<session>/<parameters>

  • /trickplay/: trickplay endpoint

  • /<version>: internal API version, e.g. v4

  • <session>: UID

  • <parameters>: Base64-encoded URI of file which VidiStream tries to open

Kubernetes Architecture

The following sections give an overview on the overall VidiStream architecture when hosted in Kubernetes.

...

In the worker-based VPMS system there exists a client-side load balancing where the client applications are aware of all existing streaming endpoints and select them in a round-robin manner. Once a session with a single endpoint is established it is held until the connectivity to the endpoint is lost and then the next endpoint is contacted:

...

Expand
titleExpanded diagram with standard Confluence view.
Drawio
zoom1
simple0
inComment0
pageId1604976645
custContentId1730315158
lbox1
diagramDisplayNameUnbenanntes Diagramm.drawio
contentVer3
revision3
baseUrlhttps://vidispine.atlassian.net/wiki
diagramNameVidiStream Modes Loadbalancing
pCenter0
width1583
links
tbstyle
height693

This model lacks several demands that arise from the use cases above. While it does enable to have sessions to VidiStream instances it does not select streaming endpoints efficiently since the client has no knowledge of the server side instance load at any time.

...

The unique way to establish a 1:1 relation between VidiStream instance and accessed files is to base the load balancing on the clients request URI for a file to stream in stream mode. Fortunately the same approach also is usable to establish 1:1 sessions between clients and VidiStream instances in the session based scenarios. Obviously the routing of requests to VidiStream instances can not be based on the complete number of URI segments present but only on the given depth of segments that form the stable identifiers:

Mode

stream

render

trickplay

URI Style

/dash
/<version>
/<path>
/<segments>

/dash
/<version>
/<session>

/trickplay
/<version>
/<session>
/<parameters>

Depth

3

3

3

Explanation

The URI is stable for request to an individual file because the URI segments contain the Base64 encoded path to the file

When a client initiates a render session, an URL containing a random and unique session identifier is initially created and used for the remainder of the clients rendering session.

Timeline data is posted in the body of the request.

The trickplay API was built to also include a session UID in the path making it a URL with several levels of constant segments addressing the unique session

In order to guarantee a strict session binding between client and VidiStream instance the Consistent Hashing algorithm is applicable. In a simplified sense, with Consistent Hashing the source value (here the URI segments of the given depth forming the stable endpoint) is subjected to a hashing function that consistently associates the source value with one of n target values (here the VidiStream instances available). If n changes the algorithm aims for reducing any re-targeting as much as possible.

...

The following table summarizes all routes that shall be available at the same DNS address/hostname (depending on whether the client is a part of the system or not):

Application

Routes

MediaPortal (21.1 or newer)

/mediaportal

MediaLogger

/medialogger

EditMate

/editmate

VidiEditor

/vidieditor

VidiStream

/stream

/render

/trickplay

Drawio
zoom1
simple0
inComment0
pageId1604976645
custContentId1730379784
lbox1
diagramDisplayNameUnbenanntes Diagramm.drawio
contentVer3
revision3
baseUrlhttps://vidispine.atlassian.net/wiki
diagramNameUnbenanntes Diagramm.drawio
pCenter0
width1583
links
tbstyle
height1293

...