首页 > 解决方案 > iOS AVPlayer 不播放所有远程文件

问题描述

我正在使用SwiftyDropbox'sgetTemporaryLink()播放视频AVPlayer。我有六个测试文件,它们都按预期工作,除了 1.

一个不起作用的是 41 MB 大小(我不会认为这是一个大的视频文件),其余的小于 22 MB。

我已多次阅读文档AVFoundation和文档,但无法找到有关最大文件大小的任何内容,尽管我不希望流内容的最大文件大小。SwiftDropbox我希望它能够连续播放下载到内存的较小块。

我的问题是:

  1. 播放远程 URL 是否有文件大小限制AVPlayer
  2. 如果没有,是否需要使用某种方式AVPlayer来流式传输这些较大的文件?

我正在使用以下代码启动AVPlayer

self.previewPlayer.replaceCurrentItem(with: AVPlayerItem(url: URL(fileURLWithPath: url)))
self.previewPlayer.play()

谢谢!

标签: iosavfoundationdropboxavplayerswiftydropbox

解决方案


您应该观察status属性的值以了解为什么 playerItem 可能无法播放。这是一个开始的小代码片段:

  1. 添加观察者

    let url = URL.init(string: "your url string")
    let item = AVPlayerItem.init(url: url!)
    item.addObserver(self,
                     forKeyPath: "status",
                     options: .new,
                     context: nil)
    
  2. 检查错误

    override func observeValue(forKeyPath keyPath: String?,
                               of object: Any?,
                               change: [NSKeyValueChangeKey : Any]?,
                               context: UnsafeMutableRawPointer?) {
        if let item = object as? AVPlayerItem, keyPath == "status" {
            if item.status == .failed {
                print(item.error?.localizedDescription ?? "Unknown error")
            }
        }
    }
    

推荐阅读