track

package
v4.7.5 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2022 License: MIT Imports: 11 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)

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
	DecoderConfiguration DecoderConfiguration[T] `json:"-"` //H264(SPS、PPS) H265(VPS、SPS、PPS) AAC(config)
	// contains filtered or unexported fields
}

Media 基础媒体Track类

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]) LastWriteTime

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

func (*Media[T]) PacketizeRTP

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

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]) 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 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) PacketizeRTP

func (vt *Video) PacketizeRTP(payloads ...[]byte)

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) 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