UnityでWEB上の音声ファイルを再生する

特定のサイトから音声ファイルを取得しunityで再生できるようにする。
※mp3のストリーミング再生方法は最後

 

①再生するURLを確認。
自分で管理していないサイトの場合は音声ファイルがある場所を特定する。

自分で管理しているサイトならそのURLを取得するだけでいいが
自分の管理していないサイトならHTMLソースを見てURLを特定する。

ぱっと見てHTML上になければCSSだったりjavaScriptだったりに書かれてる。

※他人のサイトのオーディオ再生を組み込むなら、サイト主に一言入れるようにしましょう。

 

 

 

②Unityでスクリプトを準備する

https://docs.unity3d.com/ja/current/ScriptReference/WWW-audioClip.html

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class oto_Script : MonoBehaviour {
    AudioSource audios;
	
	void Start () {
		StartCoroutine(Connect());
	}
	
    private IEnumerator Connect(){
        
        
        string url = "http://~~~.wav";

        WWW www = new WWW(url);
        yield return www;
        
        audios=GetComponent<AudioSource>();
        audios.clip = www.GetAudioClip(false, true);//二つ目の引数がturueで読込中の再生可能
        audios.Play();

    }
}

 

 

 

③オブジェクトにスクリプトをアタッチ

オブジェクトに作成したスクリプトとAudioSouceをアタッチして実行するだけ

 

 

再生対象がwaveファイルならこれで終了。

 

 

 

ちなみにこの方法でmp3ファイルを指定するとエラーが出ます。

 

エラー内容:

Streaming of ‘mp3’ on this platform is not supported
UnityEngine.WWW:GetAudioClip(Boolean, Boolean)
<Connect>c__Iterator0:MoveNext() (at Assets/NewBehaviourScript.cs:45)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

 

原因:

Unity側がWindowsOSでのmp3のストリーミング再生に対応していないため。
※もちろんローカル内のmp3再生は可能

 

解説:

「mp3」フォーマットは、以前ライセンスが必要だったため
Unity側がwindowsOSやwebGLでのmp3ストリーミングを出来ないように制御している。
※iOS,Androidビルドは可能
https://docs.unity3d.com/ja/current/ScriptReference/WWW-audioClip.html

 

ただし2017年4月にはmp3のライセンス制限はなくなっている。
https://www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

1年たってもUnity 2018.Xシリーズでもmp3のストリーミング対応はされていないみたい。

2021/05追記
Unity2021.1.3ではmp3再生できました。

 

対策:

アセットRuntime AudioClip Loader を使用する。

アセットストアを「mp3 streaming」で検索し
この中の「Runtime AudioClip Loader」を使う。約2000円
アセットストア:https://assetstore.unity.com/packages/tools/audio/runtime-audioclip-loader-40882

※試していないけれど「uAUDIO mp3 player/Streamer」はレビュー見る限り動いてなさそうでした。

 .
 
 .

アセットを購入したらインポート。
インポート完了後の画面で「YES」を選択
内容はドキュメント内のLicensingと同じ内容でした。

 

シンプルにURLを指定して再生するだけなら以下のシーンを参照
Assets/RuntimeAudioClipLoader/Demonstrations/Simple load from internet

スクリプトつけてURLを指定するだけ

Unity 2018.3で試したところmp3が問題なく再生されました。

 

 

中のスクリプトもめっちゃシンプルで分かりやすかった。

 

 

これで無事にunityでmp3も再生できるようになりました!

おめでとう!!

 

 

 

 

 

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。