private void btStart_Click(object sender, RoutedEventArgs e) { if ((string)btStart.Content == "Stop") { VideoCapture1.Stop(); Thread.Sleep(500); ProcessVideoDelegateMethod(); btStart.Content = "Start"; lbStatus.Content = string.Empty; if (_tempBuffer != IntPtr.Zero) { Marshal.FreeCoTaskMem(_tempBuffer); _tempBuffer = IntPtr.Zero; } } else { btStart.IsEnabled = false; lbStatus.Content = "Step 1: Searching video files"; _fragmentCount = 0; _overlapFragmentCount = 0; var engine = VFMediaPlayerSource.File_VLC; switch (cbEngine.SelectedIndex) { case 0: engine = VFMediaPlayerSource.File_DS; break; case 1: engine = VFMediaPlayerSource.File_FFMPEG; break; case 2: engine = VFMediaPlayerSource.File_VLC; break; case 3: engine = VFMediaPlayerSource.LAV; break; } var adList = new List <string>(); _adVFPList = new List <VFPFingerPrint>(); foreach (string item in lbAdFolders.Items) { adList.AddRange(FileScanner.SearchVideoInFolder(item)); } lbStatus.Content = "Step 2: Getting fingerprints for ads files"; if (adList.Count == 0) { btStart.Content = "Start"; lbStatus.Content = string.Empty; MessageBox.Show("Ads list is empty!"); return; } int progress = 0; foreach (string filename in adList) { pbProgress.Value = progress; string error = ""; VFPFingerPrint fp; if (File.Exists(filename + ".vfsigx")) { fp = VFPFingerPrint.Load(filename + ".vfsigx"); } else { var source = new VFPFingerprintSource(filename, engine); foreach (var area in _ignoredAreas) { source.IgnoredAreas.Add(area); } fp = VFPAnalyzer.GetSearchFingerprintForVideoFile(source, out error); } if (fp == null) { MessageBox.Show("Unable to get fingerpring for video file: " + filename + ". Error: " + error); } else { fp.Save(filename + ".vfsigx", false); _adVFPList.Add(fp); } progress += 100 / adList.Count; } int fragmentDurationProperty = Convert.ToInt32(edFragmentDuration.Text); if (fragmentDurationProperty != 0) { _fragmentDuration = fragmentDurationProperty * 1000; } else { var maxDuration = _adVFPList.Max((print => print.Duration)); long minfragmentDuration = (((maxDuration + 1000) / 1000) + 1) * 1000; _fragmentDuration = minfragmentDuration * 2; } pbProgress.Value = 100; if (_tempBuffer != IntPtr.Zero) { Marshal.FreeCoTaskMem(_tempBuffer); _tempBuffer = IntPtr.Zero; } lbStatus.Content = "Step 3: Starting video preview"; if (cbSource.SelectedIndex == 0) { VideoCapture1.Video_CaptureDevice = cbVideoSource.Text; VideoCapture1.Video_CaptureFormat = cbVideoFormat.Text; VideoCapture1.Video_CaptureFormat_UseBest = false; VideoCapture1.Video_FrameRate = Convert.ToDouble(cbVideoFrameRate.Text); VideoCapture1.Mode = VFVideoCaptureMode.VideoPreview; } else { var ip = new IPCameraSourceSettings { URL = edNetworkSourceURL.Text, Login = edNetworkSourceLogin.Text, Password = edNetworkSourcePassword.Text }; switch (cbNetworkSourceEngine.SelectedIndex) { case 0: ip.Type = VFIPSource.Auto_LAV; break; case 1: ip.Type = VFIPSource.Auto_VLC; break; case 2: ip.Type = VFIPSource.Auto_FFMPEG; break; } VideoCapture1.IP_Camera_Source = ip; VideoCapture1.Mode = VFVideoCaptureMode.IPPreview; } VideoCapture1.Audio_PlayAudio = false; VideoCapture1.Audio_RecordAudio = false; VideoCapture1.Video_Renderer.Video_Renderer = VFVideoRendererWPF.WPF; VideoCapture1.Start(); lbStatus.Content = "Step 4: Getting data"; pbProgress.Value = 0; lvResults.Items.Refresh(); btStart.IsEnabled = true; btStart.Content = "Stop"; } }
private void btStart_Click(object sender, RoutedEventArgs e) { if (cbDebug.IsChecked == true) { VFPAnalyzer.DebugDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\VisioForge\\MMT\\"; } btStart.IsEnabled = false; results.Clear(); lvResults.Items.Refresh(); lbStatus.Content = "Step 1: Searching video files"; VFMediaPlayerSource engine = VFMediaPlayerSource.File_VLC; switch (cbEngine.SelectedIndex) { case 0: engine = VFMediaPlayerSource.File_DS; break; case 1: engine = VFMediaPlayerSource.File_FFMPEG; break; case 2: engine = VFMediaPlayerSource.File_VLC; break; case 3: engine = VFMediaPlayerSource.LAV; break; } List <string> adList = new List <string>(); List <string> broadcastList = new List <string>(); List <VFPFingerPrint> adVFPList = new List <VFPFingerPrint>(); List <VFPFingerPrint> broadcastVFPList = new List <VFPFingerPrint>(); foreach (string item in lbAdFolders.Items) { bool isDir = (File.GetAttributes(item) & FileAttributes.Directory) == FileAttributes.Directory; if (isDir) { adList.AddRange(FileScanner.SearchVideoInFolder(item)); } else { adList.Add(item); } } foreach (string item in lbBroadcastFolders.Items) { bool isDir = (File.GetAttributes(item) & FileAttributes.Directory) == FileAttributes.Directory; if (isDir) { broadcastList.AddRange(FileScanner.SearchVideoInFolder(item)); } else { broadcastList.Add(item); } } lbStatus.Content = "Step 2: Getting fingerprints for ads files"; int progress = 0; foreach (string filename in adList) { pbProgress.Value = progress; string error; var source = new VFPFingerprintSource(filename, engine); foreach (var area in _ignoredAreas) { source.IgnoredAreas.Add(area); } var fp = VFPAnalyzer.GetSearchFingerprintForVideoFile(source, out error); if (fp == null) { MessageBox.Show("Unable to get fingerpring for video file: " + filename + ". Error: " + error); } else { adVFPList.Add(fp); } progress += 100 / adList.Count; } pbProgress.Value = 100; lbStatus.Content = "Step 3: Getting fingerprints for broadcast files"; progress = 0; foreach (string filename in broadcastList) { pbProgress.Value = progress; string error; var source = new VFPFingerprintSource(filename, engine); foreach (var area in _ignoredAreas) { source.IgnoredAreas.Add(area); } // source.CustomResolution = new System.Drawing.Size(640, 480); //source.StopTime = 150000; var fp = VFPAnalyzer.GetSearchFingerprintForVideoFile(source, out error); //var fp = VFPAnalyzer.GetSearchFingerprintForVideoFile(filename, engine, 180000, 220000, out error); if (fp == null) { MessageBox.Show("Unable to get fingerpring for video file: " + filename + ". Error: " + error); } else { broadcastVFPList.Add(fp); } progress += 100 / broadcastList.Count; } pbProgress.Value = 100; lbStatus.Content = "Step 4: Analyzing data"; progress = 0; int foundCount = 0; foreach (var broadcast in broadcastVFPList) { pbProgress.Value = progress; foreach (var ad in adVFPList) { List <int> positions; bool found = VFPAnalyzer.Search(ad, broadcast, ad.Duration, (int)slDifference.Value, out positions, true); if (found) { foreach (int pos in positions) { foundCount++; int minutes = pos / 60; int seconds = pos % 60; results.Add( new ResultsViewModel() { Sample = ad.OriginalFilename, DumpFile = broadcast.OriginalFilename, Position = minutes + ":" + seconds }); } } } progress += 100 / broadcastList.Count; } pbProgress.Value = 0; lvResults.Items.Refresh(); lbStatus.Content = "Step 5: Done. " + foundCount + " ads found."; btStart.IsEnabled = true; }
private async void btStart_Click(object sender, RoutedEventArgs e) { if (cbDebug.IsChecked == true) { VFPAnalyzer.DebugDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\VisioForge\\MMT\\"; } btStart.IsEnabled = false; results.Clear(); lvResults.Items.Refresh(); lbStatus.Content = "Step 1: Searching video files"; VFSimplePlayerEngine engine = VFSimplePlayerEngine.LAV; switch (cbEngine.SelectedIndex) { case 0: engine = VFSimplePlayerEngine.DirectShow; break; case 1: engine = VFSimplePlayerEngine.FFMPEG; break; case 2: engine = VFSimplePlayerEngine.LAV; break; } List <string> adList = new List <string>(); List <string> broadcastList = new List <string>(); List <VFPFingerPrint> adVFPList = new List <VFPFingerPrint>(); List <VFPFingerPrint> broadcastVFPList = new List <VFPFingerPrint>(); foreach (string item in lbAdFolders.Items) { bool isDir = (File.GetAttributes(item) & FileAttributes.Directory) == FileAttributes.Directory; if (isDir) { adList.AddRange(FileScanner.SearchVideoInFolder(item)); } else { adList.Add(item); } } foreach (string item in lbBroadcastFolders.Items) { bool isDir = (File.GetAttributes(item) & FileAttributes.Directory) == FileAttributes.Directory; if (isDir) { broadcastList.AddRange(FileScanner.SearchVideoInFolder(item)); } else { broadcastList.Add(item); } } lbStatus.Content = "Step 2: Getting fingerprints for ads files"; int progress = 0; foreach (string filename in adList) { pbProgress.Value = progress; var source = new VFPFingerprintSource(filename, engine); foreach (var area in _ignoredAreas) { source.IgnoredAreas.Add(area); } VFPFingerPrint fp = _db.GetFingerprint(source); if (fp == null) { fp = await VFPAnalyzer.GetSearchFingerprintForVideoFileAsync(source, errorDelegate); if (fp == null) { MessageBox.Show("Unable to get fingerprint for the video file: " + filename); } else { _db.Items.Add(fp); AddDBItem(fp); } } adVFPList.Add(fp); progress += 100 / adList.Count; } pbProgress.Value = 100; lbStatus.Content = "Step 3: Getting fingerprints for broadcast files"; progress = 0; foreach (string filename in broadcastList) { pbProgress.Value = progress; var source = new VFPFingerprintSource(filename, engine); foreach (var area in _ignoredAreas) { source.IgnoredAreas.Add(area); } VFPFingerPrint fp = _db.GetFingerprint(source); if (fp == null) { fp = await VFPAnalyzer.GetSearchFingerprintForVideoFileAsync(source, errorDelegate); if (fp == null) { MessageBox.Show("Unable to get fingerprint for the video file: " + filename); return; } else { _db.Items.Add(fp); AddDBItem(fp); } } broadcastVFPList.Add(fp); progress += 100 / broadcastList.Count; } pbProgress.Value = 100; lbStatus.Content = "Step 4: Analyzing data"; progress = 0; int foundCount = 0; foreach (var broadcast in broadcastVFPList) { pbProgress.Value = progress; foreach (var ad in adVFPList) { var positions = await VFPAnalyzer.SearchAsync(ad, broadcast, ad.Duration, (int)slDifference.Value, true); if (positions.Count > 0) { foreach (var pos in positions) { foundCount++; int minutes = (int)(pos.TotalSeconds / 60); int seconds = (int)(pos.TotalSeconds % 60); results.Add( new ResultsViewModel() { Sample = ad.OriginalFilename, DumpFile = broadcast.OriginalFilename, Position = minutes + ":" + seconds }); } } } progress += 100 / broadcastList.Count; } pbProgress.Value = 0; lvResults.Items.Refresh(); lbStatus.Content = "Step 5: Done. " + foundCount + " ads found."; btStart.IsEnabled = true; }
private void btStart_Click(object sender, RoutedEventArgs e) { if ((string)btStart.Content == "Stop") { VideoCapture1.Stop(); btStart.Content = "Start"; lbStatus.Content = string.Empty; } else { btStart.IsEnabled = false; lbStatus.Content = "Step 1: Searching video files"; fragmentDuration = Convert.ToInt32(edFragmentDuration.Text) * 60 * 1000; VFMediaPlayerSource engine = VFMediaPlayerSource.File_VLC; switch (cbEngine.SelectedIndex) { case 0: engine = VFMediaPlayerSource.File_DS; break; case 1: engine = VFMediaPlayerSource.File_FFMPEG; break; case 2: engine = VFMediaPlayerSource.File_VLC; break; case 3: engine = VFMediaPlayerSource.LAV; break; } List <string> adList = new List <string>(); adVFPList = new List <VFPFingerPrint>(); foreach (string item in lbAdFolders.Items) { adList.AddRange(FileScanner.SearchVideoInFolder(item)); } lbStatus.Content = "Step 2: Getting fingerprints for ads files"; int progress = 0; foreach (string filename in adList) { pbProgress.Value = progress; string error; var source = new VFPFingerprintSource(filename, engine); var fp = VFPAnalyzer.GetSearchFingerprintForVideoFile(source, out error); if (fp == null) { MessageBox.Show("Unable to get fingerpring for video file: " + filename + ". Error: " + error); } else { adVFPList.Add(fp); } progress += 100 / adList.Count; } pbProgress.Value = 100; searchLiveData = new VFPSearchData(Convert.ToInt32(edFragmentDuration.Text) * 60); if (tempBuffer != IntPtr.Zero) { Marshal.FreeCoTaskMem(tempBuffer); tempBuffer = IntPtr.Zero; } lbStatus.Content = "Step 3: Starting video preview"; VideoCapture1.Video_CaptureDevice = cbVideoSource.Text; VideoCapture1.Video_CaptureFormat = cbVideoFormat.Text; VideoCapture1.Video_CaptureFormat_UseBest = false; VideoCapture1.Video_FrameRate = Convert.ToDouble(cbVideoFrameRate.Text); VideoCapture1.Audio_PlayAudio = false; VideoCapture1.Audio_RecordAudio = false; VideoCapture1.Mode = VFVideoCaptureMode.VideoPreview; VideoCapture1.Video_Renderer.Video_Renderer = VFVideoRendererWPF.WPF; VideoCapture1.Start(); lbStatus.Content = "Step 4: Getting data"; pbProgress.Value = 0; lvResults.Items.Refresh(); btStart.IsEnabled = true; btStart.Content = "Stop"; } }