我需要在iOS上运行的Unity3D中流式传输或下载并播放从URL获得的音频。音频来自文本到音频服务,我需要在Unity上播放:
http://api.ispeech.org/api/rest?apikey=...&action=convert&voice=eurspanishfemale&text=hola+que+tal
我一直在搜寻整个上午,却找不到有效的解决方案... Unity3D文档中有一个代码片段(WWW-audioClip,WWW.GetAudioClip),但无法正常工作,我已经调试了并且错误说它不能打开文件。
using UnityEngine;
using System.Collections;
public class AudioURLScript : MonoBehaviour {
public string url = "http://api.ispeech.org/api/rest?apikey=...&action=convert&voice=eurspanishfemale&text=hola+que+tal";
public AudioSource source;
void Start() {
WWW www = new WWW("file://"+url);
source = GetComponent<AudioSource>();
source.clip = www.GetAudioClip(false,true);
}
void Update() {
if (!source.isPlaying && source.clip.isReadyToPlay)
source.Play();
}
}
谢谢
解决方案
这是我目前的工作解决方案。
void Start(){
StartCoroutine(DownloadAndPlay("http://api.ispeech.org/api/rest?apikey=...&action=convert&voice=eurspanishfemale&text=Hola+que+tal"));
}
IEnumerator DownloadAndPlay(string url)
{
WWW www = new WWW(url);
yield return www;
AudioSource audio = GetComponent<AudioSource>();
audio.clip = www.GetAudioClip(false, true,AudioType.MPEG);
audio.Play();
}
您没有提到您所使用的平台,所以我将假设使用Windows。
Unity Windows运行时仅支持WAV或OGG。您提供的音频服务文件的链接将作为MP2音频文件下载(在广播中很常见)。Unity将无法播放(或MP3)。
作为参考,Android和iOS平台确实支持MP3(但不支持MP2)。
因此,首先要确保音频源格式兼容。
代码示例不正确有3个原因;
好,这是我的建议。
如果您能很快知道音频文件,则将它们下载并转码到OGG(如果是Windows)或MP3(如果是移动设备),然后将它们上传到自己的服务器(例如Amazon S3,或每月10美元的无限制网站)。
然后,使用以下代码下载并播放它:
StartCoroutine(DownloadAndPlay("http://myserver.com/audio/test.ogg"));
IEnumerator DownloadAndPlay(string url)
{
WWW www = new WWW(url);
yield return www;
AudioSource audio = GetComponent<AudioSource>();
audio.clip = www.GetAudioClip(false, false);
audio.Play();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句