From 690941cc7884f0f91876a57f057404bc88f5d351 Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Fri, 11 Dec 2020 23:26:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84demo=E7=9A=84trun=E7=9B=92?= =?UTF-8?q?=E5=AD=90=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/JT1078.FMp4.Test/FMp4Box_Test.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/JT1078.FMp4.Test/FMp4Box_Test.cs b/src/JT1078.FMp4.Test/FMp4Box_Test.cs index dfd37b9..1655bd6 100644 --- a/src/JT1078.FMp4.Test/FMp4Box_Test.cs +++ b/src/JT1078.FMp4.Test/FMp4Box_Test.cs @@ -6,6 +6,7 @@ using Xunit; using JT1078.Protocol.Extensions; using JT1078.FMp4.Enums; using JT1078.FMp4.Samples; +using System.Buffers.Binary; using System.IO; using System.Linq; @@ -271,7 +272,7 @@ namespace JT1078.FMp4.Test movieFragmentBox.TrackFragmentBox.TrackFragmentHeaderBox.DefaultSampleFlags = 0x01010000; //moof->tfdt movieFragmentBox.TrackFragmentBox.TrackFragmentBaseMediaDecodeTimeBox = new TrackFragmentBaseMediaDecodeTimeBox(); - //todo:moof->trun + //moof->trun //000006987472756E00000305000000D0000006F802000000 //00 00 06 98 //74 72 75 6E @@ -288,9 +289,20 @@ namespace JT1078.FMp4.Test movieFragmentBox.TrackFragmentBox.TrackRunBox.TrackRunInfos = new List(); var lines = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FMP4", "fragmented_demo_trun.txt")); var buffers = lines.Where(w => !string.IsNullOrEmpty(w)).Select(s => s.ToHexBytes()).ToList(); - List data = new List(); //SampleDuration //SampleSize + foreach (var buffer in buffers) + { + var mod = buffer.Length / 8; + for (int i = 0; i < mod; i++) + { + TrackRunBox.TrackRunInfo trackRunInfo = new TrackRunBox.TrackRunInfo(); + trackRunInfo.SampleDuration = BinaryPrimitives.ReadUInt32BigEndian(buffer.Skip(i * 4).Take(4).ToArray()); + trackRunInfo.SampleSize= BinaryPrimitives.ReadUInt32BigEndian(buffer.Skip((i + 1)*4).Take(4).ToArray()); + movieFragmentBox.TrackFragmentBox.TrackRunBox.TrackRunInfos.Add(trackRunInfo); + } + } + Assert.Equal(0x00000698, movieFragmentBox.TrackFragmentBox.TrackRunBox.TrackRunInfos.Count*8+4*6); } /// /// 使用doc/video/fragmented_demo.mp4