AVPlayer 和 AVAudioPlayer 在功能方面有啥区别?

Posted

技术标签:

【中文标题】AVPlayer 和 AVAudioPlayer 在功能方面有啥区别?【英文标题】:What's the difference between AVPlayer and AVAudioPlayer in terms of functionality?AVPlayer 和 AVAudioPlayer 在功能方面有什么区别? 【发布时间】:2015-07-03 23:05:40 【问题描述】:

我一直在尝试使用AVAudioPlayer 在我的应用程序中播放远程 MP3 文件,并且我已经阅读了 Stack Overflow 上的其他一些答案,但我仍然无法让它工作。我正在阅读的常见建议是使用AVPlayer 而不是AVAudioPlayer。我不知道这是为什么。此外,在其中一个问题中,接受的答案提到需要创建AVPlayer 的实例才能在应用程序中使用它。我该怎么办?

【问题讨论】:

答题有***.com/questions/3282866/avplayer-vs-avaudioplayer 【参考方案1】:

您阅读的内容是正确的。创建 AVPlayer 的实例将允许您成功运行代码。

你应该在你想调用它的地方初始化你的 AVPlayer。

var myPlayer = AVPlayer()

现在,在代码中的一个单独位置,尝试如下操作:

func playAudio() 

//initialize whatever you have to (you seem to have that correct)
//now call myPlayer.play(), and that should work correctly 


如果这有帮助,请告诉我。

【讨论】:

耶!它现在似乎工作了...... idk为什么在函数之外初始化 AVPlayer 有帮助。你能解释一下吗? 谢谢。但是如何从 AVPlayer 获取持续时间? @user3163404 您可以通过 currentItem 方法“yourAVPlayerInstance.currentItem.duration”获取它。 @user817238593 我相信在函数中初始化一个项目并取消分配与范围有关,以及当变量不再使用时 Swift 如何自我清理。例如,每当您在范围内声明变量时,该类都无权访问它。一旦函数运行,我假设它用来保存信息的任何变量都是垃圾收集的。因此,如果您在完成它的函数内初始化 AVPlayer 实例,则会被垃圾收集和释放。

以上是关于AVPlayer 和 AVAudioPlayer 在功能方面有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MPRemoteCommandCenter 为 AVPlayer 和 AVAudioPlayer 添加当前时间和持续时间的位置

iOS AvPlayer AvAudioPlayer音频的后台播放问题

本地文件使用 AVAudioPlayer 播放,但不使用 AVPlayer?

访问 iPod 库以使用 AVAudioPlayer 或使用 AVPlayer 远程控制事件

如何仅使用 AVAudioPlayer 或 AVPlayer 播放 PCM 数据/缓冲区?

iOS 13+ 应用程序的 AVAudioPlayer AVPlayer AVQueuePlayer MPMusicPlayerController MPRemoteCommandCenter MPN