如何使用 UTI 获取目录中可由 AVPlayer 播放的视频文件列表?

How can I use UTIs to get a list of video files in a directory that are playable by AVPlayer?

我一直在尝试找出如何在 swift 的 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: [=10=])! }
    let dirContents = try! FileManager.default.contentsOfDirectory(at: dir, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles])
    let movies = dirContents.filter { UTI("public.movie") ~= UTI(filenameExtension: [=10=].pathExtension) }
    let playableMovies = movies.filter {
        guard let movieUti = UTI(filenameExtension: [=10=].pathExtension) else {
            return false
        }

        return playableUtis.contains(movieUti)
    }

现在 playableMovies 仅包含 AVPlayer 可播放的电影文件。