AVPlayer与AVAudioPlayer

mac*_*osh 45 iphone audio streaming core-audio ios4

AVPlayer文档说明如下:

[该]播放器同样适用于本地和远程媒体文件

但是,AVAudioPlayer文档说明如下:

Apple建议您使用此类进行音频播放,除非您正在播放从网络流捕获的音频

对于我正在做的工作,我需要一些AVAudioPlayer的功能,但我的所有音频都在流式传输.AVAlayer没有的AVAudioPlayer主要需要的是"播放"属性.没有该属性,很难构建一个玩家UI.

那么AVPlayer和AVAudioPlayer之间的区别是什么让后者不适合网络流?有没有办法从AVAlayer获得AVAudioPlayer提供的一些信息,如"播放"属性?

小智 37

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

  2. AVPlayer没有卷属性,需要使用系统卷设置,该设置只能由硬件开关或MPVolumeView控制.但您可以设置AVAudioPlayer的混音量.

  3. AVPlayer似乎在搜索后报告了错误的currentTime.但AVAudioPlayer报告准确.

  • 如果你需要精确计时AVPlayer创建AVURLAssets并在初始化时传递选项```AVURLAssetPreferPreciseDurationAndTimingKey```.好哇! (3认同)
  • 这仍然准确吗?过去3年是否出现了重大变化?谢谢 (3认同)
  • 错误的。对我来说,AVPlayer 在性能、获取当前时间的准确性方面做得很完美。当您必须处理图形播放时间路径时,AVPlayer 非常有用。它不是运行愚蠢的 NSTimer,而是在 GCD Block 中运行更流畅。检查样本 - (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block; 它很好用。 (2认同)

Cœu*_*œur 23

7年后......

从依赖Swift和CocoaPods的角度来看,我的答案是仅针对iOS 8+进行比较.

1. iPod库支持

iOS6以来的相同支持

2.音量控制

相同的支持:

3.寻求控制

在寻求之后,AVPlayer和AVAudioPlayer似乎都报告了一个不正确的currentTime:

4.改变来源

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


tad*_*jsv 7

AVPlayer实际上具有与AVAudioPlayer的播放属性类似的属性.看看rate酒店.