經(jīng)典的音頻播放流程
1吓坚、讀取 MP3數(shù)據(jù)
2撵幽、解析采樣率、碼率礁击、時(shí)長等信息盐杂,分離 MP3 中的音頻幀
3、對(duì)分離出來的音頻幀解碼得到 PCM 數(shù)據(jù)
4哆窿、對(duì) PCM 數(shù)據(jù)進(jìn)行音效處理(均衡器链烈、混響器等,這一步非必須)
5挚躯、把 PCM 數(shù)據(jù)解碼成音頻信號(hào)
6强衡、把音頻信號(hào)交給硬件播放
7、重復(fù)1-6步码荔,直到播放完成
iOS 系統(tǒng)中漩勤,apple 對(duì)上述的流程進(jìn)行了封裝,并提供了不同層次的接口(圖片來自官方文檔)
? Audio File Services:讀寫音頻數(shù)據(jù)缩搅,可完成播放流程的第2步
? Audio File Stream Services:對(duì)音頻進(jìn)行解碼越败,可完成播放流程中的第2步
? Audio Converter Services:音頻數(shù)據(jù)轉(zhuǎn)換,可完成播放流程中的第3步
? Audio Processing Graph Services:音頻處理模塊硼瓣,可完成播放流程中的第4步
? Audio Unit Services:播放音頻數(shù)據(jù)究飞,可以完成播放流程中的第5、6步
? Extended Audio File Services: Audio File Services和Audio Converter Services的結(jié)合體
? AVAudioPlayer/AVPlayer(AVFoundation): 高級(jí)接口堂鲤,可完成整個(gè)音頻播放流程(包括本地文件播放和和網(wǎng)絡(luò)流播放亿傅,第4步除外)
? Audio Queen Services: 高級(jí)接口,可以進(jìn)行錄音和播放瘟栖,可以完成播放流程中的第3葵擎、5、6步
下圖描述的是使用 AudioFile + AudioConverter + AudioUnit進(jìn)行音頻播放的流程(圖片來自官方文檔)
文章參考自碼農(nóng)人生的博客
此外慢宗,大家不喜勿噴坪蚁,這只是小白的進(jìn)化過程!