MPMoviePlayerViewController фильм воспроизводится без запроса - PullRequest
1 голос
/ 27 февраля 2012

У меня проблема с использованием MPMoviePlayerViewController. Я пытаюсь инициализировать фильм на viewDidLoad, а затем воспроизвести фильм на touchesBegan. Но фильм сначала начинает воспроизводиться, и на touchesBegan он показывает только готовый фильм.

ViewController.h file

@interface ViewController : UIViewController{

MPMoviePlayerController *moviePlayer;
MPMoviePlayerViewController *mpviewController;
MPMovieControlStyle controlStyle;}

- (IBAction)touchesBegan:(id)sender;
@property (nonatomic) MPMovieControlStyle controlStyle;
@end

ViewController.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

[self.view addSubview:mpviewController.view];
[moviePlayer play]; }


- (void)viewDidLoad
{
NSString *movpath = [[NSBundle mainBundle] 
                     pathForResource:@"my_moviefile" 
                     ofType:@"m4v"];

mpviewController = 
[[MPMoviePlayerViewController alloc]
 initWithContentURL:[NSURL fileURLWithPath:movpath]]; 

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(movieFinishedCallback:)                                                 
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:mpviewController];

MPMoviePlayerController *mp = [mpviewController moviePlayer];
// [mp setMovieControlMode:MPMovieControlModeHidden];
// [mp.view setFrame:CGRectMake(0, 0, 250, 263)]; 
mp.controlStyle = MPMovieControlStyleNone;    
[mp prepareToPlay];

[super viewDidLoad];
}

Если я вставлю весь код в touchesBegan, он будет работать, как и ожидалось, но фильм все равно должен загрузиться, но я хочу предварительно загрузить его, а затем снова сделать что-нибудь, когда он закончит играть.

Есть какие-нибудь подсказки?

Привет

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Подумайте над тем, чтобы поставить [super viewDidLoad] на вершину реализации viewDidLoad. Это часто вызывает непредсказуемые проблемы.

Также попробуйте добавить [mp pause] и mp.currentPlaybackTime = 0; в конце viewDidLoad.

1 голос
/ 28 февраля 2012

Убедитесь, что вы установили свойство MPMoviePlayerController shouldAutoplay в NO при инициализации проигрывателя.

Из справки:

shouldAutoplay

Логическое значение, указывающее, должен ли фильм автоматически начинать воспроизведение.

@property (nonatomic) BOOL shouldAutoplay

Обсуждение

Значением по умолчанию для этого свойства является YES. Это свойство определяет начинается ли воспроизведение сетевого контента автоматически когда достаточно буферизованных данных для обеспечения непрерывного воспроизведения.

Доступность Доступный в iOS 3.2 и позже. Объявлен в MPMoviePlayerController.h

...