iPhone 7 顶部和底部扬声器之间的平移声音

Posted

技术标签:

【中文标题】iPhone 7 顶部和底部扬声器之间的平移声音【英文标题】:Panning sound between top and bottom speaker on iPhone 7 【发布时间】:2018-07-08 17:02:00 【问题描述】:

是否可以将声音平移到 iPhone 7 和更新型号的顶部或底部扬声器?我没有这些手机,但我的理解是当手机处于纵向模式时,ios 会混合立体声并从两个扬声器播放。我知道它将左右声道以横向方式路由到各自的扬声器,但我找不到有关纵向模式行为的文档。

是否可以将播放限制在一个扬声器或另一个扬声器上,或者在顶部和底部之间平移?我的图书馆无法在两个扬声器同时播放的破坏性干扰下运行。

【问题讨论】:

你试过设置 player.pan 吗? OP 或@CatsLoveJazz 能否在 iPhone 7(最好不带耳机)上运行此要点 gist.github.com/rfistman/1c63315d6634112eac8b1f7dc9dffe64 并报告结果?改编自***.com/questions/15643516/… Checkout AVAudioSession 类,我认为你做不到。这在最终用户覆盖的可访问性设置下可用。您可以做的是在扬声器和耳机之间切换。虽然你可以检查这个要点 - gist.github.com/rfistman/1c63315d6634112eac8b1f7dc9dffe64 您是否尝试设置 AvAudioPlayers 的 pan 属性? -1 或 1。 鉴于此Q&A on Reddit,您可能希望your GitHub code 考虑 UIDeviceOrientation,以便您可以在转动手机时左右翻转,即使使用“仅肖像”应用程序也是如此。我认为您在 API 中的接口级别太高,无法获得如此细粒度的控制(根据音量控制和可访问性功能,您要求“播放这个”并且确实如此 - IE:您无法覆盖系统设置)。 【参考方案1】:

原来我的问题被误导了。当您无法自己在设备上进行测试时,很难获得可靠的信息。

在 iPhone 7 及更新机型上,立体声声道实际上被路由到各个扬声器,即使没有立体声分离。左声道路由到底部扬声器,右声道路由到顶部/耳机扬声器。使用 pan 属性也可以完成同样的事情。

最后,channel assignments 还有一个选项。使用AVAudioSession.sharedInstance.currentRoute.outputs,两个扬声器组合显示为单个输出(outputs[0])。此输出内部有两个通道,outputs[0].channels[0]outputs[0].channels[1]。使用声道分配映射到其中任何一个也可以,第一个声道映射到底部扬声器,第二个声道映射到顶部。

这些方法中的任何一种都可以很好地将声音输出路由到新的立体声扬声器,即使手机处于纵向也是如此。

对于任何想在自己的设备上尝试的人,我整理了一个测试应用程序来测试各种方法https://github.com/brian-armstrong/speaker-tester

【讨论】:

以上是关于iPhone 7 顶部和底部扬声器之间的平移声音的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9 Xcode 7 - 应用程序在顶部和底部出现黑条

iOS 9 Xcode 7 - 应用程序在顶部和底部出现黑条

Iphone 我们可以将耳机静音并仅从底部扬声器播放吗?

SKAction playSoundFileNamed 没有声音通过 iphone 扬声器

如何在 iPhone 扬声器上强制播放音频?

将动态视图捕捉到屏幕顶部、底部或中间的统一行为