瀏覽代碼

组装测试盒子

tags/v1.1.0
SmallChi(Koike) 4 年之前
父節點
當前提交
684c09661f
共有 4 個檔案被更改,包括 114 行新增6 行删除
  1. +65
    -4
      src/JT1078.FMp4.Test/FMp4Box_Test.cs
  2. +8
    -0
      src/JT1078.FMp4/Boxs/MediaInformationBox.cs
  3. +24
    -2
      src/JT1078.FMp4/Boxs/VideoMediaHeaderBox.cs
  4. +17
    -0
      src/JT1078.FMp4/JT1078.FMp4.xml

+ 65
- 4
src/JT1078.FMp4.Test/FMp4Box_Test.cs 查看文件

@@ -29,7 +29,6 @@ namespace JT1078.FMp4.Test
var hex = writer.FlushAndGetArray().ToHexString(); var hex = writer.FlushAndGetArray().ToHexString();
Assert.Equal("000000246674797069736f6d0000020069736f6d69736f326176633169736f366d703431".ToUpper(), hex); Assert.Equal("000000246674797069736f6d0000020069736f6d69736f326176633169736f366d703431".ToUpper(), hex);
} }

/// <summary> /// <summary>
/// 使用doc/video/fragmented_demo.mp4 /// 使用doc/video/fragmented_demo.mp4
/// </summary> /// </summary>
@@ -47,7 +46,6 @@ namespace JT1078.FMp4.Test
var hex = writer.FlushAndGetArray().ToHexString(); var hex = writer.FlushAndGetArray().ToHexString();
Assert.Equal("0000006c6d766864000000000000000000000000000003e8000000000001000001000000000000000000000000010000000000000000000000000000000100000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002".ToUpper(), hex); Assert.Equal("0000006c6d766864000000000000000000000000000003e8000000000001000001000000000000000000000000010000000000000000000000000000000100000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002".ToUpper(), hex);
} }

/// <summary> /// <summary>
/// 使用doc/video/fragmented_demo.mp4 /// 使用doc/video/fragmented_demo.mp4
/// </summary> /// </summary>
@@ -66,7 +64,6 @@ namespace JT1078.FMp4.Test
var hex = writer.FlushAndGetArray().ToHexString(); var hex = writer.FlushAndGetArray().ToHexString();
Assert.Equal("0000005C746B68640000000300000000000000000000000100000000000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000004000000000000220000003C0".ToUpper(), hex); Assert.Equal("0000005C746B68640000000300000000000000000000000100000000000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000004000000000000220000003C0".ToUpper(), hex);
} }

/// <summary> /// <summary>
/// 使用doc/video/fragmented_demo.mp4 /// 使用doc/video/fragmented_demo.mp4
/// </summary> /// </summary>
@@ -76,7 +73,6 @@ namespace JT1078.FMp4.Test




} }

/// <summary> /// <summary>
/// 使用doc/video/fragmented_demo.mp4 /// 使用doc/video/fragmented_demo.mp4
/// </summary> /// </summary>
@@ -105,5 +101,70 @@ namespace JT1078.FMp4.Test
//0000 //0000
Assert.Equal("000000206d64686400000000000000000000000000124f800000000055c40000".ToUpper(), hex); Assert.Equal("000000206d64686400000000000000000000000000124f800000000055c40000".ToUpper(), hex);
} }
/// <summary>
/// 使用doc/video/fragmented_demo.mp4
/// </summary>
[Fact(DisplayName = "trak_mdia_hdlr")]
public void trak_mdia_hdlr_test()
{
HandlerBox handlerBox = new HandlerBox(0, 0);
handlerBox.HandlerType = Enums.HandlerType.vide;
handlerBox.Name = "VideoHandler";
FMp4MessagePackWriter writer = new MessagePack.FMp4MessagePackWriter(new byte[10240]);
handlerBox.ToBuffer(ref writer);
var hex = writer.FlushAndGetArray().ToHexString();
Assert.Equal("0000002C68646C72000000000000000076696465000000000000000000000000566964656F48616E646C6572".ToUpper(), hex);
}
/// <summary>
/// 使用doc/video/fragmented_demo.mp4
/// </summary>
[Fact(DisplayName = "trak_mdia_hdlr_minf")]
public void trak_mdia_hdlr_minf_test()
{
HandlerBox handlerBox = new HandlerBox(0, 0);
handlerBox.HandlerType = Enums.HandlerType.vide;
handlerBox.Name = "VideoHandler\0";
FMp4MessagePackWriter writer = new MessagePack.FMp4MessagePackWriter(new byte[10240]);
handlerBox.ToBuffer(ref writer);
var hex = writer.FlushAndGetArray().ToHexString();
Assert.Equal("0000002D68646C72000000000000000076696465000000000000000000000000566964656F48616E646C657200".ToUpper(), hex);
}
/// <summary>
/// 使用doc/video/fragmented_demo.mp4
/// </summary>
[Fact(DisplayName = "trak_mdia_hdlr_minf_vmhd")]
public void trak_mdia_hdlr_minf_vmhd_test()
{
VideoMediaHeaderBox videoMediaHeaderBox = new VideoMediaHeaderBox();
FMp4MessagePackWriter writer = new MessagePack.FMp4MessagePackWriter(new byte[10240]);
videoMediaHeaderBox.ToBuffer(ref writer);
var hex = writer.FlushAndGetArray().ToHexString();
Assert.Equal("00000014766d6864000000010000000000000000".ToUpper(), hex);
}
/// <summary>
/// 使用doc/video/fragmented_demo.mp4
/// </summary>
[Fact(DisplayName = "trak_mdia_hdlr_minf_dinf")]
public void trak_mdia_hdlr_minf_dinf_test()
{
DataInformationBox dataInformationBox = new DataInformationBox();
DataReferenceBox dataReferenceBox = new DataReferenceBox();
dataReferenceBox.DataEntryBoxes = new List<DataEntryBox>();
dataReferenceBox.DataEntryBoxes.Add(new DataEntryUrlBox(version: 0, flags: 1));
dataInformationBox.DataReferenceBox = dataReferenceBox;
FMp4MessagePackWriter writer = new MessagePack.FMp4MessagePackWriter(new byte[10240]);
dataInformationBox.ToBuffer(ref writer);
var hex = writer.FlushAndGetArray().ToHexString();
//0000002464696e660000001c6472656600000000000000010000000c75726c2000000001
Assert.Equal("0000002464696e660000001c6472656600000000000000010000000c75726c2000000001".ToUpper(), hex);
}
/// <summary>
/// 使用doc/video/fragmented_demo.mp4
/// </summary>
[Fact(DisplayName = "trak_mdia_hdlr_minf_stbl")]
public void trak_mdia_hdlr_minf_stbl_test()
{
}
} }
} }

