Ejemplo n.º 1
0
        private void Stream_HeaderEvent(IHeaderPacket obj)
        {
            switch (_vType)
            {
            case VideoDeviceType.Hikv:
            {
                HikHeaderPacket hhp = obj as HikHeaderPacket;
                if (hhp != null)
                {
                    CurrentHeader = new HikvStreamHeader(hhp.Buffer);
                    OnStreamHeaderRecieved(CurrentHeader);
                }
            }
            break;

            case VideoDeviceType.Ffmpeg:
            {
                FfmpegHeaderPacket fhp = obj as FfmpegHeaderPacket;
                if (fhp != null)
                {
                    CurrentHeader = new FfmpegStreamHeader(fhp.CodecID, fhp.Buffer);
                    OnStreamHeaderRecieved(CurrentHeader);
                }
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 2
0
        private void streamPipe_StreamHeaderReceived(object sender, IStreamHeader e)
        {
            _headerType = e.DeviceType;
            switch (e.DeviceType)
            {
            case VideoDeviceType.Hikv:
            {
                _headerReceived = true;
                HikM4Header header = new HikM4Header()
                {
                    Type = HikM4Decoder.HeaderType,
                    Data = (e as HikvStreamHeader).Buffer
                };
                HikM4Header = header;
                onHikM4HeaderReceived(new HikM4HeaderEventArgs(header));
                //初始化包头
                if (_decode)
                {
                    _hikm4Decoder.InputData(header.Type, header.Data);
                }
            }
            break;

            case VideoDeviceType.Ffmpeg:
            {
                _headerReceived = true;
                FfmpegStreamHeader tH     = e as FfmpegStreamHeader;
                FfmpegHeader       header = new FfmpegHeader()
                {
                    CodecID = (Constants.AVCodecID)tH.CodecID,
                    Width   = 0,
                    Height  = 0
                };
                FfmpegHeader = header;
                onFfmpegHeaderReceived(new FfmpegHeaderEventArgs(header));
                //初始化包头
                if (_decode)
                {
                    _ffmpegDecoder.Init(header.CodecID, header.Width, header.Height);
                }
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 3
0
        private void _client_ReceiveCompleted(object sender, ReceiveEventArgs args)
        {
            try
            {
                if (args.ByteLenght >= 4)
                {
                    int code = BitConverter.ToInt32(args.ReceivedBytes, 0);
                    switch (code)
                    {
                    case StreamEntityCode.FfmpegHeader:
                    {
                        CurrentHeader = FfmpegStreamHeader.DeserializeTo(args.ReceivedBytes);
                        OnStreamHeaderRecieved(CurrentHeader);
                    }
                    break;

                    case StreamEntityCode.HikvHeader:
                    {
                        CurrentHeader = HikvStreamHeader.DeserializeTo(args.ReceivedBytes);
                        OnStreamHeaderRecieved(CurrentHeader);
                    }
                    break;

                    case StreamEntityCode.StreamData:
                    {
                        OnStreamDataReceived(StreamData.DeserializeTo(args.ReceivedBytes));
                    }
                    break;

                    case StreamEntityCode.RemoteError:
                    {
                        RemoteError re = RemoteError.DeserializeTo(args.ReceivedBytes);
                        OnErrorOccurred(new ErrorEventArgs(re.ErrorMessage, ErrorTypes.Receive));
                    }
                    break;
                    }
                }
            }
            catch (Exception e)
            {
                OnErrorOccurred(new ErrorEventArgs($"从远程流媒体服务器获取到异常数据:{e.Message}", ErrorTypes.Receive));
            }
        }