Skip to main content

DVR Configuration

Restart TV lets viewers pause a live stream and seek back inside an available DVR window. The seekable range can come from Akta Cloud event metadata, or from a fixed time window configured in the player.

Akta Cloud requirement

Restart TV requires Akta Cloud configuration before the player can expose DVR controls.

In Akta Cloud, configure DVR from Live Encoders > Edit Encoder > Settings tab > DVR or override it per event from Edit Event > Content Control > DVR. Events are created in Inherit mode by default. The event-level values are:

  • Inherit - Uses the encoder DVR setting.
  • Enabled - Enables DVR for the event, overriding the encoder.
  • Disabled - Disables DVR for the event, overriding the encoder.

In Play Configuration > Edit > Private > Custom, add and keep this block:

dvr:
enabled: true

Restart TV does not require a separate play configuration. Restart TV is fully compatible only with server-side ads stitched by Akta.

To enable DVR handling in Lura Player, use the following configuration.

AttributeTypeRequiredDescription
enabledBoolnoEnables DVR handling for live playback.
modeDvrModenoevent uses Akta event metadata. window uses a sliding lookback window ending at the current time.
availabilityWindowDoublenoDVR window duration in seconds. Used when mode is .window.

Event mode

Use event mode when Akta Cloud provides the Restart TV window from event or encoder metadata.

let config = LuraPlayerConfiguration(
content: .init(
type: "live",
dvr: .init(
enabled: true,
mode: .event
)
)
)
player?.setConfig(config)

Window mode

Use window mode when the live stream should expose a fixed sliding DVR range.

let config = LuraPlayerConfiguration(
content: .init(
type: "live",
dvr: .init(
enabled: true,
mode: .window,
availabilityWindow: 7200
)
)
)
player?.setConfig(config)

Start inside the DVR window

For Restart TV, startAt is a UNIX timestamp in seconds, not a relative offset. The timestamp must be inside the DVR availability window.

let config = LuraPlayerConfiguration(
content: .init(
type: "live",
startAt: 1710528000,
dvr: .init(
enabled: true,
mode: .event
)
)
)
player?.setConfig(config)