在完全下载文件之前,使用HttpClient请求的音频流不会播放

时间:2015-09-19 16:11:38

标签: c# audio stream windows-store-apps httpclient

我尝试使用HttpClient读取音频流,因为我需要修改HTTP标头。唯一的#34;工作"我找到的方法如下:

HttpResponseMessage response = await httpClient.GetAsync("http://...");          
Stream stream = await response.Content.ReadAsStreamAsync();
IRandomAccessStream content = stream.AsRandomAccessStream();
musicPlayer.SetSource(content, "audio/mpeg");   //musicPlayer is a MediaElement object
musicPlayer.Play();

问题是文件完全下载后MediaElement真正开始播放,因此对于流媒体来说它毫无用处。收到信息流后我就需要它播放。

1 个答案:

答案 0 :(得分:0)

您想要使用GetAsync的重载ResponseContentRead。默认值为stream,这意味着在完全阅读内容之前,ResponseHeadersRead将无法使用。请改用stream,这意味着只有在读取标题后,HttpResponseMessage response = await httpClient.GetAsync("http://...", HttpCompletionOption.ResponseHeadersRead); 才会立即可用。

IndexField