2015-12-05 3 views
0

Привет Я пытаюсь играть жить потокового API в мое приложение, но их это какая-то ошибка происходит, как показано ниже ...Я пытаюсь играть потоковую API в MPMoviePlayerViewController

Response Неудача. Ошибка: операция не может быть завершена. (Cocoa ошибка 3840.)

пожалуйста, помогите разобраться в этой проблеме

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

    NSLog(@"%@",arrayId); 



    Service *srv=[[Service alloc]init]; 

    NSString *[email protected]"http://streamtvbox.com/site/api/matrix/"; 
    NSString *[email protected]"channel"; 
    NSMutableDictionary *dict=[[NSMutableDictionary alloc]init]; 
    [dict setValue:arrayId forKey:@"id"]; 

    [srv postToURL:str withMethod:method andParams:dict completion:^(BOOL success, NSDictionary *responseObj) 

    { 
     if (success) { 
      NSLog(@"Hello I am success"); 

     } 
     NSLog(@"%@",responseObj); 


     _player = [[MPMoviePlayerViewController alloc] initWithContentURL:responseObj]; 
     [self presentMoviePlayerViewControllerAnimated:_player]; 

    }]; 



} 
+0

привет, ты их? –

ответ

0

AVPlayerItem является лучшим выбором в этом случае у вас есть больше контроля. См. Ниже фрагмент кода. Я привел вам простой пример. Вы выполните повторный поиск по AVPlayerItem.

Определите объект AVPlayer:

AVPlayer *videoPlayer; 

Приготовьте AVPlayer и добавить Наблюдатели:

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:imageText]]; 
videoPlayer = [AVPlayer playerWithPlayerItem:playerItem]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[videoPlayer currentItem]]; 
[videoPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; 
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress:) userInfo:nil repeats:YES]; 

Обработка обратных вызовов:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
     if (object == videoPlayer && [keyPath isEqualToString:@"status"]) 
     { 
      if (videoPlayer.status == AVPlayerStatusFailed) 
      { 
       NSLog(@"AVPlayer Failed"); 
      } 

      else if (videoPlayer.status == AVPlayerStatusReadyToPlay) 
      { 
       NSLog(@"AVPlayerStatusReadyToPlay"); 
       [videoPlayer play]; 
      } 

      else if (videoPlayer.status == AVPlayerItemStatusUnknown) 
      { 
       NSLog(@"AVPlayer Unknown"); 
      } 
     } 

     if (object == videoPlayer && [keyPath isEqualToString:@"playbackLikelyToKeepUp"]) 
     { 
      if (videoPlayer.playbackLikelyToKeepUp) 
      { 
       // Hide Activity indicator 
       [videoPlayer play]; 
      } 
     } 

     if (object == videoPlayer && [keyPath isEqualToString:@"playbackBufferEmpty"]) 
     { 
      if (videoPlayer.playbackBufferEmpty) 
      { 
       // Show Activity indicator 
       [videoPlayer pause]; 
      } 
     } 
    } 

- (void)playerItemDidReachEnd:(NSNotification *)notification { 

    // code here whatever you want to do on finishing video stream.. 
} 
Смежные вопросы