Мне удалось обнаружить Реализацию воспроизведения Жиля Хоузама для файлов WAV в Silverlight 3, и хотя это будет большая часть битвы, я застрял на последней детали: как мне потянуть WAV-файл из Интернета в каком-то месте, а затем подать его в свой WaveMediaStreamSource для воспроизведения?
Вот самое близкое, что я пришел:
public MainControl()
{
// Required to initialize variables
InitializeComponent();
PlayButton.Click += PlayButtonClicked;
}
private void PlayButtonClicked(object sender, RoutedEventArgs e)
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(@"soundfile.wav");
request.BeginGetResponse(ReadCallback, request);
}
private void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
WaveMediaStreamSource wavMss = new WaveMediaStreamSource(response.GetResponseStream());
MediaPlayer.SetSource(wavMss);
}
Edit:
Оказывается, проблема была связана с HttpWebRequest. Изменение кода на:
public MainPage()
{
InitializeComponent();
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(new Uri(@"http://www.russellmyers.com/somefile.wav", UriKind.Absolute));
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
WaveMediaStreamSource wavMss = new WaveMediaStreamSource(e.Result);
Debug.WriteLine("Setting source...");
Media.SetSource(wavMss);
}
Работает нормально. Это также имеет смысл после прочтения статьи Шона Вильдермута о различиях . Хотелось бы, чтобы HttpWebRequest работал, потому что это не будет сделано в потоке пользовательского интерфейса.