You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AVPlayer无法播放iPhone相册视频:嵌入主项目后加载失败求助

解决AVPlayer加载相册视频黑屏无法播放的问题

嘿,我懂你遇到的糟心问题了——测试项目里视频播放好好的,挪到主项目就变成黑屏加加载转圈,那个PlugInKit Code=13的错误确实如你查到的,完全可以忽略,咱们直接抓核心问题。

你现在代码里用的UIImagePickerControllerReferenceURL资产库的引用链接(格式一般是assets-library://),它并不是视频文件的直接本地路径。在测试项目里可能因为环境简单、权限宽松,系统能自动帮你解析这个引用,但主项目里受限于沙盒机制、权限配置或者系统版本差异,AVPlayer没办法直接通过这个引用加载到实际的视频文件,所以才会一直卡在加载状态。

修复方案:用直接文件URL替代资产库引用

你需要换成UIImagePickerControllerMediaURL来获取视频的本地文件路径,这个是AVPlayer可以直接读取的文件URL(格式为file://)。修改后的代码如下:

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
    ipc.dismiss(animated: true) {
        // 获取直接的视频文件URL,替代原有的引用URL
        guard let videoURL = info[UIImagePickerControllerMediaURL] as? URL else {
            print("无法获取有效视频文件路径")
            return
        }
        // 保存这个直接URL到UserDefaults
        UserDefaults.standard.set(videoURL, forKey: "LullabyURL")
        
        let player = AVPlayer(url: videoURL)
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player
        self.present(playerViewController, animated: true) {
            playerViewController.player?.play()
        }
    }
}

额外注意事项

  • 确保你的主项目已经在Info.plist中配置了相册访问权限,添加NSPhotoLibraryUsageDescription(iOS 10及以上),描述内容可以写“需要访问相册以选择视频”;如果需要保存视频到相册,还要添加NSPhotoLibraryAddUsageDescription
  • 可以在代码里打印获取到的URL,确认是file://开头的本地路径,而不是assets-library://的引用格式,这样就能快速验证是否获取正确。

按照这个修改后,视频应该就能正常加载播放了。

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

火山引擎 最新活动