Documentation
¶
Overview ¶
Core contains the main functionality of the Livepeer node.
The logical orgnization of the `core` module is as follows:
livepeernode.go: Main struct definition and code that is common to all node types. broadcaster.go: Code that is called only when the node is in broadcaster mode. orchestrator.go: Code that is called only when the node is in orchestrator mode.
Object store helper functions
Index ¶
- Constants
- Variables
- func CapabilityToName(capability Capability) (string, error)
- func FromNetOsInfo(os *net.OSInfo) *drivers.OSInfo
- func FromNetS3Info(storage *net.S3OSInfo) *drivers.S3OSInfo
- func GetSegmentData(ctx context.Context, uri string) ([]byte, error)
- func GetTranscoderFactoryByAccel(acceleration ffmpeg.Acceleration) (func(device string) TranscoderSession, error)
- func InArray(capability Capability, caps []Capability) bool
- func NetSegData(md *SegTranscodingMetadata) (*net.SegData, error)
- func NewBroadcaster(node *LivepeerNode) *broadcaster
- func NewOrchestrator(n *LivepeerNode, rm common.RoundsManager) *orchestrator
- func NewRemoteTranscoderFatalError(err error) error
- func ToNetOSInfo(os *drivers.OSInfo) *net.OSInfo
- func ToNetS3Info(storage *drivers.S3OSInfo) *net.S3OSInfo
- type AddressBalances
- func (a *AddressBalances) Balance(addr ethcommon.Address, id ManifestID) *big.Rat
- func (a *AddressBalances) Credit(addr ethcommon.Address, id ManifestID, amount *big.Rat)
- func (a *AddressBalances) Debit(addr ethcommon.Address, id ManifestID, amount *big.Rat)
- func (a *AddressBalances) Reserve(addr ethcommon.Address, id ManifestID) *big.Rat
- func (a *AddressBalances) StopCleanup()
- type AutoConvertedPrice
- type Balance
- type Balances
- func (b *Balances) Balance(id ManifestID) *big.Rat
- func (b *Balances) Credit(id ManifestID, amount *big.Rat)
- func (b *Balances) Debit(id ManifestID, amount *big.Rat)
- func (b *Balances) FixedPrice(id ManifestID) *big.Rat
- func (b *Balances) Reserve(id ManifestID) *big.Rat
- func (b *Balances) SetFixedPrice(id ManifestID, fixedPrice *big.Rat)
- func (b *Balances) StartCleanup()
- func (b *Balances) StopCleanup()
- type BasicPlaylistManager
- func (mgr *BasicPlaylistManager) Cleanup()
- func (mgr *BasicPlaylistManager) FlushRecord()
- func (mgr *BasicPlaylistManager) GetHLSMasterPlaylist() *m3u8.MasterPlaylist
- func (mgr *BasicPlaylistManager) GetHLSMediaPlaylist(rendition string) *m3u8.MediaPlaylist
- func (mgr *BasicPlaylistManager) GetOSSession() drivers.OSSession
- func (mgr *BasicPlaylistManager) GetRecordOSSession() drivers.OSSession
- func (mgr *BasicPlaylistManager) InsertHLSSegment(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64) error
- func (mgr *BasicPlaylistManager) InsertHLSSegmentJSON(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64)
- func (mgr *BasicPlaylistManager) ManifestID() ManifestID
- type Capabilities
- func (cap *Capabilities) AddCapacity(newCaps *Capabilities)
- func (bcast *Capabilities) CompatibleWith(orch *net.Capabilities) bool
- func (bcast *Capabilities) LegacyOnly() bool
- func (cap *Capabilities) RemoveCapacity(goneCaps *Capabilities)
- func (c *Capabilities) ToNetCapabilities() *net.Capabilities
- type Capability
- func DefaultCapabilities() []Capability
- func MandatoryOCapabilities() []Capability
- func OptionalCapabilities() []Capability
- func TestSoftwareTranscoderCapabilities(tmpdir string) (caps []Capability, fatalError error)
- func TestTranscoderCapabilities(devices []string, tf func(device string) TranscoderSession) (caps []Capability, fatalError error)
- type CapabilityString
- type CapabilityTest
- type Constraints
- type JsonMediaTrack
- type JsonPlaylist
- func (jpl *JsonPlaylist) AddDiscontinuedTrack(ajpl *JsonPlaylist, trackName string)
- func (jpl *JsonPlaylist) AddMaster(ajpl *JsonPlaylist)
- func (jpl *JsonPlaylist) AddSegmentsToMPL(manifestIDs []string, trackName string, mpl *m3u8.MediaPlaylist, extURL string)
- func (jpl *JsonPlaylist) AddTrack(ajpl *JsonPlaylist, trackName string)
- func (jpl *JsonPlaylist) InsertHLSSegment(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64)
- type LivepeerNode
- func (node *LivepeerNode) EndTranscodingSession(sessionId string)
- func (n *LivepeerNode) GetBasePrice(b_eth_addr string) *big.Rat
- func (n *LivepeerNode) GetBasePrices() map[string]*big.Rat
- func (n *LivepeerNode) GetCurrentCapacity() int
- func (n *LivepeerNode) GetServiceURI() *url.URL
- func (n *LivepeerNode) SetBasePrice(b_eth_addr string, price *AutoConvertedPrice)
- func (n *LivepeerNode) SetMaxFaceValue(maxfacevalue *big.Int)
- func (n *LivepeerNode) SetMaxSessions(s int)
- func (n *LivepeerNode) SetServiceURI(newUrl *url.URL)
- type LoadBalancingTranscoder
- type LocalTranscoder
- type ManifestID
- type NetintTranscoder
- type NodeType
- type NvidiaTranscoder
- type PlaylistManager
- type RemoteTranscoder
- type RemoteTranscoderFatalError
- type RemoteTranscoderManager
- func (node *RemoteTranscoderManager) EndTranscodingSession(sessionId string)
- func (rtm *RemoteTranscoderManager) Manage(stream net.Transcoder_RegisterTranscoderServer, capacity int, ...)
- func (rtm *RemoteTranscoderManager) RegisteredTranscodersCount() int
- func (rtm *RemoteTranscoderManager) RegisteredTranscodersInfo() []common.RemoteTranscoderInfo
- func (rtm *RemoteTranscoderManager) Transcode(ctx context.Context, md *SegTranscodingMetadata) (*TranscodeData, error)
- type RemoteTranscoderResult
- type SegChanData
- type SegTranscodingMetadata
- type SegmentChan
- type SegmentClip
- type SegmentParameters
- type StreamID
- type StreamParameters
- type TranscodeData
- type TranscodeResult
- type TranscodedSegmentData
- type Transcoder
- type TranscoderChan
- type TranscoderSession
- type UnrecoverableError
Constants ¶
const ( JsonPlaylistInitialTimeout = 5 * time.Second JsonPlaylistMaxTimeout = 120 * time.Second )
const (
DefaultManifestIDLength = 4
)
const LIVE_LIST_LENGTH uint = 6
Variables ¶
var CapabilityNameLookup = map[Capability]string{ Capability_Invalid: "Invalid", Capability_Unused: "Unused", Capability_H264: "H.264", Capability_MPEGTS: "MPEGTS", Capability_MP4: "MP4", Capability_FractionalFramerates: "Fractional framerates", Capability_StorageDirect: "Storage direct", Capability_StorageS3: "Storage S3", Capability_StorageGCS: "Storage GCS", Capability_ProfileH264Baseline: "H264 Baseline profile", Capability_ProfileH264Main: "H264 Main profile", Capability_ProfileH264High: "H264 High profile", Capability_ProfileH264ConstrainedHigh: "H264 Constained High profile", Capability_GOP: "GOP", Capability_AuthToken: "Auth token", Capability_MPEG7VideoSignature: "MPEG7 signature", Capability_HEVC_Decode: "HEVC decode", Capability_HEVC_Encode: "HEVC encode", Capability_VP8_Decode: "VP8 decode", Capability_VP9_Decode: "VP9 decode", Capability_VP8_Encode: "VP8 encode", Capability_VP9_Encode: "VP9 encode", Capability_H264_Decode_444_8bit: "H264 Decode YUV444 8-bit", Capability_H264_Decode_422_8bit: "H264 Decode YUV422 8-bit", Capability_H264_Decode_444_10bit: "H264 Decode YUV444 10-bit", Capability_H264_Decode_422_10bit: "H264 Decode YUV422 10-bit", Capability_H264_Decode_420_10bit: "H264 Decode YUV420 10-bit", Capability_SegmentSlicing: "Segment slicing", }
var CapabilityTestLookup = map[Capability]CapabilityTest{ Capability_H264: { // contains filtered or unexported fields }, Capability_HEVC_Decode: { // contains filtered or unexported fields }, Capability_HEVC_Encode: { // contains filtered or unexported fields }, Capability_VP8_Decode: { // contains filtered or unexported fields }, Capability_VP9_Decode: { // contains filtered or unexported fields }, Capability_H264_Decode_444_8bit: { // contains filtered or unexported fields }, Capability_H264_Decode_422_8bit: { // contains filtered or unexported fields }, Capability_H264_Decode_444_10bit: { // contains filtered or unexported fields }, Capability_H264_Decode_422_10bit: { // contains filtered or unexported fields }, Capability_H264_Decode_420_10bit: { // contains filtered or unexported fields }, }
var ErrManifestID = errors.New("ErrManifestID")
var ErrNoCompatibleTranscodersAvailable = errors.New("no transcoders can provide requested capabilities")
var ErrNoTranscodersAvailable = errors.New("no transcoders available")
var ErrOrchBusy = errors.New("OrchestratorBusy")
var ErrOrchCap = errors.New("OrchestratorCapped")
var ErrRemoteTranscoderTimeout = errors.New("Remote transcoder took too long")
var ErrTranscode = errors.New("ErrTranscode")
var ErrTranscoderAvail = errors.New("ErrTranscoderUnavailable")
var ErrTranscoderBusy = errors.New("TranscoderBusy")
var ErrTranscoderStopped = errors.New("TranscoderStopped")
var JsonPlaylistQuitTimeout = 60 * time.Second
var LivepeerVersion = "undefined"
LivepeerVersion node version content of this constant will be set at build time, using -ldflags, combining content of `VERSION` file and output of the `git describe` command.
var MaxSessions = 10
var PriceFeedWatcher watchers.PriceFeedWatcher
PriceFeedWatcher is a global instance of a PriceFeedWatcher. It must be initialized before creating an AutoConvertedPrice instance.
var WorkDir string
Functions ¶
func CapabilityToName ¶ added in v0.5.29
func CapabilityToName(capability Capability) (string, error)
func GetSegmentData ¶ added in v0.5.34
func GetTranscoderFactoryByAccel ¶ added in v0.5.30
func GetTranscoderFactoryByAccel(acceleration ffmpeg.Acceleration) (func(device string) TranscoderSession, error)
func InArray ¶ added in v0.5.29
func InArray(capability Capability, caps []Capability) bool
func NetSegData ¶ added in v0.5.9
func NetSegData(md *SegTranscodingMetadata) (*net.SegData, error)
func NewBroadcaster ¶ added in v0.3.3
func NewBroadcaster(node *LivepeerNode) *broadcaster
func NewOrchestrator ¶ added in v0.3.3
func NewOrchestrator(n *LivepeerNode, rm common.RoundsManager) *orchestrator
func NewRemoteTranscoderFatalError ¶ added in v0.5.0
NewRemoteTranscoderFatalError creates new RemoteTranscoderFatalError Exported here to be used in other packages
Types ¶
type AddressBalances ¶ added in v0.5.0
type AddressBalances struct {
// contains filtered or unexported fields
}
AddressBalances holds credit balances for ETH addresses
func NewAddressBalances ¶ added in v0.5.0
func NewAddressBalances(ttl time.Duration) *AddressBalances
NewAddressBalances creates a new AddressBalances instance
func (*AddressBalances) Balance ¶ added in v0.5.0
func (a *AddressBalances) Balance(addr ethcommon.Address, id ManifestID) *big.Rat
Balance retrieves the current balance for an address' ManifestID
func (*AddressBalances) Credit ¶ added in v0.5.0
func (a *AddressBalances) Credit(addr ethcommon.Address, id ManifestID, amount *big.Rat)
Credit adds an an amount to the balance for an address' ManifestID
func (*AddressBalances) Debit ¶ added in v0.5.0
func (a *AddressBalances) Debit(addr ethcommon.Address, id ManifestID, amount *big.Rat)
Debit subtracts an amount from the balance for an address' ManifestID
func (*AddressBalances) Reserve ¶ added in v0.5.0
func (a *AddressBalances) Reserve(addr ethcommon.Address, id ManifestID) *big.Rat
Reserve zeros the balance for an address' ManifestID and returns the current balance
func (*AddressBalances) StopCleanup ¶ added in v0.5.0
func (a *AddressBalances) StopCleanup()
StopCleanup stops the cleanup loop for all balances
type AutoConvertedPrice ¶ added in v0.7.3
type AutoConvertedPrice struct {
// contains filtered or unexported fields
}
AutoConvertedPrice represents a price that is automatically converted to wei based on the current price of ETH in a given currency. It uses the static PriceFeedWatcher that must be configured before creating an instance.
func NewAutoConvertedPrice ¶ added in v0.7.3
func NewAutoConvertedPrice(currency string, basePrice *big.Rat, onUpdate func(*big.Rat)) (*AutoConvertedPrice, error)
NewAutoConvertedPrice creates a new AutoConvertedPrice instance with the given currency and base price. The onUpdate function is optional and gets called whenever the price is updated (also with the initial price). The Stop function must be called to free resources when the price is no longer needed.
func NewFixedPrice ¶ added in v0.7.3
func NewFixedPrice(price *big.Rat) *AutoConvertedPrice
NewFixedPrice creates a new AutoConvertedPrice with a fixed price in wei.
func (*AutoConvertedPrice) Stop ¶ added in v0.7.3
func (a *AutoConvertedPrice) Stop()
Stop unsubscribes from the price feed and frees resources from the auto-conversion loop.
func (*AutoConvertedPrice) Value ¶ added in v0.7.3
func (a *AutoConvertedPrice) Value() *big.Rat
Value returns the current price in wei.
type Balance ¶ added in v0.5.0
type Balance struct {
// contains filtered or unexported fields
}
Balance holds the credit balance for a broadcast session
func NewBalance ¶ added in v0.5.0
func NewBalance(addr ethcommon.Address, manifestID ManifestID, balances *AddressBalances) *Balance
NewBalance returns a Balance instance
func (*Balance) StageUpdate ¶ added in v0.5.0
StageUpdate prepares a balance update by reserving the current balance and returning the number of tickets to send with a payment, the new credit represented by the payment and the existing credit (i.e reserved balance)
type Balances ¶ added in v0.5.0
type Balances struct {
// contains filtered or unexported fields
}
Balances holds credit balances on a per-stream basis
func NewBalances ¶ added in v0.5.0
NewBalances creates a Balances instance with the given ttl
func (*Balances) Balance ¶ added in v0.5.0
func (b *Balances) Balance(id ManifestID) *big.Rat
Balance retrieves the current balance for a ManifestID
func (*Balances) Credit ¶ added in v0.5.0
func (b *Balances) Credit(id ManifestID, amount *big.Rat)
Credit adds an an amount to the balance for a ManifestID
func (*Balances) Debit ¶ added in v0.5.0
func (b *Balances) Debit(id ManifestID, amount *big.Rat)
Debit subtracts an amount from the balance for a ManifestID
func (*Balances) FixedPrice ¶ added in v0.7.2
func (b *Balances) FixedPrice(id ManifestID) *big.Rat
FixedPrice retrieves the price fixed the given session
func (*Balances) Reserve ¶ added in v0.5.0
func (b *Balances) Reserve(id ManifestID) *big.Rat
Reserve zeros the balance for a ManifestID and returns the current balance
func (*Balances) SetFixedPrice ¶ added in v0.7.2
func (b *Balances) SetFixedPrice(id ManifestID, fixedPrice *big.Rat)
SetFixedPrice sets fixed price for the given session
func (*Balances) StartCleanup ¶ added in v0.5.0
func (b *Balances) StartCleanup()
StartCleanup is a state flushing method to clean up the balances mapping
func (*Balances) StopCleanup ¶ added in v0.5.0
func (b *Balances) StopCleanup()
StopCleanup stops the cleanup loop for Balances
type BasicPlaylistManager ¶ added in v0.5.0
type BasicPlaylistManager struct {
// contains filtered or unexported fields
}
func NewBasicPlaylistManager ¶ added in v0.5.0
func NewBasicPlaylistManager(manifestID ManifestID, storageSession, recordSession drivers.OSSession) *BasicPlaylistManager
NewBasicPlaylistManager create new BasicPlaylistManager struct
func (*BasicPlaylistManager) Cleanup ¶ added in v0.5.0
func (mgr *BasicPlaylistManager) Cleanup()
func (*BasicPlaylistManager) FlushRecord ¶ added in v0.5.13
func (mgr *BasicPlaylistManager) FlushRecord()
func (*BasicPlaylistManager) GetHLSMasterPlaylist ¶ added in v0.5.0
func (mgr *BasicPlaylistManager) GetHLSMasterPlaylist() *m3u8.MasterPlaylist
GetHLSMasterPlaylist ..
func (*BasicPlaylistManager) GetHLSMediaPlaylist ¶ added in v0.5.0
func (mgr *BasicPlaylistManager) GetHLSMediaPlaylist(rendition string) *m3u8.MediaPlaylist
GetHLSMediaPlaylist ...
func (*BasicPlaylistManager) GetOSSession ¶ added in v0.5.0
func (mgr *BasicPlaylistManager) GetOSSession() drivers.OSSession
func (*BasicPlaylistManager) GetRecordOSSession ¶ added in v0.5.13
func (mgr *BasicPlaylistManager) GetRecordOSSession() drivers.OSSession
func (*BasicPlaylistManager) InsertHLSSegment ¶ added in v0.5.0
func (mgr *BasicPlaylistManager) InsertHLSSegment(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64) error
func (*BasicPlaylistManager) InsertHLSSegmentJSON ¶ added in v0.5.13
func (mgr *BasicPlaylistManager) InsertHLSSegmentJSON(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64)
func (*BasicPlaylistManager) ManifestID ¶ added in v0.5.0
func (mgr *BasicPlaylistManager) ManifestID() ManifestID
type Capabilities ¶ added in v0.5.10
type Capabilities struct {
// contains filtered or unexported fields
}
func CapabilitiesFromNetCapabilities ¶ added in v0.5.10
func CapabilitiesFromNetCapabilities(caps *net.Capabilities) *Capabilities
func JobCapabilities ¶ added in v0.5.10
func JobCapabilities(params *StreamParameters, segPar *SegmentParameters) (*Capabilities, error)
func NewCapabilities ¶ added in v0.5.10
func NewCapabilities(caps []Capability, m []Capability) *Capabilities
func (*Capabilities) AddCapacity ¶ added in v0.5.30
func (cap *Capabilities) AddCapacity(newCaps *Capabilities)
func (*Capabilities) CompatibleWith ¶ added in v0.5.10
func (bcast *Capabilities) CompatibleWith(orch *net.Capabilities) bool
func (*Capabilities) LegacyOnly ¶ added in v0.5.10
func (bcast *Capabilities) LegacyOnly() bool
func (*Capabilities) RemoveCapacity ¶ added in v0.5.30
func (cap *Capabilities) RemoveCapacity(goneCaps *Capabilities)
func (*Capabilities) ToNetCapabilities ¶ added in v0.5.10
func (c *Capabilities) ToNetCapabilities() *net.Capabilities
type Capability ¶ added in v0.5.10
type Capability int
const ( Capability_Invalid Capability = iota - 2 Capability_Unused Capability_H264 Capability_MPEGTS Capability_MP4 Capability_FractionalFramerates Capability_StorageDirect Capability_StorageS3 Capability_StorageGCS Capability_ProfileH264Baseline Capability_ProfileH264Main Capability_ProfileH264High Capability_ProfileH264ConstrainedHigh Capability_GOP Capability_AuthToken Capability_SceneClassification // Deprecated, but can't remove because of Capability ordering Capability_MPEG7VideoSignature Capability_HEVC_Decode Capability_HEVC_Encode Capability_VP8_Decode Capability_VP9_Decode Capability_VP8_Encode Capability_VP9_Encode Capability_H264_Decode_444_8bit Capability_H264_Decode_422_8bit Capability_H264_Decode_444_10bit Capability_H264_Decode_422_10bit Capability_H264_Decode_420_10bit Capability_SegmentSlicing )
Do not rearrange these values! Only append.
func DefaultCapabilities ¶ added in v0.5.19
func DefaultCapabilities() []Capability
func MandatoryOCapabilities ¶ added in v0.5.28
func MandatoryOCapabilities() []Capability
func OptionalCapabilities ¶ added in v0.5.28
func OptionalCapabilities() []Capability
func TestSoftwareTranscoderCapabilities ¶ added in v0.5.30
func TestSoftwareTranscoderCapabilities(tmpdir string) (caps []Capability, fatalError error)
func TestTranscoderCapabilities ¶ added in v0.5.28
func TestTranscoderCapabilities(devices []string, tf func(device string) TranscoderSession) (caps []Capability, fatalError error)
Test which capabilities transcoder supports
type CapabilityString ¶ added in v0.5.10
type CapabilityString []uint64
func NewCapabilityString ¶ added in v0.5.10
func NewCapabilityString(caps []Capability) CapabilityString
func (CapabilityString) CompatibleWith ¶ added in v0.5.10
func (c1 CapabilityString) CompatibleWith(c2 CapabilityString) bool
type CapabilityTest ¶ added in v0.5.28
type CapabilityTest struct {
// contains filtered or unexported fields
}
type Constraints ¶ added in v0.5.10
type Constraints struct{}
type JsonMediaTrack ¶ added in v0.5.13
type JsonPlaylist ¶ added in v0.5.13
type JsonPlaylist struct { DurationMs uint64 `json:"duration_ms,omitempty"` // total duration of the saved sagments Tracks []JsonMediaTrack `json:"tracks,omitempty"` Segments map[string][]jsonSeg `json:"segments,omitempty"` // contains filtered or unexported fields }
func NewJSONPlaylist ¶ added in v0.5.13
func NewJSONPlaylist() *JsonPlaylist
func (*JsonPlaylist) AddDiscontinuedTrack ¶ added in v0.5.13
func (jpl *JsonPlaylist) AddDiscontinuedTrack(ajpl *JsonPlaylist, trackName string)
AddDiscontinuedTrack appends all segments for specified rendition, mark first one as discontinued
func (*JsonPlaylist) AddMaster ¶ added in v0.5.13
func (jpl *JsonPlaylist) AddMaster(ajpl *JsonPlaylist)
AddMaster adds data about tracks
func (*JsonPlaylist) AddSegmentsToMPL ¶ added in v0.5.13
func (jpl *JsonPlaylist) AddSegmentsToMPL(manifestIDs []string, trackName string, mpl *m3u8.MediaPlaylist, extURL string)
AddSegmentsToMPL adds segments to the MediaPlaylist
func (*JsonPlaylist) AddTrack ¶ added in v0.5.13
func (jpl *JsonPlaylist) AddTrack(ajpl *JsonPlaylist, trackName string)
AddTrack adds segments data for specified rendition
func (*JsonPlaylist) InsertHLSSegment ¶ added in v0.5.13
func (jpl *JsonPlaylist) InsertHLSSegment(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64)
type LivepeerNode ¶
type LivepeerNode struct { // Common fields Eth eth.LivepeerEthClient WorkDir string NodeType NodeType Database *common.DB // Transcoder public fields SegmentChans map[ManifestID]SegmentChan Recipient pm.Recipient SelectionAlgorithm common.SelectionAlgorithm OrchestratorPool common.OrchestratorPool OrchPerfScore *common.PerfScore OrchSecret string Transcoder Transcoder TranscoderManager *RemoteTranscoderManager Balances *AddressBalances Capabilities *Capabilities AutoAdjustPrice bool AutoSessionLimit bool // Broadcaster public fields Sender pm.Sender StorageConfigs map[string]*transcodeConfig // contains filtered or unexported fields }
LivepeerNode handles videos going in and coming out of the Livepeer network.
func NewLivepeerNode ¶
func NewLivepeerNode(e eth.LivepeerEthClient, wd string, dbh *common.DB) (*LivepeerNode, error)
NewLivepeerNode creates a new Livepeer Node. Eth can be nil.
func (*LivepeerNode) EndTranscodingSession ¶ added in v0.5.35
func (node *LivepeerNode) EndTranscodingSession(sessionId string)
ends transcoding session and releases resources
func (*LivepeerNode) GetBasePrice ¶ added in v0.5.0
func (n *LivepeerNode) GetBasePrice(b_eth_addr string) *big.Rat
GetBasePrice gets the base price for an orchestrator
func (*LivepeerNode) GetBasePrices ¶ added in v0.5.35
func (n *LivepeerNode) GetBasePrices() map[string]*big.Rat
func (*LivepeerNode) GetCurrentCapacity ¶ added in v0.7.0
func (n *LivepeerNode) GetCurrentCapacity() int
func (*LivepeerNode) GetServiceURI ¶ added in v0.5.0
func (n *LivepeerNode) GetServiceURI() *url.URL
func (*LivepeerNode) SetBasePrice ¶ added in v0.5.0
func (n *LivepeerNode) SetBasePrice(b_eth_addr string, price *AutoConvertedPrice)
SetBasePrice sets the base price for an orchestrator on the node
func (*LivepeerNode) SetMaxFaceValue ¶ added in v0.5.32
func (n *LivepeerNode) SetMaxFaceValue(maxfacevalue *big.Int)
SetMaxFaceValue sets the faceValue upper limit for tickets received
func (*LivepeerNode) SetMaxSessions ¶ added in v0.7.0
func (n *LivepeerNode) SetMaxSessions(s int)
func (*LivepeerNode) SetServiceURI ¶ added in v0.5.0
func (n *LivepeerNode) SetServiceURI(newUrl *url.URL)
type LoadBalancingTranscoder ¶ added in v0.5.2
type LoadBalancingTranscoder struct {
// contains filtered or unexported fields
}
func (*LoadBalancingTranscoder) EndTranscodingSession ¶ added in v0.5.35
func (lb *LoadBalancingTranscoder) EndTranscodingSession(sessionId string)
func (*LoadBalancingTranscoder) Transcode ¶ added in v0.5.2
func (lb *LoadBalancingTranscoder) Transcode(ctx context.Context, md *SegTranscodingMetadata) (*TranscodeData, error)
type LocalTranscoder ¶ added in v0.5.0
type LocalTranscoder struct {
// contains filtered or unexported fields
}
func (*LocalTranscoder) EndTranscodingSession ¶ added in v0.5.35
func (lt *LocalTranscoder) EndTranscodingSession(sessionId string)
func (*LocalTranscoder) Stop ¶ added in v0.5.35
func (lt *LocalTranscoder) Stop()
func (*LocalTranscoder) Transcode ¶ added in v0.5.0
func (lt *LocalTranscoder) Transcode(ctx context.Context, md *SegTranscodingMetadata) (td *TranscodeData, retErr error)
type ManifestID ¶
type ManifestID string
func RandomManifestID ¶ added in v0.5.0
func RandomManifestID() ManifestID
type NetintTranscoder ¶ added in v0.5.30
type NetintTranscoder struct {
// contains filtered or unexported fields
}
func (*NetintTranscoder) EndTranscodingSession ¶ added in v0.5.35
func (nt *NetintTranscoder) EndTranscodingSession(sessionId string)
func (*NetintTranscoder) Stop ¶ added in v0.5.30
func (nv *NetintTranscoder) Stop()
func (*NetintTranscoder) Transcode ¶ added in v0.5.30
func (nv *NetintTranscoder) Transcode(ctx context.Context, md *SegTranscodingMetadata) (td *TranscodeData, retErr error)
type NvidiaTranscoder ¶ added in v0.5.0
type NvidiaTranscoder struct {
// contains filtered or unexported fields
}
func (*NvidiaTranscoder) EndTranscodingSession ¶ added in v0.5.35
func (nv *NvidiaTranscoder) EndTranscodingSession(sessionId string)
func (*NvidiaTranscoder) Stop ¶ added in v0.5.2
func (nv *NvidiaTranscoder) Stop()
func (*NvidiaTranscoder) Transcode ¶ added in v0.5.0
func (nv *NvidiaTranscoder) Transcode(ctx context.Context, md *SegTranscodingMetadata) (td *TranscodeData, retErr error)
type PlaylistManager ¶ added in v0.5.0
type PlaylistManager interface { ManifestID() ManifestID // Implicitly creates master and media playlists // Inserts in media playlist given a link to a segment InsertHLSSegment(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64) error InsertHLSSegmentJSON(profile *ffmpeg.VideoProfile, seqNo uint64, uri string, duration float64) GetHLSMasterPlaylist() *m3u8.MasterPlaylist GetHLSMediaPlaylist(rendition string) *m3u8.MediaPlaylist GetOSSession() drivers.OSSession GetRecordOSSession() drivers.OSSession FlushRecord() Cleanup() }
PlaylistManager manages playlists and data for one video stream, backed by one object storage.
type RemoteTranscoder ¶ added in v0.5.0
type RemoteTranscoder struct {
// contains filtered or unexported fields
}
func NewRemoteTranscoder ¶ added in v0.5.0
func NewRemoteTranscoder(m *RemoteTranscoderManager, stream net.Transcoder_RegisterTranscoderServer, capacity int, caps *Capabilities) *RemoteTranscoder
func (*RemoteTranscoder) Transcode ¶ added in v0.5.0
func (rt *RemoteTranscoder) Transcode(logCtx context.Context, md *SegTranscodingMetadata) (*TranscodeData, error)
Transcode do actual transcoding by sending work to remote transcoder and waiting for the result
type RemoteTranscoderFatalError ¶ added in v0.5.0
type RemoteTranscoderFatalError struct {
// contains filtered or unexported fields
}
RemoteTranscoderFatalError wraps error to indicate that error is fatal
type RemoteTranscoderManager ¶ added in v0.5.0
type RemoteTranscoderManager struct { RTmutex sync.Mutex // contains filtered or unexported fields }
func NewRemoteTranscoderManager ¶ added in v0.5.0
func NewRemoteTranscoderManager() *RemoteTranscoderManager
func (*RemoteTranscoderManager) EndTranscodingSession ¶ added in v0.5.35
func (node *RemoteTranscoderManager) EndTranscodingSession(sessionId string)
func (*RemoteTranscoderManager) Manage ¶ added in v0.5.0
func (rtm *RemoteTranscoderManager) Manage(stream net.Transcoder_RegisterTranscoderServer, capacity int, capabilities *net.Capabilities)
Manage adds transcoder to list of live transcoders. Doesn't return until transcoder disconnects
func (*RemoteTranscoderManager) RegisteredTranscodersCount ¶ added in v0.5.0
func (rtm *RemoteTranscoderManager) RegisteredTranscodersCount() int
RegisteredTranscodersCount returns number of registered transcoders
func (*RemoteTranscoderManager) RegisteredTranscodersInfo ¶ added in v0.5.0
func (rtm *RemoteTranscoderManager) RegisteredTranscodersInfo() []common.RemoteTranscoderInfo
RegisteredTranscodersInfo returns list of restered transcoder's information
func (*RemoteTranscoderManager) Transcode ¶ added in v0.5.0
func (rtm *RemoteTranscoderManager) Transcode(ctx context.Context, md *SegTranscodingMetadata) (*TranscodeData, error)
Transcode does actual transcoding using remote transcoder from the pool
type RemoteTranscoderResult ¶ added in v0.5.0
type RemoteTranscoderResult struct { TranscodeData *TranscodeData Err error }
type SegChanData ¶ added in v0.3.3
type SegChanData struct {
// contains filtered or unexported fields
}
type SegTranscodingMetadata ¶ added in v0.5.0
type SegTranscodingMetadata struct { ManifestID ManifestID Fname string Seq int64 Hash ethcommon.Hash Profiles []ffmpeg.VideoProfile OS *net.OSInfo Duration time.Duration Caps *Capabilities AuthToken *net.AuthToken CalcPerceptualHash bool SegmentParameters *SegmentParameters }
func (*SegTranscodingMetadata) Flatten ¶ added in v0.5.0
func (md *SegTranscodingMetadata) Flatten() []byte
type SegmentChan ¶ added in v0.3.3
type SegmentChan chan *SegChanData
type SegmentParameters ¶ added in v0.5.31
type SegmentParameters struct { Clip *SegmentClip ForceSessionReinit bool }
type StreamID ¶
type StreamID struct { // Base playback ID that related renditions are grouped under ManifestID ManifestID // Specifies the stream variant: the HLS source, transcoding profile, etc. // Also used for RTMP: when unguessable,this can function as a stream key. Rendition string }
The StreamID represents a particular variant of a stream.
func MakeStreamID ¶
func MakeStreamID(mid ManifestID, profile *ffmpeg.VideoProfile) StreamID
func MakeStreamIDFromString ¶ added in v0.5.0
func SplitStreamIDString ¶ added in v0.5.0
type StreamParameters ¶ added in v0.5.9
type StreamParameters struct { ManifestID ManifestID ExternalStreamID string SessionID string RtmpKey string Profiles []ffmpeg.VideoProfile Resolution string Format ffmpeg.Format OS drivers.OSSession RecordOS drivers.OSSession Capabilities *Capabilities VerificationFreq uint Nonce uint64 Codec ffmpeg.VideoCodec PixelFormat ffmpeg.PixelFormat TimeoutMultiplier int // Used in the VOD workflow to allow us to be more lenient with timeouts }
func (*StreamParameters) StreamID ¶ added in v0.5.9
func (s *StreamParameters) StreamID() string
type TranscodeData ¶ added in v0.5.0
type TranscodeData struct { Segments []*TranscodedSegmentData Pixels int64 // Decoded pixels }
TranscodeData contains the transcoding output for an input segment
type TranscodeResult ¶ added in v0.3.3
type TranscodeResult struct { Err error Sig []byte TranscodeData *TranscodeData OS drivers.OSSession }
type TranscodedSegmentData ¶ added in v0.5.0
type TranscodedSegmentData struct { Data []byte PHash []byte // Perceptual hash data (maybe nil) Pixels int64 // Encoded pixels }
TranscodedSegmentData contains encoded data for a profile
type Transcoder ¶ added in v0.3.3
type Transcoder interface { Transcode(ctx context.Context, md *SegTranscodingMetadata) (*TranscodeData, error) EndTranscodingSession(sessionId string) }
func NewLoadBalancingTranscoder ¶ added in v0.5.2
func NewLoadBalancingTranscoder(devices []string, newTranscoderFn newTranscoderFn) Transcoder
func NewLocalTranscoder ¶ added in v0.5.0
func NewLocalTranscoder(workDir string) Transcoder
type TranscoderChan ¶ added in v0.5.0
type TranscoderChan chan *RemoteTranscoderResult
type TranscoderSession ¶ added in v0.5.2
type TranscoderSession interface { Transcoder Stop() }
func NewNetintTranscoder ¶ added in v0.5.30
func NewNetintTranscoder(gpu string) TranscoderSession
func NewNvidiaTranscoder ¶ added in v0.5.0
func NewNvidiaTranscoder(gpu string) TranscoderSession
type UnrecoverableError ¶ added in v0.5.23
type UnrecoverableError struct {
// contains filtered or unexported fields
}
func NewUnrecoverableError ¶ added in v0.5.23
func NewUnrecoverableError(err error) UnrecoverableError