2

有没有人有一个工作(测试)的代码示例来播放来自隔离存储的音频文件。我目前拥有的不会引发异常或发出任何声音的代码是:

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

我已经尝试过使用多种不同的音频格式,使用 Expression 编码,但我总是遇到同样的问题。

另外,我非常想要一个使用文件浏览器从文件流中加载歌曲的示例,但是这不太重要,并且可以轻松转换独立存储示例。

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

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

4

1 回答 1

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 文件,因此要播放 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 文件并仅在这种情况下使用第二个代码示例。

于 2010-12-07T17:49:16.527 回答