以下所有内容在unity5.6.2测试。如果是之前版本,不能保证可行型。

因为程序需要,需要使用unity加载网络的MP3音乐,但是网上一查。发现已有的结论是无法直接解析MP3,需要使用其他的库将MP3转换为wav,ogg等其他格式。但是我看文章的发表日期也十分久远,心想,MP3这种全世界使用最多的音乐格式,unity没有理由不支持啊。

终于在仔细的后发现了其支持mp3的蛛丝马迹。

如图,是unity支持的audio格式。大眼一看似乎真的是不支持MP3。但当我们一一点开注释你会发现,

原来,MP3,mpeg同属于Mpeg,虽然不清楚为什么他两个会属于一种类型(可能都是mp开头。哈哈,也可能是因为他们的编码方式相同)。不管怎么说,已经有很明显的证据证明了。MP3是可以直接播放的。

网络加载MP3的方法分为两种,一种是使用WWW ,另外一种是使用UnityWebRequest。

我估计应该是版本迭代的原因。这两种方式加载的MP3方式并不能很好的兼容。就是说,因为WWW是较老的加载方式,(unity也有意抛弃)。所以有些情况下WWW是不能实现的。下文会详细列出。

播放的路径大致分为三种。

一、在StreamingAssets文件夹下播放

二、在网络上服务器,根据url播放

三、在PersistentDataPath文件夹下播放(用于缓存音乐)

这些地址也有很大的坑。这里就简单说下,关于unity地址的一些坑,这里不深入写,网上很多详细的讲解。

如果使用StreamingAssets加载 则必须加”file://”

