AirPlay:连接到Apple TV时,音量控制被禁用

时间:2018-07-30 14:28:11

标签: ios avfoundation avplayer airplay

我正在播客应用中实现 AirPlay支持。我添加了AVRoutePickerView,并且AirPlay设备可以正常加载,并且可以成功连接到设备。

我正在Apple TV上进行测试,音频播放效果很好,但始终使用最大音量,因此无法更改。音量滑块已禁用,我不明白为什么会发生这种情况,因为它可以在其他应用程序中使用。

enter image description here

例如,我可以在“预期的覆盖”中更改音量,并且音频不是从最大音量开始的:

enter image description here

我在做什么错?我错过任何选择了吗?

更新:

我正在使用AVPlayer并且allowsExternalPlayback属性为true。

UPDATE2:

MPVolumeView 也会发生相同的问题。

一些Reddit用户告诉我“ 它假设有人会使用输出设备(电视,音响系统等)的音量控制来控制音量。”,“ 您可以通过hdmi 将MacBook插入电视”,这很有意义,但是如何强制不使用输出设备来控制音量?它可以在其他播客应用程序中正常运行。

1 个答案:

答案 0 :(得分:2)

与DTS工程师讨论后,他找到了解决方法(rdar:// 42881405  使用AirPlay连接到Apple TV时,音量控制被禁用

  

“根据工程,对于某些Apple TV配置,禁用音量控制是正确的行为,其中音频是通过HDMI发送到实际电视的。在这种情况下,音量由电视本身控制。

     

仅音频应用程序(例如Podcast和Overcast)对此标准行为进行了更改。在那些情况下,无论如何都会启用音量控制,并且它除了提供硬件音量控制外,还提供音频的软件音量调节。无法获得此信息的原因是您使用了AVQueuePlayer,它被视为视频播放器,而不是纯音频播放器。我修改了示例项目,改而使用AVAudioPlayer,并且按预期为AirPlay输出启用了音量控件。

     

但是,AVAudioPlayer无法播放流式资产,因此在您的用例中可能不是可行的解决方案。我仍在研究是否可以通过其他播放技术获得纯音频行为。”

解决方案:

基本上,将AVPlayer / AVQueuePlayer的 allowsExternalPlayback 属性设置为 false ,将禁止将视频播放路由到AirPlay,并且(如副作用)可以播放纯音频。

最后的笔记:

即使如此,我认为使用新的AVSampleBufferAudioRendererAVSampleBufferRenderSynchronizer类也可以,但是设置起来更复杂。

创建的rdar:// 42966681:提供使用AVPlayer / AVQueuePlayer将应用程序指定为“仅音频”的API。