首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AVPlayer音频输出

AVPlayer音频输出
EN

Stack Overflow用户
提问于 2021-10-03 01:51:49
回答 1查看 44关注 0票数 0

我通过AVCaptureSession录制视频,然后在录制停止后立即通过AVPlayer播放。

我的问题是,视频中的音频有时会以非常低的音量从耳边的扬声器播放,而有时会从底部的扬声器播放。

如何将音频默认输出到底部扬声器?

我已经看过其他相关的帖子和下面的代码实例,我试过了,但没有avail..Any指导会很感激。

代码语言:javascript
运行
复制
let session = AVAudioSession.sharedInstance()

do {
    try session.setCategory(.playAndRecord)
    try session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)
    try session.setActive(true)
} catch {
    print ("error")
}
EN

回答 1

Stack Overflow用户

发布于 2021-10-03 18:29:11

您在这里显式地关闭了它:

代码语言:javascript
运行
复制
try session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)

如果你想更喜欢扬声器,你可以使用:

代码语言:javascript
运行
复制
try session.overrideOutputAudioPort(.speaker)

AVAudioSession非常复杂,而且它的许多部分都不直观。在没有阅读每个命令的文档之前,不要复制您在internet上找到的代码。文档很不错,但你必须要读一读。

也就是说,当你切换到播放模式时,我可能会切换你的类别和选项,而不是这样做。你可以在任何时候这样做:

代码语言:javascript
运行
复制
try session.setCategory(.playback, options: [.defaultToSpeaker])

一般来说,最好的做法是让你的类别与你正在做的事情保持一致。如果您在此处将.playback设置为类别,则可能甚至不需要.defaultToSpeaker,这取决于您尝试实现的确切目标。

请务必阅读.defaultToSpeakersetCategoryoverrideOutputAudioPort等网站上的所有相关文档,不要照搬我的建议。这些设置有许多微妙的(有记录的)交互,您需要根据您的实际用例对其进行配置,而不是简单地复制“似乎有效”的内容。当用户切换到蓝牙、插入耳机或切换到CarPlay时,您可能会非常惊讶。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69421496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档