AVPlayer не переключается между прогрессивной загрузкой и потоковой передачей

У меня есть приложение, которое обрабатывает потоковое видео. Начиная с плейлиста .m3u8, он создает массив AVAsset и пролистывает их,

[player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:[assetItems objectAtIndex:index]]]

Это нормально работает, но перед этим я хочу транслировать короткое видео в формате mp4 с прогрессивной загрузкой. Я загружаю AVPlayer с помощью

AVAsset *prerollAsset = [AVAsset assetWithURL:prerollURL];
[player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:prerollAsset]];

Он воспроизводится, но когда я продолжаю потоковое видео, как и раньше, я получаю статус AVPlayerStatusFailed с ошибкой в ​​AVPlayerItem The operation could not be completed

Чтобы он работал, мне нужно создать объект AVPlayer для предварительной прокрутки (прогрессивной загрузки), а затем полностью новый объект AVPlayer, чтобы начать воспроизведение потокового видео.

Возможно ли, что один экземпляр AVPlayer не может воспроизводить видео с прогрессивной загрузкой, за которым следует потоковое видео? Или может быть что-то еще я делаю не так?


person coco    schedule 31.05.2012    source источник
comment
У меня такая же проблема. С MPMoviePlayerController есть свойство movieSourceType, которое мы можем установить, но не с помощью AVPlayer или AVPlayerItem.   -  person Kent Nguyen    schedule 01.06.2012
comment
Эта ошибка все еще существует в SDK iOS7.1   -  person Taher Saeed    schedule 23.05.2014
comment
@KentNguyen немного поздно, но вы можете прочитать developer.apple.com/library/mac/documentation/AudioVideo/, просмотрите часть Создание и подготовка прямого HTTP-потока для воспроизведения   -  person onmyway133    schedule 06.09.2014
comment
@ onmyway133 Обратите внимание, что мы часто не контролируем формат того, что нас просят воспроизвести; например, потоковый контент перемежается с прогрессивно загружаемой рекламой.   -  person coco    schedule 10.09.2014
comment
AVFoundationErrorDomain Code = -11800 с ошибкой OSStatus -12783 - у вас было такое же? Я бы оставил его здесь, чтобы, возможно, спасти кого-нибудь еще от дня поиска в Google.   -  person Gleb A.    schedule 07.12.2014
comment
@GlebA. Я получаю AVErrorUnknown (-11800) с NSUnderlyingError (NSOSStatusErrorDomain, code = -12783) при переключении с MP3 на HLS и без NSUnderlyingError при переключении с HLS на MP3. И спасибо, я бы не нашел этот вопрос, если бы вы не опубликовали эти числа. :-)   -  person Andrey Tarantsov    schedule 13.04.2015


Ответы (1)


Это известная проблема, которая предположительно будет исправлена ​​в следующем основном выпуске iOS.

Между тем, создание нового объекта AVPlayer - единственный известный обходной путь.

person Josh Tidsbury    schedule 03.07.2012
comment
По словам инженеров Apple на WWDC14, в iOS 8 все еще есть эта проблема. Они также упомянули, что это было очень низко в их списке приоритетов. Вернемся к обходному пути! - person coco; 10.09.2014