Я вижу то же самое поведение и сообщу об ошибке. А пока я просто создаю свой собственный словарь для передачи.
- (void)metadataUpdate:(NSNotification *)notification
{
NSMutableDictionary *metaDict = [NSMutableDictionary dictionary];
if ([self.moviePlayer timedMetadata]!=nil && [[self.moviePlayer timedMetadata] count] > 0)
{
for (MPTimedMetadata *metadata in [self.moviePlayer timedMetadata])
{
[metaDict setObject:[metadata valueForKey:@"value"] forKey:[metadata valueForKey:@"key"]];
}
NSLog(@"Meta value:%@", metaDict);
}
}
EDIT:
В ответ на проблему playableDuration, ниже возвращает playableDuration для меня. Однако обратите внимание, что это НЕ общее время видео ... только то, что воспроизводится в данный момент, которое меняется в зависимости от того, что было загружено. (в случае HTTP Live Streaming)
- (void)viewDidLoad
{
_moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:<your URL>];
[self.moviePlayer.view setFrame: self.movieView.bounds];
[self.movieView addSubview: self.moviePlayer.view];
self.moviePlayer.shouldAutoplay = NO;
[self.moviePlayer prepareToPlay];
}
- (IBAction)playGame:(UIButton *)sender
{
if (self.moviePlayer.isPreparedToPlay) {
[self.moviePlayer play];
NSLog(@"%f", self.moviePlayer.playableDuration);
}
}