コード例 #1
0
        private void onStreamEvent(IStreamPacket packet)
        {
            Console.WriteLine();
            Console.Write("packet {0}:", packet.Buffer.Length);
            for (int i = 0; i < 30; i++)
            {
                Console.Write("{0:X2}, ", packet.Buffer[i]);
            }
            Console.WriteLine();

            int width  = 0;
            int height = 0;

            byte[] frameData = _decoder.Decode(packet.Buffer, out width, out height);
            if (frameData != null)
            {
                Console.WriteLine("Decode frame: {0}", frameData.Length);

                int    size = width * 4 * height;
                byte[] rgb  = new byte[size];
                for (int i = 0; i < width * height; i++)
                {
                    rgb[i * 4]     = rgb[i * 4 + 1] = rgb[i * 4 + 2] = frameData[i];
                    rgb[i * 4 + 3] = 0xFF;
                }
                IntPtr ptr = Marshal.AllocHGlobal(size);
                Marshal.Copy(rgb, 0, ptr, size);
                using (Bitmap bmp = new Bitmap(width, height, width * 4, System.Drawing.Imaging.PixelFormat.Format32bppRgb, ptr))
                {
                    onBitmap(bmp);
                }
                Marshal.FreeHGlobal(ptr);
            }
        }
コード例 #2
0
ファイル: HikStream.cs プロジェクト: windygu/SeecoolCCTV2
 private void onStandardStream(IStreamPacket obj)
 {
     onStream(obj.Buffer, obj.FrameType, obj.Time);
     if (obj.FrameType == CCTVFrameType.StreamFrame || obj.FrameType == CCTVFrameType.StreamKeyFrame)
     {
         onFrame(obj.Buffer, obj.FrameType);
     }
 }
コード例 #3
0
 private void onStream(IStreamPacket packet)
 {
     if (_isTransform)
     {
         updateFromH264(packet);
     }
     else
     {
         _hikDecoder?.InputData(1, packet.Buffer);
     }
 }
コード例 #4
0
        private void onStream(IStreamPacket packet)
        {
            savetoTxt(packet.Buffer);
            //string rtspstr = $"hik packet {packet.FrameType} {packet.Buffer.Length}:";
            //for (int i = 0; i < Math.Min(100, packet.Buffer.Length); i++)
            //    rtspstr += string.Format("{0:X2}, ", packet.Buffer[i]);
            //Console.WriteLine(rtspstr);

            //if (packet.FrameType == CCTVFrameType.StreamFrame)
            //    Console.WriteLine($"{packet.FrameType}  ---- {packet.Buffer.Length}---{packet.Time.TimeOfDay}");
            //else
            //    Console.WriteLine($"{packet.FrameType}  ---- {packet.Buffer.Length}---{packet.Time.TimeOfDay}-------------------------------");
        }
コード例 #5
0
 private void updateFromH264(IStreamPacket packet)
 {
     byte[] buffer = getVideoDecoderBuffer(packet.Buffer);
     if (buffer != null && buffer.Length > 0)
     {
         int    width     = 0;
         int    height    = 0;
         byte[] frameData = _decoder?.Decode(buffer, out width, out height);
         if (frameData != null)
         {
             onDisplay(frameData, width, height);
             MessageInfo = "设备支持海康码流转为Ffmpeg.VideoDecoder格式";
         }
     }
 }
コード例 #6
0
        private void onStreamEvent(IStreamPacket packet)
        {
            //savetoTxt(packet.Buffer);
            //Console.WriteLine();
            //string rtspstr = $"rtsp stream {packet.Buffer.Length}:";
            //for (int i = 0; i < Math.Min(100, packet.Buffer.Length); i++)
            //    rtspstr += string.Format("{0:X2}, ", packet.Buffer[i]);
            //Console.WriteLine(rtspstr);

            int width  = 0;
            int height = 0;

            byte[] frameData = _decoder.Decode(packet.Buffer, out width, out height);
            if (frameData != null)
            {
                if (width != _width || height != _height)
                {
                    _width  = width;
                    _height = height;
                    _renderSource.SetupSurface(width, height);
                }
                renderFrame(frameData, width, height);
            }
        }
コード例 #7
0
 private void onHikStream(IStreamPacket packet)
 {
     //_ups.UpdateStandardStream(packet.Buffer);
     _upsnew.UpdateStandardStream(packet.Buffer);
 }
コード例 #8
0
 private void Stream_StreamEvent(IStreamPacket obj)
 {
     OnStreamDataReceived(new StreamData(obj.Time, obj.Buffer));
 }