我通过AVCaptureSession
录制视频,然后在录制停止后立即通过AVPlayer
播放。
我的问题是,视频中的音频有时会以非常低的音量从耳边的扬声器播放,而有时会从底部的扬声器播放。
如何将音频默认输出到底部扬声器?
我已经看过其他相关的帖子和下面的代码实例,我试过了,但没有avail..Any指导会很感激。
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(.playAndRecord)
try session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)
try session.setActive(true)
} catch {
print ("error")
}
发布于 2021-10-03 10:29:11
您在这里显式地关闭了它:
try session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)
如果你想更喜欢扬声器,你可以使用:
try session.overrideOutputAudioPort(.speaker)
AVAudioSession非常复杂,而且它的许多部分都不直观。在没有阅读每个命令的文档之前,不要复制您在internet上找到的代码。文档很不错,但你必须要读一读。
也就是说,当你切换到播放模式时,我可能会切换你的类别和选项,而不是这样做。你可以在任何时候这样做:
try session.setCategory(.playback, options: [.defaultToSpeaker])
一般来说,最好的做法是让你的类别与你正在做的事情保持一致。如果您在此处将.playback
设置为类别,则可能甚至不需要.defaultToSpeaker
,这取决于您尝试实现的确切目标。
请务必阅读.defaultToSpeaker
、setCategory
、overrideOutputAudioPort
等网站上的所有相关文档,不要照搬我的建议。这些设置有许多微妙的(有记录的)交互,您需要根据您的实际用例对其进行配置,而不是简单地复制“似乎有效”的内容。当用户切换到蓝牙、插入耳机或切换到CarPlay时,您可能会非常惊讶。
https://stackoverflow.com/questions/69421496
复制相似问题