Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


MP3 streaming en C # .NET 4.5.1 MVC 5.2.2 en Samsung 6S

Tengo que utilizar un TTS (texto a hablar) SaaS de ReadSpeaker con el fin de agregar audio a la aplicación que estoy desarrollando.

Ahora, la cuenta básica de SCAPI que estamos usando actualmente tiene una configuración básica, simplemente estableció una URL y obtiene un flujo de MP3 que necesitamos para la salida. Debido a que la clave de servicio está en la URL, no podemos usarla en la interfaz, por lo que necesitamos transmitir los archivos a través de nuestros servidores.

Todo funcionó bien hasta que probé el código de desarrollo en el Samsung 6S. Donde no jugar en absoluto, sin embargo, los servicios de enlace propio funciona, es decir, esto funciona:

<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> 

mientras que el mismo código exacto a través de nuestros servidores no en Samsung 6S con el mismo enlace que la fuente de flujo en el controlador.

He pasado por varias maneras diferentes de transmitir el archivo en el servidor, pero simplemente caído plana cada vez en Samsung 6S (nuevo de la caja sin mods).

Aquí está el código que he usado.

Controlador vacío:

 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(); 

Standard FileStreamResult donde tomo el código anterior de MemoryStream y enviar a través de ello, es decir, con un controlador FileStreamResult en lugar de establecer los encabezados manualmente:

 return new FileStreamResult(ms, response.ContentType); 

e incluso un FileStreamResult modificado que encontré aquí que permite la transmisión en tiempo real de la URL sin necesidad de descargarlo al servidor.

También he utilizado este método para obtener los datos de bytes de 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"); } 

Y luego una miríada de formas de salida, pero siempre el resultado es el mismo, funciona bien en todo lo demás (incluso IE7, no con las etiquetas de audio, pero aún), pero no con Samsung 6S.

No sé que debo estar perdiendo algo muy básico aquí, porque todo lo que he probado funciona muy bien en todo lo demás, pero en el Samsung 6S nada. Incluso en otros Androids de gama alta como el LG G4 funciona, pero en el 6S … nada, chorro el enlace de servicio directo en una etiqueta de audio funciona bien?

Así que sé que debo estar haciendo algo mal aquí, alguna idea?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.