Documentation ¶
Index ¶
- type ExtendedPacket
- type Mode
- type Publisher
- func (p *Publisher) Close()
- func (p *Publisher) Discontinuity()
- func (p *Publisher) MPD() string
- func (p *Publisher) Playlist() string
- func (p *Publisher) ServeHTTP(rw http.ResponseWriter, req *http.Request)
- func (p *Publisher) Tail(rw http.ResponseWriter, req *http.Request)
- func (p *Publisher) WriteExtendedPacket(pkt ExtendedPacket) error
- func (p *Publisher) WriteHeader(streams []av.CodecData) error
- func (p *Publisher) WritePacket(pkt av.Packet) error
- func (p *Publisher) WriteTrailer() error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ExtendedPacket ¶ added in v1.1.0
type ExtendedPacket struct { av.Packet // ProgramTime indicates the wall-clock time of a keyframe packet ProgramTime time.Time }
ExtendedPacket holds a packet with additional metadata for the HLS playlist
type Mode ¶ added in v1.3.0
type Mode int
Mode defines the operating mode of the publisher
const ( // ModeSingleTrack uses a single HLS playlist and track. DASH is not available. This is the default. ModeSingleTrack Mode = iota // ModeSeparateTracks puts audio and video in separate tracks for both HLS // and DASH. HLS uses a master playlist and may not be compatible with some // devices. ModeSeparateTracks // ModeSingleAndSeparate uses a single track for HLS and separate tracks for // DASH. This requires twice as much memory. The HLS track will use a // simpler format compatible with certain mobile devices. ModeSingleAndSeparate )
type Publisher ¶
type Publisher struct { // Mode defines the operating mode of the publisher Mode Mode // InitialDuration is a guess for the TARGETDURATION field in the playlist, // used until the first segment is complete. Defaults to 5s. InitialDuration time.Duration // BufferLength is the approximate duration spanned by all the segments in the playlist. Old segments are removed until the playlist length is less than this value. BufferLength time.Duration // FragmentLength is the size of MP4 fragments to break each segment into. Defaults to 200ms. FragmentLength time.Duration // WorkDir is a temporary storage location for segments. Can be empty, in which case the default system temp dir is used. WorkDir string // Prefetch reveals upcoming segments before they begin so the client can initiate the download early Prefetch bool // BlockMPD causes conditional DASH playlist fetches to block until an updated version is ready BlockMPD bool // Precreate is deprecated and no longer used Precreate int // contains filtered or unexported fields }
Publisher implements a live HLS stream server
func (*Publisher) Close ¶ added in v0.3.0
func (p *Publisher) Close()
Close frees resources associated with the publisher
func (*Publisher) Discontinuity ¶
func (p *Publisher) Discontinuity()
Discontinuity inserts a marker into the playlist before the next segment indicating that the decoder should be reset
func (*Publisher) MPD ¶ added in v1.2.0
MPD returns the filename of the DASH MPD or "" if it is unavailable
func (*Publisher) ServeHTTP ¶
func (p *Publisher) ServeHTTP(rw http.ResponseWriter, req *http.Request)
serve the HLS playlist and segments
func (*Publisher) Tail ¶ added in v1.5.0
func (p *Publisher) Tail(rw http.ResponseWriter, req *http.Request)
Tail serves the video as one continuous stream, starting from the next segment.
func (*Publisher) WriteExtendedPacket ¶ added in v1.1.0
func (p *Publisher) WriteExtendedPacket(pkt ExtendedPacket) error
WriteExtendedPacket publishes a packet with additional metadata
func (*Publisher) WriteHeader ¶
WriteHeader initializes the streams' codec data and must be called before the first WritePacket
func (*Publisher) WritePacket ¶
WritePacket publishes a single packet
func (*Publisher) WriteTrailer ¶
WriteTrailer does nothing, but fulfills av.Muxer