@@ -0,0 +1,18 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using Xunit; | |||||
using JT1078.Flv.Extensions; | |||||
namespace JT1078.Flv.Test | |||||
{ | |||||
public class FlvMuxer_Test | |||||
{ | |||||
[Fact] | |||||
public void FlvMuxer_Test_1() { | |||||
FlvMuxer flvMuxer = new FlvMuxer(); | |||||
var buff = flvMuxer.FlvFirstFrame(); | |||||
var hex= buff.ToHexString(); | |||||
} | |||||
} | |||||
} |
@@ -17,8 +17,4 @@ | |||||
<ProjectReference Include="..\JT1078.Flv\JT1078.Flv.csproj" /> | <ProjectReference Include="..\JT1078.Flv\JT1078.Flv.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<Folder Include="Metadata\" /> | |||||
</ItemGroup> | |||||
</Project> | </Project> |
@@ -0,0 +1,59 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using Xunit; | |||||
using JT1078.Flv.MessagePack; | |||||
using JT1078.Flv.Metadata; | |||||
using JT1078.Flv.Extensions; | |||||
namespace JT1078.Flv.Test.MessagePack | |||||
{ | |||||
public class FlvMessagePackWriter_FlvBody_Test | |||||
{ | |||||
[Fact] | |||||
public void FlvMessagePackWriter_FlvBody_Test_1() | |||||
{ | |||||
Span<byte> buffer = new byte[1024]; | |||||
FlvMessagePackWriter flvMessagePackWriter = new FlvMessagePackWriter(buffer); | |||||
FlvBody flvBody = new FlvBody() | |||||
{ | |||||
PreviousTagSize=0, | |||||
Tag = new FlvTags | |||||
{ | |||||
Type = Enums.TagType.ScriptData, | |||||
DataSize = 156, | |||||
DataTagsData = new Amf3 | |||||
{ | |||||
Amf3Metadatas = new List<Flv.Metadata.IAmf3Metadata> { | |||||
new Amf3Metadata_Duration{ | |||||
Value=7.22100 | |||||
}, | |||||
new Amf3Metadata_FileSize{ | |||||
Value=2005421.00000 | |||||
}, | |||||
new Amf3Metadata_FrameRate{ | |||||
Value=29.16667 | |||||
}, | |||||
new Amf3Metadata_Height{ | |||||
Value=960.00000 | |||||
}, | |||||
new Amf3Metadata_VideoCodecId{ | |||||
Value=7.00000 | |||||
}, | |||||
new Amf3Metadata_VideoDataRate{ | |||||
Value=0.00000 | |||||
}, | |||||
new Amf3Metadata_Width{ | |||||
Value=544.00000 | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
flvMessagePackWriter.WriteFlvBody(flvBody); | |||||
var hex=flvMessagePackWriter.FlushAndGetArray().ToHexString(); | |||||
Assert.Equal("00000000120000A00000000000000002000A6F6E4D65746144617461080000000700086475726174696F6E00401CE24DD2F1A9FC000866696C6573697A6500413E99AD0000000000096672616D657261746500403D2AAAE297396D000668656967687400408E000000000000000C766964656F636F646563696400401C000000000000000D766964656F646174617261746500000000000000000000057769647468004081000000000000", hex); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,55 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using Xunit; | |||||
using JT1078.Flv.MessagePack; | |||||
using JT1078.Flv.Metadata; | |||||
using JT1078.Flv.Extensions; | |||||
namespace JT1078.Flv.Test.MessagePack | |||||
{ | |||||
public class FlvMessagePackWriter_FlvTags_Test | |||||
{ | |||||
[Fact] | |||||
public void FlvMessagePackWriter_FlvTags_Test_1() | |||||
{ | |||||
Span<byte> buffer = new byte[1024]; | |||||
FlvMessagePackWriter flvMessagePackWriter = new FlvMessagePackWriter(buffer); | |||||
FlvTags flvTags = new FlvTags | |||||
{ | |||||
Type = Enums.TagType.ScriptData, | |||||
DataSize = 156, | |||||
DataTagsData = new Amf3 | |||||
{ | |||||
Amf3Metadatas = new List<Flv.Metadata.IAmf3Metadata> { | |||||
new Amf3Metadata_Duration{ | |||||
Value=7.22100 | |||||
}, | |||||
new Amf3Metadata_FileSize{ | |||||
Value=2005421.00000 | |||||
}, | |||||
new Amf3Metadata_FrameRate{ | |||||
Value=29.16667 | |||||
}, | |||||
new Amf3Metadata_Height{ | |||||
Value=960.00000 | |||||
}, | |||||
new Amf3Metadata_VideoCodecId{ | |||||
Value=7.00000 | |||||
}, | |||||
new Amf3Metadata_VideoDataRate{ | |||||
Value=0.00000 | |||||
}, | |||||
new Amf3Metadata_Width{ | |||||
Value=544.00000 | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
flvMessagePackWriter.WriteFlvTag(flvTags); | |||||
var hex=flvMessagePackWriter.FlushAndGetArray().ToHexString(); | |||||
Assert.Equal("1200009C0000000000000002000A6F6E4D65746144617461080000000700086475726174696F6E00401CE24DD2F1A9FC000866696C6573697A6500413E99AD0000000000096672616D657261746500403D2AAAE297396D000668656967687400408E000000000000000C766964656F636F646563696400401C000000000000000D766964656F646174617261746500000000000000000000057769647468004081000000000000", hex); | |||||
} | |||||
} | |||||
} |
@@ -23,7 +23,7 @@ namespace JT1078.Flv | |||||
Span<byte> tmp = new byte[9]; | Span<byte> tmp = new byte[9]; | ||||
tmp[0] = 0x46; | tmp[0] = 0x46; | ||||
tmp[1] = 0x4c; | tmp[1] = 0x4c; | ||||
tmp[2] = 0x66; | |||||
tmp[2] = 0x56; | |||||
tmp[3] = 0x01; | tmp[3] = 0x01; | ||||
tmp[4] = Flags; | tmp[4] = Flags; | ||||
BinaryPrimitives.WriteInt32BigEndian(tmp.Slice(5), 9); | BinaryPrimitives.WriteInt32BigEndian(tmp.Slice(5), 9); | ||||
@@ -20,7 +20,7 @@ namespace JT1078.Flv | |||||
//flv body PreviousTagSize | //flv body PreviousTagSize | ||||
flvMessagePackWriter.WriteUInt32(0); | flvMessagePackWriter.WriteUInt32(0); | ||||
//flv body tag | //flv body tag | ||||
//flv body tag header | //flv body tag header | ||||
//flv body tag body | //flv body tag body | ||||
@@ -7,7 +7,7 @@ namespace JT1078.Flv.MessagePack | |||||
ref partial struct FlvMessagePackWriter | ref partial struct FlvMessagePackWriter | ||||
{ | { | ||||
private readonly static byte[] FixedAmf0Data = new byte[] { 0x6F, 0x6E, 0x4D, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61 }; | private readonly static byte[] FixedAmf0Data = new byte[] { 0x6F, 0x6E, 0x4D, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61 }; | ||||
public void WriteAmf1() | |||||
public void WriteAmf0() | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
span[0] = 0x02; | span[0] = 0x02; | ||||
@@ -34,7 +34,7 @@ namespace JT1078.Flv.MessagePack | |||||
case TagType.ScriptData: | case TagType.ScriptData: | ||||
//DataTags | //DataTags | ||||
//flv Amf0 | //flv Amf0 | ||||
WriteAmf1(); | |||||
WriteAmf0(); | |||||
//flv Amf3 | //flv Amf3 | ||||
WriteAmf3(tag.DataTagsData); | WriteAmf3(tag.DataTagsData); | ||||
break; | break; | ||||
@@ -42,7 +42,7 @@ namespace JT1078.Flv.MessagePack | |||||
//VIDEODATA | //VIDEODATA | ||||
break; | break; | ||||
} | } | ||||
WriteInt24Return(GetCurrentPosition() - DataSizePosition - 3, DataSizePosition); | |||||
WriteInt24Return(GetCurrentPosition() - 11, DataSizePosition); | |||||
} | } | ||||
public void WriteUInt24(uint value) | public void WriteUInt24(uint value) | ||||