ios - iOS AVPlayer 不播放所有远程文件
问题描述
我正在使用SwiftyDropbox
'sgetTemporaryLink()
播放视频AVPlayer
。我有六个测试文件,它们都按预期工作,除了 1.
一个不起作用的是 41 MB 大小(我不会认为这是一个大的视频文件),其余的小于 22 MB。
我已多次阅读文档AVFoundation
和文档,但无法找到有关最大文件大小的任何内容,尽管我不希望流内容的最大文件大小。SwiftDropbox
我希望它能够连续播放下载到内存的较小块。
我的问题是:
- 播放远程 URL 是否有文件大小限制
AVPlayer
? - 如果没有,是否需要使用某种方式
AVPlayer
来流式传输这些较大的文件?
我正在使用以下代码启动AVPlayer
:
self.previewPlayer.replaceCurrentItem(with: AVPlayerItem(url: URL(fileURLWithPath: url)))
self.previewPlayer.play()
谢谢!
解决方案
您应该观察status
属性的值以了解为什么 playerItem 可能无法播放。这是一个开始的小代码片段:
添加观察者
let url = URL.init(string: "your url string") let item = AVPlayerItem.init(url: url!) item.addObserver(self, forKeyPath: "status", options: .new, context: nil)
检查错误
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") } } }
推荐阅读
- php - Laravel Validator 针对不同表的多个唯一规则
- reactjs - 使用可加载组件在 Now 上部署
- angularjs - 使用 AngularJS 对大表进行排序
- python - 不同框架中的 Tkinter 条目小部件
- forms - SwiftUI 删除 NavigationView 表单中的空白行
- c++ - QWebEngine 不能正确处理相对 url 链接
- c# - 远程调试器命中断点,但 Visual Studio 没有注意到
- ios - 在 iOS 13 上未调用 didConnectPeripheral 委托
- cmake - 如何导出 CMake 属性并在 install(EXPORT ...) 中进行不同的设置
- php - php正则表达式中具有相同名称的两个组