2015-07-01 32 views
15

initialPlaybackTime özelliğini ayarladıktan sonra video (HTTP akışı) hala baştan oynatılıyor.MPMoviePlayerController initialPlaybackTime özelliği iOS'ta çalışmıyor 8.4

aynı kod iOS < = 8.3 iyi çalışır: Bu benim için çalışıyor

self.moviePlayer.initialPlaybackTime = self.lastPlaybackTime; 
[self.moviePlayer play]; 
+3

Aynı sorunla da karşı karşıyayım, ayrıca tüm dosya türleri artık oynatılamıyor. Ayrıca, bu bileşende bir radar http://www.openradar.me/20762442 sorun var. Apple'ın bu sürümde kullanımdan kaldırılmış mpmoviewplayer gibi gözüktüğü ve AVKit –

+0

setCurrenPlaybackTime'a taşınmanız gerektiği de görülüyor. – JDL

+0

Hiç şanssız bir kaç saat için onunla oynadım, genel cevap formu gibi görünüyor, toplumun şu anda bozuk olduğu. –

cevap

6

, temelde film çalmaya başlar, Ama aynı zamanda bir bayrak gerek playbackDurationSetsetCurrentPlaybackTime zorunda olduğu movieplayer sunduğunuzda NO olarak ayarlanır ve film oynatmaDüğmesine ilk kez arandığında YES olarak ayarlanır.

NOT: moviePlayerPlaybackStateChanged aramaya temizleme biriminden film istediklerinde MPMoviePlaybackStatePlaying ait playbackState ile ateşlenir çünkü bu bayrak gereklidir.

BOOL playbackDurationSet = NO; 
- (void)moviePlayerPlaybackStateChanged:(NSNotification*)notification 
{ 
    MPMoviePlayerController* player = (MPMoviePlayerController*)notification.object; 
    switch (player.playbackState) { 
     case MPMoviePlaybackStatePlaying: 
     if(!playbackDurationSet){ 
      [self.moviePlayer setCurrentPlaybackTime:yourStartTime]; 
      playbackDurationSet = YES; 
     } 
     break; 
    } 
} 

- (void)moviePlayerPresented 
{ 
     playbackDurationSet = NO; 
} 
0

Bu sorunlardan bazılarını gördüm. MPMoviePlayerController, iOS 9'da kullanımdan kaldırıldığından, bunların sabit olması olası değildir.

0

hariszaman cevap benim için çalıştı: Ayrıca

- (void)moviePlaybackStateChanged:(NSNotification*)notif 
{ 
    //... 
    if (self.videoPlayer.playbackState == MPMoviePlaybackStatePlaying) { 

     if (self.currentBookmark) { 
      if ([[PSDeviceInfo sharedInstance] is_iOSatLeast84]){ 
       NSTimeInterval toTime = [self.currentBookmark.seconds doubleValue]; 
       [self.videoPlayer setCurrentPlaybackTime:toTime]; 
       self.currentBookmark = nil; 
      } 
     } 
    } 

if (self.videoPlayer.playbackState == MPMoviePlaybackStatePaused) { 
    //... 
} 

if (self.videoPlayer.playbackState == MPMoviePlaybackStateStopped) { 
    //... 
} 
} 

:

- (void)configureMoviePlayer 
    { 
     if (self.currentBookmark) { 
      if ([[PSDeviceInfo sharedInstance] is_iOSatLeast84]){ 
       // will set start after did start 
      }else { 
       NSTimeInterval toTime = [self.currentBookmark.seconds doubleValue]; 
       self.videoPlayer.initialPlaybackTime = toTime;    
       self.currentBookmark = nil; 
      } 
     } 
     else { 
      self.videoPlayer.initialPlaybackTime = 0; 
     } 
     //... 
    } 

yöntem is_iOSatLeast84: Tüm bu geçici bir çözüm olsa da, o işi alır

- (BOOL)is_iOSatLeast84 
{ 
    // version 8.4 
    NSString *version = [[UIDevice currentDevice] systemVersion]; 
    BOOL isAtLeast84 = [version floatValue] >= 8.35; 

    return isAtLeast84; 
} 

.