【问题标题】:iOS AVPlayer not playing all remote filesiOS AVPlayer 不播放所有远程文件
【发布时间】:2018-08-03 00:45:30
【问题描述】:

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

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

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

我的问题是:

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

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

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

谢谢!

【问题讨论】:

  • 你试过不同的网址吗?
  • 是的。本地文件有效,http://clips.vorwaerts-gmbh.de/VfE_html5.mp4 远程视频有效。
  • 对远程内容使用let url = URL.init(string: urlStr) 而不是URL(fileURLWithPath: url)
  • 谢谢,@Adeel。做一些阅读,似乎URL(fileURLWithPath:) 是用于文件系统的;但是,它也适用于远程路径。这是否是有意的,我不知道。我还发现同一个 Dropbox 文件夹中的所有其他视频文件都按预期工作。不起作用的那个更大(41 MB)。我现在想知道AVPlayer 是否有文件大小限制。
  • 我确定文件大小没有限制。我的一个应用程序流式传输大小超过 1GB 的电影文件。要知道到底发生了什么,您应该对AVPlayerItem 进行键值观察。具体观察status属性的值。

标签: ios avfoundation dropbox avplayer swiftydropbox


【解决方案1】:

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

  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")
            }
        }
    }
    

【讨论】:

  • 它不会失败。状态变为.readyToPlay,但实际上并没有开始播放。同样,这只发生在我的一个测试视频中。
  • 测试视频为.mp4.mov文件。不工作的是.mov,但另一个.mov 工作。
  • 尝试一件事,下载该文件并从应用程序包中播放它。
  • 那么问题可能出在这个文件上。它可以在其他播放器中播放吗?
  • 是的,它在浏览器和 QuickTime 中播放没有问题。它实际上有一个“味精”水印。我想知道它是否具有阻止 AVPlayer 播放的版权?
猜你喜欢
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2016-07-11
相关资源
最近更新 更多