it-swarm.com.ru

Проигрыватель потоковой передачи iOS 6 com.Apple.coremedia.networkbuffering bug

У меня проблемы с запуском приложения (проигрывателя музыки и видео) на симуляторе iOS 6.

Когда я запускаю музыкальное видео, оно вылетает, показывая ошибку в этой теме: com.Apple.coremedia.networkbuffering

и это в информации журнала:

2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay for pause
2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay
2012-09-13 17:45:09.305 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay
2012-09-13 17:45:09.307 app[32563:c07] handlePlaybackNowPlayingNotification
2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2012-09-13 17:45:09.318 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay
2012-09-13 17:45:09.320 app[32563:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0

Я использую MPMoviePlayerController с потоком на основе http, и он отлично работает на iOS 4 или iOS 5

Есть идеи как это исправить?

17
jMelnik

У меня была точно такая же проблема ...

попробуйте сделать это сразу после того, как вы создадите экземпляр своего плеера:

[player prepareToPlay];

Он должен вызываться автоматически при вызове play, но, очевидно, в iOS 6 что-то идет не так, если вы не вызываете его явно.

В моем случае это решило проблему.

15
ortnec

То, что вы наблюдаете, - это не авария, а исключение. Скорее всего, у вас включена точка останова исключения, и это приводит вас к предположению, что приложение вылетает.

Это исключение на самом деле должным образом обрабатывается SDK и не вызывает сбой приложения.

Обратите внимание, что это происходит только на симуляторе, а не на устройстве.

Эта проблема тесно связана с этой проблемой что значит этот gdb-output-mean . Разница в том, что вы больше не будете получать эти сообщения об ошибках, но исключение по-прежнему выдается (но также и предупреждение).

13
Till

используя xcode 4.5 + SDK6.0 против комбинаций xcode 4.4.1 + SDK5.1, я обнаружил, что существует проблема с версией iM 6 MPMoviePlayerController. Я работал только с iPad, хотя.

вот мои наблюдения: - Я никогда не видел воспроизведения видео на ios 6.0 с моим кодом, использующим MPMoviePlayerController. - с xcode 4.4.1 и SDK 5.1 я видел, как код работает на ios версий 5.1, 5.0 и 4.3. - с xcode 4.5 и SDK 6.0 проигрыватель всегда терпит неудачу в симуляторе, но большинство установок на устройстве ios 5.1 работают. я продолжал переустанавливать приложение на устройстве ios 5.1 и пробовать плеер. это провалилось только один раз.

вот мои наблюдения, когда игрок потерпел неудачу: - иногда, когда игрок проигрывал, я видел журналы, которые вы упомянули выше. В других случаях я даже не видел журналы. - Я поставил точку останова в функции, которая получила уведомление MPMoviePlayerPlaybackDidFinishNotification. тогда я искал errorLog в плеере и не было ни одного. я искал MPMoviePlayerPlaybackDidFinishReasonUserInfoKey, и это было 0 (MPMovieFinishReasonPlaybackEnded). поэтому MPMoviePlayerController понятия не имел, что что-то пошло не так!

вывод: в ios6 и/или SDK 6 есть ошибка.

5
vivandro
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]];
MPMoviePlayerViewController  *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];



moviePlayer.view.frame = self.view.frame;
moviePlayer.moviePlayer.shouldAutoplay=YES;
moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
[moviePlayer.moviePlayer setFullscreen:YES animated:YES];
[self.view addSubview:moviePlayer.view];
[moviePlayer.moviePlayer play];

Примечание: до iOS 6 не нужно вызывать [moviePlayer.moviePlayer play]; как только вы добавите представление игрока в представление, оно начнет воспроизводиться, но в iOS 6 вам нужно явно вызвать функцию воспроизведения

2
Noufal Kmc

у меня та же проблема с MPMoviePlayerController для ios6. Так что я изменил свой код на fllowing, и теперь он работает нормально ..

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]];
MPMoviePlayerViewController  *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];



moviePlayer.view.frame = self.view.frame;
moviePlayer.moviePlayer.shouldAutoplay=YES;
moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
[moviePlayer.moviePlayer setFullscreen:YES animated:YES];
[self.view addSubview:moviePlayer.view];
[moviePlayer.moviePlayer play];
1
Hashim MH

Я еще не решил эту проблему, но, похоже, это связано с моим конкретным случаем, когда MPMoviePlayerController собирается войти в полноэкранный режим или когда существует потенциальная задержка для контроллера.

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

Я предполагаю, что они внедрили новую функцию в MPMoviePlayerController, чтобы предотвратить "мертвое время" во время воспроизведения. Я видел некоторые приложения, которые просто зависают, когда данные фильма выходят в автономный режим или вы выходите из зоны действия вашего Wi-Fi "

Моя попытка решить эту проблему будет состоять в том, чтобы посмотреть сообщение-уведомление, переданное -

(void)moviePlayBackDidFinish: (NSNotification*)notification

это делается путем запроса словаря информации пользователя

NSDictionary *userInfo = [notification userInfo];

значение для MPMoviePlayerPlaybackDidFinishReasonUserInfoKey равно 0 в случае этого типа ошибки.

Это отправная точка. Моя мысль состоит в том, чтобы восстановить фильм в этот момент на этой уникальной неудаче.

Я буду держать вас в курсе результатов.

0
Ios Freelancer

сначала я сделал что-то вроде ниже

[self.player.moviePlayer prepareToPlay];
[self.player.moviePlayer play];
self.player.moviePlayer.shouldAutoplay = YES;

и когда я удалил нижнюю строку

self.player.moviePlayer.shouldAutoplay = YES;

проблема была решена.

0
mirror

Я также использую MPMoviePlayerViewController для показа живого видео в своем приложении и получаю тот же список ошибок, что и выше. Я обнаружил, что MPMoviePlayer не поддерживает большие данные для показа видео, но если вы используете меньшие видеоданные, он работает нормально, без ошибок. На самом деле это не проблема подготовки к воспроизведению и воспроизведению свойств проигрывателя фильмов.

Если вам нужно показать большие данные, используйте веб-приложение в своем приложении.

0
Gopal vaid

У меня проблема с кодом ниже, проигрыватель работает на весь экран, но сразу после этого закрывается и не воспроизводит видео вообще.

NSURL * url = [NSURL URLWithString: @ " http://streaming.disponivel.uol.com.br/video360p2/288148-1192657.mp4 "];

    _player = [[MPMoviePlayerViewController alloc] initWithContentURL:url];

    [_player.moviePlayer setMovieSourceType:MPMovieSourceTypeFile];

    [_player.moviePlayer setControlStyle:MPMovieControlStyleDefault];

    [_player.moviePlayer setFullscreen:YES animated:YES];      

    [self presentMoviePlayerViewControllerAnimated:_player];

    [_player.moviePlayer prepareToPlay];

    [_player.moviePlayer play];
0
Anderson Bressane