2013-04-08 24 views
7

Tôi đang làm việc trên Ứng dụng iOS (Với Storyoard). Tôi có một ViewController:IOS MPMoviePlayerViewController Đang tải vô tận

//movieViewController.h 

#import <UIKit/UIKit.h> 
#import <MediaPlayer/MediaPlayer.h> 

@interface movieViewController : UIViewController { 

    MPMoviePlayerViewController *moviePlayer; 

} 

@property (strong, nonatomic) MPMoviePlayerViewController *moviePlayer; 
-(void) playMovie; 

@end 


//movieViewController.m 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view. 
    [self playMovie]; 
} 

-(void)playMovie 
{ 
    NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"movie" 
                 ofType:@"mov"]; 

    moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL 
                fileURLWithPath:videoPath]]; 
[self presentMoviePlayerViewControllerAnimated:moviePlayer]; 
} 

Khi tôi chạy, tôi sẽ thấy chế độ xem của tôiTrình điều khiển bằng "Đang tải ..." sẽ mất vĩnh viễn. enter image description here

+1

nên không đợi đến viewDidAppear gọi trước khi gọi [tự playMovie]? – sixthcent

Trả lời

1

Bạn nên gọi -prepareToPlay và/hoặc -play. Tài liệu của mỗi tài liệu::

Bắt đầu từ iOS 5.0, để tạo điều kiện phát lại tốt hơn, trình phát phim mới không được chuẩn bị tự động để phát.

+0

Bạn đang trộn MPMoviePlayerController và MPMoviePlayerViewController. – Till

+1

MPMoviePlayerViewController có thuộc tính 'moviePlayer' là đối tượng MPMoviePlayerController. – zadr

+0

Đó là sự thật nhưng không cần phải truy cập tài sản đó để đạt được những gì OP yêu cầu. MPMoviePlayerViewController làm điều đó ra khỏi hộp. – Till

0
-(IBAction)startVideo:(id)sender 
{ 
    NSURL *video = [[NSURL alloc] initWithString:@"http://www.w3schools.com/html/movie.mp4"]; 
    MPMoviePlayerViewController *controller = [[MPMoviePlayerViewController alloc]initWithContentURL:video]; 
    controller.view.frame = CGRectMake(20, 50, 280, 180); 

    controller.moviePlayer.view.center = self.view.center; 
    [self.view addSubview:controller.view]; 

    [controller.moviePlayer prepareToPlay]; 
    [controller.moviePlayer play]; 
}
+1

Bạn có thể thêm một số văn bản để giải thích giải pháp của mình không? – GHC