如何从URL流式传输/下载和播放音频?

马多文

我需要在iOS上运行的Unity3D中流式传输或下载并播放从URL获得的音频。音频来自文本到音频服务,我需要在Unity上播放:

http://api.ispeech.org/api/rest?apikey=...&action=convert&voice=eurspanishfemale&text=hola+que+tal

我一直在搜寻整个上午,却找不到有效的解决方案... Unity3D文档中有一个代码片段(WWW-audioClipWWW.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个原因;

  1. URL是https :(告诉unity从互联网下载),但随后在文件前面添加了file :(告诉unity从本地文件系统加载)。因此,您应该选择一个。
  2. 如果您选择https,那是行不通的,因为该特定链接(我知道这只是一个例子),但是它要求用户登录到该服务(并使用cookie知道这一点),因此它不会向您发送音频文件,它会向您发送一个HTML页面,告诉用户登录或注册。
  3. 正如@fafase所说,必须将WWW放在一个例程中,以便可以在多个框架上下载。

好,这是我的建议。

如果您能很快知道音频文件,则将它们下载并转码到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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

星号,如何播放音频文件

来自分类Dev

如何使用Blobstore API播放(流式传输而不是下载式)存储在GCS中的视频文件

来自分类Dev

如何使用node.JS流式播放.avi电影文件?(文件打开下载屏幕,而不是流式传输)

来自分类Dev

点击播放音频

来自分类Dev

如何同时录制视频和播放音频(快速教程)

来自分类Dev

如何在榆木中播放音频

来自分类Dev

如何播放音频文件?

来自分类Dev

颤动播放音频

来自分类Dev

依次播放音频

来自分类Dev

浏览器如何请求音频流?它是在进行流式传输还是“渐进式下载”?

来自分类Dev

如何在Firefox中播放音频和视频流?

来自分类Dev

如何结合现场视频和音频进行流式传输

来自分类Dev

如何填充ListView和播放音频文件

来自分类Dev

使用setInterval和Loop播放音频

来自分类Dev

Smartface:如何播放音频文件?

来自分类Dev

如何从URL流式传输视频时仅捕获音频或视频?

来自分类Dev

点击播放音频

来自分类Dev

如何在Android中下载和流式传输音频?

来自分类Dev

如何在NSDatePicker上播放音频?

来自分类Dev

如何从URL流式传输/下载和播放音频?

来自分类Dev

如何播放音频文件?

来自分类Dev

如何滚动播放音频列表

来自分类Dev

如何使用jquery通过切换的播放和暂停按钮播放音频?

来自分类Dev

显示和播放音频文件

来自分类Dev

如何使用pyaudio循环播放音频?

来自分类Dev

如何流式传输音频(广播) MvvmCross

来自分类Dev

如何统一播放音频

来自分类Dev

在没有数据可下载的情况下,如何流式传输视频/音频(youtube、spotify 等)?

来自分类Dev

如何以 xamarin 形式播放音频?

Related 相关文章

热门标签

归档