Documentation ¶
Overview ¶
Package vmap implement IAB's VMAP 1.0.1 (http://www.iab.net/guidelines/508676/digitalvideo/vsuite/vmap)
Index ¶
Constants ¶
const ( // OffsetStart defines an Offset.Position for pre-rolls OffsetStart = -1 // OffsetEnd defines an Offset.Position for post-rolls OffsetEnd = -2 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdBreak ¶
type AdBreak struct { XMLName xml.Name `xml:"vmap:AdBreak"` // Represents the timing of the ad break. Values of this attribute can be represented // in one of the four ways: // // - time: in the format hh:mm:ss or hh:mm:ss.mmm where .mmm is milliseconds // and is optional. The time values is offset from the start of the video // content to the placement of the ad break in the video content timeline. // - percentage: if the duration of the video content is unknown, a percentage // (in the format n% where "n" is a value from 0-100) an be entered and // represents a percentage of the total video content duration from the start // up to the point where the ad break should be entered. // - start/end: for ad breaks taht are inserted at the very start or end of // the video content, the value "start" or "end" can be entered. // - position: In cases where the timing of the ad breaks is unknown (such as // with live content), positional values can be entered in the format #m // where "m" is an integer of 1 or greater and represents the ad break // opportunity. For example, an ad break to be inserted at the first // opportunity for an ad break would enter the value #1. Position values can // only be honored if no other offset values are provided. // // An ad break may contain an identical time offset as another ad break and is // common when a linear ad is followed by a nonlinear ad. Also a VMAP response // can contain a mix of offset value types; however, when a mix is values provided, // any position value can be ignored. TimeOffset Offset `xml:"timeOffset,attr"` // Identifies whether the ad break allows "linear", "nonlinear" or "display" ads. // Display break types map to VAST companion ads. If more than one type is allowed, // they can be entered using a comma between each (no spaces). For example // "linear,nonlinear" can be entered. This attribute ensures that only intended ad // types are accepted, that the video player displays ad breaks appropriate for the // viewr controls and that the video player can optimize video content playback // dependent on the ad types being displayed (such as pausing content at the start // of a linear ad to ensure precise timing). BreakType string `xml:"breakType,attr"` // An optional string identifier for the ad break. BreakID string `xml:"breakId,attr,omitempty"` // An option used to distribute ad breaks equally spaced apart from one another // along a linear timeline. If used, the value is time in the format hh:mm:ss or // HH:MM:SS.mmm and indicates that the video player should repeat the same // <AdBreak> break (using the same <AdSource>) at time offsets equal to the duration // value of this attribute. Should a conflict occur where the duration of an // ad break overlaps with a repeating ad break, the ad break scheduled to play first // should take precedence while the overlapping ad break is ignored. Since an // <adSource> can be a VAST Wrapper to an ad server or ad network, the ads played // in a repeated ad break may not be the same at each point. RepeatAfter vast.Duration `xml:"repeatAfter,attr,omitempty"` // Provides the player with either an inline ad response or a reference to an ad response. AdSource *AdSource `xml:",omitempty"` // Defines event tracking URLs TrackingEvents []Tracking `xml:"TrackingEvents>Tracking,omitempty"` // Can be used to express additional information not supported in the VMAP specification. Extensions *Extensions `xml:",omitempty"` }
AdBreak represents a single ad break, but may allow for multiple ads.
type AdSource ¶
type AdSource struct { XMLName xml.Name `xml:"vmap:AdSource"` // Ad identifier for the ad source ID string `xml:"id,attr,omitempty"` // Indicates whether a VAST ad pod or multple buffet of ads can be served into an ad break. // If not specified, the video player accepts playing multple ads in an ad break. The video // player may choose to ignore non-VAST ad pods. AllowMultipleAds *bool `xml:"allowMultipleAds,attr,omitempty"` // Indicates whether the video player should honor the redirects within an ad response. If // not specified, the video player may choose whether it will honor redirects. FollowRedirects *bool `xml:"followRedirects,attr,omitempty"` // Contains an embedded VAST response. VASTAdData *vast.VAST `xml:"VASTAdData>VAST,omitempty"` AdTagURI *AdTagURI CustomAdData *CustomAdData }
AdSource provides the player with either an inline ad response or reference to an ad response.
type AdTagURI ¶
type AdTagURI struct { XMLName xml.Name `xml:"vmap:AdTagURI"` // Can be vast, vast1, vast2, vast3 or any string identifying a proprietary template. TemplateType string `xml:"templateType,attr,omitempty"` URI string `xml:",chardata"` }
AdTagURI references an ad response from another system.
type CustomAdData ¶
type CustomAdData struct { XMLName xml.Name `xml:"vmap:CustomAdData"` // Can be vast, vast1, vast2, vast3 or any string identifying a proprietary template. TemplateType string `xml:"templateType,attr,omitempty"` Data string `xml:",chardata"` }
CustomAdData is an arbitrary string data that represents a non-VAST ad response
type Extension ¶
type Extension struct { XMLName xml.Name `xml:"vmap:Extension"` // The type of the extension. The type must be globaly unique. A URI is recommended. Type string `xml:"type,attr,omitempty"` // The XML content of the extension. Extension XML must use it's own namespace. Data []byte `xml:",innerxml"` }
Extension represent aribtrary XML provided by the platform to extend the VAST response
type Extensions ¶
type Extensions struct { XMLName xml.Name `xml:"vmap:Extensions"` Extensions []Extension `xml:"Extension,omitempty"` }
Extensions defines extensions
type Offset ¶
type Offset struct { // If not nil, the Offset is duration based Duration *vast.Duration // If not 0 and Duration is nil, the Offset is a position number. // Some numbers are reserved like -1 (vmap.OffsetStart) or -2 (vmap.OffsetEnd). Position int // If Duration is nil and Position 0, the Offset is percent based Percent float32 }
Offset represents either a vast.Duration or a percentage of the video duration.
func (Offset) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*Offset) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.
type Tracking ¶
type Tracking struct { XMLName xml.Name `xml:"vmap:Tracking"` // The name of the event to track for the element. Can be one of breakStart, breakEnd or error. Event string `xml:"event,attr"` URI string `xml:",chardata"` }
Tracking defines an event tracking URL
type VMAP ¶
type VMAP struct { XMLName xml.Name `xml:"vmap:VMAP"` // The version of the VMAP spec (should be 1.0) Version string `xml:"version,attr"` // Zero or more <AdBreak> child elements AdBreaks []AdBreak `xml:"AdBreak"` // Can be used to express additional information not supported in the VMAP specification. Extensions *Extensions `xml:",omitempty"` // Comment Comment string `xml:",comment"` }
VMAP is the root <VMAP> tag