2015-07-01 27 views
15

Sau khi thiết lập thuộc tính initialPlaybackTime, video (HTTP streaming) vẫn phát từ đầu.MPMoviePlayerController initialPlaybackTime thuộc tính không hoạt động trong iOS 8.4

Cùng mã hoạt động tốt trong iOS < = 8,3:

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

Tôi cũng đang gặp phải vấn đề tương tự, cũng như không phải tất cả các loại tệp đều có thể phát ngay bây giờ. Ngoài ra, đây là một radar http://www.openradar.me/20762442 với sự cố trong thành phần đó. Hình như Apple đã phá vỡ mpmoviewplayer không được chấp nhận trong bản phát hành đó và bạn phải chuyển sang AVKit –

+0

setCurrenPlaybackTime cũng dường như bị hỏng. – JDL

+0

Tôi đã chơi xung quanh với nó trong một vài giờ không có may mắn ở tất cả, có vẻ như hình thức phản ứng chung cộng đồng là nó hiện đang bị hỏng. –

Trả lời

6

này làm việc cho tôi, về cơ bản bạn cần phải setCurrentPlaybackTime khi bộ phim bắt đầu chơi, Nhưng bạn cũng cần một lá cờ playbackDurationSet mà được đặt thành NO khi bạn trình chiếu trình phát phim và được đặt thành CÓ khi phim được tìm kiếm lần phát lại lần đầu tiên.

LƯU Ý: cờ này là cần thiết bởi vì khi bạn tìm kiếm bộ phim từ chà sàn tìm kiếm sự moviePlayerPlaybackStateChanged là bắn với playbackState của MPMoviePlaybackStatePlaying.

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

Tôi cũng đã thấy một số vấn đề này. Vì MPMoviePlayerController không được chấp nhận trong iOS 9 nên chúng không thể sửa được.

0

câu trả lời hariszaman làm việc cho tôi:

- (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) { 
    //... 
} 
} 

thêm:

- (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; 
     } 
     //... 
    } 

phương pháp is_iOSatLeast84:

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

    return isAtLeast84; 
} 

Mặc dù tất cả điều này là một cách giải quyết, nó được công việc làm .

Các vấn đề liên quan