官方说支持aif, wav, ogg, mp3,少就少吧,这些格式还并不是全平台通用,放个mp3,windows,mac平台会告诉你说不支持react
在build settings中修改为android后没问题了,ios没试过。android
对于音频的读取须要手动指定,彻底是坑爹的操做,react native, flutter哪一个不是直接拿来用就成了?你得指定用哪一种格式来读取。ios
上面这个错误是由于我读取参数忘记改了,一读ogg就出错。windows
using (var uwr = UnityWebRequestMultimedia.GetAudioClip(path, AudioType.MPEG)) { ...
应该写成AudioType.OGGVORBIS,搞笑的AudioType里面有ACC,而后看注释:网络
// // 摘要: // Type of the imported(native) data. public enum AudioType { // // 摘要: // 3rd party / unknown plugin format. UNKNOWN = 0, // // 摘要: // Acc - not supported. ACC = 1,
ACC不支持,让我有种 某天回家老婆开心的对我说:老公,咱中500万大奖了,而后再加句:逗你玩 的感受。函数
使用本地asset中的声音来播放,彻底没毛病,遇到网络下载时播放,有可能声音会不完整((wtf)),一开始还觉得是本身的程序有毛病,后来发现播放CBR格式mp3是OK的。
解决办法:将mp3转换成CBR,固定码率。建议使用lame来进行转换,ffmpeg转换CBR并不方便,试了不少次,默认转换后的mp3都是VBR格式的(动态码率)。(这样说来其实mp3音频仍是CBR的兼容性最好。)
另:发现ffmpeg中码率不一致的大几率出毛病,好比:工具
Input #0, mp3, from 'a duck swimming in the sink1.mp3': Metadata: encoder : Lavf58.37.100 Duration: 00:00:01.73, start: 0.069063, bitrate: 33 kb/s Stream #0:0: Audio: mp3, 16000 Hz, mono, fltp, 32 kb/s
duration中的bitrate与stream中的并不一致,这样的文件在unity网络播放时就会出毛病,使用mediainfo时显示信息以下:ui
格式 : MPEG Audio 格式版本 : Version 2 格式配置 (Profile) : Layer 3 时长 : 1 秒 728 毫秒 码率模式 : 动态码率 (VBR) 码率 : 32.0 kb/s 声道数 : 1 声道 采样率 : 16.0 kHz 帧率 : 27.778 FPS (576 SPF) 压缩模式 : 有损 流大小 : 6.75 KiB (97%) 编码函数库 : LAME3.100
本文由博客群发一文多发等运营工具平台 OpenWrite 发布编码