AVPlayer vs. AVAudioPlayer
AVPlayer 的文档说明如下:
[The] player works equally well with local and remote media files
但是,AVAudioPlayer 的文档说明如下:
Apple recommends that you use this class for audio playback unless you are playing audio captured from a network stream
对于我正在做的工作,我需要 AVAudioPlayer 的一些功能,但我所有的音频都是流式传输的。我需要从 AVAudioPlayer 获得的 AVPlayer 没有的主要内容是"正在播放"属性。没有该属性就很难构建播放器 UI。
那么 AVPlayer 和 AVAudioPlayer 有什么区别使得后者不适合网络流媒体?有没有办法从 AVAudioPlayer 提供的 AVPlayer 中获取一些信息,例如"正在播放"属性?
AVPlayer 可以使用带有 iPod 库 URL 的 AVURLAsset 从 AVPlayerItem 播放。 AVAudioPlayer 无法从 iPod 库 url 播放。
AVPlayer 没有音量属性,需要使用只能由硬件开关或 MPVolumeView 控制的系统音量设置。但是你可以设置 AVAudioPlayer 的混音音量。
AVPlayer 在搜索后似乎报告了错误的 currentTime。但 AVAudioPlayer 报告准确。
7年后……
从依赖于 Swift 和 CocoaPods 的angular来看,所以我的答案是仅比较 iOS 8。
1. iPod库支持
自iOS6以来的相同支持
2.音量控制
相同的支持:
-
您可以直接设置
AVAudioPlayer 的混合音量。 -
您可以使用
AVPlayerItem 上的AVAudioMix 设置AVPlayer 的混合音量
3.寻求控制
AVPlayer 和 AVAudioPlayer 在搜索后似乎都报告了错误的 currentTime:
-
对于 AVAudioPlayer,建议先
stop() AVAudioPlayer 再寻找 -
对于 AVPlayer,建议在初始化 AVURLAssets 时传递选项
AVURLAssetPreferPreciseDurationAndTimingKey 。并依赖于观察者块给出的值。
4. 改变来源
-
您只需要一个
AVPlayer 即可播放多个文件 -
你需要多个
AVAudioPlayer 来播放多个文件
AVPlayer 其实和 AVAudioPlayer 的播放属性有类似的属性。
看看