private void onVideoBasePacketReceived(VideoBasePacket packet) { if (packet != null) { _baseRec.UpdateVideoBase(packet); loadVideoBase(); } }
private void onVideoBase(VideoBasePacket packet) { var handle = VideoBaseReceived; if (handle != null) { handle(packet); } }
private void onVideoBasePacketReceived(VideoBasePacket obj) { var handle = VideoBaseEvent; if (handle != null && obj != null) { handle(obj); } }
public void TestVideoBasePacketLong() { VideoBasePacket packet = new VideoBasePacket(new byte[30], new DateTime(2016, 1, 1), 1000000000000); byte[] buffer = VideoBasePacket.Encode(packet); var packet2 = VideoBasePacket.Decode(buffer); AssertAreEqual(packet, packet2); }
public void Setup() { beginTime = new DateTime(2016, 5, 6, 13, 58, 0); basePacket = new VideoBasePacket(new byte[] { 1, 2, 3, 5, 6, 7, 128, 200, 0, 15 }, beginTime, 1000000); var tpps = new TimePeriodPacket[] { new TimePeriodPacket(beginTime.AddMinutes(1), beginTime.AddMinutes(10)), new TimePeriodPacket(beginTime.AddMinutes(15), beginTime.AddMinutes(30)), }; packet = new VideoTimePeriodsPacket(new VideoInfo("test", 1), tpps); }
public void SetVideoBaseInfo(VideoBasePacket packet) { lock (_lockObj) { if (_recorder != null) { _recorder.Set(new StreamPacket(packet.Time, DataType.SysHead, packet.Header)); IsInitedVideoBase = true; } } }
private byte[] getVideoBasePacketBuffer(VideoBaseInfomParam param) { var packet = StorageDownloader.Instance.GetVideoBaseInfom(param.VideoId, param.StreamId, param.BeginTime, param.EndTime); if (packet != null) { return(VideoBasePacket.Encode(packet)); } else { return(new byte[0]); } }
private void Client_ReceiveCompleted(object sender, ReceiveEventArgs args) { try { if (args.ByteLength > 0) { onBytesLengthReceived(args.ByteLength); using (MemoryStream ms = new MemoryStream(args.ReceivedBytes)) { int code = PacketBase.ReadInt(ms); switch ((ParamCode)code) { case ParamCode.TimePeriods: onVideoStoragePacket(VideoTimePeriodsPacket.Decode(ms)); break; case ParamCode.VideoPacket: onVideoPacket(VideoStreamsPacket.Decode(ms)); break; case ParamCode.VideoBaseInfo: onVideoBasePacket(VideoBasePacket.Decode(ms)); break; case ParamCode.DownloadInfosAll: onDownloadInfosAll(DownloadInfoExpandPacket.DecodeArray(ms)); break; case ParamCode.DownloadInfosAdd: onDownloadInfosAdd(DownloadInfoExpandPacket.Decode(ms)); break; case ParamCode.DownloadInfoPart: onDownloadInfoPart(DownloadInfoPartConverter.Decode(ms)); break; } } } } catch (Exception ex) { onException(ex); } }
public void TestStorageDownloader_BaseInfom_100() { int length = 100; DateTime start = DateTime.Now; VideoBasePacket[] infos = new VideoBasePacket[length]; for (int index = 0; index < length; index++) //Parallel.For(0, length, index => { string videoId = string.Format("VideoId_{0:X}", 0x50BAD15900010301 + index); infos[index] = StorageDownloader.Instance.GetVideoBaseInfom(videoId, 2, new DateTime(2012, 12, 31, 1, 53, 30), new DateTime(2013, 1, 2, 23, 55, 30)); } //); Console.WriteLine(DateTime.Now - start); for (int i = 0; i < infos.Length; i++) { Assert.AreEqual(2, infos[i].Header.Length); Assert.AreEqual((3600 * 10 / 5) * ((20 + 6) + 4 * (20 + 3)), infos[i].Length); } }
private void onReceived(object sender, ReceiveEventArgs args) { if (args.ByteLength > 0) { using (MemoryStream ms = new MemoryStream(args.ReceivedBytes)) { int code = PacketBase.ReadInt(ms); //Console.WriteLine("{0} - {1}", (ParamCode)code, args.ByteLength); switch ((ParamCode)code) { case ParamCode.TimePeriods: //接收所有有效视频分布 onTimePeriodsAll(VideoTimePeriodsPacket.Decode(ms).TimePeriods); break; case ParamCode.VideoBaseInfo: //设置视频基本信息 onVideoBase(VideoBasePacket.Decode(ms)); break; case ParamCode.DownloadProgress: //接收推送的下载进度。 onTimePeriodsDownloaded(VideoTimePeriodsPacket.Decode(ms).TimePeriods); break; case ParamCode.VideoPacket: //接收视频包数据流 onVideoStreams(VideoStreamsPacket.Decode(ms)); break; case ParamCode.LocalDownloadPath: onDownloadPathReceived(PacketBase.ReadString(ms)); break; case ParamCode.Message: onVideoMessageFeedback(MessagePacket.Decode(ms)); break; } } } }
private void run() { try { //时间段分布 while (!_disposeEvent.WaitOne(1)) { VideoTimePeriodsPacket valid = _download.GetVideoTimePeriods(); if (valid != null) { send(ParamCode.TimePeriods, VideoTimePeriodsPacket.Encode(valid)); break; } } //视频包头 while (!_disposeEvent.WaitOne(1)) { VideoBasePacket vbp = _download.GetVideoBasePacket(); if (vbp != null) { send(ParamCode.VideoBaseInfo, VideoBasePacket.Encode(vbp)); break; } } //实时下载进度 while (!_disposeEvent.WaitOne(1)) { Thread.Sleep(1000); bool canStopFeedback = canStopFeedbackProcess(); VideoTimePeriodsPacket down = _download.GetCompletedTimePeriods(); if (down != null) { send(ParamCode.DownloadProgress, VideoTimePeriodsPacket.Encode(down)); } if (canStopFeedback) { Console.WriteLine("Stop Feedback RealTime Process! "); if (_download is OnlineDownloadManager) { var downStatus = (_download as OnlineDownloadManager).DownloadStatus; if (downStatus != DownloadStatus.Completed) { var name = _download.GetVideoTimePeriods().VideoName; string status = DownloadStatusManager.ToHanZi(downStatus); string message = name + status + "!"; if (downStatus == DownloadStatus.Error) { message += "\n" + (_download as OnlineDownloadManager).ErrorInfo; } if (downStatus != DownloadStatus.Deleted) { sendMessage(MessageType.Warn, message, "停止更新下载进度!"); } } } break; } } } catch (Exception ex) { Exception e = ex.InnerException == null? ex : ex.InnerException; sendMessage(MessageType.Error, e.Message, "停止更新下载进度!"); Console.WriteLine(ex); } }
private void onVideoBase(VideoBasePacket obj) { BaseInfo = obj; startDownload(); }
public static void AssertAreEqual(VideoBasePacket exp, VideoBasePacket act) { Assert.AreEqual(exp.Header.Length, act.Header.Length); Assert.AreEqual(exp.Time, act.Time); Assert.AreEqual(exp.Length, act.Length); }