rtp

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 19, 2021 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChannelVideo        = iota         // 视频通道
	ChannelVideoControl                // 视频控制通道
	ChannelAudio                       // 音频通道
	ChannelAudioControl                // 音频控制通道
	ChannelCount                       // 支持的 RTP 通道类型数量
	ChannelMin          = ChannelVideo // 支持的 RTP 通道类型最小值
)

预定义 RTP 通道类型

View Source
const (
	// TransferPrefix RTP 包网络传输时的前缀
	TransferPrefix = byte(0x24) // $
)

Variables

DefaultChannelConfig 默认的通道配置

Functions

func ChannelName

func ChannelName(channel int) string

ChannelName 通道名

Types

type Demuxer

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

Demuxer 帧转换器

func NewDemuxer

func NewDemuxer(video *codec.VideoMeta, audio *codec.AudioMeta, fw codec.FrameWriter, logger *xlog.Logger) (*Demuxer, error)

NewDemuxer 创建 rtp.Packet 解封装处理器。

func (*Demuxer) Close

func (demuxer *Demuxer) Close() error

Close .

func (*Demuxer) WriteRtpPacket

func (demuxer *Demuxer) WriteRtpPacket(packet *Packet) error

WritePacket .

type Depacketizer

type Depacketizer interface {
	Control(basePts *int64, p *Packet) error
	Depacketize(basePts int64, p *Packet) error
}

Depacketizer 解包器

func NewAacDepacketizer

func NewAacDepacketizer(meta *codec.AudioMeta, w codec.FrameWriter) Depacketizer

NewAacDepacketizer 实例化 AAC 解包器

func NewH264Depacketizer

func NewH264Depacketizer(meta *codec.VideoMeta, w codec.FrameWriter) Depacketizer

NewH264Depacketizer 实例化 H264 帧提取器

func NewH265Depacketizer added in v1.1.0

func NewH265Depacketizer(meta *codec.VideoMeta, w codec.FrameWriter) Depacketizer

NewH265Depacketizer 实例化 H265 帧提取器

type Packet

type Packet struct {
	Channel    byte   // 通道
	Data       []byte // 数据
	rtp.Header        // Video 、Audio Channel'Header
}

Packet RTP 数据包

func ReadPacket

func ReadPacket(r *bufio.Reader, channelConfig []int) (*Packet, error)

ReadPacket 根据规范从 r 中读取 rtp 包. channelConfig 提供通道类型所在通道的配置信息

func (*Packet) Payload

func (p *Packet) Payload() []byte

Payload 数据包中实际的载荷 如果是控制通道,返回nil

func (*Packet) Size

func (p *Packet) Size() int

Size 包在 RTP 中的传输总大小

func (*Packet) Write

func (p *Packet) Write(w io.Writer, channelConfig []int) error

Write 根据规范将 RTP 包输出到 w channelConfig 提供通道类型所在通道的配置信息

type PacketWriter

type PacketWriter interface {
	WriteRtpPacket(packet *Packet) error
}

PacketWriter 包装 WritePacket 方法的接口

type SyncClock

type SyncClock struct {
	// NTP Timestamp(Network time protocol)SR包发送时的绝对时间值。
	// NTP的作用是同步不同的RTP媒体流。
	// NTP时间戳,它的前32位是从1900 年1 月1 日0 时开始到现在的以秒为单位的整数部,
	// 后32 位是此时间的小数部,因此,它可以肯定的表示了数据发送出去的绝对时间。
	NTPTime int64 // 此处转换成自 January 1, year 1 以来的纳秒数
	// RTP Timestamp:与NTP时间戳对应,
	// 与RTP数据包中的RTP时间戳具有相同的单位和随机初始值。
	RTPTime     uint32
	RTPTimeUnit float64 // RTP时间单位,每个RTP时间的纳秒数
}

SyncClock .

func (*SyncClock) Decode

func (sc *SyncClock) Decode(data []byte) (ok bool)

Decode .

func (*SyncClock) LocalTime

func (sc *SyncClock) LocalTime() time.Time

LocalTime 本地时间

func (*SyncClock) Rtp2Ntp

func (sc *SyncClock) Rtp2Ntp(rtptime uint32) int64

Rtp2Ntp .

Jump to

Keyboard shortcuts

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