• Uinty3D性能优化之声音资源科普篇


    音频格式

    WAV:微软公司开发的一种声音文件格式,简单的编/解码、普遍的认同/支持以及无损耗存储,目前Windows上最流行的声音文件格式,资源大,不推荐

    MP3:是MPEG标准中的音频部分,大小只有WAV文件的1/10,是一种有损压缩数字音频格式,失真小,适合音质要求高的文件,例如BGM

    OGG:是一种新的音频压缩格式,类似MP3的音乐格式,它是完全免费、开放和没有专利限制的。压缩比高,适合人声、音效等

    Unity声音资源

    压缩的:压缩声音是通过从编辑器导入设置选择compressed选项,音频数据将很小,但在播放时会消耗CPU来解码

    原生的:对于短音效使用未压缩音频(WAV,AIFF)。音频数据将较大,但是声音在播放是不需要解码

    Snipaste_2020-06-01_10-35-21

    Force To Mono:转化为单声道,一般手机使用单声道足够满足需求

    Normalize:单声道标准化

    Load In Background:单独线程加载,不阻塞主线程,如果直接放在场景里,会在场景加载的时候一起被加载

    Ambisionic:立体声

    OriginaSize:磁盘大小,播放时要占的RAM内存

    ImportedSize:导入内存大小,打包时用的内存

    Ratio:ImportedSize占OriginalSize比例

    应该注意的优化

    Total Audio Source:总资源数

    AudioClipCount:缓存的音频数量

    AudioVoices:当前播放的音频个数

    TotalAudioMemory :实际占用的内存大小

    Total Audio CPU,Streaming CPU :CPU的消耗

    OGG就相当于一个容器,Vorbis是一种音频压缩机制,像一些后缀名为.ogg的文件,表明这里面只包含Vorbis 音频


    Load Type 类型 特点
    Decompress On Load 加载时解压缩 未压缩的音频将存储在RAM中。需要的内存最多,但是播放它CPU消耗小,适合较小压缩声音,不要对大型文件使用,会消耗最高的内存。处理较小的声音(load就解压)
    Compressed In Memory 压缩在内存中 压缩后的音频剪辑存储在RAM中,播放时将解压缩,CPU消耗比较大(尤其是对于Ogg / Vorbis压缩文件),适合对较大的文件。较大的声音(保持解压的状态)
    Streaming 即时解码 音频永久存在设备上(硬盘或闪存上) ,播放流媒体方式(边加载边播放),不需要RAM进行存储或播放,使用最少的内存来读取并即时解码压缩数据,解压缩在单独流线程上,CPU消耗比较大,适合背景音乐,明显降低内存占用使用最少的内存来缓冲压缩数据(很长的音乐)
    Compression Format 压缩格式 特点
    PCM 以较大文件大小提供更高质量 非常短的音效是最好的,质量高,文件大
    ADPCM 压缩率比PCM小3.5倍,但CPU使用率比MP3/Vorbis低得多 噪音多并且大量播放声音,如脚步声音,撞击声
    Vorbis/MP3 压缩后文件较小,比PCM质量低 最适合中等长度声音,质量低
    Sample Rate Setting 采样率设置 特点
    Preserve Sample Rate 保留采样率 (默认)使采样率保持不变
    Optimize Sample Rate 优化采样率 按最高频率自动优化采样率
    Override Sample Rate 覆盖采样率 允许手动覆盖采样率
    • 总结:加载类型和压缩格式主要是会影响到CPU和内存。压缩率越高文件就小,包体小,但是解压缩占用的内存就大,CPU消耗也大。所以没有最合适,只有相对合适。
    • Streaming+Vorbis,使用最少的内存,但需要更多的CPU消耗和硬盘I/O操作;
    • Compressed In Memory+Vorbis,磁盘I/O操作被替换成内存的消耗,可以调整“Quaility”滑块以减小压缩剪辑的大小,以交换音质,一般推荐70%左右。
    • 项目是采用:
    • 长度<10:Compressed In Memory + Vorbis
    • 长度>10:(背景音乐)Streaming + Vorbis
  • 相关阅读:
    函数与递归、第五章习题
    第四章习题continue、break
    程序异常处理
    第一章习题
    第三章习题.split('')
    文本进度条
    字符串处理函数、Unicode
    字符串处理.<方法>()
    springbatch
    卸载gitlab
  • 原文地址:https://www.cnblogs.com/wwhhgg/p/13025544.html
Copyright © 2020-2023  润新知