1

У меня есть видеофайл на сервере. Когда я копирую URL-адрес и запускаю в сафари, он начинает воспроизводить видео в браузере с помощью быстрого проигрывателя времени, но он не играет в симуляторе, он показывает загрузку, но ничего не происходит. Пожалуйста, помогите мне. Как я могу это решить?Проблема при потоковой передаче видео с сервера

Спасибо.

-

(void)playMovieWithUrl:(NSString*)url{ 
    moviePlayerViewController = [[MPMoviePlayerViewController alloc] init]; 
    moviePlayerViewController.moviePlayer.controlStyle = MPMovieControlStyleDefault; 

    moviePlayerViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | 
    UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | 
    UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
    [self.view addSubview:moviePlayerViewController.moviePlayer.view]; 
    [moviePlayerViewController.moviePlayer setFullscreen:YES]; 

    [moviePlayerViewController.moviePlayer stop]; 
    NSLog(@"playerUrl %@",url); 
    [moviePlayerViewController.moviePlayer setMovieSourceType:MPMovieSourceTypeStreaming]; 
    [moviePlayerViewController.moviePlayer setContentURL:[NSURL URLWithString:url]]; 
    [moviePlayerViewController.moviePlayer prepareToPlay]; 
    //moviePlayerViewController.moviePlayer.initialPlaybackTime = interval; 
    [moviePlayerViewController.moviePlayer play]; 

} 
+0

расширение видеофайла? – Rushabh

+0

видеофайл имеет тип mp4 – user1841079

+0

Удалить [moviePlayerViewController.moviePlayer stop]; и добавить observer [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (moviePlayBackDidFinish :) имя: MPMoviePlayerPlaybackDidFinishNotification object: moviePlayerViewController]; и в режиме «moviePlayBackDidFinish» выпустить контроллер релиза и удалить наблюдателя, как [moviePlayerViewController autorelease]; moviePlayerViewController = nil; [[NSNotificationCenter defaultCenter] removeObserver: self name: MPMoviePlayerPlaybackDidFinishNotification object: nil]; –

ответ

0

Это работает для меня:

NSURL *streamURL = [NSURL URLWithString:@"http://www.nasa.gov/multimedia/nasatv/NTV-Public-IPS.m3u8"]; 
_streamPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:streamURL]; 
[_streamPlayer.view setFrame:self.view.bounds]; 
[self.view addSubview:_streamPlayer.view]; 
[_streamPlayer.moviePlayer play]; 

_streamPlayer объявлен как:

@property (strong, nonatomic) MPMoviePlayerViewController *streamPlayer; 

Обратите внимание, что я добавляю Открыть MPMoviePlayerViewController «s, когда вы добавляете его moviePlayer.view.

+1

Причиной отказа кода OP является использование ARC (как показано в дубликате), который немедленно освобождает игрока. Я бы категорически отказался использовать 'MPMoviePlayerViewController' в пользовательском стеке представления, но использовать только' MPMoviePlayerController'. 'MPMoviePlayerViewController' предназначен только для полноэкранного воспроизведения! – Till