rtsp

package
v0.0.0-...-bb7da5d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2025 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Version = "RTSP/1.0"

	SessionStateOptions  = SessionState(0x1)
	SessionStateDescribe = SessionState(0x2)
	SessionStateSetup    = SessionState(0x3)
	SessionStatePlay     = SessionState(0x4)
	SessionStateTeardown = SessionState(0x5)
	SessionStatePause    = SessionState(0x6)
)
View Source
const (
	OverTcpHeaderSize = 4
	OverTcpMagic      = 0x24
)

Variables

View Source
var (
	TransportManger transport.Manager
)

Functions

func DoAuthenticatePlainTextPassword

func DoAuthenticatePlainTextPassword(params map[string]string, password string) bool

func NewHandler

func NewHandler(password string) *handler

func NewOKResponse

func NewOKResponse(cseq string) *http.Response

func NewResponse

func NewResponse(code int, cseq string) *http.Response

func NewSession

func NewSession(conn net.Conn) *session

func NewSink

func NewSink(id stream.SinkID, sourceId string, conn net.Conn, cb func(sdp string)) stream.Sink

func NewTransStream

func NewTransStream(addr net.IPAddr, urlFormat string, oldTracks map[byte]uint16) stream.TransStream

func TransStreamFactory

func TransStreamFactory(source stream.Source, protocol stream.TransStreamProtocol, tracks []*stream.Track) (stream.TransStream, error)

Types

type Handler

type Handler interface {
	// Process 路由请求给具体的handler, 并发送响应
	Process(session *session, method string, url_ *url.URL, headers textproto.MIMEHeader) error

	OnOptions(request Request) (*http.Response, []byte, error)

	// OnDescribe 获取spd
	OnDescribe(request Request) (*http.Response, []byte, error)

	// OnSetup 订阅track
	OnSetup(request Request) (*http.Response, []byte, error)

	// OnPlay 请求播放
	OnPlay(request Request) (*http.Response, []byte, error)

	// OnTeardown 结束播放
	OnTeardown(request Request) (*http.Response, []byte, error)

	OnPause(request Request) (*http.Response, []byte, error)

	OnGetParameter(request Request) (*http.Response, []byte, error)

	OnSetParameter(request Request) (*http.Response, []byte, error)

	OnRedirect(request Request) (*http.Response, []byte, error)

	// OnRecord 推流
	OnRecord(request Request) (*http.Response, []byte, error)
}

Handler 处理RTSP各个请求消息

type Request

type Request struct {
	// contains filtered or unexported fields
}

type Server

type Server interface {
	Start(addr net.Addr) error

	Close()
}

func NewServer

func NewServer(password string) Server

type SessionState

type SessionState int

type Sink

type Sink struct {
	stream.BaseSink
	// contains filtered or unexported fields
}

Sink rtsp拉流sink 对于udp而言, 每个sink维护多个transport tcp使用信令链路传输

func (*Sink) AddSender

func (s *Sink) AddSender(index int, tcp bool, ssrc uint32) (uint16, uint16, error)

func (*Sink) Close

func (s *Sink) Close()

func (*Sink) StartStreaming

func (s *Sink) StartStreaming(transStream stream.TransStream) error

func (*Sink) Write

func (s *Sink) Write(index int, data [][]byte, rtpTime int64) error

type Track

type Track struct {
	PT        byte
	Rate      int
	MediaType utils.AVMediaType
	StartSeq  uint16
	EndSeq    uint16

	Muxer           librtp.Muxer
	ExtraDataBuffer [][]byte // 缓存带有编码信息的rtp包, 对所有sink通用
}

Track RtspTrack 对rtsp每路输出流的封装

func NewRTSPTrack

func NewRTSPTrack(muxer librtp.Muxer, pt byte, rate int, mediaType utils.AVMediaType) *Track

func (*Track) Close

func (r *Track) Close()

type TransStream

type TransStream struct {
	stream.BaseTransStream

	RtspTracks []*Track
	// contains filtered or unexported fields
}

TransStream rtsp传输流封装 低延迟是rtsp特性, 所以不考虑实现GOP缓存

func (*TransStream) AddTrack

func (t *TransStream) AddTrack(track *stream.Track) error

func (*TransStream) Close

func (t *TransStream) Close() ([][]byte, int64, error)

func (*TransStream) Input

func (t *TransStream) Input(packet utils.AVPacket) ([][]byte, int64, bool, error)

func (*TransStream) OverTCP

func (t *TransStream) OverTCP(data []byte, channel int)

func (*TransStream) PackRtpPayload

func (t *TransStream) PackRtpPayload(track *Track, channel int, data []byte, timestamp uint32)

func (*TransStream) ReadExtraData

func (t *TransStream) ReadExtraData(ts int64) ([][]byte, int64, error)

func (*TransStream) WriteHeader

func (t *TransStream) WriteHeader() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL