Documentation ¶
Overview ¶
Package mp4 - library for parsing and writing MP4/ISOBMFF files with a focus on fragmented files.
Most boxes have their own file named after the box four-letter name in the ISO/IEC 14996-12 standard, but in some cases, there may be multiple boxes that have the same content, and the code is then having a generic name like visualsampleentry.go.
The Box interface is specified in box.go. It decodes box size and type in the box header and dispatched decode for each individual box depending on its type.
Implement a new box ¶
To implement a new box "fooo", the following is needed:
Create a file fooo.go and with struct type FoooBox.
FoooBox should then implement the Box interface methods:
Type() Size() Encode() Info()
but also its own decode method `DecodeFooo`, and register that method in the `decoders` map in `box.go`. For a simple example, look at the `prft` box in `prft.go`.
Container Boxes ¶
Container boxes like moof, have a list of all their children called Children, but also direct pointers to the children with appropriate names, like Mfhd and Traf. This makes it easy to chain box paths to reach an element like a TfhdBox as
file.Moof.Traf.Tfhd
When there may be multiple children with the same name, there may be both a pointer to a slice Trafs with all boxes and Traf that points to the first.
Media Sample Data Structures ¶
To handle media sample data there are two structures:
1. `Sample` stores the sample information used in trun
2. `FullSample` also carries a slice with the samples binary data as well as decode time
Fragmenting segments ¶
A MediaSegment can be fragmented into multiple fragments by the method
func (s *MediaSegment) Fragmentify(timescale uint64, trex *TrexBox, duration uint32) ([]*Fragment, error)
Index ¶
- Constants
- func ContainerInfo(c ContainerBox, w io.Writer, specificBoxLevels, indent, indentStep string) error
- func EncodeContainer(c ContainerBox, w io.Writer) error
- func EncodeHeader(b Box, w io.Writer) error
- func EncodeHeaderWithSize(boxType string, boxSize uint64, largeSize bool, w io.Writer) error
- func GetVersion() string
- func IsSyncSampleFlags(flags uint32) bool
- func SetNonSyncSampleFlags(flags uint32) uint32
- func SetSyncSampleFlags(flags uint32) uint32
- func WriteToFile(boxStructure BoxStructure, filePath string) error
- type AlstSampleGroupEntry
- type AudioSampleEntryBox
- type AvcCBox
- type Box
- func DecodeAudioSampleEntry(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeAvcC(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeBox(startPos uint64, r io.Reader) (Box, error)
- func DecodeBoxLazyMdat(startPos uint64, r io.ReadSeeker) (Box, error)
- func DecodeBtrt(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeCToo(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeCdat(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeClap(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeCo64(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeContainerChildren(hdr *boxHeader, startPos, endPos uint64, r io.Reader) ([]Box, error)
- func DecodeCslg(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeCtim(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeCtts(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeData(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeDinf(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeDref(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeEdts(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeElng(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeElst(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeEmsg(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeEsds(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeFree(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeFrma(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeFtyp(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeHdlr(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeHvcC(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeIden(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeIlst(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeKind(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMdat(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMdatLazily(hdr *boxHeader, startPos uint64) (Box, error)
- func DecodeMdhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMdia(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMehd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMeta(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMfhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMfra(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMfro(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMime(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMinf(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMoof(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMoov(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMvex(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeMvhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeNmhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodePasp(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodePayl(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodePrft(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodePssh(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSaio(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSaiz(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSbgp(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSchi(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSchm(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSdtp(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSenc(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSgpd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSidx(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSinf(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSmhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStbl(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStco(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSthd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStpp(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStsc(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStsd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStss(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStsz(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSttg(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStts(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeStyp(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeSubs(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTenc(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTfdt(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTfhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTfra(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTkhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTraf(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTrak(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTref(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTrefType(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTrep(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTrex(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeTrun(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeURLBox(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeUUID(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeUdta(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeUnknown(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVisualSampleEntry(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVlab(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVmhd(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVsid(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVttC(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVtta(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVttc(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeVtte(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- func DecodeWvtt(hdr *boxHeader, startPos uint64, r io.Reader) (Box, error)
- type BoxDecoder
- type BoxStructure
- type BtrtBox
- type CTooBox
- type CdatBox
- type Chunk
- type ClapBox
- type Co64Box
- type ContainerBox
- type CslgBox
- type CtimBox
- type CttsBox
- type DataBox
- type DataRange
- type DecFileMode
- type DinfBox
- type DrefBox
- type EdtsBox
- type ElngBox
- type ElstBox
- type EmsgBox
- type EncFragFileMode
- type EncOptimize
- type EsdsBox
- type File
- func (f *File) AddChild(box Box, boxStartPos uint64)
- func (f *File) AddMediaSegment(m *MediaSegment)
- func (f *File) ApplyOptions(opts ...Option)
- func (f *File) CopySampleData(w io.Writer, rs io.ReadSeeker, trak *TrakBox, ...) error
- func (f *File) DumpWithSampleData(w io.Writer, specificBoxLevels string) error
- func (f *File) Encode(w io.Writer) error
- func (f *File) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (f *File) IsFragmented() bool
- func (f *File) LastSegment() *MediaSegment
- type Fixed16
- type Fixed32
- type Fragment
- func (f *Fragment) AddChild(b Box)
- func (f *Fragment) AddFullSample(s FullSample)
- func (f *Fragment) AddFullSampleToTrack(s FullSample, trackID uint32) error
- func (f *Fragment) AddSample(s Sample, baseMediaDecodeTime uint64)
- func (f *Fragment) AddSampleInterval(sItvl SampleInterval) error
- func (f *Fragment) AddSampleToTrack(s Sample, trackID uint32, baseMediaDecodeTime uint64) error
- func (f *Fragment) AddSamples(ss []Sample, baseMediaDecodeTime uint64)
- func (f *Fragment) DumpSampleData(w io.Writer, trex *TrexBox) error
- func (f *Fragment) Encode(w io.Writer) error
- func (f *Fragment) GetChildren() []Box
- func (f *Fragment) GetFullSamples(trex *TrexBox) ([]FullSample, error)
- func (f *Fragment) GetSampleInterval(trex *TrexBox, startSampleNr, endSampleNr uint32) (SampleInterval, error)
- func (f *Fragment) GetSampleNrFromTime(trex *TrexBox, sampleTime uint64) (uint32, error)
- func (f *Fragment) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (f *Fragment) SetTrunDataOffsets()
- func (f *Fragment) Size() uint64
- type FreeBox
- type FrmaBox
- type FtypBox
- type FullSample
- type HdlrBox
- type HvcCBox
- type IdenBox
- type IlstBox
- type Informer
- type InitSegment
- func (s *InitSegment) AddChild(b Box)
- func (i *InitSegment) AddEmptyTrack(timeScale uint32, mediaType, language string)
- func (s *InitSegment) Encode(w io.Writer) error
- func (s *InitSegment) GetMediaType() string
- func (i *InitSegment) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (s *InitSegment) Size() uint64
- type InitializationVector
- type KindBox
- type MdatBox
- func (m *MdatBox) AddSampleData(s []byte)
- func (m *MdatBox) CopyData(start, size int64, rs io.ReadSeeker, w io.Writer) (nrWritten int64, err error)
- func (m *MdatBox) Encode(w io.Writer) error
- func (m *MdatBox) GetLazyDataSize() uint64
- func (m *MdatBox) HeaderSize() uint64
- func (m *MdatBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (m *MdatBox) IsLazy() bool
- func (m *MdatBox) PayloadAbsoluteOffset() uint64
- func (m *MdatBox) ReadData(start, size int64, rs io.ReadSeeker) ([]byte, error)
- func (m *MdatBox) SetData(data []byte)
- func (m *MdatBox) SetLazyDataSize(newSize uint64)
- func (m *MdatBox) Size() uint64
- func (m *MdatBox) Type() string
- type MdhdBox
- type MdiaBox
- type MediaSegment
- func (s *MediaSegment) AddFragment(f *Fragment)
- func (s *MediaSegment) Encode(w io.Writer) error
- func (s *MediaSegment) Fragmentify(timescale uint64, trex *TrexBox, duration uint32) ([]*Fragment, error)
- func (m *MediaSegment) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (s *MediaSegment) LastFragment() *Fragment
- func (s *MediaSegment) Size() uint64
- type MehdBox
- type MetaBox
- type MfhdBox
- type MfraBox
- type MfroBox
- type MimeBox
- type MinfBox
- type MoofBox
- type MoovBox
- type MvexBox
- type MvhdBox
- type NmhdBox
- type Option
- type PaspBox
- type PaylBox
- type PrftBox
- type PsshBox
- type RapSampleGroupEntry
- type RollSampleGroupEntry
- type SaioBox
- type SaizBox
- type Sample
- type SampleFlags
- type SampleGroupEntry
- func DecodeAlstSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
- func DecodeRapSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
- func DecodeRollSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
- func DecodeSeigSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
- func DecodeUnknownSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
- type SampleGroupEntryDecoder
- type SampleInterval
- type SbgpBox
- type SchiBox
- type SchmBox
- type SdtpBox
- type SdtpEntry
- type SeigSampleGroupEntry
- type SencBox
- type SencSample
- type SgpdBox
- type SidxBox
- type SidxRef
- type SinfBox
- type SliceReader
- func (s *SliceReader) GetPos() int
- func (s *SliceReader) Length() int
- func (s *SliceReader) NrRemainingBytes() int
- func (s *SliceReader) ReadBytes(n int) []byte
- func (s *SliceReader) ReadFixedLengthString(length int) string
- func (s *SliceReader) ReadInt16() int16
- func (s *SliceReader) ReadInt32() int32
- func (s *SliceReader) ReadInt64() int64
- func (s *SliceReader) ReadUint16() uint16
- func (s *SliceReader) ReadUint24() uint32
- func (s *SliceReader) ReadUint32() uint32
- func (s *SliceReader) ReadUint64() uint64
- func (s *SliceReader) ReadUint8() byte
- func (s *SliceReader) ReadZeroTerminatedString() (string, error)
- func (s *SliceReader) RemainingBytes() []byte
- func (s *SliceReader) SetPos(pos int)
- func (s *SliceReader) SkipBytes(n int)
- type SliceWriter
- func (b *SliceWriter) WriteBytes(byteSlice []byte)
- func (b *SliceWriter) WriteInt16(n int16)
- func (b *SliceWriter) WriteInt32(n int32)
- func (b *SliceWriter) WriteInt64(n int64)
- func (b *SliceWriter) WriteString(s string, addZeroEnd bool)
- func (b *SliceWriter) WriteUint16(n uint16)
- func (b *SliceWriter) WriteUint24(n uint32)
- func (b *SliceWriter) WriteUint32(n uint32)
- func (b *SliceWriter) WriteUint64(n uint64)
- func (b *SliceWriter) WriteUint8(n byte)
- func (b *SliceWriter) WriteUnityMatrix()
- func (b *SliceWriter) WriteZeroBytes(n int)
- type SmhdBox
- type StblBox
- type StcoBox
- type SthdBox
- type StppBox
- type StscBox
- func (b *StscBox) ChunkNrFromSampleNr(sampleNr int) (chunkNr, firstSampleInChunk int, err error)
- func (b *StscBox) Encode(w io.Writer) error
- func (b *StscBox) GetChunk(chunkNr uint32) Chunk
- func (b *StscBox) GetContainingChunks(startSampleNr, endSampleNr uint32) ([]Chunk, error)
- func (b *StscBox) GetSampleDescriptionID(sampleNr int) uint32
- func (b *StscBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (b *StscBox) SetSingleSampleDescriptionID(sampleDescriptionID uint32)
- func (b *StscBox) Size() uint64
- func (b *StscBox) Type() string
- type StsdBox
- func (s *StsdBox) AddChild(box Box)
- func (s *StsdBox) Encode(w io.Writer) error
- func (s *StsdBox) GetSampleDescription(index int) (Box, error)
- func (s *StsdBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (s *StsdBox) ReplaceChild(box Box)
- func (s *StsdBox) Size() uint64
- func (s *StsdBox) Type() string
- type StssBox
- type StszBox
- func (b *StszBox) Encode(w io.Writer) error
- func (b *StszBox) GetNrSamples() uint32
- func (b *StszBox) GetSampleSize(i int) uint32
- func (b *StszBox) GetTotalSampleSize(startNr, endNr uint32) (uint64, error)
- func (b *StszBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (b *StszBox) Size() uint64
- func (b *StszBox) Type() string
- type SttgBox
- type SttsBox
- func (b *SttsBox) Encode(w io.Writer) error
- func (b *SttsBox) GetDecodeTime(sampleNr uint32) (decTime uint64, dur uint32)
- func (b *SttsBox) GetDur(sampleNr uint32) (dur uint32)
- func (b *SttsBox) GetSampleNrAtTime(sampleStartTime uint64) (sampleNr uint32, err error)
- func (b *SttsBox) GetTimeCode(sample, timescale uint32) time.Duration
- func (b *SttsBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (b *SttsBox) Size() uint64
- func (b *SttsBox) Type() string
- type StypBox
- type SubSamplePattern
- type SubsBox
- type SubsEntry
- type SubsSample
- type TencBox
- type TfdtBox
- type TfhdBox
- func (t *TfhdBox) DefaultBaseIfMoof() bool
- func (t *TfhdBox) DurationIsEmpty() bool
- func (t *TfhdBox) Encode(w io.Writer) error
- func (t *TfhdBox) HasBaseDataOffset() bool
- func (t *TfhdBox) HasDefaultSampleDuration() bool
- func (t *TfhdBox) HasDefaultSampleFlags() bool
- func (t *TfhdBox) HasDefaultSampleSize() bool
- func (t *TfhdBox) HasSampleDescriptionIndex() bool
- func (t *TfhdBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (t *TfhdBox) Size() uint64
- func (t *TfhdBox) Type() string
- type TfraBox
- type TfrfData
- type TfxdData
- type TkhdBox
- type TrafBox
- func (t *TrafBox) AddChild(b Box) error
- func (t *TrafBox) Encode(w io.Writer) error
- func (t *TrafBox) GetChildren() []Box
- func (t *TrafBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (t *TrafBox) OptimizeTfhdTrun() error
- func (t *TrafBox) Size() uint64
- func (t *TrafBox) Type() string
- type TrafEntry
- type TrakBox
- func (t *TrakBox) AddChild(box Box)
- func (t *TrakBox) Encode(w io.Writer) error
- func (t *TrakBox) GetChildren() []Box
- func (t *TrakBox) GetNrSamples() uint32
- func (t *TrakBox) GetRangesForSampleInterval(startSampleNr, endSampleNr uint32) ([]DataRange, error)
- func (t *TrakBox) GetSampleData(startSampleNr, endSampleNr uint32) ([]Sample, error)
- func (t *TrakBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (t *TrakBox) SetAACDescriptor(objType byte, samplingFrequency int) error
- func (t *TrakBox) SetAVCDescriptor(sampleDescriptorType string, spsNALUs, ppsNALUs [][]byte) error
- func (t *TrakBox) SetHEVCDescriptor(sampleDescriptorType string, vpsNALUs, spsNALUs, ppsNALUs [][]byte) error
- func (t *TrakBox) SetStppDescriptor(namespace, schemaLocation, auxiliaryMimeTypes string) error
- func (t *TrakBox) SetWvttDescriptor(config string) error
- func (t *TrakBox) Size() uint64
- func (t *TrakBox) Type() string
- type TrefBox
- type TrefTypeBox
- type TrepBox
- type TrexBox
- type TrunBox
- func (t *TrunBox) AddFullSample(s *FullSample)
- func (t *TrunBox) AddSample(s Sample)
- func (t *TrunBox) AddSampleDefaultValues(tfhd *TfhdBox, trex *TrexBox) (totalDur uint64)
- func (t *TrunBox) AddSamples(s []Sample)
- func (t *TrunBox) Duration(defaultSampleDuration uint32) uint64
- func (t *TrunBox) Encode(w io.Writer) error
- func (t *TrunBox) FirstSampleFlags() (flags uint32, present bool)
- func (t *TrunBox) GetFullSamples(offsetInMdat uint32, baseDecodeTime uint64, mdat *MdatBox) []FullSample
- func (t *TrunBox) GetSampleInterval(startSampleNr, endSampleNr uint32, baseDecodeTime uint64, mdat *MdatBox, ...) (SampleInterval, error)
- func (t *TrunBox) GetSampleNrForRelativeTime(deltaTime uint64, defaultSampleDuration uint32) (uint32, error)
- func (t *TrunBox) GetSampleRange(startSampleNr, endSampleNr uint32) []Sample
- func (t *TrunBox) GetSamples() []Sample
- func (t *TrunBox) HasDataOffset() bool
- func (t *TrunBox) HasFirstSampleFlags() bool
- func (t *TrunBox) HasSampleCompositionTimeOffset() bool
- func (t *TrunBox) HasSampleDuration() bool
- func (t *TrunBox) HasSampleFlags() bool
- func (t *TrunBox) HasSampleSize() bool
- func (t *TrunBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
- func (t *TrunBox) RemoveFirstSampleFlags()
- func (t *TrunBox) SampleCount() uint32
- func (t *TrunBox) SetFirstSampleFlags(flags uint32)
- func (t *TrunBox) Size() uint64
- func (t *TrunBox) SizeOfData() (totalSize uint64)
- func (t *TrunBox) Type() string
- type URLBox
- type UUID
- type UUIDBox
- type UdtaBox
- type UnknownBox
- type UnknownSampleGroupEntry
- type VisualSampleEntryBox
- type VlabBox
- type VmhdBox
- type VsidBox
- type VttCBox
- type VttaBox
- type VttcBox
- type VtteBox
- type WvttBox
Constants ¶
const ( EncModeSegment = EncFragFileMode(0) // Only encode boxes that are part of Init and MediaSegments EncModeBoxTree = EncFragFileMode(1) // Encode all boxes in file tree )
const ( OptimizeNone = EncOptimize(0) OptimizeTrun = EncOptimize(1 << 0) )
const ( UUID_PlayReady = "9a04f079-9840-4286-ab92-e65be0885f95" UUID_Widevine = "edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" UUID_FairPlay = "94CE86FB-07FF-4F43-ADB8-93D2FA968CA2" UUID_VCAS = "9a27dd82-fde2-4725-8cbc-4234aa06ec09" )
const DefaultTrakID = 1
DefaultTrakID - trakID used when generating new fragmented content
const NonSyncSampleFlags uint32 = 0x00010000
NonSyncSampleFlags - flags for non-sync sample
const SyncSampleFlags uint32 = 0x02000000
SyncSampleFlags - flags for I-frame or other sync sample
const UseSubSampleEncryption = 0x2
UseSubSampleEncryption - flag for subsample encryption
Variables ¶
This section is empty.
Functions ¶
func ContainerInfo ¶ added in v0.16.0
func ContainerInfo(c ContainerBox, w io.Writer, specificBoxLevels, indent, indentStep string) error
func EncodeContainer ¶
func EncodeContainer(c ContainerBox, w io.Writer) error
EncodeContainer - marshal container c to w
func EncodeHeader ¶
EncodeHeader - encode a box header to a writer
func EncodeHeaderWithSize ¶ added in v0.16.0
EncodeHeaderWithSize - encode a box header to a writer and allow for largeSize
func GetVersion ¶ added in v0.21.0
func GetVersion() string
GetVersion - get version and also commitHash and commitDate if inserted via Makefile
func IsSyncSampleFlags ¶
IsSyncSampleFlags - flags is set correctly for sync sample
func SetNonSyncSampleFlags ¶
SetNonSyncSampleFlags - return flags with nonsyncsample pattern
func SetSyncSampleFlags ¶
SetSyncSampleFlags - return flags with syncsample pattern
func WriteToFile ¶ added in v0.16.0
func WriteToFile(boxStructure BoxStructure, filePath string) error
WriteToFile - write a box structure to a file at filePath
Types ¶
type AlstSampleGroupEntry ¶ added in v0.16.0
type AlstSampleGroupEntry struct { RollCount uint16 FirstOutputSample uint16 SampleOffset []uint32 NumOutputSamples []uint16 NumTotalSamples []uint16 }
AlstSampleGroupEntry - Alternative Startup Entry "alst"
ISO/IEC 14496-12 Ed. 6 2020 Section 10.3 - AlternativeStartupEntry
func (*AlstSampleGroupEntry) Encode ¶ added in v0.16.0
func (s *AlstSampleGroupEntry) Encode(sw *SliceWriter)
func (*AlstSampleGroupEntry) Info ¶ added in v0.16.0
func (s *AlstSampleGroupEntry) Info(w io.Writer, specificBoxLevels, indent, indentStep string) (err error)
Info - write box info to w
func (*AlstSampleGroupEntry) Size ¶ added in v0.16.0
func (s *AlstSampleGroupEntry) Size() uint64
func (*AlstSampleGroupEntry) Type ¶ added in v0.16.0
func (s *AlstSampleGroupEntry) Type() string
type AudioSampleEntryBox ¶
type AudioSampleEntryBox struct { DataReferenceIndex uint16 ChannelCount uint16 SampleSize uint16 SampleRate uint16 // Integer part Esds *EsdsBox Children []Box // contains filtered or unexported fields }
AudioSampleEntryBox according to ISO/IEC 14496-12
func CreateAudioSampleEntryBox ¶
func CreateAudioSampleEntryBox(name string, nrChannels, sampleSize, sampleRate uint16, child Box) *AudioSampleEntryBox
CreateAudioSampleEntryBox - Create new AudioSampleEntry such as mp4
func NewAudioSampleEntryBox ¶
func NewAudioSampleEntryBox(name string) *AudioSampleEntryBox
NewAudioSampleEntryBox - Create new empty mp4a box
func (*AudioSampleEntryBox) AddChild ¶
func (a *AudioSampleEntryBox) AddChild(b Box)
AddChild - add a child box (avcC normally, but clap and pasp could be part of visual entry)
func (*AudioSampleEntryBox) Encode ¶
func (a *AudioSampleEntryBox) Encode(w io.Writer) error
Encode - write box to w
func (*AudioSampleEntryBox) Info ¶ added in v0.16.0
func (a *AudioSampleEntryBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
func (*AudioSampleEntryBox) Size ¶
func (a *AudioSampleEntryBox) Size() uint64
Size - return calculated size
func (*AudioSampleEntryBox) Type ¶
func (a *AudioSampleEntryBox) Type() string
Type - return box type
type AvcCBox ¶
type AvcCBox struct {
avc.AVCDecConfRec
}
AvcCBox - AVCConfigurationBox (ISO/IEC 14496-15 5.4.2.1.2 and 5.3.3.1.2) Contains one AVCDecoderConfigurationRecord
func CreateAvcC ¶
CreateAvcC - Create an avcC box based on SPS and PPS
type Box ¶
type Box interface { // Type of box, normally 4 asccii characters, but is uint32 according to spec Type() string // Size of box including header and all children if any Size() uint64 // Encode box to writer Encode(w io.Writer) error // Info - write box details // spedificBoxLevels is a comma-separated list box:level or all:level where level >= 0. // Higher levels give more details. 0 is default // indent is indent at this box level. // indentStep is how much to indent at each level Info(w io.Writer, specificBoxLevels, indent, indentStep string) error }
Box is the general interface to any ISOBMFF box or similar
func DecodeAudioSampleEntry ¶
DecodeAudioSampleEntry - decode mp4a... box
func DecodeAvcC ¶
DecodeAvcC - box-specific decode
func DecodeBoxLazyMdat ¶ added in v0.24.0
func DecodeBoxLazyMdat(startPos uint64, r io.ReadSeeker) (Box, error)
DecodeBox decodes a box but don't read mdat into memory
func DecodeBtrt ¶
DecodeBtrt - box-specific decode
func DecodeCToo ¶ added in v0.24.0
DecodeCToo - box-specific decode
func DecodeCdat ¶ added in v0.17.0
DecodeCdat - box-specific decode
func DecodeClap ¶ added in v0.17.0
DecideClap - box-specific decode
func DecodeCo64 ¶ added in v0.21.1
DecodeStco - box-specific decode
func DecodeContainerChildren ¶
DecodeContainerChildren decodes a container box
func DecodeCslg ¶ added in v0.24.0
DecodeCslg - box-specific decode
func DecodeCtim ¶
DecodeCtim - box-specific decode
func DecodeCtts ¶
DecodeCtts - box-specific decode
func DecodeData ¶ added in v0.24.0
DecodeData - decode Data (from mov_write_string_data_tag in movenc.c in ffmpeg)
func DecodeDinf ¶
DecodeDinf - box-specific decode
func DecodeDref ¶
DecodeDref - box-specific decode
func DecodeEdts ¶
DecodeEdts - box-specific decode
func DecodeElng ¶
DecodeElng - box-specific decode
func DecodeElst ¶
DecodeElst - box-specific decode
func DecodeEmsg ¶
DecodeEmsg - box-specific decode
func DecodeEsds ¶
DecodeEsds - box-specific decode
func DecodeFree ¶
DecodeFree - box-specific decode
func DecodeFrma ¶ added in v0.16.0
DecodeSaio - box-specific decode
func DecodeFtyp ¶
DecodeFtyp - box-specific decode
func DecodeHdlr ¶
DecodeHdlr - box-specific decode
func DecodeHvcC ¶ added in v0.17.0
DecodeHvcC - box-specific decode
func DecodeIden ¶
DecodeIden - box-specific decode
func DecodeIlst ¶ added in v0.19.0
DecodeIlst - box-specific decode
func DecodeKind ¶ added in v0.19.0
DecodeKind - box-specific decode
func DecodeMdat ¶
DecodeMdat - box-specific decode
func DecodeMdatLazily ¶ added in v0.24.0
DecodeMdatLazily - box-specific decode but Data is not in memory
func DecodeMdhd ¶
DecodeMdhd - Decode box
func DecodeMdia ¶
DecodeMdia - box-specific decode
func DecodeMehd ¶ added in v0.16.0
DecodeMehd - box-specific decode
func DecodeMeta ¶ added in v0.17.0
DecodeMinf - box-specific decode
func DecodeMfhd ¶
DecodeMfhd - box-specific decode
func DecodeMfra ¶ added in v0.19.0
DecodeMfra - box-specific decode
func DecodeMfro ¶ added in v0.19.0
DecodeMfro - box-specific decode
func DecodeMime ¶ added in v0.25.0
DecodeMime - box-specific decode
func DecodeMinf ¶
DecodeMinf - box-specific decode
func DecodeMoof ¶
DecodeMoof - box-specific decode
func DecodeMoov ¶
DecodeMoov - box-specific decode
func DecodeMvex ¶
DecodeMvex - box-specific decode
func DecodeMvhd ¶
DecodeMvhd - box-specific decode
func DecodeNmhd ¶
DecodeNmhd - box-specific decode
func DecodePasp ¶ added in v0.17.0
DecodePasp - box-specific decode
func DecodePayl ¶
DecodePayl - box-specific decode
func DecodePrft ¶
DecodePrft - box-specific decode
func DecodePssh ¶ added in v0.16.0
DecodePssh - box-specific decode
func DecodeSaio ¶ added in v0.16.0
DecodeSaio - box-specific decode
func DecodeSaiz ¶ added in v0.16.0
DecodeSaiz - box-specific decode
func DecodeSbgp ¶ added in v0.16.0
DecodeSbgp - box-specific decode
func DecodeSchi ¶ added in v0.16.0
DecodeSchi - box-specific decode
func DecodeSchm ¶ added in v0.16.0
DecodeSchm - box-specific decode
func DecodeSdtp ¶ added in v0.16.0
DecodeSdtp - box-specific decode
func DecodeSenc ¶
DecodeSenc - box-specific decode
func DecodeSgpd ¶ added in v0.16.0
DecodeSgpd - box-specific decode
func DecodeSidx ¶
DecodeSidx - box-specific decode
func DecodeSinf ¶ added in v0.16.0
DecodeSinf - box-specific decode
func DecodeSmhd ¶
DecodeSmhd - box-specific decode
func DecodeStbl ¶
DecodeStbl - box-specific decode
func DecodeStco ¶
DecodeStco - box-specific decode
func DecodeSthd ¶
DecodeSthd - box-specific decode
func DecodeStpp ¶
DecodeStpp - Decode XMLSubtitleSampleEntry (stpp)
func DecodeStsc ¶
DecodeStsc - box-specific decode
func DecodeStsd ¶
DecodeStsd - box-specific decode
func DecodeStss ¶
DecodeStss - box-specific decode
func DecodeStsz ¶
DecodeStsz - box-specific decode
func DecodeSttg ¶
DecodeSttg - box-specific decode
func DecodeStts ¶
DecodeStts - box-specific decode
func DecodeStyp ¶
DecodeStyp - box-specific decode
func DecodeSubs ¶
DecodeSubs - box-specific decode
func DecodeTenc ¶ added in v0.16.0
DecodeTenc - box-specific decode
func DecodeTfdt ¶
DecodeTfdt - box-specific decode
func DecodeTfhd ¶
DecodeTfhd - box-specific decode
func DecodeTfra ¶ added in v0.19.0
DecodeTfra - box-specific decode
func DecodeTkhd ¶
DecodeTkhd - box-specific decode
func DecodeTraf ¶
DecodeTraf - box-specific decode
func DecodeTrak ¶
DecodeTrak - box-specific decode
func DecodeTref ¶ added in v0.25.0
DecodeTref - box-specific decode
func DecodeTrefType ¶ added in v0.25.0
DecodeElng - box-specific decode
func DecodeTrep ¶ added in v0.19.0
DecodeTrep - box-specific decode
func DecodeTrex ¶
DecodeTrex - box-specific decode
func DecodeTrun ¶
DecodeTrun - box-specific decode
func DecodeURLBox ¶
DecodeURLBox - box-specific decode
func DecodeUUID ¶
DecodeUUIDBox - decode a UUID box including tfxd or tfrf
func DecodeUdta ¶ added in v0.17.0
DecodeUdta - box-specific decode
func DecodeUnknown ¶
DecodeUnknown - decode an unknown box
func DecodeVisualSampleEntry ¶
DecodeVisualSampleEntry - decode avc1/avc3/... box
func DecodeVlab ¶
DecodeVlab - box-specific decode
func DecodeVmhd ¶
DecodeVmhd - box-specific decode
func DecodeVsid ¶
DecodeVsid - box-specific decode
func DecodeVttC ¶
DecodeVttC - box-specific decode
func DecodeVtta ¶
DecodeVtta - box-specific decode
func DecodeVttc ¶
DecodeVttc - box-specific decode
func DecodeVtte ¶
DecodeVtte - box-specific decode
type BoxDecoder ¶
BoxDecoder is function signature of the Box Decode method
type BoxStructure ¶ added in v0.16.0
BoxStructure represent a box or similar entity such as a Segment
type BtrtBox ¶
BtrtBox - BitRateBox - ISO/IEC 14496-12 Section 8.5.2.2
type CTooBox ¶ added in v0.24.0
type CTooBox struct {
Children []Box
}
CTooBox - ©too box defines the ffmpeg encoding tool information
func (*CTooBox) Encode ¶ added in v0.24.0
Encode - box-specific encode of stsd - not a usual container
func (*CTooBox) GetChildren ¶ added in v0.24.0
GetChildren - list of child boxes
type CdatBox ¶ added in v0.17.0
type CdatBox struct {
Data []byte
}
CdatBox - Closed Captioning Sample Data according to QuickTime spec: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-SW87
type ClapBox ¶ added in v0.17.0
type ClapBox struct { CleanApertureWidthN uint32 CleanApertureWidthD uint32 CleanApertureHeightN uint32 CleanApertureHeightD uint32 HorizOffN uint32 HorizOffD uint32 VertOffN uint32 VertOffD uint32 }
ClapBox - Clean Aperture Box, ISO/IEC 14496-12 2020 Sec. 12.1.4
type Co64Box ¶ added in v0.21.1
Co64Box - Chunk Large Offset Box
Contained in : Sample Table box (stbl)
64-bit version of StcoBox
type ContainerBox ¶
type ContainerBox interface { Type() string Size() uint64 Encode(w io.Writer) error GetChildren() []Box Info(w io.Writer, specificBoxLevels, indent, indentStep string) error }
ContainerBox is interface for ContainerBoxes
type CslgBox ¶ added in v0.24.0
type CslgBox struct { Version byte Flags uint32 CompositionToDTSShift int64 LeastDecodeToDisplayDelta int64 GreatestDecodeToDisplayDelta int64 CompositionStartTime int64 CompositionEndTime int64 }
CslgBox - CompositionToDecodeBox -ISO/IEC 14496-12 2015 Sec. 8.6.1.4
Contained in: Sample Table Box (stbl) or Track Extension Properties Box (trep)
type CtimBox ¶
type CtimBox struct {
CueCurrentTime string
}
CtimBox - CueTimeBox (ctim) CueCurrentTime is current time indication (for split cues)
type CttsBox ¶
type CttsBox struct { Version byte Flags uint32 SampleCount []uint32 SampleOffset []int32 // int32 to handle version 1 }
CttsBox - Composition Time to Sample Box (ctts - optional)
Contained in: Sample Table Box (stbl)
func (*CttsBox) GetCompositionTimeOffset ¶
GetCompositionTimeOffset - composition time offset for (one-based) sampleNr in track timescale
type DataBox ¶ added in v0.24.0
type DataBox struct {
Data []byte
}
DataBox - data box used by ffmpeg for providing information.
type DataRange ¶ added in v0.24.0
DataRange is a range for sample data in a file relative to file start
type DecFileMode ¶ added in v0.24.0
type DecFileMode byte
const ( // DecModeNormal reads Mdat data into memory during file decoding. DecModeNormal DecFileMode = iota // DecModeLazyMdat doesn't not read Mdat data into memory, // which means the decoding process requires less memory and faster. DecModeLazyMdat )
type DinfBox ¶
DinfBox - Data Information Box (dinf - mandatory)
Contained in : Media Information Box (minf) or Meta Box (meta)
func (*DinfBox) GetChildren ¶
GetChildren - list of child boxes
type DrefBox ¶
DrefBox - Data Reference Box (dref - mandatory)
Contained id: Data Information Box (dinf)
Defines the location of the media data. If the data for the track is located in the same file it contains nothing useful.
func CreateDref ¶
func CreateDref() *DrefBox
CreateDref - Create an DataReferenceBox for selfcontained content
type EdtsBox ¶
EdtsBox - Edit Box (edts - optional)
Contained in: Track Box ("trak")
The edit box maps the presentation timeline to the media-time line
func (*EdtsBox) GetChildren ¶
GetChildren - list of child boxes
type ElngBox ¶
type ElngBox struct {
Language string
}
ElngBox - Extended Language Box
func CreateElng ¶
CreateElng - Create an Extended Language Box
type ElstBox ¶
type ElstBox struct { Version byte Flags uint32 SegmentDuration []uint64 MediaTime []int64 MediaRateInteger []int16 MediaRateFraction []int16 }
ElstBox - Edit List Box (elst - optional)
Contained in : Edit Box (edts)
type EmsgBox ¶
type EmsgBox struct { Version byte Flags uint32 TimeScale uint32 PresentationTimeDelta uint32 PresentationTime uint64 EventDuration uint32 Id uint32 SchemeIdURI string Value string }
EmsgBox - DASHEventMessageBox as defined in ISO/IEC 23009-1
type EncFragFileMode ¶ added in v0.23.0
type EncFragFileMode byte
type EncOptimize ¶ added in v0.23.0
type EncOptimize uint32
func (EncOptimize) String ¶ added in v0.23.0
func (eo EncOptimize) String() string
type EsdsBox ¶
type EsdsBox struct { Version byte Flags uint32 EsDescrTag byte EsID uint16 FlagsAndPriority byte DecoderConfigDescrTag byte ObjectType byte StreamType byte BufferSizeDB uint32 MaxBitrate uint32 AvgBitrate uint32 DecSpecificInfoTag byte DecConfig []byte SLConfigDescrTag byte SLConfigValue byte // contains filtered or unexported fields }
EsdsBox as used for MPEG-audio, see ISO 14496-1 Section 7.2.6.6 for DecoderConfigDescriptor
func CreateEsdsBox ¶
CreateEsdsBox - Create an EsdsBox geiven decConfig
type File ¶
type File struct { Ftyp *FtypBox Moov *MoovBox Mdat *MdatBox // Only used for non-fragmented files Init *InitSegment // Init data (ftyp + moov for fragmented file) Sidx *SidxBox // SidxBox for a DASH OnDemand file Segments []*MediaSegment // Media segments Children []Box // All top-level boxes in order FragEncMode EncFragFileMode // Determine how fragmented files are encoded EncOptimize EncOptimize // Bit field with optimizations being done at encoding // contains filtered or unexported fields }
File - an MPEG-4 file asset
A progressive MPEG-4 file contains three main boxes:
ftyp : the file type box moov : the movie box (meta-data) mdat : the media data (chunks and samples). Only used for pror
where mdat may come before moov. If fragmented, there are many more boxes and they are collected in the InitSegment, Segment and Segments structures. The sample metadata in thefragments in the Segments will be optimized unless EncodeVerbatim is set. To Encode the same data as Decoded, this flag must therefore be set. In all cases, Children contain all top-level boxes
func DecodeFile ¶
DecodeFile - parse and decode a file from reader r with optional file options. For example, the file options overwrite the default decode or encode mode.
func ReadMP4File ¶ added in v0.16.0
ReadMP4File - read an mp4 file from path
func (*File) AddMediaSegment ¶
func (f *File) AddMediaSegment(m *MediaSegment)
AddMediaSegment - add a mediasegment to file f
func (*File) ApplyOptions ¶ added in v0.24.0
ApplyOptions - applies options for decoding or encoding a file
func (*File) CopySampleData ¶ added in v0.25.0
func (f *File) CopySampleData(w io.Writer, rs io.ReadSeeker, trak *TrakBox, startSampleNr, endSampleNr uint32) error
CopySampleData - copy sample data from a track in a progressive mp4 file to w. Use rs if lazy read.
func (*File) DumpWithSampleData ¶
DumpWithSampleData - print information about file and its children boxes
func (*File) Encode ¶
Encode - encode a file to a Writer Fragmented files are encoded based on InitSegment and MediaSegments, unless EncodeVerbatim is set.
func (*File) IsFragmented ¶
IsFragmented - is file made of multiple segments (Mp4 fragments)
func (*File) LastSegment ¶
func (f *File) LastSegment() *MediaSegment
LastSegment - Currently last segment
type Fragment ¶
type Fragment struct { Prft *PrftBox Moof *MoofBox Mdat *MdatBox Children []Box // All top-level boxes in order EncOptimize EncOptimize // Bit field with optimizations being done at encoding // contains filtered or unexported fields }
Fragment - MP4 Fragment ([prft] + moof + mdat)
func CreateFragment ¶
CreateFragment - create single track empty fragment
func CreateMultiTrackFragment ¶ added in v0.17.0
CreateFragment - create multi-track empty fragment without trun
func (*Fragment) AddFullSample ¶
func (f *Fragment) AddFullSample(s FullSample)
AddFullSample - add a full sample to the first (and only) trun of a track AddFullSampleToTrack is the more general function
func (*Fragment) AddFullSampleToTrack ¶ added in v0.17.0
func (f *Fragment) AddFullSampleToTrack(s FullSample, trackID uint32) error
AddFullSampleToTrack - allows for adding samples to any track New trun boxes will be created if latest trun of fragment is not in this track
func (*Fragment) AddSample ¶ added in v0.24.0
AddSample - add a sample to the first (and only) trun of a track AddSampleToTrack is the more general function
func (*Fragment) AddSampleInterval ¶ added in v0.25.0
func (f *Fragment) AddSampleInterval(sItvl SampleInterval) error
GetSampleInterval - get SampleInterval for a fragment with only one track
func (*Fragment) AddSampleToTrack ¶ added in v0.24.0
AddSampleToTrack - allows for adding samples to any track New trun boxes will be created if latest trun of fragment is not in this track baseMediaDecodeTime will be used only for first sample in a trun
func (*Fragment) AddSamples ¶ added in v0.25.0
AddSamples - add a slice of Sample to the first (and only) trun of a track
func (*Fragment) DumpSampleData ¶
DumpSampleData - Get Sample data and print out
func (*Fragment) GetChildren ¶
GetChildren - return children boxes
func (*Fragment) GetFullSamples ¶
func (f *Fragment) GetFullSamples(trex *TrexBox) ([]FullSample, error)
GetFullSamples - Get full samples including media and accumulated time
func (*Fragment) GetSampleInterval ¶ added in v0.25.0
func (f *Fragment) GetSampleInterval(trex *TrexBox, startSampleNr, endSampleNr uint32) (SampleInterval, error)
GetSampleInterval - get SampleInterval for a fragment with only one track
func (*Fragment) GetSampleNrFromTime ¶ added in v0.25.0
Look up sample number from a specifed time. Return error if no matching time
func (*Fragment) SetTrunDataOffsets ¶ added in v0.17.0
func (f *Fragment) SetTrunDataOffsets()
SetTrunDataOffsets - set DataOffset in trun depending on size and writeOrder
type FreeBox ¶
type FreeBox struct { Name string // contains filtered or unexported fields }
FreeBox - Free Space Box (free or skip)
type FrmaBox ¶ added in v0.16.0
type FrmaBox struct {
DataFormat string // uint32 - original box type
}
FrmaBox - Original Format Box
type FullSample ¶
type FullSample struct { Sample DecodeTime uint64 // Absolute decode time (offset + accumulated sample Dur) Data []byte // Sample data }
FullSample - include accumulated time and data. Times in mdhd timescale
func (*FullSample) PresentationTime ¶
func (s *FullSample) PresentationTime() uint64
PresentationTime - DecodeTime displaced by composition time offset (possibly negative)
type HdlrBox ¶
type HdlrBox struct { Version byte Flags uint32 PreDefined uint32 HandlerType string Name string // Null-terminated UTF-8 string according to ISO/IEC 14496-12 Sec. 8.4.3.3 LacksNullTermination bool // This should be true, but we allow false as well }
HdlrBox - Handler Reference Box (hdlr - mandatory)
Contained in: Media Box (mdia) or Meta Box (meta)
This box describes the type of data contained in the trak. HandlerType can be : "vide" (video track), "soun" (audio track), "subt" (subtitle track) Other types are: "hint" (hint track), "meta" (timed Metadata track), "auxv" (auxiliary video track). clcp (Closed Captions (QuickTime))
func CreateHdlr ¶
CreateHdlr - create mediaType-specific hdlr box
type HvcCBox ¶ added in v0.17.0
type HvcCBox struct {
hevc.HEVCDecConfRec
}
HvcCBox - HEVCConfigurationBox (ISO/IEC 14496-15 8.4.1.1.2) Contains one HEVCDecoderConfigurationRecord
func CreateHvcC ¶ added in v0.17.1
func CreateHvcC(vpsNalus, spsNalus, ppsNalus [][]byte, vpsComplete, spsComplete, ppsComplete bool) (*HvcCBox, error)
CreateHvcC- Create an hvcC box based on VPS, SPS and PPS and signal completeness
type IdenBox ¶
type IdenBox struct {
CueID string
}
IdenBox - CueIDBox (iden)
type IlstBox ¶ added in v0.19.0
type IlstBox struct {
Children []Box
}
IlstBox - iTunes Metadata Item List Atom (ilst) See https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html
func (*IlstBox) Encode ¶ added in v0.19.0
Encode - box-specific encode of stsd - not a usual container
func (*IlstBox) GetChildren ¶ added in v0.19.0
GetChildren - list of child boxes
type Informer ¶ added in v0.16.0
type Informer interface { // Info - write details via Info method // spedificBoxLevels is a comma-separated list box:level or all:level where level >= 0. // Higher levels give more details. 0 is default // indent is indent at this box level. // indentStep is how much to indent at each level Info(w io.Writer, specificBoxLevels, indent, indentStep string) error }
Informer - write box, segment or file details
type InitSegment ¶
type InitSegment struct { MediaType string Ftyp *FtypBox Moov *MoovBox Children []Box // All top-level boxes in order }
InitSegment - MP4/CMAF init segment
func CreateEmptyInit ¶ added in v0.17.0
func CreateEmptyInit() *InitSegment
CreateEmptyInit - create an init segment for fragmented files
func (*InitSegment) AddChild ¶
func (s *InitSegment) AddChild(b Box)
AddChild - Add a top-level box to InitSegment
func (*InitSegment) AddEmptyTrack ¶ added in v0.17.0
func (i *InitSegment) AddEmptyTrack(timeScale uint32, mediaType, language string)
AddEmptyTrack - add trak + trex box with appropriate trackID value
func (*InitSegment) Encode ¶
func (s *InitSegment) Encode(w io.Writer) error
Encode - encode an initsegment to a Writer
func (*InitSegment) GetMediaType ¶
func (s *InitSegment) GetMediaType() string
GetMediaType - should return video or audio (at present)
func (*InitSegment) Info ¶ added in v0.16.0
func (i *InitSegment) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
Info - write box tree with indent for each level
func (*InitSegment) Size ¶ added in v0.25.0
func (s *InitSegment) Size() uint64
Size - size of init segment
type KindBox ¶ added in v0.19.0
KindBox - Track Kind Box
type MdatBox ¶
type MdatBox struct { StartPos uint64 Data []byte LargeSize bool // contains filtered or unexported fields }
MdatBox - Media Data Box (mdat) The mdat box contains media chunks/samples.
func (*MdatBox) AddSampleData ¶
AddSampleData - a sample data to an mdat box
func (*MdatBox) CopyData ¶ added in v0.24.0
func (m *MdatBox) CopyData(start, size int64, rs io.ReadSeeker, w io.Writer) (nrWritten int64, err error)
CopyData - copy data range from mdat to w. The ReadSeeker is used for lazily loaded mdat case.
func (*MdatBox) Encode ¶
Encode - write box to w. If m.lazyDataSize > 0, the mdat data needs to be written separately
func (*MdatBox) GetLazyDataSize ¶ added in v0.24.0
func (*MdatBox) HeaderSize ¶ added in v0.16.0
HeaderSize - 8 or 16 (bytes) depending o whether largeSize is used
func (*MdatBox) IsLazy ¶ added in v0.24.0
IsLazy - is the mdat data handled lazily (with separate writer/reader).
func (*MdatBox) PayloadAbsoluteOffset ¶ added in v0.16.0
PayloadAbsoluteOffset - position of mdat payload start (works after header)
func (*MdatBox) ReadData ¶ added in v0.24.0
ReadData reads Mdat data specified by the start and size. Input argument start is the postion relative to the start of a file. The ReadSeeker is used for lazily loaded mdat case.
func (*MdatBox) SetData ¶ added in v0.24.0
SetData - set the mdat data to given slice. No copying is done
func (*MdatBox) SetLazyDataSize ¶ added in v0.24.0
SetLazyDataSize - set size of mdat lazy data, so that the data can be written separately Don't put any data in m.Data in this mode.
type MdhdBox ¶
type MdhdBox struct { Version byte // Only version 0 Flags uint32 CreationTime uint64 // Typically not set ModificationTime uint64 // Typically not set Timescale uint32 // Media timescale for this track Duration uint64 // Trak duration, 0 for fragmented files Language uint16 // Three-letter ISO-639-2/T language code }
MdhdBox - Media Header Box (mdhd - mandatory)
Contained in : Media Box (mdia)
Timescale defines the timescale used for this track. Language is a ISO-639-2/T language code stored as 1bit padding + [3]int5
func (*MdhdBox) GetLanguage ¶
GetLanguage - Get three-byte language string
func (*MdhdBox) SetLanguage ¶
SetLanguage - Set three-byte language string
type MdiaBox ¶
type MdiaBox struct { Mdhd *MdhdBox Hdlr *HdlrBox Elng *ElngBox Minf *MinfBox Elst *ElstBox Children []Box }
MdiaBox - Media Box (mdia)
Contained in : Track Box (trak) Contains all information about the media data.
func (*MdiaBox) GetChildren ¶
GetChildren - list of child boxes
type MediaSegment ¶
type MediaSegment struct { Styp *StypBox Sidx *SidxBox // Sidx for a segment Fragments []*Fragment EncOptimize EncOptimize }
MediaSegment - MP4 Media Segment
func NewMediaSegment ¶
func NewMediaSegment() *MediaSegment
NewMediaSegment - create empty MediaSegment with CMAF styp box
func NewMediaSegmentWithoutStyp ¶ added in v0.25.0
func NewMediaSegmentWithoutStyp() *MediaSegment
NewMediaSegmentWithoutStyp - create empty media segment with no styp box
func (*MediaSegment) AddFragment ¶
func (s *MediaSegment) AddFragment(f *Fragment)
AddFragment - Add a fragment to a MediaSegment
func (*MediaSegment) Encode ¶
func (s *MediaSegment) Encode(w io.Writer) error
Encode - Write MediaSegment via writer
func (*MediaSegment) Fragmentify ¶
func (s *MediaSegment) Fragmentify(timescale uint64, trex *TrexBox, duration uint32) ([]*Fragment, error)
Fragmentify - Split into multiple fragments. Assume single mdat and trun for now
func (*MediaSegment) Info ¶ added in v0.16.0
func (m *MediaSegment) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
Info - write box tree with indent for each level
func (*MediaSegment) LastFragment ¶
func (s *MediaSegment) LastFragment() *Fragment
LastFragment - Currently last fragment
func (*MediaSegment) Size ¶ added in v0.25.0
func (s *MediaSegment) Size() uint64
Size - return size of media segment
type MehdBox ¶ added in v0.16.0
MehdBox - Movie Extends Header Box Optional, provides overall duration of a fragmented movie
type MetaBox ¶ added in v0.17.0
MetaBox - MetaBox meta ISO/IEC 14496-12 Ed. 6 2020 Section 8.11
func CreateMetaBox ¶ added in v0.17.0
CreateMetaBox - Create a new MetaBox
func (*MetaBox) GetChildren ¶ added in v0.17.0
GetChildren - list of child boxes
type MfhdBox ¶
MfhdBox - Media Fragment Header Box (mfhd)
Contained in : Movie Fragment box (moof))
type MfraBox ¶ added in v0.19.0
MfraBox - Movie Fragment Random Access Box (mfra) Container for TfraBox(es) that can be used to find sync samples
func (*MfraBox) GetChildren ¶ added in v0.19.0
GetChildren - list of child boxes
type MfroBox ¶ added in v0.19.0
MfroBox - Movie Fragment Random Access Offset Box (mfro) Contained in : MfraBox (mfra)
type MimeBox ¶ added in v0.25.0
type MimeBox struct { Version byte Flags uint32 ContentType string LacksZeroTermination bool // Handle non-compliant case as well }
MimeBox - MIME Box as defined in ISO/IEC 14496-12 2020 Section 12.3.3.2
type MinfBox ¶
type MinfBox struct { Vmhd *VmhdBox Smhd *SmhdBox Stbl *StblBox Dinf *DinfBox Hdlr *HdlrBox Children []Box }
MinfBox - Media Information Box (minf - mandatory)
Contained in : Media Box (mdia)
func (*MinfBox) GetChildren ¶
GetChildren - list of child boxes
type MoofBox ¶
type MoofBox struct { Mfhd *MfhdBox Traf *TrafBox // The first traf child box Trafs []*TrafBox Children []Box StartPos uint64 }
MoofBox - Movie Fragment Box (moof)
Contains all meta-data. To be able to stream a file, the moov box should be placed before the mdat box.
func (*MoofBox) GetChildren ¶
GetChildren - list of child boxes
type MoovBox ¶
type MoovBox struct { Mvhd *MvhdBox Trak *TrakBox // The first trak box Traks []*TrakBox Mvex *MvexBox Children []Box }
MoovBox - Movie Box (moov - mandatory)
Contains all meta-data. To be able to stream a file, the moov box should be placed before the mdat box.
func (*MoovBox) GetChildren ¶
GetChildren - list of child boxes
type MvexBox ¶
MvexBox - MovieExtendsBox (mevx)
Contained in : Movie Box (moov)
Its presence signals a fragmented asset
func (*MvexBox) GetChildren ¶
GetChildren - list of child boxes
type MvhdBox ¶
type MvhdBox struct { Version byte Flags uint32 CreationTime uint64 ModificationTime uint64 Timescale uint32 Duration uint64 NextTrackID uint32 Rate Fixed32 Volume Fixed16 }
MvhdBox - Movie Header Box (mvhd - mandatory)
Contained in : Movie Box (‘moov’)
Contains all media information (duration, ...).
Duration is measured in "time units", and timescale defines the number of time units per second.
type NmhdBox ¶
NmhdBox - Null Media Header Box (nmhd - often used instead ofsthd for subtitle tracks)
type Option ¶ added in v0.24.0
type Option func(f *File)
Option is function signature of file options. The design follows functional options pattern.
func WithDecodeMode ¶ added in v0.24.0
func WithDecodeMode(mode DecFileMode) Option
WithDecodeMode sets up DecFileMode
func WithEncodeMode ¶ added in v0.24.0
func WithEncodeMode(mode EncFragFileMode) Option
WithEncodeMode sets up EncFragFileMode
type PaspBox ¶ added in v0.17.0
PaspBox - Pixel Aspect Ratio Box, ISO/IEC 14496-12 2020 Sec. 12.1.4
type PaylBox ¶
type PaylBox struct {
CueText string
}
PaylBox - CuePayloadBox (payl)
type PrftBox ¶
PrftBox - Producer Reference Box (prft)
Contained in File before moof box
func CreatePrftBox ¶
CreatePrftBox - Create a new PrftBox
type PsshBox ¶ added in v0.16.0
PsshBox - Protection System Specific Header Box Defined in ISO/IEC 23001-7 Secion 8.1
type RapSampleGroupEntry ¶ added in v0.16.0
RapSampleGroupEntry - Random Access Point "rap "
ISO/IEC 14496-12 Ed. 6 2020 Section 10.4 - VisualRandomAccessEntry
func (*RapSampleGroupEntry) Encode ¶ added in v0.16.0
func (s *RapSampleGroupEntry) Encode(sw *SliceWriter)
func (*RapSampleGroupEntry) Info ¶ added in v0.16.0
func (s *RapSampleGroupEntry) Info(w io.Writer, specificBoxLevels, indent, indentStep string) (err error)
Info - write box info to w
func (*RapSampleGroupEntry) Size ¶ added in v0.16.0
func (s *RapSampleGroupEntry) Size() uint64
func (*RapSampleGroupEntry) Type ¶ added in v0.16.0
func (s *RapSampleGroupEntry) Type() string
type RollSampleGroupEntry ¶ added in v0.16.0
type RollSampleGroupEntry struct {
RollDistance int16
}
RollSampleGroupEntry - Gradual Decoding Refresh "roll"
ISO/IEC 14496-12 Ed. 6 2020 Section 10.1
VisualRollRecoveryEntry / AudioRollRecoveryEntry / AudioPreRollEntry
func (*RollSampleGroupEntry) Encode ¶ added in v0.16.0
func (s *RollSampleGroupEntry) Encode(sw *SliceWriter)
func (*RollSampleGroupEntry) Info ¶ added in v0.16.0
func (s *RollSampleGroupEntry) Info(w io.Writer, specificBoxLevels, indent, indentStep string) (err error)
Info - write box info to w
func (*RollSampleGroupEntry) Size ¶ added in v0.16.0
func (s *RollSampleGroupEntry) Size() uint64
func (*RollSampleGroupEntry) Type ¶ added in v0.16.0
func (s *RollSampleGroupEntry) Type() string
type SaioBox ¶ added in v0.16.0
type SaioBox struct { Version byte Flags uint32 AuxInfoType string // Used for Common Encryption Scheme (4-bytes uint32 according to spec) AuxInfoTypeParameter uint32 Offset []int64 }
SaioBox - Sample Auxiliary Information Offsets Box (saiz)
func (*SaioBox) Info ¶ added in v0.16.0
Info - write SaioBox details. Get offset list with level >= 1
type SaizBox ¶ added in v0.16.0
type SaizBox struct { Version byte Flags uint32 AuxInfoType string // Used for Common Encryption Scheme (4-bytes uint32 according to spec) AuxInfoTypeParameter uint32 SampleCount uint32 SampleInfo []byte DefaultSampleInfoSize byte }
SaizBox - Sample Auxiliary Information Sizes Box (saiz)
func (*SaizBox) Info ¶ added in v0.16.0
Info - write SaizBox details. Get sampleInfo list with level >= 1
type Sample ¶
type Sample struct { Flags uint32 // interpreted as SampleFlags Dur uint32 // Sample duration in mdhd timescale Size uint32 // Size of sample data CompositionTimeOffset int32 // Signed composition time offset }
Sample - sample as used in trun box (mdhd timescale)
type SampleFlags ¶
type SampleFlags struct { IsLeading byte SampleDependsOn byte SampleIsDependedOn byte SampleHasRedundancy byte SamplePaddingValue byte SampleIsNonSync bool SampleDegradationPriority uint16 }
SampleFlags according to 14496-12 Sec. 8.8.3.1
func DecodeSampleFlags ¶
func DecodeSampleFlags(u uint32) SampleFlags
DecodeSampleFlags - decode a uint32 flags field
func (SampleFlags) Encode ¶ added in v0.16.0
func (sf SampleFlags) Encode() uint32
func (SampleFlags) String ¶ added in v0.16.0
func (sf SampleFlags) String() string
type SampleGroupEntry ¶ added in v0.16.0
type SampleGroupEntry interface { // GroupingType SampleGroupEntry (uint32 according to spec) Type() string // actually // Size of SampleGroup Entry Size() uint64 // Encode SampleGroupEntry to SliceWriter Encode(sw *SliceWriter) // Info - description of content. Info(w io.Writer, specificBoxLevels, indent, indentStep string) (err error) }
SampleGroupEntry - like a box, but size and type are not in a header
func DecodeAlstSampleGroupEntry ¶ added in v0.16.0
func DecodeAlstSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
func DecodeRapSampleGroupEntry ¶ added in v0.16.0
func DecodeRapSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
func DecodeRollSampleGroupEntry ¶ added in v0.16.0
func DecodeRollSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
func DecodeSeigSampleGroupEntry ¶ added in v0.16.0
func DecodeSeigSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
DecodeSeigSampleGroupEntry - decode Commone Encryption Sample Group Entry
func DecodeUnknownSampleGroupEntry ¶ added in v0.16.0
func DecodeUnknownSampleGroupEntry(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
type SampleGroupEntryDecoder ¶ added in v0.16.0
type SampleGroupEntryDecoder func(name string, length uint32, sr *SliceReader) (SampleGroupEntry, error)
SampleGroupEntryDecoder is function signature of the SampleGroupEntry Decode method
type SampleInterval ¶ added in v0.25.0
type SampleInterval struct { FirstDecodeTime uint64 Samples []Sample OffsetInMdat uint32 // Offset relative start of mdat box Size uint32 // total size of all samples in interval Data []byte // If set, should be relevant mdat range }
SampleInterval - an interval of samples including reference to or concatenated binary media data
type SbgpBox ¶ added in v0.16.0
type SbgpBox struct { Version byte Flags uint32 GroupingType string // uint32, but takes values such as seig GroupingTypeParameter uint32 SampleCounts []uint32 GroupDescriptionIndices []uint32 }
SbgpBox - Sample To Group Box, ISO/IEC 14496-12 6'th edition 2020 Section 8.9.2
type SchiBox ¶ added in v0.16.0
type SchiBox struct {
Children []Box
}
SchiBox - Schema Information Box
func (*SchiBox) GetChildren ¶ added in v0.16.0
GetChildren - list of child boxes
type SchmBox ¶ added in v0.16.0
type SchmBox struct { Version byte Flags uint32 SchemeType string // 4CC represented as uint32 SchemeVersion uint32 SchemeUri string // Absolute null-terminated URL }
SchmBox - Scheme Type Box
type SdtpBox ¶ added in v0.16.0
SdtpBox - Sample Dependency Box (sdtp - optional)
ISO/IEC 14496-12 Ed. 6 2020 Section 8.6.4 Contained in Sample Table Box (stbl)
Table to determine whether a sample depends or is depended on by other samples
func CreateSdtpBox ¶ added in v0.16.0
CreateSdtpBox - Create a new SdtpBox
type SdtpEntry ¶ added in v0.16.0
type SdtpEntry uint8
SdtpEntry (uint8)
ISO/IEC 14496-12 Ed. 6 2020 Section 8.6.4.2
func NewSdtpEntry ¶ added in v0.16.0
NewSdtpEntry - make new SdtpEntry from 2-bit parameters
func (SdtpEntry) IsLeading ¶ added in v0.16.0
IsLeading (bits 0-1) 0: Leading unknown 1: Has dependency before referenced I-picture (not decodable) 2: Not a leading sample 3: Has no dependency before referenced I-picture (decodable)
func (SdtpEntry) SampleDependsOn ¶ added in v0.16.0
SampleDependsOn (bits 2-3) 0: Dependency is unknown 1: Depends on others (not an I-picture) 2: Does not depend on others (I-picture) 3: Reservced
func (SdtpEntry) SampleHasRedundancy ¶ added in v0.16.0
SampleIsDependedOn (bits 6-7) 0: Redundant coding unknown 1: Redundant coding in this sample 2: No redundant coding in this sample 3: Reserved
func (SdtpEntry) SampleIsDependedOn ¶ added in v0.16.0
SampleIsDependedOn (bits 4-5) 0: Dependency unknown 1: Other samples may depend on this (not disposable) 2: No other samples depend on this (disposable) 3: Reserved
type SeigSampleGroupEntry ¶ added in v0.16.0
type SeigSampleGroupEntry struct { CryptByteBlock byte SkipByteBlock byte IsProtected byte PerSampleIVSize byte KID UUID // ConstantIVSize byte given by len(ConstantIV) ConstantIV []byte }
SeigSampleGroupEntry - CencSampleEncryptionInformationGroupEntry as defined in CEF ISO/IEC 23001-7 3rd edition 2016
func (*SeigSampleGroupEntry) Encode ¶ added in v0.16.0
func (s *SeigSampleGroupEntry) Encode(sw *SliceWriter)
func (*SeigSampleGroupEntry) Info ¶ added in v0.16.0
func (s *SeigSampleGroupEntry) Info(w io.Writer, specificBoxLevels, indent, indentStep string) (err error)
Info - write box info to w
func (*SeigSampleGroupEntry) Size ¶ added in v0.16.0
func (s *SeigSampleGroupEntry) Size() uint64
func (*SeigSampleGroupEntry) Type ¶ added in v0.16.0
func (s *SeigSampleGroupEntry) Type() string
type SencBox ¶
type SencBox struct { Version byte Flags uint32 SampleCount uint32 IVs []InitializationVector // 8 or 16 bytes if present SubSamples [][]SubSamplePattern }
SencBox - Sample Encryption Box (senc) See ISO/IEC 23001-7 Section 7.2 Full Box + SampleCount
func (*SencBox) AddSample ¶
func (s *SencBox) AddSample(sample SencSample) error
AddSample - add a senc sample with possible IV and subsamples
func (*SencBox) GetPerSampleIVSize ¶
type SencSample ¶
type SencSample struct { IV InitializationVector // 0,8,16 byte length SubSamples []SubSamplePattern }
SencSample - sample in SencBox
type SgpdBox ¶ added in v0.16.0
type SgpdBox struct { Version byte Flags uint32 GroupingType string // uint32, but takes values such as seig DefaultLength uint32 DefaultGroupDescriptionIndex uint32 DescriptionLengths []uint32 SampleGroupEntries []SampleGroupEntry }
SgpdBox - Sample Group Description Box, ISO/IEC 14496-12 6'th edition 2020 Section 8.9.3 Version 0 is deprecated
type SidxBox ¶
type SidxBox struct { Version byte Flags uint32 ReferenceID uint32 Timescale uint32 EarliestPresentationTime uint64 FirstOffset uint64 SidxRefs []SidxRef }
SidxBox - SegmentIndexBox
func CreateSidx ¶
CreateSidx - Create a new TfdtBox with baseMediaDecodeTime
type SidxRef ¶
type SidxRef struct { ReferencedSize uint32 SubSegmentDuration uint32 SAPDeltaTime uint32 ReferenceType uint8 // 1-bit StartsWithSAP uint8 // 1-bit SAPType uint8 }
SidxRef - reference as used inside SidxBox
type SinfBox ¶ added in v0.16.0
type SinfBox struct { Frma *FrmaBox // Mandatory Schm *SchmBox // Optional Schi *SchiBox // Optional Children []Box }
SchiBox - Protection Scheme Information Box
func (*SinfBox) GetChildren ¶ added in v0.16.0
GetChildren - list of child boxes
type SliceReader ¶
type SliceReader struct {
// contains filtered or unexported fields
}
SliceReader - read integers from a slice
func NewSliceReader ¶
func NewSliceReader(data []byte) *SliceReader
NewSliceReader - create a new slice reader reading from data
func (*SliceReader) NrRemainingBytes ¶
func (s *SliceReader) NrRemainingBytes() int
NrRemaingingByts - return number of bytes remaining
func (*SliceReader) ReadBytes ¶
func (s *SliceReader) ReadBytes(n int) []byte
ReadBytes - read a slice of bytes
func (*SliceReader) ReadFixedLengthString ¶
func (s *SliceReader) ReadFixedLengthString(length int) string
ReadFixedLengthString - read string of specified length
func (*SliceReader) ReadInt16 ¶
func (s *SliceReader) ReadInt16() int16
ReadInt16 - read int16 from slice
func (*SliceReader) ReadInt32 ¶
func (s *SliceReader) ReadInt32() int32
ReadInt32 - read int32 from slice
func (*SliceReader) ReadInt64 ¶
func (s *SliceReader) ReadInt64() int64
ReadInt64 - read int64 from slice
func (*SliceReader) ReadUint16 ¶
func (s *SliceReader) ReadUint16() uint16
ReadUint16 - read uint16 from slice
func (*SliceReader) ReadUint24 ¶ added in v0.19.0
func (s *SliceReader) ReadUint24() uint32
ReadUint24 - read uint24 from slice
func (*SliceReader) ReadUint32 ¶
func (s *SliceReader) ReadUint32() uint32
ReadUint32 - read uint32 from slice
func (*SliceReader) ReadUint64 ¶
func (s *SliceReader) ReadUint64() uint64
ReadUint64 - read uint64 from slice
func (*SliceReader) ReadUint8 ¶
func (s *SliceReader) ReadUint8() byte
ReadUint8 - read uint8 from slice
func (*SliceReader) ReadZeroTerminatedString ¶
func (s *SliceReader) ReadZeroTerminatedString() (string, error)
ReadZeroTerminatedString - read string until zero
func (*SliceReader) RemainingBytes ¶
func (s *SliceReader) RemainingBytes() []byte
RemainingBytes - return remaining bytes of this slice
func (*SliceReader) SetPos ¶
func (s *SliceReader) SetPos(pos int)
SetPos - set read position is slice
func (*SliceReader) SkipBytes ¶
func (s *SliceReader) SkipBytes(n int)
SkipBytes - skip passed n bytes
type SliceWriter ¶
type SliceWriter struct {
// contains filtered or unexported fields
}
SliceWriter - write numbers to a []byte slice
func NewSliceWriter ¶
func NewSliceWriter(data []byte) *SliceWriter
NewSliceWriter - create writer around slice
func (*SliceWriter) WriteBytes ¶
func (b *SliceWriter) WriteBytes(byteSlice []byte)
WriteBytes - write []byte
func (*SliceWriter) WriteInt16 ¶
func (b *SliceWriter) WriteInt16(n int16)
WriteInt16 - write int16 to slice
func (*SliceWriter) WriteInt32 ¶
func (b *SliceWriter) WriteInt32(n int32)
WriteInt32 - write int32 to slice
func (*SliceWriter) WriteInt64 ¶
func (b *SliceWriter) WriteInt64(n int64)
WriteInt64 - write int64 to slice
func (*SliceWriter) WriteString ¶
func (b *SliceWriter) WriteString(s string, addZeroEnd bool)
WriteString - write string to slice with or without zero end
func (*SliceWriter) WriteUint16 ¶
func (b *SliceWriter) WriteUint16(n uint16)
WriteUint16 - write uint16 to slice
func (*SliceWriter) WriteUint24 ¶ added in v0.19.0
func (b *SliceWriter) WriteUint24(n uint32)
WriteUint24 - write uint24 to slice
func (*SliceWriter) WriteUint32 ¶
func (b *SliceWriter) WriteUint32(n uint32)
WriteUint32 - write uint32 to slice
func (*SliceWriter) WriteUint64 ¶
func (b *SliceWriter) WriteUint64(n uint64)
WriteUint64 - write uint64 to slice
func (*SliceWriter) WriteUint8 ¶
func (b *SliceWriter) WriteUint8(n byte)
WriteUint8 - write byte to slice
func (*SliceWriter) WriteUnityMatrix ¶
func (b *SliceWriter) WriteUnityMatrix()
WriteUnityMatrix - write a unity matrix for mvhd or tkhd
func (*SliceWriter) WriteZeroBytes ¶
func (b *SliceWriter) WriteZeroBytes(n int)
WriteZeroBytes - write n byte of zeroes
type SmhdBox ¶
SmhdBox - Sound Media Header Box (smhd - mandatory for sound tracks)
Contained in : Media Information Box (minf)
func CreateSmhd ¶
func CreateSmhd() *SmhdBox
CreateSmhd - Create Sound Media Header Box (all is zero)
type StblBox ¶
type StblBox struct { // Same order as in Table 1 in ISO/IEC 14496-12 Ed.6 2020 Stsd *StsdBox Stts *SttsBox Ctts *CttsBox Stsc *StscBox Stsz *StszBox Stss *StssBox Stco *StcoBox Co64 *Co64Box Sdtp *SdtpBox Sbgp *SbgpBox // The first Sbgps []*SbgpBox // All Sgpd *SgpdBox // The first Sgpds []*SgpdBox // All Subs *SubsBox Saiz *SaizBox Saio *SaioBox Children []Box }
StblBox - Sample Table Box (stbl - mandatory)
Contained in : Media Information Box (minf)
The table contains all information relevant to data samples (times, chunks, sizes, ...)
func (*StblBox) GetChildren ¶
GetChildren - list of child boxes
type StcoBox ¶
StcoBox - Chunk Offset Box (stco - mandatory)
Contained in : Sample Table box (stbl)
The table contains the offsets (starting at the beginning of the file) for each chunk of data for the current track. A chunk contains samples, the table defining the allocation of samples to each chunk is stsc.
type SthdBox ¶
SthdBox - Subtitle Media Header Box (sthd - for subtitle tracks)
type StppBox ¶
type StppBox struct { Namespace string // Mandatory SchemaLocation string // Optional AuxiliaryMimeTypes string // Required if auxiliary types present Btrt *BtrtBox // Optional Children []Box DataReferenceIndex uint16 }
StppBox - XMLSubtitleSampleEntryr Box (stpp)
Contained in : Media Information Box (minf)
func NewStppBox ¶
NewStppBox - Create new stpp box namespace, schemaLocation and auxiliaryMimeType are space-separated utf8-lists without zero-termination schemaLocation and auxiliaryMimeTypes are optional
func (*StppBox) AddChild ¶
AddChild - add a child box (avcC normally, but clap and pasp could be part of visual entry)
type StscBox ¶
type StscBox struct { Version byte Flags uint32 FirstChunk []uint32 SamplesPerChunk []uint32 SampleDescriptionID []uint32 // contains filtered or unexported fields }
StscBox - Sample To Chunk Box (stsc - mandatory)
A chunk contains samples. This table defines to which chunk a sample is associated. Each entry is defined by :
- first chunk : all chunks starting at this index up to the next first chunk have the same sample count/description
- samples per chunk : number of samples in the chunk
- sample description id : description (see the sample description box - stsd) this value is most often the same for all samples, so it is stored as a single value if possible
func (*StscBox) ChunkNrFromSampleNr ¶
ChunkNrFromSampleNr - get chunk number from sampleNr (one-based)
func (*StscBox) GetContainingChunks ¶ added in v0.24.0
GetContainingChunks - get chunks containing the sample interval
func (*StscBox) GetSampleDescriptionID ¶ added in v0.25.0
GetSampleDescription - get the sample description ID from common or individual values
func (*StscBox) SetSingleSampleDescriptionID ¶ added in v0.25.0
SetSingleSampleDescriptionID - use this for efficiency if all samples have same sample description
type StsdBox ¶
type StsdBox struct { Version byte Flags uint32 SampleCount uint32 AvcX *VisualSampleEntryBox HvcX *VisualSampleEntryBox Mp4a *AudioSampleEntryBox Wvtt *WvttBox Children []Box }
StsdBox - Sample Description Box (stsd - manatory) See ISO/IEC 14496-12 Section 8.5.2.2 Full Box + SampleCount All Children are sampleEntries
func (*StsdBox) GetSampleDescription ¶
GetSampleDescription - get one of multiple descriptions
func (*StsdBox) ReplaceChild ¶
AddChild - Replace a child box with one of the same type
type StssBox ¶
StssBox - Sync Sample Box (stss - optional)
Contained in : Sample Table box (stbl)
This lists all sync samples (key frames for video tracks) in the data. If absent, all samples are sync samples.
func (*StssBox) EntryCount ¶ added in v0.24.0
EntryCount - number of sync samples
func (*StssBox) IsSyncSample ¶
IsSyncSample - check if sample (one-based) sampleNr is a sync sample
type StszBox ¶
type StszBox struct { Version byte Flags uint32 SampleUniformSize uint32 SampleNumber uint32 SampleSize []uint32 }
StszBox - Sample Size Box (stsz - mandatory)
Contained in : Sample Table box (stbl)
For each track, either stsz of the more compact stz2 must be present. stz2 variant is not supported.
This table lists the size of each sample. If all samples have the same size, it can be defined in the SampleUniformSize attribute.
func (*StszBox) GetNrSamples ¶ added in v0.24.0
GetNrSamples - get number of sampples
func (*StszBox) GetSampleSize ¶
GetSampleSize returns the size (in bytes) of a sample
func (*StszBox) GetTotalSampleSize ¶ added in v0.24.0
GetTotalSize - get total size of a range [startNr, endNr] of samples
type SttgBox ¶
type SttgBox struct {
Settings string
}
SttgBox - CueSettingsBox (sttg)
type SttsBox ¶
SttsBox - Decoding Time to Sample Box (stts - mandatory)
This table contains the duration in time units for each sample.
- SampleCount : the number of consecutive samples having the same duration
- SampleTimeDelta : duration in time units
func (*SttsBox) GetDecodeTime ¶
GetDecodeTime - decode time and duration for (one-based) sampleNr in track timescale
func (*SttsBox) GetSampleNrAtTime ¶ added in v0.24.0
GetSampleNrAtTime - get sample number at or as soon as possible after time Time is calculated by summing up durations of previous samples
func (*SttsBox) GetTimeCode ¶
GetTimeCode - return the timecode (duration since the beginning of the media) of the beginning of a sample
type StypBox ¶
StypBox Segment Type Box (styp)
func CreateStyp ¶ added in v0.16.0
func CreateStyp() *StypBox
CreateStyp - Create an Styp box suitable for DASH/CMAF
type SubSamplePattern ¶
SubSamplePattern - pattern of subsample encryption
type SubsBox ¶
SubsBox - SubSampleInformationBox
type SubsEntry ¶
type SubsEntry struct { SampleDelta uint32 SubSamples []SubsSample }
SubsEntry - entry in SubsBox
type SubsSample ¶
type SubsSample struct { SubsampleSize uint32 CodecSpecificParameters uint32 SubsamplePriority uint8 Discardable uint8 }
SubsSample - sample in SubsEntry
type TencBox ¶ added in v0.16.0
type TencBox struct { Version byte Flags uint32 DefaultCryptByteBlock byte DefaultSkipByteBlock byte DefaultIsProtected byte DefaultPerSampleIVSize byte DefaultKID UUID // BDefaultConstantIVSize byte given by len(DefaultContantIV) DefaultConstantIV []byte }
TencBox - Track Encryption Box Defined in ISO/IEC 23001-7 Secion 8.2
type TfdtBox ¶
TfdtBox - Track Fragment Decode Time (tfdt)
Contained in : Track Fragment box (traf)
func CreateTfdt ¶
CreateTfdt - Create a new TfdtBox with baseMediaDecodeTime
func (*TfdtBox) SetBaseMediaDecodeTime ¶
SetBaseMediaDecodeTime - Set time of TfdtBox
type TfhdBox ¶
type TfhdBox struct { Version byte Flags uint32 TrackID uint32 BaseDataOffset uint64 SampleDescriptionIndex uint32 DefaultSampleDuration uint32 DefaultSampleSize uint32 DefaultSampleFlags uint32 }
TfhdBox - Track Fragment Header Box (tfhd)
Contained in : Track Fragment box (traf))
func CreateTfhd ¶
CreateTfhd - Create a new TfdtBox with baseMediaDecodeTime
func (*TfhdBox) DefaultBaseIfMoof ¶
DefaultBaseIfMoof - interpreted flags value
func (*TfhdBox) DurationIsEmpty ¶
DurationIsEmpty - interpreted flags value
func (*TfhdBox) HasBaseDataOffset ¶
HasBaseDataOffset - interpreted flags value
func (*TfhdBox) HasDefaultSampleDuration ¶
HasDefaultSampleDuration - interpreted flags value
func (*TfhdBox) HasDefaultSampleFlags ¶
HasDefaultSampleFlags - interpreted flags value
func (*TfhdBox) HasDefaultSampleSize ¶
HasDefaultSampleSize - interpreted flags value
func (*TfhdBox) HasSampleDescriptionIndex ¶
HasSampleDescriptionIndex - interpreted flags value
type TfraBox ¶ added in v0.19.0
type TfraBox struct { Version byte Flags uint32 TrackID uint32 LengthSizeOfTrafNum byte LengthSizeOfTrunNum byte LengthSizeOfSampleNum byte Entries []TrafEntry }
TfraBox - Track Fragment Random Access Box (tfra) Contained it MfraBox (mfra)
type TfrfData ¶
type TfrfData struct { Version byte Flags uint32 FragmentCount byte FragmentAbsoluteTimes []uint64 FragmentAbsoluteDurations []uint64 }
TfrfData - MSS TfrfBox data after UUID part Defined in MSS-SSTR v20180912 section 2.2.4.5
type TfxdData ¶
type TfxdData struct { Version byte Flags uint32 FragmentAbsoluteTime uint64 FragmentAbsoluteDuration uint64 }
TfxdData - MSS TfxdBox data after UUID part Defined in MSS-SSTR v20180912 section 2.2.4.4
type TkhdBox ¶
type TkhdBox struct { Version byte Flags uint32 CreationTime uint64 ModificationTime uint64 TrackID uint32 Duration uint64 Layer int16 AlternateGroup int16 // should be int16 Volume Fixed16 Width, Height Fixed32 }
TkhdBox - Track Header Box (tkhd - mandatory)
This box describes the track. Duration is measured in time units (according to the time scale defined in the movie header box). Duration is 0 for fragmented files.
Volume (relevant for audio tracks) is a fixed point number (8 bits + 8 bits). Full volume is 1.0. Width and Height (relevant for video tracks) are fixed point numbers (16 bits + 16 bits). Video pixels are not necessarily square.
type TrafBox ¶
type TrafBox struct { Tfhd *TfhdBox Tfdt *TfdtBox Trun *TrunBox // The first TrunBox Truns []*TrunBox Children []Box }
TrafBox - Track Fragment Box (traf)
Contained in : Movie Fragment Box (moof)
func (*TrafBox) GetChildren ¶
GetChildren - list of child boxes
func (*TrafBox) OptimizeTfhdTrun ¶
OptimizeTfhdTrun - optimize trun by default values in tfhd box Only look at first trun, even if there is more than one Don't optimize again, if already done so that no data is present
type TrafEntry ¶ added in v0.19.0
type TrafEntry struct { Time int64 MoofOffset int64 TrafNumber uint32 TrunNumber uint32 SampleDelta uint32 }
Tfrabox - reference as used inside SidxBox
type TrakBox ¶
TrakBox - Track Box (tkhd - mandatory)
Contained in : Movie Box (moov)
A media file can contain one or more tracks.
func CreateEmptyTrak ¶ added in v0.17.0
Create a full Trak tree for an empty (fragmented) track with no samples or stsd content
func (*TrakBox) GetChildren ¶
GetChildren - list of child boxes
func (*TrakBox) GetNrSamples ¶ added in v0.24.0
GetNrSamples - get number of samples for this track defined in the parent moov box.
func (*TrakBox) GetRangesForSampleInterval ¶ added in v0.24.0
func (t *TrakBox) GetRangesForSampleInterval(startSampleNr, endSampleNr uint32) ([]DataRange, error)
GetRangesForSampleInterval - get ranges inside file for sample range [startSampleNr, endSampleNr]
func (*TrakBox) GetSampleData ¶ added in v0.24.0
GetSampleData - get sample metadata for a specific interval of samples defined in moov. If going outside the range of available samples, an error is returned.
func (*TrakBox) SetAACDescriptor ¶
SetAACDescriptor - Modify a TrakBox by adding AAC SampleDescriptor objType is one of AAClc, HEAACv1, HEAACv2 For HEAAC, the samplingFrequency is the base frequency (normally 24000)
func (*TrakBox) SetAVCDescriptor ¶
SetAVCDescriptor - Set AVC SampleDescriptor based on SPS and PPS
func (*TrakBox) SetHEVCDescriptor ¶ added in v0.18.0
func (t *TrakBox) SetHEVCDescriptor(sampleDescriptorType string, vpsNALUs, spsNALUs, ppsNALUs [][]byte) error
SetHEVCDescriptor - Set HEVC SampleDescriptor based on VPS, SPS, and PPS
func (*TrakBox) SetStppDescriptor ¶ added in v0.25.0
SetStppDescriptor - add stpp box with utf8-lists namespace, schemaLocation and auxiliaryMimeType The utf8-lists have space-separated items, but no zero-termination
func (*TrakBox) SetWvttDescriptor ¶ added in v0.25.0
SetWvttDescriptor - Set wvtt descriptor with a vttC box. config should start with WEBVTT or be empty.
type TrefBox ¶ added in v0.25.0
type TrefBox struct {
Children []Box
}
TrefBox - // TrackReferenceBox - ISO/IEC 14496-12 Ed. 9 Sec. 8.3
func (*TrefBox) GetChildren ¶ added in v0.25.0
GetChildren - list of child boxes
type TrefTypeBox ¶ added in v0.25.0
TrefTypeBox - TrackReferenceTypeBox - ISO/IEC 14496-12 Ed. 9 Sec. 8.3 Name can be one of hint, cdsc, font, hind, vdep, vplx, subt (ISO/IEC 14496-12) dpnd, ipir, mpod, sync (ISO/IEC 14496-14)
func (*TrefTypeBox) Encode ¶ added in v0.25.0
func (b *TrefTypeBox) Encode(w io.Writer) error
Encode - write box to w
func (*TrefTypeBox) Info ¶ added in v0.25.0
func (b *TrefTypeBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
func (*TrefTypeBox) Size ¶ added in v0.25.0
func (b *TrefTypeBox) Size() uint64
Size - calculated size of box
type TrepBox ¶ added in v0.19.0
TrepBox - Track Extension Properties Box (trep) Contained in mvex
func (*TrepBox) Encode ¶ added in v0.19.0
Encode - box-specific encode of stsd - not a usual container
type TrexBox ¶
type TrexBox struct { Version byte Flags uint32 TrackID uint32 DefaultSampleDescriptionIndex uint32 DefaultSampleDuration uint32 DefaultSampleSize uint32 DefaultSampleFlags uint32 }
TrexBox - Track Extends Box
Contained in : Mvex Box (mvex)
func CreateTrex ¶
CreateTrex - create trex box with trackID
type TrunBox ¶
type TrunBox struct { Version byte DataOffset int32 Samples []Sample // contains filtered or unexported fields }
TrunBox - Track Fragment Run Box (trun)
Contained in : Track Fragmnet Box (traf)
func CreateTrun ¶
CreateTrun - create a TrunBox for filling up with samples
func (*TrunBox) AddFullSample ¶
func (t *TrunBox) AddFullSample(s *FullSample)
AddFullSample - add Sample part of FullSample
func (*TrunBox) AddSampleDefaultValues ¶
AddSampleDefaultValues - add values from tfhd and trex boxes if needed Return total duration
func (*TrunBox) AddSamples ¶ added in v0.25.0
AddSamples - add a a slice of Sample
func (*TrunBox) Duration ¶
Duration - calculate total duration of all samples given defaultSampleDuration
func (*TrunBox) FirstSampleFlags ¶ added in v0.25.0
FirstSampleFlags - return firstSampleFlags and indicator if present
func (*TrunBox) GetFullSamples ¶
func (t *TrunBox) GetFullSamples(offsetInMdat uint32, baseDecodeTime uint64, mdat *MdatBox) []FullSample
GetFullSamples - get all sample data including accumulated time and binary media data offsetInMdat is offset in mdat data (data normally starts 8 or 16 bytes after start of mdat box) baseDecodeTime is decodeTime in tfdt in track timescale (timescale in mfhd) To fill missing individual values from tfhd and trex defaults, call trun.AddSampleDefaultValues() before this call
func (*TrunBox) GetSampleInterval ¶ added in v0.25.0
func (t *TrunBox) GetSampleInterval(startSampleNr, endSampleNr uint32, baseDecodeTime uint64, mdat *MdatBox, offsetInMdat uint32) (SampleInterval, error)
GetSampleInterval - get sample interval [startSampleNr, endSampleNr] (1-based and inclusive) This includes mdat data (if not lazy), in which case only offsetInMdat is given. baseDecodeTime is decodeTime in tfdt in track timescale (timescale from mfhd). To fill missing individual values from tfhd and trex defaults, call AddSampleDefaultValues() before this call.
func (*TrunBox) GetSampleNrForRelativeTime ¶ added in v0.25.0
func (t *TrunBox) GetSampleNrForRelativeTime(deltaTime uint64, defaultSampleDuration uint32) (uint32, error)
GetSampleNrForRelativeTime - get sample number for exact relative time (calculated from summing durations)
func (*TrunBox) GetSampleRange ¶ added in v0.25.0
GetSampleRange - get a one-based range of samples To fill missing individual values from tfhd and trex defaults, call AddSampleDefaultValues() before this call
func (*TrunBox) GetSamples ¶
GetSamples - get all trun sample data To fill missing individual values from tfhd and trex defaults, call AddSampleDefaultValues() before this call
func (*TrunBox) HasDataOffset ¶
HasDataOffset - interpreted dataOffsetPresent flag
func (*TrunBox) HasFirstSampleFlags ¶
HasFirstSampleFlags - interpreted firstSampleFlagsPresent flag
func (*TrunBox) HasSampleCompositionTimeOffset ¶ added in v0.25.0
HasSampleCompositionTimeOffset - interpreted sampleCompositionTimeOffset flag
func (*TrunBox) HasSampleDuration ¶
HasSampleDuration - interpreted sampleDurationPresent flag
func (*TrunBox) HasSampleFlags ¶
HasSampleFlags - interpreted sampleFlagsPresent flag
func (*TrunBox) HasSampleSize ¶
HasSampleSize - interpreted sampleSizePresent flag
func (*TrunBox) RemoveFirstSampleFlags ¶ added in v0.25.0
func (t *TrunBox) RemoveFirstSampleFlags()
RemoveFirstSampleFlags - remove firstSampleFlags and its indicator
func (*TrunBox) SampleCount ¶
SampleCount - return how many samples are defined
func (*TrunBox) SetFirstSampleFlags ¶ added in v0.25.0
SetFirstSampleFlags - set firstSampleFlags and bit indicating its presence
func (*TrunBox) SizeOfData ¶ added in v0.17.0
SizeOfData - size of mediasamples in bytes
type URLBox ¶
URLBox - DataEntryUrlBox ('url ')
Contained in : DrefBox (dref
type UUIDBox ¶
UUIDBox - Used as container for MSS boxes tfxd and tfrf
type UdtaBox ¶ added in v0.17.0
type UdtaBox struct {
Children []Box
}
User Data Box - container for User Data
Contained in : moov, trak, moof, or traf
func (*UdtaBox) GetChildren ¶ added in v0.17.0
GetChildren - list of child boxes
type UnknownBox ¶
type UnknownBox struct {
// contains filtered or unexported fields
}
UnknownBox - box that we don't know how to parse
type UnknownSampleGroupEntry ¶ added in v0.16.0
Unknown or not implemented SampleGroupEntry
func (*UnknownSampleGroupEntry) Encode ¶ added in v0.16.0
func (s *UnknownSampleGroupEntry) Encode(sw *SliceWriter)
func (*UnknownSampleGroupEntry) Info ¶ added in v0.16.0
func (s *UnknownSampleGroupEntry) Info(w io.Writer, specificBoxLevels, indent, indentStep string) (err error)
Info - write box info to w
func (*UnknownSampleGroupEntry) Size ¶ added in v0.16.0
func (s *UnknownSampleGroupEntry) Size() uint64
func (*UnknownSampleGroupEntry) Type ¶ added in v0.16.0
func (s *UnknownSampleGroupEntry) Type() string
type VisualSampleEntryBox ¶
type VisualSampleEntryBox struct { DataReferenceIndex uint16 Width uint16 Height uint16 Horizresolution uint32 Vertresolution uint32 FrameCount uint16 CompressorName string AvcC *AvcCBox HvcC *HvcCBox Btrt *BtrtBox Clap *ClapBox Pasp *PaspBox Children []Box // contains filtered or unexported fields }
VisualSampleEntryBox - Video Sample Description box (avc1/avc3)
func CreateVisualSampleEntryBox ¶
func CreateVisualSampleEntryBox(name string, width, height uint16, sampleEntry Box) *VisualSampleEntryBox
CreateVisualSampleEntryBox - Create new VisualSampleEntry such as avc1, avc3, hev1, hvc1
func NewVisualSampleEntryBox ¶
func NewVisualSampleEntryBox(name string) *VisualSampleEntryBox
NewVisualSampleEntryBox - Create new empty avc1 or avc3 box
func (*VisualSampleEntryBox) AddChild ¶
func (b *VisualSampleEntryBox) AddChild(child Box)
AddChild - add a child box (avcC normally, but clap and pasp could be part of visual entry)
func (*VisualSampleEntryBox) Encode ¶
func (b *VisualSampleEntryBox) Encode(w io.Writer) error
Encode - write box to w
func (*VisualSampleEntryBox) Info ¶ added in v0.16.0
func (b *VisualSampleEntryBox) Info(w io.Writer, specificBoxLevels, indent, indentStep string) error
func (*VisualSampleEntryBox) Size ¶
func (b *VisualSampleEntryBox) Size() uint64
Size - return calculated size
func (*VisualSampleEntryBox) Type ¶
func (b *VisualSampleEntryBox) Type() string
Type - return box type
type VlabBox ¶
type VlabBox struct {
SourceLabel string
}
VlabBox - WebVTTSourceLabelBox (vlab)
type VmhdBox ¶
VmhdBox - Video Media Header Box (vhmd - mandatory for video tracks)
Contained in : Media Information Box (minf)
type VsidBox ¶
type VsidBox struct {
SourceID uint32
}
VsidBox - CueSourceIDBox (vsid)
type VttCBox ¶
type VttCBox struct {
Config string
}
VttCBox - WebVTTConfigurationBox (vttC)
type VttaBox ¶
type VttaBox struct {
CueAdditionalText string
}
VttaBox - VTTAdditionalTextBox (vtta) (corresponds to NOTE in WebVTT)
type VttcBox ¶
type VttcBox struct { Vsid *VsidBox Iden *IdenBox Ctim *CtimBox Sttg *SttgBox Payl *PaylBox Children []Box }
VttcBox - VTTCueBox (vttc)
func (*VttcBox) GetChildren ¶
GetChildren - list of child boxes
type VtteBox ¶
type VtteBox struct { }
VtteBox - VTTEmptyBox (vtte)
type WvttBox ¶
type WvttBox struct { VttC *VttCBox Vlab *VlabBox Btrt *BtrtBox Children []Box DataReferenceIndex uint16 }
WvttBox - WVTTSampleEntry (wvtt) Extends PlainTextSampleEntry which extends SampleEntry
func (*WvttBox) AddChild ¶
AddChild - add a child box (avcC normally, but clap and pasp could be part of visual entry)
Source Files ¶
- audiosamplentry.go
- avcc.go
- box.go
- btrt.go
- cdat.go
- clap.go
- co64.go
- container.go
- cslg.go
- ctts.go
- dinf.go
- doc.go
- dref.go
- edts.go
- elng.go
- elst.go
- emsg.go
- esds.go
- ffmpeg.go
- file.go
- fragment.go
- free.go
- frma.go
- ftyp.go
- hdlr.go
- hvcc.go
- ilst.go
- infodumper.go
- initsegment.go
- kind.go
- mdat.go
- mdhd.go
- mdia.go
- mediasegment.go
- mehd.go
- meta.go
- mfhd.go
- mfra.go
- mfro.go
- mime.go
- minf.go
- moof.go
- moov.go
- mvex.go
- mvhd.go
- nmhd.go
- pasp.go
- prft.go
- pssh.go
- saio.go
- saiz.go
- sample.go
- sampleflags.go
- samplegroupentries.go
- sampleinterval.go
- sbgp.go
- schi.go
- schm.go
- sdtp.go
- senc.go
- sgpd.go
- sidx.go
- sinf.go
- slicereader.go
- slicewriter.go
- smhd.go
- stbl.go
- stco.go
- sthd.go
- stpp.go
- stsc.go
- stsd.go
- stss.go
- stsz.go
- stts.go
- styp.go
- subs.go
- tenc.go
- tfdt.go
- tfhd.go
- tfra.go
- tkhd.go
- traf.go
- trak.go
- tref.go
- trep.go
- trex.go
- trun.go
- udta.go
- unknown.go
- url.go
- uuid.go
- version.go
- visualsampleentry.go
- vmhd.go
- wvtt.go