Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Playlist ¶
type Playlist struct {
// Name video playlist name
Name string `json:"name" validate:"required"`
// CreatedAt when the playlist was created
CreatedAt time.Time `json:"created_at" validate:"required"`
// Version EXT-X-VERSION value
Version int `json:"version"`
// TargetSegDuration target segment duration
TargetSegDuration float64 `json:"duration" validate:"required"`
// MediaSequenceVal if specified, the "#EXT-X-MEDIA-SEQUENCE:" value
MediaSequenceVal *int `json:"start_seq_num,omitempty"`
// Segments list of TS segments associated with this playlist
Segments []Segment `json:"segments" validate:"required,gt=0,dive"`
}
Playlist represents a HLS playlist
func (*Playlist) AddMediaSequenceVal ¶
AddMediaSequenceVal define a media sequence value for the playlist based on a reference time and the start time of the first segment in the playlist.
@param reference time.Time - reference time to compare against
type PlaylistParser ¶
type PlaylistParser interface {
/*
ParsePlaylist parse a HLS playlist to get the playlist properties, and the associated segments,
The playlist is expected to be already parsed into a list of strings. The expected structure
of a HLS playlist
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4.000000,
vid-1684541470.ts
#EXT-X-ENDLIST
@param ctxt context.Context - execution context
@param content []string - HLS playlist content
@param timestamp time.Time - When the playlist is generated
@param playlistName string - alias name assigned to associated with the playlist
@param segmentBaseURI string - base URI of individual segments
@returns parsed playlist
*/
ParsePlaylist(
ctxt context.Context,
content []string,
timestamp time.Time,
playlistName string,
segmentBaseURI string,
) (Playlist, error)
}
PlaylistParser HLS playlist parser
func NewPlaylistParser ¶
func NewPlaylistParser() PlaylistParser
NewPlaylistParser define new playlist parser
@returns parser
type Segment ¶
type Segment struct {
// Name segment name
Name string `json:"name" validate:"required" gorm:"column:name;not null;primaryKey"`
// StartTime when segment was first seen
StartTime time.Time `json:"start" validate:"required" gorm:"column:start_ts;not null"`
// EndTime end of segment timestamp
EndTime time.Time `json:"end" validate:"required" gorm:"column:end_ts;not null;primaryKey"`
// Length segment length in time
Length float64 `json:"length" validate:"required" gorm:"column:length;not null"`
// URI video segment storage URI
URI string `json:"uri" validate:"required,uri" gorm:"column:uri;not null"`
}
Segment represents a HLS TS segment
func (Segment) GetDuration ¶
GetDuration helper function to convert `Length` to a `time.Duration` field.
@returns segment duration
Click to show internal directories.
Click to hide internal directories.