Documentation
¶
Index ¶
- Constants
- Variables
- type AAC
- type AV1
- type AVRingReader
- type Audio
- func (a *Audio) Attach()
- func (a *Audio) CompleteAVCC(value *AVFrame)
- func (a *Audio) CompleteRTP(value *AVFrame)
- func (a *Audio) Detach()
- func (av *Audio) Flush()
- func (a *Audio) GetCodec() codec.AudioCodecID
- func (a *Audio) GetName() string
- func (a *Audio) Narrow()
- func (av *Audio) WriteADTS(pts uint32, adts util.IBytes)
- func (av *Audio) WriteAVCC(ts uint32, frame *util.BLL)
- func (av *Audio) WriteRawBytes(pts uint32, raw util.IBytes)
- func (av *Audio) WriteSequenceHead(sh []byte) error
- type Base
- func (bt *Base[T, F]) ComputeBPS(bytes int)
- func (bt *Base[T, F]) GetBPS() int
- func (bt *Base[T, F]) GetDrops() int
- func (bt *Base[T, F]) GetFPS() int
- func (bt *Base[T, F]) GetName() string
- func (bt *Base[T, F]) GetPublisher() common.IPuber
- func (bt *Base[T, F]) GetRBSize() int
- func (bt *Base[T, F]) SetStuff(stuff ...any)
- func (bt *Base[T, F]) SnapForJson()
- type BytesData
- type Channel
- type Data
- type DataReader
- type G711
- type H264
- type H265
- type IDRingList
- type Media
- func (av *Media) AddIDR()
- func (av *Media) AppendAuBytes(b ...[]byte)
- func (av *Media) CurrentFrame() *AVFrame
- func (av *Media) Flush()
- func (av *Media) GetFromPool(b util.IBytes) (item util.LIBP)
- func (av *Media) GetRTPFromPool() (result *LIRTP)
- func (av *Media) LastWriteTime() time.Time
- func (av *Media) PacketizeRTP(payloads ...[][]byte)
- func (av *Media) PreFrame() *AVFrame
- func (av *Media) SetSpeedLimit(value time.Duration)
- func (av *Media) SetStuff(stuff ...any)
- func (av *Media) SnapForJson()
- func (av *Media) WriteRTP(raw *LIRTP)
- func (av *Media) WriteRTPPack(p *rtp.Packet)
- func (av *Media) WriteSequenceHead(sh []byte)
- type Opus
- type RTPDemuxer
- type RecycleData
- type RingReader
- type SpesificTrack
- type Video
- func (v *Video) Attach()
- func (vt *Video) CompleteAVCC(rv *AVFrame)
- func (v *Video) Detach()
- func (vt *Video) Flush()
- func (vt *Video) GetCodec() codec.VideoCodecID
- func (vt *Video) GetName() string
- func (vt *Video) SetLostFlag()
- func (vt *Video) WriteAVCC(ts uint32, frame *util.BLL) (err error)
- func (vt *Video) WriteAnnexB(pts uint32, dts uint32, frame []byte)
- func (vt *Video) WriteNalu(pts uint32, dts uint32, nalu []byte)
- func (vt *Video) WriteSequenceHead(sh []byte)
- func (vt *Video) WriteSliceByte(b ...byte)
Constants ¶
View Source
const ( READSTATE_INIT = iota READSTATE_FIRST READSTATE_NORMAL READSTATE_WAITKEY )
View Source
const ( SUBMODE_REAL = iota SUBMODE_NOJUMP SUBMODE_BUFFER SUBMODE_WAITKEY )
View Source
const RTPMTU = 1400
Variables ¶
View Source
var ErrDiscard = errors.New("discard")
Functions ¶
This section is empty.
Types ¶
type AAC ¶
func (*AAC) CompleteRTP ¶ added in v4.10.0
func (aac *AAC) CompleteRTP(value *AVFrame)
func (*AAC) WriteRTPFrame ¶ added in v4.10.0
func (aac *AAC) WriteRTPFrame(rtpItem *LIRTP)
func (*AAC) WriteSequenceHead ¶ added in v4.11.0
type AV1 ¶ added in v4.14.3
type AV1 struct { Video // contains filtered or unexported fields }
func (*AV1) CompleteAVCC ¶ added in v4.14.3
func (vt *AV1) CompleteAVCC(rv *AVFrame)
func (*AV1) WriteRTPFrame ¶ added in v4.14.3
func (vt *AV1) WriteRTPFrame(rtpItem *LIRTP)
func (*AV1) WriteSequenceHead ¶ added in v4.14.3
type AVRingReader ¶ added in v4.11.0
type AVRingReader struct { RingReader[any, *common.AVFrame] Track *Media State byte FirstSeq uint32 StartTs time.Duration FirstTs time.Duration SkipTs time.Duration //ms ConfSeq int AbsTime uint32 Delay uint32 *log.Logger // contains filtered or unexported fields }
func NewAVRingReader ¶ added in v4.12.8
func NewAVRingReader(t *Media) *AVRingReader
func (*AVRingReader) DecConfChanged ¶ added in v4.11.0
func (r *AVRingReader) DecConfChanged() bool
func (*AVRingReader) GetDTS32 ¶ added in v4.11.17
func (r *AVRingReader) GetDTS32() uint32
func (*AVRingReader) GetPTS32 ¶ added in v4.11.17
func (r *AVRingReader) GetPTS32() uint32
func (*AVRingReader) ReadFrame ¶ added in v4.11.0
func (r *AVRingReader) ReadFrame(mode int) (err error)
func (*AVRingReader) ResetAbsTime ¶ added in v4.11.9
func (r *AVRingReader) ResetAbsTime()
type Audio ¶
type Audio struct { Media CodecID codec.AudioCodecID Channels byte SampleSize byte AVCCHead []byte // 音频包在AVCC格式中,AAC会有两个字节,其他的只有一个字节 codec.AudioSpecificConfig AACDecoder rtpmpeg4audio.Decoder AACFormat *format.MPEG4Audio // 仅在 rtsp 转发 rtsp 时使用 }
func (*Audio) CompleteAVCC ¶ added in v4.10.0
func (a *Audio) CompleteAVCC(value *AVFrame)
func (*Audio) CompleteRTP ¶ added in v4.10.0
func (a *Audio) CompleteRTP(value *AVFrame)
func (*Audio) GetCodec ¶ added in v4.15.0
func (a *Audio) GetCodec() codec.AudioCodecID
func (*Audio) WriteRawBytes ¶ added in v4.13.0
func (*Audio) WriteSequenceHead ¶ added in v4.14.3
type Base ¶
type Base[T any, F util.IDataFrame[T]] struct { util.RingWriter[T, F] Name string log.Zap `json:"-" yaml:"-"` Publisher common.IPuber `json:"-" yaml:"-"` //所属发布者 State common.TrackState DropCount int `json:"-" yaml:"-"` //丢帧数 BPS int FPS int Drops int // 丢帧率 RawSize int // 裸数据长度 RawPart []int // 裸数据片段用于UI上显示 // contains filtered or unexported fields }
Base 基础Track类
func (*Base[T, F]) ComputeBPS ¶ added in v4.0.1
func (*Base[T, F]) GetPublisher ¶ added in v4.15.0
func (*Base[T, F]) SnapForJson ¶ added in v4.15.0
func (bt *Base[T, F]) SnapForJson()
type BytesData ¶ added in v4.13.3
type BytesData struct { RecycleData[util.LIBP] Pool util.BytesPool }
func NewBytesDataTrack ¶ added in v4.13.3
type Channel ¶ added in v4.14.7
type Channel[T any] struct { // contains filtered or unexported fields }
func (*Channel[T]) AddListener ¶ added in v4.14.7
func (r *Channel[T]) AddListener(c chan T)
func (*Channel[T]) CreateReader ¶ added in v4.14.7
type Data ¶
type Data[T any] struct { Base[T, *DataFrame[T]] sync.Locker `json:"-" yaml:"-"` // 写入锁,可选,单一协程写入可以不加锁 }
func NewDataTrack ¶ added in v4.12.9
func (*Data[T]) LastWriteTime ¶
type DataReader ¶ added in v4.13.3
type DataReader[T any] struct { RingReader[T, *common.DataFrame[T]] }
type G711 ¶
type G711 struct {
Audio
}
func (*G711) CompleteRTP ¶ added in v4.13.8
func (g711 *G711) CompleteRTP(value *AVFrame)
func (*G711) WriteRTPFrame ¶ added in v4.10.0
func (g711 *G711) WriteRTPFrame(rtpItem *LIRTP)
type H264 ¶
type H264 struct { Video // contains filtered or unexported fields }
func (*H264) GetNALU_SEI ¶ added in v4.13.4
func (*H264) WriteRTPFrame ¶ added in v4.10.0
func (vt *H264) WriteRTPFrame(rtpItem *LIRTP)
func (*H264) WriteSequenceHead ¶ added in v4.14.3
func (*H264) WriteSliceBytes ¶ added in v4.10.0
type H265 ¶
func (*H265) CompleteAVCC ¶ added in v4.14.3
func (vt *H265) CompleteAVCC(rv *AVFrame)
func (*H265) GetNALU_SEI ¶ added in v4.13.4
func (*H265) WriteRTPFrame ¶ added in v4.10.0
func (vt *H265) WriteRTPFrame(rtpItem *LIRTP)
func (*H265) WriteSequenceHead ¶ added in v4.14.3
func (*H265) WriteSliceBytes ¶ added in v4.10.0
type IDRingList ¶ added in v4.11.0
type IDRingList struct { IDRList util.List[*util.Ring[*AVFrame]] IDRing *util.Ring[*AVFrame] HistoryRing *util.Ring[*AVFrame] }
func (*IDRingList) AddIDR ¶ added in v4.11.0
func (p *IDRingList) AddIDR(IDRing *util.Ring[*AVFrame])
func (*IDRingList) ShiftIDR ¶ added in v4.11.0
func (p *IDRingList) ShiftIDR()
type Media ¶
type Media struct { Base[any, *AVFrame] BufferTime time.Duration //发布者配置中的缓冲时间(时光回溯) PayloadType byte IDRingList `json:"-" yaml:"-"` //最近的关键帧位置,首屏渲染 SSRC uint32 SampleRate uint32 BytesPool util.BytesPool `json:"-" yaml:"-"` RtpPool util.Pool[RTPFrame] `json:"-" yaml:"-"` SequenceHead []byte `json:"-" yaml:"-"` //H264(SPS、PPS) H265(VPS、SPS、PPS) AAC(config) SequenceHeadSeq int RTPDemuxer SpesificTrack `json:"-" yaml:"-"` // contains filtered or unexported fields }
Media 基础媒体Track类
func (*Media) AppendAuBytes ¶ added in v4.11.0
func (*Media) CurrentFrame ¶
func (av *Media) CurrentFrame() *AVFrame
func (*Media) GetFromPool ¶ added in v4.13.0
func (*Media) GetRTPFromPool ¶ added in v4.11.10
func (av *Media) GetRTPFromPool() (result *LIRTP)
func (*Media) LastWriteTime ¶
func (*Media) PacketizeRTP ¶
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) SetSpeedLimit ¶ added in v4.8.6
func (*Media) WriteRTP ¶ added in v4.9.5
func (av *Media) WriteRTP(raw *LIRTP)
WriteRTPFrame 写入未反序列化的RTP包, 未排序的
func (*Media) WriteRTPPack ¶ added in v4.9.5
WriteRTPPack 写入已反序列化的RTP包,已经排序过了的
func (*Media) WriteSequenceHead ¶ added in v4.11.0
type Opus ¶ added in v4.14.3
type Opus struct {
Audio
}
func (*Opus) CompleteRTP ¶ added in v4.14.3
func (opus *Opus) CompleteRTP(value *AVFrame)
func (*Opus) WriteRTPFrame ¶ added in v4.14.3
func (opus *Opus) WriteRTPFrame(rtpItem *LIRTP)
type RTPDemuxer ¶ added in v4.8.2
type RTPDemuxer struct {
// contains filtered or unexported fields
}
type RecycleData ¶ added in v4.13.3
type RecycleData[T util.Recyclable] struct { Data[T] }
func NewRecycleDataTrack ¶ added in v4.13.3
func NewRecycleDataTrack[T util.Recyclable](name string) (dt *RecycleData[T])
func (*RecycleData[T]) Push ¶ added in v4.13.3
func (dt *RecycleData[T]) Push(data T)
type RingReader ¶ added in v4.13.5
type RingReader[T any, F util.IDataFrame[T]] struct { *util.Ring[F] Count int // 读取的帧数 // contains filtered or unexported fields }
func (*RingReader[T, F]) Read ¶ added in v4.13.5
func (r *RingReader[T, F]) Read(ring *util.Ring[F]) (err error)
func (*RingReader[T, F]) ReadNext ¶ added in v4.13.5
func (r *RingReader[T, F]) ReadNext() (err error)
func (*RingReader[T, F]) StartRead ¶ added in v4.13.5
func (r *RingReader[T, F]) StartRead(ring *util.Ring[F]) (err error)
func (*RingReader[T, F]) StopRead ¶ added in v4.15.2
func (r *RingReader[T, F]) StopRead()
func (*RingReader[T, F]) TryRead ¶ added in v4.13.5
func (r *RingReader[T, F]) TryRead() (f F, err error)
type SpesificTrack ¶ added in v4.10.0
type Video ¶
type Video struct { Media CodecID codec.VideoCodecID GOP int //关键帧间隔 codec.SPSInfo ParamaterSets `json:"-" yaml:"-"` SPS []byte `json:"-" yaml:"-"` PPS []byte `json:"-" yaml:"-"` // contains filtered or unexported fields }
func (*Video) CompleteAVCC ¶ added in v4.10.0
func (vt *Video) CompleteAVCC(rv *AVFrame)
func (*Video) GetCodec ¶ added in v4.15.0
func (vt *Video) GetCodec() codec.VideoCodecID
func (*Video) SetLostFlag ¶ added in v4.8.6
func (vt *Video) SetLostFlag()
func (*Video) WriteSequenceHead ¶ added in v4.11.0
func (*Video) WriteSliceByte ¶ added in v4.10.0
Click to show internal directories.
Click to hide internal directories.