質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

7637閲覧

Unityで外部ファイルから.mp3を読み込む方法がわからない

orina

総合スコア16

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

2クリップ

投稿2019/05/10 09:01

編集2019/05/10 13:53

前回の質問で外部ファイルのパスから音声ファイルを読み込む方法は分かり、.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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

NaudioPlayerを使うことで解決できました。

投稿2019/10/03 05:50

orina

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「Unity MP3 再生」でぐぐってみたら、いろいろでてくるのでひととおりよんでみましょう

投稿2019/05/10 10:11

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

orina

2019/05/10 13:45

そのあたりは一通り読みましたが、私が再生したいのはローカルファイル(Unityプロジェクト外にあるマシン上のもの)なので、どのサイトを見ても大体目的とは違うものの記述しかないのです(これに関しては質問の文章がよくなかったです)。
y_waiwai

2019/05/11 14:09

どこのサイトを見て、そこでどう違うものか具体的に書いてみればどうでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問