AirPlay:连接到 Apple TV 时音量控制被禁用
Posted
技术标签:
【中文标题】AirPlay:连接到 Apple TV 时音量控制被禁用【英文标题】:AirPlay: volume control is disabled when connected to Apple TV 【发布时间】:2018-07-30 14:28:10 【问题描述】:我正在播客应用中实现 AirPlay 支持。我添加了AVRoutePickerView
,AirPlay 设备加载正常,我可以成功连接到设备。
我在 Apple TV 上进行测试,音频播放良好,但始终使用最大音量,我无法更改。音量滑块被禁用,我不明白为什么会这样,因为它可以在其他应用中使用。
例如,我可以在 Overcast 中更改预期的音量,并且音频不会以最大音量开始:
我做错了什么?我是否缺少任何选项。
更新:
我正在使用 AVPlayer
和 allowsExternalPlayback
属性为 true。
更新 2:
MPVolumeView
也会出现同样的问题。
一些 Reddit 用户告诉我“假设一个人会使用输出设备(电视、音响系统等)的音量控制来控制音量。”、“就像当你通过 hdmi 将 MacBook 插入电视",这是有道理的,但我怎么能强制不使用输出设备来控制音量呢?它在其他播客应用中的工作方式与我预期的一样。
【问题讨论】:
【参考方案1】:在与 DTS 工程师讨论后,他找到了解决方法 (rdar://42881405 使用 AirPlay 连接到 Apple TV 时,音量控制被禁用)。
“根据工程,禁用音量控制对于某些 Apple TV 配置是正确的行为,其中音频通过 HDMI 发送到实际的电视。在这种情况下,音量由电视本身控制。
对纯音频应用(例如 Podcast 和 Overcast)的标准行为进行了更改。在这些情况下,无论如何都会启用音量控制,除了硬件音量控制之外,它还提供音频的软件音量调节。你没有得到这个的原因是你使用了 AVQueuePlayer,它被认为是一个视频播放器,而不是一个纯音频播放器。我修改了您的示例项目以改用 AVAudioPlayer,并且按预期为 AirPlay 输出启用了音量控制。
但是,AVAudioPlayer 无法播放流媒体资产,因此在您的用例中它可能不是一个可行的解决方案。我仍在研究是否可以为其他播放技术获得纯音频行为。”
解决方案:
基本上,将 AVPlayer/AVQueuePlayer 的 allowsExternalPlayback
属性设置为 false
将禁止将视频播放路由到 AirPlay,并且(作为副作用) 允许纯音频播放。
最后说明:
即便如此,我认为使用新的 AVSampleBufferAudioRenderer
和 AVSampleBufferRenderSynchronizer
类也可以,但设置起来要复杂得多。
rdar://42966681 已创建:提供一个 API,用于将使用 AVPlayer/AVQueuePlayer 的应用指定为“仅音频”。
【讨论】:
以上是关于AirPlay:连接到 Apple TV 时音量控制被禁用的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 airplay (Apple TV) 将自定义视图推送到外部显示器
新 Apple TV(第 3 代)上的 Airplay,第二个屏幕不是 1080p
Airplay:从 MPMoviePlayerController 播放电影只会导致音频流式传输到 Apple tv