Documentation
¶
Overview ¶
Package transcoder manages a bounded pool of FFmpeg worker processes. Each stream may run one FFmpeg process per ladder rung (passthrough copy or ABR encode); all read the same raw ingest. GPU acceleration (NVENC) is used when configured on profiles / global HW.
Index ¶
- type Profile
- type RenditionTarget
- type Service
- func (s *Service) SetFatalCallback(fn func(streamCode domain.StreamCode))
- func (s *Service) Start(ctx context.Context, logStreamCode domain.StreamCode, ...) error
- func (s *Service) StartProfile(streamID domain.StreamCode, profileIndex int, target RenditionTarget) error
- func (s *Service) Stop(streamID domain.StreamCode)
- func (s *Service) StopProfile(streamID domain.StreamCode, profileIndex int)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Profile ¶
type Profile struct {
Width int
Height int
Bitrate string // e.g. "4000k"
Codec string // e.g. "h264_nvenc", "libx264"
Preset string // e.g. "p5" (NVENC), "fast" (libx264)
CodecProfile string // H.264/HEVC profile (baseline, main, high)
CodecLevel string // e.g. 4.1
MaxBitrate int // kbps peak (0 = omit -maxrate)
Framerate float64
KeyframeInterval int // GOP target in seconds (0 = encoder default)
Bframes *int // nil = encoder default; 0 = explicit none
Refs *int // nil = encoder default
SAR string // "" = inherit; "N:M" sets output sample aspect ratio
ResizeMode string // "" = pad; "pad"|"crop"|"stretch"|"fit"
}
Profile defines a single transcoding output rendition. Rendition label in logs and URLs is track_<n> from ladder order (see buffer.VideoTrackSlug).
type RenditionTarget ¶
type RenditionTarget struct {
BufferID domain.StreamCode
Profile Profile
}
RenditionTarget binds one encoded ladder rung to its Buffer Hub output slot.
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service manages the FFmpeg worker pool.
func (*Service) SetFatalCallback ¶
func (s *Service) SetFatalCallback(fn func(streamCode domain.StreamCode))
SetFatalCallback registers a function called when a transcoder profile exceeds its maximum restart count. The callback fires once per profile that gives up. It is safe to call this before or after Start.
func (*Service) Start ¶
func (s *Service) Start( ctx context.Context, logStreamCode domain.StreamCode, rawIngestID domain.StreamCode, tc *domain.TranscoderConfig, targets []RenditionTarget, ) error
Start launches one FFmpeg encoder per RenditionTarget (same raw ingest, different output buffers).
func (*Service) StartProfile ¶
func (s *Service) StartProfile(streamID domain.StreamCode, profileIndex int, target RenditionTarget) error
StartProfile starts a single FFmpeg encoder for one profile index on an existing stream worker.
func (*Service) Stop ¶
func (s *Service) Stop(streamID domain.StreamCode)
Stop cancels all FFmpeg encoders for a stream and waits for them to exit.
func (*Service) StopProfile ¶
func (s *Service) StopProfile(streamID domain.StreamCode, profileIndex int)
StopProfile stops a single FFmpeg encoder for one profile index.