Экспорт MP3 с помощью AVAssetExportSession

Теперь у меня есть этот фрагмент кода Swift в приложении iOS, который позволяет мне передавать некоторые аудиофайлы из библиотеки 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.

Я, конечно, пробовал варианты этого кода, но ни один из них не работал.

Было бы здорово, если бы у кого-то был совет, как заставить его работать.


person Michel    schedule 20.09.2019    source источник


Ответы (1)


В случае, если кто-то еще сталкивается с тем же вопросом; вот что в итоге сработало для меня.

Похоже, это не единственное возможное решение, но я не пробовал другое.

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 ....
    }
}
person Michel    schedule 21.09.2019
comment
Здравствуйте, можете ли вы объяснить мне, что такое newFileURL? Я не понимаю. - person VyacheslavBakinkskiy; 25.09.2020
comment
А что такое расширение .caf? Это не .mp3 - person VyacheslavBakinkskiy; 25.09.2020
comment
Это было довольно давно, но, насколько я помню, .caf — это другой формат аудиофайлов. Я думаю, что это сопоставимо с .mp3, но без проблем с лицензией. newFileURL — это просто переменная, которую я должен установить заранее в коде. - person Michel; 27.09.2020