Beispiel #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;
            }
        }
Beispiel #2
0
        protected void onHeader(IHeaderPacket header)
        {
            Header = header;
            var handler = HeaderEvent;

            if (handler != null)
            {
                handler(header);
            }
        }
 private void onHeader(IHeaderPacket packet)
 {
     lock (_objLock)
     {
         checkStyleChanged(packet);
         if (_isTransform)
         {
             _decoder = new VideoDecoder();
             _decoder.Create(Constants.AVCodecID.AV_CODEC_ID_H264);
         }
         else
         {
             initHikDecoder((packet as HikHeaderPacket).Buffer);
         }
     }
 }
Beispiel #4
0
        private void onHeader(IHeaderPacket packet)
        {
            HikHeaderPacket header = packet as HikHeaderPacket;

            if (header != null)
            {
                savetoTxt("Header: ");
                savetoTxt(header.Buffer);

                //Console.WriteLine();
                //string rtspstr = $"hik Header {header.Buffer.Length}:";
                //for (int i = 0; i < header.Buffer.Length; i++)
                //    rtspstr += string.Format("{0:X2}, ", header.Buffer[i]);
                //Console.WriteLine(rtspstr);
            }
        }
        public static IHeaderPacket Decode(MemoryStream ms)
        {
            VideoPacketType type   = (VideoPacketType)PacketBase.ReadInt(ms);
            IHeaderPacket   packet = null;

            switch (type)
            {
            case VideoPacketType.HikvisionHeader:
                packet = HikHeaderPacket.Decode(ms);
                break;

            case VideoPacketType.FfmpegHeader:
                packet = StandardHeaderPacket.Decode(ms);
                break;
            }
            return(packet);
        }
 public static byte[] Encoder(IHeaderPacket packet)
 {
     using (MemoryStream ms = new MemoryStream())
     {
         if (packet is HikHeaderPacket)
         {
             PacketBase.WriteBytes(ms, (int)VideoPacketType.HikvisionHeader);
             PacketBase.WriteBytes(ms, HikHeaderPacket.Encode(packet as HikHeaderPacket));
         }
         else if (packet is StandardHeaderPacket)
         {
             PacketBase.WriteBytes(ms, (int)VideoPacketType.FfmpegHeader);
             PacketBase.WriteBytes(ms, StandardHeaderPacket.Encode(packet as StandardHeaderPacket));
         }
         return(ms.ToArray());
     }
 }
Beispiel #7
0
        private void onHeader(IHeaderPacket packet)
        {
            var header = packet as StandardHeaderPacket;

            Console.Write("header {0}:", header.Buffer.Length);
            for (int i = 0; i < header.Buffer.Length; i++)
            {
                Console.Write("{0:X2}, ", header.Buffer[i]);
            }
            Console.WriteLine();

            _decoder = new VideoDecoder();
            _decoder.Create((Constants.AVCodecID)header.CodecID);
            int width  = 0;
            int height = 0;

            _decoder.Decode(header.Buffer, out width, out height);
        }
        private void onHeader(IHeaderPacket packet)
        {
            var header = packet as StandardHeaderPacket;

            _rtspServer.UpdateHeader(header.Buffer);

            Console.WriteLine();
            string rtspstr = $"rtsp header {header.Buffer.Length}:";

            for (int i = 0; i < header.Buffer.Length; i++)
            {
                rtspstr += string.Format("{0:X2}, ", header.Buffer[i]);
            }
            Console.WriteLine(rtspstr);

            _decoder = new VideoDecoder();
            _decoder.Create((Constants.AVCodecID)header.CodecID);
            int width  = 0;
            int height = 0;

            byte[] frame = _decoder.Decode(header.Buffer, out width, out height);
        }
        private void checkStyleChanged(IHeaderPacket packet)
        {
            var buffer = (packet as HikHeaderPacket)?.Buffer;

            if (buffer != null && buffer.Length > 4)
            {
                if (buffer[0] == 0x34 && buffer[1] == 0x48 && buffer[2] == 0x4B && buffer[3] == 0x48)//ascii: 4HKH(旧设备)
                {
                    MessageInfo = "设备不支持海康码流转为Ffmpeg.VideoDecoder格式";
                }
                else if (buffer[0] == 0x49 && buffer[1] == 0x4D && buffer[2] == 0x4B && buffer[3] == 0x48)
                {
                    MessageInfo = "设备支持海康码流转为Ffmpeg.VideoDecoder格式";
                }
                else
                {
                    MessageInfo = "其它设备类型,请通过验证判断!" + BitConverter.ToString(buffer);
                }
            }
            else
            {
                MessageInfo = "视频包头错误.";
            }
        }