首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三星6S上C# .NET 4.5.1 MVC 5.2.2中的MP3流

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

Stack Overflow用户
提问于 2015-12-16 04:32:42
回答 1查看 498关注 0票数 16

我必须使用来自ReadSpeaker的文语转换( TTS ) SaaS,以便将音频添加到我正在开发的应用程序。

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

一切正常,直到我在三星6S上测试了开发代码。它根本没有播放,但服务自己的链接工作,即这是工作:

代码语言:javascript
复制
<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>

而通过我们的服务器的完全相同的代码不能在三星6S上使用与控制器中的流源相同的链接。

我已经经历了几种不同的方式在服务器上流式传输文件,但每次在三星6S (全新的开箱即用,没有mods)都失败了。

这是我用过的代码。

Void控制器:

代码语言:javascript
复制
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控制器,而不是手动设置标头:

代码语言:javascript
复制
return new FileStreamResult(ms, response.ContentType);

以及允许实际流传输URL而不需要将其下载到服务器的even a modified FileStreamResult I found here

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

代码语言:javascript
复制
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上...没什么,jet音频标签中的直接服务链接工作正常吗?

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

EN

回答 1

Stack Overflow用户

发布于 2015-12-18 23:22:41

编码看起来很好。

三星有自己的TTS,这可能会干扰你自己的TTS。您可能想使用它,或者卸载它,或者启用它。http://www.samsung.com/in/support/skp/htg/16082

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34298858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档