public void TestVideoPackageRecorder() { FolderManager.DeleteDirectoryInfo(path); TimePeriodPacket[] tisAll = new TimePeriodPacket[] { new TimePeriodPacket(begin, end) }; TimePeriodPacket[] tisCompleted = null; using (VideoPackageRecorder recorder = new VideoPackageRecorder(path, TimeSpan.FromMinutes(1), tisAll, tisCompleted)) { recorder.ProbeTime = end; check(recorder, false, false, 0, 0); recorder.SetVideoBaseInfo(new VideoBasePacket(new byte[5], begin, 10000)); check(recorder, true, false, 0, 0); recorder.Set(null); for (int i = 0; i < 23; i++) { recorder.Set(getVideoStreamsPacket(begin.AddSeconds(5 * i))); check(recorder, true, false, 5 * (i + 1), 1); } recorder.Set(getVideoStreamsPacket(begin.AddSeconds(5 * 23))); check(recorder, true, true, 120, 1); recorder.Set(getVideoStreamsPacket(begin.AddSeconds(120))); check(recorder, true, true, 120, 1); recorder.Stop(); recorder.Set(getVideoStreamsPacket(begin.AddSeconds(120))); check(recorder, true, true, 120, 1); } FolderManager.DeleteDirectoryInfo(path); }
private void check(VideoPackageRecorder recorder, bool isInitedVideoBase, bool isDownloaded, int seconds, int length) { Assert.AreEqual(isInitedVideoBase, recorder.IsInitedVideoBase); Assert.AreEqual(isDownloaded, recorder.IsDownloaded); Assert.AreEqual(seconds * 100.0 / 120, recorder.Percent); TimePeriodPacket[] tpps = recorder.GetDownloadedTimePeriods(); Assert.AreEqual(length, tpps.Length); if (length > 0) { Assert.AreEqual(begin, tpps[0].BeginTime); Assert.AreEqual(begin.AddSeconds(seconds), tpps[0].EndTime); } if (seconds > 0) { Assert.IsNotNull(FolderManager.GetVideoStreamsPacket(path, begin.AddSeconds(seconds - 1))); } if (seconds < 120) { Assert.AreEqual(begin.AddSeconds(seconds), recorder.ProbeTime); } }