Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
dvr_api [2019/10/10 19:49] neds |
dvr_api [2019/10/10 19:52] neds |
||
---|---|---|---|
Line 2: | Line 2: | ||
=====Live TV===== | =====Live TV===== | ||
+ | <WRAP indent> | ||
The record engine supports buffering live TV with automatic tuner sharing. | The record engine supports buffering live TV with automatic tuner sharing. | ||
====API URL==== | ====API URL==== | ||
- | + | <WRAP indent> | |
- | <storage engine BaseURL>/auto/v<channel number>?<parameters> | + | <code><storage engine BaseURL>/auto/v<channel number>?<parameters></code> |
Example: <code>http://10.20.20.162:4999/auto/v2.1?<parameters></code> | Example: <code>http://10.20.20.162:4999/auto/v2.1?<parameters></code> | ||
+ | </WRAP> | ||
====Parameters==== | ====Parameters==== | ||
+ | <WRAP indent> | ||
+ | ^ Parameter ^ Type ^ Description ^ | ||
+ | | ClientID | GUID | Unique ID to identify the player. | | ||
+ | | SessionID | hex32 | Unique ID to identify the channel request. | | ||
- | Parameter Type Description | + | Returns: Video stream from the requested channel. |
- | 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 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. | ||
Line 23: | Line 24: | ||
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. | 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. | ||
+ | </WRAP> | ||
====Seeking==== | ====Seeking==== | ||
+ | <WRAP indent> | ||
- Close the existing HTTP connection that is streaming video. | - Close the existing HTTP connection that is streaming video. | ||
- 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. | - 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. | ||
Line 31: | Line 33: | ||
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. | 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. | ||
+ | </WRAP> | ||
====Changing channel==== | ====Changing channel==== | ||
+ | <WRAP indent> | ||
- Close the existing HTTP connection that is streaming video. | - Close the existing HTTP connection that is streaming video. | ||
- Issue a new HTTP connection to request the new channel. Use the same ClientID but a new SessionID. | - Issue a new HTTP connection to request the new channel. Use the same ClientID but a new SessionID. | ||
Line 40: | Line 42: | ||
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. | 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. | ||
+ | </WRAP> | ||
+ | </WRAP> |