Ejemplo n.º 1
0
        private void video_VideoStreamEvent(int frameType, byte[] frameData)
        {
            var package = new HikM4Package()
            {
                Type = frameType,
                Data = frameData,
            };

            //_flashback.InputHikM4Package(package);
            //数据通知
            if (_notifyHikm4Data != null)
            {
                _notifyHikm4Data(package);
            }

            if (frameType == HikM4Decoder.HeaderType)
            {
                HikM4Header header = new HikM4Header()
                {
                    Type = frameType,
                    Data = frameData
                };
                HikM4Header = header;
                onHikM4HeaderReceived(new HikM4HeaderEventArgs(header));
            }
            else
            {
                if (HikM4Header != null)
                {
                    onHikM4StreamReceived(new HikM4StreamEventArgs(package));
                }
            }
        }
Ejemplo n.º 2
0
 public void StartDecoder(HikM4Package package)
 {
     if (!_hikHeaderInit)
     {
         throw new InvalidOperationException("没有初始化海康视频流包头。");
     }
     _hikDecoder.InputData(package.Type, package.Data);
 }
Ejemplo n.º 3
0
 public void InputHikM4Package(HikM4Package package)
 {
     _recType = RecType.Hik;
     if (HikM4Decoder.HeaderType == package.Type)
     {
         _lastHeader = package.Data;
     }
     else
     {
         if (_lastHeader != null)
         {
             Record <HikM4Package> record = new Record <HikM4Package>()
             {
                 Time    = DateTime.Now,
                 IsKey   = package.Type == 1,
                 Package = package,
                 Header  = _lastHeader,
             };
             _hikRecQueue.Enqueue(record);
             clearTimeout();
         }
     }
 }
Ejemplo n.º 4
0
 public HikM4StreamEventArgs(HikM4Package package)
 {
     this.Package = package;
 }
Ejemplo n.º 5
0
        private void streamPipe_StreamDataReceived(object sender, StreamData e)
        {
            if (_headerReceived)
            {
                switch (_headerType)
                {
                case VideoDeviceType.Hikv:
                {
                    if (HikM4Header != null)
                    {
                        var package = new HikM4Package()
                        {
                            Type = 0,
                            Data = e.Buffer,
                        };
                        //数据通知
                        if (_notifyHikm4Data != null)
                        {
                            _notifyHikm4Data(package);
                        }
                        onHikM4StreamReceived(new HikM4StreamEventArgs(package));
                        //视频流解码
                        if (_decode)
                        {
                            _hikm4Decoder.InputData(package.Type, package.Data);
                        }
                    }
                }
                break;

                case VideoDeviceType.Ffmpeg:
                {
                    if (FfmpegHeader != null)
                    {
                        var package = new FfmpegPackage()
                        {
                            CodecID = FfmpegHeader.CodecID,
                            Width   = 0,
                            Height  = 0,
                            Type    = 0,
                            Pts     = (ulong)e.Time.Ticks,
                            Data    = e.Buffer,
                        };
                        //数据通知
                        if (_notifyFfmpegData != null)
                        {
                            _notifyFfmpegData(package);
                        }
                        onFfmpegStreamReceived(new FfmpegStreamEventArgs(package));
                        //视频流解码
                        if (_decode)
                        {
                            var frame = _ffmpegDecoder.Decode(package.Type, package.Pts, package.Data);
                            if (frame != null)
                            {
                                VideoFrame vf = new VideoFrame(frame.Width, frame.Height, (long)frame.Pts, frame.Data);
                                onVideoFrameParsed(new VideoFrameEventArgs(vf));
                            }
                        }
                    }
                }
                break;

                default:
                    break;
                }
            }
        }
Ejemplo n.º 6
0
 private void updateHikm4Data(HikM4Package package)
 {
     _flashback.InputHikM4Package(package);
 }