Exemplo n.º 1
0
        public void CanReadMp4()
        {
            using (var stream = File.Open(TestHelper.GetTestFilePath("chicago.mp4"), FileMode.Open))
            {
                var reader = new BmffReader(stream);

                var boxes = reader.RootBoxes;

                var ftpy = (FileTypeBox)boxes[0];
                var moov = (MovieBox)boxes[1];
                var free = (FreeSpaceBox)boxes[2];
                var mdat = (MovieDataBox)boxes[3];

                // File Type
                Assert.Equal(0u, ftpy.Offset);
                Assert.Equal(32u, ftpy.ContentOffset);
                Assert.Equal(Guid.Parse("70797466-1100-1000-8000-00aa00389b71"), ftpy.Type.UserType);

                // Movie
                Assert.Equal(3, moov.Children.Count);

                // FreeSpace
                Assert.Equal(982u, free.ContentOffset);

                // Movie Data
                Assert.Equal(990u, mdat.ContentOffset);
                Assert.Equal(1314169u, mdat.ContentSize);
            }
        }
Exemplo n.º 2
0
        public void CanReadMp4Segment()
        {
            using (var stream = File.Open(TestHelper.GetTestFilePath("0_000.m4s"), FileMode.Open))
            {
                var reader = new BmffReader(stream);

                var boxes = reader.RootBoxes;

                var styp   = (SegmentTypeBox)reader.RootBoxes[0];
                var sidx_1 = (SegmentIndexBox)reader.RootBoxes[1]; // Video
                var sidx_2 = (SegmentIndexBox)reader.RootBoxes[2]; // Audio
                var moof   = (MovieFragmentBox)reader.RootBoxes[3];
                var mdat   = (MovieDataBox)reader.RootBoxes[4];

                Assert.Equal(0ul, styp.Offset.Value);
                Assert.Equal(24u, styp.Size);

                Assert.Equal("msdh", styp.MajorBrand.ToString());
                Assert.Equal(new[] { "msdh", "msix" }, styp.CompatibleBrands.Select(b => b.ToString()).ToArray());

                Assert.Equal(1, sidx_1.Version);
                Assert.Equal(1u, sidx_1.ReferenceId);
                Assert.Equal(24000u, sidx_1.Timescale);
                Assert.Equal(2002ul, sidx_1.EarliestPresentationTime);
                Assert.Equal(52ul, sidx_1.FirstOffset);
                Assert.Equal(1, sidx_1.ReferenceCount);

                Assert.Equal((false, 198178u, 48048u, true, 0u, 0u), (
                                 sidx_1.Entries[0].ReferenceType,
                                 sidx_1.Entries[0].ReferenceSize,
                                 sidx_1.Entries[0].Duration,
                                 sidx_1.Entries[0].StartWithSap,
                                 sidx_1.Entries[0].SapType,
                                 sidx_1.Entries[0].SapDeltaTime));

                Assert.Equal(1, sidx_2.Version);
                Assert.Equal(2u, sidx_2.ReferenceId);
                Assert.Equal(44100u, sidx_2.Timescale);
                Assert.Equal(2655u, sidx_2.EarliestPresentationTime);
                Assert.Equal(0ul, sidx_2.FirstOffset);
                Assert.Equal(1, sidx_2.ReferenceCount);

                Assert.Equal(86016u, sidx_2.Entries[0].Duration);
            }
        }