Видео не воспроизводится на симуляторе iPhone 5.0 - PullRequest
0 голосов
/ 16 сентября 2011

Я новичок в программировании xCode, я получил этот код из учебника для электронных книг, воспроизводящего mp4 xCode.

функция, вызванная кнопкой

(IBAction)playMovie:(id)sender {
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"videoSample" ofType:@"mp4"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath]; 
MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];
[self.view addSubview:moviePlayerController.view]; 
moviePlayerController.fullscreen=YES;
[moviePlayerController play];
moviePlayerController.scalingMode = MPMovieScalingModeFill;
}

, вызываемой из функции воспроизведения фильма

(void)moviePlaybackComplete:(NSNotification *)notification{
MPMoviePlayerController *moviePlayerController = [notification
                                  object];
[[NSNotificationCenter defaultCenter]removeObserver:self
                                 name:MPMoviePlayerPlaybackDidFinishNotification
                               object:moviePlayerController];
[moviePlayerController.view removeFromSuperview];
}

У меня нет ошибок и предупреждений после того, как я его собрал.он просто выводит пустой экран после того, как я нажимаю кнопку, которая запускает функцию playMovie.Я путаюсь, я гуглю это и все еще не знаю, как решить проблему.

Я использую xCode 4.2 iOS SDK 5.0

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

попробуйте это .... замените "example" именем вашего файла, а "m4v" типом файла, например, "mp4" (не .mp4 и не ставьте бит .mp4 в имени файла).

-(IBAction)playVideo:(id)sender;
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"m4v"];


MPMoviePlayerViewController* tmpMoviePlayViewController=[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

if (tmpMoviePlayViewController) {

    tmpMoviePlayViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

    [self presentModalViewController:tmpMoviePlayViewController animated:YES];

    tmpMoviePlayViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

    [[NSNotificationCenter defaultCenter] addObserver:self

                                        selector:@selector(myMovieViewFinishedCallback:)

                                        name:MPMoviePlayerPlaybackDidFinishNotification

                                        object:tmpMoviePlayViewController];

    [tmpMoviePlayViewController.moviePlayer play];
}

}

-(void)myMovieFinishedCallback:(NSNotification*)theNotification
{
    MPMoviePlayerController *moviePlayer=[theNotification object];

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:moviePlayer];

[moviePlayer.view removeFromSuperview];

}

0 голосов
/ 17 октября 2013

Я не знаю, ищите ли вы ответ. Вот что вы можете попробовать - объявите MPMoviePlayerController в файле заголовка (.h) (т.е. сделайте его переменной-членом).

MPMoviePlayerController *moviePlayerController;

и добавьте это в свой файл .m

moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];

Если он все еще не работает, попробуйте объявить его как свойство @.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...