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, так как файл будет открыт асинхронно. Установив AutoPlay в true (это также defualt). Вы гарантируете, что он будет воспроизводиться, как только он будет загружен.

    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 проигрываются и использовать второй образец кода только в этом случае.

Смежные вопросы