1

我使用的MPMoviePlayerController发挥视频到我的申请没有得到完善。以下是我播放视频的代码。的MPMoviePlayerController:当我们停止的MPMoviePlayerController

**NSURL *url=[[NSURL alloc] initFileURLWithPath:urlPath];   
    if(moviePlayer) 
    { 
     [moviePlayer.view removeFromSuperview]; 
     moviePlayer = nil; 
    } 

    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    moviePlayer.repeatMode = MPMovieRepeatModeOne; 
    moviePlayer.currentPlaybackTime = 0.0; 
    moviePlayer.view.frame = _viewMoviePlayer.frame; 
    moviePlayer.controlStyle =  MPMovieControlStyleNone; 
    moviePlayer.shouldAutoplay = YES; 
    [_viewMoviePlayer addSubview:moviePlayer.view]; 
    [moviePlayer prepareToPlay]; 
    [moviePlayer play]; 
    [self.view sendSubviewToBack:_viewMoviePlayer]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];** 

viewWillDisappear叫,然后我就停止moviePlayer并从视图中删除它。 但我的默认音乐播放器正在运行,但没有听到它。当我关闭我的应用程序时,它会。

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [moviePlayer stop]; 
    [moviePlayer.view removeFromSuperview]; 
    moviePlayer = nil; 

    [_viewMoviePlayer removeFromSuperview]; 
    _viewMoviePlayer = nil; 
} 

任何人都可以告诉哪个代码出错了吗?所以我释放了moviePlayer,然后它会播放默认音乐。 当我检查当前音乐的音乐,然后它的哦,并且它的演出歌曲在音乐应用程序中运行。但没有听起来。

回答

1

我面临同样的问题。我刚创建了一个单独的控制器。下面是我为同一代码:

-(void)playVideo 
{ 
    isPlay = FALSE; 
    if([[MPMusicPlayerController systemMusicPlayer] playbackState] == MPMoviePlaybackStatePlaying) 
     isPlay = TRUE; 

    NSString *urlPath = [[NSBundle mainBundle] 
         pathForResource:@"all" 
         ofType:@"mp4"]; 


    NSURL *url=[[NSURL alloc] initFileURLWithPath:urlPath]; 

    if(player) 
     [player pause]; 

    player = nil; 

    if(avPlayerLayer) 
     [avPlayerLayer removeFromSuperlayer]; 

    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:url]; 
    player = [[AVPlayer alloc] initWithPlayerItem:playerItem]; 

    avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 

    avPlayerLayer.frame = self.view.frame; 
    [self.view.layer addSublayer:avPlayerLayer]; 
    [player play]; 
    } 

-(void)removeMoviePlayer 
{ 
    if(isPlay) 
     [[MPMusicPlayerController systemMusicPlayer] play]; 
    NSError *deactivationError = nil; 
    BOOL success = [[AVAudioSession sharedInstance] setActive:NO error:&deactivationError]; 
    if (!success) { 
     NSLog(@"%@", [deactivationError localizedDescription]); 
    }  
} 

希望它会帮助你... :)