예제 #1
0
 private void _vSoure_Hikm4StreamReceived(object sender, VideoStreamClient.Events.HikM4StreamEventArgs e)
 {
     lock (_locker)
     {
         _ups.UpdateStandardStream(e.Package.Data);
     }
 }
예제 #2
0
        private void onHikm4StreamReceived(object sender, VideoStreamClient.Events.HikM4StreamEventArgs e)
        {
            if (_hikPacket == null || _hikStream == null)
            {
                return;
            }
            var infos = _hikStream.Update(DateTime.Now, e.Package.Data);

            foreach (var packets in infos)
            {
                if (packets != null && packets.Length > 0)
                {
                    int  length = packets.Sum(_ => _.Buffer.Length);
                    bool isKey  = _keyDetector.Update(packets.First().Time, length);
                    if (isKey)
                    {
                        Console.WriteLine("Hikm4StreamReceived {0}  {1}  {2} - {3}", packets.First().Time.TimeOfDay, e.Package.Type, length, _source.VideoId);
                    }
                    DataType type = DataType.StreamData;
                    if (_keyDetector.Update(packets.First().Time, length))
                    {
                        type = DataType.StreamDataKey;
                    }

                    fireVideoDisplay(packets.First().Time, type, packets.First().Buffer); //合并视频流的第一个packet
                    for (int i = 1; i < packets.Length; i++)                              //合并视频流的其他packet
                    {
                        fireVideoDisplay(packets[i].Time, DataType.StreamData, packets[i].Buffer);
                    }
                }
            }
        }