Я предполагаю, что метод initWithContentURL:
не является асинхронным.Я добавил следующие методы для загрузки в фоновом режиме, а затем назначил временный проигрыватель для моей переменной.
-(void)createPlayer {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
MPMoviePlayerController *temp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"URLString"]];
[self performSelectorOnMainThread:@selector(passPlayer:) withObject:temp waitUntilDone:YES];
[temp release];
[pool release];
}
-(void)passPlayer:(MPMoviePlayerController*)temp {
player = [temp retain];
player.movieSourceType = MPMovieSourceTypeStreaming;
//player.view.hidden = YES;
//[self.view addSubview:player.view];
[player prepareToPlay];
}
Проблема заключается в том, что, когда я распечатываю продолжительность игрока, я получаю это:
double duration = player.duration;
NSLog(@"duration: %f, duration);
console output: duration: nan
Я добавил MPMoviePlayerControllerNotifications
, чтобы получать уведомления, когда есть значение длительностидоступно, но даже тогда значение по-прежнему «нан».Если я выполняю загрузку основного потока, длительность имеет значение, но я не хочу использовать основной поток, чтобы мой пользовательский интерфейс не блокировался.
Есть идеи?