mp4

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 24, 2023 License: MIT Imports: 7 Imported by: 2

Documentation

Index

Constants

View Source
const (
	BasicBoxLen = 8
	FullBoxLen  = 12
)
View Source
const (
	TF_FLAG_BASE_DATA_OFFSET                 uint32 = 0x000001
	TF_FLAG_SAMPLE_DESCRIPTION_INDEX_PRESENT uint32 = 0x000002
	TF_FLAG_DEFAULT_SAMPLE_DURATION_PRESENT  uint32 = 0x000008
	TF_FLAG_DEFAULT_SAMPLE_SIZE_PRESENT      uint32 = 0x000010
	TF_FLAG_DEAAULT_SAMPLE_FLAGS_PRESENT     uint32 = 0x000020
	TF_FLAG_DURATION_IS_EMPTY                uint32 = 0x010000
	TF_FLAG_DEAAULT_BASE_IS_MOOF             uint32 = 0x020000

	//ffmpeg isom.h
	MOV_FRAG_SAMPLE_FLAG_DEGRADATION_PRIORITY_MASK uint32 = 0x0000ffff
	MOV_FRAG_SAMPLE_FLAG_IS_NON_SYNC               uint32 = 0x00010000
	MOV_FRAG_SAMPLE_FLAG_PADDING_MASK              uint32 = 0x000e0000
	MOV_FRAG_SAMPLE_FLAG_REDUNDANCY_MASK           uint32 = 0x00300000
	MOV_FRAG_SAMPLE_FLAG_DEPENDED_MASK             uint32 = 0x00c00000
	MOV_FRAG_SAMPLE_FLAG_DEPENDS_MASK              uint32 = 0x03000000

	MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO  uint32 = 0x02000000
	MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES uint32 = 0x01000000
)
View Source
const (
	TR_FLAG_DATA_OFFSET                  uint32 = 0x000001
	TR_FLAG_DATA_FIRST_SAMPLE_FLAGS      uint32 = 0x000004
	TR_FLAG_DATA_SAMPLE_DURATION         uint32 = 0x000100
	TR_FLAG_DATA_SAMPLE_SIZE             uint32 = 0x000200
	TR_FLAG_DATA_SAMPLE_FLAGS            uint32 = 0x000400
	TR_FLAG_DATA_SAMPLE_COMPOSITION_TIME uint32 = 0x000800
)
View Source
const (
	UseSubsampleEncryption uint32 = 0x000002
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AVPacket

type AVPacket struct {
	Cid     MP4_CODEC_TYPE
	Data    []byte
	TrackId int
	Pts     uint64
	Dts     uint64
}

type AudioSampleEntry

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

func NewAudioSampleEntry

func NewAudioSampleEntry(format [4]byte) *AudioSampleEntry

func (*AudioSampleEntry) Decode

func (entry *AudioSampleEntry) Decode(r io.Reader) (offset int, err error)

func (*AudioSampleEntry) Encode

func (entry *AudioSampleEntry) Encode() (int, []byte)

func (*AudioSampleEntry) Size

func (entry *AudioSampleEntry) Size() uint64

type BaseDescriptor

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

func (*BaseDescriptor) Decode

func (base *BaseDescriptor) Decode(data []byte) *codec.BitStream

func (*BaseDescriptor) Encode

func (base *BaseDescriptor) Encode() []byte

type BasicBox

type BasicBox struct {
	Size     uint64
	Type     [4]byte
	UserType [16]byte
}

func NewBasicBox

func NewBasicBox(boxtype [4]byte) *BasicBox

func (*BasicBox) Decode

func (box *BasicBox) Decode(r io.Reader) (int, error)

func (*BasicBox) Encode

func (box *BasicBox) Encode() (int, []byte)

type BoxDecoder

type BoxDecoder interface {
	Decode(buf []byte) (int, error)
}

type BoxEncoder

type BoxEncoder interface {
	Encode(buf []byte) (int, []byte)
}

type BoxSize

type BoxSize interface {
	Size() uint64
}

type ChunkLargeOffsetBox

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

func NewChunkLargeOffsetBox

func NewChunkLargeOffsetBox() *ChunkLargeOffsetBox

func (*ChunkLargeOffsetBox) Decode

func (co64 *ChunkLargeOffsetBox) Decode(r io.Reader) (offset int, err error)

func (*ChunkLargeOffsetBox) Encode

func (co64 *ChunkLargeOffsetBox) Encode() (int, []byte)

func (*ChunkLargeOffsetBox) Size

func (co64 *ChunkLargeOffsetBox) Size() uint64

type ChunkOffsetBox

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

func NewChunkOffsetBox

func NewChunkOffsetBox() *ChunkOffsetBox

func (*ChunkOffsetBox) Decode

func (stco *ChunkOffsetBox) Decode(r io.Reader) (offset int, err error)

func (*ChunkOffsetBox) Encode

func (stco *ChunkOffsetBox) Encode() (int, []byte)

func (*ChunkOffsetBox) Size

func (stco *ChunkOffsetBox) Size() uint64

type CompositionOffsetBox

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

func NewCompositionOffsetBox

func NewCompositionOffsetBox() *CompositionOffsetBox

func (*CompositionOffsetBox) Decode

func (ctts *CompositionOffsetBox) Decode(r io.Reader) (offset int, err error)

func (*CompositionOffsetBox) Encode

func (ctts *CompositionOffsetBox) Encode() (int, []byte)

func (*CompositionOffsetBox) Size

func (ctts *CompositionOffsetBox) Size() uint64

type EditListBox

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

func NewEditListBox

func NewEditListBox(version uint32) *EditListBox

func (*EditListBox) Decode

func (elst *EditListBox) Decode(r io.Reader) (offset int, err error)

func (*EditListBox) Encode

func (elst *EditListBox) Encode() (int, []byte)

type FileTypeBox

type FileTypeBox struct {
	Box               *BasicBox
	Major_brand       uint32
	Minor_version     uint32
	Compatible_brands []uint32
}

func NewFileTypeBox

func NewFileTypeBox() *FileTypeBox

func NewSegmentTypeBox

func NewSegmentTypeBox() *FileTypeBox

func (*FileTypeBox) Encode

func (ftyp *FileTypeBox) Encode() (int, []byte)

func (*FileTypeBox) Size

func (ftyp *FileTypeBox) Size() uint64

type FreeBox

type FreeBox struct {
	Box  BasicBox
	Data []byte
}

func NewFreeBox

func NewFreeBox() *FreeBox

func (*FreeBox) Decode

func (free *FreeBox) Decode(r io.Reader) (int, error)

func (*FreeBox) Encode

func (free *FreeBox) Encode() (int, []byte)

func (*FreeBox) Size

func (free *FreeBox) Size() uint64

type FullBox

type FullBox struct {
	Box     *BasicBox
	Version uint8
	Flags   [3]byte
}

func NewFullBox

func NewFullBox(boxtype [4]byte, version uint8) *FullBox

func (*FullBox) Decode

func (box *FullBox) Decode(r io.Reader) (int, error)

func (*FullBox) Encode

func (box *FullBox) Encode() (int, []byte)

func (*FullBox) Size

func (box *FullBox) Size() uint64

type HandlerBox

type HandlerBox struct {
	Box          *FullBox
	Handler_type HandlerType
	Name         string
}

func NewHandlerBox

func NewHandlerBox(handlerType HandlerType, name string) *HandlerBox

func (*HandlerBox) Decode

func (hdlr *HandlerBox) Decode(r io.Reader, size uint64) (offset int, err error)

func (*HandlerBox) Encode

func (hdlr *HandlerBox) Encode() (int, []byte)

func (*HandlerBox) Size

func (hdlr *HandlerBox) Size() uint64

type HandlerType

type HandlerType [4]byte

type HintMediaHeaderBox

type HintMediaHeaderBox struct {
	Box        *FullBox
	MaxPDUsize uint16
	AvgPDUsize uint16
	Maxbitrate uint32
	Avgbitrate uint32
}

func NewHintMediaHeaderBox

func NewHintMediaHeaderBox() *HintMediaHeaderBox

func (*HintMediaHeaderBox) Decode

func (hmhd *HintMediaHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*HintMediaHeaderBox) Encode

func (hmhd *HintMediaHeaderBox) Encode() (int, []byte)

func (*HintMediaHeaderBox) Size

func (hmhd *HintMediaHeaderBox) Size() uint64

type HintSampleEntry

type HintSampleEntry struct {
	Entry *SampleEntry
	Data  byte
}

type MP4_CODEC_TYPE

type MP4_CODEC_TYPE int
const (
	MP4_CODEC_H264 MP4_CODEC_TYPE = iota + 1
	MP4_CODEC_H265

	MP4_CODEC_AAC MP4_CODEC_TYPE = iota + 100
	MP4_CODEC_G711A
	MP4_CODEC_G711U
	MP4_CODEC_MP2
	MP4_CODEC_MP3
)

type MP4_FLAG

type MP4_FLAG uint32
const (
	MP4_FLAG_FRAGMENT MP4_FLAG = (1 << 1)
	MP4_FLAG_KEYFRAME MP4_FLAG = (1 << 3)
	MP4_FLAG_CUSTOM   MP4_FLAG = (1 << 5)
	MP4_FLAG_DASH     MP4_FLAG = (1 << 11)
)

ffmpeg movenc.h

type MediaHeaderBox

type MediaHeaderBox struct {
	Box               *FullBox
	Creation_time     uint64
	Modification_time uint64
	Timescale         uint32
	Duration          uint64
	Pad               uint8
	Language          [3]uint8
	Pre_defined       uint16
}

func NewMediaHeaderBox

func NewMediaHeaderBox() *MediaHeaderBox

func (*MediaHeaderBox) Decode

func (mdhd *MediaHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*MediaHeaderBox) Encode

func (mdhd *MediaHeaderBox) Encode() (int, []byte)

func (*MediaHeaderBox) Size

func (mdhd *MediaHeaderBox) Size() uint64

type MovDemuxer

type MovDemuxer struct {
	OnRawSample func(cid MP4_CODEC_TYPE, sample []byte, subSample *SubSample) error
	// contains filtered or unexported fields
}

func CreateMp4Demuxer

func CreateMp4Demuxer(r io.ReadSeeker) *MovDemuxer

func (*MovDemuxer) GetMp4Info

func (demuxer *MovDemuxer) GetMp4Info() Mp4Info

func (*MovDemuxer) GetSyncTable

func (demuxer *MovDemuxer) GetSyncTable(trackId uint32) ([]SyncSample, error)

func (*MovDemuxer) ReadHead

func (demuxer *MovDemuxer) ReadHead() ([]TrackInfo, error)

func (*MovDemuxer) ReadPacket

func (demuxer *MovDemuxer) ReadPacket() (*AVPacket, error)

/return error == io.EOF, means read mp4 file completed

func (*MovDemuxer) SeekTime

func (demuxer *MovDemuxer) SeekTime(dts uint64) error

type MovieFragmentHeaderBox

type MovieFragmentHeaderBox struct {
	Box            *FullBox
	SequenceNumber uint32
}

func NewMovieFragmentHeaderBox

func NewMovieFragmentHeaderBox(sequence uint32) *MovieFragmentHeaderBox

func (*MovieFragmentHeaderBox) Decode

func (mfhd *MovieFragmentHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*MovieFragmentHeaderBox) Encode

func (mfhd *MovieFragmentHeaderBox) Encode() (int, []byte)

func (*MovieFragmentHeaderBox) Size

func (mfhd *MovieFragmentHeaderBox) Size() uint64

type MovieFragmentRandomAccessOffsetBox

type MovieFragmentRandomAccessOffsetBox struct {
	Box        *FullBox
	SizeOfMfra uint32
}

func NewMovieFragmentRandomAccessOffsetBox

func NewMovieFragmentRandomAccessOffsetBox(size uint32) *MovieFragmentRandomAccessOffsetBox

func (*MovieFragmentRandomAccessOffsetBox) Decode

func (mfro *MovieFragmentRandomAccessOffsetBox) Decode(r io.Reader) (offset int, err error)

func (*MovieFragmentRandomAccessOffsetBox) Encode

func (mfro *MovieFragmentRandomAccessOffsetBox) Encode() (int, []byte)

func (*MovieFragmentRandomAccessOffsetBox) Size

type MovieHeaderBox

type MovieHeaderBox struct {
	Box               *FullBox
	Creation_time     uint64
	Modification_time uint64
	Timescale         uint32
	Duration          uint64
	Rate              uint32
	Volume            uint16
	Matrix            [9]uint32
	Pre_defined       [6]uint32
	Next_track_ID     uint32
}

func NewMovieHeaderBox

func NewMovieHeaderBox() *MovieHeaderBox

func (*MovieHeaderBox) Decode

func (mvhd *MovieHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*MovieHeaderBox) Encode

func (mvhd *MovieHeaderBox) Encode() (int, []byte)

func (*MovieHeaderBox) Size

func (mvhd *MovieHeaderBox) Size() uint64

type Movmuxer

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

func CreateMp4Muxer

func CreateMp4Muxer(w io.WriteSeeker, options ...MuxerOption) (*Movmuxer, error)

func (*Movmuxer) AddAudioTrack

func (muxer *Movmuxer) AddAudioTrack(cid MP4_CODEC_TYPE, options ...TrackOption) uint32

func (*Movmuxer) AddVideoTrack

func (muxer *Movmuxer) AddVideoTrack(cid MP4_CODEC_TYPE, options ...TrackOption) uint32

func (*Movmuxer) FlushFragment

func (muxer *Movmuxer) FlushFragment() (err error)

func (*Movmuxer) OnNewFragment

func (muxer *Movmuxer) OnNewFragment(onFragment OnFragment)

func (*Movmuxer) ReBindWriter

func (muxer *Movmuxer) ReBindWriter(w io.WriteSeeker)

func (*Movmuxer) Write

func (muxer *Movmuxer) Write(track uint32, data []byte, pts uint64, dts uint64) error

func (*Movmuxer) WriteInitSegment

func (muxer *Movmuxer) WriteInitSegment(w io.Writer) error

func (*Movmuxer) WriteTrailer

func (muxer *Movmuxer) WriteTrailer() (err error)

type Mp4Info

type Mp4Info struct {
	MajorBrand       uint32
	MinorVersion     uint32
	CompatibleBrands []uint32
	Duration         uint32
	Timescale        uint32
	CreateTime       uint64
	ModifyTime       uint64
}

type MuxerOption

type MuxerOption func(muxer *Movmuxer)

func WithMp4Flag

func WithMp4Flag(f MP4_FLAG) MuxerOption

type OnFragment

type OnFragment func(duration uint32, firstPts, firstDts uint64)

type SampleDescriptionBox

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

func NewSampleDescriptionBox

func NewSampleDescriptionBox() *SampleDescriptionBox

func (*SampleDescriptionBox) Decode

func (stsd *SampleDescriptionBox) Decode(r io.Reader) (offset int, err error)

func (*SampleDescriptionBox) Encode

func (entry *SampleDescriptionBox) Encode() (int, []byte)

func (*SampleDescriptionBox) Size

func (stsd *SampleDescriptionBox) Size() uint64

type SampleEntry

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

func NewSampleEntry

func NewSampleEntry(format [4]byte) *SampleEntry

func (*SampleEntry) Decode

func (entry *SampleEntry) Decode(r io.Reader) (offset int, err error)

func (*SampleEntry) Encode

func (entry *SampleEntry) Encode() (int, []byte)

func (*SampleEntry) Size

func (entry *SampleEntry) Size() uint64

type SampleEntryType

type SampleEntryType uint8
const (
	SAMPLE_AUDIO SampleEntryType = iota
	SAMPLE_VIDEO
)

type SampleSizeBox

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

func NewSampleSizeBox

func NewSampleSizeBox() *SampleSizeBox

func (*SampleSizeBox) Decode

func (stsz *SampleSizeBox) Decode(r io.Reader) (offset int, err error)

func (*SampleSizeBox) Encode

func (stsz *SampleSizeBox) Encode() (int, []byte)

func (*SampleSizeBox) Size

func (stsz *SampleSizeBox) Size() uint64

type SampleToChunkBox

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

func NewSampleToChunkBox

func NewSampleToChunkBox() *SampleToChunkBox

func (*SampleToChunkBox) Decode

func (stsc *SampleToChunkBox) Decode(r io.Reader) (offset int, err error)

func (*SampleToChunkBox) Encode

func (stsc *SampleToChunkBox) Encode() (int, []byte)

func (*SampleToChunkBox) Size

func (stsc *SampleToChunkBox) Size() uint64

type SegmentIndexBox

type SegmentIndexBox struct {
	Box                      *FullBox
	ReferenceID              uint32
	TimeScale                uint32
	EarliestPresentationTime uint64
	FirstOffset              uint64
	ReferenceCount           uint16
	Entrys                   []sidxEntry
}

func NewSegmentIndexBox

func NewSegmentIndexBox() *SegmentIndexBox

func (*SegmentIndexBox) Decode

func (sidx *SegmentIndexBox) Decode(r io.Reader) (offset int, err error)

func (*SegmentIndexBox) Encode

func (sidx *SegmentIndexBox) Encode() (int, []byte)

func (*SegmentIndexBox) Size

func (sidx *SegmentIndexBox) Size() uint64

type SencBox

type SencBox struct {
	Box             *FullBox
	SampleCount     uint32
	PerSampleIVSize uint32
	EntryList       *movsenc
}

SencBox - Sample Encryption Box (senc) (in trak or traf box) See ISO/IEC 23001-7 Section 7.2 and CMAF specification Full Box + SampleCount

func (*SencBox) Decode

func (senc *SencBox) Decode(r io.Reader, size uint32, perSampleIVSize uint8) (offset int, err error)

type SoundMediaHeaderBox

type SoundMediaHeaderBox struct {
	Box     *FullBox
	Balance int16
}

func NewSoundMediaHeaderBox

func NewSoundMediaHeaderBox() *SoundMediaHeaderBox

func (*SoundMediaHeaderBox) Decode

func (smhd *SoundMediaHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*SoundMediaHeaderBox) Encode

func (smhd *SoundMediaHeaderBox) Encode() (int, []byte)

func (*SoundMediaHeaderBox) Size

func (smhd *SoundMediaHeaderBox) Size() uint64

type SubSample

type SubSample struct {
	IV       [16]byte
	Patterns []SubSamplePattern
	Number   uint32
}

type SubSamplePattern

type SubSamplePattern struct {
	BytesClear     uint16
	BytesProtected uint32
}

type SyncSample

type SyncSample struct {
	Pts    uint64
	Dts    uint64
	Size   uint32
	Offset uint32
}

type SyncSampleBox

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

func NewSyncSampleBox

func NewSyncSampleBox() *SyncSampleBox

func (*SyncSampleBox) Decode

func (stss *SyncSampleBox) Decode(r io.Reader) (offset int, err error)

func (*SyncSampleBox) Encode

func (stss *SyncSampleBox) Encode() (int, []byte)

func (*SyncSampleBox) Size

func (stss *SyncSampleBox) Size() uint64

type TimeToSampleBox

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

func NewTimeToSampleBox

func NewTimeToSampleBox() *TimeToSampleBox

func (*TimeToSampleBox) Decode

func (stts *TimeToSampleBox) Decode(r io.Reader) (offset int, err error)

func (*TimeToSampleBox) Encode

func (stts *TimeToSampleBox) Encode() (int, []byte)

func (*TimeToSampleBox) Size

func (stts *TimeToSampleBox) Size() uint64

type TrackExtendsBox

type TrackExtendsBox struct {
	Box                           *FullBox
	TrackID                       uint32
	DefaultSampleDescriptionIndex uint32
	DefaultSampleDuration         uint32
	DefaultSampleSize             uint32
	DefaultSampleFlags            uint32
}

func NewTrackExtendsBox

func NewTrackExtendsBox(track uint32) *TrackExtendsBox

func (*TrackExtendsBox) Decode

func (trex *TrackExtendsBox) Decode(r io.Reader) (offset int, err error)

func (*TrackExtendsBox) Encode

func (trex *TrackExtendsBox) Encode() (int, []byte)

func (*TrackExtendsBox) Size

func (trex *TrackExtendsBox) Size() uint64

type TrackFragmentBaseMediaDecodeTimeBox

type TrackFragmentBaseMediaDecodeTimeBox struct {
	Box                 *FullBox
	BaseMediaDecodeTime uint64
}

func NewTrackFragmentBaseMediaDecodeTimeBox

func NewTrackFragmentBaseMediaDecodeTimeBox(fragStart uint64) *TrackFragmentBaseMediaDecodeTimeBox

func (*TrackFragmentBaseMediaDecodeTimeBox) Decode

func (tfdt *TrackFragmentBaseMediaDecodeTimeBox) Decode(r io.Reader, size uint32) (offset int, err error)

func (*TrackFragmentBaseMediaDecodeTimeBox) Encode

func (tfdt *TrackFragmentBaseMediaDecodeTimeBox) Encode() (int, []byte)

func (*TrackFragmentBaseMediaDecodeTimeBox) Size

type TrackFragmentHeaderBox

type TrackFragmentHeaderBox struct {
	Box                    *FullBox
	Track_ID               uint32
	BaseDataOffset         uint64
	SampleDescriptionIndex uint32
	DefaultSampleDuration  uint32
	DefaultSampleSize      uint32
	DefaultSampleFlags     uint32
}

func NewTrackFragmentHeaderBox

func NewTrackFragmentHeaderBox(trackid uint32) *TrackFragmentHeaderBox

func (*TrackFragmentHeaderBox) Decode

func (tfhd *TrackFragmentHeaderBox) Decode(r io.Reader, size uint32, moofOffset uint64) (offset int, err error)

func (*TrackFragmentHeaderBox) Encode

func (tfhd *TrackFragmentHeaderBox) Encode() (int, []byte)

func (*TrackFragmentHeaderBox) Size

func (tfhd *TrackFragmentHeaderBox) Size() uint64

type TrackFragmentRandomAccessBox

type TrackFragmentRandomAccessBox struct {
	Box                   *FullBox
	TrackID               uint32
	LengthSizeOfTrafNum   uint8
	LengthSizeOfTrunNum   uint8
	LengthSizeOfSampleNum uint8
	NumberOfEntry         uint32
	FragEntrys            *movtfra
}

func NewTrackFragmentRandomAccessBox

func NewTrackFragmentRandomAccessBox(trackid uint32) *TrackFragmentRandomAccessBox

func (*TrackFragmentRandomAccessBox) Decode

func (tfra *TrackFragmentRandomAccessBox) Decode(r io.Reader) (offset int, err error)

func (*TrackFragmentRandomAccessBox) Encode

func (tfra *TrackFragmentRandomAccessBox) Encode() (int, []byte)

func (*TrackFragmentRandomAccessBox) Size

func (tfra *TrackFragmentRandomAccessBox) Size() uint64

type TrackHeaderBox

type TrackHeaderBox struct {
	Box               *FullBox
	Creation_time     uint64
	Modification_time uint64
	Track_ID          uint32
	Duration          uint64
	Layer             uint16
	Alternate_group   uint16
	Volume            uint16
	Matrix            [9]uint32
	Width             uint32
	Height            uint32
}

func NewTrackHeaderBox

func NewTrackHeaderBox() *TrackHeaderBox

func (*TrackHeaderBox) Decode

func (tkhd *TrackHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*TrackHeaderBox) Encode

func (tkhd *TrackHeaderBox) Encode() (int, []byte)

func (*TrackHeaderBox) Size

func (tkhd *TrackHeaderBox) Size() uint64

type TrackInfo

type TrackInfo struct {
	Duration     uint32
	TrackId      int
	Cid          MP4_CODEC_TYPE
	Height       uint32
	Width        uint32
	SampleRate   uint32
	SampleSize   uint16
	ChannelCount uint8
	Timescale    uint32
	StartDts     uint64
	EndDts       uint64
}

type TrackOption

type TrackOption func(track *mp4track)

func WithAudioChannelCount

func WithAudioChannelCount(channelCount uint8) TrackOption

func WithAudioSampleBits

func WithAudioSampleBits(sampleBits uint8) TrackOption

func WithAudioSampleRate

func WithAudioSampleRate(sampleRate uint32) TrackOption

func WithExtraData

func WithExtraData(extraData []byte) TrackOption

func WithVideoHeight

func WithVideoHeight(height uint32) TrackOption

func WithVideoWidth

func WithVideoWidth(width uint32) TrackOption

type TrackRunBox

type TrackRunBox struct {
	Box              *FullBox
	SampleCount      uint32
	Dataoffset       int32
	FirstSampleFlags uint32
	EntryList        *movtrun
}

func NewTrackRunBox

func NewTrackRunBox() *TrackRunBox

func (*TrackRunBox) Decode

func (trun *TrackRunBox) Decode(r io.Reader, size uint32, dataOffset uint32) (offset int, err error)

func (*TrackRunBox) Encode

func (trun *TrackRunBox) Encode() (int, []byte)

func (*TrackRunBox) Size

func (trun *TrackRunBox) Size() uint64

type VideoMediaHeaderBox

type VideoMediaHeaderBox struct {
	Box          *FullBox
	Graphicsmode uint16
	Opcolor      [3]uint16
}

func NewVideoMediaHeaderBox

func NewVideoMediaHeaderBox() *VideoMediaHeaderBox

func (*VideoMediaHeaderBox) Decode

func (vmhd *VideoMediaHeaderBox) Decode(r io.Reader) (offset int, err error)

func (*VideoMediaHeaderBox) Encode

func (vmhd *VideoMediaHeaderBox) Encode() (int, []byte)

func (*VideoMediaHeaderBox) Size

func (vmhd *VideoMediaHeaderBox) Size() uint64

type VisualSampleEntry

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

func NewVisualSampleEntry

func NewVisualSampleEntry(format [4]byte) *VisualSampleEntry

func (*VisualSampleEntry) Decode

func (entry *VisualSampleEntry) Decode(r io.Reader) (offset int, err error)

func (*VisualSampleEntry) Encode

func (entry *VisualSampleEntry) Encode() (int, []byte)

func (*VisualSampleEntry) Size

func (entry *VisualSampleEntry) Size() uint64

Jump to

Keyboard shortcuts

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