2017-08-13 44 views
0

我想用Swift做AVAssetExportSession,我得到這個錯誤:'NSInvalidArgumentException', reason: 'Invalid output file type'。我查找了這個錯誤,它說,對於視頻,Swift只支持QuickTime文件,MP4和AppleM4V,這很奇怪,因爲我試圖導出一個M4V文件。不過,我嘗試導出一個MP4視頻,文件名具有MP4擴展名,而outputFileType也是一個MP4文件,它的效果非常好。我後來改成了M4V(包括被導出的視頻是一個M4V文件),它給了我錯誤。難道我做錯了什麼?我的代碼是樓下:AVAssetExportSession不導出M4V文件

let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality) 

     let filename = "filename.m4v" 

     let documentsDirectory = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).last! 

     let outputURL = documentsDirectory.appendingPathComponent(filename) 

     exporter?.outputURL = outputURL 
     exporter?.outputFileType = AVFileTypeAppleM4V 

     exporter?.exportAsynchronously(completionHandler: { 

     }) 

任何幫助表示讚賞,感謝:)

回答

0

AVAssetExportPresetHighestQuality只支持傳送文件。您必須改用AVAssetExportPresetPassthrough

let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough) 

按照DocumentationAVAssetExportPresetLowQualityAVAssetExportPresetMediumQualityAVAssetExportPresetHighQuality僅用於QuickTime的傳送文件。

您可以通過嘗試打印AVAssetExportSession的變量supportedFileTypes的內容來了解​​更多信息。

+2

'AVAssetExportPresetLowQuality','AVAssetExportPresetMediumQuality'和'AVAssetExportPresetHighQuality'也​​適用於'AVFileTypeMPEG4' – Rezwan

相關問題