ric*_*ira 3 avfoundation ios avplayer airplay
我正在播客应用程序中实现AirPlay 支持。我添加了一个AVRoutePickerView,AirPlay 设备加载正常,我可以成功连接到设备。
我正在 Apple TV 上进行测试,音频播放得很好,但它始终使用最大音量,我无法更改它。音量滑块被禁用,我无法理解为什么会发生这种情况,因为它可以在其他应用程序中使用。
例如,我可以更改 Overcast 中预期的音量,但音频不会以最大音量开始:
我究竟做错了什么?我是否缺少任何选项。
更新:
我正在使用AVPlayerandallowsExternalPlayback属性是 true 。
更新2:
同样的问题也发生在MPVolumeView.
一些 Reddit 用户告诉我“它假设一个人会使用输出设备(电视、音响系统等)的音量控制来控制音量。 ”,“就像当你通过 HDMI 将 MacBook 插入电视一样”,并且它有道理,但我怎样才能强制不使用输出设备来控制音量呢?它的工作原理正如我在其他播客应用程序中所预期的那样。
在与 DTS 工程师讨论后,他找到了一个解决方法(rdar://42881405\n使用 AirPlay 连接到 Apple TV 时音量控制被禁用)。
\n\n\n“根据工程设计,对于某些 Apple TV 配置,禁用音量控制是正确的行为,其中音频通过 HDMI 发送到实际的电视。在这种情况下,音量由电视本身控制。
\n此标准行为的更改是针对纯音频应用程序(例如 Podcasts 和 Overcast)。在这些情况下,无论如何都会启用音量控制,并且除了硬件音量控制之外,它还提供音频的软件音量调整。您\xe2\x80\x99t得到这个的原因是您使用了AVQueuePlayer,它被视为视频播放器,而不是纯粹的音频播放器。我修改了您的示例项目以使用 AVAudioPlayer 代替,并且按预期为 AirPlay 输出启用了音量控制。
\n但是,AVAudioPlayer 无法播放流媒体资源,因此在您的用例中它可能不是一个可行的解决方案。我\xe2\x80\x99m仍在研究是否可以通过其他播放技术获得纯音频行为。”
\n
基本上,将allowsExternalPlaybackAVPlayer/AVQueuePlayer 的属性设置为false将禁止将视频播放路由到 AirPlay,并且(作为副作用)允许纯音频播放。
即便如此,我认为使用新的AVSampleBufferAudioRenderer和AVSampleBufferRenderSynchronizer类也可以,但它们的设置要复杂得多。
rdar://42966681 已创建:提供一个 API,用于将使用 AVPlayer/AVQueuePlayer 的应用程序指定为“仅音频”。
\n| 归档时间: |
|
| 查看次数: |
5093 次 |
| 最近记录: |