如何在WPF中向后播放video?

我希望在WPF中顺利播放video。 我正在使用MediaElement播放video。 我读过这篇文章建议定期更改MediaElement.Position以模仿倒带行为。

我尝试使用代码来更改MediaElement.Position位置

 private void Button_Click(object sender, RoutedEventArgs e) { mePlayer.Pause(); //Pause the media player first double m = 1 / frameRate; //Calculate the time for each frame double t = 120; //Total length of video in seconds mePlayer.Position = TimeSpan.FromMinutes(2); //Start video from 2 min while (t >= 60) //Check if time exceeds 1 min { t = t - m; //Subtract the single frame time from total seconds mePlayer.Position = TimeSpan.FromSeconds(t);//set position of video } } 

在上面的代码中,我试图从2分钟到1分钟向后播放video。 它在mePlayer.Position = TimeSpan.FromSeconds(t)上给我’System.OverflowException’。

如果有人知道如何在WPF中向后播放video,请帮助我实现此效果。 谢谢。

为了顺利完成,你应该使用一个Timer 。 假设帧速率是24 fps,则意味着每1/24 = 0.0416秒或大约42毫秒是一帧。 因此,如果您的计时器每42ms计时一次,您可以向后移动mePlayer.Position

XAML:

  

码:

  System.Windows.Threading.DispatcherTimer dispatcherTimer; int t = 240000; // 4 minutes = 240,000 milliseconds public MainWindow() { InitializeComponent(); dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); //tick every 42 millisecond = tick 24 times in one second dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 42); } private void dispatcherTimer_Tick(object sender, EventArgs e) { // Go back 1 frame every 42 milliseconds (or 24 fps) t = t - 42; mePlayer.Position = TimeSpan.FromMilliseconds(t); } private void Window_Loaded(object sender, RoutedEventArgs e) { mePlayer.Play(); } private void Button_Click(object sender, RoutedEventArgs e) { // Pause and go to 4th minute of the video then start playing backward mePlayer.Pause(); mePlayer.Position = TimeSpan.FromMinutes(4); dispatcherTimer.Start(); }