经过前面几章,我们要来写一个简单的本地播放器,运用到之前说到的AudioFileStream,AudioFile,AVAudioSession
AudioFileStream vs AudioFile
两种都是解析音频信息及分离帧,为什么要同时使用
1.对于网络流播放必须要AudioFileStream,因为我们之前在AudioFile说过Open的时候要求使用者提供数据,如果提供的数据不足会直接跳过并且返回错误码,而数据不足的情况在网络流中很常见,所以没办法使用AudioFile单独进行网络流数据的解析
2.本地音乐播放选用AudioFile更为合适,原因是AudioFileStream是主要用在流播放,虽然不限于网络流和本地流,但是流数据是按顺序提供的所以AudioFileStream也是顺序解析的,被解析的音频文件还是需要符合流播放的特性,对于不符合的本地文件AudioFileStream会在Parse返回NotOptimized错误;而AudioFile的解析过程并不是顺序的,它会在解析时通过回调向使用者索要某个位置的数据,即使数据在文件末尾也没关系,所以AudioFile适用于所有类型的音频文件;
所以我们需要同时使用这两个类,前者可以应对流播放的音频数据,实现边播边缓冲的体验,用AudioFile处理无法流播放的音频数据,让用户在下载完成之后仍然能够进行播放
网友评论