AVAssetExportSession未导出M4V文件

时间:2017-08-13 06:12:43

标签: swift video avassetexportsession m4v

我正在尝试使用Swift进行AVAssetExportSession,我收到此错误:'NSInvalidArgumentException', reason: 'Invalid output file type'。我查了一下这个错误,它说对于视频,Swift只支持QuickTime文件,MP4和AppleM4V,这很奇怪,因为我试图导出一个M4V文件。但是,我尝试导出MP4视频,文件名为MP4扩展名,outputFileType也是MP4文件,效果惊人。我后来改为M4V(包括导出的视频是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: {

        })

感谢任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:1)

AVAssetExportPresetHighestQuality仅支持.mov文件。您必须改为使用AVAssetExportPresetPassthrough

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

根据DocumentationAVAssetExportPresetLowQualityAVAssetExportPresetMediumQualityAVAssetExportPresetHighQuality仅适用于QuickTime .mov文件。

您可以尝试打印supportedFileTypes的变量AVAssetExportSession的内容,以了解更多信息。