gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:28:21 24 4
gpt4 key购买 nike

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

我已经实现了一个歌曲 slider (来自 Sacha Barber's application )并且当用户手动拖动搜索器时它可以工作(例如,歌曲从那个位置继续)但是我不知道如何让搜索器根据歌曲中的当前位置。

问题是我认为没有办法检查 MediaPlayerPosition 属性何时发生变化,所以我不知道应该怎么做实现此功能。

关于如何解决此类问题的任何想法?

[更新]

关于使用计时器增加导引头,我实际上想到了使用我还没有尝试的原因是因为我认为有更好的方法可以使用 MediaTimeline 来实现它。 .但我还没有弄清楚如何。

最佳答案

出现答案!并侍奉你的主人

好的,我已经知道如何处理这个了。我确定我没有以完全正确的方式进行操作,但它确实有效。

这是一个 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();
}
}

诀窍是,一旦你设置了 MediaPlayer 的时钟,它就变成了时钟控制,因此使用 MPlayer.Clock.Controller 来完成所有的控制:)

关于c# - WPF:实现 MediaPlayer 音频/视频搜索器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com