Этот вопрос был действительно для меня больше о том, как отлаживать это, а не о том, что на самом деле было проблемой, которая препятствовала экспорту. Был в состоянии найти метод defineCompatibleFileTypes на AVAssetExportSession
. Этот метод сообщает о форматах, в которые можно экспортировать входные файлы. Оказывается, сессия экспорта не может экспортировать файлы .mp3 в форматы .mp4 или .m4v, простая проверка перед экспортом устраняет эту проблему:
exportSession.determineCompatibleFileTypes { (fileTypes) in
if fileTypes.contains(.m4v) {
exportSession.outputFileType = .m4v
} else {
exportSession.outputFileType = .mov
}
}
У нас есть своего рода жесткий контроль над тем, какие типы входящих носителей мы используем. так что этот уровень простоты работает для нас, однако, его можно легко расширить, чтобы он подходил для более сложного разнообразия.
Комментарий Роба Нейпира был действительно привлекательным, поскольку ответ в конечном итоге не 't l ie в части NSUnderlyingError=0x600003f089f0
этой ошибки, но вместо этого в описании. Моя проблема заключалась в том, что я не прочитал ошибку и изначально понял, что это указывало на тот факт, что носитель, который я давал сеансу, не был поддержан тем носителем, который я запрашивал из сеанса.
Надеюсь, это поможет кому-то другому, кто плохо знаком с AV apis, так быстро, как я, мне потребовалось несколько дней, чтобы выследить:)
Спасибо всем, кто посмотрел или ушел комментарий!