2010-12-02 123 views
2

是否有人有工作(测试)的代码示例来播放独立存储中的音频文件。该代码我现在有,不抛出异常或发出任何声音,就是:使用Silverlight播放用户歌曲

 MediaElement ME = new MediaElement(); 
     ME.AutoPlay = false; 
     IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
     ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open)); 
     ME.Play(); 

我已经使用多种不同音频格式,使用表达编码尝试这样做,但我总是有相同问题。

此外,我非常喜欢使用文件浏览器从文件流加载歌曲的示例,但这不太重要,隔离存储示例可以轻松转换。

我检查过了,如果我将该文件嵌入到应用程序中,它可以正常播放。问题是我希望用户能够将自己的歌曲加载到应用程序中,然后将其存储在独立存储中并从中播放。

最后,与示例一样,我宁愿在C#代码中执行此操作,而不是使用XAML。

+0

你以后检查过`CurrentState`属性吗?您是否尝试将处理程序挂接到“MediaFailed”事件? – 2010-12-02 05:38:52

回答

1
  1. 由于该文件将异步打开,因此不能使用与SetSource命令相同的方法执行Play命令。通过将AutoPlay设置为true(这也是默认设置)。你确保它一载入就会播放。

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open)); 
    
  2. Silvelright本身并不支持wav文件,这样玩,你需要下载http://code.msdn.microsoft.com/wavmss,然后用下面的代码wav文件。

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(new WaveMediaStreamSource(ISF.OpenFile("foo.wav", FileMode.Open))); 
    

    虽然不理想,您可以使用的文件扩展名,当正在播放WAV文件来检测,只有在这种情况下,使用第二个代码示例。

相关问题