VisionOS上AVPlayerViewController静音按钮异常问题求助
问题解决思路
1. 配置AVAudioSession激活音频控制
VisionOS中AVPlayer的音频交互依赖正确的音频会话配置,未设置会导致静音按钮无响应。在初始化AVPlayer前添加以下代码:
import AVFoundation do { let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory(.playback, mode: .default) try audioSession.setActive(true) } catch { print("音频会话配置失败: \(error.localizedDescription)") }
该配置会激活播放类别的音频会话,确保系统能正确响应静音等音频控制指令。
2. 确认启用系统播放控件
检查你的VideoPlayer是否开启了默认播放控件(默认值为true,但手动设置为false会导致控件失效):
VideoPlayer(player: avPlayer) .showsPlaybackControls(true)
3. 同步AVPlayer的静音状态(可选增强)
若需要更稳定的状态同步,可以手动绑定AVPlayer的muted属性:
@State private var isMuted = false private let avPlayer = AVPlayer(url: URL(string: "你的视频地址")!) var body: some View { VideoPlayer(player: avPlayer) .onAppear { avPlayer.muted = isMuted } .onChange(of: isMuted) { newValue in avPlayer.muted = newValue } }
4. 确保视图容器允许交互
检查VideoPlayer所在的父视图是否禁用了点击交互,同时添加合适的尺寸约束:
VideoPlayer(player: avPlayer) .frame(width: 800, height: 600) .allowsHitTesting(true)
关于悬停高亮问题,系统默认播放控件在VisionOS中原生支持悬停效果,若未显示,大概率是音频会话未配置导致控件处于非活跃状态,完成上述第1步配置后通常会恢复正常。
内容的提问来源于stack exchange,提问作者user155542
相关产品推荐
相关产品推荐

