iOS AVPlayer не проигрывает все удаленные файлы

Я использую SwiftyDropbox"s getTemporaryLink() чтобы воспроизвести видео в AVPlayer, У меня шесть тестовых файлов, и все они работают как положено, кроме 1.

Тот, который не работает, имеет размер 41 МБ (который я бы не рассматривал как большой видеофайл), остальные - < 22 МБ.

Я прочитал AVFoundation а также SwiftDropbox документацию много раз, и я не смог найти ничего о максимальном размере файла, хотя я не ожидал бы максимального размера файла для потокового контента. Я ожидаю, что он будет непрерывно воспроизводить небольшие фрагменты, загруженные в память.

Мои вопросы:

  1. Существует ли ограничение на размер файла при воспроизведении удаленного URL в AVPlayer?
  2. Если нет, есть ли определенный способ мне нужно использовать AVPlayer для потоковой передачи этих больших файлов?

Я использую следующий код для запуска AVPlayer:

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

Спасибо!

1 ответ

Вы должны соблюдать значение 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")
            }
        }
    }
    
Другие вопросы по тегам