diff --git a/src/JT1078.Flv/FlvEncoder.cs b/src/JT1078.Flv/FlvEncoder.cs index 1a9aa24..086bdcc 100644 --- a/src/JT1078.Flv/FlvEncoder.cs +++ b/src/JT1078.Flv/FlvEncoder.cs @@ -214,7 +214,14 @@ namespace JT1078.Flv FlvArrayPool.Return(buffer); } } - public byte[] CreateFlvFrame(List nALUs,int minimumLength = 65535) + /// + /// + /// + /// + /// 由于获取的SIM卡可能为000000000000,所以如果有替换JT1078Package.GetKey()的值 + /// + /// + public byte[] CreateFlvFrame(List nALUs, string key = null, int minimumLength = 65535) { byte[] buffer = FlvArrayPool.Rent(minimumLength); try @@ -223,7 +230,7 @@ namespace JT1078.Flv H264NALU sps=null, pps=null, sei=null; foreach (var naln in nALUs) { - string key = naln.GetKey(); + key = key ?? naln.GetKey(); if (sps != null && pps != null) { var rawData = H264Decoder.DiscardEmulationPreventionBytes(sps.RawData); @@ -391,13 +398,14 @@ namespace JT1078.Flv /// /// /// 完整的1078包 + /// 由于获取的SIM卡可能为000000000000,所以如果有替换JT1078Package.GetKey()的值 /// 默认65535 /// - public byte[] CreateFlvFrame(JT1078Package package,int minimumLength = 65535) + public byte[] CreateFlvFrame(JT1078Package package,string key=null,int minimumLength = 65535) { var nalus = H264Decoder.ParseNALU(package); if (nalus == null || nalus.Count <= 0) return default; - return CreateFlvFrame(nalus, minimumLength); + return CreateFlvFrame(nalus, key, minimumLength); } /// /// diff --git a/src/JT1078.Flv/H264/H264Decoder.cs b/src/JT1078.Flv/H264/H264Decoder.cs index 19c8972..0c31bd9 100644 --- a/src/JT1078.Flv/H264/H264Decoder.cs +++ b/src/JT1078.Flv/H264/H264Decoder.cs @@ -16,8 +16,9 @@ namespace JT1078.Flv.H264 /// /// /// + /// /// - public List ParseNALU(JT1078Package package) + public List ParseNALU(JT1078Package package, string key = null) { List h264NALUs = new List(); int i=0,state=0;