MPMoviePlayerController не работает после обновления до iOS 5 - PullRequest
2 голосов
/ 17 октября 2011

Этот код отлично работает на симуляторе iPad 4.3:

NSString *source = [mediaObject objectForKey:@"source"];
NSString *videoPath = [NSString stringWithFormat:@"%@/%@", path, source];
NSURL *videoUrl = [NSURL fileURLWithPath:videoPath];

MPMoviePlayerController *videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoUrl];
videoPlayer.shouldAutoplay = NO;

videoPlayer.view.frame = CGRectMake(xPos, yPos, width, height);

[backgroundImageView addSubview:videoPlayer.view];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:videoPlayer];

, но не работает на симуляторе iPad 5.Я получаю черную рамку без фильмов и элементов управления воспроизведением.

Я прочитал журнал изменений Apple о MPMoviePlayerController, но ничего не нашел об этой проблеме.Вы можете мне помочь?

Ответы [ 3 ]

4 голосов
/ 20 октября 2011

Я решил проблему следующим образом: в своем заголовочном файле я написал:

MPMoviePlayerController *moviePlayer;

с этим свойством:

@property(nonatomic, strong) MPMoviePlayerController *moviePlayer;

и в методе, в котором я запускаю moviePlayer:

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieUrl];
self.moviePlayer = player;

Похоже, что присвоение игрока свойству "спасает" игрока. Но не спрашивайте меня, почему ...

2 голосов
/ 18 октября 2011

Вы не упоминаете, какой тип URL вы пытаетесь воспроизвести, однако, если это ресурс HTTP Live Streaming (файл .m3u8), то имейте в виду, что iOS 5.0, похоже, ужесточила проверку содержимогоИндексный файл m3u8.

В частности, я обнаружил, что:

  1. Ни один отдельный сегмент не может быть более чем в два раза длиннее значения #EXT-X-TARGETDURATION;

  2. Значение #EXTINF (длина сегмента в секундах) может теперь быть только целочисленным значением.

Если одна из них является вашей проблемой,запуск вашего приложения под симулятором iOS 5.0 должен показывать предупреждение в консоли отладчика.

1 голос
/ 07 января 2012

Для HLS на iOS5 значение TARGETDURATION действительно не является целевой продолжительностью, но должно быть максимальной продолжительностью.Поэтому он должен быть установлен на самый большой сегмент в файле.

...