0

我正在使用 MediaPlayer 类在 c# 中编写自定义音频播放器。我已经实现了一个滚动条,这样用户就可以通过一个轨道来寻找,这就是我遇到问题的地方。

当用户选择音轨(从 xml 播放列表加载)时,应用程序会计算音轨的长度(以秒为单位)并将其设置为滚动条的最大值。除了NaturalDuration.TimeSpan属性有时返回 0 而不是数量之外,这一切都很好。我通过添加一个循环来证明这一点,该循环在NaturalDuration.HasTimeSpan为真时退出,然后返回 NaturalDuration.TimeSpan 值。

我的问题是,当NaturalDuration.HasTimeSpan更改为 true时,我怎样才能获得NaturalDuration.TimeSpan ?

4

1 回答 1

2

正确的方法是处理MediaPlayer.MediaOpened事件:

mediaPlayer = new MediaPlayer();
mediaPlayer.MediaOpened += MediaPlayer_MediaOpened;
mediaPlayer.Open(new Uri(mediaFilePath, UriKind.Absolute));

...

private void MediaPlayer_MediaOpened(object sender, EventArgs e)
{
    if (mediaPlayer.NaturalDuration.HasTimeSpan)
    {
        SliderMaximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
        mediaPlayer.Play();
    }
}
于 2013-09-11T08:59:49.073 回答