Silverlight 4 MediaElement播放声音

Silverlight 4 MediaElement播放声音,silverlight,silverlight-4.0,mediaelement,Silverlight,Silverlight 4.0,Mediaelement,我将本地声音文件转换为资源,该资源在我的XAML中构建: <UserControl.Resources> <my:Uri x:Key="SoundFiles">file:///c:/Audio/HebrewDemo/Shalom.wav</my:Uri> </UserControl.Resources> FireFox浏览器中的状态栏指示从网站传输的某些数据。然而,我从来没有听到任何声音。这可能只是一个编码问题吗?如果它没有正确编码,我会

我将本地声音文件转换为资源,该资源在我的XAML中构建:

<UserControl.Resources>
    <my:Uri x:Key="SoundFiles">file:///c:/Audio/HebrewDemo/Shalom.wav</my:Uri>
</UserControl.Resources>
FireFox浏览器中的状态栏指示从网站传输的某些数据。然而,我从来没有听到任何声音。这可能只是一个编码问题吗?如果它没有正确编码,我会得到一个错误吗


另外,我是否可以将Uri语句放入加载中或使其在后台运行,以便用户可以在下载声音文件的同时读取屏幕?换句话说,当他点击按钮听到声音文件时,理想情况下,它已经为他预加载了。在这个语言学习应用程序中,用户将看到一个外语单词,并尝试自己发音,然后他将单击“播放”按钮听到声音以检查结果

由于Silverlights的“sanboxed”安全模型,第一个指向本地文件的代码在普通Silverlight应用程序中无法工作。在浏览器中运行普通Silverlight应用程序时,无法像运行已安装的winforms/WPF应用程序那样访问本地资源。如果您想了解有关使用Silverlight访问本地文件的更多信息,请查看本视频教程

关于第二段代码,它应该可以工作,所以很可能是编码问题,不,不幸的是,这样的事情通常不会出现任何错误

我创建了一个示例应用程序,并将其指向您的mp3文件,但它“不起作用,但是快速搜索示例mp3,会让我找到另一个免费提供的(第一次点击)。使用下面的代码/url,它可以正常工作

myMediaelement.Source = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute);
关于加载,它将在点击设置mediaelement源代码时开始下载文件。因此,如果在构造函数或加载的事件中设置媒体元素的源,它将在后台自动开始下载。然后调用myMediaelement.Play();在按钮上单击事件

如果您发现使用Firefox有点受限,那么在确定外部文件或Web服务加载的内容和时间时。有一个很棒的免费工具Fiddler(),它可以让你很容易地监控这些东西


祝你好运:)

谢谢,我在这里开始了一个帖子,并进行了很多讨论。我添加了MediaFailed事件,并使用Expression编码器对文件进行编码(甚至不知道有Expression编码器)。遗憾的是,我害怕对3000个mp3文件进行编码。很高兴听到您对其进行了排序,关于编码您的文件,使用编码器SDK和Powershell,您可以相当轻松地自动化该过程:)看看这个,也许可以搜索“Expression encoder automation”或类似的内容
myMediaelement.Source = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute);