同时使用 AVAudioPlayer 和 MPMoviePlayerController

Posted

技术标签:

【中文标题】同时使用 AVAudioPlayer 和 MPMoviePlayerController【英文标题】:Using AVAudioPlayer and MPMoviePlayerController simultaneously 【发布时间】:2009-08-07 04:45:07 【问题描述】:

我需要同时使用 AVAudioPlayerMPMoviePlayerController,即可以在播放背景循环的同时播放电影。 当电影开始播放时,我的 bg 音乐循环停止工作,所以我尝试停止 bg 音乐循环并开始播放电影,当电影停止时,再次开始播放 bg 循环,但这也不起作用。

【问题讨论】:

如果是,应该如何使用 AudioQueue 来完成?我是 iPhone 新手,理解 AudioQueue 文档对我来说真的很困难。 好吧我的错误是停止和播放 AVAudioPlayer 在开始和停止电影之前确实有效,但是如果是这样的话,真的不可能 吗? 【参考方案1】:

事实上,从 3.x 开始就可以实现。我曾经在我的一个应用程序中这样做过,它与任何后台或任何其他新的 ios 功能无关。您只需要正确配置音频会话。如果您确保您的音频播放器和视频播放器都在使用环境音频会话,这是可能的。

在开始您的AVAudioPlayer 播放之前,将音频会话的类别设置为AVAudioSessionCategoryAmbient。这是系统范围的通用音频会话。这允许其他声音一起播放,例如来自 iPod 应用程序的声音。

如果您在 iOS 3.2 或更高版本中使用 MPMoviePlayerController,请确保将 useApplicationAudioSession 设置为 NO。这可以确保其他声音一起播放。这是早期 iOS 版本中的默认设置。

【讨论】:

嘿,它成功了,谢谢。如果有人想知道如何设置音频会话类别,请使用它。 [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];【参考方案2】:

当前的 iPhone SDK(2.x 和 3.x)存在一个限制,不允许在 MPMoviePlayerController API 中播放电影时播放任何背景音频。不幸的是,目前无法在 iPhone SDK 中执行您所要求的操作。

我会向 Apple 建议 logging an enhancement request 在 SDK 的未来版本中提供此功能。

【讨论】:

以上是关于同时使用 AVAudioPlayer 和 MPMoviePlayerController的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVAudioPlayer 同时播放多个声音

AVAudioPlayer 失真

AVAudioPlayer 帮助:同时播放多个声音,一次停止所有声音,并解决自动引用计数

循环播放无间隙的 AVAudioPlayer

如何同时播放多个音频文件

AVAudioRecorder & AVAudioPlayer - 内置扬声器的声音输出,如何更改?