libflv

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2021 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// LINER_PCM_PLATFORM_ENDIAN   uint8 = 0
	FLV_AUDIO_ADPCM = 1
	FLV_AUDIO_MP3   = 2
	// FLV_AUDIO_LINER_PCM_LITTLE_ENDIAN     = 3
	// FLV_AUDIO_NELLYMOSER_16KHZ_MONO       = 4
	// FLV_AUDIO_NELLYMOSER_8KHZ_MONO        = 5
	// FLV_AUDIO_NELLYMOSER                  = 6
	FLV_AUDIO_G711A = 7 //G711_A_LOW_LOGARITHMIC_PCM
	FLV_AUDIO_G711U = 8 //G711_MU_LOW_LOGARITHMIC_PCM
	FLV_AUDIO_AAC   = 10
	// FLV_AUDIO_SPEEX                 = 11
	FLV_AUDIO_OPUS   = 13
	FLV_AUDIO_MP3_8K = 14 //MP3_8KHZ

)
View Source
const (
	SND_8BIT   uint8 = 0
	SND_16_BIT       = 1
)
View Source
const (
	SND_MONO   uint8 = 0 //for Nellymoser, always 0
	SND_STEREO       = 1 //for AAC, always 1
)
View Source
const (
	AAC_SEQUENCE_HEADER uint8 = 0
	AAC_RAW                   = 1
)
View Source
const (
	AUDIO_TAG       uint8 = 8
	VIDEO_TAG       uint8 = 9
	SCRIPT_DATA_TAG uint8 = 18
)
View Source
const (
	KEY_FRAME                uint8 = 1 //for AVC, a seekable frame
	INTER_FRAME                    = 2 //for AVC, a non-seekable frame
	DISPOSABLE_INTER_FRAME         = 3 //H.263 only
	GENERATED_KEYFRAME             = 4 //reserved for server use only
	VIDEO_INFO_COMMAND_FRAME       = 5
)
View Source
const (
	// JPEG                       uint8 = 1
	FLV_VIDEO_SORENSON_H263 = 2
	// FLV_VIDEO_SCREEN_VIDEO               = 3
	FLV_VIDEO_VP6 = 4 //ON2_VP6
	// FLV_VIDEO_ON2_VP6_WITH_ALPHA_CHANNEL = 5
	// FLV_VIDEO_SCREEN_VIDEO_VERSION2      = 6
	FLV_VIDEO_AVC  = 7
	FLV_VIDEO_HEVC = 12 //https://github.com/CDN-Union/H265
	FLV_VIDEO_AV1  = 13 //https://aomediacodec.github.io/av1-isobmff
)
View Source
const (
	AVC_SEQUENCE_HEADER = 0
	AVC_NALU            = 1
	AVC_END_OF_SEQUENCE = 2
)

Variables

This section is empty.

Functions

func FLVWrite

func FLVWrite(tag Tag) (b []byte)

Types

type AudioTag

type AudioTag struct {
	TagBase
	SoundFormat   uint8 //4bits
	SoundRate     uint8 //2bits
	SoundSize     uint8 //1bit
	SoundType     uint8 //1bit
	SoundData     []byte
	AACPacketType uint8
}

func ParseAudioTag

func ParseAudioTag(tb TagBase, b []byte) (audio *AudioTag, err error)

func (*AudioTag) Data

func (at *AudioTag) Data() (b []byte)

func (*AudioTag) Marshal

func (at *AudioTag) Marshal() (b []byte)

type FLV

type FLV struct {
	FLVHeader
	// contains filtered or unexported fields
}

func NewFLV

func NewFLV(writer easyio.EasyWriter) *FLV

type FLVBody

type FLVBody struct {
}

type FLVHeader

type FLVHeader struct {
	Version        int8
	TypeFlagsAudio bool
	TypeFlagsVideo bool
}

type MetaTag

type MetaTag struct {
	TagBase         `structs:"-"`
	FirstField      string  `structs:"-"`
	SecondField     string  `structs:"-"`
	AudioChannels   string  `mapstructure:"audiochannels" structs:"audiochannels"`
	AudioCodecID    float64 `mapstructure:"audiocodecid" structs:"audiocodecid"`
	AudioDataRate   int     `mapstructure:"audiodatarate" structs:"audiodatarate"`
	AudioSampleRate int     `mapstructure:"audiosamplerate" structs:"audiosamplerate"`
	AudioSampleSize int     `mapstructure:"audiosamplesize" structs:"audiosamplesize"`
	Author          string  `mapstructure:"author" structs:"author"`
	Company         string  `mapstructure:"company" structs:"company"`
	DisplayHeight   string  `mapstructure:"displayHeight" structs:"displayHeight"`
	DisplayWidth    string  `mapstructure:"displayWidth" structs:"displayWidth"`
	Duration        int     `mapstructure:"duration" structs:"duration"`
	Encoder         string  `mapstructure:"encoder" structs:"encoder"`
	FileSize        int     `mapstructure:"filesize" structs:"filesize"`
	Fps             string  `mapstructure:"fps" structs:"fps"`
	FrameRate       int     `mapstructure:"framerate" structs:"framerate"`
	Height          int     `mapstructure:"height" structs:"height"`
	Level           string  `mapstructure:"level" structs:"level"`
	Profile         string  `mapstructure:"profile" structs:"profile"`
	Stereo          bool    `mapstructure:"stereo" structs:"stereo"`
	Version         string  `mapstructure:"version" structs:"version"`
	VideoCodecID    float64 `mapstructure:"videocodecid" structs:"videocodecid"`
	VideoDataRate   float64 `mapstructure:"videodatarate" structs:"videodatarate"`
	Width           int     `mapstructure:"width" structs:"width"`
}

func ParseMetaTag

func ParseMetaTag(tb TagBase, amf libamf.AMF, b []byte) (meta *MetaTag, err error)

func (*MetaTag) Data

func (mt *MetaTag) Data() (b []byte)

func (*MetaTag) Marshal

func (mt *MetaTag) Marshal() (b []byte)

type Tag

type Tag interface {
	Marshal() []byte
	GetTagInfo() *TagBase
	Data() []byte
}

type TagBase

type TagBase struct {
	TagType   uint8
	DataSize  uint32 //uint24
	TimeStamp uint32
	StreamID  uint32 //uint24, always 0
}

func (*TagBase) GetTagInfo

func (tb *TagBase) GetTagInfo() *TagBase

type VideoTag

type VideoTag struct {
	TagBase
	FrameType     uint8 //4bits
	CodecID       uint8 //4bits
	VideoData     []byte
	AVCPacketType uint8
	Cts           uint32 //CompositionTime, int24
}

func ParseVideoTag

func ParseVideoTag(tb TagBase, b []byte) (video *VideoTag, err error)

func (*VideoTag) Data

func (vt *VideoTag) Data() (b []byte)

func (*VideoTag) Marshal

func (vt *VideoTag) Marshal() (b []byte)

Jump to

Keyboard shortcuts

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