Documentation
¶
Index ¶
- Constants
- Variables
- type OnReadPacket
- type Pes
- type PsUnpacker
- type PubSession
- func (session *PubSession) AppName() string
- func (session *PubSession) Dispose() error
- func (session *PubSession) GetStat() base.StatSession
- func (session *PubSession) IsAlive() (readAlive, writeAlive bool)
- func (session *PubSession) Listen(port int, isTcpFlag bool) (int, error)
- func (session *PubSession) RawQuery() string
- func (session *PubSession) RunLoop() error
- func (session *PubSession) StreamName() string
- func (session *PubSession) UniqueKey() string
- func (session *PubSession) UpdateStat(intervalSec uint32)
- func (session *PubSession) Url() string
- func (session *PubSession) WithHookReadPacket(fn OnReadPacket) *PubSession
- func (session *PubSession) WithOnAvPacket(onAvPacket base.OnAvPacketFunc) *PubSession
- func (session *PubSession) WithStreamName(streamName string) *PubSession
Constants ¶
const ( StreamTypeH264 uint8 = 0x1b StreamTypeH265 = 0x24 StreamTypeAAC = 0x0f StreamTypeG711A = 0x90 //PCMA StreamTypeG7221 = 0x92 StreamTypeG7231 = 0x93 StreamTypeG729 = 0x99 StreamTypeUnknown = -1 )
const ( PsHeaderlen int = 14 SysHeaderlen int = 18 SysMapHeaderLen int = 24 PesHeaderLen int = 19 )
const ( StreamIdVideo = 0xe0 StreamIdAudio = 0xc0 )
const (
MaxPesLen = 0xFFFF
)
Variables ¶
var ErrGb28181 = errors.New("lal.gb28181: fxxk")
ErrGb28181 TODO(chef): [refactor] move to pkg base 202207
var (
Log = nazalog.GetGlobalLogger()
)
Functions ¶
This section is empty.
Types ¶
type OnReadPacket ¶
type OnReadPacket func(b []byte)
type Pes ¶
type Pes struct {
// contains filtered or unexported fields
}
Pes ----------------------------------------------------------- <iso13818-1.pdf> <2.4.3.6 PES packet> <page 49/174> <Table E.1 - PES packet header example> <page 142/174> <F.0.2 PES packet> <page 144/174> packet_start_code_prefix [24b] *** always 0x00, 0x00, 0x01 stream_id [8b] * PES_packet_length [16b] ** '10' [2b] PES_scrambling_control [2b] PES_priority [1b] data_alignment_indicator [1b] copyright [1b] original_or_copy [1b] * PTS_DTS_flags [2b] ESCR_flag [1b] ES_rate_flag [1b] DSM_trick_mode_flag [1b] additional_copy_info_flag [1b] PES_CRC_flag [1b] PES_extension_flag [1b] * PES_header_data_length [8b] * -----------------------------------------------------------
type PsUnpacker ¶
type PsUnpacker struct {
// contains filtered or unexported fields
}
PsUnpacker 解析ps(Program Stream)流
func NewPsUnpacker ¶
func NewPsUnpacker() *PsUnpacker
func (*PsUnpacker) Dispose ¶
func (p *PsUnpacker) Dispose()
func (*PsUnpacker) FeedRtpBody ¶
func (p *PsUnpacker) FeedRtpBody(rtpBody []byte, rtpts uint32) error
FeedRtpBody 注意,传入的数据应该是连续的,属于完整帧的
func (*PsUnpacker) FeedRtpPacket ¶
func (p *PsUnpacker) FeedRtpPacket(b []byte) error
FeedRtpPacket
注意,内部会处理丢包、乱序等问题
@param b: rtp包,注意,包含rtp包头部分,内部不持有该内存块
func (*PsUnpacker) WithOnAvPacket ¶
func (p *PsUnpacker) WithOnAvPacket(onAvPacket base.OnAvPacketFunc) *PsUnpacker
WithOnAvPacket
@param onAvPacket: 回调函数中 base.AvPacket 字段说明: PayloadType AvPacketPt 见 base.AvPacketPt。 Timestamp int64 dts,单位毫秒。 Pts int64 pts,单位毫秒。 Payload []byte 对于视频,h264和h265是AnnexB格式。 对于音频,AAC是前面携带adts的格式。
type PubSession ¶
type PubSession struct {
// contains filtered or unexported fields
}
func NewPubSession ¶
func NewPubSession() *PubSession
func (*PubSession) AppName ¶
func (session *PubSession) AppName() string
func (*PubSession) Dispose ¶
func (session *PubSession) Dispose() error
func (*PubSession) GetStat ¶
func (session *PubSession) GetStat() base.StatSession
func (*PubSession) IsAlive ¶
func (session *PubSession) IsAlive() (readAlive, writeAlive bool)
func (*PubSession) Listen ¶
func (session *PubSession) Listen(port int, isTcpFlag bool) (int, error)
Listen 非阻塞函数
注意,当`port`参数为0时,内部会自动选择一个可用端口监听,并通过返回值返回该端口
func (*PubSession) RawQuery ¶
func (session *PubSession) RawQuery() string
func (*PubSession) StreamName ¶
func (session *PubSession) StreamName() string
func (*PubSession) UniqueKey ¶
func (session *PubSession) UniqueKey() string
func (*PubSession) UpdateStat ¶
func (session *PubSession) UpdateStat(intervalSec uint32)
func (*PubSession) Url ¶
func (session *PubSession) Url() string
func (*PubSession) WithHookReadPacket ¶
func (session *PubSession) WithHookReadPacket(fn OnReadPacket) *PubSession
WithHookReadPacket
将接收的数据返回给上层。 注意,底层的解析逻辑依然走。 可以用这个方式来截取数据进行调试。
func (*PubSession) WithOnAvPacket ¶
func (session *PubSession) WithOnAvPacket(onAvPacket base.OnAvPacketFunc) *PubSession
WithOnAvPacket 设置音视频的回调。
@param onAvPacket: 见 PsUnpacker.WithOnAvPacket 的注释
func (*PubSession) WithStreamName ¶
func (session *PubSession) WithStreamName(streamName string) *PubSession