代码之家  ›  专栏  ›  技术社区  ›  Andreas Grech

WPF:实现MediaPlayer音频/视频搜索器

  •  4
  • Andreas Grech  · 技术社区  · 16 年前

    我目前正在使用WPF开发MP3播放器(在WPF应用程序中) MediaPlayer 基本上,我想实现一个随当前播放歌曲一起移动的歌曲搜索器。

    我已经实现了一个歌曲滑块(来自 Sacha Barber's application )当用户手动拖动搜索器时(如,歌曲从该位置继续),它就起作用了,但我不知道如何让搜索器根据歌曲中的当前位置移动。

    问题是,我认为没有办法检查什么时候 Position 媒体播放器 已经发生了变化,所以我很困惑应该如何实现这个功能。

    MediaTimeline …但我还没弄清楚怎么做。

    4 回复  |  直到 16 年前
        1
  •  4
  •   Alastair Pitts    15 年前

    ARISE回答!侍奉你的主人

    这是WPF应用程序的代码,带有暂停/播放按钮。

    public partial class Main : Window
    {
        MediaPlayer MPlayer;
        MediaTimeline MTimeline;
    
        public Main()
        {
            InitializeComponent();
    
            var uri = new Uri("C:\\Test.mp3");
            MPlayer = new MediaPlayer();
            MTimeline = new MediaTimeline(uri);
            MTimeline.CurrentTimeInvalidated += new EventHandler(MTimeline_CurrentTimeInvalidated);
            MPlayer.Clock = MTimeline.CreateClock(true) as MediaClock;
            MPlayer.Clock.Controller.Stop();
        }
    
        void MTimeline_CurrentTimeInvalidated(object sender, EventArgs e)
        {
            Console.WriteLine(MPlayer.Clock.CurrentTime.Value.TotalSeconds);
        }
    
        private void btnPlayPause_Click(object sender, RoutedEventArgs e)
        {
            //Is Active
            if (MPlayer.Clock.CurrentState == ClockState.Active)
            {
                //Is Paused
                if (MPlayer.Clock.CurrentGlobalSpeed == 0.0)
                    MPlayer.Clock.Controller.Resume();
                else //Is Playing
                    MPlayer.Clock.Controller.Pause();
            }
            else if (MPlayer.Clock.CurrentState == ClockState.Stopped) //Is Stopped
                MPlayer.Clock.Controller.Begin();
        }
    }
    

        2
  •  0
  •   Crippeoblade    16 年前

    暂停歌曲等时,你必须停止计时器。。。

        4
  •  0
  •   Will    16 年前
    推荐文章