AVAssetExportSession 不导出 M4V 文件
AVAssetExportSession is not exporting M4V files
我正在尝试使用 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: {
})
感谢任何帮助,谢谢:)
AVAssetExportPresetHighestQuality
仅支持 .mov 文件。您必须改用 AVAssetExportPresetPassthrough
。
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)
根据 Documentation,AVAssetExportPresetLowQuality
、AVAssetExportPresetMediumQuality
和 AVAssetExportPresetHighQuality
仅适用于 QuickTime .mov 文件。
您可以通过尝试打印 AVAssetExportSession
的变量 supportedFileTypes
的内容来了解更多信息。
我正在尝试使用 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: {
})
感谢任何帮助,谢谢:)
AVAssetExportPresetHighestQuality
仅支持 .mov 文件。您必须改用 AVAssetExportPresetPassthrough
。
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)
根据 Documentation,AVAssetExportPresetLowQuality
、AVAssetExportPresetMediumQuality
和 AVAssetExportPresetHighQuality
仅适用于 QuickTime .mov 文件。
您可以通过尝试打印 AVAssetExportSession
的变量 supportedFileTypes
的内容来了解更多信息。