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); }