是否可以使用 AVAudioSessionCategoryPlayback 更改 AVPlayer 的音频路由



我有一个AVPlayer,可以在流媒体或音频文件中播放音频。[AVAudioSession sharedInstance]配置了AVAudioSessionCategoryPlayback类别。
它在前景和背景中播放,一切正常。
我想添加此SO问题中描述的功能 当应用程序不在后台时,如何通过内置听筒扬声器播放音频。
我已经阅读了上面的问题和文档,其中说:

可以通过编程方式影响音频输出路由。使用 AVAudioSessionCategoryPlayAndRecord 类别时,音频通常会进入接收器(通话时您放在耳朵上的小扬声器(。您可以使用 overrideOutputAudioPort:error: 方法将音频重定向到电话底部的扬声器。

所以我的问题是:我可以更改我的 AVPlayer 的音频路由来维护AVAudioSessionCategoryPlayback还是必须切换到 AVAudioSessionCategoryPlayAndRecord
将类别更改为AVAudioSessionCategoryPlayAndRecord有什么缺点吗?

您强烈需要使用AVAudioSessionCategoryPlayAndRecord,因为通过overrideOutputAudioPort更改音频路由不适用于AVAudioSessionCategoryPlayback(Apple的文档(

AVAudioSessionCategoryPlayAndRecordAVAudioSessionCategoryPlayback之间没有任何显着差异。

AVAudioSessionCategoryPlayAndRecord对于同时播放和录制语音的VOIP方案是必需的。在您的情况下,您不需要使用 AVAudioSessionCategoryPlayAndRecordAVAudioSessionCategoryPlayback 对于 AVPlayer 来说就足够了。当您只是播放音频文件或流媒体时。

谢谢

最新更新