作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中使用 AVQueuePlayer,我需要一个数组,其中包含类型为 [AVPlayerItem] 的轨道。每次 TableView 加载时都必须创建数组。我还有一个包含当前文件夹中元素的数组“内容”来创建表格 View 单元格。如何将这些元素添加到数组“playerQueue”?
class TableViewController: UITableViewController {
var currentDirectory: String?
var content: [String] = []
var player: AVQueuePlayer!
var playerQueue: [AVPlayerItem] = []
override func viewDidLoad() {
super.viewDidLoad()
reloadData()
}
func reloadData(needsReload: Bool = true) {
if currentDirectory == nil {
currentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
}
do {
content = try FileManager.default.contentsOfDirectory(atPath: currentDirectory! )
} catch {
content = []
}
if needsReload {
tableView.reloadData()
}
}
最佳答案
例如,如果您有 .m4v
您的文档文件夹中的文件,您应该找到所有这些文件,然后将您的文件路径转换为 AVPlayerItem 的(URL -> AVURLAsset -> AVPlayerItem),例如:
if let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
if let content = try? FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil) {
let items = content
.filter { $0.pathExtension == "m4v" }
.map { AVURLAsset(url: $0)}
.map { AVPlayerItem(asset: $0) }
player = AVQueuePlayer(items: items)
player?.play()
}
}
关于ios - 如何用本地目录中的 AVPlayerItem 类型的元素填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62912425/
我是一名优秀的程序员,十分优秀!