WWW www = new WWW(“file://”+Application.streamingAssetsPath + “/music.mp3”); OK

WWW www = new WWW(Application.streamingAssetsPath + “/music.mp3”); XXX(不可以)

使用PersisDataPah则不需要。

使用WWW的方式播放MP3音乐。

IEnumerator LoadMusic()
{
string path = Application.persistentDataPath + "/MusicData" + "/Always.mp3";//WWW www = new WWW("http://www.xxx.com/music.mp3");(网络)
WWW www = new WWW(path);
yield return www;
if (www.error!=null)
{
Debug.Log(www.error);
}
AudioClip ac = www.GetAudioClip(true,true,AudioType.MPEG);
audioS.clip = ac;
audioS.Play();
}

重点:!!WWW 的方法只适用用于一,二种方法。!!!注意。第三种用WWW是不可以的。!!
也就是说如果你想要做缓存的话,必须使用unitywebrequest
使用UnityWebRequest加载MP3音乐的方式

IEnumerator GetAudioClip()
{
string path = Application.persistentDataPath + "/MusicData" + "/Always.mp3";
using (var uwr = UnityWebRequest.GetAudioClip(path, AudioType.MPEG))
{
yield return uwr.Send();
if (uwr.isError)
{
Debug.LogError(uwr.error);
yield break;
}
AudioClip clip = DownloadHandlerAudioClip.GetContent(uwr);
// use audio clip
audioS.clip = clip;
audioS.Play();
}
}

UnityWebRequset 是3种都可以的。如果你是WWW的使用者就需要注意啦。

如果你觉得我的文章对你有所帮助或有什么意见千万不要吝啬评论噢。

unity 播放网络MP3的多种方法相关推荐

  1. python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法

    有个小项目,需求是某事件发生时,给客户打电话,提醒客户.需要事先录制好一段音频,客户接通电话后,自动播放. 1. 注册twilio账号 2. 买一个电话号码 3. 安装twilio pip insta ...

  2. Android之MediaPlayer播放网络视频的实现方法

    前段时间忙于工作,现在有时间来分享一下: 这篇文章主要介绍了Android的MediaPlayer播放网络视频的实现方法,是一个非常实用的功能,需要的朋友可以参考下 前面讲解了MediaPlayer播 ...

  3. win7系统打开连接网络连接到服务器,win7的网络连接在哪里?win7系统开启网络连接的多种方法...

    win7系统在上网过程中经常会遇到网络故障问题,导致无法正常上网.一般会打开"网络连接"查看网络的参数状况,对于电脑高手来讲打开网络连接是很简单的事情,但是电脑小白不知道win7的 ...

  4. 【Android】入门级连接网络示例: 网页浏览和播放网络MP3

    前提:使用可以联网的模拟器或者手机调试 一,更改xml文件 <?xml version="1.0" encoding="utf-8"?> <L ...

  5. 多种方法教你破解电信共享上网的限制

    现在很多家庭都有不止一台电脑,多台电脑要实现共享上网,以前大家一般都是通过路由器来实现多台电脑共享上网,但是随着宽带用户的增加,各地的电信开始纷纷封杀家庭用户的多机共享上网,让不少消费者伤透了头脑,难 ...

  6. 我的Android进阶之旅------Android MediaPlayer播放网络音频的实例--网络mp3播放器

    上一篇写了个简单的MP3播放器 ,这次写一个可以播放网络音频资源的播放器 本实例可以实现音乐播放器除了来电的时候会暂停播放,通话结束后恢复播放外,打开其他的Activity都可以继续播放音乐,享受一边 ...

  7. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...

  8. Android盒子看百度云,百度云视频怎么在电视播放?智能电视/电视盒子访问百度网盘的多种方法...

    怎么在电视上播放百度云里面的资源视频?很多小伙伴把重要的视频资料放到了百度网盘里,想在智能电视或者电视盒子上观看.不过百度网盘没有TV版本很是纠结,不过小伙伴们也别灰心,还是有方法可以用的!接下来小编 ...

  9. Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51290181 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现NetM ...

最新文章

  1. JetBrains大力推广Kotlin为哪般?
  2. CentOS-6.5安装配置Tengine
  3. c++11-Varadic Templates右值引用lamada
  4. .NET Core 跨平台物联网框架 ServerSuperIO.Core,一套设备驱动通吃嵌入式、上位机、云服务...
  5. 极客青年说,北京沙龙
  6. 【转】WPF调用图片路径,或资源图片
  7. 五、实例:在波士顿房价数据集上用随机森林回归填补缺失值
  8. PowerTip of the Day-Finding Invalid Aliases
  9. python语句分为复合语句与_对Python中for复合语句的使用示例讲解
  10. JQuery的Alert插件介绍
  11. Cloudera果然向云出手了!新机器学习服务采用云原生路径!
  12. php怎么自动识别车牌号,车牌号自动识别系统怎么录入,很多你不知道的潜规则...
  13. Linux 的7种文件类型及各颜色代表含义
  14. wordpress 如何添加Canonical 标签(不通过插件)
  15. 旷视科技——身份验证、活体检测、人脸比对
  16. 怎么把歌曲的格式改成mp3格式?
  17. 【数据结构】赫夫曼树
  18. 网络语言嗨C,网络流行语大全_最新最热门网络语言
  19. iphone怎么关闭浮屏键_iPhone屏幕上的圆圈怎么设置 打开/关闭方法
  20. 以AI实训建设支持“加快构建现代职业教育体系”,培养新时代的“大国工匠”...

热门文章

  1. 各领域最值得推荐的入门书籍
  2. matlab卡农解析
  3. 在线屏幕纯色漏光测试对比度色阶饱和度检测源码下载
  4. windows200/Xp关机重起代码
  5. Mysql隔离性之Read View
  6. 黑客中级技术--缓冲区溢出攻击(转)
  7. 江苏计算机等级考试二级c语言知识点(手写版)
  8. 【STM32H7教程】第63章 STM32H7的高分辨率定时器HRTIM基础知识和HAL库API
  9. Thoughtworks心得体会
  10. 命名空间 访问权限 通讯录及工资结算系统实例