Live TV

Back to all DVR API topics

The record engine supports buffering live TV with automatic tuner sharing.

<storage engine BaseURL>/auto/v<channel number>?<parameters>

Example:

http://10.20.20.162:4999/auto/v2.1?<parameters>
Parameter Type Description
ClientID GUID Unique ID to identify the player.
SessionID hex32 Unique ID to identify the channel request.

Returns: Video stream from the requested channel.

If the app supports multiple running instances on the same computer each instance must have a unique ClientID. The ClientID does not need to be persistent across app launches. A valid implementation is to choose a ClientID when an instance of the app is launched.

If the app supports picture-in-picture then each “picture” must have a different ClientID so that changing channel on one “picture” does not cancel and free the tuner being used by the other “picture”.

The SessionID must be unique for each new request of a channel. This allows the record engine to differentiate between a new request vs a seek within the existing session.

  1. Close the existing HTTP connection that is streaming video.
  2. Issue a new HTTP request specifying the desired starting byte offset in the RANGE header. The ClientID and SessionID parameters of the URL must be the same as the original HTTP request.

When attempting to seek beyond the current live point the record engine will return success and will indicate the actual (lower) byte position in the HTTP Content-Range response header.

The record engine automatically limits the amount of back history that is available for a channel to avoid running the DVR out of disk space when a client is left playing a channel for an extended period of time. When attempting to seek back to a byte position that is before the oldest still-available data the record engine will return success and will indicate the actual (higher) byte position in the HTTP Content-Range response header.

  1. Close the existing HTTP connection that is streaming video.
  2. Issue a new HTTP connection to request the new channel. Use the same ClientID but a new SessionID.

The same ClientID tells the record engine that the previous channel is not longer of interest. Required to avoid tying up a new tuner with each channel change.

The new SessionID tells the record engine that this is a new request rather than a seek request. Required to handle the situation where the user leaves live TV mode, then a short while later goes back into live TV mode.

  • Last modified: 2019/10/10 19:57