AVPlayer与AVAudioPlayer
AVPlayer的文档声明如下:
播放器与本地和远程媒体文件同样适用
但是, AVAudioPlayer的文档声明如下:
除非您正在播放从networkingstream捕获的audio,否则Applebuild议您使用此类进行audio播放
对于我所做的工作,我需要AVAudioPlayer的一些function,但是我所有的audio都是stream式传输的。 AVPlayer没有的AVAudioPlayer需要的主要function是“播放”属性。 build立一个没有这个属性的玩家UI是很困难的。
那么AVPlayer和AVAudioPlayer有什么区别,使得后者不适合networkingstream媒体? 有没有办法从AVPlayer获得AVAudioPlayer提供的一些信息,如“正在播放”属性?
-
AVPlayer可以使用带有iPod库url的AVURLAsset从AVPlayerItem播放。 AVAudioPlayer无法播放iPod库的url。
-
AVPlayer没有音量属性,需要使用系统音量设置,只能通过硬件开关或MPVolumeView控制。 但是你可以设置AVAudioPlayer的混音音量。
-
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
来播放多个文件