2017-07-29 9 views
2

AVFoundationを使用するビデオ編集アプリケーションを構築しています。ユーザーがビデオを(NSOpenPanelファイルブラウザ経由で)読み込むと、AVFoundationがサポートする許容可能なビデオ形式を選択できるようにしたい。UTIのビデオファイル形式を取得する

AVURLAssetでaudioVisualTypes()を呼び出すことで、これらの受け入れられた形式を取得できます。しかし、これらのフォーマットは私が必要としないちんぷんかんぷん/多くのものが含まれ、例:

"public.mpeg", 


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

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

誰でもファイル拡張子の単純な配列にこれらを解析する方法のアイデアを持っていますか?ありがとう

答えて

0

あなたは関数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' 
関連する問題