三星6S上C#NET 4.5.1 MVC 5.2.2中的MP3流媒体

三星6S上C#NET 4.5.1 MVC 5.2.2中的MP3流媒体,c#,android,asp.net-mvc,audio-streaming,samsung-mobile,C#,Android,Asp.net Mvc,Audio Streaming,Samsung Mobile,我必须使用来自的TTS(Text-to-Speak)SaaS,以便为我正在开发的应用程序添加音频 现在,我们目前使用的基本SCAPI帐户有一个基本设置,您只需设置一个URL,并获取我们需要输出的MP3流。因为服务密钥在URL中,所以我们不能在前端使用它,所以我们需要通过我们的服务器流式传输文件 在我在三星6S上测试开发代码之前,一切正常。如果它根本不起作用,但是服务本身的链接起作用,即: <audio controls> <source src="ht

我必须使用来自的TTS(Text-to-Speak)SaaS,以便为我正在开发的应用程序添加音频

现在,我们目前使用的基本SCAPI帐户有一个基本设置,您只需设置一个URL,并获取我们需要输出的MP3流。因为服务密钥在URL中,所以我们不能在前端使用它,所以我们需要通过我们的服务器流式传输文件

在我在三星6S上测试开发代码之前,一切正常。如果它根本不起作用,但是服务本身的链接起作用,即:

<audio controls>
    <source 
        src="http://tts.readspeaker.com/a/speak?key=[ServiceKey]&lang=en_uk&voice=Female01&audioformat=mp3&volume=200&text=test text 2"
        type="audio/mp3">
        Your browser does not support the audio element.
</audio>
标准
FileStreamResult
中,我获取上述代码的MemoryStream并通过它发送,即使用FileStreamResult控制器,而不是手动设置标头:

return new FileStreamResult(ms, response.ContentType);
这允许URL的实际流式传输,而无需将其下载到服务器

我还使用此方法从ReadSpeaker获取字节数据:

byte[] audioData;
using (WebClient client = new WebClient())
{
    audioData = client.DownloadData("http://tts.readspeaker.com/a/speak?key=[ServiceKey]&lang=en_uk&voice=Female01&audioformat=mp3&volume=200&text=test text 2");
}
然后有无数种方式输出它,但结果总是一样的,在其他任何东西上都可以很好地工作(即使是IE7,没有音频标签,但仍然可以),但在三星6S上不行

我不知道我一定错过了一些非常基本的东西,因为我尝试过的所有东西在其他方面都很好,但在三星6S上什么都没有。即使在其他高端机器人如LG G4上,它也能工作,但在6S上。。。没什么,音频标签中的直接服务链接可以正常工作吗


所以我知道我一定是做错了什么,有什么想法吗?

编码似乎很好

三星有自己的TTS,这可能会干扰您自己的TTS。您可能想要使用它,或者卸载它,或者启用它。

您最好将fiddler(或类似代理风格的http嗅探器)插入链中。您可以将fiddler配置为侦听所有端口(而不仅仅是本地主机),并将sammy上的代理设置为指向运行在您PC上的fiddler实例的ip/端口。然后,将您自己的代理控制器操作的响应与原始url进行比较,并查看差异所在。我将特别注意头中任何跨源相关的响应之间的差异。
byte[] audioData;
using (WebClient client = new WebClient())
{
    audioData = client.DownloadData("http://tts.readspeaker.com/a/speak?key=[ServiceKey]&lang=en_uk&voice=Female01&audioformat=mp3&volume=200&text=test text 2");
}