前回の質問で外部ファイルのパスから音声ファイルを読み込む方法は分かり、.wav、.oggファイルはきちんと再生できましたが、.mp3ファイルを読み込もうとすると以下のエラーが出て読み込むことができません。
フォーマット対応していないのは分かりましたが、他に.mp3フォーマットのファイルを読み込む手段はあるのでしょうか?
発生したエラー
C#
1Streaming of 'mpeg' on this platform is not supported 2UnityEngine.Networking.DownloadHandlerAudioClip:GetContent(UnityWebRequest) 3<LoadToAudioClipAndPlay>d__11:MoveNext() (at Assets/Scripts/StartSceneManager.cs:92) 4UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) 5 6 7NullReferenceException: Object reference not set to an instance of an object 8StartSceneManager+<LoadToAudioClipAndPlay>d__11.MoveNext () (at Assets/Scripts/StartSceneManager.cs:93) 9UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17) 10
使用しているコード
C#
1 //外部からの呼び出し用メソッド 2 public void LoadAudio(string path) 3 { 4 if (Path.GetExtension(path) == ".m4a") //※"m4a"は再生できないっぽい 5 { 6 Debug.Log("Not supported audio format."); 7 return; 8 } 9 10 StartCoroutine(LoadToAudioClipAndPlay(path)); 11 } 12 13 //ファイルの読み込み(ダウンロード)と再生 14 IEnumerator LoadToAudioClipAndPlay(string path) 15 { 16 Debug.Log($"load{path}"); 17 if (audioSource == null || string.IsNullOrEmpty(path)) 18 yield break; 19 20 if (!File.Exists(path)) 21 { 22 //ここにファイルが見つからない処理 23 Debug.Log("File not found."); 24 yield break; 25 } 26 AudioType audioType = new AudioType(); 27 switch (Path.GetExtension(path)) 28 { 29 case ".wav": 30 case ".WAV": 31 audioType = AudioType.WAV; 32 break; 33 case ".ogg": 34 case ".OGG": 35 audioType = AudioType.OGGVORBIS; 36 break; 37 case "..mp3": 38 case ".MP3": 39 audioType = AudioType.MPEG; 40 break; 41 default: 42 audioType = AudioType.WAV; 43 break; 44 } 45 46 using (UnityWebRequest req = UnityWebRequestMultimedia.GetAudioClip("file://" + path, audioType)) //※あくまでローカルファイルとする 47 { 48 yield return req.SendWebRequest(); 49 50 51 52 AudioClip audioClip = DownloadHandlerAudioClip.GetContent(req); 53 if (audioClip.loadState != AudioDataLoadState.Loaded) 54 { 55 //ここにロード失敗処理 56 Debug.Log("Failed to load AudioClip."); 57 yield break; 58 } 59 60 //ここにロード成功処理 61 printText.Text = $"{printText.Text}\n{path}"; 62 playLists.Add(audioClip); 63 new PlayClips(playLists, false); 64 } 65 } 66
実行環境
Unity 2018.3.8f1
Windows10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。