Что означает AVErrorMediaServicesWereReset? - PullRequest
2 голосов
/ 29 июня 2011

В настоящее время я пишу пользовательский видеоплеер с использованием AVPlayer. Видео воспроизводится нормально и работает в 99% случаев. Но при поиске я иногда сталкиваюсь с ошибкой. Состояние моего AVPlayerItem изменяется на AVPlayerItemStatusFailed, а его свойство "error" установлено в:

Ошибка домена = AVFoundationErrorDomain Код = -11819 «Не удается выполнить действие» UserInfo = 0x541da00 {NSLocalizedRecoverySuggestion = Попробуйте снова позже., NSLocalizedDescription = Невозможно завершить Действие}

Ошибка возникает на iOS 4.0.1 при поиске вперед в HTTP Live Stream. Чаще всего это происходит, когда телефон подключен к сети 3G или битрейт потока высок. Чтобы воспроизвести, запустите HTTP Live Stream с AVPlayer на iOS 4.0.1 и выполните поиск вперед после загруженного буфера - ошибка происходит ~ 50% времени.

Я обнаружил в AVError.h, что код ошибки AVFoundation -11819 соответствует AVErrorMediaServicesWereReset («Операция не может быть завершена, поскольку службы мультимедиа стали недоступны») .

Кто-нибудь знает, что вызывает эту ошибку и как ее исправить? Я знаю, что исправление возможно, потому что MPMoviePlayerViewController (который использует AVPlayer) не показывает ошибку. К сожалению, из-за внешних ограничений я не могу использовать MPMoviePlayer в своем коде.

Спасибо!

1 Ответ

0 голосов
/ 20 июля 2011

Оказывается, AVPlayer очень не поточнобезопасен при поиске вперед в HTTP Live Stream на iOS 4.0.1.Часть моего кода называлась setNeedsDisplay или иным образом вызывала системный код пользовательского интерфейса, который «прерывал» проигрывателя во время рисования.Решение не состояло в том, чтобы обновить представление между тем, когда пользователь ищет позицию, и когда игрок начинает играть с этой позиции.К счастью, это кажется исправленным в 4.3 +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...