public override bool Equals(FramePayload other) { if (other is DataLongResponsePayload) { return(Equals(other as DataLongResponsePayload)); } return(base.Equals(other)); }
public void UpdateSlide(FramePayload payload) { CurrentPage = payload.PageNumber; Application.Current.Dispatcher.Invoke(() => { using (var memoryStream = new MemoryStream(payload.Bitstream)) { var _imageToShow = new BitmapImage(); _imageToShow.BeginInit(); _imageToShow.StreamSource = memoryStream;//payload.Bitstream; _imageToShow.CacheOption = BitmapCacheOption.OnLoad; _imageToShow.EndInit(); ImageToShow = _imageToShow; } }); }
/// <summary> /// 发送媒体数据 /// </summary> /// <param name="frameType">媒体帧类型:1-流头结构,2-音频帧,3-I帧,4-P帧,5-B帧,6-MJPEG帧</param> /// <param name="payload">载荷数据</param> public void Send(Int32 frameType, Byte[] payload) { if (payload == null || payload.Length == 0) { return; } //录像视频 if (this.Context.IsFileStream == true) { GetFileResponse p = new GetFileResponse(); if (frameType == 1) { p.Type = 0; } else { p.Type = 1; } p.Buffer = payload; p.ChannelNo = this.Context.StreamIdentifier.ChannelNo; p.Datalen = payload.Length; p.Buffer = payload; Byte[] data = p.GetBytes(); ProtocolSession.Send(new FixedHeaderPackageInfo <ProtocolHeader>(Guid.NewGuid().ToString("N"), new ProtocolHeader() { proType = ProtocolType.GetFile, errornum = 0, dataLen = (UInt32)data.Length }, data)); } //实时视频 else { FramePayload p = new FramePayload(); p.FrameData = payload; //实时主码流 if (this.Context.StreamIdentifier.StreamNo == 0) { if (frameType == 1) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_HEAD; } else if (frameType == 2) { p.FrameType = FramePayload.frametype.HW_FRAME_AUDIO; } else if (frameType == 3) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_I; } else if (frameType == 4) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_P; } else if (frameType == 5) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_B; } else if (frameType == 6) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_MJPEG; } else { return; } Byte[] data = p.GetBytes(); ProtocolSession.Send(new FixedHeaderPackageInfo <ProtocolHeader>(Guid.NewGuid().ToString("N"), new ProtocolHeader() { proType = ProtocolType.Main_stream, errornum = 0, dataLen = (UInt32)data.Length }, data)); } else { //实时子码流 if (frameType == 1) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_HEAD; } else if (frameType == 2) { p.FrameType = FramePayload.frametype.HW_FRAME_AUDIO; } else if (frameType == 3) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_I; } else if (frameType == 4) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_P; } else if (frameType == 5) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_B; } else if (frameType == 6) { p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_MJPEG; } else { return; } Byte[] data = p.GetBytes(); ProtocolSession.Send(new FixedHeaderPackageInfo <ProtocolHeader>(Guid.NewGuid().ToString("N"), new ProtocolHeader() { proType = ProtocolType.Sub_stream, errornum = 0, dataLen = (UInt32)data.Length }, data)); } } }