經(jīng)過前面幾章武鲁,我們要來寫一個簡單的本地播放器宁昭,運用到之前說到的AudioFileStream骤菠,AudioFile铃肯,AVAudioSession
AudioFileStream vs AudioFile
兩種都是解析音頻信息及分離幀为朋,為什么要同時使用
1.對于網(wǎng)絡(luò)流播放必須要AudioFileStream臂拓,因為我們之前在AudioFile說過Open的時候要求使用者提供數(shù)據(jù),如果提供的數(shù)據(jù)不足會直接跳過并且返回錯誤碼习寸,而數(shù)據(jù)不足的情況在網(wǎng)絡(luò)流中很常見胶惰,所以沒辦法使用AudioFile單獨進(jìn)行網(wǎng)絡(luò)流數(shù)據(jù)的解析
2.本地音樂播放選用AudioFile更為合適,原因是AudioFileStream是主要用在流播放霞溪,雖然不限于網(wǎng)絡(luò)流和本地流孵滞,但是流數(shù)據(jù)是按順序提供的所以AudioFileStream也是順序解析的,被解析的音頻文件還是需要符合流播放的特性鸯匹,對于不符合的本地文件AudioFileStream會在Parse返回NotOptimized錯誤坊饶;而AudioFile的解析過程并不是順序的,它會在解析時通過回調(diào)向使用者索要某個位置的數(shù)據(jù)殴蓬,即使數(shù)據(jù)在文件末尾也沒關(guān)系幼东,所以AudioFile適用于所有類型的音頻文件;
所以我們需要同時使用這兩個類科雳,前者可以應(yīng)對流播放的音頻數(shù)據(jù)根蟹,實現(xiàn)邊播邊緩沖的體驗,用AudioFile處理無法流播放的音頻數(shù)據(jù)糟秘,讓用戶在下載完成之后仍然能夠進(jìn)行播放