unity 本地MP3文件读取

本文介绍了Unity新版中使用UnityWebRequestMultimedia模块直接读取本地MP3文件的方法,该方法适用于PC和安卓平台,避免了通过NAudio转换为WAV的步骤。然而,据最新评论,此方法在Windows上可能已不再适用,建议使用Ogg或WAV格式,或者利用NAudio在加载时转换MP3为WAV。

看到网上对本地MP3文件的读取多采用WWW加NAudio的方式。其中NAudio将MP3文件转为wav,再由WWW将wav文件加载为unity的AudioClip。

这里这么做的原因是WWW不支持MP3格式。这种做法较为陈旧。

unity新版的UnityWebRequestMultimedia已经支持了MP3格式。用法如下

private IEnumerator LoadMusic(string filepath)
    {
        filepath = "file://" + filepath;
        using (var uwr = UnityWebRequestMultimedia.GetAudioClip(filepath, AudioType.MPEG))
        {
            yield return uwr.SendWebRequest();
            if (uwr.isNetworkError)
            {
                Debug.LogError(uwr.error);
            }
            else { 
                AudioClip clip = DownloadHandlerAudioClip.GetContent(uwr);
                // use audio clip
                audioSource.clip = clip;                
            }
        }
    }
StartCoroutine(LoadMusic("/storage/emulated/0/a.mp3"));
StartCoroutine(LoadMusic("D:/a.mp3"));

 

这里测试了pc和安卓平台。

 

版本:unity2017.4.3f1 x64

ps:为了读取文件,需要对f应的权限。

edit->project settings->player->configuration

write permission设置为external

unity官方文档链接

---------------------------------

补充 (20190610) :

看了下面的评论, 今天重新试了一下, 发现已经不行了(on windows), android 平台应该仍然可以(这里没有测试,不过评论里反映的基本上都是windows下不行).所以在windows下大家还是采用其他的方式, 比如

1. 使用 ogg 或 wav 等格式, 不使用 mp3 格式文件.

2. 使用NAudio 等库在加载时将 mp3 文件 转换为 wav 格式, 再进行加载.

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值