Documentation ¶
Index ¶
- Constants
- Variables
- type AAC
- 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) 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)
- type BytesData
- 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) Dispose()
- func (av *Media) Flush()
- func (av *Media) GetFromPool(b util.IBytes) (item *util.ListItem[util.Buffer])
- func (av *Media) GetRTPFromPool() (result *util.ListItem[RTPFrame])
- 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 *util.ListItem[RTPFrame])
- func (av *Media) WriteRTPPack(p *rtp.Packet)
- func (av *Media) WriteSequenceHead(sh []byte)
- 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) GetName() string
- func (vt *Video) SetLostFlag()
- func (vt *Video) WriteAVCC(ts uint32, frame *util.BLL) (e 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 )
View Source
const ( SUBMODE_REAL = iota SUBMODE_NOJUMP SUBMODE_BUFFER )
View Source
const RTPMTU = 1400
Variables ¶
View Source
var ErrDiscard = errors.New("dsicard")
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(frame *RTPFrame)
func (*AAC) WriteSequenceHead ¶ added in v4.11.0
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 SizeLength int // 通常为13 IndexLength int IndexDeltaLength int AVCCHead []byte // 音频包在AVCC格式中,AAC会有两个字节,其他的只有一个字节 codec.AudioSpecificConfig }
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)
type BytesData ¶ added in v4.13.3
func NewBytesDataTrack ¶ added in v4.13.3
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(frame *RTPFrame)
type H264 ¶
type H264 struct {
Video
}
func (*H264) GetNALU_SEI ¶ added in v4.13.4
func (*H264) WriteRTPFrame ¶ added in v4.10.0
func (vt *H264) WriteRTPFrame(frame *RTPFrame)
func (*H264) WriteSliceBytes ¶ added in v4.10.0
type H265 ¶
func (*H265) GetNALU_SEI ¶ added in v4.13.4
func (*H265) WriteRTPFrame ¶ added in v4.10.0
func (vt *H265) WriteRTPFrame(frame *RTPFrame)
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] 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 (*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) WriteRTPPack ¶ added in v4.9.5
WriteRTPPack 写入已反序列化的RTP包,已经排序过了的
func (*Media) WriteSequenceHead ¶ added in v4.11.0
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
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]) 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:"-"` SEIReader *DataReader[[]byte] `json:"-" yaml:"-"` // contains filtered or unexported fields }
func (*Video) CompleteAVCC ¶ added in v4.10.0
func (vt *Video) CompleteAVCC(rv *AVFrame)
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.