AVAssetDownloadTask iOS13 - PullRequest
       59

AVAssetDownloadTask iOS13

2 голосов
/ 01 октября 2019

Пробовал iOS13.0 и iOS13.1 и все еще не работает, я пробовал оба AVAggregateAssetDownloadTask и AVAssetDownloadURLSession, но ни один из них не работал. Не было вызвано ни одного делегата, чтобы сообщить мне об ошибке завершения, и я обнаружил, что загруженный кеш имеет размер только 25 КБ, что не соответствует требуемому размеру.

Ошибка:

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedDescription=The operation could not be completed, _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundAVAssetDownloadTask <AFDCA3CC-FA49-488B-AB16-C74425345EE4>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(

    "BackgroundAVAssetDownloadTask <AFDCA3CC-FA49-488B-AB16-C74425345EE4>.<1>"

), NSLocalizedFailureReason=An unknown error occurred (-16654)}

1 Ответ

1 голос
/ 22 октября 2019

Обнаружено AVAssetDownloadURLSession может загружать только HLS со структурой основного списка воспроизведения, которая содержит атрибут codec в EXT-X-STREAM-INF m3u8 meta на iOS 13 +.

Я понятия не имею, является ли это ошибкой или функциейограничение. (у m3u8 meta нет атрибута CODECS, можно играть с AVFoundation, но нельзя загружать с AVAssetDownloadURLSession)

В любом случае, решение:

Если у вас HLSосновной список воспроизведения:

добавьте атрибут CODECS в ваш #EXT-X-STREAM-INF в метаданных m3u8. например,

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=63701,CODECS="mp4a.40.34"
playlist.m3u8

Если у вас еще нет основного списка воспроизведения HLS:

Вы должны создать основной список воспроизведения, даже если вы не поддерживаете адаптивную потоковую передачу.
Главный список воспроизведенияединственный m3u8, который может содержать #EXT-X-STREAM-INF, следовательно, CODECS атрибут.

...