从metro应用程序中的httpResponse检索数据音频
本文关键字:检索 数据 音频 httpResponse metro 应用程序 | 更新日期: 2023-09-27 18:24:10
我通过HttpClient访问一个web服务,并得到一个应该包含音频数据的响应(这是一个名为Voice RSS的TTS web服务)。
我这样做:
response = await httpClient.GetAsync("http://api.voicerss.org?key=97a912d2574c4538afbf0919ad1f5402&hl=fr-fr&src=hello");
然后我采取的回应内容:
content = response.Content;
stream = content.ReadAsStreamAsync();
result = stream.Result;
然后我真的犹豫了:我在很多论坛上看到,我应该使用MediaElement并将其源设置为流,然后调用"播放"方法,但这对我不起作用。其他人说,我应该创建一个StreamReader来读取流。。。
我的目标是播放响应中包含的声音(可以是mp3、wav等)
我不知道是否必须创建MediaElement、IRandomAccessStream、IIOStream或其他任何东西。
我很困惑,因为我从来没有发现过同样的问题。
如果你能帮我的话。
提前谢谢。
--
迈玛
查看此博客文章:如何将字节数组转换为IRandomAccessStream
他实现了class MemoryRandomAccessStream : IRandomAccessStream
所以你可以使用它,这是我的工作代码:
private async void Button_Click( object sender, RoutedEventArgs e )
{
var httpClient = new HttpClient();
var response = await httpClient.GetAsync("http://api.voicerss.org?key=97a912d2574c4538afbf0919ad1f5402&hl=fr-fr&src=hello");
var content = await response.Content.ReadAsStreamAsync();
ME.SetSource(new MemoryRandomAccessStream(content), "");
ME.Play();
}
其中ME
是XAML代码中的MediaElement
:
<MediaElement x:Name="ME" ../>
PS。经过更多的搜索,我发现一位BCL开发人员说,将在Windows 8.1中添加一个扩展方法,这样你就可以进行
ME.SetSource(content.AsRandomAccessStream(), "");