diff --git a/src/JT1078.FMp4/Boxs/FragmentBox.cs b/src/JT1078.FMp4/Boxs/FragmentBox.cs
index d3c512a..9f7b6c4 100644
--- a/src/JT1078.FMp4/Boxs/FragmentBox.cs
+++ b/src/JT1078.FMp4/Boxs/FragmentBox.cs
@@ -1,12 +1,32 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class FragmentBox
+ public class FragmentBox:IFMp4MessagePackFormatter
{
+ ///
+ /// moof
+ ///
public MovieFragmentBox MovieFragmentBox { get; set; }
+ ///
+ /// mdat
+ ///
public MediaDataBox MediaDataBox { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ if (MovieFragmentBox != null)
+ {
+ MovieFragmentBox.ToBuffer(ref writer);
+ }
+ if (MediaDataBox != null)
+ {
+ MediaDataBox.ToBuffer(ref writer);
+ }
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/MediaDataBox.cs b/src/JT1078.FMp4/Boxs/MediaDataBox.cs
index 90f94c3..0ca9162 100644
--- a/src/JT1078.FMp4/Boxs/MediaDataBox.cs
+++ b/src/JT1078.FMp4/Boxs/MediaDataBox.cs
@@ -1,15 +1,33 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class MediaDataBox : Mp4Box
+ ///
+ /// mdat
+ ///
+ public class MediaDataBox : Mp4Box, IFMp4MessagePackFormatter
{
+ ///
+ /// mdat
+ ///
public MediaDataBox() : base("mdat")
{
}
public byte[] Data { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ if (Data != null && Data.Length > 0)
+ {
+ writer.WriteArray(Data);
+ }
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/MovieFragmentBox.cs b/src/JT1078.FMp4/Boxs/MovieFragmentBox.cs
index 7f26a58..ae7708c 100644
--- a/src/JT1078.FMp4/Boxs/MovieFragmentBox.cs
+++ b/src/JT1078.FMp4/Boxs/MovieFragmentBox.cs
@@ -1,16 +1,43 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class MovieFragmentBox : Mp4Box
+ ///
+ /// moof
+ ///
+ public class MovieFragmentBox : Mp4Box, IFMp4MessagePackFormatter
{
+ ///
+ /// moof
+ ///
public MovieFragmentBox() : base("moof")
{
}
-
+ ///
+ /// mfhd
+ ///
public MovieFragmentHeaderBox MovieFragmentHeaderBox { get; set; }
+ ///
+ /// traf
+ ///
public TrackFragmentBox TrackFragmentBox { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ if (MovieFragmentHeaderBox != null)
+ {
+ MovieFragmentHeaderBox.ToBuffer(ref writer);
+ }
+ if (TrackFragmentBox != null)
+ {
+ TrackFragmentBox.ToBuffer(ref writer);
+ }
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/MovieFragmentHeaderBox.cs b/src/JT1078.FMp4/Boxs/MovieFragmentHeaderBox.cs
index 960a087..05932eb 100644
--- a/src/JT1078.FMp4/Boxs/MovieFragmentHeaderBox.cs
+++ b/src/JT1078.FMp4/Boxs/MovieFragmentHeaderBox.cs
@@ -1,15 +1,33 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class MovieFragmentHeaderBox : FullBox
+ ///
+ /// mfhd
+ ///
+ public class MovieFragmentHeaderBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// mfhd
+ ///
+ ///
+ ///
public MovieFragmentHeaderBox(byte version=0, uint flags=0) : base("mfhd", version, flags)
{
}
public uint SequenceNumber { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+ writer.WriteUInt32(SequenceNumber);
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessBox.cs b/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessBox.cs
index a6e7a69..65dd2b1 100644
--- a/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessBox.cs
+++ b/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessBox.cs
@@ -1,17 +1,43 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class MovieFragmentRandomAccessBox : Mp4Box
+ ///
+ /// mfra
+ ///
+ public class MovieFragmentRandomAccessBox : Mp4Box, IFMp4MessagePackFormatter
{
+ ///
+ /// mfra
+ ///
public MovieFragmentRandomAccessBox() : base("mfra")
{
}
-
+ ///
+ /// tfra
+ ///
public TrackFragmentRandomAccessBox TrackFragmentRandomAccessBox { get; set; }
-
+ ///
+ /// mfro
+ ///
public MovieFragmentRandomAccessOffsetBox MovieFragmentRandomAccessOffsetBox { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ if (TrackFragmentRandomAccessBox != null)
+ {
+ TrackFragmentRandomAccessBox.ToBuffer(ref writer);
+ }
+ if (MovieFragmentRandomAccessOffsetBox != null)
+ {
+ MovieFragmentRandomAccessOffsetBox.ToBuffer(ref writer);
+ }
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessOffsetBox.cs b/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessOffsetBox.cs
index c100c7e..28da638 100644
--- a/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessOffsetBox.cs
+++ b/src/JT1078.FMp4/Boxs/MovieFragmentRandomAccessOffsetBox.cs
@@ -1,15 +1,33 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class MovieFragmentRandomAccessOffsetBox : FullBox
+ ///
+ /// mfro
+ ///
+ public class MovieFragmentRandomAccessOffsetBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// mfro
+ ///
+ ///
+ ///
public MovieFragmentRandomAccessOffsetBox(byte version, uint flags=0) : base("mfro", version, flags)
{
}
public uint MfraSize { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+ writer.WriteUInt32(MfraSize);
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/SampleDependencyTypeBox.cs b/src/JT1078.FMp4/Boxs/SampleDependencyTypeBox.cs
index 41ded80..5b67d2b 100644
--- a/src/JT1078.FMp4/Boxs/SampleDependencyTypeBox.cs
+++ b/src/JT1078.FMp4/Boxs/SampleDependencyTypeBox.cs
@@ -1,11 +1,21 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class SampleDependencyTypeBox : FullBox
+ ///
+ /// sdtp
+ ///
+ public class SampleDependencyTypeBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// sdtp
+ ///
+ ///
+ ///
public SampleDependencyTypeBox(byte version=0, uint flags=0) : base("sdtp", version, flags)
{
}
@@ -14,6 +24,27 @@ namespace JT1078.FMp4
///
public List SampleDependencyTypes { get; set; }
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+ if(SampleDependencyTypes!=null && SampleDependencyTypes.Count > 0)
+ {
+ //todo: wait ref doc
+ foreach(var item in SampleDependencyTypes)
+ {
+ writer.WriteByte(item.IsLeading);
+ writer.WriteByte(item.SampleDependsOn);
+ writer.WriteByte(item.SampleIsDependedOn);
+ writer.WriteByte(item.SampleHasRedundancy);
+ writer.WriteByte(item.DegradPrio);
+ writer.WriteByte(item.IsNonSync);
+ writer.WriteByte(item.PaddingValue);
+ }
+ }
+ End(ref writer);
+ }
+
public class SampleDependencyType
{
public byte IsLeading { get; set; }
diff --git a/src/JT1078.FMp4/Boxs/SampleToGroupBox.cs b/src/JT1078.FMp4/Boxs/SampleToGroupBox.cs
index 3329de3..2f47f72 100644
--- a/src/JT1078.FMp4/Boxs/SampleToGroupBox.cs
+++ b/src/JT1078.FMp4/Boxs/SampleToGroupBox.cs
@@ -1,11 +1,21 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class SampleToGroupBox : FullBox
+ ///
+ /// sbgp
+ ///
+ public class SampleToGroupBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// sbgp
+ ///
+ ///
+ ///
public SampleToGroupBox(byte version, uint flags) : base("sbgp", version, flags)
{
}
@@ -20,6 +30,11 @@ namespace JT1078.FMp4
public List SampleToGroupInfos { get; set; }
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ //todo:sbgp
+ }
+
public class SampleToGroupInfo
{
public uint SampleCount { get; set; }
diff --git a/src/JT1078.FMp4/Boxs/SubSampleInformationBox.cs b/src/JT1078.FMp4/Boxs/SubSampleInformationBox.cs
index 55bbdc8..942b1f4 100644
--- a/src/JT1078.FMp4/Boxs/SubSampleInformationBox.cs
+++ b/src/JT1078.FMp4/Boxs/SubSampleInformationBox.cs
@@ -1,11 +1,21 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class SubSampleInformationBox : FullBox
+ ///
+ /// subs
+ ///
+ public class SubSampleInformationBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// subs
+ ///
+ ///
+ ///
public SubSampleInformationBox(byte version, uint flags=0) : base("subs", version, flags)
{
}
@@ -14,6 +24,11 @@ namespace JT1078.FMp4
public List SubSampleInformations { get; set; }
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ //todo:subs
+ }
+
public class SubSampleInformation
{
public uint SampleDelta { get; set; }
diff --git a/src/JT1078.FMp4/Boxs/TrackFragmentBaseMediaDecodeTimeBox.cs b/src/JT1078.FMp4/Boxs/TrackFragmentBaseMediaDecodeTimeBox.cs
index 9aa2fe4..e261a81 100644
--- a/src/JT1078.FMp4/Boxs/TrackFragmentBaseMediaDecodeTimeBox.cs
+++ b/src/JT1078.FMp4/Boxs/TrackFragmentBaseMediaDecodeTimeBox.cs
@@ -1,14 +1,32 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class TrackFragmentBaseMediaDecodeTimeBox : FullBox
+ ///
+ /// tfdt
+ ///
+ public class TrackFragmentBaseMediaDecodeTimeBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// tfdt
+ ///
+ ///
+ ///
public TrackFragmentBaseMediaDecodeTimeBox(byte version, uint flags=0) : base("tfdt", version, flags)
{
}
public uint BaseMediaDecodeTime { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+ writer.WriteUInt32(BaseMediaDecodeTime);
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/TrackFragmentBox.cs b/src/JT1078.FMp4/Boxs/TrackFragmentBox.cs
index a6612d9..fa1aa2a 100644
--- a/src/JT1078.FMp4/Boxs/TrackFragmentBox.cs
+++ b/src/JT1078.FMp4/Boxs/TrackFragmentBox.cs
@@ -1,19 +1,75 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class TrackFragmentBox : Mp4Box
+ ///
+ /// traf
+ ///
+ public class TrackFragmentBox : Mp4Box, IFMp4MessagePackFormatter
{
+ ///
+ /// traf
+ ///
public TrackFragmentBox() : base("traf")
{
}
+ ///
+ /// tfhd
+ ///
public TrackFragmentHeaderBox TrackFragmentHeaderBox { get; set; }
+ ///
+ /// sdtp
+ ///
public SampleDependencyTypeBox SampleDependencyTypeBox { get; set; }
+ ///
+ /// trun
+ ///
public TrackRunBox TrackRunBox { get; set; }
+ ///
+ /// tfdt
+ ///
public TrackFragmentBaseMediaDecodeTimeBox TrackFragmentBaseMediaDecodeTimeBox { get; set; }
+ ///
+ /// sbgp
+ ///
public SampleToGroupBox SampleToGroupBox { get; set; }
+ ///
+ /// subs
+ ///
public SubSampleInformationBox SubSampleInformationBox { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ if (TrackFragmentHeaderBox != null)
+ {
+ TrackFragmentHeaderBox.ToBuffer(ref writer);
+ }
+ if (SampleDependencyTypeBox != null)
+ {
+ SampleDependencyTypeBox.ToBuffer(ref writer);
+ }
+ if (TrackRunBox != null)
+ {
+ TrackRunBox.ToBuffer(ref writer);
+ }
+ if (TrackFragmentBaseMediaDecodeTimeBox != null)
+ {
+ TrackFragmentBaseMediaDecodeTimeBox.ToBuffer(ref writer);
+ }
+ if (SampleToGroupBox != null)
+ {
+ SampleToGroupBox.ToBuffer(ref writer);
+ }
+ if (SubSampleInformationBox != null)
+ {
+ SubSampleInformationBox.ToBuffer(ref writer);
+ }
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/TrackFragmentHeaderBox.cs b/src/JT1078.FMp4/Boxs/TrackFragmentHeaderBox.cs
index 69b2ca7..091906e 100644
--- a/src/JT1078.FMp4/Boxs/TrackFragmentHeaderBox.cs
+++ b/src/JT1078.FMp4/Boxs/TrackFragmentHeaderBox.cs
@@ -1,14 +1,28 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class TrackFragmentHeaderBox : FullBox
+ ///
+ /// tfhd
+ ///
+ public class TrackFragmentHeaderBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// tfhd
+ ///
+ ///
+ ///
public TrackFragmentHeaderBox(byte version, uint flags) : base("tfhd", version, flags)
{
}
+ ///
+ /// tfhd
+ ///
+ ///
public TrackFragmentHeaderBox(uint flags) : this(0, flags)
{
}
@@ -20,7 +34,15 @@ namespace JT1078.FMp4
public uint SampleDescriptionIndex { get; set; }
public uint DefaultSampleDuration { get; set; }
public uint DefaultSampleSize { get; set; }
- public uint DefaultSampleFlags { get; set; }
+ public uint DefaultSampleFlags { get; set; }
#endregion
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+ writer.WriteUInt32(TrackID);
+ //todo:all the following are optional fields
+ End(ref writer);
+ }
}
}
diff --git a/src/JT1078.FMp4/Boxs/TrackFragmentRandomAccessBox.cs b/src/JT1078.FMp4/Boxs/TrackFragmentRandomAccessBox.cs
index c0a6b5d..8a3ba3c 100644
--- a/src/JT1078.FMp4/Boxs/TrackFragmentRandomAccessBox.cs
+++ b/src/JT1078.FMp4/Boxs/TrackFragmentRandomAccessBox.cs
@@ -1,11 +1,21 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class TrackFragmentRandomAccessBox : FullBox
+ ///
+ /// tfra
+ ///
+ public class TrackFragmentRandomAccessBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// tfra
+ ///
+ ///
+ ///
public TrackFragmentRandomAccessBox(byte version, uint flags=0) : base("tfra", version, flags)
{
}
@@ -28,6 +38,16 @@ namespace JT1078.FMp4
public uint LengthSizeOfSampleNum { get; set; }
public uint NumberOfEntry { get; set; }
public List TrackFragmentRandomAccessInfos { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+
+ //todo:tfra
+ End(ref writer);
+ }
+
public class TrackFragmentRandomAccessInfo
{
public ulong Time { get; set; }
diff --git a/src/JT1078.FMp4/Boxs/TrackRunBox.cs b/src/JT1078.FMp4/Boxs/TrackRunBox.cs
index 1cc0cdc..0947a76 100644
--- a/src/JT1078.FMp4/Boxs/TrackRunBox.cs
+++ b/src/JT1078.FMp4/Boxs/TrackRunBox.cs
@@ -1,11 +1,21 @@
-using System;
+using JT1078.FMp4.Interfaces;
+using JT1078.FMp4.MessagePack;
+using System;
using System.Collections.Generic;
using System.Text;
namespace JT1078.FMp4
{
- public class TrackRunBox : FullBox
+ ///
+ /// trun
+ ///
+ public class TrackRunBox : FullBox, IFMp4MessagePackFormatter
{
+ ///
+ /// trun
+ ///
+ ///
+ ///
public TrackRunBox(byte version, uint flags) : base("trun", version, flags)
{
}
@@ -20,6 +30,15 @@ namespace JT1078.FMp4
/// length:SampleCount
///
public List TrackRunInfos { get; set; }
+
+ public void ToBuffer(ref FMp4MessagePackWriter writer)
+ {
+ Start(ref writer);
+ WriterFullBoxToBuffer(ref writer);
+ //todo: TrackRunBox
+ End(ref writer);
+ }
+
public class TrackRunInfo
{
public uint SampleDuration { get; set; }
diff --git a/src/JT1078.FMp4/FMp4Box.cs b/src/JT1078.FMp4/FMp4Box.cs
index 32be246..1de854f 100644
--- a/src/JT1078.FMp4/FMp4Box.cs
+++ b/src/JT1078.FMp4/FMp4Box.cs
@@ -20,17 +20,27 @@ namespace JT1078.FMp4
///
public MovieBox MovieBox { get; set; }
///
- ///
+ /// fboxs
///
public List FragmentBoxs { get; set; }
///
- ///
+ /// mfra
///
public MovieFragmentRandomAccessBox MovieFragmentRandomAccessBox { get; set; }
public void ToBuffer(ref FMp4MessagePackWriter writer)
{
FileTypeBox.ToBuffer(ref writer);
+ MovieBox.ToBuffer(ref writer);
+ if(FragmentBoxs!=null && FragmentBoxs.Count > 0)
+ {
+ foreach(var item in FragmentBoxs)
+ {
+ item.MovieFragmentBox.ToBuffer(ref writer);
+ item.MediaDataBox.ToBuffer(ref writer);
+ }
+ }
+
}
}
}
diff --git a/src/JT1078.FMp4/JT1078.FMp4.xml b/src/JT1078.FMp4/JT1078.FMp4.xml
index bb40784..ce55626 100644
--- a/src/JT1078.FMp4/JT1078.FMp4.xml
+++ b/src/JT1078.FMp4/JT1078.FMp4.xml
@@ -24,6 +24,18 @@
length:EntryCount
+
+
+ stco
+
+
+
+
+ stco
+
+
+
+
length:EntryCount
@@ -50,6 +62,18 @@
DepOn:field_size=>DataType
+
+
+ ctts
+
+
+
+
+ ctts
+
+
+
+
version == 1
@@ -151,6 +175,16 @@
4位*n
+
+
+ moof
+
+
+
+
+ mdat
+
+
填充值
@@ -254,6 +288,16 @@
minf
+
+
+ mdat
+
+
+
+
+ mdat
+
+
mdhd
@@ -315,7 +359,7 @@
- trak
+ mvex
@@ -328,6 +372,82 @@
mvex
+
+
+ mehd
+
+
+
+
+ mehd
+
+
+
+
+
+
+ moof
+
+
+
+
+ moof
+
+
+
+
+ mfhd
+
+
+
+
+ traf
+
+
+
+
+ mfhd
+
+
+
+
+ mfhd
+
+
+
+
+
+
+ mfra
+
+
+
+
+ mfra
+
+
+
+
+ tfra
+
+
+
+
+ mfro
+
+
+
+
+ mfro
+
+
+
+
+ mfro
+
+
+
+
mvhd
@@ -385,6 +505,18 @@
length:sample_count
+
+
+ sdtp
+
+
+
+
+ sdtp
+
+
+
+
is taken from the sample_count in the Sample Size Box ('stsz') or Compact Sample Size Box(‘stz2’).
@@ -449,6 +581,30 @@
stco
+
+
+ stsc
+
+
+
+
+ stsc
+
+
+
+
+
+
+ sbgp
+
+
+
+
+ sbgp
+
+
+
+
version == 1
@@ -510,6 +666,18 @@
length:Length
+
+
+ subs
+
+
+
+
+ subs
+
+
+
+
version == 1
@@ -540,6 +708,18 @@
length:ItemCount
+
+
+ stts
+
+
+
+
+ stts
+
+
+
+
trak
@@ -560,6 +740,88 @@
mdia
+
+
+ tfdt
+
+
+
+
+ tfdt
+
+
+
+
+
+
+ traf
+
+
+
+
+ traf
+
+
+
+
+ tfhd
+
+
+
+
+ sdtp
+
+
+
+
+ trun
+
+
+
+
+ tfdt
+
+
+
+
+ sbgp
+
+
+
+
+ subs
+
+
+
+
+ tfhd
+
+
+
+
+ tfhd
+
+
+
+
+
+
+ tfhd
+
+
+
+
+
+ tfra
+
+
+
+
+ tfra
+
+
+
+
4byte 32-26
@@ -592,6 +854,18 @@
+
+
+ trun
+
+
+
+
+ trun
+
+
+
+
可选的
@@ -683,12 +957,12 @@
-
+ fboxs
-
+ mfra