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 DownloadData(ctx context.Context, uri string) ([]byte, error)
- func FromNetOsInfo(os *net.OSInfo) *drivers.OSInfo
- func FromNetS3Info(storage *net.S3OSInfo) *drivers.S3OSInfo
- func GetTranscoderFactoryByAccel(acceleration ffmpeg.Acceleration) (func(device string) TranscoderSession, error)
- func HasCapability(caps []Capability, capability Capability) bool
- func MakeMetadata(id string) map[string]string
- func NetSegData(md *SegTranscodingMetadata) (*net.SegData, error)
- func NewBroadcaster(node *LivepeerNode) *broadcaster
- func NewOrchestrator(n *LivepeerNode, rm common.RoundsManager) *orchestrator
- func NewRemoteAIWorkerFatalError(err error) error
- func NewRemoteTranscoderFatalError(err error) error
- func ParseStepsFromModelID(modelID *string, defaultSteps float64) float64
- func ToNetOSInfo(os *drivers.OSInfo) *net.OSInfo
- func ToNetS3Info(storage *drivers.S3OSInfo) *net.S3OSInfo
- type AI
- type AIJobRequestData
- type AIModelConfig
- type AIResult
- type AIWorkerChan
- 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 (bcast *Capabilities) LivepeerVersionCompatibleWith(orch *net.Capabilities) bool
- func (bcast *Capabilities) MinVersionConstraint() string
- func (bcast *Capabilities) PerCapability() PerCapabilityConstraints
- func (cap *Capabilities) RemoveCapacity(goneCaps *Capabilities)
- func (bcast *Capabilities) SetMinVersionConstraint(minVersionConstraint string)
- func (bcast *Capabilities) SetPerCapabilityConstraints(constraints PerCapabilityConstraints)
- func (c *Capabilities) ToNetCapabilities() *net.Capabilities
- type Capability
- func AddCapability(caps []Capability, newCap Capability) []Capability
- func DefaultCapabilities() []Capability
- func MandatoryOCapabilities() []Capability
- func OptionalCapabilities() []Capability
- func PipelineToCapability(pipeline string) (Capability, error)
- func RemoveCapability(haystack []Capability, needle Capability) []Capability
- func TestSoftwareTranscoderCapabilities(tmpdir string) (caps []Capability, fatalError error)
- func TestTranscoderCapabilities(devices []string, tf func(device string) TranscoderSession) (caps []Capability, fatalError error)
- type CapabilityConstraints
- type CapabilityPriceMenu
- type CapabilityPrices
- type CapabilityString
- type CapabilityTest
- type Constraints
- type JSONRat
- 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 LivePipeline
- type LivepeerNode
- func (n *LivepeerNode) AddAICapabilities(caps *Capabilities)
- func (n *LivepeerNode) AudioToText(ctx context.Context, req worker.GenAudioToTextMultipartRequestBody) (*worker.TextResponse, error)
- func (node *LivepeerNode) EndTranscodingSession(sessionId string)
- func (n *LivepeerNode) GetBasePrice(b_eth_addr string) *big.Rat
- func (n *LivepeerNode) GetBasePriceForCap(b_eth_addr string, cap Capability, modelID 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) ImageToImage(ctx context.Context, req worker.GenImageToImageMultipartRequestBody) (*worker.ImageResponse, error)
- func (n *LivepeerNode) ImageToText(ctx context.Context, req worker.GenImageToTextMultipartRequestBody) (*worker.ImageToTextResponse, error)
- func (n *LivepeerNode) ImageToVideo(ctx context.Context, req worker.GenImageToVideoMultipartRequestBody) (*worker.ImageResponse, error)
- func (n *LivepeerNode) LLM(ctx context.Context, req worker.GenLLMJSONRequestBody) (interface{}, error)
- func (n *LivepeerNode) LiveVideoToVideo(ctx context.Context, req worker.GenLiveVideoToVideoJSONRequestBody) (*worker.LiveVideoToVideoResponse, error)
- func (n *LivepeerNode) ReleaseAICapability(pipeline string, modelID string) error
- func (n *LivepeerNode) RemoveAICapabilities(caps *Capabilities)
- func (n *LivepeerNode) ReserveAICapability(pipeline string, modelID string) error
- func (n *LivepeerNode) SegmentAnything2(ctx context.Context, req worker.GenSegmentAnything2MultipartRequestBody) (*worker.MasksResponse, error)
- func (n *LivepeerNode) SetBasePrice(b_eth_addr string, price *AutoConvertedPrice)
- func (n *LivepeerNode) SetBasePriceForCap(b_eth_addr string, cap Capability, modelID string, price *AutoConvertedPrice)
- func (n *LivepeerNode) SetMaxFaceValue(maxfacevalue *big.Int)
- func (n *LivepeerNode) SetMaxSessions(s int)
- func (n *LivepeerNode) SetServiceURI(newUrl *url.URL)
- func (n *LivepeerNode) TextToImage(ctx context.Context, req worker.GenTextToImageJSONRequestBody) (*worker.ImageResponse, error)
- func (n *LivepeerNode) TextToSpeech(ctx context.Context, req worker.GenTextToSpeechJSONRequestBody) (*worker.AudioResponse, error)
- func (n *LivepeerNode) Upscale(ctx context.Context, req worker.GenUpscaleMultipartRequestBody) (*worker.ImageResponse, error)
- type LoadBalancingTranscoder
- type LocalTranscoder
- type ManifestID
- type ModelConstraint
- type ModelConstraints
- type NetintTranscoder
- type NodeType
- type NvidiaTranscoder
- type PerCapabilityConstraints
- type PlaylistManager
- type RemoteAIWorker
- type RemoteAIWorkerFatalError
- type RemoteAIWorkerManager
- type RemoteAIWorkerResult
- 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", Capability_TextToImage: "Text to image", Capability_ImageToImage: "Image to image", Capability_ImageToVideo: "Image to video", Capability_Upscale: "Upscale", Capability_AudioToText: "Audio to text", Capability_SegmentAnything2: "Segment anything 2", Capability_LLM: "Llm", Capability_ImageToText: "Image to text", Capability_LiveVideoToVideo: "Live video to video", Capability_TextToSpeech: "Text to speech", }
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 ErrNoCompatibleWorkersAvailable = errors.New("no workers can process job requested")
var ErrNoTranscodersAvailable = errors.New("no transcoders available")
var ErrNoWorkersAvailable = errors.New("no workers available")
var ErrOrchBusy = errors.New("OrchestratorBusy")
var ErrOrchCap = errors.New("OrchestratorCapped")
var ErrRemoteTranscoderTimeout = errors.New("Remote transcoder took too long")
var ErrRemoteWorkerTimeout = errors.New("Remote worker 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 DownloadData ¶ added in v0.8.0
func GetTranscoderFactoryByAccel ¶ added in v0.5.30
func GetTranscoderFactoryByAccel(acceleration ffmpeg.Acceleration) (func(device string) TranscoderSession, error)
func HasCapability ¶ added in v0.7.7
func HasCapability(caps []Capability, capability Capability) bool
func MakeMetadata ¶ added in v0.7.9
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 NewRemoteAIWorkerFatalError ¶ added in v0.8.0
NewRemoteAIWorkerFatalError creates new RemoteAIWorkerFatalError Exported here to be used in other packages
func NewRemoteTranscoderFatalError ¶ added in v0.5.0
NewRemoteTranscoderFatalError creates new RemoteTranscoderFatalError Exported here to be used in other packages
func ParseStepsFromModelID ¶ added in v0.8.0
ParseStepsFromModelID parses the number of inference steps from the model ID suffix.
Types ¶
type AI ¶ added in v0.8.0
type AI interface { TextToImage(context.Context, worker.GenTextToImageJSONRequestBody) (*worker.ImageResponse, error) ImageToImage(context.Context, worker.GenImageToImageMultipartRequestBody) (*worker.ImageResponse, error) ImageToVideo(context.Context, worker.GenImageToVideoMultipartRequestBody) (*worker.VideoResponse, error) Upscale(context.Context, worker.GenUpscaleMultipartRequestBody) (*worker.ImageResponse, error) AudioToText(context.Context, worker.GenAudioToTextMultipartRequestBody) (*worker.TextResponse, error) LLM(context.Context, worker.GenLLMJSONRequestBody) (interface{}, error) SegmentAnything2(context.Context, worker.GenSegmentAnything2MultipartRequestBody) (*worker.MasksResponse, error) ImageToText(context.Context, worker.GenImageToTextMultipartRequestBody) (*worker.ImageToTextResponse, error) TextToSpeech(context.Context, worker.GenTextToSpeechJSONRequestBody) (*worker.AudioResponse, error) LiveVideoToVideo(context.Context, worker.GenLiveVideoToVideoJSONRequestBody) (*worker.LiveVideoToVideoResponse, error) Warm(context.Context, string, string, worker.RunnerEndpoint, worker.OptimizationFlags) error Stop(context.Context) error HasCapacity(string, string) bool EnsureImageAvailable(context.Context, string, string) error }
type AIJobRequestData ¶ added in v0.8.0
type AIJobRequestData struct { InputUrl string `json:"input_url"` Request interface{} `json:"request"` }
type AIModelConfig ¶ added in v0.8.0
type AIModelConfig struct { Pipeline string `json:"pipeline"` ModelID string `json:"model_id"` // used by worker URL string `json:"url,omitempty"` Token string `json:"token,omitempty"` Warm bool `json:"warm,omitempty"` Capacity int `json:"capacity,omitempty"` OptimizationFlags worker.OptimizationFlags `json:"optimization_flags,omitempty"` // used by orchestrator Gateway string `json:"gateway"` PricePerUnit JSONRat `json:"price_per_unit,omitempty"` PixelsPerUnit JSONRat `json:"pixels_per_unit,omitempty"` Currency string `json:"currency,omitempty"` }
func ParseAIModelConfigs ¶ added in v0.8.0
func ParseAIModelConfigs(config string) ([]AIModelConfig, error)
type AIResult ¶ added in v0.8.0
type AIResult struct { Err error Result *worker.ImageResponse Files map[string]string }
type AIWorkerChan ¶ added in v0.8.0
type AIWorkerChan chan *RemoteAIWorkerResult
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) LivepeerVersionCompatibleWith ¶ added in v0.7.5
func (bcast *Capabilities) LivepeerVersionCompatibleWith(orch *net.Capabilities) bool
func (*Capabilities) MinVersionConstraint ¶ added in v0.7.5
func (bcast *Capabilities) MinVersionConstraint() string
func (*Capabilities) PerCapability ¶ added in v0.8.0
func (bcast *Capabilities) PerCapability() PerCapabilityConstraints
func (*Capabilities) RemoveCapacity ¶ added in v0.5.30
func (cap *Capabilities) RemoveCapacity(goneCaps *Capabilities)
func (*Capabilities) SetMinVersionConstraint ¶ added in v0.7.5
func (bcast *Capabilities) SetMinVersionConstraint(minVersionConstraint string)
func (*Capabilities) SetPerCapabilityConstraints ¶ added in v0.8.0
func (bcast *Capabilities) SetPerCapabilityConstraints(constraints PerCapabilityConstraints)
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 = -2 Capability_Unused Capability = -1 Capability_H264 Capability = 0 Capability_MPEGTS Capability = 1 Capability_MP4 Capability = 2 Capability_FractionalFramerates Capability = 3 Capability_StorageDirect Capability = 4 Capability_StorageS3 Capability = 5 Capability_StorageGCS Capability = 6 Capability_ProfileH264Baseline Capability = 7 Capability_ProfileH264Main Capability = 8 Capability_ProfileH264High Capability = 9 Capability_ProfileH264ConstrainedHigh Capability = 10 Capability_GOP Capability = 11 Capability_AuthToken Capability = 12 Capability_SceneClassification Capability = 13 // Deprecated, but can't remove because of Capability ordering Capability_MPEG7VideoSignature Capability = 14 Capability_HEVC_Decode Capability = 15 Capability_HEVC_Encode Capability = 16 Capability_VP8_Decode Capability = 17 Capability_VP9_Decode Capability = 18 Capability_VP8_Encode Capability = 19 Capability_VP9_Encode Capability = 20 Capability_H264_Decode_444_8bit Capability = 21 Capability_H264_Decode_422_8bit Capability = 22 Capability_H264_Decode_444_10bit Capability = 23 Capability_H264_Decode_422_10bit Capability = 24 Capability_H264_Decode_420_10bit Capability = 25 Capability_SegmentSlicing Capability = 26 Capability_TextToImage Capability = 27 Capability_ImageToImage Capability = 28 Capability_ImageToVideo Capability = 29 Capability_Upscale Capability = 30 Capability_AudioToText Capability = 31 Capability_SegmentAnything2 Capability = 32 Capability_LLM Capability = 33 Capability_ImageToText Capability = 34 Capability_LiveVideoToVideo Capability = 35 Capability_TextToSpeech Capability = 36 )
func AddCapability ¶ added in v0.7.7
func AddCapability(caps []Capability, newCap Capability) []Capability
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 PipelineToCapability ¶ added in v0.8.0
func PipelineToCapability(pipeline string) (Capability, error)
PipelineToCapability converts a pipeline name to a capability enum.
func RemoveCapability ¶ added in v0.7.7
func RemoveCapability(haystack []Capability, needle Capability) []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
func (Capability) String ¶ added in v0.8.0
func (c Capability) String() string
type CapabilityConstraints ¶ added in v0.8.0
type CapabilityConstraints struct { // Models contains a *ModelConstraint for each supported model ID Models ModelConstraints }
func (*CapabilityConstraints) CompatibleWith ¶ added in v0.8.0
func (c1 *CapabilityConstraints) CompatibleWith(c2 *CapabilityConstraints) bool
type CapabilityPriceMenu ¶ added in v0.8.0
type CapabilityPriceMenu struct {
// contains filtered or unexported fields
}
func NewCapabilityPriceMenu ¶ added in v0.8.0
func NewCapabilityPriceMenu() CapabilityPriceMenu
func (CapabilityPriceMenu) PriceForModelID ¶ added in v0.8.0
func (m CapabilityPriceMenu) PriceForModelID(modelID string) *AutoConvertedPrice
func (CapabilityPriceMenu) SetPriceForModelID ¶ added in v0.8.0
func (m CapabilityPriceMenu) SetPriceForModelID(modelID string, price *AutoConvertedPrice)
type CapabilityPrices ¶ added in v0.8.0
type CapabilityPrices map[Capability]CapabilityPriceMenu
func NewCapabilityPrices ¶ added in v0.8.0
func NewCapabilityPrices() CapabilityPrices
func (CapabilityPrices) PriceForModelID ¶ added in v0.8.0
func (cp CapabilityPrices) PriceForModelID(cap Capability, modelID string) *AutoConvertedPrice
func (CapabilityPrices) SetPriceForModelID ¶ added in v0.8.0
func (cp CapabilityPrices) SetPriceForModelID(cap Capability, modelID string, price *AutoConvertedPrice)
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 {
// contains filtered or unexported fields
}
type JSONRat ¶ added in v0.8.0
Custom type to parse a big.Rat from a JSON number.
func (*JSONRat) UnmarshalJSON ¶ added in v0.8.0
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 LivePipeline ¶ added in v0.8.1
type LivePipeline struct { ControlPub *trickle.TricklePublisher StopControl func() EventsPub *trickle.TricklePublisher }
type LivepeerNode ¶
type LivepeerNode struct { // Common fields Eth eth.LivepeerEthClient WorkDir string NodeType NodeType Database *common.DB // AI worker public fields AIWorker AI AIWorkerManager *RemoteAIWorkerManager // Transcoder public fields SegmentChans map[ManifestID]SegmentChan Recipient pm.Recipient RecipientAddr string 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 // For live video pipelines, cache for live pipelines; key is the stream name LivePipelines map[string]*LivePipeline LiveMu *sync.RWMutex MediaMTXApiPassword string LiveAITrickleHostForRunner string LiveAIAuthApiKey string LivePaymentInterval time.Duration // Gateway GatewayHost string // 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) AddAICapabilities ¶ added in v0.8.0
func (n *LivepeerNode) AddAICapabilities(caps *Capabilities)
AddAICapabilities adds AI capabilities to the node.
func (*LivepeerNode) AudioToText ¶ added in v0.8.0
func (n *LivepeerNode) AudioToText(ctx context.Context, req worker.GenAudioToTextMultipartRequestBody) (*worker.TextResponse, error)
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) GetBasePriceForCap ¶ added in v0.8.0
func (n *LivepeerNode) GetBasePriceForCap(b_eth_addr string, cap Capability, modelID string) *big.Rat
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) ImageToImage ¶ added in v0.8.0
func (n *LivepeerNode) ImageToImage(ctx context.Context, req worker.GenImageToImageMultipartRequestBody) (*worker.ImageResponse, error)
func (*LivepeerNode) ImageToText ¶ added in v0.8.0
func (n *LivepeerNode) ImageToText(ctx context.Context, req worker.GenImageToTextMultipartRequestBody) (*worker.ImageToTextResponse, error)
func (*LivepeerNode) ImageToVideo ¶ added in v0.8.0
func (n *LivepeerNode) ImageToVideo(ctx context.Context, req worker.GenImageToVideoMultipartRequestBody) (*worker.ImageResponse, error)
func (*LivepeerNode) LLM ¶ added in v0.8.0
func (n *LivepeerNode) LLM(ctx context.Context, req worker.GenLLMJSONRequestBody) (interface{}, error)
func (*LivepeerNode) LiveVideoToVideo ¶ added in v0.8.1
func (n *LivepeerNode) LiveVideoToVideo(ctx context.Context, req worker.GenLiveVideoToVideoJSONRequestBody) (*worker.LiveVideoToVideoResponse, error)
func (*LivepeerNode) ReleaseAICapability ¶ added in v0.8.0
func (n *LivepeerNode) ReleaseAICapability(pipeline string, modelID string) error
func (*LivepeerNode) RemoveAICapabilities ¶ added in v0.8.0
func (n *LivepeerNode) RemoveAICapabilities(caps *Capabilities)
RemoveAICapabilities removes AI capabilities from the node.
func (*LivepeerNode) ReserveAICapability ¶ added in v0.8.0
func (n *LivepeerNode) ReserveAICapability(pipeline string, modelID string) error
func (*LivepeerNode) SegmentAnything2 ¶ added in v0.8.0
func (n *LivepeerNode) SegmentAnything2(ctx context.Context, req worker.GenSegmentAnything2MultipartRequestBody) (*worker.MasksResponse, error)
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) SetBasePriceForCap ¶ added in v0.8.0
func (n *LivepeerNode) SetBasePriceForCap(b_eth_addr string, cap Capability, modelID string, price *AutoConvertedPrice)
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)
func (*LivepeerNode) TextToImage ¶ added in v0.8.0
func (n *LivepeerNode) TextToImage(ctx context.Context, req worker.GenTextToImageJSONRequestBody) (*worker.ImageResponse, error)
func (*LivepeerNode) TextToSpeech ¶ added in v0.8.0
func (n *LivepeerNode) TextToSpeech(ctx context.Context, req worker.GenTextToSpeechJSONRequestBody) (*worker.AudioResponse, error)
func (*LivepeerNode) Upscale ¶ added in v0.8.0
func (n *LivepeerNode) Upscale(ctx context.Context, req worker.GenUpscaleMultipartRequestBody) (*worker.ImageResponse, error)
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 ModelConstraint ¶ added in v0.8.0
type ModelConstraints ¶ added in v0.8.0
type ModelConstraints map[string]*ModelConstraint
func (ModelConstraints) CompatibleWith ¶ added in v0.8.0
func (c1 ModelConstraints) CompatibleWith(c2 ModelConstraints) bool
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 PerCapabilityConstraints ¶ added in v0.8.0
type PerCapabilityConstraints map[Capability]*CapabilityConstraints
func (PerCapabilityConstraints) CompatibleWith ¶ added in v0.8.0
func (c1 PerCapabilityConstraints) CompatibleWith(c2 PerCapabilityConstraints) bool
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 RemoteAIWorker ¶ added in v0.8.0
type RemoteAIWorker struct {
// contains filtered or unexported fields
}
func NewRemoteAIWorker ¶ added in v0.8.0
func NewRemoteAIWorker(m *RemoteAIWorkerManager, stream net.AIWorker_RegisterAIWorkerServer, caps *Capabilities) *RemoteAIWorker
func (*RemoteAIWorker) Process ¶ added in v0.8.0
func (rw *RemoteAIWorker) Process(logCtx context.Context, pipeline string, modelID string, fname string, req AIJobRequestData) (*RemoteAIWorkerResult, error)
Process does actual AI processing by sending work to remote ai worker and waiting for the result
type RemoteAIWorkerFatalError ¶ added in v0.8.0
type RemoteAIWorkerFatalError struct {
// contains filtered or unexported fields
}
RemoteAIWorkerFatalError wraps error to indicate that error is fatal
type RemoteAIWorkerManager ¶ added in v0.8.0
func NewRemoteAIWorkerManager ¶ added in v0.8.0
func NewRemoteAIWorkerManager() *RemoteAIWorkerManager
func (*RemoteAIWorkerManager) Manage ¶ added in v0.8.0
func (rwm *RemoteAIWorkerManager) Manage(stream net.AIWorker_RegisterAIWorkerServer, capabilities *net.Capabilities)
Manage adds aiworker to list of live aiworkers. Doesn't return until aiworker disconnects
func (*RemoteAIWorkerManager) Process ¶ added in v0.8.0
func (rwm *RemoteAIWorkerManager) Process(ctx context.Context, requestID string, pipeline string, modelID string, fname string, req AIJobRequestData) (*RemoteAIWorkerResult, error)
Process does actual AI job using remote worker from the pool
type RemoteAIWorkerResult ¶ added in v0.8.0
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 ProfileIn ffmpeg.VideoProfile Profiles []ffmpeg.VideoProfile OS *net.OSInfo Duration time.Duration Caps *Capabilities AuthToken *net.AuthToken CalcPerceptualHash bool SegmentParameters *SegmentParameters Metadata map[string]string }
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