使用 AVAssetExportSession 导出 MP3

Exporting MP3 with AVAssetExportSession

我现在在 iOS 应用程序中有这段 Swift 代码,它允许我将一些音频项目从我设备的 iTunes 库传输到我自己的应用程序的文档目录。

let exportSession = AVAssetExportSession(asset: AVAsset(url: url), 
                                         presetName: AVAssetExportPresetAppleM4A)
exportSession?.shouldOptimizeForNetworkUse = true
exportSession?.outputFileType = AVFileType.m4a
exportSession?.outputURL = newFileURL

exportSession?.exportAsynchronously(completionHandler: {[weak self]
    () -> Void in
    if exportSession!.status == AVAssetExportSession.Status.completed  {
        // All is working fine!!
        .... some useful code ....
    }
}

它适用于 .m4a 类型的媒体项目,但不幸的是不适用于 .mp3 类型的媒体。

我当然尝试过此代码的变体,但 none 成功了。

如果有人能提供使它起作用的提示,那就太好了。

以防其他人遇到同样的问题;这是为我工作的结果。

似乎这不是唯一可能的解决方案,但我没有尝试任何其他解决方案。

let exportSession = AVAssetExportSession(asset: AVAsset(url: url), 
                                         presetName: AVAssetExportPresetPassthrough)
exportSession?.shouldOptimizeForNetworkUse = true
exportSession?.outputFileType = AVFileType.caf
exportSession?.outputURL = newFileURL // File with a .caf extention.

exportSession?.exportAsynchronously(completionHandler: {[weak self]
    () -> Void in
    if exportSession!.status == AVAssetExportSession.Status.completed  {
        // All is working fine!!
        .... some useful code ....
    }
}