Воспроизведение песен пользователя с помощью Silverlight
Есть ли у кого-нибудь работающий (проверенный) пример кода для воспроизведения аудиофайла из изолированного хранилища. Код, который у меня сейчас есть, который не выдает исключение и не издает никаких звуков:
MediaElement ME = new MediaElement();
ME.AutoPlay = false;
IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open));
ME.Play();
Я пробовал это с использованием различных аудиоформатов, закодированных с помощью Expression, но у меня всегда одна и та же проблема.
Кроме того, мне бы очень понравился пример использования файлового браузера для загрузки песни из файлового потока, однако это менее важно, и пример изолированного хранилища можно легко преобразовать.
Я проверил, и если я внедряю файл в приложение, он играет нормально. Проблема в том, что я хочу, чтобы пользователи могли загружать свои собственные песни в приложение, которое затем будет сохраняться и воспроизводиться из изолированного хранилища.
Наконец, как и в примере, я предпочел бы делать это в коде на C#, а не на XAML.
1 ответ
Вы не можете использовать команду Play в том же методе, что и команда SetSource, так как файл будет открыт асинхронно. Установив AutoPlay на true (что также является значением по умолчанию). Вы убедитесь, что он будет играть, как только он загружен.
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, и использовать второй пример кода только в этом случае.