Documentation
¶
Index ¶
- Constants
- Variables
- func MakePSSHBox(systemID, payload []byte) ([]byte, error)
- func ParseDuration(str string) (time.Duration, error)
- type Accessibility
- type AccessibilityElementScheme
- type AdaptationSet
- func (as *AdaptationSet) AddContentProtection(cp ContentProtectioner) error
- func (as *AdaptationSet) AddNewAccessibilityElement(scheme AccessibilityElementScheme, val string) (*Accessibility, error)
- func (as *AdaptationSet) AddNewContentProtectionRoot(defaultKIDHex string) (*CENCContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionRootLegacyUUID(defaultKIDHex string) (*CENCContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionSchemePlayready(pro string) (*PlayreadyContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionSchemePlayreadyV10(pro string) (*PlayreadyContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionSchemePlayreadyV10WithPSSH(pro string) (*PlayreadyContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionSchemePlayreadyWithPSSH(pro string) (*PlayreadyContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionSchemeWidevine() (*WidevineContentProtection, error)
- func (as *AdaptationSet) AddNewContentProtectionSchemeWidevineWithPSSH(wvHeader []byte) (*WidevineContentProtection, error)
- func (as *AdaptationSet) AddNewInbandEventStream(uri string, val string) error
- func (as *AdaptationSet) AddNewRepresentationAudio(samplingRate int64, bandwidth int64, codecs string, id string) (*Representation, error)
- func (as *AdaptationSet) AddNewRepresentationSubtitle(bandwidth int64, id string) (*Representation, error)
- func (as *AdaptationSet) AddNewRepresentationThumbnails(id, val, uri string, bandwidth, width, height int64) (*Representation, error)
- func (as *AdaptationSet) AddNewRepresentationVideo(bandwidth int64, codecs string, id string, frameRate string, width int64, ...) (*Representation, error)
- func (as *AdaptationSet) AddNewRole(schemeIDURI string, value string) (*Role, error)
- func (as *AdaptationSet) SetNewSegmentTemplate(duration int64, init string, media string, startNumber int64, timescale int64) (*SegmentTemplate, error)
- func (as *AdaptationSet) SetNewSegmentTemplateThumbnails(duration int64, media string, startNumber int64, timescale int64) (*SegmentTemplate, error)
- func (as *AdaptationSet) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
- type AttrMPD
- type AudioChannelConfiguration
- type AudioChannelConfigurationScheme
- type CENCContentProtection
- type CENCContentProtectionMarshal
- type CommonAttributesAndElements
- type ContentProtection
- type ContentProtectionMarshal
- type ContentProtectioner
- type DashProfile
- type DescriptorType
- type Duration
- type Event
- type EventStream
- type MPD
- func NewDynamicMPD(profile DashProfile, availabilityStartTime, minBufferTime string, ...) *MPD
- func NewMPD(profile DashProfile, mediaPresentationDuration, minBufferTime string, ...) *MPD
- func Read(r io.Reader) (*MPD, error)
- func ReadFromFile(path string) (*MPD, error)
- func ReadFromString(xmlStr string) (*MPD, error)
- func (m *MPD) AddNewAdaptationSetAudio(mimeType string, segmentAlignment bool, startWithSAP int64, lang string) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetAudioWithID(id string, mimeType string, segmentAlignment bool, startWithSAP int64, ...) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetSubtitle(mimeType string, lang string, label string) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetSubtitleWithID(id string, mimeType string, lang string, label string) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetThumbnails(mimeType string) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetThumbnailsWithID(id, mimeType string) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetVideo(mimeType string, scanType string, segmentAlignment bool, startWithSAP int64) (*AdaptationSet, error)
- func (m *MPD) AddNewAdaptationSetVideoWithID(id string, mimeType string, scanType string, segmentAlignment bool, ...) (*AdaptationSet, error)
- func (m *MPD) AddNewPeriod() *Period
- func (m *MPD) GetCurrentPeriod() *Period
- func (m *MPD) SetDolbyXMLNs()
- func (m *MPD) Validate() error
- func (m *MPD) Write(w io.Writer) error
- func (m *MPD) WriteToFile(path string) error
- func (m *MPD) WriteToString() (string, error)
- type MultipleSegmentBase
- type Period
- func (period *Period) AddNewAdaptationSetAudio(mimeType string, segmentAlignment bool, startWithSAP int64, lang string) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetAudioWithID(id string, mimeType string, segmentAlignment bool, startWithSAP int64, ...) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetSubtitle(mimeType string, lang string, label string) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetSubtitleWithID(id string, mimeType string, lang string, label string) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetThumbnails(mimeType string) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetThumbnailsWithID(id, mimeType string) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetVideo(mimeType string, scanType string, segmentAlignment bool, startWithSAP int64) (*AdaptationSet, error)
- func (period *Period) AddNewAdaptationSetVideoWithID(id string, mimeType string, scanType string, segmentAlignment bool, ...) (*AdaptationSet, error)
- func (period *Period) SetDuration(d time.Duration)
- type PlayreadyContentProtection
- type PlayreadyContentProtectionMarshal
- type Representation
- func (r *Representation) AddNewAudioChannelConfiguration(scheme AudioChannelConfigurationScheme, channelConfiguration string) (*AudioChannelConfiguration, error)
- func (r *Representation) AddNewBaseURL(baseURL string) error
- func (r *Representation) AddNewInbandEventStream(uri string, val string) error
- func (r *Representation) AddNewSegmentBase(indexRange string, initRange string) (*SegmentBase, error)
- func (r *Representation) SetNewBaseURL(baseURL string) error
- type Role
- type SegmentBase
- type SegmentList
- type SegmentTemplate
- type SegmentTimeline
- type SegmentTimelineSegment
- type SegmentURL
- type URL
- type WidevineContentProtection
- type WidevineContentProtectionMarshal
Constants ¶
const (
DASH_MIME_TYPE_VIDEO_MP4 string = "video/mp4"
DASH_MIME_TYPE_AUDIO_MP4 string = "audio/mp4"
DASH_MIME_TYPE_SUBTITLE_VTT string = "text/vtt"
DASH_MIME_TYPE_SUBTITLE_TTML string = "application/ttaf+xml"
DASH_MIME_TYPE_SUBTITLE_SRT string = "application/x-subrip"
DASH_MIME_TYPE_SUBTITLE_DFXP string = "application/ttaf+xml"
DASH_MIME_TYPE_IMAGE_JPEG string = "image/jpeg"
DASH_CONTENT_TYPE_IMAGE string = "image"
)
Constants for some known MIME types, this is a limited list and others can be used.
const (
CONTENT_PROTECTION_ROOT_SCHEME_ID_URI = "urn:mpeg:dash:mp4protection:2011"
CONTENT_PROTECTION_ROOT_VALUE = "cenc"
CENC_XMLNS = "urn:mpeg:cenc:2013"
CONTENT_PROTECTION_WIDEVINE_SCHEME_ID = "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
CONTENT_PROTECTION_WIDEVINE_SCHEME_HEX = "edef8ba979d64acea3c827dcd51d21ed"
CONTENT_PROTECTION_PLAYREADY_SCHEME_ID = "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"
CONTENT_PROTECTION_PLAYREADY_SCHEME_HEX = "9a04f07998404286ab92e65be0885f95"
CONTENT_PROTECTION_PLAYREADY_SCHEME_V10_ID = "urn:uuid:79f0049a-4098-8642-ab92-e65be0885f95"
CONTENT_PROTECTION_PLAYREADY_SCHEME_V10_HEX = "79f0049a40988642ab92e65be0885f95"
CONTENT_PROTECTION_PLAYREADY_XMLNS = "urn:microsoft:playready"
)
Constants for DRM / ContentProtection
Variables ¶
var (
ErrNoDASHProfileSet error = errors.New("No DASH profile set")
ErrAdaptationSetNil = errors.New("Adaptation Set nil")
ErrSegmentTemplateLiveProfileOnly = errors.New("Segment template can only be used with Live Profile")
ErrSegmentTemplateNil = errors.New("Segment Template nil ")
ErrRepresentationNil = errors.New("Representation nil")
ErrAccessibilityNil = errors.New("Accessibility nil")
ErrBaseURLEmpty = errors.New("Base URL empty")
ErrSegmentBaseOnDemandProfileOnly = errors.New("Segment Base can only be used with On-Demand Profile")
ErrSegmentBaseNil = errors.New("Segment Base nil")
ErrAudioChannelConfigurationNil = errors.New("Audio Channel Configuration nil")
ErrInvalidDefaultKID = errors.New("Invalid Default KID string, should be 32 characters")
ErrPROEmpty = errors.New("PlayReady PRO empty")
ErrContentProtectionNil = errors.New("Content Protection nil")
ErrInbandEventStreamSchemeUriEmpty = errors.New("Inband Event Stream schemeIdUri Empty")
)
Known error variables
Functions ¶
func MakePSSHBox ¶ added in v3.0.2
func MakePSSHBox(systemID, payload []byte) ([]byte, error)
func ParseDuration ¶
func ParseDuration(str string) (time.Duration, error)
Types ¶
type Accessibility ¶
type Accessibility struct {
AdaptationSet *AdaptationSet `xml:"-"`
SchemeIdUri *string `xml:"schemeIdUri,attr,omitempty"`
Value *string `xml:"value,attr,omitempty"`
}
type AccessibilityElementScheme ¶
type AccessibilityElementScheme string
AccessibilityElementScheme is the scheme definition for an Accessibility element
const ACCESSIBILITY_ELEMENT_SCHEME_DESCRIPTIVE_AUDIO AccessibilityElementScheme = "urn:tva:metadata:cs:AudioPurposeCS:2007"
Accessibility descriptor values for Audio Description
type AdaptationSet ¶
type AdaptationSet struct {
CommonAttributesAndElements
XMLName xml.Name `xml:"AdaptationSet"`
ID *string `xml:"id,attr"`
SegmentAlignment *bool `xml:"segmentAlignment,attr"`
Lang *string `xml:"lang,attr"`
Group *string `xml:"group,attr"`
PAR *string `xml:"par,attr"`
MinBandwidth *string `xml:"minBandwidth,attr"`
MaxBandwidth *string `xml:"maxBandwidth,attr"`
MinWidth *string `xml:"minWidth,attr"`
MaxWidth *string `xml:"maxWidth,attr"`
MinHeight *string `xml:"minHeight,attr"`
MaxHeight *string `xml:"maxHeight,attr"`
ContentType *string `xml:"contentType,attr"`
Roles []*Role `xml:"Role,omitempty"`
SegmentBase *SegmentBase `xml:"SegmentBase,omitempty"`
SegmentList *SegmentList `xml:"SegmentList,omitempty"`
SegmentTemplate *SegmentTemplate `xml:"SegmentTemplate,omitempty"` // Live Profile Only
Representations []*Representation `xml:"Representation,omitempty"`
AccessibilityElems []*Accessibility `xml:"Accessibility,omitempty"`
Label *string `xml:"label,attr"`
}
func (*AdaptationSet) AddContentProtection ¶
func (as *AdaptationSet) AddContentProtection(cp ContentProtectioner) error
Internal helper method for adding a ContentProtection to an AdaptationSet.
func (*AdaptationSet) AddNewAccessibilityElement ¶
func (as *AdaptationSet) AddNewAccessibilityElement(scheme AccessibilityElementScheme, val string) (*Accessibility, error)
AddNewAccessibilityElement adds a new accessibility element to an adaptation set schemeIdUri - Scheme ID URI for the Accessibility element (i.e. urn:tva:metadata:cs:AudioPurposeCS:2007) value - specified value based on scheme
func (*AdaptationSet) AddNewContentProtectionRoot ¶
func (as *AdaptationSet) AddNewContentProtectionRoot(defaultKIDHex string) (*CENCContentProtection, error)
Adds a ContentProtection tag at the root level of an AdaptationSet. This ContentProtection tag does not include signaling for any particular DRM scheme. defaultKIDHex - Default Key ID as a Hex String.
func (*AdaptationSet) AddNewContentProtectionRootLegacyUUID ¶
func (as *AdaptationSet) AddNewContentProtectionRootLegacyUUID(defaultKIDHex string) (*CENCContentProtection, error)
Adds a ContentProtection tag at the root level of an AdaptationSet. This ContentProtection tag does not include signaling for any particular DRM scheme. defaultKIDHex - Default Key ID as a Hex String.
NOTE: this is only here for Legacy purposes. This will create an invalid UUID.
func (*AdaptationSet) AddNewContentProtectionSchemePlayready ¶
func (as *AdaptationSet) AddNewContentProtectionSchemePlayready(pro string) (*PlayreadyContentProtection, error)
AddNewContentProtectionSchemePlayready adds a new content protection scheme for PlayReady DRM. pro - PlayReady Object Header, as a Base64 encoded string.
func (*AdaptationSet) AddNewContentProtectionSchemePlayreadyV10 ¶
func (as *AdaptationSet) AddNewContentProtectionSchemePlayreadyV10(pro string) (*PlayreadyContentProtection, error)
AddNewContentProtectionSchemePlayreadyV10 adds a new content protection scheme for PlayReady v1.0 DRM. pro - PlayReady Object Header, as a Base64 encoded string.
func (*AdaptationSet) AddNewContentProtectionSchemePlayreadyV10WithPSSH ¶
func (as *AdaptationSet) AddNewContentProtectionSchemePlayreadyV10WithPSSH(pro string) (*PlayreadyContentProtection, error)
AddNewContentProtectionSchemePlayreadyV10WithPSSH adds a new content protection scheme for PlayReady v1.0 DRM. The scheme will include both ms:pro and cenc:pssh subelements pro - PlayReady Object Header, as a Base64 encoded string.
func (*AdaptationSet) AddNewContentProtectionSchemePlayreadyWithPSSH ¶
func (as *AdaptationSet) AddNewContentProtectionSchemePlayreadyWithPSSH(pro string) (*PlayreadyContentProtection, error)
AddNewContentProtectionSchemePlayreadyWithPSSH adds a new content protection scheme for PlayReady DRM. The scheme will include both ms:pro and cenc:pssh subelements pro - PlayReady Object Header, as a Base64 encoded string.
func (*AdaptationSet) AddNewContentProtectionSchemeWidevine ¶
func (as *AdaptationSet) AddNewContentProtectionSchemeWidevine() (*WidevineContentProtection, error)
AddNewContentProtectionSchemeWidevine adds a new content protection scheme for Widevine DRM to the adaptation set.
func (*AdaptationSet) AddNewContentProtectionSchemeWidevineWithPSSH ¶
func (as *AdaptationSet) AddNewContentProtectionSchemeWidevineWithPSSH(wvHeader []byte) (*WidevineContentProtection, error)
AddNewContentProtectionSchemeWidevine adds a new content protection scheme for Widevine DRM to the adaptation set. With a <cenc:pssh> element that contains a Base64 encoded PSSH box wvHeader - binary representation of Widevine Header !!! Note: this function will accept any byte slice as a wvHeader value !!!
func (*AdaptationSet) AddNewInbandEventStream ¶ added in v3.0.3
func (as *AdaptationSet) AddNewInbandEventStream(uri string, val string) error
AddNewInbandEventStream - Adds a new InbandEventStream Descriptor to an adaptation set uri - Scheme ID URI for the inband event stream val - value for inband event stream
func (*AdaptationSet) AddNewRepresentationAudio ¶
func (as *AdaptationSet) AddNewRepresentationAudio(samplingRate int64, bandwidth int64, codecs string, id string) (*Representation, error)
Adds a new Audio representation to an AdaptationSet. samplingRate - in Hz (i.e. 44100). bandwidth - in Bits/s (i.e. 67095). codecs - codec string for Audio Only (in RFC6381, https://tools.ietf.org/html/rfc6381) (i.e. mp4a.40.2). id - ID for this representation, will get used as $RepresentationID$ in template strings.
func (*AdaptationSet) AddNewRepresentationSubtitle ¶
func (as *AdaptationSet) AddNewRepresentationSubtitle(bandwidth int64, id string) (*Representation, error)
Adds a new Subtitle representation to an AdaptationSet. bandwidth - in Bits/s (i.e. 256). id - ID for this representation, will get used as $RepresentationID$ in template strings.
func (*AdaptationSet) AddNewRepresentationThumbnails ¶
func (as *AdaptationSet) AddNewRepresentationThumbnails(id, val, uri string, bandwidth, width, height int64) (*Representation, error)
Adds a new Thumbnail representation to an AdaptationSet. bandwidth - in Bits/s (i.e. 1518664). id - ID for this representation, will get used as $RepresentationID$ in template strings. width - width of the video (i.e. 1280). height - height of the video (i.e 720). uri -
func (*AdaptationSet) AddNewRepresentationVideo ¶
func (as *AdaptationSet) AddNewRepresentationVideo(bandwidth int64, codecs string, id string, frameRate string, width int64, height int64) (*Representation, error)
Adds a new Video representation to an AdaptationSet. bandwidth - in Bits/s (i.e. 1518664). codecs - codec string for Audio Only (in RFC6381, https://tools.ietf.org/html/rfc6381) (i.e. avc1.4d401f). id - ID for this representation, will get used as $RepresentationID$ in template strings. frameRate - video frame rate (as a fraction) (i.e. 30000/1001). width - width of the video (i.e. 1280). height - height of the video (i.e 720).
func (*AdaptationSet) AddNewRole ¶
func (as *AdaptationSet) AddNewRole(schemeIDURI string, value string) (*Role, error)
Adds a new Role to an AdaptationSet schemeIdUri - Scheme ID URI string (i.e. urn:mpeg:dash:role:2011) value - Value for this role, (i.e. caption, subtitle, main, alternate, supplementary, commentary, dub)
func (*AdaptationSet) SetNewSegmentTemplate ¶
func (as *AdaptationSet) SetNewSegmentTemplate(duration int64, init string, media string, startNumber int64, timescale int64) (*SegmentTemplate, error)
Sets up a new SegmentTemplate for an AdaptationSet. duration - relative to timescale (i.e. 2000). init - template string for init segment (i.e. $RepresentationID$/audio/en/init.mp4). media - template string for media segments. startNumber - the number to start segments from ($Number$) (i.e. 0). timescale - sets the timescale for duration (i.e. 1000, represents milliseconds).
func (*AdaptationSet) SetNewSegmentTemplateThumbnails ¶
func (as *AdaptationSet) SetNewSegmentTemplateThumbnails(duration int64, media string, startNumber int64, timescale int64) (*SegmentTemplate, error)
Adds a new SegmentTemplate to a thumbnail AdaptationSet duration - relative to timescale (i.e. 2000). media - template string for media segments. startNumber - the number to start segments from ($Number$) (i.e. 0). timescale - sets the timescale for duration (i.e. 1000, represents milliseconds).
func (*AdaptationSet) UnmarshalXML ¶
func (as *AdaptationSet) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
type AttrMPD ¶
type AttrMPD interface {
GetStrptr() *string
}
func AttrAvailabilityStartTime ¶
func AttrAvailabilityStartTime(value string) AttrMPD
AttrAvailabilityStartTime returns AttrMPD object for NewMPD
func AttrMediaPresentationDuration ¶
func AttrMediaPresentationDuration(value string) AttrMPD
AttrMediaPresentationDuration returns AttrMPD object for NewMPD
func AttrMinimumUpdatePeriod ¶
func AttrMinimumUpdatePeriod(value string) AttrMPD
AttrMinimumUpdatePeriod returns AttrMPD object for NewMPD
func AttrPublishTime ¶ added in v3.0.2
func AttrPublishTime(value string) AttrMPD
AttrPublishTime returns AttrMPD object for NewMPD
type AudioChannelConfiguration ¶
type AudioChannelConfiguration struct {
SchemeIDURI *string `xml:"schemeIdUri,attr"`
// Value will be an int for non-Dolby Schemes, and a hexstring for Dolby Schemes, hence we make it a string
Value *string `xml:"value,attr"`
}
type AudioChannelConfigurationScheme ¶
type AudioChannelConfigurationScheme string
const (
// Scheme for non-Dolby Audio
AUDIO_CHANNEL_CONFIGURATION_MPEG_DASH AudioChannelConfigurationScheme = "urn:mpeg:dash:23003:3:audio_channel_configuration:2011"
// Scheme for Dolby Audio
AUDIO_CHANNEL_CONFIGURATION_MPEG_DOLBY AudioChannelConfigurationScheme = "tag:dolby.com,2014:dash:audio_channel_configuration:2011"
)
type CENCContentProtection ¶
type CENCContentProtection struct {
ContentProtection
DefaultKID *string `xml:"default_KID,attr"`
Value *string `xml:"value,attr"` // Default: cenc
}
func (CENCContentProtection) MarshalXML ¶
func (s CENCContentProtection) MarshalXML(e *xml.Encoder, start xml.StartElement) error
type CENCContentProtectionMarshal ¶
type CENCContentProtectionMarshal struct {
ContentProtectionMarshal
DefaultKID *string `xml:"cenc:default_KID,attr"`
Value *string `xml:"value,attr"` // Default: cenc
}
type CommonAttributesAndElements ¶
type CommonAttributesAndElements struct {
Profiles *string `xml:"profiles,attr"`
Width *string `xml:"width,attr"`
Height *string `xml:"height,attr"`
Sar *string `xml:"sar,attr"`
FrameRate *string `xml:"frameRate,attr"`
AudioSamplingRate *string `xml:"audioSamplingRate,attr"`
MimeType *string `xml:"mimeType,attr"`
SegmentProfiles *string `xml:"segmentProfiles,attr"`
Codecs *string `xml:"codecs,attr"`
MaximumSAPPeriod *string `xml:"maximumSAPPeriod,attr"`
StartWithSAP *int64 `xml:"startWithSAP,attr"`
MaxPlayoutRate *string `xml:"maxPlayoutRate,attr"`
ScanType *string `xml:"scanType,attr"`
FramePacking []DescriptorType `xml:"FramePacking,omitempty"`
AudioChannelConfiguration []DescriptorType `xml:"AudioChannelConfiguration,omitempty"`
ContentProtection []ContentProtectioner `xml:"ContentProtection,omitempty"`
EssentialProperty []DescriptorType `xml:"EssentialProperty,omitempty"`
SupplementalProperty []DescriptorType `xml:"SupplementalProperty,omitempty"`
InbandEventStream []DescriptorType `xml:"InbandEventStream,omitempty"`
}
ISO 23009-1-2014 5.3.7
type ContentProtection ¶
type ContentProtection struct {
AdaptationSet *AdaptationSet `xml:"-"`
XMLName xml.Name `xml:"ContentProtection"`
SchemeIDURI *string `xml:"schemeIdUri,attr"` // Default: urn:mpeg:dash:mp4protection:2011
XMLNS *string `xml:"cenc,attr"` // Default: urn:mpeg:cenc:2013
Attrs []*xml.Attr `xml:",any,attr"`
}
func (ContentProtection) ContentProtected ¶
func (s ContentProtection) ContentProtected()
func (ContentProtection) MarshalXML ¶
func (s ContentProtection) MarshalXML(e *xml.Encoder, start xml.StartElement) error
type ContentProtectionMarshal ¶
type ContentProtectionMarshal struct {
AdaptationSet *AdaptationSet `xml:"-"`
XMLName xml.Name `xml:"ContentProtection"`
SchemeIDURI *string `xml:"schemeIdUri,attr"` // Default: urn:mpeg:dash:mp4protection:2011
XMLNS *string `xml:"xmlns:cenc,attr"` // Default: urn:mpeg:cenc:2013
Attrs []*xml.Attr `xml:",any,attr"`
}
type ContentProtectioner ¶
type ContentProtectioner interface {
ContentProtected()
}
type DashProfile ¶
type DashProfile string
Type definition for DASH profiles
const (
// Live Profile
DASH_PROFILE_LIVE DashProfile = "urn:mpeg:dash:profile:isoff-live:2011"
// On Demand Profile
DASH_PROFILE_ONDEMAND DashProfile = "urn:mpeg:dash:profile:isoff-on-demand:2011"
// HbbTV Profile
DASH_PROFILE_HBBTV_1_5_LIVE DashProfile = "urn:hbbtv:dash:profile:isoff-live:2012,urn:mpeg:dash:profile:isoff-live:2011"
)
Constants for supported DASH profiles
type DescriptorType ¶
type DescriptorType struct {
SchemeIDURI *string `xml:"schemeIdUri,attr"`
Value *string `xml:"value,attr"`
ID *string `xml:"id,attr"`
}
type Duration ¶
type Duration time.Duration
func (Duration) MarshalXMLAttr ¶
func (d Duration) MarshalXMLAttr(name xml.Name) (xml.Attr, error)
func (*Duration) String ¶
func (d *Duration) String() string
String renders a Duration in XML Duration Data Type format
func (*Duration) UnmarshalXMLAttr ¶
func (d *Duration) UnmarshalXMLAttr(attr xml.Attr) error
type Event ¶
type Event struct {
XMLName xml.Name `xml:"Event"`
ID *string `xml:"id,attr,omitempty"`
PresentationTime *uint64 `xml:"presentationTime,attr,omitempty"`
Duration *uint64 `xml:"duration,attr,omitempty"`
}
type EventStream ¶
type EventStream struct {
XMLName xml.Name `xml:"EventStream"`
SchemeIDURI *string `xml:"schemeIdUri,attr"`
Value *string `xml:"value,attr,omitempty"`
Timescale *uint `xml:"timescale,attr"`
Events []Event `xml:"Event,omitempty"`
}
type MPD ¶
type MPD struct {
XMLNs *string `xml:"xmlns,attr"`
XMLNsDolby *string `xml:"xmlns:dolby,attr"`
Profiles *string `xml:"profiles,attr"`
Type *string `xml:"type,attr"`
MediaPresentationDuration *string `xml:"mediaPresentationDuration,attr"`
MinBufferTime *string `xml:"minBufferTime,attr"`
AvailabilityStartTime *string `xml:"availabilityStartTime,attr,omitempty"`
MinimumUpdatePeriod *string `xml:"minimumUpdatePeriod,attr"`
PublishTime *string `xml:"publishTime,attr"`
TimeShiftBufferDepth *string `xml:"timeShiftBufferDepth,attr"`
SuggestedPresentationDelay *Duration `xml:"suggestedPresentationDelay,attr,omitempty"`
BaseURL []string `xml:"BaseURL,omitempty"`
Location string `xml:"Location,omitempty"`
Periods []*Period `xml:"Period,omitempty"`
UTCTiming *DescriptorType `xml:"UTCTiming,omitempty"`
// contains filtered or unexported fields
}
func NewDynamicMPD ¶
func NewDynamicMPD(profile DashProfile, availabilityStartTime, minBufferTime string, attributes ...AttrMPD) *MPD
Creates a new dynamic MPD object. profile - DASH Profile (Live or OnDemand). availabilityStartTime - anchor for the computation of the earliest availability time (in UTC). minBufferTime - Min Buffer Time (i.e. PT1.97S). attributes - Other attributes (optional).
func NewMPD ¶
func NewMPD(profile DashProfile, mediaPresentationDuration, minBufferTime string, attributes ...AttrMPD) *MPD
Creates a new static MPD object. profile - DASH Profile (Live or OnDemand). mediaPresentationDuration - Media Presentation Duration (i.e. PT6M16S). minBufferTime - Min Buffer Time (i.e. PT1.97S). attributes - Other attributes (optional).
func Read ¶
func Read(r io.Reader) (*MPD, error)
Reads from an io.Reader interface into an MPD object. r - Must implement the io.Reader interface.
func ReadFromFile ¶
func ReadFromFile(path string) (*MPD, error)
Reads an MPD XML file from disk into a MPD object. path - File path to an MPD on disk
func ReadFromString ¶
func ReadFromString(xmlStr string) (*MPD, error)
Reads a string into a MPD object. xmlStr - MPD manifest data as a string.
func (*MPD) AddNewAdaptationSetAudio ¶
func (m *MPD) AddNewAdaptationSetAudio(mimeType string, segmentAlignment bool, startWithSAP int64, lang string) (*AdaptationSet, error)
Create a new Adaptation Set for Audio Assets. mimeType - MIME Type (i.e. audio/mp4). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1). lang - Language (i.e. en).
func (*MPD) AddNewAdaptationSetAudioWithID ¶
func (m *MPD) AddNewAdaptationSetAudioWithID(id string, mimeType string, segmentAlignment bool, startWithSAP int64, lang string) (*AdaptationSet, error)
Create a new Adaptation Set for Audio Assets. mimeType - MIME Type (i.e. audio/mp4). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1). lang - Language (i.e. en).
func (*MPD) AddNewAdaptationSetSubtitle ¶
func (m *MPD) AddNewAdaptationSetSubtitle(mimeType string, lang string, label string) (*AdaptationSet, error)
Create a new Adaptation Set for Subtitle Assets. mimeType - MIME Type (i.e. text/vtt). lang - Language (i.e. en). label - Label for the subtitle from Studio (i.e. American)
func (*MPD) AddNewAdaptationSetSubtitleWithID ¶
func (m *MPD) AddNewAdaptationSetSubtitleWithID(id string, mimeType string, lang string, label string) (*AdaptationSet, error)
Create a new Adaptation Set for Subtitle Assets. mimeType - MIME Type (i.e. text/vtt). lang - Language (i.e. en). label - Label for the subtitle from Studio (i.e. American)
func (*MPD) AddNewAdaptationSetThumbnails ¶
func (m *MPD) AddNewAdaptationSetThumbnails(mimeType string) (*AdaptationSet, error)
Create a new Adaptation Set for thumbnails. mimeType - e.g. (image/jpeg)
func (*MPD) AddNewAdaptationSetThumbnailsWithID ¶
func (m *MPD) AddNewAdaptationSetThumbnailsWithID(id, mimeType string) (*AdaptationSet, error)
func (*MPD) AddNewAdaptationSetVideo ¶
func (m *MPD) AddNewAdaptationSetVideo(mimeType string, scanType string, segmentAlignment bool, startWithSAP int64) (*AdaptationSet, error)
Create a new Adaptation Set for Video Assets. mimeType - MIME Type (i.e. video/mp4). scanType - Scan Type (i.e.progressive). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1).
func (*MPD) AddNewAdaptationSetVideoWithID ¶
func (m *MPD) AddNewAdaptationSetVideoWithID(id string, mimeType string, scanType string, segmentAlignment bool, startWithSAP int64) (*AdaptationSet, error)
Create a new Adaptation Set for Video Assets. mimeType - MIME Type (i.e. video/mp4). scanType - Scan Type (i.e.progressive). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1).
func (*MPD) AddNewPeriod ¶
func (m *MPD) AddNewPeriod() *Period
AddNewPeriod creates a new Period and make it the currently active one.
func (*MPD) GetCurrentPeriod ¶
func (m *MPD) GetCurrentPeriod() *Period
GetCurrentPeriod returns the current Period.
func (*MPD) SetDolbyXMLNs ¶ added in v3.0.3
func (m *MPD) SetDolbyXMLNs()
func (*MPD) Write ¶
func (m *MPD) Write(w io.Writer) error
Writes an MPD object to an io.Writer interface w - Must implement the io.Writer interface.
func (*MPD) WriteToFile ¶
func (m *MPD) WriteToFile(path string) error
Writes an MPD object to a file on disk. path - Output path to write the manifest to.
func (*MPD) WriteToString ¶
func (m *MPD) WriteToString() (string, error)
Writes an MPD object to a string.
type MultipleSegmentBase ¶
type MultipleSegmentBase struct {
SegmentBase
SegmentTimeline *SegmentTimeline `xml:"SegmentTimeline,omitempty"`
BitstreamSwitching *URL `xml:"BitstreamSwitching,omitempty"`
Duration *uint32 `xml:"duration,attr,omitempty"`
StartNumber *uint32 `xml:"startNumber,attr,omitempty"`
}
type Period ¶
type Period struct {
ID string `xml:"id,attr,omitempty"`
Duration Duration `xml:"duration,attr,omitempty"`
Start *Duration `xml:"start,attr,omitempty"`
BaseURL []string `xml:"BaseURL,omitempty"`
SegmentBase *SegmentBase `xml:"SegmentBase,omitempty"`
SegmentList *SegmentList `xml:"SegmentList,omitempty"`
SegmentTemplate *SegmentTemplate `xml:"SegmentTemplate,omitempty"`
AdaptationSets []*AdaptationSet `xml:"AdaptationSet,omitempty"`
EventStreams []EventStream `xml:"EventStream,omitempty"`
}
func (*Period) AddNewAdaptationSetAudio ¶
func (period *Period) AddNewAdaptationSetAudio(mimeType string, segmentAlignment bool, startWithSAP int64, lang string) (*AdaptationSet, error)
Create a new Adaptation Set for Audio Assets. mimeType - MIME Type (i.e. audio/mp4). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1). lang - Language (i.e. en).
func (*Period) AddNewAdaptationSetAudioWithID ¶
func (period *Period) AddNewAdaptationSetAudioWithID(id string, mimeType string, segmentAlignment bool, startWithSAP int64, lang string) (*AdaptationSet, error)
Create a new Adaptation Set for Audio Assets. mimeType - MIME Type (i.e. audio/mp4). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1). lang - Language (i.e. en).
func (*Period) AddNewAdaptationSetSubtitle ¶
func (period *Period) AddNewAdaptationSetSubtitle(mimeType string, lang string, label string) (*AdaptationSet, error)
Create a new Adaptation Set for Subtitle Assets. mimeType - MIME Type (i.e. text/vtt). lang - Language (i.e. en). label - Label for the subtitle from Studio (i.e. American)
func (*Period) AddNewAdaptationSetSubtitleWithID ¶
func (period *Period) AddNewAdaptationSetSubtitleWithID(id string, mimeType string, lang string, label string) (*AdaptationSet, error)
Create a new Adaptation Set for Subtitle Assets. mimeType - MIME Type (i.e. text/vtt). lang - Language (i.e. en). label - Label for the subtitle from Studio (i.e. American)
func (*Period) AddNewAdaptationSetThumbnails ¶
func (period *Period) AddNewAdaptationSetThumbnails(mimeType string) (*AdaptationSet, error)
func (*Period) AddNewAdaptationSetThumbnailsWithID ¶
func (period *Period) AddNewAdaptationSetThumbnailsWithID(id, mimeType string) (*AdaptationSet, error)
func (*Period) AddNewAdaptationSetVideo ¶
func (period *Period) AddNewAdaptationSetVideo(mimeType string, scanType string, segmentAlignment bool, startWithSAP int64) (*AdaptationSet, error)
Create a new Adaptation Set for Video Assets. mimeType - MIME Type (i.e. video/mp4). scanType - Scan Type (i.e.progressive). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1).
func (*Period) AddNewAdaptationSetVideoWithID ¶
func (period *Period) AddNewAdaptationSetVideoWithID(id string, mimeType string, scanType string, segmentAlignment bool, startWithSAP int64) (*AdaptationSet, error)
Create a new Adaptation Set for Video Assets. mimeType - MIME Type (i.e. video/mp4). scanType - Scan Type (i.e.progressive). segmentAlignment - Segment Alignment(i.e. true). startWithSAP - Starts With SAP (i.e. 1).
func (*Period) SetDuration ¶
func (period *Period) SetDuration(d time.Duration)
type PlayreadyContentProtection ¶
type PlayreadyContentProtection struct {
ContentProtection
PlayreadyXMLNS *string `xml:"mspr,attr,omitempty"`
PRO *string `xml:"pro,omitempty"`
PSSH *string `xml:"pssh,omitempty"`
}
func (PlayreadyContentProtection) MarshalXML ¶
func (s PlayreadyContentProtection) MarshalXML(e *xml.Encoder, start xml.StartElement) error
type PlayreadyContentProtectionMarshal ¶
type PlayreadyContentProtectionMarshal struct {
ContentProtectionMarshal
PlayreadyXMLNS *string `xml:"xmlns:mspr,attr,omitempty"`
PRO *string `xml:"mspr:pro,omitempty"`
PSSH *string `xml:"cenc:pssh,omitempty"`
}
type Representation ¶
type Representation struct {
CommonAttributesAndElements
AdaptationSet *AdaptationSet `xml:"-"`
AudioChannelConfiguration *AudioChannelConfiguration `xml:"AudioChannelConfiguration,omitempty"`
AudioSamplingRate *int64 `xml:"audioSamplingRate,attr"` // Audio
Bandwidth *int64 `xml:"bandwidth,attr"` // Audio + Video
Codecs *string `xml:"codecs,attr"` // Audio + Video
FrameRate *string `xml:"frameRate,attr,omitempty"` // Video
Height *int64 `xml:"height,attr"` // Video
ID *string `xml:"id,attr"` // Audio + Video
Width *int64 `xml:"width,attr"` // Video
BaseURL []string `xml:"BaseURL,omitempty"` // On-Demand Profile
SegmentBase *SegmentBase `xml:"SegmentBase,omitempty"` // On-Demand Profile
SegmentList *SegmentList `xml:"SegmentList,omitempty"`
SegmentTemplate *SegmentTemplate `xml:"SegmentTemplate,omitempty"`
}
func (*Representation) AddNewAudioChannelConfiguration ¶
func (r *Representation) AddNewAudioChannelConfiguration(scheme AudioChannelConfigurationScheme, channelConfiguration string) (*AudioChannelConfiguration, error)
Sets a new AudioChannelConfiguration on a Representation. This is required for the HbbTV profile. scheme - One of the two AudioConfigurationSchemes. channelConfiguration - string that represents the channel configuration.
func (*Representation) AddNewBaseURL ¶ added in v3.0.3
func (r *Representation) AddNewBaseURL(baseURL string) error
Sets the BaseURL for a Representation. baseURL - Base URL as a string (i.e. 800k/output-audio-und.mp4)
func (*Representation) AddNewInbandEventStream ¶ added in v3.0.3
func (r *Representation) AddNewInbandEventStream(uri string, val string) error
AddNewInbandEventStream - Adds a new InbandEventStream Descriptor to a Representation uri - Scheme ID URI for the inband event stream val - value for inband event stream
func (*Representation) AddNewSegmentBase ¶
func (r *Representation) AddNewSegmentBase(indexRange string, initRange string) (*SegmentBase, error)
Sets a new SegmentBase on a Representation. This is for On Demand profile. indexRange - Byte range to the index (sidx)atom. init - Byte range to the init atoms (ftyp+moov).
func (*Representation) SetNewBaseURL ¶
func (r *Representation) SetNewBaseURL(baseURL string) error
Sets the BaseURL for a Representation. baseURL - Base URL as a string (i.e. 800k/output-audio-und.mp4)
type Role ¶
type Role struct {
AdaptationSet *AdaptationSet `xml:"-"`
SchemeIDURI *string `xml:"schemeIdUri,attr"`
Value *string `xml:"value,attr"`
}
type SegmentBase ¶
type SegmentBase struct {
Initialization *URL `xml:"Initialization,omitempty"`
RepresentationIndex *URL `xml:"RepresentationIndex,omitempty"`
Timescale *uint32 `xml:"timescale,attr,omitempty"`
PresentationTimeOffset *uint64 `xml:"presentationTimeOffset,attr,omitempty"`
IndexRange *string `xml:"indexRange,attr,omitempty"`
IndexRangeExact *bool `xml:"indexRangeExact,attr,omitempty"`
AvailabilityTimeOffset *float32 `xml:"availabilityTimeOffset,attr,omitempty"`
AvailabilityTimeComplete *bool `xml:"availabilityTimeComplete,attr,omitempty"`
}
type SegmentList ¶
type SegmentList struct {
MultipleSegmentBase
SegmentURLs []*SegmentURL `xml:"SegmentURL,omitempty"`
}
type SegmentTemplate ¶
type SegmentTemplate struct {
AdaptationSet *AdaptationSet `xml:"-"`
SegmentTimeline *SegmentTimeline `xml:"SegmentTimeline,omitempty"`
PresentationTimeOffset *uint64 `xml:"presentationTimeOffset,attr,omitempty"`
Duration *int64 `xml:"duration,attr"`
Initialization *string `xml:"initialization,attr"`
Media *string `xml:"media,attr"`
StartNumber *int64 `xml:"startNumber,attr"`
Timescale *int64 `xml:"timescale,attr"`
}
Segment Template is for Live Profile Only
type SegmentTimeline ¶
type SegmentTimeline struct {
Segments []*SegmentTimelineSegment `xml:"S,omitempty"`
}
type SegmentTimelineSegment ¶
type SegmentTimelineSegment struct {
StartTime *uint64 `xml:"t,attr,omitempty"`
Duration uint64 `xml:"d,attr"`
RepeatCount *int `xml:"r,attr,omitempty"`
}
type SegmentURL ¶
type SegmentURL struct {
Media *string `xml:"media,attr,omitempty"`
MediaRange *string `xml:"mediaRange,attr,omitempty"`
Index *string `xml:"index,attr,omitempty"`
IndexRange *string `xml:"indexRange,attr,omitempty"`
}
type URL ¶
type URL struct {
SourceURL *string `xml:"sourceURL,attr,omitempty"`
Range *string `xml:"range,attr,omitempty"`
}
type WidevineContentProtection ¶
type WidevineContentProtection struct {
ContentProtection
PSSH *string `xml:"pssh,omitempty"`
}
func NewWidevineContentProtection ¶
func NewWidevineContentProtection(wvHeader []byte) (*WidevineContentProtection, error)
func (WidevineContentProtection) MarshalXML ¶
func (s WidevineContentProtection) MarshalXML(e *xml.Encoder, start xml.StartElement) error
type WidevineContentProtectionMarshal ¶
type WidevineContentProtectionMarshal struct {
ContentProtectionMarshal
PSSH *string `xml:"cenc:pssh,omitempty"`
}