当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《三星6S上的C#.NET4.5.1MVC5.2.2中的MP3流媒体》经验,为你挑选了0个好方法。

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

现在,我们当前使用的基本SCAPI帐户具有基本设置,您只需设置一个URL并获取我们需要输出的MP3流.由于服务密钥位于URL中,因此我们无法在前端使用它,因此我们需要通过服务器传输文件.

在我测试Samsung 6S上的开发代码之前,一切正常.它根本没有播放,但服务自己的链接工作,即这工作:


而通过我们的服务器完全相同的代码不在Samsung 6S上,与控制器中的流源具有相同的链接.

我已经通过几种不同的方式在服务器上流式传输文件,但每次都在三星6S(全新的开箱即用的无模块)中完全平放.

这是我用过的代码.

无效控制器:

string url = "http://tts.readspeaker.com/a/speak?key=[ServiceKey]&lang=en_uk&voice=Female01&audioformat=mp3&volume=200&text=test text 2";

HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)HttpWRequest.GetResponse();

Stream stream = response.GetResponseStream();

MemoryStream ms = new MemoryStream();
stream.CopyTo(ms);

Response.AddHeader("Content-Type", response.ContentType);
Response.AddHeader("Content-Length", response.ContentLength.ToString());
Response.AddHeader("Access-Control-Allow-Origin", "*");
Response.AddHeader("Connection", "close");

Response.Flush();

audioData = ms.ToArray();
Response.BinaryWrite(audioData);

Response.End();

标准FileStreamResult,我采用上面的代码的MemoryStream并通过它发送,即使用FileStreamResult控制器而不是手动设置标头:

return new FileStreamResult(ms, response.ContentType);

而即使是修改FileStreamResult我发现这里允许无需将其下载到服务器的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 ......没什么,喷射音频标签中的直接服务链接工作正常吗?

所以我知道我必须在这里做错事,任何想法?

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有