swift - 如何使用 UTI 获取目录中可由 AVPlayer 播放的视频文件列表?
问题描述
我一直在尝试找出如何在 macOS 上快速使用 UTI(统一类型标识符),但找不到任何东西。有谁知道我如何使用 UTI 获取 AVPlayer 可播放的目录中的视频文件列表?
解决方案
使用 Hiroki Kato 的 UTIKit ( https://github.com/cockscomb/UTIKit ):
let dir = URL(fileURLWithPath: "./your_dir_here")
let mimeTypes = AVURLAsset.audiovisualMIMETypes()
let playableUtis = mimeTypes.map { UTI(mimeType: $0)! }
let dirContents = try! FileManager.default.contentsOfDirectory(at: dir, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles])
let movies = dirContents.filter { UTI("public.movie") ~= UTI(filenameExtension: $0.pathExtension) }
let playableMovies = movies.filter {
guard let movieUti = UTI(filenameExtension: $0.pathExtension) else {
return false
}
return playableUtis.contains(movieUti)
}
现在playableMovies
只包含可播放的电影文件AVPlayer
。
推荐阅读
- python - Python Flask 应用程序的应用引擎灵活环境问题
- mysql - 带有触发器的 MySQL 错误 #1054“字段列表中的未知列”
- r - ggplot如何在R中垂直而不是水平“读取”数据
- dax - SSAS DAX 总计与实际总和不匹配
- javascript - React Native 尝试将坐标传递给折线得到错误:NSNumber 无法转换为 NSDictionary
- console.log - 如何在至少 2 行的箭头函数中插入 console.log
- docker - 如何将 NGINX 代理网络设置为 wikijs 正确?
- java - JPA多对多级联问题
- keycloak - Keycloak未获得授权
- wordpress - 提供带有低分辨率自定义徽标 WordPress 的图像