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

tvOS开发调用AVPlayerViewController全屏播放时报AddInstanceForFactory错误如何解决

tvOS AVPlayer全屏播放故障修复方案

核心问题定位

你日志中打印的三类报错均为tvOS模拟器的已知兼容类日志,不是导致播放器无法正常工作的根本原因,核心问题出在两点:

  1. 你使用了HTTP协议的视频资源,默认App Transport Security(ATS)规则禁止加载非HTTPS的网络资源,导致视频加载被拦截
  2. 代码中提前在viewDidLoad初始化AVPlayer,资源预加载超时后点击播放时已经失效

修复步骤

  • 第一步:配置ATS权限,允许HTTP资源加载
    打开项目的Info.plist,添加如下配置:
    新增NSAppTransportSecurity(类型为字典),在该字典下新增NSAllowsArbitraryLoads(类型为布尔值),值设为YES。如果是生产环境建议只给指定域名添加例外,避免全开ATS风险。
  • 第二步:优化代码逻辑,将播放器初始化移到点击触发时执行
    优化后的代码如下:
import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {
    let avPlayerViewController = AVPlayerViewController()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func playButtonTapped(_ sender: Any) {
        guard let movieURL = URL(string: "http://techslides.com/demos/sample-videos/small.mp4") else {
            return
        }
        let avPlayer = AVPlayer(url: movieURL)
        avPlayerViewController.player = avPlayer
        // 弹出播放器并播放
        self.present(avPlayerViewController, animated: true) {
            avPlayer.play()
        }
    }
}
  • 第三步:测试验证
    优先使用tvOS真机测试,模拟器出现播放异常时可尝试重置模拟器( Simulator -> Device -> Erase All Content and Settings )后重新运行,避免模拟器缓存导致的异常。

补充说明:日志中的libquic failed、MEMixerChannel、工厂ID未注册三类报错均为tvOS模拟器的系统级日志,和业务代码无关,修复上述两个核心问题后即可正常播放视频,这些日志可以直接忽略。

内容的提问来源于stack exchange,提问作者Idesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:15:04