2011-01-02 47 views
12

Cảm ơn bạn trước vì đã giúp đỡ, tôi là người mới và sẽ đánh giá cao mọi trợ giúp ở đây .. Tôi có mã này để phát một bộ phim và nó hoạt động rất tốt. Ai đó có thể XIN cho tôi biết làm thế nào để làm cho vòng lặp phim này và phát lại từ đầu không ngừng (bất kỳ mã nào sẽ giúp). Ngoài ra tôi muốn biết làm thế nào để chơi 2 bộ phim, một sau khi khác, tốt nhất là với một chuyển đổi mờ dần hoặc trơn tru. Cảm ơn bạn cho bất kỳ sự giúp đỡMPMoviePlayerController: Làm cách nào để tạo vòng lặp video?

#import "MyAppViewController.h" 

@implementation MyAppViewController 

-(IBAction)button:(id)sender{ 
NSString *path = [[NSBundle mainBundle] 
     pathForResource:@"mymovie" ofType:@"mp4"]; 

player = [[MPMoviePlayerViewController alloc] 
    initWithContentURL:[NSURL fileURLWithPath:path]]; 

[self presentMoviePlayerViewControllerAnimated:player]; 

} 
+0

hãy định dạng mã của bạn thời gian tới. –

Trả lời

23

Đặt repeatMode tài sản của bạn MPMoviePlayerController để MPMovieRepeatModeOne

player = [[MPMoviePlayerViewController alloc] 
      initWithContentURL:[NSURL fileURLWithPath:path]]; 
player.moviePlayer.repeatMode = MPMovieRepeatModeOne; 
+0

Tôi đã làm và bây giờ tôi nhận được một lỗi dòng trên: player.repeatMode = MPMovieRepeatModeOne; >>>> Yêu cầu đối với thành viên 'repeatMode' là một thứ không phải là một cấu trúc hay công đoàn- <<<< Tôi nghĩ chúng ta thân thiết ... bạn có thể giúp được không? –

+0

@Jay L thử câu trả lời của tôi ngay bây giờ - nó sẽ hoạt động. –

+0

Tuyệt vời, Hoạt động tuyệt vời. Ok một câu hỏi nữa. Tôi cần có thể thêm bộ hẹn giờ vào phim của mình; tức là .. làm cho nó dừng lại sau một thời gian nhất định. Tôi muốn sử dụng một thanh trượt cho điều đó, bất kỳ ý tưởng làm thế nào để thêm vào đó? –

1

Đối với bộ đếm thời gian bạn có thể tạo một biến Int có giá trị của thanh trượt của bạn và sau đó sử dụng một performSelector afterDelay :

int delayInt = 8; // Substitute the 8 for the value of your slider 
[self performSelector:@selector(myMethod) withObject:nil afterDelay:delayInt]; 

Và sau đó trong "myMethod" của bạn

01.
-(void) myMethod{ 
//the code to stop your player and remove view controller 
} 
20

MPMovieRepeatModeOne thật tuyệt nhưng không lặp lại video rất mượt mà. Hãy thử điều này bên dưới (sao chép từ bài khác):

(Tôi chỉ có làm việc này trên tôi iPad 3 chạy iOS 5.1.1, cơ sở SDK iOS 5.1.)

Khi thiết lập các trình xem phim, thiết lập lặp lại chế độ để MPMovieRepeatModeNone sau đó thêm các thông báo

[[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(moviePlayerDidFinish:) 
      name:MPMoviePlayerPlaybackDidFinishNotification 
          object:self.moviePlayer]; 

sau đó thiết lập chọn của bạn để lọc khi bộ phim kết thúc chơi:

- (void)moviePlayerDidFinish:(NSNotification *)note 
{ 
    if (note.object == self.moviePlayer) { 
     NSInteger reason = [[note.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue]; 
     if (reason == MPMovieFinishReasonPlaybackEnded) 
     { 
      [self.moviePlayer play]; 
     } 
    } 
} 
+2

Điều kỳ lạ đối với tôi là điều này hoạt động tốt trong trình mô phỏng, nhưng thử trên điện thoại thực tế đôi khi bị lặp lại và đôi khi bị kẹt ở cuối. Tôi nghi ngờ một tình trạng đua (nơi chơi được gọi là khi thực sự bộ phim chưa hoàn thành xong). Khi tôi thêm một NSTimer để trì hoãn việc gọi phương thức chơi, thực sự nó lặp lại (nhưng với một hickup ở cuối), mà không phải là tối ưu. Có lẽ đó là do codec của tệp .mp4? – morksinaanab

+0

Thực hành tốt là sử dụng: [self.moviePlayer prepareToPlay]; Điều này giúp tối ưu hóa video và xóa mọi sự cố hiển thị không mong muốn. –

+0

Không còn hoạt động với iOS8 + nữa. Khoảng cách này chỉ miễn là đặt repeatMode thành .One – Mike

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