【问题标题】:Change Source in MediaElement (SILVERLIGHT)更改 MediaElement 中的源 (SILVERLIGHT)
【发布时间】:2010-02-12 01:07:10
【问题描述】:

我想将 MediaElent 上的歌曲从 track1.mp3 更改为 track2.mp3。这是代码:

MyMediaElement.Stop();
Uri u = new Uri("track2.mp3", UriKind.Relative);
MyMediaElement.Source=u;
MyMediaElement.Play();

MediaElement 更改了源,但无法启动。这段代码可能有什么问题?

【问题讨论】:

    标签: silverlight playback mediaelement


    【解决方案1】:

    尝试将 MyMediaElement.AutoPlay 设置为 true,只要源更改它就应该播放。您还可以使用 MediaElement.SetSource() 方法进行调查,该方法采用流而不是 uri。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。我可以在 XAML 中设置自动播放和源代码,它会起作用,但如果我在代码中更改源代码,它将什么都不做。
      我捕获了控件的 MediaOpened 事件。
      问题是它在您更改源后立即点击 Play(),因此当前状态是关闭的。改变状态需要几个时钟周期。所以,如果你把 Play();在该事件处理程序中它将起作用。

      【讨论】:

        【解决方案3】:

        你似乎没有做错什么。以下是我会尝试的几种诊断方法:-

        将 track2 指定为初始文件可以吗?

        附加到 MediaFailed 事件,它会被触发吗?

        将 TextBlock 绑定到 CurrentState 属性以观察 CurrentState 的变化情况。

        【讨论】:

        • 感谢您的回复! MediaFailed 事件不会被触发。我检查了 CurrentState 属性,当我尝试更改曲目时,它只显示“已关闭”。关闭?这意味着什么?来源是正确的。
        • @krika02:表示 MediaElement 认为它当前不包含任何媒体。这有点奇怪,因为您已经明确设置了它。如果您最初指定 track2,它实际上可以播放吗?
        【解决方案4】:

        您将AutoPlay 设置为false,然后在MediaOpened 处理程序中执行Play()。人们在这里暗示了解决方案,但不是很准确。您还可以处理 MediaFailed 事件,以防媒体因某种原因无法打开(找不到文件等)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-15
          • 2012-08-27
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多