Swift AVAssetExportSession未导出M4V文件
我正在尝试使用Swift执行一个Swift AVAssetExportSession未导出M4V文件,swift,video,avassetexportsession,m4v,Swift,Video,Avassetexportsession,M4v,我正在尝试使用Swift执行一个AVAssetExportSession,我得到了以下错误:'NSInvalidArgumentException',原因:'Invalid output file type'。我查到这个错误,它说对于视频,Swift只支持QuickTime文件、MP4和AppleM4V,这很奇怪,因为我正在尝试导出M4V文件。然而,我尝试导出一个MP4视频,文件名具有MP4扩展名,outputFileType也是一个MP4文件,效果非常好。后来我把它全部改为M4V(包括导出的视
AVAssetExportSession
,我得到了以下错误:'NSInvalidArgumentException',原因:'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: {
})
感谢您的帮助:)
AVAssetExportPresetHighestQuality
仅支持.mov文件。您必须改用AVAssetExportPresetPassthrough
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)
根据,
AVAssetExportPresetLowQuality
,AVAssetExportPresetMediumQuality
和AVAssetExportPresetHighQuality
仅适用于QuickTime.mov文件
您可以通过尝试打印
AVAssetExportSession
的变量supportedFileTypes
的内容来了解更多信息 AVAssetExportPresetLowQuality
、AVAssetExportPresetMediumQuality
和AVAssetExportPresetHighQuality
也适用于AVFileTypeMPEG4