track

package
v4.9.2 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2022 License: MIT Imports: 12 Imported by: 22

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AAC

type AAC struct {
	Audio
	// contains filtered or unexported fields
}

func NewAAC

func NewAAC(stream IStream) (aac *AAC)

func (*AAC) Flush

func (aac *AAC) Flush()

func (*AAC) WriteAVCC

func (aac *AAC) WriteAVCC(ts uint32, frame AVCCFrame)

func (*AAC) WriteRTP

func (aac *AAC) WriteRTP(raw []byte)

WriteRTP 写入未反序列化的RTP包

func (*AAC) WriteRTPPack

func (aac *AAC) WriteRTPPack(p *rtp.Packet)

WriteRTPPack 写入已反序列化的RTP包

type Audio

type Audio struct {
	Media[AudioSlice]
	CodecID    codec.AudioCodecID
	Channels   byte
	SampleSize byte
	AVCCHead   []byte // 音频包在AVCC格式中,AAC会有两个字节,其他的只有一个字节
	// Profile:
	// 0: Main profile
	// 1: Low Complexity profile(LC)
	// 2: Scalable Sampling Rate profile(SSR)
	// 3: Reserved
	Profile byte
}

func (*Audio) Attach

func (a *Audio) Attach()

func (*Audio) Detach

func (a *Audio) Detach()

func (*Audio) Flush

func (a *Audio) Flush()

func (*Audio) GetDecConfSeq

func (a *Audio) GetDecConfSeq() int

func (*Audio) GetInfo

func (a *Audio) GetInfo() *Audio

func (*Audio) GetName

func (a *Audio) GetName() string

func (*Audio) IsAAC

func (a *Audio) IsAAC() bool

func (*Audio) SnapForJson added in v4.5.1

func (a *Audio) SnapForJson()

为json序列化而计算的数据

func (*Audio) WriteADTS

func (a *Audio) WriteADTS(adts []byte)

func (*Audio) WriteAVCC added in v4.7.3

func (av *Audio) WriteAVCC(ts uint32, frame AVCCFrame)

func (*Audio) WriteRaw added in v4.8.4

func (av *Audio) WriteRaw(pts uint32, raw AudioSlice)

type Data

type Data struct {
	Base
	LockRing[any]
	sync.Locker // 写入锁,可选,单一协程写入可以不加锁
}

func (*Data) LastWriteTime

func (d *Data) LastWriteTime() time.Time

func (*Data) Play

func (d *Data) Play(ctx context.Context, onData func(any) error) error

func (*Data) Push

func (dt *Data) Push(data any)

func (*Data) ReadRing

func (d *Data) ReadRing() *LockRing[any]

type G711

type G711 struct {
	Audio
}

func NewG711

func NewG711(stream IStream, alaw bool) (g711 *G711)

func (*G711) WriteAVCC

func (g711 *G711) WriteAVCC(ts uint32, frame AVCCFrame)

func (*G711) WriteRTP

func (g711 *G711) WriteRTP(raw []byte)

WriteRTP 写入未反序列化的RTP包

func (*G711) WriteRTPPack

func (g711 *G711) WriteRTPPack(p *rtp.Packet)

WriteRTPPack 写入已反序列化的RTP包

type H264

type H264 struct {
	Video
}

func NewH264

func NewH264(stream IStream) (vt *H264)

func (*H264) Flush

func (vt *H264) Flush()

func (*H264) WriteAVCC

func (vt *H264) WriteAVCC(ts uint32, frame AVCCFrame)

func (*H264) WriteAnnexB

func (vt *H264) WriteAnnexB(pts uint32, dts uint32, frame AnnexBFrame)

func (*H264) WriteRTP

func (vt *H264) WriteRTP(raw []byte)

WriteRTP 写入未反序列化的RTP包

func (*H264) WriteRTPPack

func (vt *H264) WriteRTPPack(p *rtp.Packet)

WriteRTPPack 写入已反序列化的RTP包

func (*H264) WriteSlice

func (vt *H264) WriteSlice(slice NALUSlice)

type H265

type H265 struct {
	Video
}

func NewH265

func NewH265(stream IStream) (vt *H265)

func (*H265) Flush

func (vt *H265) Flush()

func (*H265) WriteAVCC

func (vt *H265) WriteAVCC(ts uint32, frame AVCCFrame)

func (*H265) WriteAnnexB

func (vt *H265) WriteAnnexB(pts uint32, dts uint32, frame AnnexBFrame)

func (*H265) WriteRTP

func (vt *H265) WriteRTP(raw []byte)

WriteRTP 写入未反序列化的RTP包

