message

package
v1.9.0 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package message contains a RTMP message reader/writer.

Index

Constants

View Source
const (
	CodecMPEG1Audio = 2
	CodecLPCM       = 3
	CodecPCMA       = 7
	CodecPCMU       = 8
	CodecMPEG4Audio = 10
)

audio codecs

View Source
const (
	Rate5512  = 0
	Rate11025 = 1
	Rate22050 = 2
	Rate44100 = 3
)

audio rates

View Source
const (
	Depth8  = 0
	Depth16 = 1
)

audio depths

View Source
const (
	// AudioChunkStreamID is the chunk stream ID that is usually used to send Audio{}
	AudioChunkStreamID = 4
)
View Source
const (
	CodecH264 = 7
)

supported video codecs

View Source
const (
	// ControlChunkStreamID is the stream ID used for control messages.
	ControlChunkStreamID = 2
)
View Source
const (
	// VideoChunkStreamID is the chunk stream ID that is usually used to send Video{}
	VideoChunkStreamID = 6
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Acknowledge

type Acknowledge struct {
	Value uint32
}

Acknowledge is an acknowledgement message.

type Audio

type Audio struct {
	ChunkStreamID   byte
	DTS             time.Duration
	MessageStreamID uint32
	Codec           uint8
	Rate            uint8
	Depth           uint8
	IsStereo        bool
	AACType         AudioAACType // only for CodecMPEG4Audio
	Payload         []byte
}

Audio is an audio message.

type AudioAACType

type AudioAACType uint8

AudioAACType is the AAC type of a Audio.

const (
	AudioAACTypeConfig AudioAACType = 0
	AudioAACTypeAU     AudioAACType = 1
)

AudioAACType values.

type CommandAMF0

type CommandAMF0 struct {
	ChunkStreamID   byte
	MessageStreamID uint32
	Name            string
	CommandID       int
	Arguments       []interface{}
}

CommandAMF0 is a AMF0 command message.

type DataAMF0

type DataAMF0 struct {
	ChunkStreamID   byte
	MessageStreamID uint32
	Payload         []interface{}
}

DataAMF0 is a AMF0 data message.

type ExtendedCodedFrames

type ExtendedCodedFrames struct {
	ChunkStreamID   byte
	DTS             time.Duration
	MessageStreamID uint32
	FourCC          FourCC
	PTSDelta        time.Duration
	Payload         []byte
}

ExtendedCodedFrames is a CodedFrames extended message.

type ExtendedFramesX

type ExtendedFramesX struct {
	ChunkStreamID   byte
	DTS             time.Duration
	MessageStreamID uint32
	FourCC          FourCC
	Payload         []byte
}

ExtendedFramesX is a FramesX extended message.

type ExtendedMPEG2TSSequenceStart

type ExtendedMPEG2TSSequenceStart struct {
	FourCC FourCC
}

ExtendedMPEG2TSSequenceStart is a MPEG2-TS sequence start extended message.

type ExtendedMetadata

type ExtendedMetadata struct {
	FourCC FourCC
}

ExtendedMetadata is a metadata extended message.

type ExtendedSequenceEnd

type ExtendedSequenceEnd struct {
	FourCC FourCC
}

ExtendedSequenceEnd is a sequence end extended message.

type ExtendedSequenceStart

type ExtendedSequenceStart struct {
	ChunkStreamID   byte
	MessageStreamID uint32
	FourCC          FourCC
	Config          []byte
}

ExtendedSequenceStart is a sequence start extended message.

type ExtendedType

type ExtendedType uint8

ExtendedType is a message extended type.

const (
	ExtendedTypeSequenceStart        ExtendedType = 0
	ExtendedTypeCodedFrames          ExtendedType = 1
	ExtendedTypeSequenceEnd          ExtendedType = 2
	ExtendedTypeFramesX              ExtendedType = 3
	ExtendedTypeMetadata             ExtendedType = 4
	ExtendedTypeMPEG2TSSequenceStart ExtendedType = 5
)

message extended types.

type FourCC

type FourCC uint32

FourCC is an identifier of a video codec.

var (
	FourCCAV1  FourCC = 'a'<<24 | 'v'<<16 | '0'<<8 | '1'
	FourCCVP9  FourCC = 'v'<<24 | 'p'<<16 | '0'<<8 | '9'
	FourCCHEVC FourCC = 'h'<<24 | 'v'<<16 | 'c'<<8 | '1'
)

video codec identifiers.

type Message

type Message interface {
	// contains filtered or unexported methods
}

Message is a message.

type ReadWriter

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

ReadWriter is a message reader/writer.

func NewReadWriter

func NewReadWriter(
	rw io.ReadWriter,
	bcrw *bytecounter.ReadWriter,
	checkAcknowledge bool,
) *ReadWriter

NewReadWriter allocates a ReadWriter.

func (*ReadWriter) Read

func (rw *ReadWriter) Read() (Message, error)

Read reads a message.

func (*ReadWriter) Write

func (rw *ReadWriter) Write(msg Message) error

Write writes a message.

type Reader

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

Reader is a message reader.

func NewReader

func NewReader(
	r io.Reader,
	bcr *bytecounter.Reader,
	onAckNeeded func(uint32) error,
) *Reader

NewReader allocates a Reader.

func (*Reader) Read

func (r *Reader) Read() (Message, error)

Read reads a Message.

type SetChunkSize

type SetChunkSize struct {
	Value uint32
}

SetChunkSize is a set chunk size message.

type SetPeerBandwidth

type SetPeerBandwidth struct {
	Value uint32
	Type  byte
}

SetPeerBandwidth is a set peer bandwidth message.

type SetWindowAckSize

type SetWindowAckSize struct {
	Value uint32
}

SetWindowAckSize is a set window acknowledgement message.

type Type

type Type byte

Type is a message type.

const (
	TypeSetChunkSize     Type = 1
	TypeAbortMessage     Type = 2
	TypeAcknowledge      Type = 3
	TypeSetWindowAckSize Type = 5
	TypeSetPeerBandwidth Type = 6

	TypeUserControl Type = 4

	TypeCommandAMF3 Type = 17
	TypeCommandAMF0 Type = 20

	TypeDataAMF3 Type = 15
	TypeDataAMF0 Type = 18

	TypeAudio Type = 8
	TypeVideo Type = 9
)

message types.

type UserControlPingRequest

type UserControlPingRequest struct {
	ServerTime uint32
}

UserControlPingRequest is a user control message.

type UserControlPingResponse

type UserControlPingResponse struct {
	ServerTime uint32
}

UserControlPingResponse is a user control message.

type UserControlSetBufferLength

type UserControlSetBufferLength struct {
	StreamID     uint32
	BufferLength uint32
}

UserControlSetBufferLength is a user control message.

type UserControlStreamBegin

type UserControlStreamBegin struct {
	StreamID uint32
}

UserControlStreamBegin is a user control message.

type UserControlStreamDry

type UserControlStreamDry struct {
	StreamID uint32
}

UserControlStreamDry is a user control message.

type UserControlStreamEOF

type UserControlStreamEOF struct {
	StreamID uint32
}

UserControlStreamEOF is a user control message.

type UserControlStreamIsRecorded

type UserControlStreamIsRecorded struct {
	StreamID uint32
}

UserControlStreamIsRecorded is a user control message.

type UserControlType

type UserControlType uint16

UserControlType is a user control type.

const (
	UserControlTypeStreamBegin      UserControlType = 0
	UserControlTypeStreamEOF        UserControlType = 1
	UserControlTypeStreamDry        UserControlType = 2
	UserControlTypeSetBufferLength  UserControlType = 3
	UserControlTypeStreamIsRecorded UserControlType = 4
	UserControlTypePingRequest      UserControlType = 6
	UserControlTypePingResponse     UserControlType = 7
)

user control types.

type Video

type Video struct {
	ChunkStreamID   byte
	DTS             time.Duration
	MessageStreamID uint32
	Codec           uint8
	IsKeyFrame      bool
	Type            VideoType
	PTSDelta        time.Duration
	Payload         []byte
}

Video is a video message.

type VideoType

type VideoType uint8

VideoType is the type of a video message.

const (
	VideoTypeConfig VideoType = 0
	VideoTypeAU     VideoType = 1
	VideoTypeEOS    VideoType = 2
)

VideoType values.

type Writer

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

Writer is a message writer.

func NewWriter

func NewWriter(
	w io.Writer,
	bcw *bytecounter.Writer,
	checkAcknowledge bool,
) *Writer

NewWriter allocates a Writer.

func (*Writer) SetAcknowledgeValue

func (w *Writer) SetAcknowledgeValue(v uint32)

SetAcknowledgeValue sets the value of the last received acknowledge.

func (*Writer) Write

func (w *Writer) Write(msg Message) error

Write writes a message.

Jump to

Keyboard shortcuts

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