//Метод CleanUp (Зачистка графов) public void CleanUp() { if (mediaControl != null) mediaControl.Stop(); CurrentStatus = mStatus.Stop; if (videoWindow != null) { videoWindow.put_Visible(0); videoWindow.put_Owner(new IntPtr(0)); } if (mediaControl != null) mediaControl = null; if (mediaPosition != null) mediaPosition = null; if (mediaEventEx != null) mediaEventEx = null; if (mediaEvent != null) mediaEvent = null; if (videoWindow != null) videoWindow = null; if (basicAudio != null) basicAudio = null; if (graphBuilder != null) graphBuilder = null; }
//Мотод для загрузки видео файла. public void FileLoad(string sfile, Panel vPanel) { CleanUp(); graphBuilder = (IGraphBuilder) new FilterGraph(); mediaControl = graphBuilder as IMediaControl; mediaPosition = graphBuilder as IMediaPosition; videoWindow = graphBuilder as IVideoWindow; basicAudio = graphBuilder as IBasicAudio; ddColor.lBrightness = 0; ddColor.lContrast = 0; ddColor.lGamma = 0; ddColor.lSaturation = 0; graphBuilder.RenderFile(sfile, null); videoWindow.put_Owner(vPanel.Handle); videoWindow.put_WindowStyle(WindowStyle.Child | WindowStyle.ClipSiblings | WindowStyle.ClipChildren); videoWindow.SetWindowPosition(vPanel.ClientRectangle.Left, vPanel.ClientRectangle.Top, vPanel.ClientRectangle.Width, vPanel.ClientRectangle.Height); mediaControl.Run(); CurrentStatus = mStatus.Play; mediaPosition.get_Duration(out mediaTimeSeconds); allSeconds = (int)mediaTimeSeconds; }
//Метод расчета и отображения времени видео public void TimeManager(ToolStripLabel tsLabel, ToolStripLabel tsLabel1, Timer timer) { double timeLeft; mediaPosition.get_CurrentPosition(out timeLeft); if (timeLeft == mediaTimeSeconds) { CurrentStatus = mStatus.Stop; timer.Stop(); } if (CurrentStatus == mStatus.Stop) { allSeconds = (int) mediaTimeSeconds; timer.Stop(); } int hour = allSeconds / 3600; int minute = (allSeconds - (hour * 3600)) / 60; int seconds = allSeconds - (hour*3600 + minute*60); tsLabel.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, seconds); int hour1 = (int)timeLeft / 3600; int minute1 = ((int)timeLeft - (hour1 * 3600)) / 60; int seconds1 = (int)timeLeft - (hour1 * 3600 + minute1 * 60); tsLabel1.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", hour1, minute1, seconds1); if (mediaScroled == true) { allSeconds = (int)mediaTimeSeconds - (int)timeLeft; } else { allSeconds -= 1; } mediaScroled = false; }
public void MediaStop() { CurrentStatus = mStatus.Stop; mediaControl.Stop(); mediaPosition.put_CurrentPosition(0); }
//Методы управления видео (Play, Pause, Stop) public void MediaPlay() { mediaControl.Run(); CurrentStatus = mStatus.Play; }
public void MediaPause() { mediaControl.Pause(); CurrentStatus = mStatus.Pause; }