+ 8
- 0
src/JT1078.FMp4/Boxs/MediaInformationBox.cs 查看文件

@@ -18,6 +18,10 @@ namespace JT1078.FMp4
{ {
} }
/// <summary> /// <summary>
/// vmhd
/// </summary>
public VideoMediaHeaderBox VideoMediaHeaderBox { get; set; }
/// <summary>
/// dinf /// dinf
/// </summary> /// </summary>
public DataInformationBox DataInformationBox { get; set; } public DataInformationBox DataInformationBox { get; set; }
@@ -29,6 +33,10 @@ namespace JT1078.FMp4
public void ToBuffer(ref FMp4MessagePackWriter writer) public void ToBuffer(ref FMp4MessagePackWriter writer)
{ {
Start(ref writer); Start(ref writer);
if (VideoMediaHeaderBox != null)
{
VideoMediaHeaderBox.ToBuffer(ref writer);
}
DataInformationBox.ToBuffer(ref writer); DataInformationBox.ToBuffer(ref writer);
SampleTableBox.ToBuffer(ref writer); SampleTableBox.ToBuffer(ref writer);
End(ref writer); End(ref writer);


+ 24
- 2
src/JT1078.FMp4/Boxs/VideoMediaHeaderBox.cs 查看文件

@@ -1,11 +1,21 @@
using System;
using JT1078.FMp4.Interfaces;
using JT1078.FMp4.MessagePack;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;


namespace JT1078.FMp4 namespace JT1078.FMp4
{ {
public class VideoMediaHeaderBox : FullBox
/// <summary>
/// vmhd
/// </summary>
public class VideoMediaHeaderBox : FullBox, IFMp4MessagePackFormatter
{ {
/// <summary>
/// vmhd
/// </summary>
/// <param name="version"></param>
/// <param name="flags"></param>
public VideoMediaHeaderBox(byte version = 0, uint flags = 1) : base("vmhd", version, flags) public VideoMediaHeaderBox(byte version = 0, uint flags = 1) : base("vmhd", version, flags)
{ {
} }
@@ -23,5 +33,17 @@ namespace JT1078.FMp4
}; };
} }
} }

public void ToBuffer(ref FMp4MessagePackWriter writer)
{
Start(ref writer);
WriterFullBoxToBuffer(ref writer);
writer.WriteUInt16(GraphicsMode);
foreach(var item in OpColor)
{
writer.WriteUInt16(item);
}
End(ref writer);
}
} }
} }

+ 17
- 0
src/JT1078.FMp4/JT1078.FMp4.xml 查看文件

@@ -327,6 +327,11 @@
minf minf
</summary> </summary>
</member> </member>
<member name="P:JT1078.FMp4.MediaInformationBox.VideoMediaHeaderBox">
<summary>
vmhd
</summary>
</member>
<member name="P:JT1078.FMp4.MediaInformationBox.DataInformationBox"> <member name="P:JT1078.FMp4.MediaInformationBox.DataInformationBox">
<summary> <summary>
dinf dinf
@@ -912,6 +917,18 @@
<param name="version"></param> <param name="version"></param>
<param name="flags"></param> <param name="flags"></param>
</member> </member>
<member name="T:JT1078.FMp4.VideoMediaHeaderBox">
<summary>
vmhd
</summary>
</member>
<member name="M:JT1078.FMp4.VideoMediaHeaderBox.#ctor(System.Byte,System.UInt32)">
<summary>
vmhd
</summary>
<param name="version"></param>
<param name="flags"></param>
</member>
<member name="T:JT1078.FMp4.Buffers.FMp4BufferWriter"> <member name="T:JT1078.FMp4.Buffers.FMp4BufferWriter">
<summary> <summary>
<see cref="!:System.Buffers.Writer"/> <see cref="!:System.Buffers.Writer"/>


Loading…
取消
儲存