func (*H265) WriteRTPPack

func (vt *H265) WriteRTPPack(p *rtp.Packet)

WriteRTPPack 写入已反序列化的RTP包

func (*H265) WriteSlice

func (vt *H265) WriteSlice(slice NALUSlice)

type Media

type Media[T RawSlice] struct {
	Base
	AVRing[T]
	SampleRate           uint32
	SSRC                 uint32
	DecoderConfiguration DecoderConfiguration[T] `json:"-"` //H264(SPS、PPS) H265(VPS、SPS、PPS) AAC(config)
	// util.BytesPool                               //无锁内存池,用于发布者(在同一个协程中)复用小块的内存,通常是解包时需要临时使用
	RTPMuxer
	RTPDemuxer
	// contains filtered or unexported fields
}

Media 基础媒体Track类

func (*Media[T]) ComplementAVCC added in v4.8.2

func (av *Media[T]) ComplementAVCC() bool

func (*Media[T]) ComplementRTP added in v4.8.2

func (av *Media[T]) ComplementRTP() bool

是否需要补完RTP格式

func (*Media[T]) CurrentFrame

func (av *Media[T]) CurrentFrame() *AVFrame[T]

func (*Media[T]) Flush

func (av *Media[T]) Flush()

func (*Media[T]) GetDecoderConfiguration

func (av *Media[T]) GetDecoderConfiguration() DecoderConfiguration[T]

func (*Media[T]) Init added in v4.8.4

func (av *Media[T]) Init(n int)

func (*Media[T]) LastWriteTime

func (av *Media[T]) LastWriteTime() time.Time

func (*Media[T]) PacketizeRTP

func (av *Media[T]) PacketizeRTP(payloads ...[][]byte)

https://www.cnblogs.com/moonwalk/p/15903760.html Packetize packetizes the payload of an RTP packet and returns one or more RTP packets

func (*Media[T]) Play

func (av *Media[T]) Play(ctx context.Context, onMedia func(*AVFrame[T]) error) error

func (*Media[T]) PreFrame

func (av *Media[T]) PreFrame() *AVFrame[T]

func (*Media[T]) ReadRing

func (av *Media[T]) ReadRing() *AVRing[T]

func (*Media[T]) SetSpeedLimit added in v4.8.6

func (av *Media[T]) SetSpeedLimit(value int)

func (*Media[T]) UnmarshalRTP

func (av *Media[T]) UnmarshalRTP(raw []byte) (frame *RTPFrame)

func (*Media[T]) UnmarshalRTPPacket

func (av *Media[T]) UnmarshalRTPPacket(p *rtp.Packet) (frame *RTPFrame)

func (*Media[T]) WriteAVCC

func (av *Media[T]) WriteAVCC(ts uint32, frame AVCCFrame)

func (*Media[T]) WriteSlice

func (av *Media[T]) WriteSlice(slice T)

type RTPDemuxer added in v4.8.2

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

type RTPMuxer added in v4.8.2

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

type Video

type Video struct {
	Media[NALUSlice]
	CodecID codec.VideoCodecID
	IDRing  *util.Ring[AVFrame[NALUSlice]] `json:"-"` //最近的关键帧位置,首屏渲染
	SPSInfo codec.SPSInfo
	GOP     int //关键帧间隔
	// contains filtered or unexported fields
}

func (*Video) Attach

func (vt *Video) Attach()

func (*Video) ComputeGOP

func (vt *Video) ComputeGOP()

func (*Video) Detach

func (vt *Video) Detach()

func (*Video) Flush

func (vt *Video) Flush()

func (*Video) GetDecConfSeq

func (vt *Video) GetDecConfSeq() int

func (*Video) GetName

func (vt *Video) GetName() string

func (*Video) PlayFullAnnexB added in v4.7.0

func (vt *Video) PlayFullAnnexB(ctx context.Context, onMedia func(net.Buffers) error) error

PlayFullAnnexB 订阅annex-b格式的流数据,每一个I帧增加sps、pps头

func (*Video) ReadRing

func (vt *Video) ReadRing() *AVRing[NALUSlice]

func (*Video) SetLostFlag added in v4.8.6

func (vt *Video) SetLostFlag()

func (*Video) SnapForJson added in v4.5.1

func (vt *Video) SnapForJson()

func (*Video) WriteAVCC

func (vt *Video) WriteAVCC(ts uint32, frame AVCCFrame)

func (*Video) WriteAnnexB

func (vt *Video) WriteAnnexB(frame AnnexBFrame) (s []NALUSlice)

Jump to

Keyboard shortcuts

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