从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或其他任何东西。

我很困惑,因为我从来没有发现过同样的问题。

如果你能帮我的话。

提前谢谢。

--

迈玛

从metro应用程序中的httpResponse检索数据音频

查看此博客文章:如何将字节数组转换为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(), "");