iOS 4.3 Встроенный MPMoviePlayerController - PullRequest
1 голос
/ 26 марта 2011

Я использую MPMoviePlayerController в своем UIView, и цель состоит в том, чтобы поместить его в View как встроенный вид.Проблема в том, что код не работает, кроме полного экрана.

-(IBAction)startVideo {
    //start video here
    NSURL *path = [[NSURL alloc] initWithString:[self localVideoPath:NO]];

    // Create custom movie player   
    MPMoviePlayerController *moviePlayer = [[[MPMoviePlayerController alloc] initWithContentURL:path] autorelease];

    [moviePlayer setScalingMode:MPMovieScalingModeAspectFill];
    [moviePlayer setControlStyle:MPMovieControlStyleNone];
    [moviePlayer setFullscreen:FALSE];

    // May help to reduce latency
    [moviePlayer prepareToPlay];

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


    //---play partial screen---
    //moviePlayer.view.frame = CGRectMake(0, 0, 200, 300);
    moviePlayer.view.frame = image.frame;
    //[[moviePlayer view] setFrame: [image bounds]];

    [image removeFromSuperview];

    [self.view addSubview:moviePlayer.view];

    // Show the movie player as modal
    //[self presentModalViewController:moviePlayer animated:YES];

    // Prep and play the movie
    [moviePlayer play]; 
}

1 Ответ

1 голос
/ 27 марта 2011

Пример кода от Apple некорректен или, скажем, устарел. Вам необходимо добавить представление moviePlayer в качестве подпредставления к вашему представлению. Примерно так:

MPMoviePlayerController *moviePlayer = [[[MPMoviePlayerController alloc] initWithContentURL:path] autorelease];
...
// Adjust positioning where I used the bound of the outer view (of type UIView)
moviePlayer.view.frame = outerView.bounds;
// Now add the movie player to the outer view
[outerView addSubView:moviePlayer.view];
...

Это должно сработать.

Извините, я не видел, чтобы вы добавили подпредставление.

Хорошо, для примера кода вы можете взять пример проекта XCode с именем MoviePlayer_iPhone (внутри документации XCode для MPMoviePlayerController вы найдете ссылку для примера проекта MoviePlayer ) просто настройте initAndPlayMovie AppDelegate таким образом:

-(void)initAndPlayMovie:(NSURL *)movieURL
{
    // Initialize a movie player object with the specified URL
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    if (mp)
    {
        // save the movie player object
        self.moviePlayer = mp;
        [mp release];

        // Apply the user specified settings to the movie player object
        [self setMoviePlayerUserSettings];

        self.moviePlayer.view.frame = self.window.bounds;            
        [self.window addSubview:self.moviePlayer.view];

        // Play the movie!
        [self.moviePlayer play];
    }
}

Этот файл грубый, поскольку он не устанавливает рамку или не центрирует изображение, но должен отображать фильм, когда вы переходите к local и нажимаете Play Movie .

Единственный недостаток, который я увидел, это то, что полноэкранный режим не становится черным. Тем не менее, пример проекта довольно странный и не очень хорошо написан. При этом отображается не полноэкранное видео.

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