【Unity3D】如何讀取並播放 Android 本地的 wav 音頻


由於目前做的項目是發布在 Android 平台的,所以遇到了還蠻多的關於 Android 方面的問題的。

 

最近遇到一個問題,就是需要在程序中讀取並播放外部(本地存儲)的 wav 音頻。

 

此問題已解決,現將解決方法整理分享如下。

 

解決方法:

 

1. 用 WWW 來加載本地的 wav 文件, 然后將 wav 文件加載為 AudioClip。

    private AudioSource aud;    
    public IEnumerator LoadAudio(string recordPath)  
   {        
    // www 加載音頻        
    WWW www = new WWW(recordPath);        
    yield return www;        
    var clipTemp = www.GetAudioClip();        
    aud.clip = clipTemp;         
    //yield return new WaitForSeconds(5);        
    //aud.loop = true;        
    //播放音頻        
    aud.Play();    }
  

  

啟動協程,filePath 為 wav 音頻文件的存儲路徑。

Android 的路徑中 file:///sdcard/ 表示內部存儲空間的根目錄,如果想要讀取外部 SD 卡存儲空間的根目錄,請參考《用 Unity3D / C# 如何獲取 Android 外置 SD 卡的路徑》。

 

 private void Start()    
{     
#if UNITY_ANDROID && !UNITY_EDITOR        
    // Android 測試路徑        
    string filePath = "file:///sdcard/msc/test_13.wav";                        Debug.LogError(filePath);    
#endif     
#if UNITY_EDITOR       
     // Unity Editor 測試路徑        
    string filePath = "D:/AudioTest/test_2.wav";  
 #endif         
    StartCoroutine(LoadAudio(filePath));    
}

  2. 在 Android 平台如果要讀取本地的文件,需要為應用開啟相應的權限。

打開 Plugins / Android 文件夾下的  AndroidManifest.xml 文件,添加兩行代碼,申請讀寫存儲權限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

   打包安裝應用之后,確保應用的“存儲空間”權限是開啟的。

————————————————

版權聲明:本文為CSDN博主「機靈鶴」的原創文章,遵循CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/wenxuhonghe/java/article/details/102651822

自己demo:

 IEnumerator LoadAudio(string RecordPath,GameObject audioItemObj)
    {
        WWW www = new WWW("file://" + RecordPath);
        yield return www;
        clipTemp = www.GetAudioClip();

        if (www.error != null)
        {
            Debug.LogError("www " + www.error);
        }
        else
        {
            //Debug.LogError("www " + www.text);
           // CurrentAudioSource.clip = clipTemp;
            TKGlobalData.LocalAudio = clipTemp;
            audioItemObj.GetComponent<TKSoundItem>().GetAudioClipNew(clipTemp);

        }
        //Debug.LogError(RecordPath+"_*"+ clipTemp.name);
        www.Dispose();
    }

  

由於目前做的項目是發布在 Android 平台的,所以遇到了還蠻多的關於 Android 方面的問題的。
最近遇到一個問題,就是需要在程序中讀取並播放外部(本地存儲)的 wav 音頻。
此問題已解決,現將解決方法整理分享如下。
 
解決方法:
1. 用 WWW 來加載本地的 wav 文件, 然后將 wav 文件加載為 AudioClip。
    private AudioSource aud;        public IEnumerator LoadAudio(string recordPath)    {        // www 加載音頻        WWW www = new WWW(recordPath);        yield return www;        var clipTemp = www.GetAudioClip();        aud.clip = clipTemp;         //yield return new WaitForSeconds(5);        //aud.loop = true;         //播放音頻        aud.Play();    }
啟動協程,filePath 為 wav 音頻文件的存儲路徑。
Android 的路徑中 file:///sdcard/ 表示內部存儲空間的根目錄,如果想要讀取外部 SD 卡存儲空間的根目錄,請參考《用 Unity3D / C# 如何獲取 Android 外置 SD 卡的路徑》。
    private void Start()    {     #if UNITY_ANDROID && !UNITY_EDITOR        // Android 測試路徑        string filePath = "file:///sdcard/msc/test_13.wav";        Debug.LogError(filePath);    #endif     #if UNITY_EDITOR        // Unity Editor 測試路徑        string filePath = "D:/AudioTest/test_2.wav";    #endif         StartCoroutine(LoadAudio(filePath));    }
2. 在 Android 平台如果要讀取本地的文件,需要為應用開啟相應的權限。
打開 Plugins / Android 文件夾下的  AndroidManifest.xml 文件,添加兩行代碼,申請讀寫存儲權限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 打包安裝應用之后,確保應用的“存儲空間”權限是開啟的。————————————————版權聲明:本文為CSDN博主「機靈鶴」的原創文章,遵循CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/wenxuhonghe/java/article/details/102651822


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM