mirror of
https://github.com/bluenviron/mediamtx
synced 2025-01-07 07:20:01 +00:00
145 lines
3.0 KiB
Go
145 lines
3.0 KiB
Go
package readpublisher
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/aler9/gortsplib"
|
|
"github.com/aler9/gortsplib/pkg/base"
|
|
"github.com/aler9/gortsplib/pkg/headers"
|
|
|
|
"github.com/aler9/rtsp-simple-server/internal/conf"
|
|
"github.com/aler9/rtsp-simple-server/internal/streamproc"
|
|
)
|
|
|
|
// ErrNoOnePublishing is a "no one is publishing" error.
|
|
type ErrNoOnePublishing struct {
|
|
PathName string
|
|
}
|
|
|
|
// Error implements the error interface.
|
|
func (e ErrNoOnePublishing) Error() string {
|
|
return fmt.Sprintf("no one is publishing to path '%s'", e.PathName)
|
|
}
|
|
|
|
// ErrAuthNotCritical is a non-critical authentication error.
|
|
type ErrAuthNotCritical struct {
|
|
*base.Response
|
|
}
|
|
|
|
// Error implements the error interface.
|
|
func (ErrAuthNotCritical) Error() string {
|
|
return "non-critical authentication error"
|
|
}
|
|
|
|
// ErrAuthCritical is a critical authentication error.
|
|
type ErrAuthCritical struct {
|
|
*base.Response
|
|
}
|
|
|
|
// Error implements the error interface.
|
|
func (ErrAuthCritical) Error() string {
|
|
return "critical authentication error"
|
|
}
|
|
|
|
// Path is implemented by path.Path.
|
|
type Path interface {
|
|
Name() string
|
|
Conf() *conf.PathConf
|
|
OnReadPublisherRemove(RemoveReq)
|
|
OnReadPublisherPlay(PlayReq)
|
|
OnReadPublisherRecord(RecordReq)
|
|
OnReadPublisherPause(PauseReq)
|
|
}
|
|
|
|
// DescribeRes is a describe response.
|
|
type DescribeRes struct {
|
|
SDP []byte
|
|
Redirect string
|
|
Err error
|
|
}
|
|
|
|
// DescribeReq is a describe request.
|
|
type DescribeReq struct {
|
|
ReadPublisher ReadPublisher
|
|
PathName string
|
|
Data *base.Request
|
|
Res chan DescribeRes
|
|
}
|
|
|
|
// SetupPlayRes is a setup/play response.
|
|
type SetupPlayRes struct {
|
|
Path Path
|
|
Tracks gortsplib.Tracks
|
|
Err error
|
|
}
|
|
|
|
// SetupPlayReq is a setup/play request.
|
|
type SetupPlayReq struct {
|
|
ReadPublisher ReadPublisher
|
|
PathName string
|
|
Data interface{}
|
|
Res chan SetupPlayRes
|
|
}
|
|
|
|
// AnnounceRes is a announce response.
|
|
type AnnounceRes struct {
|
|
Path Path
|
|
Err error
|
|
}
|
|
|
|
// AnnounceReq is a announce request.
|
|
type AnnounceReq struct {
|
|
ReadPublisher ReadPublisher
|
|
PathName string
|
|
Tracks gortsplib.Tracks
|
|
Data interface{}
|
|
Res chan AnnounceRes
|
|
}
|
|
|
|
// RemoveReq is a remove request.
|
|
type RemoveReq struct {
|
|
ReadPublisher ReadPublisher
|
|
Res chan struct{}
|
|
}
|
|
|
|
// PlayRes is a play response.
|
|
type PlayRes struct {
|
|
TrackInfos []streamproc.TrackInfo
|
|
}
|
|
|
|
// PlayReq is a play request.
|
|
type PlayReq struct {
|
|
ReadPublisher ReadPublisher
|
|
Res chan PlayRes
|
|
}
|
|
|
|
// RecordRes is a record response.
|
|
type RecordRes struct {
|
|
SP *streamproc.StreamProc
|
|
Err error
|
|
}
|
|
|
|
// RecordReq is a record request.
|
|
type RecordReq struct {
|
|
ReadPublisher ReadPublisher
|
|
Res chan RecordRes
|
|
}
|
|
|
|
// PauseReq is a pause request.
|
|
type PauseReq struct {
|
|
ReadPublisher ReadPublisher
|
|
Res chan struct{}
|
|
}
|
|
|
|
// ReadPublisher is an entity that can read/publish from/to a path.
|
|
type ReadPublisher interface {
|
|
IsReadPublisher()
|
|
IsSource()
|
|
Close()
|
|
CloseRequest()
|
|
Authenticate([]headers.AuthMethod,
|
|
string, []interface{},
|
|
string, string, interface{}) error
|
|
OnFrame(int, gortsplib.StreamType, []byte)
|
|
}
|