是否有人有一个工作(测试)代码示例来从隔离存储播放音频文件。我目前拥有的代码不会引发异常或发出任何声音:
MediaElement ME = new MediaElement();
ME.AutoPlay = false;
IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open));
ME.Play();
我尝试使用多种不同的音频格式,使用Expression编码,但我总是遇到同样的问题。
另外,我非常喜欢使用文件浏览器从文件流加载歌曲的示例,但这不太重要,可以轻松转换Isolated Storage示例。
我已经检查过,如果我将该文件嵌入到应用程序中,它就可以正常运行。问题是我希望用户能够将他们自己的歌曲加载到应用程序中,然后将其存储在隔离存储中并从中进行播放。
最后,与示例一样,我宁愿用C#代码而不是XAML代替。
答案 0 :(得分:1)
由于文件将以异步方式打开,因此无法使用与SetSource命令相同的方法执行Play命令。通过将AutoPlay设置为true(这也是defualt)。您确保它会在加载后立即播放。
MediaElement ME = new MediaElement();
ME.AutoPlay = true;
IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open));
Silvelright本身不支持wav文件,因此要播放wav文件,您需要下载http://code.msdn.microsoft.com/wavmss,然后使用以下代码。
MediaElement ME = new MediaElement();
ME.AutoPlay = true;
IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
ME.SetSource(new WaveMediaStreamSource(ISF.OpenFile("foo.wav", FileMode.Open)));
虽然不理想,但您可以使用文件扩展名来检测播放wav文件的时间,并仅在这种情况下使用第二个代码示例。