0

Во время воспроизведения фильма, если я изменяю свой контентURL, фильм перестает играть, и представление удаляется.MPMoviePlayerController - Видео останавливается, когда я меняю contentURL

Я пробовал решение here, но он все еще не работает.

Вот мой код, чтобы играть в кино:

- (void) playMovie:(NSURL *)moviePath{ 
theMovie = [[MPMoviePlayerController alloc] initWithContentURL: moviePath]; 

UIView * movieView = [theMovie view]; 

[movieView setFrame: CGRectMake(0, 0, 480, 320)]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO]; 
CGAffineTransform landscapeTransform; 
landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
landscapeTransform = CGAffineTransformTranslate(landscapeTransform, 80, 80); 
[movieView setTransform: landscapeTransform]; 

self.theMovie.scalingMode = MPMovieScalingModeAspectFit; 
self.theMovie.fullscreen = TRUE; 
self.theMovie.controlStyle = MPMovieControlStyleNone; 
[self performSelector:@selector(showCtrlsOnTouch) withObject:NULL afterDelay:0.1]; 
[self.theMovie prepareToPlay]; 

int a = currentMovie; 
int b = [self.tableDataSource count] - 1; 

if(a < b) 
{ 
    UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    nextButton.frame = CGRectMake(360.0, 138.0, 100.0, 44.0); 
    [nextButton setTitle:@"Next" forState:UIControlStateNormal]; 
    [self.theMovie.view addSubview:nextButton]; 
    [nextButton addTarget:self action:@selector(playNextMovie:) forControlEvents:UIControlEventTouchUpInside]; 
} 
if(currentMovie > 0) 
{ 
    UIButton *previousButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    previousButton.frame = CGRectMake(40.0, 138.0, 100.0, 44.0); 
    [previousButton setTitle:@"Prev" forState:UIControlStateNormal]; 
    [self.theMovie.view addSubview:previousButton]; 
    [previousButton addTarget:self action:@selector(playPreviousMovie:) forControlEvents:UIControlEventTouchUpInside]; 
} 

[[[UIApplication sharedApplication] keyWindow] addSubview: movieView]; 

[[NSNotificationCenter defaultCenter] addObserver: self 
             selector: @selector(movieFinishedCallback:) 
              name: MPMoviePlayerPlaybackDidFinishNotification 
              object: self.theMovie];} 

А вот мой код, чтобы переключить фильм:

- (void) playNextMovie:(id) sender{ 
currentMovie++; 

NSDictionary *dictionary = [self.tableDataSource objectAtIndex:currentMovie]; 

NSString *videoString = [NSString stringWithFormat:@"%@", [dictionary objectForKey:@"videoFile"]]; 
NSString *videoPath = [[NSBundle mainBundle] pathForResource:videoString ofType:@"m4v"]; 
NSLog(@"Video Path: %@", videoPath); 
NSURL *moviePath = [NSURL fileURLWithPath: videoPath]; 

self.theMovie.contentURL = moviePath; 
[self.theMovie prepareToPlay];} 

Спасибо за любую помощь.

+0

Почему вы хотите изменить 'contentURL' во время игры? – Raptor

+0

Что вы пытаетесь достичь? – Till

+0

Клиент хочет, чтобы дополнительные элементы управления перемещались между списком видео. Всегда клиентский запрос! – user707666

ответ

1

Это абсолютно нормально, когда игрок перестает играть, как только будет добавлен новый contentURL.

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

+0

Спасибо, я посмотрю. Глядя на документы Apple, кажется, что мне нужно было обновить URL-адрес контента: Если вы установили это свойство во время воспроизведения фильма, этот фильм приостанавливается, и новый фильм начинает загружаться. Новый фильм начинает играть в начале. – user707666

+0

@ user707666 это совершенно правильно. – Till