Unity FMOD 音效失真变形
Unity FMOD 音效失真变形
- 【1】SampleRate差异导致的失真
- 【2】OpenSL的支持导致的音效抖动和延迟问题
【1】SampleRate差异导致的失真
环境:Unity 2017.4.14f1 (64-bit), FMOD Studio 1.10.02
原因:SampleRate初始化设置与实际音效存在差异导致音效失真
解决方法:配置合适的Default Settings的SampleRate以及代码默认值,比如44100
注:SampleRate Platform Default:Editor:48000, Mobile:24000
注意FMOD Setting配置,以及代码默认值,如下
// 默认值(48000)可依据实际修改// -------- Sample Rate ----------------------public int GetSampleRate(FMODPlatform platform){return GetSetting(SampleRateSettings, platform, 48000);}
【2】OpenSL的支持导致的音效抖动和延迟问题
问题转自 Unity FMOD音效抖动和延迟问题解决方案 , 记录下,并未遇到及验证
问题描述
声音延迟问题可以分为两种:一种是抖动问题,例如一个音效本来是如下的序列:1234567,抖动的效果就是1-2-3-4-5-6-7,其中’-'表示声音的停顿,就像游戏界面的卡帧现象一箱。另一种现象就是延迟现象,还是上面你的例子,延迟后的效果就是–1234567,表现就是点击一个按钮播放声音时要等一会音效才会出来。
问题出现的原因
这个可以参考 http://km.oa.com/articles/show/192778?kmref=search 的介绍,因为android系统默认使用OpenSL进行音频输出,而各个厂商对OpenSL的支持不是完美的,因此默写机型会出现这些问题。
在我们项目的开发过程中,遇到有问题的机型包括:魅族MX3, samsung GT-S7898,
samsung GT-S7562i, 华为G7, 荣耀4X 和 红米2A。
问题解决方案和代码设置
问题的解决方案和上面的帖子介绍的方法类似,但是在Unity中有点特殊。还是要在FMOD初始化之前设置好FMOD的输出方式。
问题是Unity本身自带的音频系统也是使用FMOD的,该FMOD模块使用了FMOD_OUTPUTTYPE_AUDIOTRACK这种输出方式,因此当我们将我们使用的FMOD设置成这种输出方式后,所有的音效都会听不见。
因此我们使用的输出方式是sys.setOutput(FMOD.OUTPUTTYPE.AUTODETECT,添加的部分代码如下:
#if UNITY_ANDROID && !UNITY_EDITOR { FMOD.System sys = null; ERRCHECK(system.getLowLevelSystem(out sys)); if (null != sys) { if (FMOD.RESULT.OK != sys.setOutput(FMOD.OUTPUTTYPE.AUDIOTRACK)) { sys.setOutput(FMOD.OUTPUTTYPE.AUTODETECT); }} }
#endif
注意这点代码需要在FMOD.Studio.System.initialize函数之前执行,否则不生效。
PS: 下面的方案是之前的方案,该方案针对出问题的机型设置DSP Buffer的大小,可以解决卡顿的问题,但是会带来延迟的问题,延迟会在0.5s左右。上面的方案目前位置没有发现其他问题。暂时把不好的解决方案也贴在下面。
之前 问题解决方案
DSP BUFFER SIZE的设置需要在FMOD.Studio.System::initialize函数之前执行,我的习惯是在FMOD_StudioSystem.cs中FMOD_StudioSystem::Init函数中进行设置,设置代码如下:
#if UNITY_ANDROIDFMOD.System lowLevelSystem;result = system.getLowLevelSystem(out lowLevelSystem);if (result != FMOD.RESULT.OK){ FMOD.Studio.UnityUtil.LogError("Unable to get lowlevel system");}if (lowLevelSystem != null){ FMOD.OUTPUTTYPE outputType; lowLevelSystem.getOutput(out outputType); result = lowLevelSystem.setDSPBufferSize(2048, 4); if (result != FMOD.RESULT.OK) { Debug.LogError("ERROR: Set DSP Buffer size error:" + result); } }
#endif
Unity FMOD 音效失真变形相关推荐
- Unity引擎音效系统简介
Unity引擎音效系统简介 音频文件设置选项: Force To Mono:多声道转单声道 Normalize:当强制转为单声道时,混合过程中被标准化. Load In Background:在后台加 ...
- Unity资源-音效初识
比特率(bit/s) 音视频的数字信号单位,值越大,信号传递越快,对应的文件也越大,内存占用也会大. 单声道和多声道 Unity大部分音效使用场景不需要用到多声道和立体声,类似于场景环绕或者山洞等环境 ...
- UNITY中FMOD音效插件使用
在UNITY中使用FMOD插件,直接控制音乐,音效. FMOD下载 FMOD STUDIO的版本与插件要保持一致. FMOD STUDIO使用教程 UNITY引入package FMOD - Edit ...
- Unity 骨骼动画模型变形
目录 一.问题描述 二.问题截图 三.解决办法 检查办法1: 检查办法2: 一.问题描述 从Maya导出骨骼动画至Unity后,在播放动画时的某一帧发生形变.产生变形的原因,是由于模型权重问题导致骨骼 ...
- Unity插件——Mega-Fires Mesh变形插件使用心得
插件使用--Mega-Fires Mesh变形插件使用心得 一,开发环境 二,插件使用前准备工作 三,使用流程 四,Mega-Fires的常见组件介绍 1.Bend:弯管 2.Bubble:泡沫 3. ...
- Unity添加音效与音效衰减
unity音效 unity支持的音频格式有WAV.AIFF.Ogg Vorbis.Mp3等,Mac/PC平台音频会被压缩成Ogg Vorbis格式,这种格式的音质不会降低:移动端会被压缩成MP3格式, ...
- Unity学习——音效系统+音频过滤器+音频混响区+音频管理器
音频源(Audio Source)和音频监听器(在Main Camera下面) 声明: AudioSource audio001; 关联: audio001 = this.GetC ...
- 关于 Unity 音乐音效管理
本文转载自:http://blog.csdn.net/microsoftMSDNNET/article/details/47273239 在实战项目中,音乐音效的好坏肯定是一个玩家对此项目评定的一个因 ...
- 关于Unity音乐音效管理
在实战项目中,音乐音效的好坏肯定是一个玩家对此项目评定的一个因素之一.所以,有必要对音乐音效做出一个统一的管理. 首先,我把几个音效放到了Resouces的Audios文件夹下,方便动态加载. 之后, ...
最新文章
- 项目后台的最新认识和对MVC封装性、可维护性的更深刻认识!
- PHP设置块注释的模板
- C#跨平台开源项目实战(WPF/Android/IOS/Blazor)
- Android之Launcher分析和修改3——Launcher启动和初始化
- 虽然在修行初期的飞鸽传书
- 要把人工智能提速50倍的ARM,却依然坚持做“通用的计算架构”
- windows java环境搭建_Java环境搭建(Windows环境)-Fun言
- java基础之java输入输出语句
- 检测微信好友是否把你拉黑或者删除了
- idea中自动生成Java类图和时序图
- H3CNE题库(带答案版)
- 智慧安全:信息安全监控平台
- 哪些人适合学大数据分析
- Java毕设-商标管理系统
- js是滚动条滑到固定位置_JavaScript 滚动条定位指定位置
- APP隐私合规现状与防范措施
- 孕妇不能吃哪些食物?(协和妇产权威版)
- 梭哈游戏的发牌5-4
- fastreport打印ftp图片_C#:使用FastReport打印带图片传参模板的实现方法
- 进入Oracle企业管理器