diff --git a/src/JT1078.Flv.Test/FlvMuxer_Test.cs b/src/JT1078.Flv.Test/FlvMuxer_Test.cs new file mode 100644 index 0000000..9172da9 --- /dev/null +++ b/src/JT1078.Flv.Test/FlvMuxer_Test.cs @@ -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(); + } + } +} diff --git a/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj b/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj index da12930..baad934 100644 --- a/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj +++ b/src/JT1078.Flv.Test/JT1078.Flv.Test.csproj @@ -17,8 +17,4 @@ - - - - diff --git a/src/JT1078.Flv.Test/MessagePack/FlvMessagePackWriter_FlvBody_Test.cs b/src/JT1078.Flv.Test/MessagePack/FlvMessagePackWriter_FlvBody_Test.cs new file mode 100644 index 0000000..2082303 --- /dev/null +++ b/src/JT1078.Flv.Test/MessagePack/FlvMessagePackWriter_FlvBody_Test.cs @@ -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 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 { + 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); + } + } +} diff --git a/src/JT1078.Flv.Test/MessagePack/FlvMessagePackWriter_FlvTags_Test.cs b/src/JT1078.Flv.Test/MessagePack/FlvMessagePackWriter_FlvTags_Test.cs new file mode 100644 index 0000000..1042197 --- /dev/null +++ b/src/JT1078.Flv.Test/MessagePack/FlvMessagePackWriter_FlvTags_Test.cs @@ -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 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 { + 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); + } + } +} diff --git a/src/JT1078.Flv/FlvHeader.cs b/src/JT1078.Flv/FlvHeader.cs index 5a58274..f42316c 100644 --- a/src/JT1078.Flv/FlvHeader.cs +++ b/src/JT1078.Flv/FlvHeader.cs @@ -23,7 +23,7 @@ namespace JT1078.Flv Span tmp = new byte[9]; tmp[0] = 0x46; tmp[1] = 0x4c; - tmp[2] = 0x66; + tmp[2] = 0x56; tmp[3] = 0x01; tmp[4] = Flags; BinaryPrimitives.WriteInt32BigEndian(tmp.Slice(5), 9); diff --git a/src/JT1078.Flv/FlvMuxer.cs b/src/JT1078.Flv/FlvMuxer.cs index a9b0589..382c2a7 100644 --- a/src/JT1078.Flv/FlvMuxer.cs +++ b/src/JT1078.Flv/FlvMuxer.cs @@ -20,7 +20,7 @@ namespace JT1078.Flv //flv body PreviousTagSize flvMessagePackWriter.WriteUInt32(0); //flv body tag - + //flv body tag header //flv body tag body diff --git a/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Amf0.cs b/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Amf0.cs index e0d77b7..94229e1 100644 --- a/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Amf0.cs +++ b/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Amf0.cs @@ -7,7 +7,7 @@ namespace JT1078.Flv.MessagePack ref partial struct FlvMessagePackWriter { 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; span[0] = 0x02; diff --git a/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Flv.cs b/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Flv.cs index aac079f..ebe05e2 100644 --- a/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Flv.cs +++ b/src/JT1078.Flv/MessagePack/FlvMessagePackWriter_Flv.cs @@ -34,7 +34,7 @@ namespace JT1078.Flv.MessagePack case TagType.ScriptData: //DataTags //flv Amf0 - WriteAmf1(); + WriteAmf0(); //flv Amf3 WriteAmf3(tag.DataTagsData); break; @@ -42,7 +42,7 @@ namespace JT1078.Flv.MessagePack //VIDEODATA break; } - WriteInt24Return(GetCurrentPosition() - DataSizePosition - 3, DataSizePosition); + WriteInt24Return(GetCurrentPosition() - 11, DataSizePosition); } public void WriteUInt24(uint value)