【问题标题】:Silverlight MediaElement refusing to play audioSilverlight MediaElement 拒绝播放音频
【发布时间】:2010-12-15 05:03:09
【问题描述】:

我很难解决这个问题。我有一个 Silverlight 4 应用程序,可以从 URL 加载音频和视频文件。 URL 与托管应用程序的域相同,并且非常适合视频。

URL 实际上是 asp.net mvc 控制器,负责从服务器上的共享位置读取文件并返回文件流。 URL 如下所示:

http://localhost:31479/CourseMedia?path=\omnisandbox1\ILMSShare2\Demo-Fire+Behavior\media\Disclaim.wma&encrypted=False&id=00000000-0000-0000-0000-000000000000

如果我将 URL 直接放入浏览器中,文件加载并在 windows 媒体播放器中播放就好了,如果我使用单独的测试 silverlight 项目来加载 url 它也可以工作,但对于我来说,我不能让它在我的主要项目中正常工作。

这是我用来实际进行源设置的例程:

protected void SetPlayerURL(MediaElement player, string url)
{
        if (player != null && url.Length > 0)
        {
            player.ClearValue(MediaElement.SourceProperty);
            player.Source = new Uri(this.Packet.GetMediaUrl(url, false, Guid.Empty));                
        }
}

GetMediaURL 函数只是构建上面看到的 URL 格式:

public string GetMediaUrl(
        string path, 
        bool encrypted, 
        Guid key)
    {
        StringBuilder builder = new StringBuilder();

        builder.AppendFormat("http://{0}/CourseMedia?path={1}&encrypted={2}&id={3}",
             this.Host,
             System.Windows.Browser.HttpUtility.UrlEncode(path),
             encrypted,
             key);

        return builder.ToString();
    }

当媒体是音频时,永远不会向控制器发出请求。对我来说似乎很奇怪,因为这个确切的代码适用于视频。 MediaElement 状态永远不会离开“已关闭”,并且不会触发 CurrentStateChanged、MediaOpened 和 MediaFailed 事件。

我不知所措!

【问题讨论】:

  • 你检查 this.Host 和 path 是否有效?

标签: asp.net silverlight asp.net-mvc-2 silverlight-4.0


【解决方案1】:

尝试将 MediaElement 的 ScrubbingEnabled 设置为 false,Framework 版本 3.5 和音频存在一些问题,解决方法是将其设置为 false。可能值得一试。

还可以尝试捕获 BufferingStarted、BufferingEnded、MediaEnded 以及您的 MediaFailed 和 MediaOpened 事件。我很好奇这是否是一个缓冲问题。

【讨论】:

  • 我们终于想通了。我们必须将 Response.BufferingEnabled 设置为 false,然后媒体开始正常播放。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多