gpt4 book ai didi

Uwp 应用程序如何制作搜索栏以搜索媒体播放器元素

转载 作者:行者123 更新时间:2023-12-02 02:58:34 24 4
gpt4 key购买 nike

我正在尝试为我的具有音频源的 mediaplayerelement 创建一个搜索栏。我试图将 slider 的最大值设置为音频源的总秒数,但它设置为零。但是如果我在一段时间后做同样的事情, slider 的最大值就会变成音频的总时间这是我的代码,用于将 slider 的最大值设置为音频文件的持续时间

if(file != null) 
{
var MusicFile = MediaSource.CreateFromStorageFile(file);
Mp3Player.Source = MusicFile;
Mp3Player.MediaPlayer.Play();
MusicSlider.MaximumMp3Player.MediaPlayer.PlaybackSession.NaturalDuration.TotalSeconds;
PlayPauseIm.Source = new BitmapImage(new Uri("ms-appx:///Assets/Pause_Button.png"));
}

(很抱歉文本中的不对齐我无法让它看起来正确)我认为如果我创建一个在 MediaPlayerElement 开始播放时运行的事件,它会正常工作,但我不知道如何实现它。

最佳答案

I tried to set my slider's max value to the total second of the audio source but it sets the zero.

其实你的做法是可以的。但是,PlaybackSession.NaturalDuration.TotalSeconds 的值不是即时分配的。根据官方文档:

The natural duration of the media. The default value is a Duration structure that evaluates as Automatic, which is the value held if you query this property before MediaOpened.

根据您的要求,您可以在媒体打开后获取 PlaybackSession.NaturalDuration.TotalSeconds 的值,以确保它是有值(value)的。

Mp3Player.MediaPlayer.MediaOpened += MediaPlayer_MediaOpened;

private async void MediaPlayer_MediaOpened(Windows.Media.Playback.MediaPlayer sender, object args)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
MusicSlider.Maximum = Mp3Player.MediaPlayer.PlaybackSession.NaturalDuration.TotalSeconds;
});
}

另一种获取音乐持续时间的方法是直接读取文件的MusicProperties

MusicProperties properties = await file.Properties.GetMusicPropertiesAsync();
TimeSpan myTrackDuration = properties.Duration;
MusicSlider.Maximum = myTrackDuration.TotalSeconds;

两者都可以,您可以根据自己的设计选择其中之一。

关于Uwp 应用程序如何制作搜索栏以搜索媒体播放器元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47874649/

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