AVPlayer 与 AVAudioPlayer

Posted

技术标签:

【中文标题】AVPlayer 与 AVAudioPlayer【英文标题】:AVPlayer vs. AVAudioPlayer 【发布时间】:2011-03-18 00:10:24 【问题描述】:

documentation for AVPlayer 声明如下:

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

但是,documentation for AVAudioPlayer 声明如下:

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

对于我正在做的工作,我需要 AVAudioPlayer 的一些功能,但我所有的音频都是流式传输的。我需要从 AVAudioPlayer 获得的 AVPlayer 没有的主要内容是“正在播放”属性。没有该属性就很难构建播放器 UI。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

是的,我现在正在使用它,但它不是超级方便。不过感谢您的想法! 嗨 Macinjosh,如果您弄清楚两者之间的确切区别,请发布。【参考方案2】:

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

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

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

【讨论】:

如果您需要 AVPlayer 的准确计时,请创建 AVURLAssets 并在初始化时传递选项 AVURLAssetPreferPreciseDurationAndTimingKey。嘘! 这仍然准确吗?在过去的 3 年中是否出现了任何重要的变化?谢谢 错了。对我来说,AVPlayer 在性能和获取当前时间的准确性方面表现完美。当您必须处理图形播放时间路径时,AVPlayer 非常棒。它没有运行愚蠢的 NSTimer,而是在 GCD Block 中运行更流畅。检查示例 - (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block;效果很好。 @mkc842,从 ios 6 开始,AVAudioPlayer 可以从 iPod 库 URL 播放。此外,您可以使用此答案的代码设置 AVPlayer 的音量:***.com/a/6178912/462162【参考方案3】:

7年后……

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

1。 iPod 库支持

identical support since iOS6

2。音量控制

相同的支持:

您可以直接设置AVAudioPlayer的混音音量。 You can set the mix volume of AVPlayer with an AVAudioMix on the AVPlayerItem

3。寻求控制

AVPlayer 和 AVAudioPlayer 在搜索后似乎都报告了不正确的 currentTime:

对于 AVAudioPlayer,it is suggested to stop() the AVAudioPlayer before seeking 对于AVPlayer,建议在初始化AVURLAssets时传递AVURLAssetPreferPreciseDurationAndTimingKey选项。 And rely on values given by observer block。

4。改变来源

您只需一个AVPlayer 即可播放多个文件 播放多个文件需要多个AVAudioPlayer

【讨论】:

我要补充一点,AVPlayer 的完成和错误处理搞砸了(通知中心、kvo、当本地路径错误时根本不报告错误等)。 AVAudioPlayer 具有 do-catch 错误和完成处理程序。

以上是关于AVPlayer 与 AVAudioPlayer的主要内容,如果未能解决你的问题,请参考以下文章

UISlider 不能与 AVPlayer 一起正常工作

AVPlayer 与 AVAudioPlayer

AVPlayer 音量控制

AVPlayer 与 AWS Cookie 使用 AirPlay

AVPlayer 加载缓慢

如何在具有 AVPlayer 类的应用程序中设置放大音量?