使用Silverlight播放用户歌曲
问题描述:
是否有人有工作(测试)的代码示例来播放独立存储中的音频文件。该代码我现在有,不抛出异常或发出任何声音,就是:使用Silverlight播放用户歌曲
MediaElement ME = new MediaElement();
ME.AutoPlay = false;
IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open));
ME.Play();
我已经使用多种不同音频格式,使用表达编码尝试这样做,但我总是有相同问题。
此外,我非常喜欢使用文件浏览器从文件流加载歌曲的示例,但这不太重要,隔离存储示例可以轻松转换。
我检查过了,如果我将该文件嵌入到应用程序中,它可以正常播放。问题是我希望用户能够将自己的歌曲加载到应用程序中,然后将其存储在独立存储中并从中播放。
最后,与示例一样,我宁愿在C#代码中执行此操作,而不是使用XAML。
答
-
由于该文件将异步打开,因此不能使用与SetSource命令相同的方法执行Play命令。通过将AutoPlay设置为true(这也是默认设置)。你确保它一载入就会播放。
MediaElement ME = new MediaElement(); ME.AutoPlay = true; IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open));
-
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文件来检测,只有在这种情况下,使用第二个代码示例。
你以后检查过`CurrentState`属性吗?您是否尝试将处理程序挂接到“MediaFailed”事件? – 2010-12-02 05:38:52