【问题标题】:Getting video file type formats from UTI's从 UTI 获取视频文件类型格式
【发布时间】:2018-01-05 19:04:36
【问题描述】:

我正在构建一个使用AVFoundation 的视频编辑应用程序。当用户导入他们的视频时(通过NSOpenPanel 文件浏览器),我只想让他们选择AVFoundation 支持的可接受的视频格式。

您可以通过在 AVURLAsset 上调用 audioVisualTypes() 来检索那些接受的格式。但是,这些格式包含很多我不需要的乱码/东西,例如:

 "public.mpeg",


    "dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq81q4peqz1w88brrz2de7a",
        "public.dv-movie",
        "public.pls-playlist",

"dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c6durvy0g2pyrf106p50r3wc62pusb0gnpxrsbw0s7pwru",
    "public.aac-audio",

有没有人知道如何将这些解析为一个简单的文件扩展名数组?谢谢

【问题讨论】:

    标签: ios macos avfoundation


    【解决方案1】:

    您想使用函数 UTTypeCopyPreferredTagWithClass。在操场上试试这个

    import MobileCoreServices
    import AVFoundation
    
    let avTypes = AVURLAsset.audiovisualTypes()
    
    let anAVType = avTypes[0]
    
    if let ext = UTTypeCopyPreferredTagWithClass(anAVType as CFString,kUTTagClassFilenameExtension)?.takeRetainedValue() {
        print("The AVType \(anAVType) has extension '\(ext)'")
    }
    else {
        print("Can't find the extension for the AVType '\(anAVType)")
    }
    
    print("\n")
    
    let avExtensions = avTypes.map({UTTypeCopyPreferredTagWithClass($0 as CFString,kUTTagClassFilenameExtension)?.takeRetainedValue() as String? ?? ""})
    
    print("All extensions = \(avExtensions)\n")
    
    avExtensions = avExtensions.filter { $0.isEmpty == false }
    
    print("All extensions filtered = \(avExtensions)\n")
    
    print("First extension = '\(avExtensions[0])'")
    print("Second extension = '\(avExtensions[1])'")
    print("Third extension = '\(avExtensions[2])'")
    

    结果:

    The AVType AVFileType(_rawValue: public.pls-playlist) has extension 'pls'
    
    
    All extensions = ["pls", "", "aifc", "m4r", "", "", "wav", "", "", "3gp", "3g2", "", "", "", "flac", "avi", "m2a", "", "aa", "", "aac", "mpa", "", "", "", "", "", "m3u", "mov", "aiff", "ttml", "", "m4v", "", "", "amr", "caf", "m4a", "mp4", "mp1", "", "m1a", "mp4", "mp2", "mp3", "itt", "au", "eac3", "", "", "webvtt", "", "", "vtt", "ac3", "m4p", "", "", "mqv"]
    
    All extensions filtered = ["pls", "aifc", "m4r", "wav", "3gp", "3g2", "flac", "avi", "m2a", "aa", "aac", "mpa", "m3u", "mov", "aiff", "ttml", "m4v", "amr", "caf", "m4a", "mp4", "mp1", "m1a", "mp4", "mp2", "mp3", "itt", "au", "eac3", "webvtt", "vtt", "ac3", "m4p", "mqv"]
    
    First extension = 'pls'
    Second extension = 'aifc'
    Third extension = 'm4r'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多