Пример MPMoviePlayer не работает - PullRequest
1 голос
/ 05 июля 2011

Я новичок в написании Objective-C.И я начинаю с Xcode 4.2.Я обнаружил, что трудно найти примеры для обучения.

Недавно я начал писать приложение, которое должно воспроизводить видео в формате mp4.Тогда я считаю, что MPMovieplayercontroller может помочь.

Это код (заключенный из разных примеров):

-(void)play  // a function that trigger by pressing a button
{
    [self.view addSubview:self.player.view];
    [self.player play];
}


- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor greenColor];
    screen.backgroundColor = [UIColor redColor];

    NSString *videoFilePath = [[NSBundle mainBundle] pathForResource:@"ted" ofType:@"mp4"];

    if (videoFilePath == NULL)
    {
        return;
    }

    NSURL *videoURL =[NSURL fileURLWithPath:videoFilePath];
    self.player.view.frame = CGRectMake(300,300, 400,400);
    self.player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
}

Он просто не работает.Ничего не отображается.Я уверен, что моя кнопка дает ответ и вызывает правильную функцию (игра).

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

Я тоже новичок в stackoverflow.Если я прошу ненадлежащим образом, пожалуйста, дайте мне знать. Спасибо

1 Ответ

1 голос
/ 05 июля 2011

Я столкнулся с той же проблемой, что и MPMoviPlayerController работает нормально для предыдущей или эквивалентной версии 4.1.x. Я почти решил проблему с воспроизведением видео ... Ниже приведен код,

    - (void)viewDidLoad 
    {
        [super viewDidLoad];    
        NSString *strURL = @"http://iphonetv.orange.mu:1935/live/ndtvgtimes.stream/playlists.m3u8";
        NSURLRequest *urlReq = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:strMovieURL]];    
        [myWebView loadRequest:urlReq];     
    }

    - (BOOL)webView:(UIWebView *)myWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {   
        NSURL *url = [request URL]; 
        if ([[[url path] pathExtension] isEqualToString:@"mp4" ] || [[[url path] pathExtension] isEqualToString:@"m4v" ] || [[[url path] pathExtension] isEqualToString:@"m3u8" ]) 
        {
            //video files are .mp4 or m4v, stream indexes are m3u8
            //it's a movie, go play!
            [self playMovieAtURL:url];
            return YES;
        }
        else 
        {
            return [super webView:myWebView shouldStartLoadWithRequest:request navigationType:navigationType];
        }
    }

    -(void)playMovieAtURL:(NSURL*)theURL 
    {
        theMovie = [[MPMoviePlayerController alloc] initWithContentURL:theURL];    
        theMovie.scalingMode = MPMovieScalingModeAspectFit;
        [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];  
        [theMovie play];
    }

    -(void)myMovieFinishedCallback:(NSNotification*)aNotification
    {
         MPMoviePlayerController* theMovie1 = [aNotification object];
        //theMovie = [aNotification object];
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification   object:theMovie1];
        [theMovie stop];
        float version = [[[UIDevice currentDevice] systemVersion] floatValue];
        if (version >= 3.0) 
        {
            // iPhone 3.0 code here
            // theMovie.initialPlaybackTime = -1.0; //Breaks on 2.x compiling
            [theMovie setInitialPlaybackTime: -1.0]; //Only gives a warning on 2.x :)
            }

        [theMovie release];
        NSLog(@"Go STOP received"); 
    }
...