Exemple #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;
            }
        }
 void updateFfmpegHeader(int codecID, int width, int height)
 {
     if (StreamId != -1)
     {
         if (_ffmpegPacket != null && _ffmpegPacket.CodecID == codecID && _ffmpegPacket.Width == width && _ffmpegPacket.Height == height)
         {
             return;
         }
         Console.WriteLine("ffmpegHeaderReceived " + _source.VideoId);
         _ffmpegPacket = new FfmpegHeaderPacket(StreamId, StreamName, StreamUrl, codecID, width, height);
         fireVideoDisplay(DateTime.Now, DataType.SysHead, FfmpegHeaderPacket.Encode(_ffmpegPacket));
     }
 }
        public void TestHikHeaderPacket()
        {
            HikHeaderPacket packet1 = new HikHeaderPacket(1, "test", "streamUrl", 1, new byte[10]);

            byte[] buffer  = HikHeaderPacket.Encode(packet1);
            var    packet2 = HikHeaderPacket.Decode(buffer);

            Assert.IsNull(FfmpegHeaderPacket.Decode(buffer));

            Assert.AreNotSame(packet1, packet2);
            Assert.AreEqual(packet1.Header.Length, packet2.Header.Length);
            Assert.AreEqual(packet1.StreamId, packet2.StreamId);
            Assert.AreEqual(packet1.StreamName, packet2.StreamName);
            Assert.AreEqual(packet1.StreamUrl, packet2.StreamUrl);
            Assert.AreEqual(packet1.Type, packet2.Type);
        }
        public void TestMethod1()
        {
            FfmpegHeaderPacket packet1 = new FfmpegHeaderPacket(1, "streamName", "streamUrl", 80, 1000, 600);

            byte[] buffer = FfmpegHeaderPacket.Encode(packet1);
            Assert.IsNull(HikHeaderPacket.Decode(buffer));
            FfmpegHeaderPacket packet2 = FfmpegHeaderPacket.Decode(buffer);

            Assert.AreNotSame(packet1, packet2);
            Assert.AreEqual(packet1.CodecID, packet2.CodecID);
            Assert.AreEqual(packet1.StreamId, packet2.StreamId);
            Assert.AreEqual(packet1.StreamName, packet2.StreamName);
            Assert.AreEqual(packet1.Width, packet2.Width);
            Assert.AreEqual(packet1.Height, packet2.Height);
            Assert.AreEqual(packet1.StreamUrl, packet2.StreamUrl);
        }
        IStreamDecoder getDecoder(byte[] buffer)
        {
            FfmpegHeaderPacket fhp = FfmpegHeaderPacket.Decode(buffer);

            if (fhp != null)
            {
                Console.WriteLine($"{(Constants.AVCodecID)fhp.CodecID}, {fhp.Width}, {fhp.Height}");
                return(new FfmpegStreamDecoder((Constants.AVCodecID)fhp.CodecID, fhp.Width, fhp.Height));
            }
            HikHeaderPacket hhp = HikHeaderPacket.Decode(buffer);

            if (hhp != null)
            {
                return(new HikStreamDecoder(hhp.Header));
            }
            return(null);
        }