Как приложение silverlight может загружать и воспроизводить mp3-файл с URL-адреса? - PullRequest
2 голосов
/ 21 марта 2010

У меня есть небольшое приложение Silverlight, которое загружает все изображения и текст , необходимые ему с URL-адреса, например:

if (dataItem.Kind == DataItemKind.BitmapImage)
{
    WebClient webClientBitmapImageLoader = new WebClient();
    webClientBitmapImageLoader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientBitmapImageLoader_OpenReadCompleted);
    webClientBitmapImageLoader.OpenReadAsync(new Uri(dataItem.SourceUri, UriKind.Absolute), dataItem);
}
else if (dataItem.Kind == DataItemKind.TextFile)
{
    WebClient webClientTextFileLoader = new WebClient();
    webClientTextFileLoader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClientTextFileLoader_DownloadStringCompleted);
    webClientTextFileLoader.DownloadStringAsync(new Uri(dataItem.SourceUri, UriKind.Absolute), dataItem);
}

и

void webClientBitmapImageLoader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    BitmapImage bitmapImage = new BitmapImage();
    bitmapImage.SetSource(e.Result);
    DataItem dataItem = e.UserState as DataItem;

    CompleteItemLoadedProcess(dataItem, bitmapImage);
}

void webClientTextFileLoader_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    DataItem dataItem = e.UserState as DataItem;
    string textFileContent = e.Result.ForceWindowLineBreaks();
    CompleteItemLoadedProcess(dataItem, textFileContent);
}

Каждое из изображений и текстовых файлов затем помещается в словарь , чтобы приложение имело к ним доступ в любое время. Это хорошо работает.

Теперь я хочу сделать то же самое с файлами mp3 , но вся информация, которую я нахожу в Интернете о воспроизведении файлов MP3 в Silverlight, показывает, как вставлять их в .xap файл, который я не хочу делать, поскольку я не смог бы загрузить их динамически , как я делаю выше.

Как загрузить и воспроизвести mp3-файлы в Silverlight так же, как я загружаю и показываю изображения и текст?

1 Ответ

1 голос
/ 21 марта 2010

Вы можете скачать MP3 в виде двоичного потока и сохранить результат в байтовом массиве. Этот байтовый массив вы бы сохранили в своем словаре.

В тот момент, когда вы хотите назначить байтовый массив для MediaElement, вы должны использовать такой код: -

void SetMediaElementSource(MediaElement me, byte[] mp3)
{
  me.SetSource(new MemoryStream(mp3));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...