AVPlayer与AVAudioPlayer

AVPlayer的文档声明如下:

播放器与本地和远程媒体文件同样适用

但是, AVAudioPlayer的文档声明如下:

除非您正在播放从networkingstream捕获的audio,否则Applebuild议您使用此类进行audio播放

对于我所做的工作,我需要AVAudioPlayer的一些function,但是我所有的audio都是stream式传输的。 AVPlayer没有的AVAudioPlayer需要的主要function是“播放”属性。 build立一个没有这个属性的玩家UI是很困难的。

那么AVPlayer和AVAudioPlayer有什么区别,使得后者不适合networkingstream媒体? 有没有办法从AVPlayer获得AVAudioPlayer提供的一些信息,如“正在播放”属性?

  1. AVPlayer可以使用带有iPod库url的AVURLAsset从AVPlayerItem播放。 AVAudioPlayer无法播放iPod库的url。

  2. AVPlayer没有音量属性,需要使用系统音量设置,只能通过硬件开关或MPVolumeView控制。 但是你可以设置AVAudioPlayer的混音音量。

  3. AVPlayer似乎在search后报告错误的currentTime。 但AVAudioPlayer准确报告。

AVPlayer实际上具有与AVAudioPlayer的播放属性相似的属性。 看看rate属性。

7年后…

从依赖Swift和CocoaPods的angular度来看,所以我的答案只是比较iOS 8+

1.支持iPod库

自iOS6以来一直支持

2.音量控制

相同的支持:

  • 您可以直接设置AVAudioPlayer的混音音量。
  • 您可以使用AVPlayer上的AVAudioMix设置AVPlayer的混音音量

3.寻求控制

search后,AVPlayer和AVAudioPlayer似乎都报告错误的currentTime:

  • 对于AVAudioPlayer, build议在查找前stop() AVAudioPlayer
  • 对于AVPlayer,build议在初始化AVURLAssets时传递选项AVURLAssetPreferPreciseDurationAndTimingKey。 并依靠观察员块提供的价值观 。

4.改变来源

  • 你只需要一个AVPlayer来播放多个文件
  • 你需要多个AVAudioPlayer来播放多个文件