官方說支持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 發佈編碼