The CustomRangeMetadata class identifies different types of time ranges in a VOD stream: mark, delete, and replace. For each of these custom time range types, you can perform corresponding operations, including deleting and replacing ad content.

For ad deletion and replacement, TVSDK uses the following custom time range operation modes:

  • MARK This mode was referred to as custom ad markers in previous versions of TVSDK. The mode marks the beginning and ending times for ads that are already placed into the VOD stream. When there are time range markers of type MARK in the stream, an initial placement of Mode.MARK is generated by CustomMarkerOpportunityGenerator and resolved by CustomRangeResolver. No ads are inserted.

  • DELETE For DELETE time ranges, an initial placementInformation of type Mode.DELETE is created and resolved by CustomRangeResolver. DeleteRangeTimelineOperation defines the ranges to be removed from the timeline, and TVSDK uses removeByLocalTime from the Adobe Video Engine (AVE) API to complete this operation. If there are DELETE ranges and Adobe Primetime ad decisioning metadata, the ranges are deleted first, then the AuditudeResolver resolves ads using the typical Adobe Primetime ad decisioning workflow.

  • REPLACE For REPLACE time ranges, two initial placementInformations are created, one Mode.DELETE and one Mode.REPLACE. CustomRangeResolver deletes the time ranges first and then the AuditudeResolver inserts ads of the specified replaceDuration into the timeline. If no replaceDuration is specified, the server determines what to insert.

To support these custom time range operations, TVSDK provides the following:

  • Multiple content resolvers

    A stream can have multiple content resolvers based on the ad signaling mode and ad metadata. The behavior changes with different combinations of ad signaling modes and ad metadata.

  • Multiple initial opportunities using CustomMarkerOpportunityGenerator.

  • A new ad signaling mode, CUSTOM_RANGES.

    Ads are placed based on Time Range data from an external source, such as a JSON file.

On this page