You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apple Watch上播放视频?iOS可用代码在WatchOS报AVPlayer不在作用域错误

核心问题原因

WatchOS对AVKit相关API的支持有明确的版本门槛,你当前遇到Cannot find 'AVPlayer' in scope报错,以及iOS端正常、Watch端无法运行的问题,按以下步骤即可解决:

解决步骤

1. 调整项目部署版本

AVPlayer和SwiftUI原生VideoPlayer组件在WatchOS上的最低支持版本为WatchOS 7.0,如果你的项目Watch端的部署目标低于该版本,直接在Xcode的Watch App target设置中,把Deployment Target修改为7.0或更高版本即可解决找不到类的报错。

2. 修正代码实现

你当前的代码把AVPlayer初始化放在body内,每次View刷新都会重复创建播放器实例,会导致播放异常,同时强制解包资源路径也会有崩溃风险,优化后的可运行代码如下:

import SwiftUI
import AVKit

struct ContentView: View {
    // 用@State持有播放器实例,避免重复创建
    @State private var player: AVPlayer?
    
    var body: some View {
        if let player = player {
            VideoPlayer(player: player)
                .ignoresSafeArea()
                .onAppear {
                    player.play()
                }
        } else {
            Text("资源加载失败")
        }
        .onAppear {
            // 安全读取本地视频资源
            guard let videoPath = Bundle.main.path(forResource: "Dou", ofType: "mp4") else {
                return
            }
            let videoUrl = URL(fileURLWithPath: videoPath)
            player = AVPlayer(url: videoUrl)
        }
    }
}

3. 额外兼容方案(需支持WatchOS 6及更早版本时使用)

如果你的项目需要兼容更低版本的WatchOS,不能使用SwiftUI原生VideoPlayer,可以通过WKInterfaceObjectRepresentable封装WatchKit的WKMoviePlayerView实现播放功能。

注意事项
  • 确认视频资源已经勾选了Watch App/Watch Extension target的Membership,不要只放在iOS的target下,否则会读取不到资源。
  • WatchOS对视频编码有严格要求,必须使用H.264编码,分辨率建议控制在1280*720及以下,避免出现只有声音无画面的问题。

内容的提问来源于stack exchange,提问作者闪电狮

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:45:07