【问题标题】:AVAssetExportSession is not exporting M4V filesAVAssetExportSession 未导出 M4V 文件
【发布时间】:2017-08-13 06:12:42
【问题描述】:

我正在尝试使用 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: {

        })

感谢任何帮助,谢谢:)

【问题讨论】:

    标签: swift video avassetexportsession m4v


    【解决方案1】:

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

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

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

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

    【讨论】:

    • AVAssetExportPresetLowQualityAVAssetExportPresetMediumQualityAVAssetExportPresetHighQuality 也适用于 AVFileTypeMPEG4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多