iOS 17中AVPlayerViewController无法正常工作问题求助
解决方案:AVPlayerViewController在iOS 17上的播放异常修复
核心修复步骤:
强制在主线程处理AVKit组件
iOS 17对AVPlayerViewController、AVPlayer的线程要求更严格,必须确保所有实例化、配置操作在主线程执行。修改代码如下:DispatchQueue.main.async { let playerVC = AVPlayerViewController() guard let videoURL = URL(string: "myVideoURL") else { return } let player = AVPlayer(url: videoURL) playerVC.player = player self.present(playerVC, animated: true) { player.play() } }验证视频URL有效性
iOS 17加强了对非HTTPS资源的限制,同时无效URL会直接触发播放器异常。建议提前验证链接可用性:guard let videoURL = URL(string: "myVideoURL") else { return } let task = URLSession.shared.dataTask(with: videoURL) { _, response, error in if let error = error { print("视频链接无效:\(error.localizedDescription)") return } // 链接有效再回到主线程初始化播放器 DispatchQueue.main.async { let playerVC = AVPlayerViewController() let player = AVPlayer(url: videoURL) playerVC.player = player self.present(playerVC, animated: true) { player.play() } } } task.resume()正确配置音频会话
iOS 17对音频会话的初始化时机要求更高,播放前需提前配置:import AVFoundation do { try AVAudioSession.sharedInstance().setCategory(.playback, mode: .moviePlayback) try AVAudioSession.sharedInstance().setActive(true) } catch { print("音频会话配置失败:\(error.localizedDescription)") }移除URL强制解包
原代码中URL(string: "myVideoURL")!的强制解包会隐藏URL无效的问题,改用可选绑定处理,避免隐性崩溃。
错误原因说明:
AVSystemController分配失败:基本是因为在非主线程操作AVKit组件,导致系统媒体服务初始化异常。- 命令26返回-12784错误:对应
AVErrorInvalidItemProperty,通常是视频资源不可用、URL无效,或播放器初始化时机错误引发。
内容的提问来源于stack exchange,提问作者AleGiovane
相关产品推荐
相关产品推荐

